diff options
Diffstat (limited to 'drivers/cpufreq/cpufreq_conservative.c')
| -rw-r--r-- | drivers/cpufreq/cpufreq_conservative.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index f62d822048e..25a70d06c5b 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c @@ -68,6 +68,9 @@ static void cs_check_cpu(int cpu, unsigned int load)  		dbs_info->requested_freq += get_freq_target(cs_tuners, policy); +		if (dbs_info->requested_freq > policy->max) +			dbs_info->requested_freq = policy->max; +  		__cpufreq_driver_target(policy, dbs_info->requested_freq,  			CPUFREQ_RELATION_H);  		return; @@ -80,13 +83,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);  | 
