aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/events/evgpe.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/evgpe.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/evgpe.c')
-rw-r--r--drivers/acpi/events/evgpe.c42
1 files changed, 27 insertions, 15 deletions
diff --git a/drivers/acpi/events/evgpe.c b/drivers/acpi/events/evgpe.c
index 353b907edbfa..f64f977dd3d5 100644
--- a/drivers/acpi/events/evgpe.c
+++ b/drivers/acpi/events/evgpe.c
@@ -379,7 +379,7 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list)
379 u8 enabled_status_byte; 379 u8 enabled_status_byte;
380 u32 status_reg; 380 u32 status_reg;
381 u32 enable_reg; 381 u32 enable_reg;
382 acpi_native_uint flags; 382 acpi_cpu_flags flags;
383 acpi_native_uint i; 383 acpi_native_uint i;
384 acpi_native_uint j; 384 acpi_native_uint j;
385 385
@@ -546,7 +546,11 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)
546 546
547 status = acpi_ns_evaluate_by_handle(&info); 547 status = acpi_ns_evaluate_by_handle(&info);
548 if (ACPI_FAILURE(status)) { 548 if (ACPI_FAILURE(status)) {
549 ACPI_REPORT_ERROR(("%s while evaluating method [%4.4s] for GPE[%2X]\n", acpi_format_exception(status), acpi_ut_get_node_name(local_gpe_event_info.dispatch.method_node), gpe_number)); 549 ACPI_EXCEPTION((AE_INFO, status,
550 "While evaluating method [%4.4s] for GPE[%2X]",
551 acpi_ut_get_node_name
552 (local_gpe_event_info.dispatch.
553 method_node), gpe_number));
550 } 554 }
551 } 555 }
552 556
@@ -599,9 +603,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
599 ACPI_GPE_EDGE_TRIGGERED) { 603 ACPI_GPE_EDGE_TRIGGERED) {
600 status = acpi_hw_clear_gpe(gpe_event_info); 604 status = acpi_hw_clear_gpe(gpe_event_info);
601 if (ACPI_FAILURE(status)) { 605 if (ACPI_FAILURE(status)) {
602 ACPI_REPORT_ERROR(("%s, Unable to clear GPE[%2X]\n", 606 ACPI_EXCEPTION((AE_INFO, status,
603 acpi_format_exception(status), 607 "Unable to clear GPE[%2X]",
604 gpe_number)); 608 gpe_number));
605 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED); 609 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
606 } 610 }
607 } 611 }
@@ -639,7 +643,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
639 ACPI_GPE_LEVEL_TRIGGERED) { 643 ACPI_GPE_LEVEL_TRIGGERED) {
640 status = acpi_hw_clear_gpe(gpe_event_info); 644 status = acpi_hw_clear_gpe(gpe_event_info);
641 if (ACPI_FAILURE(status)) { 645 if (ACPI_FAILURE(status)) {
642 ACPI_REPORT_ERROR(("%s, Unable to clear GPE[%2X]\n", acpi_format_exception(status), gpe_number)); 646 ACPI_EXCEPTION((AE_INFO, status,
647 "Unable to clear GPE[%2X]",
648 gpe_number));
643 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED); 649 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
644 } 650 }
645 } 651 }
@@ -653,9 +659,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
653 */ 659 */
654 status = acpi_ev_disable_gpe(gpe_event_info); 660 status = acpi_ev_disable_gpe(gpe_event_info);
655 if (ACPI_FAILURE(status)) { 661 if (ACPI_FAILURE(status)) {
656 ACPI_REPORT_ERROR(("%s, Unable to disable GPE[%2X]\n", 662 ACPI_EXCEPTION((AE_INFO, status,
657 acpi_format_exception(status), 663 "Unable to disable GPE[%2X]",
658 gpe_number)); 664 gpe_number));
659 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED); 665 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
660 } 666 }
661 667
@@ -667,7 +673,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
667 acpi_ev_asynch_execute_gpe_method, 673 acpi_ev_asynch_execute_gpe_method,
668 gpe_event_info); 674 gpe_event_info);
669 if (ACPI_FAILURE(status)) { 675 if (ACPI_FAILURE(status)) {
670 ACPI_REPORT_ERROR(("%s, Unable to queue handler for GPE[%2X] - event disabled\n", acpi_format_exception(status), gpe_number)); 676 ACPI_EXCEPTION((AE_INFO, status,
677 "Unable to queue handler for GPE[%2X] - event disabled",
678 gpe_number));
671 } 679 }
672 break; 680 break;
673 681
@@ -675,7 +683,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
675 683
676 /* No handler or method to run! */ 684 /* No handler or method to run! */
677 685
678 ACPI_REPORT_ERROR(("No handler or method for GPE[%2X], disabling event\n", gpe_number)); 686 ACPI_ERROR((AE_INFO,
687 "No handler or method for GPE[%2X], disabling event",
688 gpe_number));
679 689
680 /* 690 /*
681 * Disable the GPE. The GPE will remain disabled until the ACPI 691 * Disable the GPE. The GPE will remain disabled until the ACPI
@@ -683,9 +693,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
683 */ 693 */
684 status = acpi_ev_disable_gpe(gpe_event_info); 694 status = acpi_ev_disable_gpe(gpe_event_info);
685 if (ACPI_FAILURE(status)) { 695 if (ACPI_FAILURE(status)) {
686 ACPI_REPORT_ERROR(("%s, Unable to disable GPE[%2X]\n", 696 ACPI_EXCEPTION((AE_INFO, status,
687 acpi_format_exception(status), 697 "Unable to disable GPE[%2X]",
688 gpe_number)); 698 gpe_number));
689 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED); 699 return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
690 } 700 }
691 break; 701 break;
@@ -728,7 +738,9 @@ acpi_ev_check_for_wake_only_gpe(struct acpi_gpe_event_info *gpe_event_info)
728 738
729 acpi_ev_set_gpe_type(gpe_event_info, ACPI_GPE_TYPE_WAKE); 739 acpi_ev_set_gpe_type(gpe_event_info, ACPI_GPE_TYPE_WAKE);
730 740
731 ACPI_REPORT_INFO(("GPE %p was updated from wake/run to wake-only\n", gpe_event_info)); 741 ACPI_INFO((AE_INFO,
742 "GPE %p was updated from wake/run to wake-only",
743 gpe_event_info));
732 744
733 /* This was a wake-only GPE */ 745 /* This was a wake-only GPE */
734 746