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>