With the addition of following patch, related_cpus is required to be set by cpufreq platform drivers:
commit c1070fd743533efb54e98142252283583f379190 Author: Viresh Kumar viresh.kumar@linaro.org Date: Mon Jan 14 13:23:04 2013 +0000
cpufreq: Simplify cpufreq_add_dev()
Because this change is required by all platform drivers, why not do this in the core itself. Hence, this patch is an attempt towards fixing all broken drivers.
From now on, platforms don't really need to set related_cpus from their init()
routines, as the same work is done by core too.
If platform driver needs to set the related_cpus mask with some additional cpus, other than cpus present in policy->cpus, they are free to do it as we aren't overriding anything.
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org --- Inderpal,
Can you please add your tested-by for this patch? And this will require you to drop your patch for exynos-cpufreq.c :)
drivers/cpufreq/cpufreq.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index f5dc02b..db81382 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -554,8 +554,6 @@ static ssize_t show_cpus(const struct cpumask *mask, char *buf) */ static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf) { - if (cpumask_empty(policy->related_cpus)) - return show_cpus(policy->cpus, buf); return show_cpus(policy->related_cpus, buf); }
@@ -945,6 +943,9 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif) goto err_unlock_policy; }
+ /* related cpus should atleast have policy->cpus */ + cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus); + /* * affected cpus must always be the one, which are online. We aren't * managing offline cpus here.