summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2004-12-01 04:34:08 +0000
committerobrien <obrien@FreeBSD.org>2004-12-01 04:34:08 +0000
commitbbfe6568e2f0be5145349496b27f9de33b6e67b8 (patch)
tree7c458a4fd86779e59fae2693f4a8537e0af35d8d /sys/dev/acpica
parent834b0b8b466605e20c3c67f5b400237aa8e5714e (diff)
downloadFreeBSD-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.c12
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);
OpenPOWER on IntegriCloud