Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 348860
b: refs/heads/master
c: 8aef33a
h: refs/heads/master
v: v3
  • Loading branch information
Daniel Lezcano authored and Rafael J. Wysocki committed Jan 15, 2013
1 parent 04b0394 commit 33be784
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 46 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a412a11d6a24aebb6a898ed5d4e1c0725b638da3
refs/heads/master: 8aef33a7cf40ca9da188e8578b2abe7267a38c52
17 changes: 4 additions & 13 deletions trunk/drivers/cpuidle/cpuidle.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,24 +69,15 @@ int cpuidle_play_dead(void)
{
struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices);
struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
int i, dead_state = -1;
int power_usage = INT_MAX;
int i;

if (!drv)
return -ENODEV;

/* Find lowest-power state that supports long-term idle */
for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) {
struct cpuidle_state *s = &drv->states[i];

if (s->power_usage < power_usage && s->enter_dead) {
power_usage = s->power_usage;
dead_state = i;
}
}

if (dead_state != -1)
return drv->states[dead_state].enter_dead(dev, dead_state);
for (i = drv->state_count - 1; i >= CPUIDLE_DRIVER_STATE_START; i--)
if (drv->states[i].enter_dead)
return drv->states[i].enter_dead(dev, i);

return -ENODEV;
}
Expand Down
25 changes: 0 additions & 25 deletions trunk/drivers/cpuidle/driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,34 +19,9 @@ DEFINE_SPINLOCK(cpuidle_driver_lock);
static void __cpuidle_set_cpu_driver(struct cpuidle_driver *drv, int cpu);
static struct cpuidle_driver * __cpuidle_get_cpu_driver(int cpu);

static void set_power_states(struct cpuidle_driver *drv)
{
int i;

/*
* cpuidle driver should set the drv->power_specified bit
* before registering if the driver provides
* power_usage numbers.
*
* If power_specified is not set,
* we fill in power_usage with decreasing values as the
* cpuidle code has an implicit assumption that state Cn
* uses less power than C(n-1).
*
* With CONFIG_ARCH_HAS_CPU_RELAX, C0 is already assigned
* an power value of -1. So we use -2, -3, etc, for other
* c-states.
*/
for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++)
drv->states[i].power_usage = -1 - i;
}

static void __cpuidle_driver_init(struct cpuidle_driver *drv)
{
drv->refcnt = 0;

if (!drv->power_specified)
set_power_states(drv);
}

static int __cpuidle_register_driver(struct cpuidle_driver *drv, int cpu)
Expand Down
8 changes: 2 additions & 6 deletions trunk/drivers/cpuidle/governors/menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,6 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
{
struct menu_device *data = &__get_cpu_var(menu_devices);
int latency_req = pm_qos_request(PM_QOS_CPU_DMA_LATENCY);
int power_usage = INT_MAX;
int i;
int multiplier;
struct timespec t;
Expand Down Expand Up @@ -383,11 +382,8 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
if (s->exit_latency * multiplier > data->predicted_us)
continue;

if (s->power_usage < power_usage) {
power_usage = s->power_usage;
data->last_state_idx = i;
data->exit_us = s->exit_latency;
}
data->last_state_idx = i;
data->exit_us = s->exit_latency;
}

/* not deepest C-state chosen for low predicted residency */
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/linux/cpuidle.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,9 @@ struct cpuidle_driver {
struct module *owner;
int refcnt;

unsigned int power_specified:1;
/* set to 1 to use the core cpuidle time keeping (for all states). */
unsigned int en_core_tk_irqen:1;
/* states array must be ordered in decreasing power consumption */
struct cpuidle_state states[CPUIDLE_STATE_MAX];
int state_count;
int safe_state_index;
Expand Down

0 comments on commit 33be784

Please sign in to comment.