linux/arch/x86/kernel/apic
Nicolai Stange 6731b0d611 x86/timers/apic: Inform TSC deadline clockevent device about recalibration
This patch eliminates a source of imprecise APIC timer interrupts,
which imprecision may result in double interrupts or even late
interrupts.

The TSC deadline clockevent devices' configuration and registration
happens before the TSC frequency calibration is refined in
tsc_refine_calibration_work().

This results in the TSC clocksource and the TSC deadline clockevent
devices being configured with slightly different frequencies: the former
gets the refined one and the latter are configured with the inaccurate
frequency detected earlier by means of the "Fast TSC calibration using PIT".

Within the APIC code, introduce the notifier function
lapic_update_tsc_freq() which reconfigures all per-CPU TSC deadline
clockevent devices with the current tsc_khz.

Call it from the TSC code after TSC calibration refinement has happened.

Signed-off-by: Nicolai Stange <nicstange@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Christopher S. Hall <christopher.s.hall@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Link: http://lkml.kernel.org/r/20160714152255.18295-3-nicstange@gmail.com
[ Pushed #ifdef CONFIG_X86_LOCAL_APIC into header, improved changelog. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-08-10 12:38:12 +02:00
..
apic.c x86/timers/apic: Inform TSC deadline clockevent device about recalibration 2016-08-10 12:38:12 +02:00
apic_flat_64.c x86/apic: Remove the unused struct apic::apic_id_mask field 2016-07-15 10:39:05 +02:00
apic_noop.c x86/apic: Remove the unused struct apic::apic_id_mask field 2016-07-15 10:39:05 +02:00
apic_numachip.c x86/apic: Remove the unused struct apic::apic_id_mask field 2016-07-15 10:39:05 +02:00
bigsmp_32.c x86/apic: Remove the unused struct apic::apic_id_mask field 2016-07-15 10:39:05 +02:00
htirq.c x86: Constify irqdomain ops 2015-05-05 11:14:48 +02:00
hw_nmi.c printk/nmi: generic solution for safe printk in NMI 2016-05-20 17:58:30 -07:00
io_apic.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 21:35:03 -07:00
ipi.c x86/cpufeature: Replace cpu_has_apic with boot_cpu_has() usage 2016-04-13 11:37:41 +02:00
Makefile kernel: add kcov code coverage 2016-03-22 15:36:02 -07:00
msi.c x86/irq: Export functions to allow MSI domains in modules 2015-12-20 12:40:49 +01:00
probe_32.c x86/apic: Remove the unused struct apic::apic_id_mask field 2016-07-15 10:39:05 +02:00
probe_64.c
vector.c Merge branch 'x86/urgent' into x86/asm, to refresh the tree 2016-04-29 11:55:04 +02:00
x2apic_cluster.c Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-29 13:55:30 -07:00
x2apic_phys.c x86/apic: Remove the unused struct apic::apic_id_mask field 2016-07-15 10:39:05 +02:00
x2apic_uv_x.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 20:43:12 -07:00