Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[POWERPC] powermac: Fix G5-cpufreq for cpu on/offline

The original code here is wrong, it applies "previous" knowledge.
The way the cpufreq core is designed is that the policy for the
secondary CPU that comes online says that it must in fact not
use this policy but use the same as the other CPUs that are
listed, which in fact is CPU#0.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>

authored by

Johannes Berg and committed by
Paul Mackerras
8fce6dd2 b3028878

+4 -4
+4 -4
arch/powerpc/platforms/powermac/cpufreq_64.c
··· 357 357 358 358 static int g5_cpufreq_cpu_init(struct cpufreq_policy *policy) 359 359 { 360 - if (policy->cpu != 0) 361 - return -ENODEV; 362 - 363 360 policy->governor = CPUFREQ_DEFAULT_GOVERNOR; 364 361 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; 365 362 policy->cur = g5_cpu_freqs[g5_query_freq()].frequency; 366 - policy->cpus = cpu_possible_map; 363 + /* secondary CPUs are tied to the primary one by the 364 + * cpufreq core if in the secondary policy we tell it that 365 + * it actually must be one policy together with all others. */ 366 + policy->cpus = cpu_online_map; 367 367 cpufreq_frequency_table_get_attr(g5_cpu_freqs, policy->cpu); 368 368 369 369 return cpufreq_frequency_table_cpuinfo(policy,