]> git.karo-electronics.de Git - linux-beck.git/commitdiff
[CPUFREQ] cpufreq:userspace: fix cpu_cur_freq updation
authorAfzal Mohammed <afzal@ti.com>
Wed, 4 Jan 2012 05:22:31 +0000 (10:52 +0530)
committerDave Jones <davej@redhat.com>
Fri, 6 Jan 2012 15:10:53 +0000 (10:10 -0500)
CPU frequency is guranteed to be changed on notifier callback with
CPUFREQ_POSTCHANGE. Notifier callback with CPUFREQ_PRECHANGE does
not gurantee a change in frequency; after it, if cpufreq driver is
unable to change CPU to new frequency. This results in wrong
information being fed to user (if setting CPU frequency fails)
upon doing like,

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

Hence in userspace governer update cpu_cur_freq only if notifier
has been called with POSTCHANGE.

Signed-off-by: Afzal Mohammed <afzal@ti.com>
Signed-off-by: Dave Jones <davej@redhat.com>
drivers/cpufreq/cpufreq_userspace.c

index f231015904c0a6584ed0fb4c57d78de4636746b4..bedac1aa9be31919f74ea6e3788d47e64f1e3342 100644 (file)
@@ -47,9 +47,11 @@ userspace_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
        if (!per_cpu(cpu_is_managed, freq->cpu))
                return 0;
 
-       pr_debug("saving cpu_cur_freq of cpu %u to be %u kHz\n",
-                       freq->cpu, freq->new);
-       per_cpu(cpu_cur_freq, freq->cpu) = freq->new;
+       if (val == CPUFREQ_POSTCHANGE) {
+               pr_debug("saving cpu_cur_freq of cpu %u to be %u kHz\n",
+                               freq->cpu, freq->new);
+               per_cpu(cpu_cur_freq, freq->cpu) = freq->new;
+       }
 
        return 0;
 }