summaryrefslogtreecommitdiff
path: root/lib/test_ref_tracker.c
diff options
context:
space:
mode:
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>2023-01-17 10:22:40 -0800
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-01-20 18:28:19 +0100
commitc7cd6f04c0dfb6d44337f92b4c32126d20339873 (patch)
tree42064d7fc9783e2cc0ac4864dea7e308d258abd9 /lib/test_ref_tracker.c
parent7adc6885259edd4ef5c9a7a62fd4270cf38fdbfb (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