lkml.org 
[lkml]   [2011]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[143/143] KVM: x86: Fix kvmclock bug
    2.6.32-longterm review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Zachary Amsden <zamsden@redhat.com>

    (backported from commit 28e4639adf0c9f26f6bb56149b7ab547bf33bb95)

    If preempted after kvmclock values are updated, but before hardware
    virtualization is entered, the last tsc time as read by the guest is
    never set. It underflows the next time kvmclock is updated if there
    has not yet been a successful entry / exit into hardware virt.

    Fix this by simply setting last_tsc to the newly read tsc value so
    that any computed nsec advance of kvmclock is nulled.

    Signed-off-by: Zachary Amsden <zamsden@redhat.com>
    Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

    BugLink: http://bugs.launchpad.net/bugs/714335

    Signed-off-by: Serge E. Hallyn <serge.hallyn@canonical.com>
    Reviewed-by: Stefan Bader <stefan.bader@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    arch/x86/kvm/x86.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -694,6 +694,7 @@ static void kvm_write_guest_time(struct
    vcpu->hv_clock.tsc_timestamp = tsc_timestamp;
    vcpu->hv_clock.system_time = kernel_ns + v->kvm->arch.kvmclock_offset;
    vcpu->last_kernel_ns = kernel_ns;
    + vcpu->last_guest_tsc = tsc_timestamp;

    /*
    * The interface expects us to write an even number signaling that the



    \
     
     \ /
      Last update: 2011-05-06 02:45    [W:2.885 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site