cpufreq: Make sure target freq is within limits
__cpufreq_driver_target() must not pass target frequency beyond the limits of current policy. Today most of cpufreq platform drivers are doing this check in their target routines. Why not move it to __cpufreq_driver_target()? Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
5a1c022850
commit
7249924e53
@@ -1470,12 +1470,19 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
|||||||
unsigned int relation)
|
unsigned int relation)
|
||||||
{
|
{
|
||||||
int retval = -EINVAL;
|
int retval = -EINVAL;
|
||||||
|
unsigned int old_target_freq = target_freq;
|
||||||
|
|
||||||
if (cpufreq_disabled())
|
if (cpufreq_disabled())
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
pr_debug("target for CPU %u: %u kHz, relation %u\n", policy->cpu,
|
/* Make sure that target_freq is within supported range */
|
||||||
target_freq, relation);
|
if (target_freq > policy->max)
|
||||||
|
target_freq = policy->max;
|
||||||
|
if (target_freq < policy->min)
|
||||||
|
target_freq = policy->min;
|
||||||
|
|
||||||
|
pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
|
||||||
|
policy->cpu, target_freq, relation, old_target_freq);
|
||||||
|
|
||||||
if (target_freq == policy->cur)
|
if (target_freq == policy->cur)
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user