page fault panic in device_get_softc/acpi_pcib_route_interrupt
John Baldwin
jhb at FreeBSD.org
Fri Jan 7 14:27:50 PST 2005
On Friday 07 January 2005 05:07 pm, Pawel Worach wrote:
> Nate Lawson wrote:
> > Pawel, can you split out the lines so we can isolate where the panic is
> > occurring? At the end of acpi_pcib.c, before the call to
> > acpi_pci_link_route_interrupt(), add:
> >
> > {
> > device_t foo = acpi_get_device(lnkdev);
> > printf("acpi handle %p, name %s\n", lnkdev, lnkdev? acpi_name(lnkdev) :
> > "none");
> > printf("link device: %p index %d\n", foo, prt->SourceIndex);
> > printf("device parent %s, state %x\n",
> > device_get_nameunit(device_get_parent(foo)), device_get_state(foo));
> > }
>
> Doesn't look like device_get_state() likes this device either. Is something
> strange with the trace below? I'm certain I added the printf's right above
> http://fxr.watson.org/fxr/source/dev/acpica/acpi_pcib.c#L257 so shouldn't
> there be a frame with acpi_pcib_route_interrupt() in between the
> device_get_state() and acpi_pcib_acpi_route_interrupt() frames?
>
> acpi_MatchHid() Hid: PNP0A03
> acpi_MatchHid() Hid: PNP0A03
> pcib0: <ACPI Host-PCI bridge> on acpi0
> pci0: <ACPI PCI bus> on pcib0
> acpi handle 0xc1ec8d20, name \LPUS
> link device: 0 index 0
So it appears the handle doesn't have a device_t associated with it. :( The
next step is to maybe do a printf in the code that adds the device_t's to see
if one shows up for this handle, and if the handle is the same for the given
name. The stack trace weirdness appears to be a recently added(?) bug in ddb
in that it now sometimes skips over some frames. :(
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-current
mailing list