Linux 3.2 Is Still Looking To Be Power Hungry

Written by Michael Larabel in Linux Kernel on 29 October 2011 at 07:41 AM EDT. 18 Comments
LINUX KERNEL
The PCI subsystem pull for the Linux 3.2 kernel was published on Friday evening. If you were hoping it would rework PCI-E ASPM (Active-State Power Management) to be more like the Windows implementation or for more PCI drivers to be setting the bits directly to support it (effectively white-listing drivers/hardware), it didn't happen yet.

The main PCI pull request for Linux 3.2 has some MPS (Maximum Payload Size) and PASID (Process Address Space ID) stuff, but nothing to improve the Linux PCI-E ASPM situation.

The only PCI power management related changes in this pull is extending PME (PCI Power Management Events) polling to all PCI devices. The extended PME polling is talked about in , but it's not related to the ASPM problems.

By now most users should be aware that
the big Linux power regression in the Linux 2.6.38 kernel that I spotted prior to the Ubuntu 11.04 release I ended up tracking to be due to a change in PCI-E ASPM. With Linux 2.6.38+, unless Active-State Power Management support is explicitly advertised by the hardware's BIOS (or the user overrides the support when booting the kernel), it's no longer being enabled.

To address this issue, the thinking of kernel developers is that they will need to determine a better way to determine proper PCI-E ASPM support (such as mirroring how Microsoft Windows treats ASPM detection and handling) or be manually having individual component drivers flag whether or not the hardware installed can handle this power management feature that's part of the PCI Express specification.

Unfortunately, nothing ASPM-related has landed for Linux 3.2. THe Linux 3.2 PCI pull request can be viewed at LKML.org.

Yes, there are numerous other Linux power problems too. Here's one that just hit my email inbox over the night from a Phoronix reader.
I've been testing the it87 driver and noticed my Vcore was 1.08 instead of 0.96 when idle. At first I thought it was a driver bug.

Noticed cpufreq-info saying I was at 2.6 GHz (I have a core i3 2100, range 1.6-3.1 GHz) when idle.

I come to find out that the ondemand, powersave and userspace governors (I only tested those) can't get the CPU under 2.6 GHz. cpufreq-info tells me so and the CPU temperatures confirm it. Vcore, temperatures and cpufreq say I'm at 2.6 GHz with Linux 3.1 when I ask for 1.6. Linux 3.0.7 works fine. With Linux 3.1 anything under 2.6 gives me 2.6, 2.6-3.1 GHz speeds work as expected. There is an unpassable floor at 2.6.

Just thought I'd let you know, that a really NASTY regression made it in.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week