diff options
Diffstat (limited to 'drivers/acpi/parser/psloop.c')
-rw-r--r-- | drivers/acpi/parser/psloop.c | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/drivers/acpi/parser/psloop.c b/drivers/acpi/parser/psloop.c index 088d33999d90..00b072e15d19 100644 --- a/drivers/acpi/parser/psloop.c +++ b/drivers/acpi/parser/psloop.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2005, R. Byron Moore | 8 | * Copyright (C) 2000 - 2006, R. Byron Moore |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -123,16 +123,12 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) | |||
123 | && ((status & AE_CODE_MASK) != | 123 | && ((status & AE_CODE_MASK) != |
124 | AE_CODE_CONTROL)) { | 124 | AE_CODE_CONTROL)) { |
125 | if (status == AE_AML_NO_RETURN_VALUE) { | 125 | if (status == AE_AML_NO_RETURN_VALUE) { |
126 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 126 | ACPI_EXCEPTION((AE_INFO, status, |
127 | "Invoked method did not return a value, %s\n", | 127 | "Invoked method did not return a value")); |
128 | acpi_format_exception | ||
129 | (status))); | ||
130 | 128 | ||
131 | } | 129 | } |
132 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 130 | ACPI_EXCEPTION((AE_INFO, status, |
133 | "get_predicate Failed, %s\n", | 131 | "get_predicate Failed")); |
134 | acpi_format_exception | ||
135 | (status))); | ||
136 | return_ACPI_STATUS(status); | 132 | return_ACPI_STATUS(status); |
137 | } | 133 | } |
138 | 134 | ||
@@ -190,11 +186,11 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) | |||
190 | 186 | ||
191 | /* The opcode is unrecognized. Just skip unknown opcodes */ | 187 | /* The opcode is unrecognized. Just skip unknown opcodes */ |
192 | 188 | ||
193 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 189 | ACPI_ERROR((AE_INFO, |
194 | "Found unknown opcode %X at AML address %p offset %X, ignoring\n", | 190 | "Found unknown opcode %X at AML address %p offset %X, ignoring", |
195 | walk_state->opcode, | 191 | walk_state->opcode, |
196 | parser_state->aml, | 192 | parser_state->aml, |
197 | walk_state->aml_offset)); | 193 | walk_state->aml_offset)); |
198 | 194 | ||
199 | ACPI_DUMP_BUFFER(parser_state->aml, 128); | 195 | ACPI_DUMP_BUFFER(parser_state->aml, 128); |
200 | 196 | ||
@@ -281,10 +277,8 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) | |||
281 | walk_state->descending_callback(walk_state, | 277 | walk_state->descending_callback(walk_state, |
282 | &op); | 278 | &op); |
283 | if (ACPI_FAILURE(status)) { | 279 | if (ACPI_FAILURE(status)) { |
284 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 280 | ACPI_EXCEPTION((AE_INFO, status, |
285 | "During name lookup/catalog, %s\n", | 281 | "During name lookup/catalog")); |
286 | acpi_format_exception | ||
287 | (status))); | ||
288 | goto close_this_op; | 282 | goto close_this_op; |
289 | } | 283 | } |
290 | 284 | ||
@@ -704,6 +698,15 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) | |||
704 | acpi_ps_pop_scope(parser_state, &op, | 698 | acpi_ps_pop_scope(parser_state, &op, |
705 | &walk_state->arg_types, | 699 | &walk_state->arg_types, |
706 | &walk_state->arg_count); | 700 | &walk_state->arg_count); |
701 | |||
702 | if (op->common.aml_opcode != AML_WHILE_OP) { | ||
703 | status2 = | ||
704 | acpi_ds_result_stack_pop | ||
705 | (walk_state); | ||
706 | if (ACPI_FAILURE(status2)) { | ||
707 | return_ACPI_STATUS(status2); | ||
708 | } | ||
709 | } | ||
707 | } | 710 | } |
708 | 711 | ||
709 | /* Close this iteration of the While loop */ | 712 | /* Close this iteration of the While loop */ |