Index: share/man/man4/acpi.4 =================================================================== RCS file: /cvsroot/src/share/man/man4/acpi.4,v retrieving revision 1.77 diff -p -r1.77 acpi.4 *** share/man/man4/acpi.4 13 Jul 2014 12:08:32 -0000 1.77 --- share/man/man4/acpi.4 8 Sep 2014 23:49:36 -0000 *************** *** 24,30 **** .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" ! .Dd July 13, 2014 .Dt ACPI 4 .Os .Sh NAME --- 24,30 ---- .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" ! .Dd September 8, 2014 .Dt ACPI 4 .Os .Sh NAME *************** *** 39,44 **** --- 39,45 ---- .Cd options ACPI_DSDT_OVERRIDE .Cd options ACPI_DSDT_FILE="" .Cd options ACPI_BLACKLIST_YEAR=2000 + .Cd options ACPI__DIS_IS_BROKEN .Sh DESCRIPTION .Nx provides machine-independent bus support for *************** is not specified, default to *** 97,102 **** --- 98,110 ---- in the build directory. .It Dv ACPI_BLACKLIST_YEAR=2000 Do not use ACPI with any BIOS made on or before the specified year. + .It Dv ACPI__DIS_IS_BROKEN + Do not call the ACPI "_DIS" method to disable interrupt links. + This may be required on specific + .Dq nForce4 + chipset systems, which hard hang when this method is called instead of + having it fail gracefully. + .Dq .El .Sh SYSCTL SUPPORT Few *************** among others. *** 658,660 **** --- 666,672 ---- Most of the .Tn ACPI power management functionalities are not implemented. + .Pp + The + .Dv ACPI__DIS_IS_BROKEN + option should not be necessary. Index: sys/dev/acpi/acpi_pci_link.c =================================================================== RCS file: /cvsroot/src/sys/dev/acpi/acpi_pci_link.c,v retrieving revision 1.21 diff -p -r1.21 acpi_pci_link.c *** sys/dev/acpi/acpi_pci_link.c 14 Apr 2014 01:56:18 -0000 1.21 --- sys/dev/acpi/acpi_pci_link.c 8 Sep 2014 23:49:36 -0000 *************** acpi_pci_link_attach(struct acpi_pci_lin *** 533,543 **** --- 533,545 ---- * run _DIS (i.e., the method doesn't exist), assume the initial * IRQ was routed by the BIOS. */ + #ifndef ACPI__DIS_IS_BROKEN 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; Index: sys/dev/acpi/files.acpi =================================================================== RCS file: /cvsroot/src/sys/dev/acpi/files.acpi,v retrieving revision 1.94 diff -p -r1.94 files.acpi *** sys/dev/acpi/files.acpi 1 Apr 2014 17:47:36 -0000 1.94 --- sys/dev/acpi/files.acpi 8 Sep 2014 23:49:36 -0000 *************** include "dev/acpi/acpica/files.acpica" *** 4,9 **** --- 4,10 ---- defflag opt_acpi.h ACPIVERBOSE ACPI_DEBUG ACPI_ACTIVATE_DEV ACPI_DSDT_OVERRIDE ACPI_SCANPCI ACPI_BREAKPOINT + ACPI__DIS_IS_BROKEN defparam opt_acpi.h ACPI_DSDT_FILE := "\"/dev/null\"" defparam opt_acpi.h ACPI_BLACKLIST_YEAR = 2000