aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/executer/exoparg2.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-01-27 16:43:00 -0500
committerLen Brown <len.brown@intel.com>2006-01-31 03:25:09 -0500
commitb8e4d89357fc434618a59c1047cac72641191805 (patch)
treeac97fcc6fdc277c682365900663872c96f2420bd /drivers/acpi/executer/exoparg2.c
parent292dd876ee765c478b27c93cc51e93a558ed58bf (diff)
[ACPI] ACPICA 20060127
Implemented support in the Resource Manager to allow unresolved namestring references within resource package objects for the _PRT method. This support is in addition to the previously implemented unresolved reference support within the AML parser. If the interpreter slack mode is enabled (true on Linux unless acpi=strict), these unresolved references will be passed through to the caller as a NULL package entry. http://bugzilla.kernel.org/show_bug.cgi?id=5741 Implemented and deployed new macros and functions for error and warning messages across the subsystem. These macros are simpler and generate less code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. Implemented the acpi_cpu_flags type to simplify host OS integration of the Acquire/Release Lock OSL interfaces. Suggested by Steven Rostedt and Andrew Morton. Fixed a problem where Alias ASL operators are sometimes not correctly resolved. causing AE_AML_INTERNAL http://bugzilla.kernel.org/show_bug.cgi?id=5189 http://bugzilla.kernel.org/show_bug.cgi?id=5674 Fixed several problems with the implementation of the ConcatenateResTemplate ASL operator. As per the ACPI specification, zero length buffers are now treated as a single EndTag. One-length buffers always cause a fatal exception. Non-zero length buffers that do not end with a full 2-byte EndTag cause a fatal exception. Fixed a possible structure overwrite in the AcpiGetObjectInfo external interface. (With assistance from Thomas Renninger) Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/executer/exoparg2.c')
-rw-r--r--drivers/acpi/executer/exoparg2.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/drivers/acpi/executer/exoparg2.c b/drivers/acpi/executer/exoparg2.c
index 7c59dda40946..e263a5ddd405 100644
--- a/drivers/acpi/executer/exoparg2.c
+++ b/drivers/acpi/executer/exoparg2.c
@@ -111,7 +111,9 @@ acpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state)
111 /* Are notifies allowed on this object? */ 111 /* Are notifies allowed on this object? */
112 112
113 if (!acpi_ev_is_notify_object(node)) { 113 if (!acpi_ev_is_notify_object(node)) {
114 ACPI_REPORT_ERROR(("Unexpected notify object type [%s]\n", acpi_ut_get_type_name(node->type))); 114 ACPI_ERROR((AE_INFO,
115 "Unexpected notify object type [%s]",
116 acpi_ut_get_type_name(node->type)));
115 117
116 status = AE_AML_OPERAND_TYPE; 118 status = AE_AML_OPERAND_TYPE;
117 break; 119 break;
@@ -155,8 +157,8 @@ acpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state)
155 157
156 default: 158 default:
157 159
158 ACPI_REPORT_ERROR(("Unknown AML opcode %X\n", 160 ACPI_ERROR((AE_INFO, "Unknown AML opcode %X",
159 walk_state->opcode)); 161 walk_state->opcode));
160 status = AE_AML_BAD_OPCODE; 162 status = AE_AML_BAD_OPCODE;
161 } 163 }
162 164
@@ -220,8 +222,8 @@ acpi_status acpi_ex_opcode_2A_2T_1R(struct acpi_walk_state *walk_state)
220 222
221 default: 223 default:
222 224
223 ACPI_REPORT_ERROR(("Unknown AML opcode %X\n", 225 ACPI_ERROR((AE_INFO, "Unknown AML opcode %X",
224 walk_state->opcode)); 226 walk_state->opcode));
225 status = AE_AML_BAD_OPCODE; 227 status = AE_AML_BAD_OPCODE;
226 goto cleanup; 228 goto cleanup;
227 } 229 }
@@ -389,7 +391,10 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
389 /* Object to be indexed is a Package */ 391 /* Object to be indexed is a Package */
390 392
391 if (index >= operand[0]->package.count) { 393 if (index >= operand[0]->package.count) {
392 ACPI_REPORT_ERROR(("Index value (%X%8.8X) beyond package end (%X)\n", ACPI_FORMAT_UINT64(index), operand[0]->package.count)); 394 ACPI_ERROR((AE_INFO,
395 "Index value (%X%8.8X) beyond package end (%X)",
396 ACPI_FORMAT_UINT64(index),
397 operand[0]->package.count));
393 status = AE_AML_PACKAGE_LIMIT; 398 status = AE_AML_PACKAGE_LIMIT;
394 goto cleanup; 399 goto cleanup;
395 } 400 }
@@ -402,7 +407,10 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
402 /* Object to be indexed is a Buffer/String */ 407 /* Object to be indexed is a Buffer/String */
403 408
404 if (index >= operand[0]->buffer.length) { 409 if (index >= operand[0]->buffer.length) {
405 ACPI_REPORT_ERROR(("Index value (%X%8.8X) beyond end of buffer (%X)\n", ACPI_FORMAT_UINT64(index), operand[0]->buffer.length)); 410 ACPI_ERROR((AE_INFO,
411 "Index value (%X%8.8X) beyond end of buffer (%X)",
412 ACPI_FORMAT_UINT64(index),
413 operand[0]->buffer.length));
406 status = AE_AML_BUFFER_LIMIT; 414 status = AE_AML_BUFFER_LIMIT;
407 goto cleanup; 415 goto cleanup;
408 } 416 }
@@ -434,8 +442,8 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
434 442
435 default: 443 default:
436 444
437 ACPI_REPORT_ERROR(("Unknown AML opcode %X\n", 445 ACPI_ERROR((AE_INFO, "Unknown AML opcode %X",
438 walk_state->opcode)); 446 walk_state->opcode));
439 status = AE_AML_BAD_OPCODE; 447 status = AE_AML_BAD_OPCODE;
440 break; 448 break;
441 } 449 }
@@ -539,8 +547,8 @@ acpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state)
539 547
540 default: 548 default:
541 549
542 ACPI_REPORT_ERROR(("Unknown AML opcode %X\n", 550 ACPI_ERROR((AE_INFO, "Unknown AML opcode %X",
543 walk_state->opcode)); 551 walk_state->opcode));
544 status = AE_AML_BAD_OPCODE; 552 status = AE_AML_BAD_OPCODE;
545 goto cleanup; 553 goto cleanup;
546 } 554 }