Name (GUID, ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)
Name (SUPP, Zero)
Name (CTRL, Zero)
Name (XCNT, Zero)
Method (_OSC, 4, Serialized) // _OSC: Operating System Capabilities
{ Store (Arg3, Local0) CreateDWordField (Local0, Zero, CDW1) CreateDWordField (Local0, 0x04, CDW2) CreateDWordField (Local0, 0x08, CDW3)
If (LAnd (LEqual (Arg0, GUID), NEXP)) // I believe this comparison is false...
{ Store (CDW2, SUPP) /* \_SB_.PCI0.SUPP */ Store (CDW3, CTRL) /* \_SB_.PCI0.CTRL */ If (LAnd (LEqual (TBTS, One), LEqual (TNAT, One))) { And (CTRL, 0xFFFFFFF7, CTRL) /* \_SB_.PCI0.CTRL */ }
If (Not (And (CDW1, One))) { If (And (CTRL, One)) { NHPG () }
If (And (CTRL, 0x04)) { NPME () } }
If (LNotEqual (Arg1, One)) { Or (CDW1, 0x08, CDW1) /* \_SB_.PCI0._OSC.CDW1 */ }
If (LNotEqual (CDW3, CTRL)) { Or (CDW1, 0x10, CDW1) /* \_SB_.PCI0._OSC.CDW1 */ }
Store (CTRL, CDW3) /* \_SB_.PCI0._OSC.CDW3 */ Store (CTRL, OSCC) /* \OSCC */ Return (Local0)
} Else // ... we end up here, bit 2 is set, indicating unrecognised UUID.
{ Or (CDW1, 0x04, CDW1) /* \_SB_.PCI0._OSC.CDW1 */ Return (Local0)
}
}
From what I can understand from your firmware, it tries to match against a specific UUID and it does not match, so bit 2 is set in the _OSC return code which informs the kernel that it is not recognized. Hence stuff like ASPM capabilities are not enabled. If you require ASPM, gave you tried forcing it to be enabled using the kernel parameter "pcie_aspm=force" ?
@Alex,
Your ACPI DSDT contains the following ACPI code:
Name (GUID, ToUUID ("33db4d5b- 1ff7-401c- 9657-7441c03dd7 66") /* PCI Host Bridge Device */)
Store (Arg3, Local0)
CreateDWordFi eld (Local0, Zero, CDW1)
CreateDWordFi eld (Local0, 0x04, CDW2)
CreateDWordFi eld (Local0, 0x08, CDW3)
Store (CDW2, SUPP) /* \_SB_.PCI0.SUPP */
Store (CDW3, CTRL) /* \_SB_.PCI0.CTRL */
If (LAnd (LEqual (TBTS, One), LEqual (TNAT, One)))
{
And (CTRL, 0xFFFFFFF7, CTRL) /* \_SB_.PCI0.CTRL */
}
Name (SUPP, Zero)
Name (CTRL, Zero)
Name (XCNT, Zero)
Method (_OSC, 4, Serialized) // _OSC: Operating System Capabilities
{
If (LAnd (LEqual (Arg0, GUID), NEXP)) // I believe this comparison is false...
{
}
{
}
}
From what I can understand from your firmware, it tries to match against a specific UUID and it does not match, so bit 2 is set in the _OSC return code which informs the kernel that it is not recognized. Hence stuff like ASPM capabilities are not enabled. If you require ASPM, gave you tried forcing it to be enabled using the kernel parameter "pcie_aspm=force" ?