Skip site navigation (1)Skip section navigation (2)
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>