• Radim Krčmář's avatar
    kvm: x86: fix kvmclock update protocol · 5dca0d91
    Radim Krčmář authored
    The kvmclock spec says that the host will increment a version field to
    an odd number, then update stuff, then increment it to an even number.
    The host is buggy and doesn't do this, and the result is observable
    when one vcpu reads another vcpu's kvmclock data.
    
    There's no good way for a guest kernel to keep its vdso from reading
    a different vcpu's kvmclock data, but we don't need to care about
    changing VCPUs as long as we read a consistent data from kvmclock.
    (VCPU can change outside of this loop too, so it doesn't matter if we
    return a value not fit for this VCPU.)
    
    Based on a patch by Radim Krčmář.
    Reviewed-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    Acked-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    5dca0d91
x86.c 202 KB