linux/arch/x86/kernel/apic
Frederic Weisbecker 914122c389 x86/apic: Implement set_state_oneshot_stopped() callback
When clock_event_device::set_state_oneshot_stopped() is not implemented,
hrtimer_cancel() can't stop the clock when there is no more timer in
the queue. So the ghost of the freshly cancelled hrtimer haunts us back
later with an extra interrupt:

          <idle>-0     [002] d..2  2248.557659: hrtimer_cancel: hrtimer=ffff88021fa92d80
          <idle>-0     [002] d.h1  2249.303659: local_timer_entry: vector=239

So let's implement this missing callback for the lapic clock. This
consist in calling its set_state_shutdown() callback. There don't seem
to be a lighter way to stop the clock. Simply writing 0 to APIC_TMICT
won't be enough to stop the clock and avoid the extra interrupt, as
opposed to what is specified in the specs. We must also mask the
timer interrupt in the device.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Borislav Petkov <bp@alien8.de>
Reviewed-by: Wanpeng Li <wanpeng.li@hotmail.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Link: http://lkml.kernel.org/r/1483029949-6925-1-git-send-email-fweisbec@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2017-01-09 11:48:42 +01:00
..
apic_flat_64.c Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-10-03 17:18:52 -07:00
apic_noop.c x86: Apply more __ro_after_init and const 2016-08-10 14:55:05 +02:00
apic_numachip.c x86: Clean up various simple wrapper functions 2016-09-13 20:42:58 +02:00
apic.c x86/apic: Implement set_state_oneshot_stopped() callback 2017-01-09 11:48:42 +01:00
bigsmp_32.c x86: Apply more __ro_after_init and const 2016-08-10 14:55:05 +02:00
htirq.c x86: Constify irqdomain ops 2015-05-05 11:14:48 +02:00
hw_nmi.c nmi_backtrace: add more trigger_*_cpu_backtrace() methods 2016-10-07 18:46:30 -07:00
io_apic.c x86: Remove empty idle.h header 2016-12-09 21:23:22 +01:00
ipi.c x86/kernel: Audit and remove any unnecessary uses of module.h 2016-07-14 15:06:41 +02:00
Makefile kernel: add kcov code coverage 2016-03-22 15:36:02 -07:00
msi.c x86: Apply more __ro_after_init and const 2016-08-10 14:55:05 +02:00
probe_32.c Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-10-03 16:13:28 -07:00
probe_64.c x86/apic: Remove duplicated include from probe_64.c 2016-07-19 16:02:31 +02:00
vector.c x86/irq: Prevent force migration of irqs which are not in the vector domain 2016-10-04 13:13:47 +02:00
x2apic_cluster.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
x2apic_phys.c x86: Apply more __ro_after_init and const 2016-08-10 14:55:05 +02:00
x2apic_uv_x.c x86/apic/uv: Silence a shift wrapping warning 2016-11-24 06:01:05 +01:00