summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-10-13 10:19:35 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2015-10-13 18:29:41 +0200
commit73917739334c6509833b0403b81d4a04a8784bdf (patch)
tree4b689f3a9b557f7158a6f1bc1ccc56e7266d2112 /arch
parentKVM: x86: clean up kvm_arch_vcpu_runnable (diff)
downloadlinux-73917739334c6509833b0403b81d4a04a8784bdf.tar.xz
linux-73917739334c6509833b0403b81d4a04a8784bdf.zip
KVM: x86: fix SMI to halted VCPU
An SMI to a halted VCPU must wake it up, hence a VCPU with a pending SMI must be considered runnable. Fixes: 64d6067057d9658acb8675afcfba549abdb7fc16 Cc: stable@vger.kernel.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/x86.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b69ef58e51ee..6e03546faf2e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7781,6 +7781,9 @@ static inline bool kvm_vcpu_has_events(struct kvm_vcpu *vcpu)
if (atomic_read(&vcpu->arch.nmi_queued))
return true;
+ if (test_bit(KVM_REQ_SMI, &vcpu->requests))
+ return true;
+
if (kvm_arch_interrupt_allowed(vcpu) &&
kvm_cpu_has_interrupt(vcpu))
return true;