diff options
author | Avi Kivity <avi@redhat.com> | 2012-06-12 20:21:38 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-07-09 14:19:04 +0300 |
commit | de87dcddc70ec6a90adfcc81f0ad7d84a892ffce (patch) | |
tree | 8cbb9d20db9b2be82681cf30ee1bc4f2213c71a1 /arch/x86/kvm | |
parent | 612e89f01569f562dfa76cd5b76310a42b34a214 (diff) | |
download | op-kernel-dev-de87dcddc70ec6a90adfcc81f0ad7d84a892ffce.zip op-kernel-dev-de87dcddc70ec6a90adfcc81f0ad7d84a892ffce.tar.gz |
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')
-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 2e51e7c..a62f92a 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) { |