A Comment On The Linux 2.6.38 Power Regression
Jesse Barnes, the maintainer of the PCI subsystem for the Linux kernel and one of the developers who signed-off on the patch that I discovered is causing the major Linux 2.6.38 kernel power regression, has commented on the matter.
When Jesse isn't working on the Intel Linux graphics driver stack as part of Intel's Open-Source Technology Center, he's working on the Linux PCI subsystem. At the time the article was published last night that details the 2.6.38 power regression commit, there wasn't any comment from the kernel developers due to being unable to reach them over the weekend.
This morning Jesse wrote, "the behavior unfortunately sounds correct (or at least intended)." He confirmed that they just use a BIOS flag to determine whether to manage the PCI Express link state, since if both the kernel and BIOS are attempting to manage the PCI-E link, a hang can result or the device failing.
With this behavioral change, many mobile users are experiencing significant decreases in their battery life as the power consumption rate can go up easily over 10% -- with reports as high as 40%+ differences. Jesse believes that Microsoft must have additional checks in place when determining whether Windows should handle Active-State Power Management or not. Windows hardware drivers might also be responsible for enabling ASPM where supported, but on the Linux side there's only a couple kernel drivers banging the ASPM bit.
There isn't any easy "solution" to improve this situation beyond affected users forcing the PCI-E Active-State Power Management using the pcie_aspm=force kernel command line option. Jesse thinks that more Linux drivers will end up needing to set the ASPM bits directly as a long-term solution. There's just too many hardware devices that don't properly support the ASPM power-saving modes.
The only alternative would be to create a big white-list of supported devices, but that comes down to being effectively the same large task as just having the driver set the appropriate bit. So there won't be any magic fix in the Linux 3.0 kernel nor will there likely be any major change in the Linux 3.1 kernel without suddenly a bunch of drivers handling the Active-State Power Management bit. For now, mobile users just need to know to force the PCI-E ASPM support if needed to maximize the Linux battery life.
There's still a few more kernel power regressions I'm working on and some other Linux power tests. Tomorrow is a look at the Catalyst vs. Radeon DRM/KMS power consumption in different power management modes.