Skip to content

Commit

Permalink
Merge branch 'pm-cpuidle' into pm-shmobile
Browse files Browse the repository at this point in the history
* pm-cpuidle:
  PM / cpuidle: Make ladder governor use the "disabled" state flag
  Honor state disabling in the cpuidle ladder governor
  • Loading branch information
Rafael J. Wysocki committed Sep 3, 2012
2 parents 5b41147 + 66804c1 commit 6bf9af4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
10 changes: 9 additions & 1 deletion Documentation/cpuidle/sysfs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,17 @@ total 0


* desc : Small description about the idle state (string)
* disable : Option to disable this idle state (bool)
* disable : Option to disable this idle state (bool) -> see note below
* latency : Latency to exit out of this idle state (in microseconds)
* name : Name of the idle state (string)
* power : Power consumed while in this idle state (in milliwatts)
* time : Total time spent in this idle state (in microseconds)
* usage : Number of times this state was entered (count)

Note:
The behavior and the effect of the disable variable depends on the
implementation of a particular governor. In the ladder governor, for
example, it is not coherent, i.e. if one is disabling a light state,
then all deeper states are disabled as well, but the disable variable
does not reflect it. Likewise, if one enables a deep state but a lighter
state still is disabled, then this has no effect.
6 changes: 5 additions & 1 deletion drivers/cpuidle/governors/ladder.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ static int ladder_select_state(struct cpuidle_driver *drv,

/* consider promotion */
if (last_idx < drv->state_count - 1 &&
!drv->states[last_idx + 1].disabled &&
!dev->states_usage[last_idx + 1].disable &&
last_residency > last_state->threshold.promotion_time &&
drv->states[last_idx + 1].exit_latency <= latency_req) {
last_state->stats.promotion_count++;
Expand All @@ -100,7 +102,9 @@ static int ladder_select_state(struct cpuidle_driver *drv,

/* consider demotion */
if (last_idx > CPUIDLE_DRIVER_STATE_START &&
drv->states[last_idx].exit_latency > latency_req) {
(drv->states[last_idx].disabled ||
dev->states_usage[last_idx].disable ||
drv->states[last_idx].exit_latency > latency_req)) {
int i;

for (i = last_idx - 1; i > CPUIDLE_DRIVER_STATE_START; i--) {
Expand Down

0 comments on commit 6bf9af4

Please sign in to comment.