I succeeded entering ASPM L1.1 and L1.2 for my device. After entering ASPM L1.1 or L1.2 and trying to initiate to exit from Host side, I saw some hosts that are:
• Able to initiate an exit from ASPM L1.1 and L1.2 using CLKREQ# (Host side is pulling it down) • Unable to initiate an exit from ASPM L1.1 and L1.2 using CLKREQ# (Host side is NOT pulling it down) As measured in the lab by scoping the CLKREQ# pin.
When comparing the Config Spaces, Form Factors and BIOS settings of the Hosts, I don’t find a relevant diff in their configuration. When looking at the Linux kernel code, I don’t see any relevant reference.
It is strange that the Host advertises itself as L1.1/2 capable, sets L1.1/2 as enabled, however it does NOT tug on CLKREQ# in order to exit.
My device supports CLKREQ# and ASPM L1 substates.
Maybe it's the driver responsibility to disable L1.1/2 when the host doens't support CLKREQ#, but how does the platform indicates whether it supports CLKREQ# or not?