From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: [PATCH] KVM: x86: Rework INIT and SIPI handling Date: Wed, 13 Mar 2013 14:29:02 +0200 Message-ID: <20130313122902.GL11223@redhat.com> References: <51403DEF.3090403@siemens.com> <20130313103139.GI11223@redhat.com> <51405FFD.2040102@siemens.com> <514064DA.1080009@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Marcelo Tosatti , kvm , Paolo Bonzini To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([209.132.183.28]:54686 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751901Ab3CMM3G (ORCPT ); Wed, 13 Mar 2013 08:29:06 -0400 Content-Disposition: inline In-Reply-To: <514064DA.1080009@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: 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.