KVM: don't enter guest after SIPI was received by a CPU
authorGleb Natapov <gleb@qumranet.com>
Mon, 22 Sep 2008 11:28:53 +0000 (14:28 +0300)
committerAvi Kivity <avi@redhat.com>
Wed, 15 Oct 2008 12:25:09 +0000 (14:25 +0200)
The vcpu should process pending SIPI message before entering guest mode again.
kvm_arch_vcpu_runnable() returns true if the vcpu is in SIPI state, so
we can't call it here.

Signed-off-by: Gleb Natapov <gleb@qumranet.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/x86.c

index 1b738cb..08edeab 100644 (file)
@@ -3233,7 +3233,7 @@ static int __vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
 
        r = 1;
        while (r > 0) {
-               if (kvm_arch_vcpu_runnable(vcpu))
+               if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE)
                        r = vcpu_enter_guest(vcpu, kvm_run);
                else {
                        up_read(&vcpu->kvm->slots_lock);