linux/arch/x86/kvm
Zachary Amsden ca84d1a24c KVM: x86: Add clock sync request to hardware enable
If there are active VCPUs which are marked as belonging to
a particular hardware CPU, request a clock sync for them when
enabling hardware; the TSC could be desynchronized on a newly
arriving CPU, and we need to recompute guests system time
relative to boot after a suspend event.

This covers both cases.

Note that it is acceptable to take the spinlock, as either
no other tasks will be running and no locks held (BSP after
resume), or other tasks will be guaranteed to drop the lock
relatively quickly (AP on CPU_STARTING).

Noting we now get clock synchronization requests for VCPUs
which are starting up (or restarting), it is tempting to
attempt to remove the arch/x86/kvm/x86.c CPU hot-notifiers
at this time, however it is not correct to do so; they are
required for systems with non-constant TSC as the frequency
may not be known immediately after the processor has started
until the cpufreq driver has had a chance to run and query
the chipset.

Updated: implement better locking semantics for hardware_enable

Removed the hack of dropping and retaking the lock by adding the
semantic that we always hold kvm_lock when hardware_enable is
called.  The one place that doesn't need to worry about it is
resume, as resuming a frozen CPU, the spinlock won't be taken.

Signed-off-by: Zachary Amsden <zamsden@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
2010-10-24 10:51:24 +02:00
..
emulate.c KVM: x86 emulator: add JrCXZ instruction emulation 2010-10-24 10:51:20 +02:00
i8254.c KVM: PIT: free irq source id in handling error path 2010-08-17 12:04:23 +03:00
i8254.h KVM: x86: Introduce a workqueue to deliver PIT timer interrupts 2010-08-01 10:46:49 +03:00
i8259.c KVM: fix i8259 oops when no vcpus are online 2010-09-08 14:50:56 -03:00
irq.c KVM: x86: Introduce a workqueue to deliver PIT timer interrupts 2010-08-01 10:46:49 +03:00
irq.h KVM: i8259: fix migration 2010-09-08 14:50:58 -03:00
Kconfig Merge branch 'kvm-updates/2.6.34' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2010-03-05 13:12:34 -08:00
kvm_cache_regs.h KVM: VMX: Enable XSAVE/XRSTOR for guest 2010-08-01 10:46:31 +03:00
kvm_timer.h KVM: arch/x86/kvm/kvm_timer.h checkpatch cleanup 2010-05-17 12:14:42 +03:00
lapic.c KVM: Add mini-API for vcpu->requests 2010-08-01 10:47:05 +03:00
lapic.h KVM: Add HYPER-V apic access MSRs 2010-03-01 12:36:00 -03:00
Makefile KVM: Move assigned device code to own file 2009-12-03 09:32:09 +02:00
mmu.c KVM: MMU: fix missing percpu counter destroy 2010-10-24 10:51:21 +02:00
mmu.h KVM: replace x86 kvm n_free_mmu_pages with n_used_mmu_pages 2010-10-24 10:51:18 +02:00
mmutrace.h KVM: MMU: split the operations of kvm_mmu_zap_page() 2010-08-01 10:39:27 +03:00
paging_tmpl.h KVM: MMU: add missing reserved bits check in speculative path 2010-08-02 06:40:56 +03:00
svm.c KVM: x86: Unify TSC logic 2010-10-24 10:51:23 +02:00
timer.c KVM: Add mini-API for vcpu->requests 2010-08-01 10:47:05 +03:00
trace.h KVM: Trace emulated instructions 2010-05-17 12:17:35 +03:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: x86: Unify TSC logic 2010-10-24 10:51:23 +02:00
x86.c KVM: x86: Add clock sync request to hardware enable 2010-10-24 10:51:24 +02:00
x86.h KVM: x86: Move TSC offset writes to common code 2010-10-24 10:51:22 +02:00