• Paolo Bonzini's avatar
    KVM: x86: do not attempt TSC synchronization on guest writes · 0c899c25
    Paolo Bonzini authored
    KVM special-cases writes to MSR_IA32_TSC so that all CPUs have
    the same base for the TSC.  This logic is complicated, and we
    do not want it to have any effect once the VM is started.
    
    In particular, if any guest started to synchronize its TSCs
    with writes to MSR_IA32_TSC rather than MSR_IA32_TSC_ADJUST,
    the additional effect of kvm_write_tsc code would be uncharted
    territory.
    
    Therefore, this patch makes writes to MSR_IA32_TSC behave
    essentially the same as writes to MSR_IA32_TSC_ADJUST when
    they come from the guest.  A new selftest (which passes
    both before and after the patch) checks the current semantics
    of writes to MSR_IA32_TSC and MSR_IA32_TSC_ADJUST originating
    from both the host and the guest.
    
    Upcoming work to remove the special side effects
    of host-initiated writes to MSR_IA32_TSC and MSR_IA32_TSC_ADJUST
    will be able to build onto this test, adjusting the host side
    to use the new APIs and achieve the same effect.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    0c899c25
x86.c 290 KB