Skip to content
  • Peter Shier's avatar
    KVM: x86: Return updated timer current count register from KVM_GET_LAPIC · 24647e0a
    Peter Shier authored
    
    
    kvm_vcpu_ioctl_get_lapic (implements KVM_GET_LAPIC ioctl) does a bulk copy
    of the LAPIC registers but must take into account that the one-shot and
    periodic timer current count register is computed upon reads and is not
    present in register state. When restoring LAPIC state (e.g. after
    migration), restart timers from their their current count values at time of
    save.
    
    Note: When a one-shot timer expires, the code in arch/x86/kvm/lapic.c does
    not zero the value of the LAPIC initial count register (emulating HW
    behavior). If no other timer is run and pending prior to a subsequent
    KVM_GET_LAPIC call, the returned register set will include the expired
    one-shot initial count. On a subsequent KVM_SET_LAPIC call the code will
    see a non-zero initial count and start a new one-shot timer using the
    expired timer's count. This is a prior existing bug and will be addressed
    in a separate patch. Thanks to jmattson@google.com for this find.
    
    Signed-off-by: default avatarPeter Shier <pshier@google.com>
    Reviewed-by: default avatarJim Mattson <jmattson@google.com>
    Reviewed-by: default avatarWanpeng Li <wanpengli@tencent.com>
    Message-Id: <20181010225653.238911-1-pshier@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    24647e0a