Date: Fri, 25 Jan 2008 08:37:49 -0500 From: John Baldwin <jhb@freebsd.org> To: Pete French <petefrench@ticketswitch.com> Cc: freebsd-stable@freebsd.org Subject: Re: panic: vm_fault: fault on nofualt entry, addr: 81423000 Message-ID: <200801250837.49793.jhb@freebsd.org> In-Reply-To: <E1JIO5y-0000Mb-Ky@dilbert.ticketswitch.com> References: <E1JIO5y-0000Mb-Ky@dilbert.ticketswitch.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 25 January 2008 07:55:46 am Pete French wrote: > > Hmm, so that's fine. What pointer is returned by madt_map_table? > > 0x800e7610 That isn't page-aligned which is unexpected, though it should still work fine. > I also put some prints in afterwards to try and see how far through > the loop it was getting: > > count = (xsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) / > sizeof(UINT64); > printf("DEBUG: count is %d\n", count); > for (i = 0; i < count; i++) { > printf("DEBUG: probing %d - offset %p\n", > i, xsdt->TableOffsetEntry[i]); > if (madt_probe_table(xsdt->TableOffsetEntry[i])) > break; > } > > The output is interesting - I get count printed as 6, but then nothing > else, just the panic. Which leads me to believe that it is the access > to xsdt->TableOffsetEntry[0] which is causing the panic. Hmm, that is odd. The header.Length and the the actual table should all be in the same page, so you shouldn't be getting a page fault. Can you add some printfs to madt_map() to see what the final starting (pa, length) are before the call to pmap_kenter_temporary() and then add a printf for each iteration of the while loop showing the (pa, la, remaining length)? -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801250837.49793.jhb>