diff options
author | Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> | 2023-01-17 10:22:40 -0800 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2023-01-20 18:28:19 +0100 |
commit | c7cd6f04c0dfb6d44337f92b4c32126d20339873 (patch) | |
tree | 42064d7fc9783e2cc0ac4864dea7e308d258abd9 /lib/test_ref_tracker.c | |
parent | 7adc6885259edd4ef5c9a7a62fd4270cf38fdbfb (diff) |
powercap: idle_inject: Support 100% idle injection
The users of the idle injection framework allow 100% idle injection. For
example: thermal/cpuidle_cooling.c driver. When the ratio is set to
100%, the runtime_duration becomes zero.
However, idle_inject_set_duration() in the idle injection framework
silently ignores run_duration_us == 0 without any error (it is a void
function). The caller will then assume that everything is fine and
100% idle is effective, but in reality the idle duration will not
change.
There are two options:
- The caller may change their max state to 99% instead of 100% and
document that 100% is not supported by the idle inject framework.
- Add 100% idle support to the idle inject framework.
Since there are other protections via RT throttling, this framework can
allow 100% idle. The RT throttling will be activated at 95% idle by
default. The caller disabling RT throttling and injecting 100% idle,
should be aware that CPU can't be used at all.
The idle inject timer is started for (run_duration_us + idle_duration_us)
duration. Hence replace (run_duration_us && idle_duration_us) with
(run_duration_us + idle_duration_us) in the function
idle_inject_set_duration(). Also check for !(run_duration_us +
idle_duration_us) to return -EINVAL in idle_inject_start().
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'lib/test_ref_tracker.c')
0 files changed, 0 insertions, 0 deletions