aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/acpica/dsinit.c11
-rw-r--r--drivers/acpi/acpica/dsmethod.c12
-rw-r--r--drivers/acpi/acpica/dswload2.c2
-rw-r--r--drivers/acpi/acpica/evrgnini.c3
-rw-r--r--drivers/acpi/acpica/nsload.c2
5 files changed, 11 insertions, 19 deletions
diff --git a/drivers/acpi/acpica/dsinit.c b/drivers/acpi/acpica/dsinit.c
index f1e6dcc7a827..54d48b90de2c 100644
--- a/drivers/acpi/acpica/dsinit.c
+++ b/drivers/acpi/acpica/dsinit.c
@@ -46,6 +46,7 @@
46#include "acdispat.h" 46#include "acdispat.h"
47#include "acnamesp.h" 47#include "acnamesp.h"
48#include "actables.h" 48#include "actables.h"
49#include "acinterp.h"
49 50
50#define _COMPONENT ACPI_DISPATCHER 51#define _COMPONENT ACPI_DISPATCHER
51ACPI_MODULE_NAME("dsinit") 52ACPI_MODULE_NAME("dsinit")
@@ -214,23 +215,17 @@ acpi_ds_initialize_objects(u32 table_index,
214 215
215 /* Walk entire namespace from the supplied root */ 216 /* Walk entire namespace from the supplied root */
216 217
217 status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
218 if (ACPI_FAILURE(status)) {
219 return_ACPI_STATUS(status);
220 }
221
222 /* 218 /*
223 * We don't use acpi_walk_namespace since we do not want to acquire 219 * We don't use acpi_walk_namespace since we do not want to acquire
224 * the namespace reader lock. 220 * the namespace reader lock.
225 */ 221 */
226 status = 222 status =
227 acpi_ns_walk_namespace(ACPI_TYPE_ANY, start_node, ACPI_UINT32_MAX, 223 acpi_ns_walk_namespace(ACPI_TYPE_ANY, start_node, ACPI_UINT32_MAX,
228 ACPI_NS_WALK_UNLOCK, acpi_ds_init_one_object, 224 0, acpi_ds_init_one_object, NULL, &info,
229 NULL, &info, NULL); 225 NULL);
230 if (ACPI_FAILURE(status)) { 226 if (ACPI_FAILURE(status)) {
231 ACPI_EXCEPTION((AE_INFO, status, "During WalkNamespace")); 227 ACPI_EXCEPTION((AE_INFO, status, "During WalkNamespace"));
232 } 228 }
233 (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
234 229
235 status = acpi_get_table_by_index(table_index, &table); 230 status = acpi_get_table_by_index(table_index, &table);
236 if (ACPI_FAILURE(status)) { 231 if (ACPI_FAILURE(status)) {
diff --git a/drivers/acpi/acpica/dsmethod.c b/drivers/acpi/acpica/dsmethod.c
index 5997e592e5a6..2b3210f42a46 100644
--- a/drivers/acpi/acpica/dsmethod.c
+++ b/drivers/acpi/acpica/dsmethod.c
@@ -99,14 +99,11 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
99 "Method auto-serialization parse [%4.4s] %p\n", 99 "Method auto-serialization parse [%4.4s] %p\n",
100 acpi_ut_get_node_name(node), node)); 100 acpi_ut_get_node_name(node), node));
101 101
102 acpi_ex_enter_interpreter();
103
104 /* Create/Init a root op for the method parse tree */ 102 /* Create/Init a root op for the method parse tree */
105 103
106 op = acpi_ps_alloc_op(AML_METHOD_OP, obj_desc->method.aml_start); 104 op = acpi_ps_alloc_op(AML_METHOD_OP, obj_desc->method.aml_start);
107 if (!op) { 105 if (!op) {
108 status = AE_NO_MEMORY; 106 return_ACPI_STATUS(AE_NO_MEMORY);
109 goto unlock;
110 } 107 }
111 108
112 acpi_ps_set_name(op, node->name.integer); 109 acpi_ps_set_name(op, node->name.integer);
@@ -118,8 +115,7 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
118 acpi_ds_create_walk_state(node->owner_id, NULL, NULL, NULL); 115 acpi_ds_create_walk_state(node->owner_id, NULL, NULL, NULL);
119 if (!walk_state) { 116 if (!walk_state) {
120 acpi_ps_free_op(op); 117 acpi_ps_free_op(op);
121 status = AE_NO_MEMORY; 118 return_ACPI_STATUS(AE_NO_MEMORY);
122 goto unlock;
123 } 119 }
124 120
125 status = acpi_ds_init_aml_walk(walk_state, op, node, 121 status = acpi_ds_init_aml_walk(walk_state, op, node,
@@ -128,7 +124,7 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
128 if (ACPI_FAILURE(status)) { 124 if (ACPI_FAILURE(status)) {
129 acpi_ds_delete_walk_state(walk_state); 125 acpi_ds_delete_walk_state(walk_state);
130 acpi_ps_free_op(op); 126 acpi_ps_free_op(op);
131 goto unlock; 127 return_ACPI_STATUS(status);
132 } 128 }
133 129
134 walk_state->descending_callback = acpi_ds_detect_named_opcodes; 130 walk_state->descending_callback = acpi_ds_detect_named_opcodes;
@@ -138,8 +134,6 @@ acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,
138 status = acpi_ps_parse_aml(walk_state); 134 status = acpi_ps_parse_aml(walk_state);
139 135
140 acpi_ps_delete_parse_tree(op); 136 acpi_ps_delete_parse_tree(op);
141unlock:
142 acpi_ex_exit_interpreter();
143 return_ACPI_STATUS(status); 137 return_ACPI_STATUS(status);
144} 138}
145 139
diff --git a/drivers/acpi/acpica/dswload2.c b/drivers/acpi/acpica/dswload2.c
index 028b22a3154e..e36218206bb0 100644
--- a/drivers/acpi/acpica/dswload2.c
+++ b/drivers/acpi/acpica/dswload2.c
@@ -607,11 +607,9 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state)
607 } 607 }
608 } 608 }
609 609
610 acpi_ex_exit_interpreter();
611 status = 610 status =
612 acpi_ev_initialize_region 611 acpi_ev_initialize_region
613 (acpi_ns_get_attached_object(node), FALSE); 612 (acpi_ns_get_attached_object(node), FALSE);
614 acpi_ex_enter_interpreter();
615 613
616 if (ACPI_FAILURE(status)) { 614 if (ACPI_FAILURE(status)) {
617 /* 615 /*
diff --git a/drivers/acpi/acpica/evrgnini.c b/drivers/acpi/acpica/evrgnini.c
index 3843f1fc5dbb..75ddd160a716 100644
--- a/drivers/acpi/acpica/evrgnini.c
+++ b/drivers/acpi/acpica/evrgnini.c
@@ -45,6 +45,7 @@
45#include "accommon.h" 45#include "accommon.h"
46#include "acevents.h" 46#include "acevents.h"
47#include "acnamesp.h" 47#include "acnamesp.h"
48#include "acinterp.h"
48 49
49#define _COMPONENT ACPI_EVENTS 50#define _COMPONENT ACPI_EVENTS
50ACPI_MODULE_NAME("evrgnini") 51ACPI_MODULE_NAME("evrgnini")
@@ -597,9 +598,11 @@ acpi_ev_initialize_region(union acpi_operand_object *region_obj,
597 } 598 }
598 } 599 }
599 600
601 acpi_ex_exit_interpreter();
600 status = 602 status =
601 acpi_ev_execute_reg_method(region_obj, 603 acpi_ev_execute_reg_method(region_obj,
602 ACPI_REG_CONNECT); 604 ACPI_REG_CONNECT);
605 acpi_ex_enter_interpreter();
603 606
604 if (acpi_ns_locked) { 607 if (acpi_ns_locked) {
605 status = 608 status =
diff --git a/drivers/acpi/acpica/nsload.c b/drivers/acpi/acpica/nsload.c
index 334d3c5ba617..d1f20143bb11 100644
--- a/drivers/acpi/acpica/nsload.c
+++ b/drivers/acpi/acpica/nsload.c
@@ -137,7 +137,9 @@ unlock:
137 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 137 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
138 "**** Begin Table Object Initialization\n")); 138 "**** Begin Table Object Initialization\n"));
139 139
140 acpi_ex_enter_interpreter();
140 status = acpi_ds_initialize_objects(table_index, node); 141 status = acpi_ds_initialize_objects(table_index, node);
142 acpi_ex_exit_interpreter();
141 143
142 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 144 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
143 "**** Completed Table Object Initialization\n")); 145 "**** Completed Table Object Initialization\n"));