Merge "cpufreq: interactive: fix to come out of hysteresis mode"

This commit is contained in:
Linux Build Service Account 2017-07-31 23:44:00 -07:00 committed by Gerrit - the friendly Code Review server
commit d5c822f343

View file

@ -479,6 +479,7 @@ static void cpufreq_interactive_timer(unsigned long data)
bool skip_hispeed_logic, skip_min_sample_time; bool skip_hispeed_logic, skip_min_sample_time;
bool jump_to_max_no_ts = false; bool jump_to_max_no_ts = false;
bool jump_to_max = false; bool jump_to_max = false;
bool start_hyst = true;
if (!down_read_trylock(&ppol->enable_sem)) if (!down_read_trylock(&ppol->enable_sem))
return; return;
@ -588,8 +589,12 @@ static void cpufreq_interactive_timer(unsigned long data)
} }
if (now - ppol->max_freq_hyst_start_time < if (now - ppol->max_freq_hyst_start_time <
tunables->max_freq_hysteresis) tunables->max_freq_hysteresis) {
if (new_freq < ppol->policy->max &&
ppol->policy->max <= tunables->hispeed_freq)
start_hyst = false;
new_freq = max(tunables->hispeed_freq, new_freq); new_freq = max(tunables->hispeed_freq, new_freq);
}
if (!skip_hispeed_logic && if (!skip_hispeed_logic &&
ppol->target_freq >= tunables->hispeed_freq && ppol->target_freq >= tunables->hispeed_freq &&
@ -646,7 +651,7 @@ static void cpufreq_interactive_timer(unsigned long data)
ppol->floor_validate_time = now; ppol->floor_validate_time = now;
} }
if (new_freq >= ppol->policy->max && !jump_to_max_no_ts) if (start_hyst && new_freq >= ppol->policy->max && !jump_to_max_no_ts)
ppol->max_freq_hyst_start_time = now; ppol->max_freq_hyst_start_time = now;
if (ppol->target_freq == new_freq && if (ppol->target_freq == new_freq &&