On Thu, Dec 15, 2011 at 07:16:35PM +0800, Richard Zhao wrote:
+#ifdef CONFIG_SMP
- /* loops_per_jiffy is not updated by the cpufreq core for SMP systems.
* So update it for all CPUs.
*/
- for_each_possible_cpu(cpu)
per_cpu(cpu_data, cpu).loops_per_jiffy =
cpufreq_scale(per_cpu(cpu_data, cpu).loops_per_jiffy,
freqs.old, freqs.new);
NAK. If you think this is a good solution, you're very wrong. If this is what's in the core cpufreq code, then it too is very broken.
I've seen this exact method result in the loops_per_jiffy being totally buggered over time by the constant scaling up and down. The only way to do this _sensibly_ is to record the _initial_ loops_per_jiffy and _inital_ frequency, and scale from that.
That way you get consistent results irrespective of the scalings you do over time, rather than something which continually deteriorates with every frequency change.