cpuidle: Allow idle injection to apply exit latency limit
authorDaniel Lezcano <daniel.lezcano@linaro.org>
Sat, 16 Nov 2019 13:16:12 +0000 (14:16 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 20 Nov 2019 10:32:55 +0000 (11:32 +0100)
commitc55b51a06b01d67a99457bb82a8c31081c7faa23
treefdde096ae2e1d1b9c946b0a432ce5540f42d3350
parentcbda56d5fefcebc01448982a55836c88a825b34c
cpuidle: Allow idle injection to apply exit latency limit

In some cases it may be useful to specify an exit latency limit for
the idle state to be used during CPU idle time injection.

Instead of duplicating the information in struct cpuidle_device
or propagating the latency limit in the call stack, replace the
use_deepest_state field with forced_latency_limit_ns to represent
that limit, so that the deepest idle state with exit latency within
that limit is forced (i.e. no governors) when it is set.

A zero exit latency limit for forced idle means to use governors in
the usual way (analogous to use_deepest_state equal to "false" before
this change).

Additionally, add play_idle_precise() taking two arguments, the
duration of forced idle and the idle state exit latency limit, both
in nanoseconds, and redefine play_idle() as a wrapper around that
new function.

This change is preparatory, no functional impact is expected.

Suggested-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
[ rjw: Subject, changelog, cpuidle_use_deepest_state() kerneldoc, whitespace ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/cpuidle.c
include/linux/cpu.h
include/linux/cpuidle.h
kernel/sched/idle.c