aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/events/evregion.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/events/evregion.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/events/evregion.c')
-rw-r--r--drivers/acpi/events/evregion.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/drivers/acpi/events/evregion.c b/drivers/acpi/events/evregion.c
index 900e5b32e595..6da58e776413 100644
--- a/drivers/acpi/events/evregion.c
+++ b/drivers/acpi/events/evregion.c
@@ -295,11 +295,12 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
295 295
296 handler_desc = region_obj->region.handler; 296 handler_desc = region_obj->region.handler;
297 if (!handler_desc) { 297 if (!handler_desc) {
298 ACPI_REPORT_ERROR(("No handler for Region [%4.4s] (%p) [%s]\n", 298 ACPI_ERROR((AE_INFO,
299 acpi_ut_get_node_name(region_obj->region. 299 "No handler for Region [%4.4s] (%p) [%s]",
300 node), region_obj, 300 acpi_ut_get_node_name(region_obj->region.node),
301 acpi_ut_get_region_name(region_obj->region. 301 region_obj,
302 space_id))); 302 acpi_ut_get_region_name(region_obj->region.
303 space_id)));
303 304
304 return_ACPI_STATUS(AE_NOT_EXIST); 305 return_ACPI_STATUS(AE_NOT_EXIST);
305 } 306 }
@@ -316,7 +317,11 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
316 if (!region_setup) { 317 if (!region_setup) {
317 /* No initialization routine, exit with error */ 318 /* No initialization routine, exit with error */
318 319
319 ACPI_REPORT_ERROR(("No init routine for region(%p) [%s]\n", region_obj, acpi_ut_get_region_name(region_obj->region.space_id))); 320 ACPI_ERROR((AE_INFO,
321 "No init routine for region(%p) [%s]",
322 region_obj,
323 acpi_ut_get_region_name(region_obj->region.
324 space_id)));
320 return_ACPI_STATUS(AE_NOT_EXIST); 325 return_ACPI_STATUS(AE_NOT_EXIST);
321 } 326 }
322 327
@@ -341,11 +346,11 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
341 /* Check for failure of the Region Setup */ 346 /* Check for failure of the Region Setup */
342 347
343 if (ACPI_FAILURE(status)) { 348 if (ACPI_FAILURE(status)) {
344 ACPI_REPORT_ERROR(("Region Initialization: %s [%s]\n", 349 ACPI_EXCEPTION((AE_INFO, status,
345 acpi_format_exception(status), 350 "During region initialization: [%s]",
346 acpi_ut_get_region_name(region_obj-> 351 acpi_ut_get_region_name(region_obj->
347 region. 352 region.
348 space_id))); 353 space_id)));
349 return_ACPI_STATUS(status); 354 return_ACPI_STATUS(status);
350 } 355 }
351 356
@@ -399,10 +404,9 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
399 region_obj2->extra.region_context); 404 region_obj2->extra.region_context);
400 405
401 if (ACPI_FAILURE(status)) { 406 if (ACPI_FAILURE(status)) {
402 ACPI_REPORT_ERROR(("Handler for [%s] returned %s\n", 407 ACPI_EXCEPTION((AE_INFO, status, "Returned by Handler for [%s]",
403 acpi_ut_get_region_name(region_obj->region. 408 acpi_ut_get_region_name(region_obj->region.
404 space_id), 409 space_id)));
405 acpi_format_exception(status)));
406 } 410 }
407 411
408 if (! 412 if (!
@@ -494,7 +498,10 @@ acpi_ev_detach_region(union acpi_operand_object *region_obj,
494 498
495 status = acpi_ev_execute_reg_method(region_obj, 0); 499 status = acpi_ev_execute_reg_method(region_obj, 0);
496 if (ACPI_FAILURE(status)) { 500 if (ACPI_FAILURE(status)) {
497 ACPI_REPORT_ERROR(("%s from region _REG, [%s]\n", acpi_format_exception(status), acpi_ut_get_region_name(region_obj->region.space_id))); 501 ACPI_EXCEPTION((AE_INFO, status,
502 "from region _REG, [%s]",
503 acpi_ut_get_region_name
504 (region_obj->region.space_id)));
498 } 505 }
499 506
500 if (acpi_ns_is_locked) { 507 if (acpi_ns_is_locked) {
@@ -516,7 +523,10 @@ acpi_ev_detach_region(union acpi_operand_object *region_obj,
516 /* Init routine may fail, Just ignore errors */ 523 /* Init routine may fail, Just ignore errors */
517 524
518 if (ACPI_FAILURE(status)) { 525 if (ACPI_FAILURE(status)) {
519 ACPI_REPORT_ERROR(("%s from region init, [%s]\n", acpi_format_exception(status), acpi_ut_get_region_name(region_obj->region.space_id))); 526 ACPI_EXCEPTION((AE_INFO, status,
527 "from region init, [%s]",
528 acpi_ut_get_region_name
529 (region_obj->region.space_id)));
520 } 530 }
521 531
522 region_obj->region.flags &= ~(AOPOBJ_SETUP_COMPLETE); 532 region_obj->region.flags &= ~(AOPOBJ_SETUP_COMPLETE);