linux/arch/x86/kernel/apic
Andy Lutomirski 09eea6d2a9 x86, apic: Handle a bad TSC more gracefully
commit b47dcbdc51 upstream.

If the TSC is unusable or disabled, then this patch fixes:

 - Confusion while trying to clear old APIC interrupts.
 - Division by zero and incorrect programming of the TSC deadline
   timer.

This fixes boot if the CPU has a TSC deadline timer but a missing or
broken TSC.  The failure to boot can be observed with qemu using
-cpu qemu64,-tsc,+tsc-deadline

This also happens to me in nested KVM for unknown reasons.
With this patch, I can boot cleanly (although without a TSC).

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Cc: Bandan Das <bsd@redhat.com>
Link: http://lkml.kernel.org/r/e2fa274e498c33988efac0ba8b7e3120f7f92d78.1413393027.git.luto@amacapital.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-11-14 09:00:10 -08:00
..
Makefile trace,x86: Move creation of irq tracepoints from apic.c to irq.c 2013-06-21 10:33:28 -04:00
apic.c x86, apic: Handle a bad TSC more gracefully 2014-11-14 09:00:10 -08:00
apic_flat_64.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
apic_noop.c x86: Delete non-required instances of include <linux/init.h> 2014-01-06 21:25:18 -08:00
apic_numachip.c x86: delete __cpuinit usage from all x86 files 2013-07-14 19:36:56 -04:00
bigsmp_32.c x86/apic: Eliminate cpu_mask_to_apicid() operation 2012-06-14 12:53:13 +02:00
es7000_32.c x86: delete __cpuinit usage from all x86 files 2013-07-14 19:36:56 -04:00
hw_nmi.c x86: Fix trigger_all_cpu_backtrace() implementation 2013-06-20 14:00:21 +02:00
io_apic.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
ipi.c x86: Delete non-required instances of include <linux/init.h> 2014-01-06 21:25:18 -08:00
numaq_32.c x86: delete __cpuinit usage from all x86 files 2013-07-14 19:36:56 -04:00
probe_32.c Merge branch 'x86/apic' into x86/platform 2012-06-18 11:09:49 +02:00
probe_64.c x86/platform: Introduce APIC post-initialization callback 2012-06-06 09:06:19 +02:00
summit_32.c x86: Delete non-required instances of include <linux/init.h> 2014-01-06 21:25:18 -08:00
x2apic_cluster.c x86: Delete non-required instances of include <linux/init.h> 2014-01-06 21:25:18 -08:00
x2apic_phys.c x86: Delete non-required instances of include <linux/init.h> 2014-01-06 21:25:18 -08:00
x2apic_uv_x.c x86/uv/nmi: Fix Sparse warnings 2014-01-25 08:55:10 +01:00