diff options
Diffstat (limited to 'drivers/acpi/dispatcher')
-rw-r--r-- | drivers/acpi/dispatcher/dsinit.c | 10 | ||||
-rw-r--r-- | drivers/acpi/dispatcher/dsmethod.c | 23 | ||||
-rw-r--r-- | drivers/acpi/dispatcher/dswexec.c | 4 |
3 files changed, 6 insertions, 31 deletions
diff --git a/drivers/acpi/dispatcher/dsinit.c b/drivers/acpi/dispatcher/dsinit.c index daf51b5b5875..1888c055d10f 100644 --- a/drivers/acpi/dispatcher/dsinit.c +++ b/drivers/acpi/dispatcher/dsinit.c | |||
@@ -116,16 +116,6 @@ acpi_ds_init_one_object(acpi_handle obj_handle, | |||
116 | 116 | ||
117 | case ACPI_TYPE_METHOD: | 117 | case ACPI_TYPE_METHOD: |
118 | 118 | ||
119 | /* | ||
120 | * Set the execution data width (32 or 64) based upon the | ||
121 | * revision number of the parent ACPI table. | ||
122 | * TBD: This is really for possible future support of integer width | ||
123 | * on a per-table basis. Currently, we just use a global for the width. | ||
124 | */ | ||
125 | if (info->table_desc->pointer->revision == 1) { | ||
126 | node->flags |= ANOBJ_DATA_WIDTH_32; | ||
127 | } | ||
128 | |||
129 | info->method_count++; | 119 | info->method_count++; |
130 | break; | 120 | break; |
131 | 121 | ||
diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c index a39a33f4847a..cf888add3191 100644 --- a/drivers/acpi/dispatcher/dsmethod.c +++ b/drivers/acpi/dispatcher/dsmethod.c | |||
@@ -134,7 +134,7 @@ acpi_ds_create_method_mutex(union acpi_operand_object *method_desc) | |||
134 | union acpi_operand_object *mutex_desc; | 134 | union acpi_operand_object *mutex_desc; |
135 | acpi_status status; | 135 | acpi_status status; |
136 | 136 | ||
137 | ACPI_FUNCTION_NAME(ds_create_method_mutex); | 137 | ACPI_FUNCTION_TRACE(ds_create_method_mutex); |
138 | 138 | ||
139 | /* Create the new mutex object */ | 139 | /* Create the new mutex object */ |
140 | 140 | ||
@@ -493,7 +493,7 @@ acpi_ds_restart_control_method(struct acpi_walk_state *walk_state, | |||
493 | 493 | ||
494 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, | 494 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, |
495 | "****Restart [%4.4s] Op %p ReturnValueFromCallee %p\n", | 495 | "****Restart [%4.4s] Op %p ReturnValueFromCallee %p\n", |
496 | (char *)&walk_state->method_node->name, | 496 | acpi_ut_get_node_name(walk_state->method_node), |
497 | walk_state->method_call_op, return_desc)); | 497 | walk_state->method_call_op, return_desc)); |
498 | 498 | ||
499 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, | 499 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, |
@@ -610,6 +610,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
610 | 610 | ||
611 | acpi_os_release_mutex(method_desc->method.mutex->mutex. | 611 | acpi_os_release_mutex(method_desc->method.mutex->mutex. |
612 | os_mutex); | 612 | os_mutex); |
613 | method_desc->method.mutex->mutex.owner_thread = NULL; | ||
613 | } | 614 | } |
614 | } | 615 | } |
615 | 616 | ||
@@ -620,27 +621,11 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
620 | */ | 621 | */ |
621 | method_node = walk_state->method_node; | 622 | method_node = walk_state->method_node; |
622 | 623 | ||
623 | /* Lock namespace for possible update */ | ||
624 | |||
625 | status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); | ||
626 | if (ACPI_FAILURE(status)) { | ||
627 | return_VOID; | ||
628 | } | ||
629 | |||
630 | /* | ||
631 | * Delete any namespace entries created immediately underneath | ||
632 | * the method | ||
633 | */ | ||
634 | if (method_node && method_node->child) { | ||
635 | acpi_ns_delete_namespace_subtree(method_node); | ||
636 | } | ||
637 | |||
638 | /* | 624 | /* |
639 | * Delete any namespace entries created anywhere else within | 625 | * Delete any namespace objects created anywhere within |
640 | * the namespace by the execution of this method | 626 | * the namespace by the execution of this method |
641 | */ | 627 | */ |
642 | acpi_ns_delete_namespace_by_owner(method_desc->method.owner_id); | 628 | acpi_ns_delete_namespace_by_owner(method_desc->method.owner_id); |
643 | status = acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); | ||
644 | } | 629 | } |
645 | 630 | ||
646 | /* Decrement the thread count on the method */ | 631 | /* Decrement the thread count on the method */ |
diff --git a/drivers/acpi/dispatcher/dswexec.c b/drivers/acpi/dispatcher/dswexec.c index b1ded62d0df1..d7a616c3104e 100644 --- a/drivers/acpi/dispatcher/dswexec.c +++ b/drivers/acpi/dispatcher/dswexec.c | |||
@@ -313,10 +313,10 @@ acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state, | |||
313 | case AML_CLASS_EXECUTE: | 313 | case AML_CLASS_EXECUTE: |
314 | case AML_CLASS_CREATE: | 314 | case AML_CLASS_CREATE: |
315 | /* | 315 | /* |
316 | * Most operators with arguments. | 316 | * Most operators with arguments (except create_xxx_field operators) |
317 | * Start a new result/operand state | 317 | * Start a new result/operand state |
318 | */ | 318 | */ |
319 | if (walk_state->opcode != AML_CREATE_FIELD_OP) { | 319 | if (walk_state->op_info->object_type != ACPI_TYPE_BUFFER_FIELD) { |
320 | status = acpi_ds_result_stack_push(walk_state); | 320 | status = acpi_ds_result_stack_push(walk_state); |
321 | } | 321 | } |
322 | break; | 322 | break; |