page fault panic in device_get_softc/acpi_pcib_route_interrupt
Pawel Worach
pawel.worach at telia.com
Fri Jan 7 20:14:10 PST 2005
Nate Lawson wrote:
> Are you sure you put the printf _after_ AcpiAttachData? It's surprising
> that none of the handles has a device attached. This is not the primary
> problem but is something we need to fix if you put the printf in the
> right spot.
sys/dev/acpica/acpi.c:acpi_probe_child() around line 1529
/* Associate the handle with the device_t and vice versa. */
acpi_set_handle(child, handle);
AcpiAttachData(handle, acpi_fake_objhandler, child);
printf("adding child %s, dev %p\n", acpi_name(handle),
acpi_get_device(child));
>> adding child \_SB_.PCI1, dev 0
>> adding child \_SB_.PCI2, dev 0
>> adding child \_SB_.PCI3, dev 0
>> adding child \_SB_.PCI4, dev 0
>> acpi0: reservation of 460, 2 (4) failed
>> Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000
>> acpi_timer0: <32-bit timer at 3.579545MHz> port 0x488-0x48b on acpi0
>> cpu0: <ACPI CPU> on acpi0
>> cpu1: <ACPI CPU> on acpi0
>> pcib0: <ACPI Host-PCI bridge> on acpi0
>> pci0: <ACPI PCI bus> on pcib0
>> acpi handle 0xc1ec8d20, name \LPUS
>> link device: 0 index 0
>
>
> Ok, I also know what the main issue is. Your link devices are in \ but
> it's invalid to have devices outside of \_SB. We only scan a few sub
> namespaces of \ (see acpi_probe_children) so your links are never
> probed/attached. The workaround is to scan all of \ instead of the
> subspaces. This is very wrong from the acpi standards but probably
> won't hurt anything. Try the attached patch. This worked before
> because we probed links directly through _PRT and the reference was
> correct there, so it didn't matter that the link was in \ instead of \_SB.
>
>
> ------------------------------------------------------------------------
>
> --- acpi.c.orig 2005-01-07 19:18:56.000000000 -0800
> +++ acpi.c 2005-01-07 19:19:22.000000000 -0800
> @@ -1403,7 +1403,7 @@
> ACPI_HANDLE parent;
> ACPI_STATUS status;
> int i;
> - static char *scopes[] = {"\\_PR_", "\\_TZ_", "\\_SI", "\\_SB_", NULL};
> + static char *scopes[] = {"\\", NULL};
>
> ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
>
Ok, this fixed the ACPI panic. Thank you! :)
Now I'm back to the original problem with the mpt device attachment I started to
investigate before, seems to be PCI and resource allocation related. (New thread
about that though).
--
Pawel
More information about the freebsd-current
mailing list