diff options
author | obrien <obrien@FreeBSD.org> | 2004-12-01 04:34:08 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2004-12-01 04:34:08 +0000 |
commit | bbfe6568e2f0be5145349496b27f9de33b6e67b8 (patch) | |
tree | 7c458a4fd86779e59fae2693f4a8537e0af35d8d /sys/dev/acpica | |
parent | 834b0b8b466605e20c3c67f5b400237aa8e5714e (diff) | |
download | FreeBSD-src-bbfe6568e2f0be5145349496b27f9de33b6e67b8.zip FreeBSD-src-bbfe6568e2f0be5145349496b27f9de33b6e67b8.tar.gz |
Fix "Lock ACPI PCI link not exclusively locked
@sys/dev/acpica/acpi_pci_link.c:153" panic by backing out rev 1.37 in the SMP
case. It appears that on a dual-proc machine the assertions in the rev 1.37
commit log hold true.
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r-- | sys/dev/acpica/acpi_pci_link.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi_pci_link.c b/sys/dev/acpica/acpi_pci_link.c index 9b4ff66..13ab3b5 100644 --- a/sys/dev/acpica/acpi_pci_link.c +++ b/sys/dev/acpica/acpi_pci_link.c @@ -270,6 +270,9 @@ acpi_pci_link_dump(struct acpi_pci_link_softc *sc) struct link *link; int i, j; +#ifdef SMP + ACPI_SERIAL_ASSERT(pci_link); +#endif printf("Index IRQ Rtd Ref IRQs\n"); for (i = 0; i < sc->pl_num_links; i++) { link = &sc->pl_links[i]; @@ -293,6 +296,9 @@ acpi_pci_link_attach(device_t dev) int prslinks; sc = device_get_softc(dev); +#ifdef SMP + ACPI_SERIAL_BEGIN(pci_link); +#endif /* * Count the number of current resources so we know how big of @@ -377,9 +383,15 @@ acpi_pci_link_attach(device_t dev) device_printf(dev, "Links after disable:\n"); acpi_pci_link_dump(sc); } +#ifdef SMP + ACPI_SERIAL_END(pci_link); +#endif return (0); fail: +#ifdef SMP + ACPI_SERIAL_END(pci_link); +#endif for (i = 0; i < sc->pl_num_links; i++) if (sc->pl_links[i].l_irqs != NULL) free(sc->pl_links[i].l_irqs, M_PCI_LINK); |