Skip to contentSkip to conversation

AML parser modifications - 2.6.10 - 2.6.10-bk7 - AE_AML_BUFFER_LIMIT

DISCUSSION Thomas Renninger 2 participants 2 messages Feb 4, 2005 – Feb 7, 2005 1 message not in the archive ACPI

lore
Share & tools
lore
#0 lore raw

Hi,

I have a machine booting with 2.6.10 not booting any more with 2.6.10-bk7 .

The error during boot is (sorry for the bad formatting):

Executing all Device _STA and_INI methods:.....exoparg2-0436 [14] ex_opcode_2A_1T_1R : Index value (14) beyond end of buffer (14)
psparse-1138: *** Error: Method execution failed [\STRC] (Node
ffff8100018b5130), AE_AML_BUFFER_LIMIT psparse-1138: *** Error: Method execution failed [\_SB_.PCI0._INI] (Node ffff8100018a00b0), AE_AML_BUFFER_LIMIT nsinit-0414 [06] ns_init_one_device : \_SB_.PCI0._INI._INI failed: AE_AML_BUFFER_LIMIT
...................................................
56 Devices found containing: 56 _STA, 1 _INI methods

The error is thrown in a kind of "strcmp" function \_STRC that compares the operating system string:

    Method (STRC, 2, NotSerialized)
    {
        If (LNot (LEqual (SizeOf (Arg0), SizeOf (Arg1))))
        {
            Return (0x00)
        }
        Add (SizeOf (Arg0), 0x01, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LNot (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf 
(Index (BUF1, Local0)))))
            {
                Return (Zero)
            }
        }
        Return (One)
    }

_______________________________________________________________________

Adding these addtional debug statements:

    Method (STRC, 2, NotSerialized)
    {
        Store (Arg0, Debug)
        Store (Arg1, Debug)
	Store (sizeof(Arg0), Debug)
	Store (sizeof(Arg1), Debug)
        If (LNot (LEqual (SizeOf (Arg0), SizeOf (Arg1))))
        {
            Return (0x00)
        }
        Store ("Strings should have the same size", Debug)
        Add (SizeOf (Arg0), 0x01, Local0)
        Name (BUF0, Buffer (Local0) {})
        Add (SizeOf (Arg1), 0x01, Local0)
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
	    Store (Local0, Debug)
            If (LNot (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf 
(Index (BUF1, Local0)))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

Gave me this output:

Completing Region/Field/Buffer/Package initialization:........................................................
..............................
Initialized 36/36 Regions 18/18 Fields 19/19 Buffers 13/23 Packages (681 nodes)
Executing all Device _STA and_INI methods:.....[ACPI Debug] String: [0x14] "Microsoft Windows NT" [ACPI Debug] String: [0x11] "Microsoft Windows"
[ACPI Debug] Integer: 0x00000014
[ACPI Debug] Integer: 0x00000011
[ACPI Debug] String: [0x14] "Microsoft Windows NT"
[ACPI Debug] String: [0x14] "Microsoft Windows NT"
[ACPI Debug] Integer: 0x00000014
[ACPI Debug] Integer: 0x00000014
[ACPI Debug] String: [0x21] "Strings should have the same size"
[ACPI Debug] Integer: 0x00000014
exoparg2-0436 [14] ex_opcode_2A_1T_1R : Index value (14) beyond end of buffer (14)
psparse-1138: *** Error: Method execution failed [\STRC] (Node
ffff81001fce5130), AE_AML_BUFFER_LIMIT
psparse-1138: *** Error: Method execution failed [\_SB_.PCI0._INI]
(Node ffff81001fcd00b0), AE_AML_BUFFER_LIM
IT
nsinit-0414 [06] ns_init_one_device : \_SB_.PCI0._INI._INI failed:
AE_AML_BUFFER_LIMIT

__________________________________________________________________________

Seems as if accessing BUF0[20] (C style) the kernel thinks the index is out of bounds, but it shouldn't ?!? Is this a regression in the kernel, or was the dsdt code/syntax always wrong, but accepted by previous kernels?

Tell me if you need more info.

Thanks,

Thomas

-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl

A message that is not in the archive (sent off-list or not yet received): 4203EA90.6020005-smMupaH/[email protected]

#2 lore raw

Thomas Renninger wrote:
:
: I have a machine booting with 2.6.10 not booting any more with 2.6.10-bk7 .

I want to add a "me too" (I have posted this few days ago).
Asus M6R, the similar "kind-of-strcmp" method, which fails on newer kernels with AE_AML_BUFFER_LIMIT (2.6.9 is OK).

[...]
: Seems as if accessing BUF0[20] (C style) the kernel thinks the index is : out of bounds, but it shouldn't ?!?
: Is this a regression in the kernel, or was the dsdt code/syntax always : wrong, but accepted by previous kernels?

I don't know either. But 2.6.9 seems to be OK WRT this.

-Y.

Signature · 3 lines
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/   Czech Linux Homepage: http://www.linux.cz/ |
Quoted 2 lines

Whatever the Java applications and desktop dances may lead to, Unix will <
still be pushing the packets around for a quite a while. --Rob Pike <

-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl