Browse Source

Revert "ACPICA: Namespace: Fix deadlock triggered by MLC support in dynamic table loading"

Revert commit 2f38b1b16d92 (ACPICA: Namespace: Fix deadlock triggered by
MLC support in dynamic table loading) that attempted to fix a deadlock
issue introduced by a previous commit, but it led to a lock ordering
inconsistency that caused further problems to appear.

Fixes: 2f38b1b16d92 (ACPICA: Namespace: Fix deadlock triggered by MLC support in dynamic table loading)
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Rafael J. Wysocki 9 years ago
parent
commit
ffd8d61845
2 changed files with 2 additions and 9 deletions
  1. 0 2
      drivers/acpi/acpica/exconfig.c
  2. 2 7
      drivers/acpi/acpica/nsparse.c

+ 0 - 2
drivers/acpi/acpica/exconfig.c

@@ -108,9 +108,7 @@ acpi_ex_add_table(u32 table_index,
 
 
 	/* Add the table to the namespace */
 	/* Add the table to the namespace */
 
 
-	acpi_ex_exit_interpreter();
 	status = acpi_ns_load_table(table_index, parent_node);
 	status = acpi_ns_load_table(table_index, parent_node);
-	acpi_ex_enter_interpreter();
 	if (ACPI_FAILURE(status)) {
 	if (ACPI_FAILURE(status)) {
 		acpi_ut_remove_reference(obj_desc);
 		acpi_ut_remove_reference(obj_desc);
 		*ddb_handle = NULL;
 		*ddb_handle = NULL;

+ 2 - 7
drivers/acpi/acpica/nsparse.c

@@ -47,7 +47,6 @@
 #include "acparser.h"
 #include "acparser.h"
 #include "acdispat.h"
 #include "acdispat.h"
 #include "actables.h"
 #include "actables.h"
-#include "acinterp.h"
 
 
 #define _COMPONENT          ACPI_NAMESPACE
 #define _COMPONENT          ACPI_NAMESPACE
 ACPI_MODULE_NAME("nsparse")
 ACPI_MODULE_NAME("nsparse")
@@ -171,8 +170,6 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
 
 
 	ACPI_FUNCTION_TRACE(ns_parse_table);
 	ACPI_FUNCTION_TRACE(ns_parse_table);
 
 
-	acpi_ex_enter_interpreter();
-
 	/*
 	/*
 	 * AML Parse, pass 1
 	 * AML Parse, pass 1
 	 *
 	 *
@@ -188,7 +185,7 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
 	status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1,
 	status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1,
 					    table_index, start_node);
 					    table_index, start_node);
 	if (ACPI_FAILURE(status)) {
 	if (ACPI_FAILURE(status)) {
-		goto error_exit;
+		return_ACPI_STATUS(status);
 	}
 	}
 
 
 	/*
 	/*
@@ -204,10 +201,8 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
 	status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2,
 	status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2,
 					    table_index, start_node);
 					    table_index, start_node);
 	if (ACPI_FAILURE(status)) {
 	if (ACPI_FAILURE(status)) {
-		goto error_exit;
+		return_ACPI_STATUS(status);
 	}
 	}
 
 
-error_exit:
-	acpi_ex_exit_interpreter();
 	return_ACPI_STATUS(status);
 	return_ACPI_STATUS(status);
 }
 }