mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
cpuidle: governors: teo: Avoid selecting states with zero-size bins
If the last two enabled idle states have the same target residency which is at least equal to TICK_NSEC, teo may select the next-to-last one even though the size of that state's bin is 0, which is confusing. Prevent that from happening by adding a target residency check to the relevant code path. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Christian Loehle <christian.loehle@arm.com> [ rjw: Fixed a typo in the changelog ] Link: https://patch.msgid.link/3033265.e9J7NaK4W3@rafael.j.wysocki Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
80606f4eb8
commit
4bd2221f23
|
|
@ -388,6 +388,15 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
|
|||
while (min_idx < idx &&
|
||||
drv->states[min_idx].target_residency_ns < TICK_NSEC)
|
||||
min_idx++;
|
||||
|
||||
/*
|
||||
* Avoid selecting a state with a lower index, but with
|
||||
* the same target residency as the current candidate
|
||||
* one.
|
||||
*/
|
||||
if (drv->states[min_idx].target_residency_ns ==
|
||||
drv->states[idx].target_residency_ns)
|
||||
goto constraint;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -410,6 +419,7 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
|
|||
}
|
||||
}
|
||||
|
||||
constraint:
|
||||
/*
|
||||
* If there is a latency constraint, it may be necessary to select an
|
||||
* idle state shallower than the current candidate one.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user