KVM: Dont mark TSC unstable due to S4 suspend
authorZachary Amsden <zamsden@gmail.com>
Fri, 3 Feb 2012 17:43:56 +0000 (15:43 -0200)
committerAvi Kivity <avi@redhat.com>
Thu, 8 Mar 2012 12:10:08 +0000 (14:10 +0200)
commit0dd6a6edb0124e6c71931ff575b18e15ed6e8603
tree758efc28e830eca71e3912a76315917037fadfee
parentf1e2b26003c41e581243c09ceed7567677449468
KVM: Dont mark TSC unstable due to S4 suspend

During a host suspend, TSC may go backwards, which KVM interprets
as an unstable TSC.  Technically, KVM should not be marking the
TSC unstable, which causes the TSC clocksource to go bad, but we
need to be adjusting the TSC offsets in such a case.

Dealing with this issue is a little tricky as the only place we
can reliably do it is before much of the timekeeping infrastructure
is up and running.  On top of this, we are not in a KVM thread
context, so we may not be able to safely access VCPU fields.
Instead, we compute our best known hardware offset at power-up and
stash it to be applied to all VCPUs when they actually start running.

Signed-off-by: Zachary Amsden <zamsden@gmail.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/x86.c