From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH 2/2] KVM: x86: allow BSP to handle INIT IPIs like APs do Date: Mon, 8 Feb 2016 16:22:04 +0100 Message-ID: <56B8B29C.8060600@web.de> References: <1454539876-8310-1-git-send-email-brogers@suse.com> <1454539876-8310-2-git-send-email-brogers@suse.com> <56B8B057.5050900@redhat.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="nPneV61DiA6Blc6s9TmosIBq1KhNiNn8s" Cc: namit@cs.technion.ac.il To: Paolo Bonzini , Bruce Rogers , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <56B8B057.5050900@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --nPneV61DiA6Blc6s9TmosIBq1KhNiNn8s Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 2016-02-08 16:12, Paolo Bonzini wrote: >=20 >=20 > On 03/02/2016 23:51, Bruce Rogers wrote: >> The INIT IPI event handler special cases the boot-strap processor >> (BSP) handling, avoiding the same mp state handling which is done for >> the other (AP) processors. Debugging a linux guest usage scenario of >> avoiding a reboot through the bios for a crash on any processor via eg= : >> kexec -p /boot/vmlinuz --initrd=3D/boot/initrd --append=3D"$(cat /proc= /cmdline)\ >> maxcpus=3D1" led to identifying this change as the needed fix. >> >> With this change, an AP can now startup the BSP without error. >> >> Signed-off-by: Bruce Rogers >> --- >> arch/x86/kvm/lapic.c | 5 +---- >> 1 file changed, 1 insertion(+), 4 deletions(-) >> >> diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c >> index 36591fa..eda6bfb 100644 >> --- a/arch/x86/kvm/lapic.c >> +++ b/arch/x86/kvm/lapic.c >> @@ -2170,10 +2170,7 @@ void kvm_apic_accept_events(struct kvm_vcpu *vc= pu) >> if (test_bit(KVM_APIC_INIT, &pe)) { >> kvm_lapic_reset(vcpu, true); >> kvm_vcpu_reset(vcpu, true); >> - if (kvm_vcpu_is_bsp(apic->vcpu)) >> - vcpu->arch.mp_state =3D KVM_MP_STATE_RUNNABLE; >> - else >> - vcpu->arch.mp_state =3D KVM_MP_STATE_INIT_RECEIVED; >> + vcpu->arch.mp_state =3D KVM_MP_STATE_INIT_RECEIVED; >> } >> if (test_bit(KVM_APIC_SIPI, &pe) && >> vcpu->arch.mp_state =3D=3D KVM_MP_STATE_INIT_RECEIVED) { >> >=20 > KVM_MP_STATE_INIT_RECEIVED is what Intel calls the "wait for SIPI" > state. The BSP never gets a SIPI, it goes straight to 0xFFFFFFF0 > instead. Can you explain the problem more in detail? I suspect this is about sending INIT-SIPI from another CPU, directed to the BSP, isn't it? We may have to differentiate between CPU (including system) reset and that IPI case. Jan --nPneV61DiA6Blc6s9TmosIBq1KhNiNn8s Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEARECAAYFAla4spwACgkQitSsb3rl5xQEAgCfbV0ObR+iWTjIlUon2ehvRL83 iBIAoOOjTHnj+99obJ7kkT98a59g3vop =0xlz -----END PGP SIGNATURE----- --nPneV61DiA6Blc6s9TmosIBq1KhNiNn8s--