linux/arch/x86/include/asm
Zachary Amsden cc578287e3 KVM: Infrastructure for software and hardware based TSC rate scaling
This requires some restructuring; rather than use 'virtual_tsc_khz'
to indicate whether hardware rate scaling is in effect, we consider
each VCPU to always have a virtual TSC rate.  Instead, there is new
logic above the vendor-specific hardware scaling that decides whether
it is even necessary to use and updates all rate variables used by
common code.  This means we can simply query the virtual rate at
any point, which is needed for software rate scaling.

There is also now a threshold added to the TSC rate scaling; minor
differences and variations of measured TSC rate can accidentally
provoke rate scaling to be used when it is not needed.  Instead,
we have a tolerance variable called tsc_tolerance_ppm, which is
the maximum variation from user requested rate at which scaling
will be used.  The default is 250ppm, which is the half the
threshold for NTP adjustment, allowing for some hardware variation.

In the event that hardware rate scaling is not available, we can
kludge a bit by forcing TSC catchup to turn on when a faster than
hardware speed has been requested, but there is nothing available
yet for the reverse case; this requires a trap and emulate software
implementation for RDTSC, which is still forthcoming.

[avi: fix 64-bit division on i386]

Signed-off-by: Zachary Amsden <zamsden@gmail.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2012-03-08 14:09:35 +02:00
..
numachip x86: Add NumaChip support 2011-12-05 17:17:24 +01:00
uv x86/uv: Fix uv_gpa_to_soc_phys_ram() shift 2012-01-26 10:58:27 +01:00
visws
xen Merge branch 'upstream/xen-settime' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen 2011-11-06 20:15:05 -08:00
a.out-core.h
a.out.h
acpi.h
aes.h
agp.h
alternative-asm.h x86: Fix atomic64_xxx_cx8() functions 2012-01-04 15:01:56 +01:00
alternative.h asm alternatives: remove incorrect alignment notes 2011-09-15 13:28:33 -07:00
amd_nb.h x86/PCI: amd: factor out MMCONFIG discovery 2012-01-06 12:11:19 -08:00
apb_timer.h Merge branch 'timers-clocksource-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-07-23 10:34:47 -07:00
apic.h x86, x2apic: Allow "nox2apic" to disable x2apic mode setup by BIOS 2011-12-23 11:01:43 -08:00
apic_flat_64.h x86: Make flat_init_apic_ldr() available 2011-12-05 17:17:07 +01:00
apicdef.h x86, x2apic: Fallback to xapic when BIOS doesn't setup interrupt-remapping 2011-12-23 11:01:01 -08:00
apm.h
arch_hweight.h
archrandom.h x86, random: Verify RDRAND functionality and allow it to be disabled 2011-07-31 14:02:19 -07:00
asm-offsets.h
asm.h x86: Fix write lock scalability 64-bit issue 2011-07-21 09:03:36 +02:00
atomic.h x86: Use xadd helper more widely 2011-08-29 13:44:12 -07:00
atomic64_32.h x86, atomic: atomic64_read() take a const pointer 2012-01-09 19:33:24 -08:00
atomic64_64.h x86: Use xadd helper more widely 2011-08-29 13:44:12 -07:00
auxvec.h
bios_ebda.h
bitops.h x86_64, asm: Optimise fls(), ffs() and fls64() 2011-12-15 15:16:49 -08:00
bitsperlong.h
boot.h
bootparam.h x86: Add missing bzImage fields to struct setup_header 2011-12-09 17:35:33 -08:00
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
calgary.h
calling.h
ce4100.h
checksum.h
checksum_32.h
checksum_64.h
clocksource.h clocksource: Change __ARCH_HAS_CLOCKSOURCE_DATA to a CONFIG option 2011-07-21 13:34:05 -07:00
cmpxchg.h x86: Properly parenthesize cmpxchg() macro arguments 2012-01-26 21:18:29 +01:00
cmpxchg_32.h x86: Fix and improve cmpxchg_double{,_local}() 2012-01-04 15:01:54 +01:00
cmpxchg_64.h x86: Fix and improve cmpxchg_double{,_local}() 2012-01-04 15:01:54 +01:00
compat.h compat: sync compat_stats with statfs. 2011-10-28 14:58:53 +02:00
cpu.h
cpufeature.h x86/amd: Add missing feature flag for fam15h models 10h-1fh processors 2012-01-26 12:06:38 +01:00
cpumask.h
cputime.h
current.h
debugreg.h x86: Add counter when debug stack is used with interrupts enabled 2011-12-21 15:38:56 -05:00
delay.h asm-generic: move archictures to common delay.h 2011-07-22 18:46:24 +02:00
desc.h x86: Keep current stack in NMI breakpoints 2011-12-21 15:38:55 -05:00
desc_defs.h
device.h iommu: Rename the DMAR and INTR_REMAP config options 2011-09-21 10:22:03 +02:00
div64.h x86/div64: Add a micro-optimization shortcut if base is power of two 2011-12-05 18:16:11 +01:00
dma-mapping.h doc: fix broken references 2011-09-27 18:08:04 +02:00
dma.h
dmi.h
dwarf2.h x86-64: Fix CFI data for interrupt frames 2011-09-28 19:04:52 +02:00
e820.h Revert "x86, efi: Calling __pa() with an ioremap()ed address is invalid" 2011-12-12 18:25:56 +01:00
edac.h
efi.h Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-01-11 19:12:33 -08:00
elf.h x86, amd: Avoid cache aliasing penalties on AMD family 15h 2011-08-05 12:26:44 -07:00
emergency-restart.h
entry_arch.h
errno.h
fb.h
fcntl.h
fixmap.h x86/intel config: Revamp configuration to allow for Moorestown and Medfield 2011-12-18 09:17:02 +01:00
floppy.h
frame.h x86: Unify rwlock assembly implementation 2011-07-21 09:03:31 +02:00
ftrace.h
futex.h
gart.h
genapic.h
geode.h
gpio.h
hardirq.h x86: Convert per-cpu counter icr_read_retry_count into a member of irq_stat 2011-12-18 10:46:48 +01:00
highmem.h
hpet.h
hugetlb.h
hw_breakpoint.h
hw_irq.h iommu: Rename the DMAR and INTR_REMAP config options 2011-09-21 10:22:03 +02:00
hypertransport.h
hyperv.h Staging: hv: vmbus: Retry vmbus_post_msg() before giving up 2011-08-25 15:23:19 -07:00
hypervisor.h
i387.h i387: support lazy restore of FPU state 2012-02-20 10:58:54 -08:00
i8259.h
ia32.h
ia32_unistd.h x86: Generate system call tables and unistd_*.h from tables 2011-11-17 13:35:37 -08:00
idle.h
inat.h
inat_types.h
init.h x86, mm: Unify zone_sizes_init() 2011-11-11 10:22:55 +01:00
insn.h x86, perf: Add a build-time sanity test to the x86 decoder 2011-11-10 12:38:51 +01:00
inst.h
intel_scu_ipc.h x86,mrst: Power control commands update 2011-12-05 12:42:11 +01:00
io.h x86: don't include xen/xen.h in <asm/io.h> unless XEN is enabled 2011-08-03 22:00:38 -10:00
io_apic.h
ioctl.h
ioctls.h
iomap.h
iommu.h iommu: Add option to group multi-function devices 2011-11-15 12:22:31 +01:00
iommu_table.h
ipcbuf.h
ipi.h
irq.h
irq_controller.h
irq_regs.h
irq_remapping.h iommu: Rename the DMAR and INTR_REMAP config options 2011-09-21 10:22:03 +02:00
irq_vectors.h x86/irq: Standardize on CONFIG_SPARSE_IRQ=y 2011-10-13 12:12:12 +02:00
irqflags.h
ist.h
jump_label.h
Kbuild x86: Generate system call tables and unistd_*.h from tables 2011-11-17 13:35:37 -08:00
kdebug.h ptrace: unify show_regs() prototype 2011-07-26 16:49:43 -07:00
kexec.h
kgdb.h
kmap_types.h
kmemcheck.h
kprobes.h
kvm.h KVM: provide synchronous registers in kvm_run 2012-03-05 14:52:22 +02:00
kvm_emulate.h KVM: x86: fix missing checks in syscall emulation 2012-02-01 11:43:40 +02:00
kvm_host.h KVM: Infrastructure for software and hardware based TSC rate scaling 2012-03-08 14:09:35 +02:00
kvm_para.h KVM guest: KVM Steal time registration 2011-07-24 11:49:36 +03:00
ldt.h
lguest.h
lguest_hcall.h lguest: update comments 2011-07-22 14:39:50 +09:30
linkage.h
local.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
local64.h
mach_timer.h time: x86: Remove CLOCK_TICK_RATE from mach_timer.h 2011-11-21 19:00:57 -08:00
mach_traps.h x86/mrst: Avoid reporting wrong nmi status 2011-11-10 16:21:01 +01:00
math_emu.h
mc146818rtc.h x86: Use "do { } while(0)" for empty lock_cmos()/unlock_cmos() macros 2011-12-18 09:14:31 +01:00
mca.h
mca_dma.h
mce.h mce: fix warning messages about static struct mce_device 2012-01-16 17:08:42 -08:00
microcode.h x86, microcode, AMD: Add a vendor-specific exit function 2011-12-14 12:46:47 +01:00
mman.h
mmconfig.h
mmu.h
mmu_context.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
mmx.h
mmzone.h
mmzone_32.h
mmzone_64.h
module.h
mpspec.h
mpspec_def.h
mrst-vrtc.h
mrst.h Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty 2012-01-09 12:09:24 -08:00
msgbuf.h
mshyperv.h
msidef.h
msr-index.h x86: TSC deadline definitions 2011-09-25 19:53:00 +03:00
msr.h x86: Document rdmsr_safe restrictions 2011-12-05 14:28:37 +01:00
mtrr.h
mutex.h
mutex_32.h
mutex_64.h
mwait.h
nmi.h x86, nmi: Add in logic to handle multiple events and unknown NMIs 2011-10-10 06:57:01 +02:00
nops.h
numa.h
numa_32.h
numa_64.h
numaq.h
olpc.h
olpc_ofw.h
page.h
page_32.h
page_32_types.h
page_64.h
page_64_types.h
page_types.h
param.h
paravirt.h KVM guest: Add a pv_ops stub for steal time 2011-07-14 12:59:44 +03:00
paravirt_types.h Merge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-tip 2011-08-12 20:46:24 -07:00
parport.h
pat.h
pci-direct.h
pci-functions.h
pci.h x86/PCI: Expand the x86_msi_ops to have a restore MSIs. 2012-01-06 14:02:26 -08:00
pci_64.h
pci_x86.h PCI: Pull PCI 'latency timer' setup up into the core 2012-01-06 12:10:42 -08:00
percpu.h Merge branch 'for-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2012-01-09 13:08:28 -08:00
perf_event.h perf events: Enable raw event support for Intel unhalted_reference_cycles event 2011-12-21 10:26:32 +01:00
perf_event_p4.h x86, perf: P4 PMU - Fix typos in comments and style cleanup 2011-07-21 20:41:54 +02:00
pgalloc.h
pgtable-2level.h
pgtable-2level_types.h
pgtable-3level.h
pgtable-3level_types.h
pgtable.h x86: Use "do { } while(0)" for empty flush_tlb_fix_spurious_fault() macro 2011-12-18 09:14:18 +01:00
pgtable_32.h
pgtable_32_types.h
pgtable_64.h
pgtable_64_types.h
pgtable_types.h
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h
probe_roms.h
processor-cyrix.h
processor-flags.h x86: Fix rflags in FAKE_STACK_FRAME 2011-12-06 10:02:38 +01:00
processor.h i387: support lazy restore of FPU state 2012-02-20 10:58:54 -08:00
prom.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
proto.h
ptrace-abi.h
ptrace.h x86-64: Add user_64bit_mode paravirt op 2011-08-04 16:13:49 -07:00
pvclock-abi.h
pvclock.h KVM: Fix instruction size issue in pvclock scaling 2011-08-30 14:42:30 +03:00
reboot.h x86, nmi: Wire up NMI handlers to new routines 2011-10-10 06:56:57 +02:00
reboot_fixups.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h x86: Fix write lock scalability 64-bit issue 2011-07-21 09:03:36 +02:00
rwsem.h x86: Use xadd helper more widely 2011-08-29 13:44:12 -07:00
scatterlist.h
seccomp.h
seccomp_32.h
seccomp_64.h
sections.h
segment.h
sembuf.h
serial.h
serpent.h crypto: serpent - add 4-way parallel i586/SSE2 assembler implementation 2011-11-21 16:13:23 +08:00
setup.h x86/intel config: Revamp configuration to allow for Moorestown and Medfield 2011-12-18 09:17:02 +01:00
setup_arch.h
shmbuf.h
shmparam.h
sigcontext.h
sigcontext32.h
sigframe.h
siginfo.h
signal.h
smp.h x86, NMI: Add NMI IPI selftest 2011-12-05 12:00:16 +01:00
smpboot_hooks.h x86: Serialize SMP bootup CMOS accesses on rtc_lock 2011-07-21 09:20:59 +02:00
socket.h
sockios.h
sparsemem.h
spinlock.h x86/cmpxchg: add a locked add() helper 2011-11-25 10:42:59 -08:00
spinlock_types.h x86, ticketlock: Make __ticket_spin_trylock common 2011-08-29 13:46:34 -07:00
stackprotector.h
stacktrace.h
stat.h
statfs.h
string.h
string_32.h
string_64.h
suspend.h
suspend_32.h
suspend_64.h
svm.h
swab.h
swiotlb.h
sync_bitops.h
sys_ia32.h
syscall.h x86: Move <asm/asm-offsets.h> from trace_syscalls.c to asm/syscall.h 2012-01-07 14:10:18 -08:00
syscalls.h
system.h xen/pm_idle: Make pm_idle be default_idle under Xen. 2011-12-03 10:49:58 -08:00
tce.h
termbits.h
termios.h
thread_info.h i387: move TS_USEDFPU flag from thread_info to task_struct 2012-02-18 10:19:41 -08:00
time.h
timer.h sched, x86: Avoid unnecessary overflow in sched_clock 2011-11-16 19:51:25 +01:00
timex.h
tlb.h
tlbflush.h
topology.h Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
trampoline.h
traps.h x86-64: Rework vsyscall emulation and add vsyscall= parameter 2011-08-10 19:26:46 -05:00
tsc.h x86, tsc: Skip TSC synchronization checks for tsc=reliable 2011-12-05 18:00:31 +01:00
types.h
uaccess.h x86-64: Set siginfo and context on vsyscall emulation faults 2011-12-05 12:17:27 +01:00
uaccess_32.h
uaccess_64.h
ucontext.h
unaligned.h
unistd.h x86, syscall: Need __ARCH_WANT_SYS_IPC for 32 bits 2012-01-19 12:57:09 -08:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
vga.h
vgtod.h x86-64: Move vread_tsc and vread_hpet into the vDSO 2011-07-14 17:57:05 -07:00
virtext.h
vm86.h
vmx.h KVM: APIC: avoid instruction emulation for EOI writes 2011-09-25 19:52:17 +03:00
vsyscall.h x86-64: Rework vsyscall emulation and add vsyscall= parameter 2011-08-10 19:26:46 -05:00
vvar.h
x2apic.h
x86_init.h x86: Introduce x86_cpuinit.early_percpu_clock_init hook 2012-03-05 14:57:32 +02:00
xcr.h
xor.h
xor_32.h
xor_64.h
xsave.h