Skip to contentSkip to conversation

Asus K8V Delux broken acpi tables?

DISCUSSION Phillip Susi 3 participants 7 messages Oct 8, 2005 – Oct 12, 2005 4 messages not in the archive ACPI

lore
Share & tools
lore
#0 lore raw

As requested, I have attached the output of lspci, dmidecode, dmesg, and acpidump. To keep the size down, they are in a tarball.

There seems to be something wrong with the acpi tables in the bios because when I try to suspend or hibernate I see things like this:

[   32.830712]     ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.IDE C.RATA] (Node ffff81003f0da980), AE_AML_OPERAND_VALUE
[   32.830794]     ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.IDE C.CHN0.DRV0._GTF] (Node ffff81003f0d9100), AE_AML_OPERAND_VALUE

Hibernation seems to work anyhow, but suspend to ram does not. When I wake back up from being suspended to ram, the sata disk driver complained that a register was in an incorrect state, and the system hung.

Could someone help me figure out how to correct this?

-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw

Oops! NOW the tarball is attached.

Quoted 21 lines · Phillip Susi

As requested, I have attached the output of lspci, dmidecode, dmesg, and acpidump. To keep the size down, they are in a tarball.
There seems to be something wrong with the acpi tables in the bios because when I try to suspend or hibernate I see things like this:

[   32.830712]     ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.IDE C.RATA] (Node ffff81003f0da980), AE_AML_OPERAND_VALUE
[   32.830794]     ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.IDE C.CHN0.DRV0._GTF] (Node ffff81003f0d9100), AE_AML_OPERAND_VALUE

Hibernation seems to work anyhow, but suspend to ram does not. When I wake back up from being suspended to ram, the sata disk driver complained that a register was in an incorrect state, and the system hung. Could someone help me figure out how to correct this?

-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Acpi-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-devel

A message that is not in the archive (sent off-list or not yet received): [email protected]

#4 lore raw
Quoted 12 lines · Phillip Susi

Oops! NOW the tarball is attached.

Quoted 9 lines · Phillip Susi

As requested, I have attached the output of lspci, dmidecode, dmesg, and acpidump. To keep the size down, they are in a tarball.
There seems to be something wrong with the acpi tables in the bios because when I try to suspend or hibernate I see things like this:

[   32.830712]     ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.IDE C.RATA] (Node ffff81003f0da980), AE_AML_OPERAND_VALUE
[   32.830794]     ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.IDE C.CHN0.DRV0._GTF] (Node ffff81003f0d9100), AE_AML_OPERAND_VALUE

Hibernation seems to work anyhow, but suspend to ram does not. When I wake back up from being suspended to ram, the sata disk driver complained that a register was in an incorrect state, and the system hung. Could someone help me figure out how to correct this?

I guess that the

        Name (ATA0, Buffer (0x1D) {})

declaration needs to be before it is actually used.

I wonder why the SATA drive only does not work after STR?!?
Attached are my changes, which hopefully let above errors vanish.
Chances are high that this is related to your machine's uncorrect SATA register state complains.
I also exchanged some WordAcc to AnyAcc field declarations so that the compiler does not complain about wrong field widths, maybe it's even this what causes incorrect register reads/writes.

Do you know how to recompile and override your DSDT?

Do you already have the lates BIOS installed? Better check that first.

Thomas

dsdt.dsl renamed from dsdt.dsl.orig +17 -15
@@ -2246,6 +2246,13 @@
                 Name (GSUE, 0x00)
                 Name (GSUT, 0x00)
                 Name (GSCR, 0x00)
+
+		Name (ATA0, Buffer (0x1D) {})
+                Name (ATA1, Buffer (0x1D) {})
+                Name (ATA2, Buffer (0x1D) {})
+                Name (ATA3, Buffer (0x1D) {})
+                Name (ATAB, Buffer (0x1D) {})
+                
                 Device (CHN0)
                 {
                     Name (_ADR, 0x00)
@@ -2473,11 +2480,6 @@
                 {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                 })
-                Name (ATA0, Buffer (0x1D) {})
-                Name (ATA1, Buffer (0x1D) {})
-                Name (ATA2, Buffer (0x1D) {})
-                Name (ATA3, Buffer (0x1D) {})
-                Name (ATAB, Buffer (0x1D) {})
                 CreateByteField (ATAB, 0x00, CMDC)
                 Method (GTFB, 3, Serialized)
                 {
@@ -2612,19 +2614,19 @@
             {
                 Name (_ADR, 0x00100000)
                 OperationRegion (WAU1, PCI_Config, 0x84, 0x01)
-                Field (WAU1, WordAcc, NoLock, Preserve)
+                Field (WAU1, ByteAcc, NoLock, Preserve)
                 {
                     U184,   8
                 }
 
                 OperationRegion (U1D3, PCI_Config, 0x49, 0x01)
-                Field (U1D3, WordAcc, NoLock, Preserve)
+                Field (U1D3, AnyAcc, NoLock, Preserve)
                 {
                     UR49,   3
                 }
 
                 OperationRegion (UBP1, PCI_Config, 0x85, 0x01)
-                Field (UBP1, WordAcc, NoLock, Preserve)
+                Field (UBP1, AnyAcc, NoLock, Preserve)
                 {
                     U1PE,   1
                 }
@@ -2651,13 +2653,13 @@
             {
                 Name (_ADR, 0x00100001)
                 OperationRegion (WAU2, PCI_Config, 0x84, 0x01)
-                Field (WAU2, WordAcc, NoLock, Preserve)
+                Field (WAU2, AnyAcc, NoLock, Preserve)
                 {
                     U284,   8
                 }
 
                 OperationRegion (UBP2, PCI_Config, 0x85, 0x01)
-                Field (UBP2, WordAcc, NoLock, Preserve)
+                Field (UBP2, AnyAcc, NoLock, Preserve)
                 {
                     U2PE,   1
                 }
@@ -2684,13 +2686,13 @@
             {
                 Name (_ADR, 0x00100002)
                 OperationRegion (WAU3, PCI_Config, 0x84, 0x01)
-                Field (WAU3, WordAcc, NoLock, Preserve)
+                Field (WAU3, AnyAcc, NoLock, Preserve)
                 {
                     U384,   8
                 }
 
                 OperationRegion (UBP3, PCI_Config, 0x85, 0x01)
-                Field (UBP3, WordAcc, NoLock, Preserve)
+                Field (UBP3, AnyAcc, NoLock, Preserve)
                 {
                     U3PE,   1
                 }
@@ -2717,13 +2719,13 @@
             {
                 Name (_ADR, 0x00100003)
                 OperationRegion (WAU4, PCI_Config, 0x84, 0x01)
-                Field (WAU4, WordAcc, NoLock, Preserve)
+                Field (WAU4, AnyAcc, NoLock, Preserve)
                 {
                     U484,   8
                 }
 
                 OperationRegion (UBP4, PCI_Config, 0x85, 0x01)
-                Field (UBP4, WordAcc, NoLock, Preserve)
+                Field (UBP4, AnyAcc, NoLock, Preserve)
                 {
                     U4PE,   1
                 }
@@ -2750,7 +2752,7 @@
             {
                 Name (_ADR, 0x00100004)
                 OperationRegion (WAU5, PCI_Config, 0x84, 0x01)
-                Field (WAU5, WordAcc, NoLock, Preserve)
+                Field (WAU5, AnyAcc, NoLock, Preserve)
                 {
                     U584,   8
                 }

A message that is not in the archive (sent off-list or not yet received): [email protected]

#6 lore raw

I think I updated my bios a month or two ago. I'm not quite sure how to recompile my DSDT. I thought I needed to use iasl to decompile the existing DSDT from acpidump, then apply your patch, then recompile. I seem to be missing something though, iasl -d doesn't seem to like my acpidump.log.

Also getting iasl compiled was kind of a pain, the code is a bit borked. First I had to add the -l flag to flex so that unput() could be used correctly, then the code was declaring a variable in one place as a char [] and in another as a char *, so I had to fix that to get it to compile. Even then it had a bunch of warnings because of incorrect casts due to assumptions about being on a 32bit architecture ( I'm running 64 bit ).

Quoted 9 lines · Thomas Renninger

I guess that the

        Name (ATA0, Buffer (0x1D) {})

declaration needs to be before it is actually used.

I wonder why the SATA drive only does not work after STR?!?
Attached are my changes, which hopefully let above errors vanish.
Chances are high that this is related to your machine's uncorrect SATA register state complains.
I also exchanged some WordAcc to AnyAcc field declarations so that the compiler does not complain about wrong field widths, maybe it's even this what causes incorrect register reads/writes.

Quoted 6 lines

Do you know how to recompile and override your DSDT?

Do you already have the lates BIOS installed? Better check that first.

Thomas

-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl

A message that is not in the archive (sent off-list or not yet received): [email protected]

#8 lore raw

I got iasl -d to disassemble /proc/acpi/dsdt, and your patch cleanly applied to that. When I try to recompile the patched file, I get these errors though:

dsdt.dsl 54: Store (0xAA, DBG8)
Error 1061 - Object does not exist ^ (DBG8)

dsdt.dsl 58: Store (0xAC, DBG8)
Error 1061 - Object does not exist ^ (DBG8)

dsdt.dsl 65: Method (OSFL, 0, NotSerialized)
Warning 2085 - ^ Not all control paths return a value (OSFL)

dsdt.dsl 74: Store (0xAC, DBG8)
Error 1061 - Object does not exist ^ (DBG8)

dsdt.dsl 78: If (MCTH (\_OS, "Microsoft Windows NT"))
Error 1094 - ^ syntax error, unexpected PARSEOP_NAMESEG, expecting ')'

dsdt.dsl 82: Else
Error 1094 - ^ syntax error, unexpected PARSEOP_ELSE

dsdt.dsl 84: If (MCTH (\_OS, "Microsoft WindowsME: Millennium Edition"))
Error 1094 - ^ syntax error, unexpected PARSEOP_NAMESEG, expecting ')'
dsdt.dsl 88: }
Error 1094 - ^ syntax error, unexpected '}', expecting $end

Any ideas?

Quoted 3 lines · Phillip Susi

I think I updated my bios a month or two ago. I'm not quite sure how to recompile my DSDT. I thought I needed to use iasl to decompile the existing DSDT from acpidump, then apply your patch, then recompile. I seem to be missing something though, iasl -d doesn't seem to like my acpidump.log.
Also getting iasl compiled was kind of a pain, the code is a bit borked. First I had to add the -l flag to flex so that unput() could be used correctly, then the code was declaring a variable in one place as a char [] and in another as a char *, so I had to fix that to get it to compile. Even then it had a bunch of warnings because of incorrect casts due to assumptions about being on a 32bit architecture ( I'm running 64 bit ).

-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl

#9 lore raw
In reply to a message not in the archive
Quoted 2 lines · Phillip Susi

I think I updated my bios a month or two ago. I'm not quite sure how to recompile my DSDT. I thought I needed to use iasl to decompile the existing DSDT from acpidump, then apply your patch, then recompile. I seem to be missing something though, iasl -d doesn't seem to like my acpidump.log.
Also getting iasl compiled was kind of a pain, the code is a bit borked. First I had to add the -l flag to flex so that unput() could be used correctly, then the code was declaring a variable in one place as a char [] and in another as a char *, so I had to fix that to get it to compile. Even then it had a bunch of warnings because of incorrect casts due to assumptions about being on a 32bit architecture ( I'm running 64 bit ).

I used ACPICA 20050902 compiler.
Hopefully there is nothing broken in newer versions? I will give it a try if I find the time ... I will send you the compiled versions privately.

Thomas

-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl

#10 lore raw
In reply to a message not in the archive
Quoted 3 lines · Phillip Susi

Hibernation seems to work anyhow, but suspend to ram does not. When I wake back up from being suspended to ram, the sata disk driver complained that a register was in an incorrect state, and the system hung.

Which kernel version?
The ACPI error and the suspend to RAM failure could be entirely different problems, SATA in mainline kernel has only very recently got suspend/resume support IIRC.

Signature · 8 lines
Stefan Seyfried



-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl