Merge "cpufreq: interactive: fix to come out of hysteresis mode"
This commit is contained in:
commit
d5c822f343
1 changed files with 7 additions and 2 deletions
|
@ -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 &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue