From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx1.redhat.com ([209.132.183.28]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bz6Wd-0007OX-UM for kexec@lists.infradead.org; Tue, 25 Oct 2016 18:32:41 +0000 Message-ID: <580FA530.6040905@redhat.com> Date: Tue, 25 Oct 2016 14:32:16 -0400 From: Prarit Bhargava MIME-Version: 1.0 Subject: Re: [PATCH] arch/x86: Don't try to poke disabled/non-existent APIC References: <1477102684-5092-1-git-send-email-ville.syrjala@linux.intel.com> In-Reply-To: <1477102684-5092-1-git-send-email-ville.syrjala@linux.intel.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: ville.syrjala@linux.intel.com, linux-kernel@vger.kernel.org Cc: Juergen Gross , Len Brown , Andi Kleen , Peter Zijlstra , dyoung@redhat.com, x86@kernel.org, kexec@lists.infradead.org, stable@vger.kernel.org, Ingo Molnar , Eric Biederman , "H. Peter Anvin" , Thomas Gleixner , Borislav Petkov , Jiri Olsa CgpPbiAxMC8yMS8yMDE2IDEwOjE4IFBNLCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IEFwcGFyZW50bHkgdHJ5aW5nIHRvIHBva2UgYSBkaXNhYmxlZCBvciBub24tZXhp c3RlbnQgQVBJQwo+IGxlYWRzIHRvIGEgYm94IHRoYXQgZG9lc24ndCBldmVuIGJvb3QuIExldCdz IG5vdCBkbyB0aGF0Lgo+IAo+IE5vIHJlYWwgY2x1ZSBpZiB0aGlzIGlzIHRoZSByaWdodCBmaXgs IGJ1dCBhdCBsZWFzdCBteQo+IFAzIG1hY2hpbmUgYm9vdHMgYWdhaW4uCj4gCj4gQ2M6IHN0YWJs ZUB2Z2VyLmtlcm5lbC5vcmcKPiBDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+Cj4g Q2M6ICJILiBQZXRlciBBbnZpbiIgPGhwYUB6eXRvci5jb20+Cj4gQ2M6IHg4NkBrZXJuZWwub3Jn Cj4gQ2M6IFByYXJpdCBCaGFyZ2F2YSA8cHJhcml0QHJlZGhhdC5jb20+Cj4gQ2M6IFBldGVyIFpp amxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KPiBDYzogTGVuIEJyb3duIDxsZW4uYnJvd25A aW50ZWwuY29tPgo+IENjOiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+Cj4gQ2M6IEFuZGkg S2xlZW4gPGFrQGxpbnV4LmludGVsLmNvbT4KPiBDYzogSmlyaSBPbHNhIDxqb2xzYUByZWRoYXQu Y29tPgo+IENjOiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Cj4gQ2M6IGR5b3VuZ0By ZWRoYXQuY29tCj4gQ2M6IEVyaWMgQmllZGVybWFuIDxlYmllZGVybUB4bWlzc2lvbi5jb20+Cj4g Q2M6IGtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKPiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4 QGxpbnV0cm9uaXguZGU+Cj4gRml4ZXM6IDJhNTFmZTA4M2ViYSAoImFyY2gveDg2OiBIYW5kbGUg bm9uIGVudW1lcmF0ZWQgQ1BVIGFmdGVyIHBoeXNpY2FsIGhvdHBsdWciKQo+IFNpZ25lZC1vZmYt Ynk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0t Cj4gIGFyY2gveDg2L2tlcm5lbC9zbXBib290LmMgfCAxNiArKysrKysrKystLS0tLS0tCj4gIDEg ZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zbXBib290LmMgYi9hcmNoL3g4Ni9rZXJuZWwvc21wYm9v dC5jCj4gaW5kZXggOTUxZjA5M2E5NmZlLi40MmY1ZWI3YjRmNmMgMTAwNjQ0Cj4gLS0tIGEvYXJj aC94ODYva2VybmVsL3NtcGJvb3QuYwo+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9zbXBib290LmMK PiBAQCAtMTQwOSwxNSArMTQwOSwxNyBAQCBfX2luaXQgdm9pZCBwcmVmaWxsX3Bvc3NpYmxlX21h cCh2b2lkKQo+ICAKPiAgCS8qIE5vIGJvb3QgcHJvY2Vzc29yIHdhcyBmb3VuZCBpbiBtcHRhYmxl IG9yIEFDUEkgTUFEVCAqLwo+ICAJaWYgKCFudW1fcHJvY2Vzc29ycykgewo+IC0JCWludCBhcGlj aWQgPSBib290X2NwdV9waHlzaWNhbF9hcGljaWQ7Cj4gLQkJaW50IGNwdSA9IGhhcmRfc21wX3By b2Nlc3Nvcl9pZCgpOwo+ICsJCWlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVBJQykpIHsK CgpJdCBsb29rcyBva2F5IHRvIGdhdGUgb24gWDg2X0ZFQVRVUkVfQVBJQywgYnV0IG5vdCBzdXJl IGlmIGl0IHNob3VsZCBiZQoKICAgICBjcHVfaGFzKCZjcHVfZGF0YSgwKSwgWDg2X0ZFQVRVUkVf QVBJQykKCnNpbmNlIHNtcF9zdG9yZV9ib290X2NwdV9pbmZvKCkgd2FzIGFscmVhZHkgY2FsbGVk LgoKdGdseD8KClAuCgoKCgo+ICsJCQlpbnQgYXBpY2lkID0gYm9vdF9jcHVfcGh5c2ljYWxfYXBp Y2lkOwo+ICsJCQlpbnQgY3B1ID0gaGFyZF9zbXBfcHJvY2Vzc29yX2lkKCk7Cj4gIAo+IC0JCXBy X3dhcm4oIkJvb3QgQ1BVIChpZCAlZCkgbm90IGxpc3RlZCBieSBCSU9TXG4iLCBjcHUpOwo+ICsJ CQlwcl93YXJuKCJCb290IENQVSAoaWQgJWQpIG5vdCBsaXN0ZWQgYnkgQklPU1xuIiwgY3B1KTsK PiAgCj4gLQkJLyogTWFrZSBzdXJlIGJvb3QgY3B1IGlzIGVudW1lcmF0ZWQgKi8KPiAtCQlpZiAo YXBpYy0+Y3B1X3ByZXNlbnRfdG9fYXBpY2lkKDApID09IEJBRF9BUElDSUQgJiYKPiAtCQkgICAg YXBpYy0+YXBpY19pZF92YWxpZChhcGljaWQpKQo+IC0JCQlnZW5lcmljX3Byb2Nlc3Nvcl9pbmZv KGFwaWNpZCwgYm9vdF9jcHVfYXBpY192ZXJzaW9uKTsKPiArCQkJLyogTWFrZSBzdXJlIGJvb3Qg Y3B1IGlzIGVudW1lcmF0ZWQgKi8KPiArCQkJaWYgKGFwaWMtPmNwdV9wcmVzZW50X3RvX2FwaWNp ZCgwKSA9PSBCQURfQVBJQ0lEICYmCj4gKwkJCSAgICBhcGljLT5hcGljX2lkX3ZhbGlkKGFwaWNp ZCkpCj4gKwkJCQlnZW5lcmljX3Byb2Nlc3Nvcl9pbmZvKGFwaWNpZCwgYm9vdF9jcHVfYXBpY192 ZXJzaW9uKTsKPiArCQl9Cj4gIAo+ICAJCWlmICghbnVtX3Byb2Nlc3NvcnMpCj4gIAkJCW51bV9w cm9jZXNzb3JzID0gMTsKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938498AbcJYScU (ORCPT ); Tue, 25 Oct 2016 14:32:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58708 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932312AbcJYScT (ORCPT ); Tue, 25 Oct 2016 14:32:19 -0400 Message-ID: <580FA530.6040905@redhat.com> Date: Tue, 25 Oct 2016 14:32:16 -0400 From: Prarit Bhargava User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: ville.syrjala@linux.intel.com, linux-kernel@vger.kernel.org CC: stable@vger.kernel.org, Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Peter Zijlstra , Len Brown , Borislav Petkov , Andi Kleen , Jiri Olsa , Juergen Gross , dyoung@redhat.com, Eric Biederman , kexec@lists.infradead.org, Thomas Gleixner Subject: Re: [PATCH] arch/x86: Don't try to poke disabled/non-existent APIC References: <1477102684-5092-1-git-send-email-ville.syrjala@linux.intel.com> In-Reply-To: <1477102684-5092-1-git-send-email-ville.syrjala@linux.intel.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 25 Oct 2016 18:32:18 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/21/2016 10:18 PM, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä > > Apparently trying to poke a disabled or non-existent APIC > leads to a box that doesn't even boot. Let's not do that. > > No real clue if this is the right fix, but at least my > P3 machine boots again. > > Cc: stable@vger.kernel.org > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: x86@kernel.org > Cc: Prarit Bhargava > Cc: Peter Zijlstra > Cc: Len Brown > Cc: Borislav Petkov > Cc: Andi Kleen > Cc: Jiri Olsa > Cc: Juergen Gross > Cc: dyoung@redhat.com > Cc: Eric Biederman > Cc: kexec@lists.infradead.org > Cc: Thomas Gleixner > Fixes: 2a51fe083eba ("arch/x86: Handle non enumerated CPU after physical hotplug") > Signed-off-by: Ville Syrjälä > --- > arch/x86/kernel/smpboot.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c > index 951f093a96fe..42f5eb7b4f6c 100644 > --- a/arch/x86/kernel/smpboot.c > +++ b/arch/x86/kernel/smpboot.c > @@ -1409,15 +1409,17 @@ __init void prefill_possible_map(void) > > /* No boot processor was found in mptable or ACPI MADT */ > if (!num_processors) { > - int apicid = boot_cpu_physical_apicid; > - int cpu = hard_smp_processor_id(); > + if (boot_cpu_has(X86_FEATURE_APIC)) { It looks okay to gate on X86_FEATURE_APIC, but not sure if it should be cpu_has(&cpu_data(0), X86_FEATURE_APIC) since smp_store_boot_cpu_info() was already called. tglx? P. > + int apicid = boot_cpu_physical_apicid; > + int cpu = hard_smp_processor_id(); > > - pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu); > + pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu); > > - /* Make sure boot cpu is enumerated */ > - if (apic->cpu_present_to_apicid(0) == BAD_APICID && > - apic->apic_id_valid(apicid)) > - generic_processor_info(apicid, boot_cpu_apic_version); > + /* Make sure boot cpu is enumerated */ > + if (apic->cpu_present_to_apicid(0) == BAD_APICID && > + apic->apic_id_valid(apicid)) > + generic_processor_info(apicid, boot_cpu_apic_version); > + } > > if (!num_processors) > num_processors = 1; >