Date: Mon, 2 May 2016 17:17:49 -0500 From: Eric van Gyzen <vangyzen@FreeBSD.org> To: Bill O'Hanlon <bill.ohanlon@gmail.com>, John Baldwin <jhb@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: Kernel panic from recent build Message-ID: <5727D20D.9090502@FreeBSD.org> In-Reply-To: <CAN3DDYr9qB%2B_nYV3ipksff0y2miX5egwx1Hbva6j-Jf2%2BUoaDw@mail.gmail.com> References: <CAN3DDYpfN0_F5akew5jccXO9bCQoVLN75v86ZJ=OgvTNfMSmZw@mail.gmail.com> <1616736.1pUkklcWcu@ralph.baldwin.cx> <CAN3DDYr9qB%2B_nYV3ipksff0y2miX5egwx1Hbva6j-Jf2%2BUoaDw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 05/02/2016 16:14, Bill O'Hanlon wrote: > On Mon, May 2, 2016 at 3:55 PM, John Baldwin <jhb@freebsd.org> wrote: > >> On Monday, May 02, 2016 01:35:54 PM Bill O'Hanlon wrote: >>> >>> IMG_20160502_130335.jpg >>> < >> https://drive.google.com/file/d/1dtJxTwWXfhXVUUtn1Vvpzh3laJt7AILyCg/view?usp=drive_web >>> >>> I'm getting the following panic from a recent (May 2, 2016) build. >>> panic: Duplicate local APIC ID 0 >>> >>> The system is a Dell Precision T5500 with generic factory BIOS settings. >>> It has run previous builds without event for several years. >>> >>> I'm attaching a link to a photo of the screen for added details. >> Try setting 'hint.srat.0.disabled=1' at the loader prompt and then grab >> the output of 'acpidump -t' on your next boot. The SRAT table used by >> the NUMA code appears to be corrupted by your BIOS. >> >> -- >> John Baldwin >> > > That allowed me to boot. I'm attaching the output of 'acpidump -t'. > Thanks! Bill, Do you have the time and interest to test this patch? If so, remove the line that you added to /boot/loader.conf so the patch actually gets exercised. Eric diff --git a/sys/x86/acpica/srat.c b/sys/x86/acpica/srat.c index 85f1922..1d0f73d 100644 --- a/sys/x86/acpica/srat.c +++ b/sys/x86/acpica/srat.c @@ -201,8 +201,12 @@ srat_parse_entry(ACPI_SUBTABLE_HEADER *entry, void *arg) "enabled" : "disabled"); if (!(cpu->Flags & ACPI_SRAT_CPU_ENABLED)) break; - KASSERT(!cpus[cpu->ApicId].enabled, - ("Duplicate local APIC ID %u", cpu->ApicId)); + if (cpus[cpu->ApicId].enabled) { + printf("SRAT: Duplicate local APIC ID %u\n", + cpu->ApicId); + *(int *)arg = ENXIO; + break; + } cpus[cpu->ApicId].domain = domain; cpus[cpu->ApicId].enabled = 1; break;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5727D20D.9090502>