Loading arch/x86/include/asm/kvm_host.h +5 −1 Original line number Diff line number Diff line Loading @@ -337,6 +337,10 @@ struct kvm_pmu { u64 reprogram_pmi; }; enum { KVM_DEBUGREG_BP_ENABLED = 1, }; struct kvm_vcpu_arch { /* * rip and regs accesses must go through Loading Loading @@ -463,7 +467,7 @@ struct kvm_vcpu_arch { struct mtrr_state_type mtrr_state; u32 pat; int switch_db_regs; unsigned switch_db_regs; unsigned long db[KVM_NR_DB_REGS]; unsigned long dr6; unsigned long dr7; Loading arch/x86/kvm/x86.c +3 −1 Original line number Diff line number Diff line Loading @@ -759,7 +759,9 @@ static void kvm_update_dr7(struct kvm_vcpu *vcpu) else dr7 = vcpu->arch.dr7; kvm_x86_ops->set_dr7(vcpu, dr7); vcpu->arch.switch_db_regs = (dr7 & DR7_BP_EN_MASK); vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_BP_ENABLED; if (dr7 & DR7_BP_EN_MASK) vcpu->arch.switch_db_regs |= KVM_DEBUGREG_BP_ENABLED; } static int __kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val) Loading Loading
arch/x86/include/asm/kvm_host.h +5 −1 Original line number Diff line number Diff line Loading @@ -337,6 +337,10 @@ struct kvm_pmu { u64 reprogram_pmi; }; enum { KVM_DEBUGREG_BP_ENABLED = 1, }; struct kvm_vcpu_arch { /* * rip and regs accesses must go through Loading Loading @@ -463,7 +467,7 @@ struct kvm_vcpu_arch { struct mtrr_state_type mtrr_state; u32 pat; int switch_db_regs; unsigned switch_db_regs; unsigned long db[KVM_NR_DB_REGS]; unsigned long dr6; unsigned long dr7; Loading
arch/x86/kvm/x86.c +3 −1 Original line number Diff line number Diff line Loading @@ -759,7 +759,9 @@ static void kvm_update_dr7(struct kvm_vcpu *vcpu) else dr7 = vcpu->arch.dr7; kvm_x86_ops->set_dr7(vcpu, dr7); vcpu->arch.switch_db_regs = (dr7 & DR7_BP_EN_MASK); vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_BP_ENABLED; if (dr7 & DR7_BP_EN_MASK) vcpu->arch.switch_db_regs |= KVM_DEBUGREG_BP_ENABLED; } static int __kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val) Loading