diff options
| -rw-r--r-- | arch/x86/include/asm/kvm_host.h | 6 | ||||
| -rw-r--r-- | arch/x86/kvm/x86.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 7930c294182a..35f538bda3a9 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h | |||
| @@ -337,6 +337,10 @@ struct kvm_pmu { | |||
| 337 | u64 reprogram_pmi; | 337 | u64 reprogram_pmi; |
| 338 | }; | 338 | }; |
| 339 | 339 | ||
| 340 | enum { | ||
| 341 | KVM_DEBUGREG_BP_ENABLED = 1, | ||
| 342 | }; | ||
| 343 | |||
| 340 | struct kvm_vcpu_arch { | 344 | struct kvm_vcpu_arch { |
| 341 | /* | 345 | /* |
| 342 | * rip and regs accesses must go through | 346 | * rip and regs accesses must go through |
| @@ -463,7 +467,7 @@ struct kvm_vcpu_arch { | |||
| 463 | struct mtrr_state_type mtrr_state; | 467 | struct mtrr_state_type mtrr_state; |
| 464 | u32 pat; | 468 | u32 pat; |
| 465 | 469 | ||
| 466 | int switch_db_regs; | 470 | unsigned switch_db_regs; |
| 467 | unsigned long db[KVM_NR_DB_REGS]; | 471 | unsigned long db[KVM_NR_DB_REGS]; |
| 468 | unsigned long dr6; | 472 | unsigned long dr6; |
| 469 | unsigned long dr7; | 473 | unsigned long dr7; |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 622312176f28..85c74e7df2df 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
| @@ -759,7 +759,9 @@ static void kvm_update_dr7(struct kvm_vcpu *vcpu) | |||
| 759 | else | 759 | else |
| 760 | dr7 = vcpu->arch.dr7; | 760 | dr7 = vcpu->arch.dr7; |
| 761 | kvm_x86_ops->set_dr7(vcpu, dr7); | 761 | kvm_x86_ops->set_dr7(vcpu, dr7); |
| 762 | vcpu->arch.switch_db_regs = (dr7 & DR7_BP_EN_MASK); | 762 | vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_BP_ENABLED; |
| 763 | if (dr7 & DR7_BP_EN_MASK) | ||
| 764 | vcpu->arch.switch_db_regs |= KVM_DEBUGREG_BP_ENABLED; | ||
| 763 | } | 765 | } |
| 764 | 766 | ||
| 765 | static int __kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val) | 767 | static int __kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val) |
