about summary refs log tree commit diff
path: root/modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch
diff options
context:
space:
mode:
Diffstat (limited to 'modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch')
-rw-r--r--modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch b/modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch
new file mode 100644
index 00000000..1630d883
--- /dev/null
+++ b/modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch
@@ -0,0 +1,81 @@
+diff --git b/drivers/acpi/acpica/nsload.c a/drivers/acpi/acpica/nsload.c
+index 297f6aa..b5e2b0a 100644
+--- b/drivers/acpi/acpica/nsload.c
++++ a/drivers/acpi/acpica/nsload.c
+@@ -46,7 +46,6 @@
+ #include "acnamesp.h"
+ #include "acdispat.h"
+ #include "actables.h"
+-#include "acinterp.h"
+ 
+ #define _COMPONENT          ACPI_NAMESPACE
+ ACPI_MODULE_NAME("nsload")
+@@ -79,8 +78,6 @@ acpi_ns_load_table(u32 table_index, struct acpi_namespace_node *node)
+ 
+ 	ACPI_FUNCTION_TRACE(ns_load_table);
+ 
+-	acpi_ex_enter_interpreter();
+-
+ 	/*
+ 	 * Parse the table and load the namespace with all named
+ 	 * objects found within. Control methods are NOT parsed
+@@ -92,7 +89,7 @@ acpi_ns_load_table(u32 table_index, struct acpi_namespace_node *node)
+ 	 */
+ 	status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
+ 	if (ACPI_FAILURE(status)) {
+-		goto unlock_interp;
++		return_ACPI_STATUS(status);
+ 	}
+ 
+ 	/* If table already loaded into namespace, just return */
+@@ -133,8 +130,6 @@ acpi_ns_load_table(u32 table_index, struct acpi_namespace_node *node)
+ 
+ unlock:
+ 	(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+-unlock_interp:
+-	(void)acpi_ex_exit_interpreter();
+ 
+ 	if (ACPI_FAILURE(status)) {
+ 		return_ACPI_STATUS(status);
+diff --git b/drivers/acpi/acpica/nsparse.c a/drivers/acpi/acpica/nsparse.c
+index f631a47..1783cd7 100644
+--- b/drivers/acpi/acpica/nsparse.c
++++ a/drivers/acpi/acpica/nsparse.c
+@@ -47,6 +47,7 @@
+ #include "acparser.h"
+ #include "acdispat.h"
+ #include "actables.h"
++#include "acinterp.h"
+ 
+ #define _COMPONENT          ACPI_NAMESPACE
+ ACPI_MODULE_NAME("nsparse")
+@@ -170,6 +171,8 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
+ 
+ 	ACPI_FUNCTION_TRACE(ns_parse_table);
+ 
++	acpi_ex_enter_interpreter();
++
+ 	/*
+ 	 * AML Parse, pass 1
+ 	 *
+@@ -185,7 +188,7 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
+ 	status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1,
+ 					    table_index, start_node);
+ 	if (ACPI_FAILURE(status)) {
+-		return_ACPI_STATUS(status);
++		goto error_exit;
+ 	}
+ 
+ 	/*
+@@ -201,8 +204,10 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
+ 	status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2,
+ 					    table_index, start_node);
+ 	if (ACPI_FAILURE(status)) {
+-		return_ACPI_STATUS(status);
++		goto error_exit;
+ 	}
+ 
++error_exit:
++	acpi_ex_exit_interpreter();
+ 	return_ACPI_STATUS(status);
+ }