ia64: ACPI PCI IRQ routing breakage
Nate Lawson
nate at root.org
Wed Aug 11 15:35:04 PDT 2004
Marcel Moolenaar wrote:
> Nate,
>
> I just tried to boot a kernel with the new ACPI PCI IRQ routing and
> things look very bad:
>
> Table 'SSDT' at 0xe00000003fdfc680
> Table 'SSDT' at 0xe00000003fdfc740
> Table 'SSDT' at 0xe00000003fdfc970
> Table 'SSDT' at 0xe00000003fdfcfe0
> Table 'SSDT' at 0xe00000003fdfd650
> Table 'SSDT' at 0xe00000003fdfdcc0
> Table 'SSDT' at 0xe00000003fdfe330
It's very hard to debug things when all your important devices are
hidden in SSDTs. I'd appreciate it if someone took me up on adding SSDT
support to acpidump.
> acpi0: <HP> on motherboard
> acpi0: [GIANT-LOCKED]
> acpi0: Power Button (fixed)
> acpi0: Sleep Button (fixed)
>
> pcib0: <ACPI Host-PCI bridge> on acpi0
> ACPI PCI link initial configuration:
> pci0: <ACPI PCI bus> on pcib0
> pci0: physical bus=0
> map[10]: type 1, range 32, base 80023000, size 12, enabled
> found-> vendor=0x1033, dev=0x0035, revid=0x41
> bus=0, slot=1, func=0
> class=0c-03-10, hdrtype=0x00, mfdev=1
> cmdreg=0x0146, statreg=0x0210, cachelnsz=32 (dwords)
> lattimer=0x80 (3840 ns), mingnt=0x01 (250 ns), maxlat=0x2a (10500 ns)
> intpin=a, irq=0
> powerspec 2 supports D0 D1 D2 D3 current D0
> map[10]: type 1, range 32, base 80022000, size 12, enabled
[...]
>
> If you don't have any suggestions from the top of your head, then
> please could you back it out so that we can work out what's going
> on without having ia64 completely bOrked. It not just inconvenient
> for me. It's a major blocker. In that light I'd hoped to be given
> more time for testing.
It's likely your link devices don't like being called with _DIS. Try
the attached patch.
-Nate
-------------- next part --------------
Index: acpi_pci_link.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/acpica/acpi_pci_link.c,v
retrieving revision 1.20
diff -u -r1.20 acpi_pci_link.c
--- acpi_pci_link.c 11 Aug 2004 20:37:24 -0000 1.20
+++ acpi_pci_link.c 11 Aug 2004 22:33:09 -0000
@@ -377,12 +377,13 @@
* run _DIS (i.e., the method doesn't exist), assume the initial
* IRQ was routed by the BIOS.
*/
+#if 0
if (ACPI_SUCCESS(AcpiEvaluateObject(handle, "_DIS", NULL, NULL))) {
link->current_irq = 0;
link->flags = ACPI_LINK_NONE;
} else {
+#endif
link->flags = ACPI_LINK_ROUTED;
- }
error = AcpiGetPossibleResources(handle, &buf);
if (ACPI_FAILURE(error)) {
More information about the freebsd-current
mailing list