• Paolo Bonzini's avatar
    KVM: X86: Set host DR6 only on VMX and for KVM_DEBUGREG_WONT_EXIT · 375e28ff
    Paolo Bonzini authored
    Commit c77fb5fe ("KVM: x86: Allow the guest to run with dirty debug
    registers") allows the guest accessing to DRs without exiting when
    KVM_DEBUGREG_WONT_EXIT and we need to ensure that they are synchronized
    on entry to the guest---including DR6 that was not synced before the commit.
    
    But the commit sets the hardware DR6 not only when KVM_DEBUGREG_WONT_EXIT,
    but also when KVM_DEBUGREG_BP_ENABLED.  The second case is unnecessary
    and just leads to a more case which leaks stale DR6 to the host which has
    to be resolved by unconditionally reseting DR6 in kvm_arch_vcpu_put().
    
    Even if KVM_DEBUGREG_WONT_EXIT, however, setting the host DR6 only matters
    on VMX because SVM always uses the DR6 value from the VMCB.  So move this
    line to vmx.c and make it conditional on KVM_DEBUGREG_WONT_EXIT.
    Reported-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    375e28ff
vmx.c 223 KB