AML parser modifications - 2.6.10 - 2.6.10-bk7 - AE_AML_BUFFER_LIMIT
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] (Nodeffff8100018b5130), 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] (Nodeffff81001fce5130), 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
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