ACPICA: Tables: Avoid SSDT installation with acpi_gbl_disable_ssdt_table_load.
authorLv Zheng <lv.zheng@intel.com>
Fri, 4 Apr 2014 04:39:11 +0000 (12:39 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 20 Apr 2014 20:59:39 +0000 (22:59 +0200)
It is reported that when acpi_gbl_disable_ssdt_table_load is specified, user
still can see it installed into /sys/firmware/acpi/tables on Linux boxes.
This is because the option only stops table "loading", but doesn't stop
table "installing", thus it is still in the acpi_gbl_root_table_list. With
previous cleanups, it is possible to prevent SSDT installations to make
it not such confusing.  The global variable is also renamed.  Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
[rjw: Subject]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/kernel-parameters.txt
drivers/acpi/acpica/acglobal.h
drivers/acpi/acpica/tbinstal.c
drivers/acpi/acpica/tbxfload.c
drivers/acpi/osl.c
include/acpi/acpixf.h

index 03e50b4..fbb58d7 100644 (file)
@@ -237,7 +237,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        This feature is enabled by default.
                        This option allows to turn off the feature.
 
-       acpi_no_auto_ssdt       [HW,ACPI] Disable automatic loading of SSDT
+       acpi_no_static_ssdt     [HW,ACPI]
+                       Disable installation of static SSDTs at early boot time
+                       By default, SSDTs contained in the RSDT/XSDT will be
+                       installed automatically and they will appear under
+                       /sys/firmware/acpi/tables.
+                       This option turns off this feature.
+                       Note that specifying this option does not affect
+                       dynamic table installation which will install SSDT
+                       tables to /sys/firmware/acpi/tables/dynamic.
 
        acpica_no_return_repair [HW, ACPI]
                        Disable AML predefined validation mechanism
index 71bb5b5..0cac564 100644 (file)
@@ -160,10 +160,10 @@ ACPI_INIT_GLOBAL(u8, acpi_gbl_truncate_io_addresses, FALSE);
 ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_auto_repair, FALSE);
 
 /*
- * Optionally do not load any SSDTs from the RSDT/XSDT during initialization.
+ * Optionally do not install any SSDTs from the RSDT/XSDT during initialization.
  * This can be useful for debugging ACPI problems on some machines.
  */
-ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_ssdt_table_load, FALSE);
+ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_ssdt_table_install, FALSE);
 
 /*
  * We keep track of the latest version of Windows that has been requested by
index cf1ccc5..de10d32 100644 (file)
@@ -580,6 +580,18 @@ acpi_tb_install_non_fixed_table(acpi_physical_address address,
                return_ACPI_STATUS(status);
        }
 
+       /*
+        * Optionally do not load any SSDTs from the RSDT/XSDT. This can
+        * be useful for debugging ACPI problems on some machines.
+        */
+       if (!reload && acpi_gbl_disable_ssdt_table_install &&
+           ACPI_COMPARE_NAME(&new_table_desc.signature, ACPI_SIG_SSDT)) {
+               ACPI_INFO((AE_INFO, "Ignoring installation of %4.4s at %p",
+                          new_table_desc.signature.ascii, ACPI_CAST_PTR(void,
+                                                                        address)));
+               goto release_and_exit;
+       }
+
        /* Validate and verify a table before installation */
 
        status = acpi_tb_verify_table(&new_table_desc, NULL);
Simple merge
Simple merge
Simple merge