Created attachment 279327 acpidump HP Omen 15 dc0307ng I've checked the tables for PGON and found following in ssdt7: Method (PGON, 1, Serialized) { PION = Arg0 If ((PION == Zero)) { If ((SGGP == Zero)) { Return (Zero) } } ElseIf ((PION == One)) { If ((P1GP == Zero)) { Return (Zero) } } ElseIf ((PION == 0x02)) { If ((P2GP == Zero)) { Return (Zero) } } PEBA = \XBAS /* External reference */ PDEV = GDEV (PION) PFUN = GFUN (PION) Name (SCLK, Package (0x03) { One, 0x0100, Zero }) If ((DerefOf (SCLK [Zero]) != Zero)) { PCRA (0xDC, 0x100C, ~DerefOf (SCLK [One])) Sleep (0x10) } If ((CCHK (PION, One) == Zero)) { Return (Zero) } GPPR (PION, One) RTEN (PION) If ((PBGE != Zero)) { If (SBDL (PION)) { PUAB (PION) CBDL = GUBC (PION) MBDL = GMXB (PION) If ((CBDL > MBDL)) { CBDL = MBDL /* \_SB_.PCI0.MBDL */ } PDUB (PION, CBDL) } } \_SB.PCI0.PEG0.LREN = \_SB.PCI0.PEG0.PEGP.LTRE \_SB.PCI0.PEG0.CEDR = One While ((\_SB.PCI0.PEG0.LNKS < 0x03)) { Sleep (One) } If ((PION == Zero)) { S0VI = H0VI /* \_SB_.PCI0.H0VI */ S0DI = H0DI /* \_SB_.PCI0.H0DI */ LCT0 = ((ELC0 & 0x43) | (LCT0 & 0xFFBC)) } The interesting part here: \_SB.PCI0.PEG0.LNKS < 0x03 As far as I understand it should be always 0x04 as it is set only once inside the ssdt12: Scope (\_SB.PCI0.PEG0) { OperationRegion (MSID, SystemMemory, EBAS, 0x0500) Field (MSID, DWordAcc, Lock, Preserve) { VEID, 16, Offset (0x40), NVID, 32, Offset (0x4C), ATID, 32, Offset (0x88), PASM, 2, Offset (0x48B), , 1, NHDA, 1 } OperationRegion (RPCX, SystemMemory, ((\XBAS + 0x8000) + Zero), 0x1000) Field (RPCX, ByteAcc, NoLock, Preserve) { Offset (0x04), CMDR, 8, Offset (0x19), PRBN, 8, Offset (0x84), D0ST, 2, Offset (0xAA), CEDR, 1, Offset (0xB0), ASPM, 2, , 2, LNKD, 1, Offset (0xC9), , 2, LREN, 1, Offset (0x216), LNKS, 4 Here is the only place I can find LNKS initialized to 4. I'll try to remove the while loop for a test and compile a custom dsdt for a test. Question: Can some acpi expert tell me what this LNKS is for?