http://lwn.net/Articles/390427/

Idling ACPI idle

By Jonathan Corbet
June 1, 2010
Len Brown has spent some years working to ensure that Linux has top-quality ACPI support. So it is interesting to see him working to short out some of that ACPI code, but that is what has happened with his new cpuidle driver for recent Intel processors. With this experimental feature - merged for 2.6.35 - Linux no longer depends on ACPI to handle idle state transitions on Nehalem and Atom processors.

The ACPI BIOS is the standard way of getting at processor idle states in the x86 world. So why would Linux want to move away from ACPI for its cpuidle driver? Len explains:

ACPI has a few fundamental flaws here. One is that it reports exit latency instead of break-even power duration. The other is that it requires a BIOS writer to get the tables right. Both of these are fatal flaws.

The motivating factor appears to be a BIOS bug shipping on Dell systems for some months now which disables a number of idle states. As a result, Len's test system takes 100W of power when using the ACPI idle code; when idle states are handled directly, power use drops to 85W. That seems like a savings worth having. The fact that Linux now uses significantly less power than certain other operating systems - which are dependent on ACPI still - is just icing on the cake.

In general, it makes sense to use hardware features directly in preference to BIOS solutions when we have the knowledge necessary to do so. There can be real advantages in eliminating the firmware middleman in such situations. It's nice to see a chip vendor - which certainly has the requisite knowledge - supporting the use of its hardware in this way.


Idling ACPI idle

Posted Jun 3, 2010 7:20 UTC (Thu) by ringerc (subscriber, #3071) [Link]

Aaah, so that's why my XPS M1330 resumed using the C4 state (and therefore making a godawful screeching noise) when I upgraded to Ubuntu 10.4!

The old mechanism for limiting cpu states is gone, too, and it took some work to find out that now you can only do it at boot time on the kernel command line:

http://soapyfrogs.blogspot.com/2010/05/core-2-duo-cpu-whi...

Sometimes BIOS makes have a reason to disable power states. It may not be a GOOD reason ("our hardware is so crappy we have to turn features off to make it work without driving the user insane with squealing noises") but the user may still want to respect the BIOS tables. Admittedly, it's pretty rare for BIOS writers to get this sort of thing right, and this is a bit of a special case.

Idling ACPI idle

Posted Jun 3, 2010 7:40 UTC (Thu) by intgr (subscriber, #39733) [Link]

> In general, it makes sense to use hardware features directly in preference
> to BIOS solutions when we have the knowledge necessary to do so.

Then why where the CPU-specific cpufreq modules deprecated in favor of acpi-cpufreq?

Idling ACPI idle

Posted Jun 3, 2010 10:00 UTC (Thu) by nix (subscriber, #2304) [Link]

Len discusses that in his email.

Reply via email to