[PATCH] i386: trust the PM-Timer calibration of the local APIC timer
authorThomas Gleixner <tglx@linutronix.de>
Sun, 18 Mar 2007 09:26:13 +0000 (01:26 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Sun, 18 Mar 2007 18:35:08 +0000 (11:35 -0700)
commitca1b940ce6495541efe76499b3de39aa5e4941ed
tree8838e6f5f730f23a5e514180125f712cba091e2e
parent303cd1535f6257b9fd8214534ca87b1a1567a2c5
[PATCH] i386: trust the PM-Timer calibration of the local APIC timer

When PM-Timer is available for local APIC timer calibration we can skip the
verification of the calibrated time value.  The resulting error is quite
small on a bunch of evaluated platforms and is less harming than the
observed false positives.

We need to keep the verification on systems, which have no PM-Timer to
avoid bogus local APIC timer calibrations in the range of factor 2-10,
which can be observed when swicthing off the PM-timer support in the kernel
configuration.

The wrong calibration values are probably caused by SMM code trying to
emulate a PS/2 keyboard from a (maybe connected or not) USB keyboard.  This
prohibits the accurate delivery of PIT interrupts, which are used to
calibrate the local APIC timer.  Unfortunately we have no way to disable
this BIOS misfeature in the early boot process.

Add also the dropped cpu_relax() back to the wait loops.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/i386/kernel/apic.c