Bug 37922

Summary: ACPI Error: Field [CMDX] at 224 exceeds Buffer [SCBF] size 168 (bits) (20110413/dsopcode-236)
Product: ACPI Reporter: Cristian Aravena Romero (caravena)
Component: BIOSAssignee: acpi_bios
Status: CLOSED WILL_NOT_FIX    
Severity: normal CC: lenb
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.0-rc3 Subsystem:
Regression: No Bisected commit-id:
Attachments: acpidump

Description Cristian Aravena Romero 2011-06-19 19:49:41 UTC
Open report in launchpad.net:
https://bugs.launchpad.net/bugs/799518

Dmesg:
[ 515.051387] ata1.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
[ 515.051395] ata1.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
[ 515.051402] ata1.00: ACPI cmd f5/00:00:00:00:00:00 (SECURITY FREEZE LOCK) filtered out
[ 515.055298] ACPI Error: Field [CMDX] at 224 exceeds Buffer [SCBF] size 168 (bits) (20110413/dsopcode-236)
[ 515.055311] ACPI Error: Method parse/execution failed [\_SB_.PCI0.SATA.GTFB] (Node ffff8800b29616b8), AE_AML_BUFFER_LIMIT (20110413/psparse-536)
[ 515.055328] ACPI Error: Method parse/execution failed [\_SB_.PCI0.SATA.SPT0._SDD] (Node ffff8800b2961578), AE_AML_BUFFER_LIMIT (20110413/psparse-536)
[ 515.055347] ata1.00: ACPI _SDD failed (AE 0x300a)
Comment 1 Cristian Aravena Romero 2011-06-19 19:50:47 UTC
Created attachment 62912 [details]
acpidump
Comment 2 Lin Ming 2011-06-21 02:33:50 UTC
This is a BIOS AML code bug.

        Name (CMDC, 0x00)
        Method (GTFB, 2, Serialized)
        {
            Multiply (CMDC, 0x38, Local0)
            CreateField (SCBF, Local0, 0x38, CMDX)
            Multiply (CMDC, 0x07, Local0)
            CreateByteField (SCBF, Add (Local0, 0x01), A001)
            Store (Arg0, CMDX)
            Store (Arg1, A001)
            Increment (CMDC)
        }

> Increment (CMDC)
CMDC is incremented every time when GTFB called.

> Multiply (CMDC, 0x38, Local0)
> CreateField (SCBF, Local0, 0x38, CMDX)
CreateField fails when CMDC is incremented to 4, because it exceeds the buffer size.