OSDN Git Service

cpufreq: interactive governor: scale to max only if at min speed
authorTodd Poynor <toddpoynor@google.com>
Fri, 4 Nov 2011 04:22:54 +0000 (21:22 -0700)
committerTodd Poynor <toddpoynor@google.com>
Thu, 10 Nov 2011 03:01:44 +0000 (19:01 -0800)
Change-Id: Ieffb2aa56b5290036285c948718be7be0d3af9e8
Signed-off-by: Todd Poynor <toddpoynor@google.com>
drivers/cpufreq/cpufreq_interactive.c

index a085fc8..72ae653 100644 (file)
@@ -159,10 +159,14 @@ static void cpufreq_interactive_timer(unsigned long data)
        if (load_since_change > cpu_load)
                cpu_load = load_since_change;
 
-       if (cpu_load >= go_maxspeed_load)
-               new_freq = pcpu->policy->max;
-       else
+       if (cpu_load >= go_maxspeed_load) {
+               if (pcpu->policy->cur == pcpu->policy->min)
+                       new_freq = pcpu->policy->max;
+               else
+                       new_freq = pcpu->policy->max * cpu_load / 100;
+       } else {
                new_freq = pcpu->policy->cur * cpu_load / 100;
+       }
 
        if (cpufreq_frequency_table_target(pcpu->policy, pcpu->freq_table,
                                           new_freq, CPUFREQ_RELATION_H,