Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jul 2010 09:33:17 -0700
From:      mdf@FreeBSD.org
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Panic booting vmware i386 after SRAT update
Message-ID:  <AANLkTi=cBLmTx84%2BKMfVoYxds1XRCiB43dJ4UF7S7wPm@mail.gmail.com>
In-Reply-To: <201007291018.07112.jhb@freebsd.org>
References:  <AANLkTimZj4ocqiiUzXJhwkY6nRj_sGJ2h%2BQAQKvC9wWi@mail.gmail.com> <201007291018.07112.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jul 29, 2010 at 7:18 AM, John Baldwin <jhb@freebsd.org> wrote:
> On Wednesday, July 28, 2010 1:37:42 pm mdf@freebsd.org wrote:
>> I have a 2 cpu virtual image of FreeBSD current. =A0It panics during
>> boot after building in the NUMA support.
>>
>> I'll transcribe the SRAT bootverbose messages and panic message as best =
I can.
>>
>> Table 'SRAT' at 0xfef07f6
>> SRAT: Found table at 0xfef07f6
>> SRAT: Found memory domain 0 addr 0 len a0000: enabled
>> SRAT: Found memory domain 0 addr 100000 len ff00000: enabled
>>
>> then some MADT: messages about finding cpu 0 and 1
>>
>> =A0cpu0 (BSP): APIC ID: =A00
>> =A0cpu1 (AP): APIC ID: =A01
>> panic: SRAT: CPU with APIC ID 0 is not known
>>
>> I'm playing around now with trying to figure out what went missing,
>> but I thought I'd send this out now.
>
> Hmm, check_domains() in srat.c should reject the SRAT table in this case.
> Oh, I see the problem, try this:
>
> Index: srat.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- srat.c =A0 =A0 =A0(revision 210552)
> +++ srat.c =A0 =A0 =A0(working copy)
> @@ -150,7 +150,8 @@
> =A0 =A0 =A0 =A0for (i =3D 0; i < num_mem; i++) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0found =3D 0;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0for (j =3D 0; j <=3D MAX_APIC_ID; j++)
> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (cpus[j].domain =3D=3D m=
em_info[i].domain) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (cpus[j].enabled &&
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 cpus[j].domain =3D=
=3D mem_info[i].domain) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cpus[j].ha=
s_memory =3D 1;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0found++;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}

This appears to fix the issue for me.

Thanks,
matthew



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=cBLmTx84%2BKMfVoYxds1XRCiB43dJ4UF7S7wPm>