Module Name:    src
Committed By:   cegger
Date:           Mon Aug 17 15:36:10 UTC 2009

Modified Files:
        src/sys/dist/acpica: hwregs.c

Log Message:
Apply fix from upstream:
http://git.moblin.org/cgit.cgi/acpica/commit/?id=26a2eea9f4a18acb0ba2a92070d945d9835df948

I uncovered the bug by having the console flooded with:

ACPI Error (evgpe-0896): No handler or method for GPE[ 0], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 1], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 2], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 4], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 5], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 6], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 7], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 8], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ 9], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ A], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ B], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ C], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ D], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ E], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[ F], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[10], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[11], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[12], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[13], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[14], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[15], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[16], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[17], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[18], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[19], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[1A], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[1B], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[1C], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[1D], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[1E], disabling event 
[20080321]
ACPI Error (evgpe-0896): No handler or method for GPE[1F], disabling event 
[20080321]

and with breaking into ddb:

ACPI Error (evgpe-0899): No handler or method for GPE[ 0], disabling event 
[20080321]
fatal breakpoint trap in supervisor mode
trap type 1 code 0 rip ffffffff8020c1fd cs e030 rflags 296 cr2  0 cpl 8 rsp 
ffffffff80f32c98
Stopped in pid 0.1 (system) at  netbsd:breakpoint+0x5:  leave
breakpoint() at netbsd:breakpoint+0x5
AcpiEvGpeDispatch() at netbsd:AcpiEvGpeDispatch+0x9f
AcpiEvGpeDetect() at netbsd:AcpiEvGpeDetect+0x136
AcpiEvSciXruptHandler() at netbsd:AcpiEvSciXruptHandler+0x46
Xresume_xenev6() at netbsd:Xresume_xenev6+0x55

With this merged fix console is no longer flooded and I get in dmesg:

ACPI Exception (evevent-0165): AE_BAD_ADDRESS, Unable to initialize fixed 
events [20080321]
acpi0: unable to enable ACPI: AE_BAD_ADDRESS

Upstream fix pointed out by jmcneill@, merged fix ok'd by jo...@.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/dist/acpica/hwregs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dist/acpica/hwregs.c
diff -u src/sys/dist/acpica/hwregs.c:1.4 src/sys/dist/acpica/hwregs.c:1.5
--- src/sys/dist/acpica/hwregs.c:1.4	Sat Apr 12 16:16:08 2008
+++ src/sys/dist/acpica/hwregs.c	Mon Aug 17 15:36:10 2009
@@ -3,7 +3,7 @@
  *
  * Module Name: hwregs - Read/write access functions for the various ACPI
  *                       control and status registers.
- *              $Revision: 1.4 $
+ *              $Revision: 1.5 $
  *
  ******************************************************************************/
 
@@ -869,13 +869,12 @@
 
 
     /*
-     * Must have a valid pointer to a GAS structure, and
-     * a non-zero address within. However, don't return an error
-     * because the PM1A/B code must not fail if B isn't present.
+     * Must have a valid pointer to a GAS structure, and a non-zero address
+     * within.
      */
     if (!Reg)
     {
-        return (AE_OK);
+        return (AE_BAD_PARAMETER);
     }
 
     /* Get a local copy of the address. Handles possible alignment issues */
@@ -883,7 +882,7 @@
     ACPI_MOVE_64_TO_64 (&Address, &Reg->Address);
     if (!Address)
     {
-        return (AE_OK);
+        return (AE_BAD_ADDRESS);
     }
     *Value = 0;
 
@@ -949,13 +948,12 @@
 
 
     /*
-     * Must have a valid pointer to a GAS structure, and
-     * a non-zero address within. However, don't return an error
-     * because the PM1A/B code must not fail if B isn't present.
+     * Must have a valid pointer to a GAS structure, and a non-zero address
+     * within.
      */
     if (!Reg)
     {
-        return (AE_OK);
+        return (AE_BAD_PARAMETER);
     }
 
     /* Get a local copy of the address. Handles possible alignment issues */
@@ -963,7 +961,7 @@
     ACPI_MOVE_64_TO_64 (&Address, &Reg->Address);
     if (!Address)
     {
-        return (AE_OK);
+        return (AE_BAD_ADDRESS);
     }
 
     /*

Reply via email to