diff options
author | Avi Kivity <avi@redhat.com> | 2012-06-12 19:21:38 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-07-09 13:19:04 +0200 |
commit | de87dcddc70ec6a90adfcc81f0ad7d84a892ffce (patch) | |
tree | 8cbb9d20db9b2be82681cf30ee1bc4f2213c71a1 /arch/x86/kvm/vmx.c | |
parent | KVM: x86 emulator: implement ENTER (diff) | |
download | linux-de87dcddc70ec6a90adfcc81f0ad7d84a892ffce.tar.xz linux-de87dcddc70ec6a90adfcc81f0ad7d84a892ffce.zip |
KVM: VMX: Stop invalid guest state emulation on pending event
Process the event, possibly injecting an interrupt, before continuing.
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/vmx.c')
-rw-r--r-- | arch/x86/kvm/vmx.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 2e51e7c6d2a8..a62f92ab1be2 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -4986,6 +4986,9 @@ static int handle_invalid_guest_state(struct kvm_vcpu *vcpu) if (intr_window_requested && vmx_interrupt_allowed(vcpu)) return handle_interrupt_window(&vmx->vcpu); + if (test_bit(KVM_REQ_EVENT, &vcpu->requests)) + return 1; + err = emulate_instruction(vcpu, 0); if (err == EMULATE_DO_MMIO) { |