• Paolo Bonzini's avatar
    kvm: x86: optimize dr6 restore · 0e0a53c5
    Paolo Bonzini authored
    The quote from the comment almost says it all: we are currently zeroing
    the guest dr6 in kvm_arch_vcpu_put, because do_debug expects it.  However,
    the host %dr6 is either:
    
    - zero because the guest hasn't run after kvm_arch_vcpu_load
    
    - written from vcpu->arch.dr6 by vcpu_enter_guest
    
    - written by the guest and copied to vcpu->arch.dr6 by ->sync_dirty_debug_regs().
    
    Therefore, we can skip the write if vcpu->arch.dr6 is already zero.  We
    may do extra useless writes if vcpu->arch.dr6 is nonzero but the guest
    hasn't run; however that is less important for performance.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    0e0a53c5
x86.c 246 KB