Thomas Gleixner
4d5e68330d
x86/hpet: Move clockevents into channels
...
Instead of allocating yet another data structure, move the clock event data
into the channel structure. This allows further consolidation of the
reservation code and the reuse of the cached boot config to replace the
extra flags in the clockevent data.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132436.185851116@linutronix.de
2019-06-28 00:57:24 +02:00
Ingo Molnar
d415c75431
x86/hpet: Rename variables to prepare for switching to channels
...
struct hpet_dev is gone with the next change as the clockevent storage
moves into struct hpet_channel. So the variable name hdev will not make
sense anymore. Ditto for timer vs. channel and similar details.
Doing the rename in the change makes the patch harder to review. Doing it
afterward is problematic vs. tracking down issues. Doing it upfront is the
easiest solution as it does not change functionality.
Signed-off-by: Ingo Molnar <mingo@kernel.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132436.093113681@linutronix.de
2019-06-28 00:57:24 +02:00
Thomas Gleixner
af5a1dadf3
x86/hpet: Add function to select a /dev/hpet channel
...
If CONFIG_HPET=y is enabled the x86 specific HPET code should reserve at
least one channel for the /dev/hpet character device, so that not all
channels are absorbed for per CPU clockevent devices.
Create a function to assign HPET_MODE_DEVICE so the rework of the
clockevents allocation code can utilize the mode information instead of
reducing the number of evaluated channels by #ifdef hackery.
The function is not yet used, but provided as a separate patch for ease of
review. It will be used when the rework of the clockevent selection takes
place.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132436.002758910@linutronix.de
2019-06-28 00:57:23 +02:00
Thomas Gleixner
9e16e4933e
x86/hpet: Add mode information to struct hpet_channel
...
The usage of the individual HPET channels is not tracked in a central
place. The information is scattered in different data structures. Also the
HPET reservation in the HPET character device is split out into several
places which makes the code hard to follow.
Assigning a mode to the channel allows to consolidate the reservation code
and paves the way for further simplifications.
As a first step set the mode of the legacy channels when the HPET is in
legacy mode.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.911652981@linutronix.de
2019-06-28 00:57:23 +02:00
Thomas Gleixner
2460d5878a
x86/hpet: Use cached channel data
...
Instead of rereading the HPET registers over and over use the information
which was cached in hpet_enable().
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.821728550@linutronix.de
2019-06-28 00:57:22 +02:00
Thomas Gleixner
e37f0881e9
x86/hpet: Introduce struct hpet_base and struct hpet_channel
...
Introduce new data structures to replace the ad hoc collection of separate
variables and pointers.
Replace the boot configuration store and restore as a first step.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.728456320@linutronix.de
2019-06-28 00:57:21 +02:00
Ingo Molnar
0b5c597de6
x86/hpet: Coding style cleanup
...
Signed-off-by: Ingo Molnar <mingo@kernel.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.637420368@linutronix.de
2019-06-28 00:57:21 +02:00
Ingo Molnar
dfe36b573e
x86/hpet: Clean up comments
...
Signed-off-by: Ingo Molnar <mingo@kernel.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.545653922@linutronix.de
2019-06-28 00:57:20 +02:00
Ingo Molnar
3fe50c34dc
x86/hpet: Make naming consistent
...
Use 'evt' for clockevents pointers and capitalize HPET in comments.
Signed-off-by: Ingo Molnar <mingo@kernel.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.454138339@linutronix.de
2019-06-28 00:57:20 +02:00
Ingo Molnar
9bc9e1d4c1
x86/hpet: Remove not required includes
...
Signed-off-by: Ingo Molnar <mingo@kernel.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.348089155@linutronix.de
2019-06-28 00:57:20 +02:00
Thomas Gleixner
3535aa12f7
x86/hpet: Decapitalize and rename EVT_TO_HPET_DEV
...
It's a function not a macro and the upcoming changes use channel for the
individual hpet timer units to allow a step by step refactoring approach.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.241032433@linutronix.de
2019-06-28 00:57:19 +02:00
Thomas Gleixner
44b5be5733
x86/hpet: Simplify counter validation
...
There is no point to loop for 200k TSC cycles to check afterwards whether
the HPET counter is working. Read the counter inside of the loop and break
out when the counter value changed.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.149535103@linutronix.de
2019-06-28 00:57:19 +02:00
Thomas Gleixner
3222daf970
x86/hpet: Separate counter check out of clocksource register code
...
The init code checks whether the HPET counter works late in the init
function when the clocksource is registered. That should happen right with
the other sanity checks.
Split it into a separate validation function and move it to the other
sanity checks.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132435.058540608@linutronix.de
2019-06-28 00:57:18 +02:00
Thomas Gleixner
6bdec41a0c
x86/hpet: Shuffle code around for readability sake
...
It doesn't make sense to have init functions in the middle of other
code. Aside of that, further changes in that area create horrible diffs if
the code stays where it is.
No functional change
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.951733064@linutronix.de
2019-06-28 00:57:18 +02:00
Thomas Gleixner
8c273f2c81
x86/hpet: Move static and global variables to one place
...
Having static and global variables sprinkled all over the code is just
annoying to read. Move them all to the top of the file.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.860549134@linutronix.de
2019-06-28 00:57:17 +02:00
Thomas Gleixner
4ce78e2094
x86/hpet: Sanitize stub functions
...
Mark them inline and remove the pointless 'return;' statement.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.754768274@linutronix.de
2019-06-28 00:57:17 +02:00
Thomas Gleixner
433526cc05
x86/hpet: Mark init functions __init
...
They are only called from init code.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.645357869@linutronix.de
2019-06-28 00:57:17 +02:00
Thomas Gleixner
eb8ec32c45
x86/hpet: Remove the unused hpet_msi_read() function
...
No users.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.553729327@linutronix.de
2019-06-28 00:57:16 +02:00
Thomas Gleixner
853acaf064
x86/hpet: Remove unused parameter from hpet_next_event()
...
The clockevent device pointer is not used in this function.
While at it, rename the misnamed 'timer' parameter to 'channel', which makes it
clear what this parameter means.
No functional change.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.447880978@linutronix.de
2019-06-28 00:57:16 +02:00
Thomas Gleixner
7c4b0e0898
x86/hpet: Remove pointless x86-64 specific #include
...
Nothing requires asm/pgtable.h here anymore.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.339011567@linutronix.de
2019-06-28 00:57:16 +02:00
Thomas Gleixner
9b0b28de83
x86/hpet: Restructure init code
...
As a preparatory change for further consolidation, restructure the HPET
init code so it becomes more readable. Fix up misleading and stale comments
and rename variables so they actually make sense.
No intended functional change.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.247842972@linutronix.de
2019-06-28 00:57:15 +02:00
Thomas Gleixner
46e5b64fde
x86/hpet: Replace printk(KERN...) with pr_...()
...
And sanitize the format strings while at it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.140411339@linutronix.de
2019-06-28 00:57:15 +02:00
Thomas Gleixner
36b9017f02
x86/hpet: Simplify CPU online code
...
The indirection via work scheduled on the upcoming CPU was necessary with the
old hotplug code because the online callback was invoked on the control CPU
not on the upcoming CPU. The rework of the CPU hotplug core guarantees that
the online callbacks are invoked on the upcoming CPU.
Remove the now pointless work redirection.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Reviewed-by: Ingo Molnar <mingo@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com >
Cc: Ashok Raj <ashok.raj@intel.com >
Cc: Andi Kleen <andi.kleen@intel.com >
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com >
Cc: Stephane Eranian <eranian@google.com >
Cc: Ravi Shankar <ravi.v.shankar@intel.com >
Link: https://lkml.kernel.org/r/20190623132434.047254075@linutronix.de
2019-06-28 00:57:15 +02:00
Linus Torvalds
4b972a01a7
Linux 5.2-rc6
2019-06-22 16:01:36 -07:00
Linus Torvalds
6698a71a1e
Merge tag 'iommu-fix-v5.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
...
Pull iommu fix from Joerg Roedel:
"Revert a commit from the previous pile of fixes which causes new
lockdep splats. It is better to revert it for now and work on a better
and more well tested fix"
* tag 'iommu-fix-v5.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
Revert "iommu/vt-d: Fix lock inversion between iommu->lock and device_domain_lock"
2019-06-22 14:08:47 -07:00