diff options
| -rw-r--r-- | drivers/cpufreq/cpufreq_conservative.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index f62d822048e6..218460fcd2e4 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c | |||
| @@ -80,13 +80,18 @@ static void cs_check_cpu(int cpu, unsigned int load) | |||
| 80 | 80 | ||
| 81 | /* Check for frequency decrease */ | 81 | /* Check for frequency decrease */ |
| 82 | if (load < cs_tuners->down_threshold) { | 82 | if (load < cs_tuners->down_threshold) { |
| 83 | unsigned int freq_target; | ||
| 83 | /* | 84 | /* |
| 84 | * if we cannot reduce the frequency anymore, break out early | 85 | * if we cannot reduce the frequency anymore, break out early |
| 85 | */ | 86 | */ |
| 86 | if (policy->cur == policy->min) | 87 | if (policy->cur == policy->min) |
| 87 | return; | 88 | return; |
| 88 | 89 | ||
| 89 | dbs_info->requested_freq -= get_freq_target(cs_tuners, policy); | 90 | freq_target = get_freq_target(cs_tuners, policy); |
| 91 | if (dbs_info->requested_freq > freq_target) | ||
| 92 | dbs_info->requested_freq -= freq_target; | ||
| 93 | else | ||
| 94 | dbs_info->requested_freq = policy->min; | ||
| 90 | 95 | ||
| 91 | __cpufreq_driver_target(policy, dbs_info->requested_freq, | 96 | __cpufreq_driver_target(policy, dbs_info->requested_freq, |
| 92 | CPUFREQ_RELATION_L); | 97 | CPUFREQ_RELATION_L); |
