From bafb5933654cdb7e35f0c54418bdd0dcb999f98c Mon Sep 17 00:00:00 2001 From: aszlig Date: Mon, 11 Jul 2016 02:08:43 +0200 Subject: hardware/t100ha: Fix bootup regression in 4.7-rc6+ I didn't use -rc6 directly but a few commits after the tag. Within the mainline merges there was torvalds/linux@45209046c47b93fad. I didn't investigate further why this exactly is a problem other than freezing the machine shortly after the bootloader hands over control to the kernel. Reverting this commit fixes this issue for now until I have time to look into it. Signed-off-by: aszlig --- modules/hardware/t100ha/default.nix | 3 + ...ert-fix-acpica-namespace-interpreter-lock.patch | 81 ++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 modules/hardware/t100ha/revert-fix-acpica-namespace-interpreter-lock.patch (limited to 'modules') diff --git a/modules/hardware/t100ha/default.nix b/modules/hardware/t100ha/default.nix index 4f85a61f..ac4ac6e4 100644 --- a/modules/hardware/t100ha/default.nix +++ b/modules/hardware/t100ha/default.nix @@ -32,6 +32,9 @@ in { { name = "meta-keys"; patch = ./meta-keys.patch; } + { name = "revert-fix-acpica-namespace-interpreter-lock"; + patch = ./revert-fix-acpica-namespace-interpreter-lock.patch; + } ]; extraConfig = '' 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); + } -- cgit 1.4.1