diff options
| author | Len Brown <len.brown@intel.com> | 2007-05-09 22:56:38 -0400 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2007-05-09 22:56:38 -0400 |
| commit | 4d2acd9ea539e0f59178b126f6750ccc41eefcdd (patch) | |
| tree | 6d9e47c9ab33a1ce2c02139b6bf5c029c2abad32 | |
| parent | b5f0adbcc4f16e378882d8f68fe3111df04911be (diff) | |
Revert "ACPICA: revert "acpi_serialize" changes"
This reverts commit a8f4af6dc6600980885c594f52eecd60edd62013.
Thus restoring ACPICA's new acpi_serialize code.
This commit by itself may cause a regression, but
it is reverted in this order so that subsequent
reverts reverts under this one can be made
without conflict.
Signed-off-by: Len Brown <len.brown@intel.com>
| -rw-r--r-- | drivers/acpi/events/evmisc.c | 8 | ||||
| -rw-r--r-- | drivers/acpi/events/evregion.c | 15 | ||||
| -rw-r--r-- | drivers/acpi/events/evxface.c | 6 | ||||
| -rw-r--r-- | drivers/acpi/executer/excreate.c | 5 | ||||
| -rw-r--r-- | drivers/acpi/executer/exsystem.c | 30 | ||||
| -rw-r--r-- | drivers/acpi/executer/exutils.c | 104 | ||||
| -rw-r--r-- | drivers/acpi/namespace/nseval.c | 11 | ||||
| -rw-r--r-- | drivers/acpi/namespace/nsinit.c | 7 | ||||
| -rw-r--r-- | drivers/acpi/namespace/nsxfeval.c | 11 | ||||
| -rw-r--r-- | include/acpi/acinterp.h | 6 |
10 files changed, 113 insertions, 90 deletions
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c index cae786ca8600..3a799b9b5df5 100644 --- a/drivers/acpi/events/evmisc.c +++ b/drivers/acpi/events/evmisc.c | |||
| @@ -196,15 +196,11 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node * node, | |||
| 196 | notify_info->notify.value = (u16) notify_value; | 196 | notify_info->notify.value = (u16) notify_value; |
| 197 | notify_info->notify.handler_obj = handler_obj; | 197 | notify_info->notify.handler_obj = handler_obj; |
| 198 | 198 | ||
| 199 | acpi_ex_exit_interpreter(); | 199 | acpi_ex_relinquish_interpreter(); |
| 200 | 200 | ||
| 201 | acpi_ev_notify_dispatch(notify_info); | 201 | acpi_ev_notify_dispatch(notify_info); |
| 202 | 202 | ||
| 203 | status = acpi_ex_enter_interpreter(); | 203 | acpi_ex_reacquire_interpreter(); |
| 204 | if (ACPI_FAILURE(status)) { | ||
| 205 | return_ACPI_STATUS(status); | ||
| 206 | } | ||
| 207 | |||
| 208 | } | 204 | } |
| 209 | 205 | ||
| 210 | if (!handler_obj) { | 206 | if (!handler_obj) { |
diff --git a/drivers/acpi/events/evregion.c b/drivers/acpi/events/evregion.c index 96b0e8431748..e99f0c435a47 100644 --- a/drivers/acpi/events/evregion.c +++ b/drivers/acpi/events/evregion.c | |||
| @@ -291,7 +291,6 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, | |||
| 291 | u32 bit_width, acpi_integer * value) | 291 | u32 bit_width, acpi_integer * value) |
| 292 | { | 292 | { |
| 293 | acpi_status status; | 293 | acpi_status status; |
| 294 | acpi_status status2; | ||
| 295 | acpi_adr_space_handler handler; | 294 | acpi_adr_space_handler handler; |
| 296 | acpi_adr_space_setup region_setup; | 295 | acpi_adr_space_setup region_setup; |
| 297 | union acpi_operand_object *handler_desc; | 296 | union acpi_operand_object *handler_desc; |
| @@ -345,7 +344,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, | |||
| 345 | * setup will potentially execute control methods | 344 | * setup will potentially execute control methods |
| 346 | * (e.g., _REG method for this region) | 345 | * (e.g., _REG method for this region) |
| 347 | */ | 346 | */ |
| 348 | acpi_ex_exit_interpreter(); | 347 | acpi_ex_relinquish_interpreter(); |
| 349 | 348 | ||
| 350 | status = region_setup(region_obj, ACPI_REGION_ACTIVATE, | 349 | status = region_setup(region_obj, ACPI_REGION_ACTIVATE, |
| 351 | handler_desc->address_space.context, | 350 | handler_desc->address_space.context, |
| @@ -353,10 +352,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, | |||
| 353 | 352 | ||
| 354 | /* Re-enter the interpreter */ | 353 | /* Re-enter the interpreter */ |
| 355 | 354 | ||
| 356 | status2 = acpi_ex_enter_interpreter(); | 355 | acpi_ex_reacquire_interpreter(); |
| 357 | if (ACPI_FAILURE(status2)) { | ||
| 358 | return_ACPI_STATUS(status2); | ||
| 359 | } | ||
| 360 | 356 | ||
| 361 | /* Check for failure of the Region Setup */ | 357 | /* Check for failure of the Region Setup */ |
| 362 | 358 | ||
| @@ -409,7 +405,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, | |||
| 409 | * exit the interpreter because the handler *might* block -- we don't | 405 | * exit the interpreter because the handler *might* block -- we don't |
| 410 | * know what it will do, so we can't hold the lock on the intepreter. | 406 | * know what it will do, so we can't hold the lock on the intepreter. |
| 411 | */ | 407 | */ |
| 412 | acpi_ex_exit_interpreter(); | 408 | acpi_ex_relinquish_interpreter(); |
| 413 | } | 409 | } |
| 414 | 410 | ||
| 415 | /* Call the handler */ | 411 | /* Call the handler */ |
| @@ -430,10 +426,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, | |||
| 430 | * We just returned from a non-default handler, we must re-enter the | 426 | * We just returned from a non-default handler, we must re-enter the |
| 431 | * interpreter | 427 | * interpreter |
| 432 | */ | 428 | */ |
| 433 | status2 = acpi_ex_enter_interpreter(); | 429 | acpi_ex_reacquire_interpreter(); |
| 434 | if (ACPI_FAILURE(status2)) { | ||
| 435 | return_ACPI_STATUS(status2); | ||
| 436 | } | ||
| 437 | } | 430 | } |
| 438 | 431 | ||
| 439 | return_ACPI_STATUS(status); | 432 | return_ACPI_STATUS(status); |
diff --git a/drivers/acpi/events/evxface.c b/drivers/acpi/events/evxface.c index a3379bafa676..685a103a3587 100644 --- a/drivers/acpi/events/evxface.c +++ b/drivers/acpi/events/evxface.c | |||
| @@ -768,11 +768,9 @@ acpi_status acpi_acquire_global_lock(u16 timeout, u32 * handle) | |||
| 768 | return (AE_BAD_PARAMETER); | 768 | return (AE_BAD_PARAMETER); |
| 769 | } | 769 | } |
| 770 | 770 | ||
| 771 | status = acpi_ex_enter_interpreter(); | 771 | /* Must lock interpreter to prevent race conditions */ |
| 772 | if (ACPI_FAILURE(status)) { | ||
| 773 | return (status); | ||
| 774 | } | ||
| 775 | 772 | ||
| 773 | acpi_ex_enter_interpreter(); | ||
| 776 | status = acpi_ev_acquire_global_lock(timeout); | 774 | status = acpi_ev_acquire_global_lock(timeout); |
| 777 | acpi_ex_exit_interpreter(); | 775 | acpi_ex_exit_interpreter(); |
| 778 | 776 | ||
diff --git a/drivers/acpi/executer/excreate.c b/drivers/acpi/executer/excreate.c index ae97812681a3..7c38528a7e83 100644 --- a/drivers/acpi/executer/excreate.c +++ b/drivers/acpi/executer/excreate.c | |||
| @@ -583,10 +583,7 @@ acpi_ex_create_method(u8 * aml_start, | |||
| 583 | * Get the sync_level. If method is serialized, a mutex will be | 583 | * Get the sync_level. If method is serialized, a mutex will be |
| 584 | * created for this method when it is parsed. | 584 | * created for this method when it is parsed. |
| 585 | */ | 585 | */ |
| 586 | if (acpi_gbl_all_methods_serialized) { | 586 | if (method_flags & AML_METHOD_SERIALIZED) { |
| 587 | obj_desc->method.sync_level = 0; | ||
| 588 | obj_desc->method.method_flags |= AML_METHOD_SERIALIZED; | ||
| 589 | } else if (method_flags & AML_METHOD_SERIALIZED) { | ||
| 590 | /* | 587 | /* |
| 591 | * ACPI 1.0: sync_level = 0 | 588 | * ACPI 1.0: sync_level = 0 |
| 592 | * ACPI 2.0: sync_level = sync_level in method declaration | 589 | * ACPI 2.0: sync_level = sync_level in method declaration |
diff --git a/drivers/acpi/executer/exsystem.c b/drivers/acpi/executer/exsystem.c index b2edf620ba89..9460baff3032 100644 --- a/drivers/acpi/executer/exsystem.c +++ b/drivers/acpi/executer/exsystem.c | |||
| @@ -66,7 +66,6 @@ ACPI_MODULE_NAME("exsystem") | |||
| 66 | acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | 66 | acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) |
| 67 | { | 67 | { |
| 68 | acpi_status status; | 68 | acpi_status status; |
| 69 | acpi_status status2; | ||
| 70 | 69 | ||
| 71 | ACPI_FUNCTION_TRACE(ex_system_wait_semaphore); | 70 | ACPI_FUNCTION_TRACE(ex_system_wait_semaphore); |
| 72 | 71 | ||
| @@ -79,7 +78,7 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | |||
| 79 | 78 | ||
| 80 | /* We must wait, so unlock the interpreter */ | 79 | /* We must wait, so unlock the interpreter */ |
| 81 | 80 | ||
| 82 | acpi_ex_exit_interpreter(); | 81 | acpi_ex_relinquish_interpreter(); |
| 83 | 82 | ||
| 84 | status = acpi_os_wait_semaphore(semaphore, 1, timeout); | 83 | status = acpi_os_wait_semaphore(semaphore, 1, timeout); |
| 85 | 84 | ||
| @@ -89,13 +88,7 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | |||
| 89 | 88 | ||
| 90 | /* Reacquire the interpreter */ | 89 | /* Reacquire the interpreter */ |
| 91 | 90 | ||
| 92 | status2 = acpi_ex_enter_interpreter(); | 91 | acpi_ex_reacquire_interpreter(); |
| 93 | if (ACPI_FAILURE(status2)) { | ||
| 94 | |||
| 95 | /* Report fatal error, could not acquire interpreter */ | ||
| 96 | |||
| 97 | return_ACPI_STATUS(status2); | ||
| 98 | } | ||
| 99 | } | 92 | } |
| 100 | 93 | ||
| 101 | return_ACPI_STATUS(status); | 94 | return_ACPI_STATUS(status); |
| @@ -119,7 +112,6 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout) | |||
| 119 | acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) | 112 | acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) |
| 120 | { | 113 | { |
| 121 | acpi_status status; | 114 | acpi_status status; |
| 122 | acpi_status status2; | ||
| 123 | 115 | ||
| 124 | ACPI_FUNCTION_TRACE(ex_system_wait_mutex); | 116 | ACPI_FUNCTION_TRACE(ex_system_wait_mutex); |
| 125 | 117 | ||
| @@ -132,7 +124,7 @@ acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) | |||
| 132 | 124 | ||
| 133 | /* We must wait, so unlock the interpreter */ | 125 | /* We must wait, so unlock the interpreter */ |
| 134 | 126 | ||
| 135 | acpi_ex_exit_interpreter(); | 127 | acpi_ex_relinquish_interpreter(); |
| 136 | 128 | ||
| 137 | status = acpi_os_acquire_mutex(mutex, timeout); | 129 | status = acpi_os_acquire_mutex(mutex, timeout); |
| 138 | 130 | ||
| @@ -142,13 +134,7 @@ acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout) | |||
| 142 | 134 | ||
| 143 | /* Reacquire the interpreter */ | 135 | /* Reacquire the interpreter */ |
| 144 | 136 | ||
| 145 | status2 = acpi_ex_enter_interpreter(); | 137 | acpi_ex_reacquire_interpreter(); |
| 146 | if (ACPI_FAILURE(status2)) { | ||
| 147 | |||
| 148 | /* Report fatal error, could not acquire interpreter */ | ||
| 149 | |||
| 150 | return_ACPI_STATUS(status2); | ||
| 151 | } | ||
| 152 | } | 138 | } |
| 153 | 139 | ||
| 154 | return_ACPI_STATUS(status); | 140 | return_ACPI_STATUS(status); |
| @@ -209,20 +195,18 @@ acpi_status acpi_ex_system_do_stall(u32 how_long) | |||
| 209 | 195 | ||
| 210 | acpi_status acpi_ex_system_do_suspend(acpi_integer how_long) | 196 | acpi_status acpi_ex_system_do_suspend(acpi_integer how_long) |
| 211 | { | 197 | { |
| 212 | acpi_status status; | ||
| 213 | |||
| 214 | ACPI_FUNCTION_ENTRY(); | 198 | ACPI_FUNCTION_ENTRY(); |
| 215 | 199 | ||
| 216 | /* Since this thread will sleep, we must release the interpreter */ | 200 | /* Since this thread will sleep, we must release the interpreter */ |
| 217 | 201 | ||
| 218 | acpi_ex_exit_interpreter(); | 202 | acpi_ex_relinquish_interpreter(); |
| 219 | 203 | ||
| 220 | acpi_os_sleep(how_long); | 204 | acpi_os_sleep(how_long); |
| 221 | 205 | ||
| 222 | /* And now we must get the interpreter again */ | 206 | /* And now we must get the interpreter again */ |
| 223 | 207 | ||
| 224 | status = acpi_ex_enter_interpreter(); | 208 | acpi_ex_reacquire_interpreter(); |
| 225 | return (status); | 209 | return (AE_OK); |
| 226 | } | 210 | } |
| 227 | 211 | ||
| 228 | /******************************************************************************* | 212 | /******************************************************************************* |
diff --git a/drivers/acpi/executer/exutils.c b/drivers/acpi/executer/exutils.c index aea461f3a48c..6b0aeccbb69b 100644 --- a/drivers/acpi/executer/exutils.c +++ b/drivers/acpi/executer/exutils.c | |||
| @@ -76,14 +76,15 @@ static u32 acpi_ex_digits_needed(acpi_integer value, u32 base); | |||
| 76 | * | 76 | * |
| 77 | * PARAMETERS: None | 77 | * PARAMETERS: None |
| 78 | * | 78 | * |
| 79 | * RETURN: Status | 79 | * RETURN: None |
| 80 | * | 80 | * |
| 81 | * DESCRIPTION: Enter the interpreter execution region. Failure to enter | 81 | * DESCRIPTION: Enter the interpreter execution region. Failure to enter |
| 82 | * the interpreter region is a fatal system error | 82 | * the interpreter region is a fatal system error. Used in |
| 83 | * conjunction with exit_interpreter. | ||
| 83 | * | 84 | * |
| 84 | ******************************************************************************/ | 85 | ******************************************************************************/ |
| 85 | 86 | ||
| 86 | acpi_status acpi_ex_enter_interpreter(void) | 87 | void acpi_ex_enter_interpreter(void) |
| 87 | { | 88 | { |
| 88 | acpi_status status; | 89 | acpi_status status; |
| 89 | 90 | ||
| @@ -91,31 +92,55 @@ acpi_status acpi_ex_enter_interpreter(void) | |||
| 91 | 92 | ||
| 92 | status = acpi_ut_acquire_mutex(ACPI_MTX_INTERPRETER); | 93 | status = acpi_ut_acquire_mutex(ACPI_MTX_INTERPRETER); |
| 93 | if (ACPI_FAILURE(status)) { | 94 | if (ACPI_FAILURE(status)) { |
| 94 | ACPI_ERROR((AE_INFO, "Could not acquire interpreter mutex")); | 95 | ACPI_ERROR((AE_INFO, |
| 96 | "Could not acquire AML Interpreter mutex")); | ||
| 95 | } | 97 | } |
| 96 | 98 | ||
| 97 | return_ACPI_STATUS(status); | 99 | return_VOID; |
| 98 | } | 100 | } |
| 99 | 101 | ||
| 100 | /******************************************************************************* | 102 | /******************************************************************************* |
| 101 | * | 103 | * |
| 102 | * FUNCTION: acpi_ex_exit_interpreter | 104 | * FUNCTION: acpi_ex_reacquire_interpreter |
| 103 | * | 105 | * |
| 104 | * PARAMETERS: None | 106 | * PARAMETERS: None |
| 105 | * | 107 | * |
| 106 | * RETURN: None | 108 | * RETURN: None |
| 107 | * | 109 | * |
| 108 | * DESCRIPTION: Exit the interpreter execution region | 110 | * DESCRIPTION: Reacquire the interpreter execution region from within the |
| 111 | * interpreter code. Failure to enter the interpreter region is a | ||
| 112 | * fatal system error. Used in conjuction with | ||
| 113 | * relinquish_interpreter | ||
| 114 | * | ||
| 115 | ******************************************************************************/ | ||
| 116 | |||
| 117 | void acpi_ex_reacquire_interpreter(void) | ||
| 118 | { | ||
| 119 | ACPI_FUNCTION_TRACE(ex_reacquire_interpreter); | ||
| 120 | |||
| 121 | /* | ||
| 122 | * If the global serialized flag is set, do not release the interpreter, | ||
| 123 | * since it was not actually released by acpi_ex_relinquish_interpreter. | ||
| 124 | * This forces the interpreter to be single threaded. | ||
| 125 | */ | ||
| 126 | if (!acpi_gbl_all_methods_serialized) { | ||
| 127 | acpi_ex_enter_interpreter(); | ||
| 128 | } | ||
| 129 | |||
| 130 | return_VOID; | ||
| 131 | } | ||
| 132 | |||
| 133 | /******************************************************************************* | ||
| 134 | * | ||
| 135 | * FUNCTION: acpi_ex_exit_interpreter | ||
| 136 | * | ||
| 137 | * PARAMETERS: None | ||
| 138 | * | ||
| 139 | * RETURN: None | ||
| 109 | * | 140 | * |
| 110 | * Cases where the interpreter is unlocked: | 141 | * DESCRIPTION: Exit the interpreter execution region. This is the top level |
| 111 | * 1) Completion of the execution of a control method | 142 | * routine used to exit the interpreter when all processing has |
| 112 | * 2) Method blocked on a Sleep() AML opcode | 143 | * been completed. |
| 113 | * 3) Method blocked on an Acquire() AML opcode | ||
| 114 | * 4) Method blocked on a Wait() AML opcode | ||
| 115 | * 5) Method blocked to acquire the global lock | ||
| 116 | * 6) Method blocked to execute a serialized control method that is | ||
| 117 | * already executing | ||
| 118 | * 7) About to invoke a user-installed opregion handler | ||
| 119 | * | 144 | * |
| 120 | ******************************************************************************/ | 145 | ******************************************************************************/ |
| 121 | 146 | ||
| @@ -127,7 +152,46 @@ void acpi_ex_exit_interpreter(void) | |||
| 127 | 152 | ||
| 128 | status = acpi_ut_release_mutex(ACPI_MTX_INTERPRETER); | 153 | status = acpi_ut_release_mutex(ACPI_MTX_INTERPRETER); |
| 129 | if (ACPI_FAILURE(status)) { | 154 | if (ACPI_FAILURE(status)) { |
| 130 | ACPI_ERROR((AE_INFO, "Could not release interpreter mutex")); | 155 | ACPI_ERROR((AE_INFO, |
| 156 | "Could not release AML Interpreter mutex")); | ||
| 157 | } | ||
| 158 | |||
| 159 | return_VOID; | ||
| 160 | } | ||
| 161 | |||
| 162 | /******************************************************************************* | ||
| 163 | * | ||
| 164 | * FUNCTION: acpi_ex_relinquish_interpreter | ||
| 165 | * | ||
| 166 | * PARAMETERS: None | ||
| 167 | * | ||
| 168 | * RETURN: None | ||
| 169 | * | ||
| 170 | * DESCRIPTION: Exit the interpreter execution region, from within the | ||
| 171 | * interpreter - before attempting an operation that will possibly | ||
| 172 | * block the running thread. | ||
| 173 | * | ||
| 174 | * Cases where the interpreter is unlocked internally | ||
| 175 | * 1) Method to be blocked on a Sleep() AML opcode | ||
| 176 | * 2) Method to be blocked on an Acquire() AML opcode | ||
| 177 | * 3) Method to be blocked on a Wait() AML opcode | ||
| 178 | * 4) Method to be blocked to acquire the global lock | ||
| 179 | * 5) Method to be blocked waiting to execute a serialized control method | ||
| 180 | * that is currently executing | ||
| 181 | * 6) About to invoke a user-installed opregion handler | ||
| 182 | * | ||
| 183 | ******************************************************************************/ | ||
| 184 | |||
| 185 | void acpi_ex_relinquish_interpreter(void) | ||
| 186 | { | ||
| 187 | ACPI_FUNCTION_TRACE(ex_relinquish_interpreter); | ||
| 188 | |||
| 189 | /* | ||
| 190 | * If the global serialized flag is set, do not release the interpreter. | ||
| 191 | * This forces the interpreter to be single threaded. | ||
| 192 | */ | ||
| 193 | if (!acpi_gbl_all_methods_serialized) { | ||
| 194 | acpi_ex_exit_interpreter(); | ||
| 131 | } | 195 | } |
| 132 | 196 | ||
| 133 | return_VOID; | 197 | return_VOID; |
| @@ -141,8 +205,8 @@ void acpi_ex_exit_interpreter(void) | |||
| 141 | * | 205 | * |
| 142 | * RETURN: none | 206 | * RETURN: none |
| 143 | * | 207 | * |
| 144 | * DESCRIPTION: Truncate a number to 32-bits if the currently executing method | 208 | * DESCRIPTION: Truncate an ACPI Integer to 32 bits if the execution mode is |
| 145 | * belongs to a 32-bit ACPI table. | 209 | * 32-bit, as determined by the revision of the DSDT. |
| 146 | * | 210 | * |
| 147 | ******************************************************************************/ | 211 | ******************************************************************************/ |
| 148 | 212 | ||
diff --git a/drivers/acpi/namespace/nseval.c b/drivers/acpi/namespace/nseval.c index 26fd0dd6953d..aa6370c67ec1 100644 --- a/drivers/acpi/namespace/nseval.c +++ b/drivers/acpi/namespace/nseval.c | |||
| @@ -154,11 +154,7 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info) | |||
| 154 | * Execute the method via the interpreter. The interpreter is locked | 154 | * Execute the method via the interpreter. The interpreter is locked |
| 155 | * here before calling into the AML parser | 155 | * here before calling into the AML parser |
| 156 | */ | 156 | */ |
| 157 | status = acpi_ex_enter_interpreter(); | 157 | acpi_ex_enter_interpreter(); |
| 158 | if (ACPI_FAILURE(status)) { | ||
| 159 | return_ACPI_STATUS(status); | ||
| 160 | } | ||
| 161 | |||
| 162 | status = acpi_ps_execute_method(info); | 158 | status = acpi_ps_execute_method(info); |
| 163 | acpi_ex_exit_interpreter(); | 159 | acpi_ex_exit_interpreter(); |
| 164 | } else { | 160 | } else { |
| @@ -182,10 +178,7 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info) | |||
| 182 | * resolution, we must lock it because we could access an opregion. | 178 | * resolution, we must lock it because we could access an opregion. |
| 183 | * The opregion access code assumes that the interpreter is locked. | 179 | * The opregion access code assumes that the interpreter is locked. |
| 184 | */ | 180 | */ |
| 185 | status = acpi_ex_enter_interpreter(); | 181 | acpi_ex_enter_interpreter(); |
| 186 | if (ACPI_FAILURE(status)) { | ||
| 187 | return_ACPI_STATUS(status); | ||
| 188 | } | ||
| 189 | 182 | ||
| 190 | /* Function has a strange interface */ | 183 | /* Function has a strange interface */ |
| 191 | 184 | ||
diff --git a/drivers/acpi/namespace/nsinit.c b/drivers/acpi/namespace/nsinit.c index c4ab615f77fe..33db2241044e 100644 --- a/drivers/acpi/namespace/nsinit.c +++ b/drivers/acpi/namespace/nsinit.c | |||
| @@ -214,7 +214,7 @@ acpi_ns_init_one_object(acpi_handle obj_handle, | |||
| 214 | u32 level, void *context, void **return_value) | 214 | u32 level, void *context, void **return_value) |
| 215 | { | 215 | { |
| 216 | acpi_object_type type; | 216 | acpi_object_type type; |
| 217 | acpi_status status; | 217 | acpi_status status = AE_OK; |
| 218 | struct acpi_init_walk_info *info = | 218 | struct acpi_init_walk_info *info = |
| 219 | (struct acpi_init_walk_info *)context; | 219 | (struct acpi_init_walk_info *)context; |
| 220 | struct acpi_namespace_node *node = | 220 | struct acpi_namespace_node *node = |
| @@ -268,10 +268,7 @@ acpi_ns_init_one_object(acpi_handle obj_handle, | |||
| 268 | /* | 268 | /* |
| 269 | * Must lock the interpreter before executing AML code | 269 | * Must lock the interpreter before executing AML code |
| 270 | */ | 270 | */ |
| 271 | status = acpi_ex_enter_interpreter(); | 271 | acpi_ex_enter_interpreter(); |
| 272 | if (ACPI_FAILURE(status)) { | ||
| 273 | return (status); | ||
| 274 | } | ||
| 275 | 272 | ||
| 276 | /* | 273 | /* |
| 277 | * Each of these types can contain executable AML code within the | 274 | * Each of these types can contain executable AML code within the |
diff --git a/drivers/acpi/namespace/nsxfeval.c b/drivers/acpi/namespace/nsxfeval.c index 8904d0fae6a2..7ac6ace50059 100644 --- a/drivers/acpi/namespace/nsxfeval.c +++ b/drivers/acpi/namespace/nsxfeval.c | |||
| @@ -170,7 +170,6 @@ acpi_evaluate_object(acpi_handle handle, | |||
| 170 | struct acpi_buffer *return_buffer) | 170 | struct acpi_buffer *return_buffer) |
| 171 | { | 171 | { |
| 172 | acpi_status status; | 172 | acpi_status status; |
| 173 | acpi_status status2; | ||
| 174 | struct acpi_evaluate_info *info; | 173 | struct acpi_evaluate_info *info; |
| 175 | acpi_size buffer_space_needed; | 174 | acpi_size buffer_space_needed; |
| 176 | u32 i; | 175 | u32 i; |
| @@ -329,14 +328,12 @@ acpi_evaluate_object(acpi_handle handle, | |||
| 329 | * Delete the internal return object. NOTE: Interpreter must be | 328 | * Delete the internal return object. NOTE: Interpreter must be |
| 330 | * locked to avoid race condition. | 329 | * locked to avoid race condition. |
| 331 | */ | 330 | */ |
| 332 | status2 = acpi_ex_enter_interpreter(); | 331 | acpi_ex_enter_interpreter(); |
| 333 | if (ACPI_SUCCESS(status2)) { | ||
| 334 | 332 | ||
| 335 | /* Remove one reference on the return object (should delete it) */ | 333 | /* Remove one reference on the return object (should delete it) */ |
| 336 | 334 | ||
| 337 | acpi_ut_remove_reference(info->return_object); | 335 | acpi_ut_remove_reference(info->return_object); |
| 338 | acpi_ex_exit_interpreter(); | 336 | acpi_ex_exit_interpreter(); |
| 339 | } | ||
| 340 | } | 337 | } |
| 341 | 338 | ||
| 342 | cleanup: | 339 | cleanup: |
diff --git a/include/acpi/acinterp.h b/include/acpi/acinterp.h index 440983019993..73967c8152d3 100644 --- a/include/acpi/acinterp.h +++ b/include/acpi/acinterp.h | |||
| @@ -446,10 +446,14 @@ acpi_ex_copy_integer_to_buffer_field(union acpi_operand_object *source_desc, | |||
| 446 | /* | 446 | /* |
| 447 | * exutils - interpreter/scanner utilities | 447 | * exutils - interpreter/scanner utilities |
| 448 | */ | 448 | */ |
| 449 | acpi_status acpi_ex_enter_interpreter(void); | 449 | void acpi_ex_enter_interpreter(void); |
| 450 | 450 | ||
| 451 | void acpi_ex_exit_interpreter(void); | 451 | void acpi_ex_exit_interpreter(void); |
| 452 | 452 | ||
| 453 | void acpi_ex_reacquire_interpreter(void); | ||
| 454 | |||
| 455 | void acpi_ex_relinquish_interpreter(void); | ||
| 456 | |||
| 453 | void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc); | 457 | void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc); |
| 454 | 458 | ||
| 455 | u8 acpi_ex_acquire_global_lock(u32 rule); | 459 | u8 acpi_ex_acquire_global_lock(u32 rule); |
