Also one External is declared as internal object, but it's a method with one argument. I tried: iasl -d -e DSDT.dat SSDT2.dat iasl -sa SSDT2.dsl There is: External (C0E5, MethodObj) // 6 Arguments External (C0E0, IntObj) But in DSDT those are declared as: Method (C0E5, 5, Serialized) Method (C0E0, 1, Serialized) Therefore compiling SSDT2 results in wrong output: Store (C0E5 (0x00, 0x00, C333, C334, Local1, Local3), \_SB.C234) Local2 Local3 Local1 C331 Store (C0E0, 0x00) C334 I know this is known, I just want to note it down and add a table for verification/testing. Tell me how I can help further.
Created attachment 9123 [details] acpidump of affected BIOS
Essentially, since there is no information in the AML that tells the disassembler how many arguments there are for an external method, the disassembler has to attempt an educated guess. I'm not sure that there is any way to deterministically glean the number of arguments. Any ideas on this are welcome.
iASL issues should be filed in the (newly public) acpica bugzilla, http://acpica.org/bugzilla/ rather than here in the kernel.org (Linux kernel specific) bugzilla.