LOQ 15AHP10 (83JG), BIOS R8CN22WW: DSDT method \_GPE._E04 references undefined object PEGP when dGPU is disabled in BIOS

"Laszlo A. Toth" <[email protected]>
Newsgroups org.kernel.vger.linux-acpi
Message-ID <[email protected]>
Hello,

I am reporting a firmware defect in the BIOS of my Lenovo LOQ 15AHP10 (machine type 83JG, baseboard LNVNB161216, BIOS R8CN22WW version 1.22 dated 2025-05-08, EC firmware 1.22, AMD Ryzen 7 250 with Radeon 780M, NVIDIA dGPU PCI ID 10de:2dd8 disabled via BIOS setup).

The short version: when the discrete GPU is disabled through the BIOS setup option, the firmware no longer loads the SSDT that defines the dGPU's ACPI device object PEGP, but the DSDT still dereferences \_SB.PCI0.GPP0.PEGP unconditionally from the GPE handler \_GPE._E04, with no CondRefOf guard. The ACPI interpreter therefore raises AE_NOT_FOUND and aborts the method at its fourth statement, on every single GPE 0x04 event. Everything after that point is unreachable, so the handler performs none of its programmed work, silently, every time. A supported, user-selectable BIOS option leaves a GPE handler permanently non-functional.

I am aware that R8CN25WW is the current BIOS. Its published release notes list no ACPI or DSDT changes, but I have not flashed it yet and make no claim about its DSDT. This report is verified against R8CN22WW as shipped, and I am prepared to update and re-verify within a day of your request.

The defect is verifiable by static inspection of the ACPI tables the firmware ships, using any AML disassembler, without booting any OS. Linux was merely the observation tool, because its ACPI implementation logs interpreter aborts that other ACPI implementations execute identically but do not surface. I can capture an equivalent Windows ACPI trace if useful.

Disassembled from the shipping DSDT (acpidump, acpixtract, iasl -d), the method begins: TPST (0x3904), then Notify (\_SB.PCI0.GPP0, 0x81) which succeeds because GPP0 exists, then Sleep (0x012C), then Notify (\_SB.PCI0.GPP0.PEGP, 0x81) which faults with AE_NOT_FOUND and aborts the method. The unreachable remainder is the dGPU hotplug notification and power-sequencing path, including the calls to DGHP (One) and DGHP (Zero). So whatever platform behaviour _E04 is intended to provide does not occur in this configuration.

PEGP is only ever declared as External (_SB_.PCI0.GPP0.PEGP, DeviceObj), together with its child objects LCD0, NDID, NTCC, NVID and SSSV. I dumped and disassembled all 50 ACPI tables present on the running system: no table defines Device (PEGP), and only the DSDT and one SSDT reference it. With the dGPU disabled, every PEGP reference in the firmware is dangling. The DSDT contains 25 dereference sites beyond the six External declarations, across _E04, DGHP and the LCD/brightness notify paths around PEGP.LCD0. The dependent method DGHP has the same problem one level deeper: it calls \_SB.PCI0.GPP0.PG00._ON(), and PG00._ON is likewise only External-declared and never defined in this configuration, so even if _E04 got past the failing Notify it would fault again inside DGHP.

Notably, one of the SSDTs shipped in this same BIOS already handles this correctly: it tests the very same object with If (!CondRefOf (\_SB.PCI0.GPP0.PEGP)) before using it. The defect is therefore an inconsistency within the firmware itself. The SSDT guards the optional object; the DSDT dereferences it unguarded at 25 sites.

On the running system, every display hotplug event produces this in the kernel log: "ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GPP0.PEGP], AE_NOT_FOUND (20251212/psargs-332)", followed by "ACPI Error: Aborting method \_GPE._E04 due to previous error (AE_NOT_FOUND) (20251212/psparse-529)" and "ACPI Error: AE_NOT_FOUND, while evaluating GPE method [_E04] (20251212/evgpe-511)". This abort occurred 12 times (36 kernel log lines) in a single session, clustering exactly around the physical actions performed, display cable replugs and monitor power cycles, with some single actions producing a burst of two aborts. In every case the method aborted before performing any work.

The suggested fix is to wrap the PEGP access in the same guard your own SSDT uses: If (CondRefOf (\_SB.PCI0.GPP0.PEGP)) { Notify (\_SB.PCI0.GPP0.PEGP, 0x81) }. I have verified this exact pattern compiles cleanly with iasl, zero errors and zero warnings. The same guard is needed at the remaining PEGP reference sites, notably in DGHP and the PEGP.LCD0 notify paths, and around the PG00._ON call. Alternatively the firmware could continue to define a stub PEGP device when the dGPU is disabled. At present it does neither.

The same unguarded-reference pattern affects two further paths, which the same one-line guard would fix. On suspend, the kernel logs "Could not resolve symbol [\_SB.PCI0.LPC0.EC0.Z009], AE_NOT_FOUND", causing aborts of \_SB.PCI0.GPP7.WOFF and \_SB.PCI0.GPP7.P0WW._OFF. Z009 is not defined in any loaded table on this configuration (no WWAN module fitted), and _OFF aborting means the WWAN power resource is never actually powered down at suspend. Here too one SSDT guards Z009 with CondRefOf while another uses it unguarded. At boot, in both dGPU-enabled and dGPU-disabled configurations, the firmware also logs unresolved symbols \_SB.PCI0.GPP2.RTL8 and \_SB.PCI0.GPP7.WWAN. A separate set of SBIOS _DSM issues observed with the dGPU enabled will be reported in a separate case, to keep this report scoped to the DSDT defect.

To reproduce: boot an LOQ 15AHP10 with BIOS R8CN22WW, disable the discrete GPU in BIOS setup, boot any current Linux distribution, then connect or disconnect a display or power-cycle a connected monitor, and observe the AE_NOT_FOUND abort of _E04 in the kernel log. Since _E04 is a GPE handler, the abort occurs regardless of userspace, desktop environment or graphics driver. This was reproduced on a clean boot with no ACPI overrides, no ACPI-affecting kernel parameters and no DSDT patches loaded.

My request: add CondRefOf guards (or define a stub PEGP) so that disabling the discrete GPU does not abort _E04 and its dependent methods. The other unresolved-symbol sites mentioned above (Z009, RTL8, WWAN) are candidates for the same one-line guard in the same maintenance release; I can supply full details.

Please confirm receipt and route this to the BIOS/firmware engineering team responsible for machine type 83JG. I have the disassembled DSDT and SSDT, the full acpidump of all 50 tables, and kernel logs from affected boots ready to attach, and I can test a candidate BIOS within a day.

Regards,
Laszlo Toth
ssdt27.dsl (text/plain, 33.6 KB)
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20260408 (64-bit version)
 * Copyright (c) 2000 - 2026 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of ssdt27.dat
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000016D1 (5841)
 *     Revision         0x02
 *     Checksum         0x9E
 *     OEM ID           "LENOVO"
 *     OEM Table ID     "CB-01   "
 *     OEM Revision     0x00000001 (1)
 *     Compiler ID      "ACPI"
 *     Compiler Version 0x00040000 (262144)
 */
DefinitionBlock ("", "SSDT", 2, "LENOVO", "CB-01   ", 0x00000001)
{
    External (_SB_.PCI0, DeviceObj)
    External (_SB_.PCI0.GPP0.PEGP, DeviceObj)
    External (_SB_.PCI0.GPP1, UnknownObj)
    External (_SB_.PCI0.GPP1.NVME, DeviceObj)
    External (_SB_.PCI0.GPP5.DEV0, DeviceObj)
    External (_SB_.PCI0.GPP8, UnknownObj)
    External (_SB_.PCI0.GPP8.NVME, DeviceObj)
    External (_SB_.PCI0.LPC0.EC0_.ECRD, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF3, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF4, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF5, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF6, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF7, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF8, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.MSF9, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.NVM1, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.NVM2, FieldUnitObj)
    External (_SB_.PCI0.LPC0.EC0_.SCMS, FieldUnitObj)
    External (CPEP, MethodObj)    // 2 Arguments
    External (F0D3, IntObj)
    External (F1D3, IntObj)
    External (F3D3, IntObj)
    External (F5D3, IntObj)
    External (F6D3, IntObj)
    External (G3D3, IntObj)
    External (G5D3, IntObj)
    External (H0D3, IntObj)
    External (M000, MethodObj)    // 1 Arguments
    External (M037, DeviceObj)
    External (M045, MethodObj)    // 0 Arguments
    External (M046, IntObj)
    External (M047, IntObj)
    External (M050, DeviceObj)
    External (M051, DeviceObj)
    External (M052, DeviceObj)
    External (M053, DeviceObj)
    External (M054, DeviceObj)
    External (M055, DeviceObj)
    External (M056, DeviceObj)
    External (M057, DeviceObj)
    External (M058, DeviceObj)
    External (M059, DeviceObj)
    External (M062, DeviceObj)
    External (M068, DeviceObj)
    External (M069, DeviceObj)
    External (M070, DeviceObj)
    External (M071, DeviceObj)
    External (M072, DeviceObj)
    External (M074, DeviceObj)
    External (M075, DeviceObj)
    External (M076, DeviceObj)
    External (M077, DeviceObj)
    External (M078, DeviceObj)
    External (M079, DeviceObj)
    External (M080, DeviceObj)
    External (M081, DeviceObj)
    External (M082, FieldUnitObj)
    External (M083, FieldUnitObj)
    External (M084, FieldUnitObj)
    External (M085, FieldUnitObj)
    External (M086, FieldUnitObj)
    External (M087, FieldUnitObj)
    External (M088, FieldUnitObj)
    External (M089, FieldUnitObj)
    External (M090, FieldUnitObj)
    External (M091, FieldUnitObj)
    External (M092, FieldUnitObj)
    External (M093, FieldUnitObj)
    External (M094, FieldUnitObj)
    External (M095, FieldUnitObj)
    External (M096, FieldUnitObj)
    External (M097, FieldUnitObj)
    External (M098, FieldUnitObj)
    External (M099, FieldUnitObj)
    External (M100, FieldUnitObj)
    External (M101, FieldUnitObj)
    External (M102, FieldUnitObj)
    External (M103, FieldUnitObj)
    External (M104, FieldUnitObj)
    External (M105, FieldUnitObj)
    External (M106, FieldUnitObj)
    External (M107, FieldUnitObj)
    External (M108, FieldUnitObj)
    External (M109, FieldUnitObj)
    External (M110, FieldUnitObj)
    External (M115, BuffObj)
    External (M116, BuffFieldObj)
    External (M117, BuffFieldObj)
    External (M118, BuffFieldObj)
    External (M119, BuffFieldObj)
    External (M120, BuffFieldObj)
    External (M122, FieldUnitObj)
    External (M127, DeviceObj)
    External (M128, FieldUnitObj)
    External (M131, FieldUnitObj)
    External (M132, FieldUnitObj)
    External (M133, FieldUnitObj)
    External (M134, FieldUnitObj)
    External (M135, FieldUnitObj)
    External (M136, FieldUnitObj)
    External (M220, FieldUnitObj)
    External (M221, FieldUnitObj)
    External (M226, FieldUnitObj)
    External (M227, DeviceObj)
    External (M229, FieldUnitObj)
    External (M231, FieldUnitObj)
    External (M233, FieldUnitObj)
    External (M235, FieldUnitObj)
    External (M23A, FieldUnitObj)
    External (M251, FieldUnitObj)
    External (M280, FieldUnitObj)
    External (M290, FieldUnitObj)
    External (M29A, FieldUnitObj)
    External (M310, FieldUnitObj)
    External (M31C, FieldUnitObj)
    External (M320, FieldUnitObj)
    External (M321, FieldUnitObj)
    External (M322, FieldUnitObj)
    External (M323, FieldUnitObj)
    External (M324, FieldUnitObj)
    External (M325, FieldUnitObj)
    External (M326, FieldUnitObj)
    External (M327, FieldUnitObj)
    External (M328, FieldUnitObj)
    External (M329, DeviceObj)
    External (M32A, DeviceObj)
    External (M32B, DeviceObj)
    External (M330, DeviceObj)
    External (M331, FieldUnitObj)
    External (M378, FieldUnitObj)
    External (M379, FieldUnitObj)
    External (M380, FieldUnitObj)
    External (M381, FieldUnitObj)
    External (M382, FieldUnitObj)
    External (M383, FieldUnitObj)
    External (M384, FieldUnitObj)
    External (M385, FieldUnitObj)
    External (M386, FieldUnitObj)
    External (M387, FieldUnitObj)
    External (M388, FieldUnitObj)
    External (M389, FieldUnitObj)
    External (M390, FieldUnitObj)
    External (M391, FieldUnitObj)
    External (M392, FieldUnitObj)
    External (M404, BuffObj)
    External (M408, MutexObj)
    External (M414, FieldUnitObj)
    External (M444, FieldUnitObj)
    External (M449, FieldUnitObj)
    External (M453, FieldUnitObj)
    External (M454, FieldUnitObj)
    External (M455, FieldUnitObj)
    External (M456, FieldUnitObj)
    External (M457, FieldUnitObj)
    External (M460, MethodObj)    // 7 Arguments
    External (M4C0, FieldUnitObj)
    External (M4F0, FieldUnitObj)
    External (M610, FieldUnitObj)
    External (M620, FieldUnitObj)
    External (M631, FieldUnitObj)
    External (M652, FieldUnitObj)
    External (P1D3, IntObj)
    External (P3D3, IntObj)
    External (P4D3, IntObj)
    External (WLD3, IntObj)

    Scope (\_SB.PCI0)
    {
        Name (_DEP, Package (0x01)  // _DEP: Dependencies
        {
            \_SB.PEP, 
        })
    }

    Scope (\)
    {
        Name (NVD3, 0x02)
    }

    Scope (\_SB)
    {
        Device (PEP)
        {
            Name (_HID, "AMDI0009")  // _HID: Hardware ID
            Name (_CID, EisaId ("PNP0D80") /* Windows-compatible System Power Management Controller */)  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (DEVL, Package (0x03)
            {
                Zero, 
                0x33, 
                Package (0x33)
                {
                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP1", 
                        0x02, 
                        One
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP3", 
                        0x02, 
                        One
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP8", 
                        0x02, 
                        One
                    }, 

                    Package (0x04)
                    {
                        Zero, 
                        "\\_SB.PCI0.GP11", 
                        Zero, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        Zero, 
                        "\\_SB.PCI0.GP12", 
                        Zero, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        Zero, 
                        "\\_SB.PCI0.GP17", 
                        Zero, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        Zero, 
                        "\\_SB.PCI0.GP19", 
                        Zero, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP0", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP2", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP5", 
                        0x02, 
                        One
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP11.SWUS", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP12.SWUS", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP1.NVME", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP3.NVME", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP5.DEV0", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP7.RTL8", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP2.RTL8", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP2.RUSB", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP6.WLAN", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GPP8.NVME", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.VGA", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.AZAL", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.ACP", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.HDAU", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.XHC0", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.XHC1", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP17.XHC1.RHUB.PRT2.BUTH", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP18.NPU", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP19.XHC3", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP19.XHC4", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP19.NHI0", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PCI0.GP19.NHI1", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.I2CC.NFC1", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.FAR0", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.FAR1", 
                        Zero, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C000", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C001", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C002", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C003", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C004", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C005", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C006", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C007", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C008", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C009", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C00A", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C00B", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C00C", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C00D", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C00E", 
                        One, 
                        0x03
                    }, 

                    Package (0x04)
                    {
                        One, 
                        "\\_SB.PLTF.C00F", 
                        One, 
                        0x03
                    }
                }
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (M045 ())
                {
                    M460 ("  OEM-ASL-\\_SB.PEP._STA = 0xF\n", Zero, Zero, Zero, Zero, Zero, Zero)
                    Return (0x0F)
                }
                Else
                {
                    M460 ("  OEM-ASL-\\_SB.PEP._STA = 0x0\n", Zero, Zero, Zero, Zero, Zero, Zero)
                    Return (Zero)
                }
            }

            Method (MPEP, 4, NotSerialized)
            {
                Local1 = DerefOf (DEVL [One])
                Local0 = Zero
                While ((Local0 < Local1))
                {
                    If ((DerefOf (DerefOf (DerefOf (DEVL [0x02]) [Local0]
                        ) [One]) == Arg1))
                    {
                        DerefOf (DerefOf (DEVL [0x02]) [Local0]) [Zero]
                             = Arg0
                        DerefOf (DerefOf (DEVL [0x02]) [Local0]) [0x02]
                             = Arg2
                        DerefOf (DerefOf (DEVL [0x02]) [Local0]) [0x03]
                             = Arg3
                        Break
                    }

                    Local0++
                }
            }

            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                CreateDWordField (Arg0, Zero, UID0)
                M460 ("  OEM-ASL-\\_SB.PEP._DSM (UUID 0x%X, 0x%X, 0x%X)\n", UID0, Arg1, Arg2, Zero, Zero, Zero)
                CPEP (Arg0, Arg2)
                If ((Arg0 == ToUUID ("e3f32452-febc-43ce-9039-932122d37721") /* Modern Standby AMD */))
                {
                    Switch (ToInteger (Arg2))
                    {
                        Case (Zero)
                        {
                            Switch (ToInteger (Arg1))
                            {
                                Case (Zero)
                                {
                                    M460 ("    Return (Buffer (1) {0x03})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                    Return (Buffer (One)
                                    {
                                         0x03                                             // .
                                    })
                                }
                                Case (One)
                                {
                                    M460 ("    Return (Buffer (1) {0x03})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                    Return (Buffer (One)
                                    {
                                         0x03                                             // .
                                    })
                                }
                                Case (0x02)
                                {
                                    M460 ("    Return (Buffer (1) {0x3F})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                    Return (Buffer (One)
                                    {
                                         0x3F                                             // ?
                                    })
                                }
                                Default
                                {
                                    M460 ("    Return (Buffer (1) {0x00})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                    Return (Buffer (One)
                                    {
                                         0x00                                             // .
                                    })
                                }

                            }
                        }
                        Case (One)
                        {
                            If (CondRefOf (\P4D3))
                            {
                                If ((\P4D3 != 0x55))
                                {
                                    MPEP (One, "\\_SB.PCI0.GP11", Zero, 0x03)
                                    MPEP (One, "\\_SB.PCI0.GP12", Zero, 0x03)
                                }
                            }

                            If (CondRefOf (\P1D3))
                            {
                                If ((\P1D3 != 0x55))
                                {
                                    MPEP (One, "\\_SB.PCI0.GP17", Zero, 0x03)
                                }
                            }

                            If (CondRefOf (\P3D3))
                            {
                                If ((\P3D3 != 0x55))
                                {
                                    MPEP (One, "\\_SB.PCI0.GP19", Zero, 0x03)
                                }
                            }

                            If (CondRefOf (\H0D3))
                            {
                                If ((\H0D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP11.SWUS", Zero, Zero)
                                    MPEP (Zero, "\\_SB.PCI0.GP12.SWUS", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\F0D3))
                            {
                                If ((\F0D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP17.VGA", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\F1D3))
                            {
                                If ((\F1D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP17.HDAU", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\F3D3))
                            {
                                If ((\F3D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP17.XHC0", Zero, Zero)
                                    MPEP (Zero, "\\_SB.PCI0.GP17.XHC1", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\F5D3))
                            {
                                If ((\F5D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP17.ACP", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\F6D3))
                            {
                                If ((\F6D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP17.AZAL", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\G3D3))
                            {
                                If ((\G3D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP19.XHC3", Zero, Zero)
                                    MPEP (Zero, "\\_SB.PCI0.GP19.XHC4", Zero, Zero)
                                }
                            }

                            If (CondRefOf (\G5D3))
                            {
                                If ((\G5D3 != 0x04))
                                {
                                    MPEP (Zero, "\\_SB.PCI0.GP19.NHI0", Zero, Zero)
                                    MPEP (Zero, "\\_SB.PCI0.GP19.NHI1", Zero, Zero)
                                }
                            }

                            If (!CondRefOf (\_SB.PCI0.GPP0.PEGP))
                            {
                                MPEP (Zero, "\\_SB.PCI0.GPP0", Zero, Zero)
                            }

                            If (CondRefOf (\WLD3))
                            {
                                If ((\WLD3 == One))
                                {
                                    MPEP (One, "\\_SB.PCI0.GPP6", Zero, 0x03)
                                }
                            }

                            If ((\NVD3 != 0x55))
                            {
                                If ((\NVD3 == 0x02))
                                {
                                    MPEP (One, "\\_SB.PCI0.GPP1", Zero, 0x03)
                                    MPEP (Zero, "\\_SB.PCI0.GPP1.NVME", Zero, 0x03)
                                    MPEP (One, "\\_SB.PCI0.GPP8", Zero, 0x03)
                                    MPEP (Zero, "\\_SB.PCI0.GPP8.NVME", Zero, 0x03)
                                }
                            }

                            ToInteger (M453, Local7)
                            If ((Local7 != Zero))
                            {
                                M460 ("    OEM-ASL-DEVL:\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                Local1 = DerefOf (DEVL [One])
                                Local0 = Zero
                                While ((Local0 < Local1))
                                {
                                    Local2 = DerefOf (DerefOf (DerefOf (DEVL [0x02]) [Local0]
                                        ) [Zero])
                                    Local3 = DerefOf (DerefOf (DerefOf (DEVL [0x02]) [Local0]
                                        ) [One])
                                    Local4 = DerefOf (DerefOf (DerefOf (DEVL [0x02]) [Local0]
                                        ) [0x02])
                                    Local5 = DerefOf (DerefOf (DerefOf (DEVL [0x02]) [Local0]
                                        ) [0x03])
                                    M460 ("      %d - %d %S %d %d\n", ToInteger (Local0), Local2, Local3, Local4, Local5, Zero)
                                    Local0++
                                }
                            }

                            M460 ("    Return (DEVL)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (DEVL) /* \_SB_.PEP_.DEVL */
                        }
                        Case (0x02)
                        {
                            M000 (0x3E14)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Case (0x03)
                        {
                            M000 (0x3E15)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Case (0x04)
                        {
                            M000 (0x3E12)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Case (0x05)
                        {
                            M000 (0x3E13)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Default
                        {
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }

                    }
                }
                ElseIf ((Arg0 == ToUUID ("11e00d56-ce64-47ce-837b-1f898f9aa461") /* Modern Standby Microsoft */))
                {
                    Switch (ToInteger (Arg2))
                    {
                        Case (Zero)
                        {
                            Switch (ToInteger (Arg1))
                            {
                                Case (Zero)
                                {
                                    M460 ("    Return (Buffer (2) {0xF9, 0x01})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                    Return (Buffer (0x02)
                                    {
                                         0xF9, 0x01                                       // ..
                                    })
                                }
                                Default
                                {
                                    M460 ("    Return (Buffer (1) {0x00})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                    Return (Buffer (One)
                                    {
                                         0x00                                             // .
                                    })
                                }

                            }
                        }
                        Case (0x03)
                        {
                            M000 (0x3E03)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            \_SB.PCI0.LPC0.EC0.SCMS = One
                            Return (Zero)
                        }
                        Case (0x04)
                        {
                            M000 (0x3E04)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            \_SB.PCI0.LPC0.EC0.SCMS = Zero
                            Return (Zero)
                        }
                        Case (0x05)
                        {
                            M000 (0x3E05)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Case (0x06)
                        {
                            M000 (0x3E06)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            If (CondRefOf (\_SB.PCI0.GPP1.NVME))
                            {
                                Notify (\_SB.PCI0.GPP1, 0x02) // Device Wake
                            }

                            If (CondRefOf (\_SB.PCI0.GPP8.NVME))
                            {
                                Notify (\_SB.PCI0.GPP8, 0x02) // Device Wake
                            }

                            Return (Zero)
                        }
                        Case (0x07)
                        {
                            M000 (0x3E07)
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Case (0x08)
                        {
                            M000 (0x3E08)
                            If (CondRefOf (\_SB.PCI0.GPP5.DEV0))
                            {
                                M460 ("    Notify (\\_SB.PCI0.GPP5.DEV0, 0x1)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                                Notify (\_SB.PCI0.GPP5.DEV0, One) // Device Check
                            }

                            If (CondRefOf (\_SB.PCI0.GPP1.NVME))
                            {
                                Notify (\_SB.PCI0.GPP1.NVME, One) // Device Check
                            }

                            If (CondRefOf (\_SB.PCI0.GPP8.NVME))
                            {
                                Notify (\_SB.PCI0.GPP8.NVME, One) // Device Check
                            }

                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }
                        Default
                        {
                            M460 ("    Return (0x00)\n", Zero, Zero, Zero, Zero, Zero, Zero)
                            Return (Zero)
                        }

                    }
                }
                Else
                {
                    M460 ("    Return (Buffer (1) {0x00})\n", Zero, Zero, Zero, Zero, Zero, Zero)
                    Return (Buffer (One)
                    {
                         0x00                                             // .
                    })
                }
            }
        }
    }
}
dsdt.dsl (text/plain, 706.2 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.