Commit 552abb88 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

cpufreq: Fix up cpufreq_boost_set_sw()

After commit 18c49926 ("cpufreq: Add QoS requests for userspace
constraints") the return value of freq_qos_update_request(), that can
be 1, passed by cpufreq_boost_set_sw() to its caller sometimes
confuses the latter, which only expects to see 0 or negative error
codes, so notice that cpufreq_boost_set_sw() can return an error code
(which should not be -EINVAL for that matter) as soon as the first
policy without a frequency table is found (because either all policies
have a frequency table or none of them have it) and rework it to meet
its caller's expectations.

Fixes: 18c49926 ("cpufreq: Add QoS requests for userspace constraints")
Reported-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
Reported-by: default avatarXiongfeng Wang <wangxiongfeng2@huawei.com>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Cc: 5.3+ <stable@vger.kernel.org> # 5.3+
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 2909438d
...@@ -2535,26 +2535,27 @@ EXPORT_SYMBOL_GPL(cpufreq_update_limits); ...@@ -2535,26 +2535,27 @@ EXPORT_SYMBOL_GPL(cpufreq_update_limits);
static int cpufreq_boost_set_sw(int state) static int cpufreq_boost_set_sw(int state)
{ {
struct cpufreq_policy *policy; struct cpufreq_policy *policy;
int ret = -EINVAL;
for_each_active_policy(policy) { for_each_active_policy(policy) {
int ret;
if (!policy->freq_table) if (!policy->freq_table)
continue; return -ENXIO;
ret = cpufreq_frequency_table_cpuinfo(policy, ret = cpufreq_frequency_table_cpuinfo(policy,
policy->freq_table); policy->freq_table);
if (ret) { if (ret) {
pr_err("%s: Policy frequency update failed\n", pr_err("%s: Policy frequency update failed\n",
__func__); __func__);
break; return ret;
} }
ret = freq_qos_update_request(policy->max_freq_req, policy->max); ret = freq_qos_update_request(policy->max_freq_req, policy->max);
if (ret < 0) if (ret < 0)
break; return ret;
} }
return ret; return 0;
} }
int cpufreq_boost_trigger_state(int state) int cpufreq_boost_trigger_state(int state)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment