2011/11/10 Matthew Garrett <mjg@redhat.com>:> Right now we forcibly clear ASPM state on all devices if the BIOS indicates> that the feature isn't supported. Based on the Microsoft presentation> "PCI Express In Depth for Windows Vista and Beyond", I'm starting to think> that this may be an error. The implication is that unless the platform> grants full control via _OSC, Windows will not touch any PCIe features -> including ASPM. In that case clearing ASPM state would be an error unless> the platform has granted us that control.>> This patch reworks the ASPM disabling code such that the actual clearing> of state is triggered by a successful handoff of PCIe control to the OS.> The general ASPM code undergoes some changes in order to ensure that the> ability to clear the bits isn't overridden by ASPM having already been> disabled. Further, this theoretically now allows for situations where> only a subset of PCIe roots hand over control, leaving the others in the> BIOS state.>> It's difficult to know for sure that this is the right thing to do -> there's zero public documentation on the interaction between all of these> components. But enough vendors enable ASPM on platforms and then set this> bit that it seems likely that they're expecting the OS to leave them alone.>> Measured to save around 5W on an idle Thinkpad X220.>> Signed-off-by: Matthew Garrett <mjg@redhat.com>