Bug 9804
Summary: | S3 resume: ACPI Error (dsopcode-0481): Attempt to CreateField of length zero - _GTF evaluation failed | ||
---|---|---|---|
Product: | ACPI | Reporter: | Bruce Duncan (bwduncan) |
Component: | Power-Sleep-Wake | Assignee: | ykzhao (yakui.zhao) |
Status: | CLOSED PATCH_ALREADY_AVAILABLE | ||
Severity: | normal | CC: | acpi-bugzilla, bug-track |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.24-rc8 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
acpidump output
dmidecode output try the debug patch dmesg-von-alexy |
Description
Bruce Duncan
2008-01-23 09:25:58 UTC
Created attachment 14545 [details]
acpidump output
Created attachment 14546 [details]
dmidecode output
Will you please try the boot ption of "libata.noacpi=1" and see whether the above error disappears? Thanks. Yes, it does! Thanks. Bruce *** Bug 9930 has been marked as a duplicate of this bug. *** This is the sequence to the failure, from the DSDT given above: Name (ATA1, Buffer (0x1D) {}) Device (DRV1) { Name (_ADR, One) Method (_GTF, 0, NotSerialized) { Return (RATA (ATA1)) } } Method (RATA, 1, NotSerialized) { CreateByteField (Arg0, Zero, CMDN) Multiply (CMDN, 0x38, Local0) CreateField (Arg0, 0x08, Local0, RETB) Store (RETB, Debug) Return (RETB) } It looks like the ATA1 buffer is being initialized to zero, or not being initialized at all. The only place in the DSDT where ATA1 is initialized is here: Method (_STM, 3, NotSerialized) { Store (Arg0, TMD0) Store (PRW0, GMPT) Store (PRW1, GSPT) Store (UDTP, GMUT) Store (PAST, GAST) Store (PCBT, GCBT) STM () Store (GMPT, PRW0) Store (GSPT, PRW1) Store (GMUT, UDTP) Store (GAST, PAST) Store (GCBT, PCBT) Store (GTF (Zero, Arg1), ATA0) Store (GTF (One, Arg2), ATA1) } The path to this method is \_SB_.PCI0.IDE0.CHN0._STM. I suspect one of the following is the cause of the problem: 1) This _STM method is never being called by the host 2) An incorrect "drive 1 ATA block" is being passed to _STM by the host 3) The GTF control method is not returning a correctly initialized buffer That's as much as I can glean from the DSDT. Bob Created attachment 15525 [details]
try the debug patch
Hi, Bruce
Will you please try the debug patch and see whether the problem still exists?
Thanks.
In current kernel the _GTF method will be called for every ata drive when the system is resumed from S3. But when _GTF method is called for the disabled ata drive, the following error message will appear.
>ACPI Error (dsopcode-0483): Attempt to CreateField of length zero [20070126]
>ACPI Error (psparse-0537): Method parse/execution failed
>[\_SB_.PCI0.IDE0.RATA] (Node df822a7c), AE_AML_OPERAND_VALUE
>ACPI Error (psparse-0537): Method parse/execution failed
>[\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node df822bd0), AE_AML_OPERAND_VALUE
>ata2.00: _GTF evaluation failed (AE 0x3006)
Maybe it is appropriate to call _GTF method only for the enabled ATA drive.
Created attachment 15541 [details]
dmesg-von-alexy
This patch working for me.
shipped in 2.6.26-rc1 - closed. commit 48feb3c419508487becfb9ea3afcc54c3eac6d80 Author: Shaohua Li <shaohua.li@intel.com> Date: Tue Mar 25 16:50:45 2008 +0800 ata-acpi: don't call _GTF for disabled drive |