[PATCH] cpuidle: fix new C-states not functional after AC disconnect

From: Thomas Schlichter
Date: Sun Jan 13 2013 - 07:34:35 EST


This is a multi-part message in MIME format.
Hi,

there is a long-standing regression about new C-states not working after
disconnecting AC power from a laptop if the cpuidle driver "acpi-idle" is
used. It was reported here:

[1] https://bugzilla.kernel.org/show_bug.cgi?id=42870 (March 5th 2012)
[2] https://bugzilla.kernel.org/show_bug.cgi?id=43349 (June 7th 2012)
[3] https://lkml.org/lkml/2012/10/16/518 (October 19th 2012)

In [1] Andreas proposed a patch that initialized the missing power_usage
values from within acpi_idle in the same way as cpuidle does.
In [2] I proposed a patch to use the power values provided by ACPI to
initialize the power_usage variables.
In [3] Julius proposed a patch to call the initialization function
set_power_states() not only once, but always when the C-states change.

Currently, Daniel Lezcano seems to be working on an intrusive change of not
using the power_usage value at all for choosing a C-state:

[4] https://lkml.org/lkml/2012/12/14/155

As I could not find any of these patches in any git trees to be merged for
3.8, I propose an other, least intrusive patch for the time being. It is
attached an initializes _all_ power_usage values in the first place.

As this is a real power consumption regression since 3.2, I really ask you to
apply anything and push it to stable, too!

Kind regards,
Thomas Schlichter