Sun Sep 23 00:26:26 2012 UTC ()
re-enable the code to disable link devices at startup, ie. revert rev 1.3.
this fixes PCI interrupts on some systems (eg. HP XW9400) and we suspect that
the problems which led to the original change were caused by buggy early
implementations of ACPI, which are now ignored by date.


(chs)
diff -r1.18 -r1.19 src/sys/dev/acpi/acpi_pci_link.c

cvs diff -r1.18 -r1.19 src/sys/dev/acpi/acpi_pci_link.c (expand / switch to context diff)
--- src/sys/dev/acpi/acpi_pci_link.c 2010/04/23 15:52:26 1.18
+++ src/sys/dev/acpi/acpi_pci_link.c 2012/09/23 00:26:25 1.19
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_pci_link.c,v 1.18 2010/04/23 15:52:26 jruoho Exp $	*/
+/*	$NetBSD: acpi_pci_link.c,v 1.19 2012/09/23 00:26:25 chs Exp $	*/
 
 /*-
  * Copyright (c) 2002 Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_pci_link.c,v 1.18 2010/04/23 15:52:26 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_pci_link.c,v 1.19 2012/09/23 00:26:25 chs Exp $");
 
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -533,13 +533,11 @@
 	 * run _DIS (i.e., the method doesn't exist), assume the initial
 	 * IRQ was routed by the BIOS.
 	 */
-#if 0	/* XXX causes spontaneaous resets on some systems. Disabled for now. */
 	if (ACPI_SUCCESS(AcpiEvaluateObject(sc->pl_handle, "_DIS", NULL,
 	    NULL)))
 		for (i = 0; i < sc->pl_num_links; i++)
 			sc->pl_links[i].l_irq = PCI_INVALID_IRQ;
 	else
-#endif
 		for (i = 0; i < sc->pl_num_links; i++)
 			if (PCI_INTERRUPT_VALID(sc->pl_links[i].l_irq))
 				sc->pl_links[i].l_routed = TRUE;