Message ID | f0099171c1c4f3048d0f29b7deb42144f26ac5d5.1351146515.git.viresh.kumar@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thursday, October 25, 2012 12:03:34 PM Viresh Kumar wrote: > Hi Rafael, > > __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(). > > I wanted to get your opinion on this before making changes in all driver files. > That's why this is an RFC. I'd prefer to apply the patch below before changing the drviers. Thanks, Rafael > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > drivers/cpufreq/cpufreq.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c > index f552d5f..59264f1 100644 > --- a/drivers/cpufreq/cpufreq.c > +++ b/drivers/cpufreq/cpufreq.c > @@ -1470,12 +1470,19 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, > unsigned int relation) > { > int retval = -EINVAL; > + unsigned int old_target_freq = target_freq; > > if (cpufreq_disabled()) > return -ENODEV; > > - pr_debug("target for CPU %u: %u kHz, relation %u\n", policy->cpu, > - target_freq, relation); > + /* Make sure that target_freq is within supported range */ > + 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 (cpu_online(policy->cpu) && cpufreq_driver->target) > retval = cpufreq_driver->target(policy, target_freq, relation); > >
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index f552d5f..59264f1 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -1470,12 +1470,19 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, unsigned int relation) { int retval = -EINVAL; + unsigned int old_target_freq = target_freq; if (cpufreq_disabled()) return -ENODEV; - pr_debug("target for CPU %u: %u kHz, relation %u\n", policy->cpu, - target_freq, relation); + /* Make sure that target_freq is within supported range */ + 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 (cpu_online(policy->cpu) && cpufreq_driver->target) retval = cpufreq_driver->target(policy, target_freq, relation);
Hi Rafael, __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(). I wanted to get your opinion on this before making changes in all driver files. That's why this is an RFC. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- drivers/cpufreq/cpufreq.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)