aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/vmx.c8
-rw-r--r--arch/x86/kvm/x86.c3
2 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index c87c93fd129a..c14bffc8c1f9 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3453,6 +3453,14 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
3453 if (test_bit(VCPU_REGS_RIP, (unsigned long *)&vcpu->arch.regs_dirty)) 3453 if (test_bit(VCPU_REGS_RIP, (unsigned long *)&vcpu->arch.regs_dirty))
3454 vmcs_writel(GUEST_RIP, vcpu->arch.regs[VCPU_REGS_RIP]); 3454 vmcs_writel(GUEST_RIP, vcpu->arch.regs[VCPU_REGS_RIP]);
3455 3455
3456 /* When single-stepping over STI and MOV SS, we must clear the
3457 * corresponding interruptibility bits in the guest state. Otherwise
3458 * vmentry fails as it then expects bit 14 (BS) in pending debug
3459 * exceptions being set, but that's not correct for the guest debugging
3460 * case. */
3461 if (vcpu->guest_debug & KVM_GUESTDBG_SINGLESTEP)
3462 vmx_set_interrupt_shadow(vcpu, 0);
3463
3456 /* 3464 /*
3457 * Loading guest fpu may have cleared host cr0.ts 3465 * Loading guest fpu may have cleared host cr0.ts
3458 */ 3466 */
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 25a1c5739dfc..f0642396783f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3361,9 +3361,6 @@ static void update_cr8_intercept(struct kvm_vcpu *vcpu)
3361 3361
3362static void inject_pending_irq(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) 3362static void inject_pending_irq(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
3363{ 3363{
3364 if (vcpu->guest_debug & KVM_GUESTDBG_SINGLESTEP)
3365 kvm_x86_ops->set_interrupt_shadow(vcpu, 0);
3366
3367 /* try to reinject previous events if any */ 3364 /* try to reinject previous events if any */
3368 if (vcpu->arch.nmi_injected) { 3365 if (vcpu->arch.nmi_injected) {
3369 kvm_x86_ops->set_nmi(vcpu); 3366 kvm_x86_ops->set_nmi(vcpu);