diff options
author | Xuewen Yan <xuewen.yan@unisoc.com> | 2024-03-19 11:01:53 +0300 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2024-03-27 18:19:39 +0300 |
commit | db9ea3b22315b74fd682d0c381a6e2ad09a105e3 (patch) | |
tree | 75c1e2b836fc6eb1636dd764ff1cf35af4ceea09 /drivers/cpufreq/tegra20-cpufreq.c | |
parent | 4cece764965020c22cff7665b18a012006359095 (diff) | |
download | linux-db9ea3b22315b74fd682d0c381a6e2ad09a105e3.tar.xz |
cpufreq: Use a smaller freq for the policy->max when verify
When driver use the cpufreq_frequency_table_verify() as the
cpufreq_driver->verify's callback. It may cause the policy->max
bigger than the freq_qos's max freq.
Just as follow:
unisoc:/sys/devices/system/cpu/cpufreq/policy0 # cat scaling_available_frequencies
614400 768000 988000 1228800 1469000 1586000 1690000 1833000 2002000 2093000
unisoc:/sys/devices/system/cpu/cpufreq/policy0 # echo 1900000 > scaling_max_freq
unisoc:/sys/devices/system/cpu/cpufreq/policy0 # echo 1900000 > scaling_min_freq
unisoc:/sys/devices/system/cpu/cpufreq/policy0 # cat scaling_max_freq
2002000
unisoc:/sys/devices/system/cpu/cpufreq/policy0 # cat scaling_min_freq
2002000
When user set the qos_min and qos_max as the same value, and the value
is not in the freq-table, the above scenario will occur.
This is because in cpufreq_frequency_table_verify() func, when it can not
find the freq in table, it will change the policy->max to be a bigger freq,
as above, because there is no 1.9G in the freq-table, the policy->max would
be set to 2.002G. As a result, the cpufreq_policy->max is bigger than the
user's qos_max. This is unreasonable.
So use a smaller freq when can not find the freq in fre-table, to prevent
the policy->max exceed the qos's max freq.
Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq/tegra20-cpufreq.c')
0 files changed, 0 insertions, 0 deletions