x86: apic: Use tsc deadline for oneshot when available
authorSuresh Siddha <suresh.b.siddha@intel.com>
Mon, 22 Oct 2012 21:37:58 +0000 (14:37 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 2 Nov 2012 10:23:37 +0000 (11:23 +0100)
commit279f1461432ccdec0b98c0bcbe0a8e2c0f6fdda5
tree1adaa912a846b6d45cff5c8b03db8f97d30ac779
parent1e207eb1c3f0e8b690401f02fe08e7b53903f010
x86: apic: Use tsc deadline for oneshot when available

If the TSC deadline mode is supported, LAPIC timer one-shot mode can be
implemented using IA32_TSC_DEADLINE MSR. An interrupt will be generated
when the TSC value equals or exceeds the value in the IA32_TSC_DEADLINE
MSR.

This enables us to skip the APIC calibration during boot. Also, in
xapic mode, this enables us to skip the uncached apic access to re-arm
the APIC timer.

As this timer ticks at the high frequency TSC rate, we use the
TSC_DIVISOR (32) to work with the 32-bit restrictions in the
clockevent API's to avoid 64-bit divides etc (frequency is u32 and
"unsigned long" in the set_next_event(), max_delta limits the next
event to 32-bit for 32-bit kernel).

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: venki@google.com
Cc: len.brown@intel.com
Link: http://lkml.kernel.org/r/1350941878.6017.31.camel@sbsiddha-desk.sc.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Documentation/kernel-parameters.txt
arch/x86/include/asm/msr-index.h
arch/x86/kernel/apic/apic.c