hw-breakpoints: Wrap in the KVM breakpoint active state check
authorFrederic Weisbecker <fweisbec@gmail.com>
Tue, 10 Nov 2009 10:03:12 +0000 (11:03 +0100)
committerFrederic Weisbecker <fweisbec@gmail.com>
Tue, 10 Nov 2009 10:23:43 +0000 (11:23 +0100)
Wrap in the cpu dr7 check that tells if we have active
breakpoints that need to be restored in the cpu.

This wrapper makes the check more self-explainable and also
reusable for any further other uses.

Reported-by: Jan Kiszka <jan.kiszka@web.de>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Avi Kivity <avi@redhat.com>
Cc: "K. Prasad" <prasad@linux.vnet.ibm.com>
arch/x86/include/asm/debugreg.h
arch/x86/kvm/x86.c

index f1b673f..0f6e92a 100644 (file)
@@ -89,6 +89,11 @@ static inline void hw_breakpoint_disable(void)
        set_debugreg(0UL, 3);
 }
 
+static inline int hw_breakpoint_active(void)
+{
+       return __get_cpu_var(dr7) & DR_GLOBAL_ENABLE_MASK;
+}
+
 extern void aout_dump_debugregs(struct user *dump);
 
 #ifdef CONFIG_KVM
index 22dee7a..3817220 100644 (file)
@@ -3651,7 +3651,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
         * care about the messed up debug address registers. But if
         * we have some of them active, restore the old state.
         */
-       if (__get_cpu_var(dr7) & DR_GLOBAL_ENABLE_MASK)
+       if (hw_breakpoint_active())
                hw_breakpoint_restore();
 
        set_bit(KVM_REQ_KICK, &vcpu->requests);