A day after Red Hat's Matthew Garrett published a Linux kernel patch to solve the ASPM power regression
by more closely mimicking the Active State Power Management behavior of Microsoft Windows, he's published more Linux patches to mimic the Windows power management.
The PCI-E ASPM patch that went out yesterday and was written about on Phoronix over the night has addressed the ASPM issue on all hardware I have tested so far. It changes when ASPM is enabled/disabled, so that this PCI Express power management feature should be restored on most hardware like it was in pre-2.6.38 kernels while being switched off for problematic hardware.
There's multiple patches coming out today from Matthew Garrett. What these patches are doing are extending the blacklisting of individual drivers from having ASPM flipped on for their devices. Some drivers (e.g. the e1000 network driver) have already switched off the ASPM where the PCI-E v1.1 feature is known to not work, but these patches is doing it for just more drivers.
Matthew went through popular Microsoft Windows drivers to see what PCI-E drivers there had disabled the ASPM support. Within the Windows INF driver file there is a line that states whether ASPM works, so he's just mirroring that for the Linux drivers.
The patch series begins here
on the Linux kernel mailing list. The ASPM device blacklisting from the patches published so far today include.
- Atheros: "ASPM is disabled on l1c, l2c, l2cb and l2cb2 devices except for those in Toshiba or Lenovo devices."
- JME / J-Micron Ethernet: 250 and 260 series devices don't play well with ASPM.
- CCISS: ASPM is disabled on all HP Smart Array hardware RAID controllers.
- HSPA: Disable ASPM support in this driver for HP Smart Array devices.
- Infiniband/NES: ASPM doesn't work.
- Atheros AR8113: ASPM is disabled on all L1E hardware.
It's just too bad it took so many months until getting to the bottom of the Linux Active State Power Management situation, especially when these simple patches today are just mirroring information that's publicly available from the Microsoft Windows drivers.