aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/x86.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 02363e37d4a6..a2cd0997343c 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8394,10 +8394,13 @@ static inline bool kvm_vcpu_has_events(struct kvm_vcpu *vcpu)
8394 if (vcpu->arch.pv.pv_unhalted) 8394 if (vcpu->arch.pv.pv_unhalted)
8395 return true; 8395 return true;
8396 8396
8397 if (atomic_read(&vcpu->arch.nmi_queued)) 8397 if (kvm_test_request(KVM_REQ_NMI, vcpu) ||
8398 (vcpu->arch.nmi_pending &&
8399 kvm_x86_ops->nmi_allowed(vcpu)))
8398 return true; 8400 return true;
8399 8401
8400 if (kvm_test_request(KVM_REQ_SMI, vcpu)) 8402 if (kvm_test_request(KVM_REQ_SMI, vcpu) ||
8403 (vcpu->arch.smi_pending && !is_smm(vcpu)))
8401 return true; 8404 return true;
8402 8405
8403 if (kvm_arch_interrupt_allowed(vcpu) && 8406 if (kvm_arch_interrupt_allowed(vcpu) &&