|
@@ -80,13 +80,18 @@ static void cs_check_cpu(int cpu, unsigned int load)
|
|
|
|
|
|
/* Check for frequency decrease */
|
|
|
if (load < cs_tuners->down_threshold) {
|
|
|
+ unsigned int freq_target;
|
|
|
/*
|
|
|
* if we cannot reduce the frequency anymore, break out early
|
|
|
*/
|
|
|
if (policy->cur == policy->min)
|
|
|
return;
|
|
|
|
|
|
- dbs_info->requested_freq -= get_freq_target(cs_tuners, policy);
|
|
|
+ freq_target = get_freq_target(cs_tuners, policy);
|
|
|
+ if (dbs_info->requested_freq > freq_target)
|
|
|
+ dbs_info->requested_freq -= freq_target;
|
|
|
+ else
|
|
|
+ dbs_info->requested_freq = policy->min;
|
|
|
|
|
|
__cpufreq_driver_target(policy, dbs_info->requested_freq,
|
|
|
CPUFREQ_RELATION_L);
|