aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/dispatcher/dsmthdat.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/dispatcher/dsmthdat.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/dispatcher/dsmthdat.c')
-rw-r--r--drivers/acpi/dispatcher/dsmthdat.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/acpi/dispatcher/dsmthdat.c b/drivers/acpi/dispatcher/dsmthdat.c
index ce33c34f87c..c025674f938 100644
--- a/drivers/acpi/dispatcher/dsmthdat.c
+++ b/drivers/acpi/dispatcher/dsmthdat.c
@@ -260,7 +260,9 @@ acpi_ds_method_data_get_node(u16 opcode,
260 case AML_LOCAL_OP: 260 case AML_LOCAL_OP:
261 261
262 if (index > ACPI_METHOD_MAX_LOCAL) { 262 if (index > ACPI_METHOD_MAX_LOCAL) {
263 ACPI_REPORT_ERROR(("Local index %d is invalid (max %d)\n", index, ACPI_METHOD_MAX_LOCAL)); 263 ACPI_ERROR((AE_INFO,
264 "Local index %d is invalid (max %d)",
265 index, ACPI_METHOD_MAX_LOCAL));
264 return_ACPI_STATUS(AE_AML_INVALID_INDEX); 266 return_ACPI_STATUS(AE_AML_INVALID_INDEX);
265 } 267 }
266 268
@@ -272,8 +274,9 @@ acpi_ds_method_data_get_node(u16 opcode,
272 case AML_ARG_OP: 274 case AML_ARG_OP:
273 275
274 if (index > ACPI_METHOD_MAX_ARG) { 276 if (index > ACPI_METHOD_MAX_ARG) {
275 ACPI_REPORT_ERROR(("Arg index %d is invalid (max %d)\n", 277 ACPI_ERROR((AE_INFO,
276 index, ACPI_METHOD_MAX_ARG)); 278 "Arg index %d is invalid (max %d)",
279 index, ACPI_METHOD_MAX_ARG));
277 return_ACPI_STATUS(AE_AML_INVALID_INDEX); 280 return_ACPI_STATUS(AE_AML_INVALID_INDEX);
278 } 281 }
279 282
@@ -283,7 +286,7 @@ acpi_ds_method_data_get_node(u16 opcode,
283 break; 286 break;
284 287
285 default: 288 default:
286 ACPI_REPORT_ERROR(("Opcode %d is invalid\n", opcode)); 289 ACPI_ERROR((AE_INFO, "Opcode %d is invalid", opcode));
287 return_ACPI_STATUS(AE_AML_BAD_OPCODE); 290 return_ACPI_STATUS(AE_AML_BAD_OPCODE);
288 } 291 }
289 292
@@ -374,7 +377,7 @@ acpi_ds_method_data_get_value(u16 opcode,
374 /* Validate the object descriptor */ 377 /* Validate the object descriptor */
375 378
376 if (!dest_desc) { 379 if (!dest_desc) {
377 ACPI_REPORT_ERROR(("Null object descriptor pointer\n")); 380 ACPI_ERROR((AE_INFO, "Null object descriptor pointer"));
378 return_ACPI_STATUS(AE_BAD_PARAMETER); 381 return_ACPI_STATUS(AE_BAD_PARAMETER);
379 } 382 }
380 383
@@ -419,18 +422,24 @@ acpi_ds_method_data_get_value(u16 opcode,
419 switch (opcode) { 422 switch (opcode) {
420 case AML_ARG_OP: 423 case AML_ARG_OP:
421 424
422 ACPI_REPORT_ERROR(("Uninitialized Arg[%d] at node %p\n", index, node)); 425 ACPI_ERROR((AE_INFO,
426 "Uninitialized Arg[%d] at node %p",
427 index, node));
423 428
424 return_ACPI_STATUS(AE_AML_UNINITIALIZED_ARG); 429 return_ACPI_STATUS(AE_AML_UNINITIALIZED_ARG);
425 430
426 case AML_LOCAL_OP: 431 case AML_LOCAL_OP:
427 432
428 ACPI_REPORT_ERROR(("Uninitialized Local[%d] at node %p\n", index, node)); 433 ACPI_ERROR((AE_INFO,
434 "Uninitialized Local[%d] at node %p",
435 index, node));
429 436
430 return_ACPI_STATUS(AE_AML_UNINITIALIZED_LOCAL); 437 return_ACPI_STATUS(AE_AML_UNINITIALIZED_LOCAL);
431 438
432 default: 439 default:
433 ACPI_REPORT_ERROR(("Not a Arg/Local opcode: %X\n", opcode)); 440 ACPI_ERROR((AE_INFO,
441 "Not a Arg/Local opcode: %X",
442 opcode));
434 return_ACPI_STATUS(AE_AML_INTERNAL); 443 return_ACPI_STATUS(AE_AML_INTERNAL);
435 } 444 }
436 } 445 }