On Wed, Mar 13, 2013 at 12:36:58PM +0100, Jan Kiszka wrote: > On 2013-03-13 12:16, Jan Kiszka wrote: > >>> @@ -5871,8 +5867,8 @@ static int __vcpu_run(struct kvm_vcpu *vcpu) > >>> srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx); > >>> kvm_vcpu_block(vcpu); > >>> vcpu->srcu_idx = srcu_read_lock(&kvm->srcu); > >>> - if (kvm_check_request(KVM_REQ_UNHALT, vcpu)) > >>> - { > >>> + if (kvm_check_request(KVM_REQ_UNHALT, vcpu)) { > >>> + kvm_apic_accept_events(vcpu); > >> I think we can drop this. If INIT happens while vcpu is halted it will > >> become runnable here and kvm_apic_accept_events() will be called in > >> vcpu_enter_guest(). > > > > I'm not that sure, but I will recheck carefully. > > Doesn't work: If the state was INIT_RECEIVED, we will not process the > SIPI but reenter kvm_vcpu_block. Which raises the question. What if vcpu is in INIT_RECEIVED and it receives NMI. It will make kvm_arch_vcpu_runnable() return true but code will get back to kvm_vcpu_block() again. > And it's more consistent to process the > events here IMHO. > I would like to minimize a number of places kvm_apic_accept_events() is called, but it looks like we cannot remove it from here indeed. What about calling it in "case: KVM_MP_STATE_INIT_RECEIVED"? -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html