Browse Source

KVM: x86: Clear DR6[0:3] on #DB during handle_dr

DR6[0:3] (previous breakpoint indications) are cleared when #DB is injected
during handle_exception, just as real hardware does.  Similarily, handle_dr
should clear DR6[0:3].

Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Nadav Amit 11 years ago
parent
commit
7305eb5d8c
1 changed files with 1 additions and 0 deletions
  1. 1 0
      arch/x86/kvm/vmx.c

+ 1 - 0
arch/x86/kvm/vmx.c

@@ -5125,6 +5125,7 @@ static int handle_dr(struct kvm_vcpu *vcpu)
 			vcpu->run->exit_reason = KVM_EXIT_DEBUG;
 			return 0;
 		} else {
+			vcpu->arch.dr6 &= ~15;
 			vcpu->arch.dr6 |= DR6_BD | DR6_RTM;
 			kvm_queue_exception(vcpu, DB_VECTOR);
 			return 1;