freebsd-skq/sys/x86
Konstantin Belousov ecabd74728 Use TSC deadline mode for LAPIC timer, when available. The mode fires
LAPIC timer iinterrupt when TSC reaches the value written to the
IA32_TSC_DEADLINE MSR.  To arm or reset the timer in deadline mode, a
single non-serializing MSR write is enough.  This is an advance from
the one-shot mode of LAPIC, where timer operated with the FSB
frequency and required two (serialized in case of xAPIC) writes to the
APIC registers.

The LVT_TIMER register value is cached to avoid unneeded writes in the
deadline mode.  Unused arguments to specify period (which is passed in
struct lapic as la_timer_period) and interrupt enable (which is always
enabled) are removed from lapic_timer_{oneshot,periodic,deadline}
functions.  Instead, special lapic_timer_oneshot_nointr() function for
interrupt-less one-shot calibration is added.

Reviewed by:	mav (previous version)
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D5738
2016-03-28 09:52:44 +00:00
..
acpica As <machine/pmap.h> is included from <vm/pmap.h>, there is no need to 2016-02-22 09:02:20 +00:00
bios
cpufreq
include Add defines for the LAPIC TSC deadline timer mode. The LVT timer mode 2016-03-28 09:43:40 +00:00
iommu Remove taskqueue_enqueue_fast(). 2016-03-01 17:47:32 +00:00
isa Silence PVS-Studio warning (V595). It can never be NULL here. 2016-02-23 23:57:24 +00:00
pci Convert rman to use rman_res_t instead of u_long 2016-01-27 02:23:54 +00:00
x86 Use TSC deadline mode for LAPIC timer, when available. The mode fires 2016-03-28 09:52:44 +00:00
xen Replace all resource occurrences of '0UL/~0UL' with '0/~0'. 2016-03-03 05:07:35 +00:00