summary refs log tree commit diff
path: root/drivers/acpi/bus.c
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2016-09-23 11:26:49 +0800
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-09-26 14:46:53 +0200
commit1ef356681ef412abfd93d1c36f15917a126833f5 (patch)
treef0f8b9370c0fbdbe40591c963a6a6f55a87d8816 /drivers/acpi/bus.c
parentf42106fe65e32bc0c2a50fe47819c4b658f9c4d7 (diff)
downloadlinux-1ef356681ef412abfd93d1c36f15917a126833f5.tar.gz
ACPI / bus: Adjust ACPI subsystem initialization for new table loading mode
This patch enables the following initialization order for the
new table loading mode (which is enabled by setting
acpi_gbl_parse_table_as_term_list to TRUE):

  1. Install default region handlers (SystemMemory, SystemIo, PciConfig,
     EmbeddedControl via ECDT) without evaluating _REG;

  2. Load the table and execute the module level AML opcodes instantly.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
[ rjw: Subject ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/bus.c')
-rw-r--r--drivers/acpi/bus.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 85b7d07fe5c8..658b4c4f169f 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -985,7 +985,8 @@ void __init acpi_early_init(void)
 		goto error0;
 	}
 
-	if (acpi_gbl_group_module_level_code) {
+	if (!acpi_gbl_parse_table_as_term_list &&
+	    acpi_gbl_group_module_level_code) {
 		status = acpi_load_tables();
 		if (ACPI_FAILURE(status)) {
 			printk(KERN_ERR PREFIX
@@ -1074,7 +1075,8 @@ static int __init acpi_bus_init(void)
 	status = acpi_ec_ecdt_probe();
 	/* Ignore result. Not having an ECDT is not fatal. */
 
-	if (!acpi_gbl_group_module_level_code) {
+	if (acpi_gbl_parse_table_as_term_list ||
+	    !acpi_gbl_group_module_level_code) {
 		status = acpi_load_tables();
 		if (ACPI_FAILURE(status)) {
 			printk(KERN_ERR PREFIX