Deleting A Few Lines Of Code Can Yield "Significant" Power Savings On Some Linux Systems
Queued as part of the PCI-next changes building up for Linux 5.8 is allowing Active State Power Management (ASPM) on links for PCI Express to PCI/PCI-X bridges. As we've seen when investigating Linux ASPM issues over the years (that big power regression from 2011, et al), the power savings can be quite dramatic when correctly working. But up to now it turns out PCIe-to-PCI (and PCI-X) bridges have not had the Linux kernel enable ASPM on those links and could in turn keep the CPU in higher power states than otherwise could have been achievable.
Windows meanwhile does enable PCIe ASPM for PCIe-to-PCI/PCI-X bridges. In the patch enabling it, for "some undocumented reason", the ASPM code merged back into the Linux kernel in 2008 disabled ASPM for PCI bridges. Now in 2020, that code is simply being deleted.
This patch simply deletes the few lines of code checking to see if the downstream component is a PCI bridge and in turn disables ASPM. The patch noted, "Enabling ASPM on the link leading to it allows the Intel SoC to enter deeper Package C-states, which is a significant power savings." The original patch also cited "lots of unnecessary power" following a bug report from earlier this month by a Canonical kernel engineer... The impact of deleting a few lines of code that have been overlooked in the kernel for 12 years.
So should your system(s) have a PCI Express to PCI bridge like can be found on many server/workstation motherboards and more, look for this patch in Linux 5.8 and quite likely to be back-ported to the stable branches.