diff options
Diffstat (limited to 'arch/x86/kvm/vmx.c')
-rw-r--r-- | arch/x86/kvm/vmx.c | 8 |
1 files changed, 8 insertions, 0 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 | */ |