Re: [PATCH] KVM: SVM: Adjust tsc_offset only if tsc_unstable

From: Zachary Amsden
Date: Sun Dec 20 2009 - 18:22:37 EST

On 12/19/2009 11:59 PM, Avi Kivity wrote:
On 12/15/2009 05:38 AM, Zachary Amsden wrote:
On 12/14/2009 01:22 AM, Joerg Roedel wrote:
The tsc_offset adjustment in svm_vcpu_load is executed
unconditionally even if Linux considers the host tsc as
stable. This causes a Linux guest detecting an unstable tsc
in any case.
This patch removes the tsc_offset adjustment if the host tsc
is stable. The guest will now get the benefit of a stable
tsc too.

Hi Joerg, I have a much more comprehensive series of patches to address this issue, please take a look.

Despite this, I've applied the patch to have this fix in while we review your patch set (haven't started yet, sorry - still recovering from nested vmx).

No worries, I can always re-base. My patch set needs some other fixed bits for sleep in C-states on Intel CPUs.

Choices are:

1) do nothing; don't support these CPUs
2) do nothing; don't support MWAIT based sleep into C3 on these CPUs, force different idle routine
3) resync the TSC on exit from C3
4) don't use TSC here at all

If the wakeup time for a CPU needs to be fast, I prefer approach #2;

However, if the load is so low that we can drop to C3, then we can consider the state of deep idle to be equivalent to bring a CPU down and then back up, which is a problem we already know how to solve; this is an argument for #3.

It is also pragmatic to suggest #4, now that there exists a patchset for doing intercept based TSC virtualization.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at