cpufreq: interactive: fix boosting logic
35a84de cpufreq: interactive: apply above_hispeed_delay to each step above hispeed
caused the speed choice logic to osciallate between boosting and not boosting.
Add back code to ensure speed does not drop below boost frequency while
boosting.
Change-Id: Id420068480fcc7f5c4989ff523e2a8d22e2f4db2
Signed-off-by: Todd Poynor <toddpoynor@google.com>
diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c
index ddface4..0c00b6d 100644
--- a/drivers/cpufreq/cpufreq_interactive.c
+++ b/drivers/cpufreq/cpufreq_interactive.c
@@ -297,11 +297,18 @@
cpu_load = loadadjfreq / pcpu->target_freq;
boosted = boost_val || now < boostpulse_endtime;
- if ((cpu_load >= go_hispeed_load || boosted) &&
- pcpu->target_freq < hispeed_freq)
- new_freq = hispeed_freq;
- else
+ if (cpu_load >= go_hispeed_load || boosted) {
+ if (pcpu->target_freq < hispeed_freq) {
+ new_freq = hispeed_freq;
+ } else {
+ new_freq = choose_freq(pcpu, loadadjfreq);
+
+ if (new_freq < hispeed_freq)
+ new_freq = hispeed_freq;
+ }
+ } else {
new_freq = choose_freq(pcpu, loadadjfreq);
+ }
if (pcpu->target_freq >= hispeed_freq &&
new_freq > pcpu->target_freq &&