kernel/acpi: Make interpreter slack mode a tunable.
authorSascha Wildner <saw@online.de>
Sun, 1 Jun 2014 14:06:11 +0000 (16:06 +0200)
committerSascha Wildner <saw@online.de>
Sun, 1 Jun 2014 14:06:11 +0000 (16:06 +0200)
Taken-from: FreeBSD

share/man/man4/acpi.4
sys/dev/acpica/acpi.c

index 989fac1..b352167 100644 (file)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man4/acpi.4,v 1.61.8.1 2009/04/15 03:14:26 kensmith Exp $
 .\"
-.Dd May 24, 2014
+.Dd June 1, 2014
 .Dt ACPI 4
 .Os
 .Sh NAME
@@ -207,6 +207,9 @@ debugging purposes.
 .It Va debug.acpi.enabled
 Selectively enables portions of ACPI that are disabled by default, for
 debugging purposes.
+.It Va debug.acpi.interpreter_slack
+Enable less strict ACPI implementations.
+Default is 1, ignore common BIOS mistakes.
 .It Va debug.acpi.max_threads
 Specify the number of task threads that are started on boot.
 Limiting this to 1 may help work around various BIOSes that cannot
index 5fbbef8..ae6877f 100644 (file)
@@ -241,6 +241,12 @@ SYSCTL_PROC(_debug_acpi, OID_AUTO, enable_debug_objects,
     CTLFLAG_RW | CTLTYPE_INT, NULL, 0, acpi_debug_objects_sysctl, "I",
     "Enable Debug objects");
 
+/* Allow the interpreter to ignore common mistakes in BIOS. */
+static int acpi_interpreter_slack = 1;
+TUNABLE_INT("debug.acpi.interpreter_slack", &acpi_interpreter_slack);
+SYSCTL_INT(_debug_acpi, OID_AUTO, interpreter_slack, CTLFLAG_RD,
+    &acpi_interpreter_slack, 1, "Turn on interpreter slack mode.");
+
 /* Power devices off and on in suspend and resume.  XXX Remove once tested. */
 static int acpi_do_powerstate = 1;
 TUNABLE_INT("debug.acpi.do_powerstate", &acpi_do_powerstate);
@@ -448,8 +454,8 @@ acpi_attach(device_t dev)
      * Set the globals from our tunables.  This is needed because ACPI-CA
      * uses UINT8 for some values and we have no tunable_byte.
      */
-    AcpiGbl_AutoSerializeMethods = acpi_auto_serialize_methods;
-    AcpiGbl_EnableInterpreterSlack = TRUE;
+    AcpiGbl_AutoSerializeMethods = acpi_auto_serialize_methods ? TRUE : FALSE;
+    AcpiGbl_EnableInterpreterSlack = acpi_interpreter_slack ? TRUE : FALSE;
     AcpiGbl_EnableAmlDebugObject = acpi_debug_objects ? TRUE : FALSE;
 
 #ifndef ACPI_DEBUG