summaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2012-06-12 20:21:38 +0300
committerAvi Kivity <avi@redhat.com>2012-07-09 14:19:04 +0300
commitde87dcddc70ec6a90adfcc81f0ad7d84a892ffce (patch)
tree8cbb9d20db9b2be82681cf30ee1bc4f2213c71a1 /arch/x86/kvm
parent612e89f01569f562dfa76cd5b76310a42b34a214 (diff)
downloadop-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.c3
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) {
OpenPOWER on IntegriCloud