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; |
