static void teo_update(struct cpuidle_driver *drv, struct cpuidle_device *dev)
{
struct teo_cpu *cpu_data = per_cpu_ptr(&teo_cpus, dev->cpu);
- int i, idx_hit = 0, idx_timer = 0;
+ int i, idx_timer = 0, idx_duration = 0;
unsigned int hits, misses;
u64 measured_ns;
* states matching the sleep length and the measured idle duration.
*/
for (i = 0; i < drv->state_count; i++) {
+ s64 target_residency_ns = drv->states[i].target_residency_ns;
unsigned int early_hits = cpu_data->states[i].early_hits;
cpu_data->states[i].early_hits -= early_hits >> DECAY_SHIFT;
- if (drv->states[i].target_residency_ns <= cpu_data->sleep_length_ns) {
+ if (target_residency_ns <= cpu_data->sleep_length_ns) {
idx_timer = i;
- if (drv->states[i].target_residency_ns <= measured_ns)
- idx_hit = i;
+ if (target_residency_ns <= measured_ns)
+ idx_duration = i;
}
}
misses = cpu_data->states[idx_timer].misses;
misses -= misses >> DECAY_SHIFT;
- if (idx_timer == idx_hit) {
+ if (idx_timer == idx_duration) {
hits += PULSE;
} else {
misses += PULSE;
- cpu_data->states[idx_hit].early_hits += PULSE;
+ cpu_data->states[idx_duration].early_hits += PULSE;
}
cpu_data->states[idx_timer].misses = misses;