cpuidle: teo: Optionally skip polling states in teo_find_shallower_state()
Add a no_poll flag to teo_find_shallower_state() that will let the function optionally not consider polling states. This allows the caller to guard against the function inadvertently resulting in TEO putting the CPU in a polling state when that behaviour is undesirable. Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
b7bfaa761d
commit
27f8508801
|
@ -258,15 +258,17 @@ static s64 teo_middle_of_bin(int idx, struct cpuidle_driver *drv)
|
||||||
* @dev: Target CPU.
|
* @dev: Target CPU.
|
||||||
* @state_idx: Index of the capping idle state.
|
* @state_idx: Index of the capping idle state.
|
||||||
* @duration_ns: Idle duration value to match.
|
* @duration_ns: Idle duration value to match.
|
||||||
|
* @no_poll: Don't consider polling states.
|
||||||
*/
|
*/
|
||||||
static int teo_find_shallower_state(struct cpuidle_driver *drv,
|
static int teo_find_shallower_state(struct cpuidle_driver *drv,
|
||||||
struct cpuidle_device *dev, int state_idx,
|
struct cpuidle_device *dev, int state_idx,
|
||||||
s64 duration_ns)
|
s64 duration_ns, bool no_poll)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = state_idx - 1; i >= 0; i--) {
|
for (i = state_idx - 1; i >= 0; i--) {
|
||||||
if (dev->states_usage[i].disable)
|
if (dev->states_usage[i].disable ||
|
||||||
|
(no_poll && drv->states[i].flags & CPUIDLE_FLAG_POLLING))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
state_idx = i;
|
state_idx = i;
|
||||||
|
@ -469,7 +471,7 @@ end:
|
||||||
*/
|
*/
|
||||||
if (idx > idx0 &&
|
if (idx > idx0 &&
|
||||||
drv->states[idx].target_residency_ns > delta_tick)
|
drv->states[idx].target_residency_ns > delta_tick)
|
||||||
idx = teo_find_shallower_state(drv, dev, idx, delta_tick);
|
idx = teo_find_shallower_state(drv, dev, idx, delta_tick, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return idx;
|
return idx;
|
||||||
|
|
Loading…
Reference in New Issue