Bug 200999

Summary: ACPI Error Method parse/execution failed HP ZBook 15 G4
Product: ACPI Reporter: q x (xiongqr)
Component: BIOSAssignee: Erik Kaneda (erik.kaneda)
Status: CLOSED INSUFFICIENT_DATA    
Severity: high CC: lenb, rui.zhang
Priority: P1    
Hardware: Intel   
OS: Linux   
Kernel Version: Linux version 4.15.0-33-generic (buildd@lcy01-amd64-024) Subsystem:
Regression: No Bisected commit-id:
Attachments: ACPI Error Method parse/execution failed HP ZBook 15 G4
dmesg output

Description q x 2018-09-02 21:02:07 UTC
Created attachment 278249 [details]
ACPI Error Method parse/execution failed HP ZBook 15 G4

Very similar to bug reported at 
https://www.spinics.net/lists/linux-acpi/msg82058.html and Bug 195237

Have to set "acpi=off" to boot.  Without it, the machine will stuck with error message like "cpu#1 stuck for 22s".

Attached is acpidump file.


Following is output of dmesg:
Comment 1 q x 2018-09-02 21:04:12 UTC
Created attachment 278251 [details]
dmesg output
Comment 2 q x 2018-09-02 21:09:52 UTC
[    4.284819] ACPI: AC Adapter [AC] (on-line)
[    4.284879] ACPI: Sleep Button [SLPB]
[    4.284910] ACPI: Lid Switch [LID]
[    4.284940] ACPI: Power Button [PWRB]
[    4.285027] ACPI: Power Button [PWRF]
[    4.289403] ACPI: Thermal Zone [CPUZ] (49 C)
[    4.292841] ACPI: Thermal Zone [GFXZ] (39 C)
[    4.295837] ACPI: Thermal Zone [EXTZ] (39 C)
[    4.297857] ACPI: Thermal Zone [LOCZ] (40 C)
[    4.303186] ACPI: Thermal Zone [BATZ] (26 C)
[    4.303213] ACPI Exception: AE_AML_PACKAGE_LIMIT, Index (0x000000005) is beyond end of object (length 0x5) (20170831/exoparg2-430)
[    4.303237] ACPI Error: Method parse/execution failed \_TZ.GETP, AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
[    4.303242] ACPI Error: Method parse/execution failed \_TZ.CHGZ._CRT, AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
[    4.304262] ACPI Exception: AE_AML_PACKAGE_LIMIT, Index (0x000000005) is beyond end of object (length 0x5) (20170831/exoparg2-430)
[    4.304283] ACPI Error: Method parse/execution failed \_TZ.GETP, AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
[    4.304288] ACPI Error: Method parse/execution failed \_TZ.CHGZ._CRT, AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
[    4.307260] ACPI: Thermal Zone [PCHZ] (0 C)
[    4.319867] ACPI: Battery Slot [BAT0] (battery present)
[    5.389024] ACPI Warning: \_SB.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20170831/nsarguments-100)
[    5.389469] ACPI Warning: \_SB.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20170831/nsarguments-100)
[    5.660253] ata2.00: ACPI cmd f5/00:00:00:00:00:e0 (SECURITY FREEZE LOCK) filtered out
[    5.683124] ata2.00: ACPI cmd f5/00:00:00:00:00:e0 (SECURITY FREEZE LOCK) filtered out
[    7.150532] ACPI: Video Device [PEGP] (multi-head: yes  rom: yes  post: no)
[    7.167172] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[   15.810888] ACPI Error: Needed [Buffer/String/Package], found [Integer] 00000000e3ac8591 (20170831/exresop-593)
[   15.810894] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for [Index] (20170831/dswexec-461)
[   15.810917] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPO, AE_AML_OPERAND_TYPE (20170831/psparse-550)
[   15.810923] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV, AE_AML_OPERAND_TYPE (20170831/psparse-550)
[   15.812060] ACPI Error: Needed [Buffer/String/Package], found [Integer] 00000000abf69282 (20170831/exresop-593)
[   15.812065] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for [Index] (20170831/dswexec-461)
[   15.812088] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPO, AE_AML_OPERAND_TYPE (20170831/psparse-550)
[   15.812094] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV, AE_AML_OPERAND_TYPE (20170831/psparse-550)
[   15.813167] ACPI Error: Needed [Buffer/String/Package], found [Integer] 000000003a6c1822 (20170831/exresop-593)
[   15.813170] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for [Index] (20170831/dswexec-461)
[   15.813191] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPO, AE_AML_OPERAND_TYPE (20170831/psparse-550)
[   15.813197] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV, AE_AML_OPERAND_TYPE (20170831/psparse-550)
[   15.816406] ACPI Error: Attempt to CreateField of length zero (20170831/dsopcode-168)
[   15.816436] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPI, AE_AML_OPERAND_VALUE (20170831/psparse-550)
[   15.816445] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV, AE_AML_OPERAND_VALUE (20170831/psparse-550)
Comment 3 Zhang Rui 2018-12-27 15:25:49 UTC
please attach the acpidump output.
Comment 4 Zhang Rui 2019-03-25 07:46:12 UTC
(In reply to q x from comment #2)
> [    4.303213] ACPI Exception: AE_AML_PACKAGE_LIMIT, Index (0x000000005) is
> beyond end of object (length 0x5) (20170831/exoparg2-430)
> [    4.303237] ACPI Error: Method parse/execution failed \_TZ.GETP,
> AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
> [    4.303242] ACPI Error: Method parse/execution failed \_TZ.CHGZ._CRT,
> AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
> [    4.304262] ACPI Exception: AE_AML_PACKAGE_LIMIT, Index (0x000000005) is
> beyond end of object (length 0x5) (20170831/exoparg2-430)
> [    4.304283] ACPI Error: Method parse/execution failed \_TZ.GETP,
> AE_AML_PACKAGE_LIMIT (20170831/psparse-550)
> [    4.304288] ACPI Error: Method parse/execution failed \_TZ.CHGZ._CRT,
> AE_AML_PACKAGE_LIMIT (20170831/psparse-550)

        Name (TRIP, Package (0x05)
        {
            Package (0x04){}, 
            Package (0x04){}, 
            Package (0x04){}, 
            Package (0x04){}, 
            Package (0x04){}
        })

So TRIP has five elements.

        Method (GETP, 2, Serialized)
        {
            Local0 = Arg1
            If ((Arg1 == One))
            {
                Local3 = DerefOf (CUZO [Arg0])
                If (((Local3 > One) && (Local3 != 0xFF)))
                {
                    Local0 = Zero
                }
            }

            Local2 = DerefOf (DerefOf (TRIP [Arg0]) [Local0])
            Return (Local2)
        }

GETP uses Arg0 as the index of TRIP[].

            Method (_CRT, 0, Serialized)  // _CRT: Critical Temperature
            {
                Return (GETP (0x05, 0x03))
            }

Arg0 is 0x05 which is broken, so this is a BIOS bug.


> [   15.810888] ACPI Error: Needed [Buffer/String/Package], found [Integer]
> 00000000e3ac8591 (20170831/exresop-593)
> [   15.810894] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands
> for [Index] (20170831/dswexec-461)
> [   15.810917] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPO,
> AE_AML_OPERAND_TYPE (20170831/psparse-550)
> [   15.810923] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV,
> AE_AML_OPERAND_TYPE (20170831/psparse-550)
> [   15.812060] ACPI Error: Needed [Buffer/String/Package], found [Integer]
> 00000000abf69282 (20170831/exresop-593)
> [   15.812065] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands
> for [Index] (20170831/dswexec-461)
> [   15.812088] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPO,
> AE_AML_OPERAND_TYPE (20170831/psparse-550)
> [   15.812094] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV,
> AE_AML_OPERAND_TYPE (20170831/psparse-550)
> [   15.813167] ACPI Error: Needed [Buffer/String/Package], found [Integer]
> 000000003a6c1822 (20170831/exresop-593)
> [   15.813170] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands
> for [Index] (20170831/dswexec-461)
> [   15.813191] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPO,
> AE_AML_OPERAND_TYPE (20170831/psparse-550)
> [   15.813197] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV,
> AE_AML_OPERAND_TYPE (20170831/psparse-550)
> [   15.816406] ACPI Error: Attempt to CreateField of length zero
> (20170831/dsopcode-168)
> [   15.816436] ACPI Error: Method parse/execution failed \_SB.WMIV.WVPI,
> AE_AML_OPERAND_VALUE (20170831/psparse-550)
> [   15.816445] ACPI Error: Method parse/execution failed \_SB.WMIV.WMPV,
> AE_AML_OPERAND_VALUE (20170831/psparse-550)

        Method (WVPO, 2, Serialized)
        {
            Local1 = Buffer ((0x08 + Arg0)){}
            ...
        }
I'm not sure if this is the ASL code that causes the error because I have not seen any ASL written like this.

Erik, could you please clarify?
BTW, the acpidump is attached in comment #0.
Comment 5 Erik Kaneda 2019-04-15 20:43:49 UTC
Hey, sorry for the late response. I think the _DSM type mismatch should be resolved in newer kernels. Please try a newer kernel (post 4.17).

@Rui, the ASL code above shouldn't cause an error due to implicit type conversions. The add operator (+) causes Arg0 to be converted to Arg0..
Comment 6 Zhang Rui 2019-07-01 06:07:03 UTC
Bug closed as there is no response from the bug reporter.
Please feel free to reopen it if the problem still exists in the latest upstream kernel, say 5.1 or 5.2-rc.