diff options
| -rw-r--r-- | drivers/cpufreq/cpufreq_interactive.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c index 1b5d9301e2d..b4d12b266c6 100644 --- a/drivers/cpufreq/cpufreq_interactive.c +++ b/drivers/cpufreq/cpufreq_interactive.c @@ -169,21 +169,23 @@ static inline cputime64_t get_cpu_idle_time(unsigned int cpu,  static void cpufreq_interactive_timer_resched(  	struct cpufreq_interactive_cpuinfo *pcpu)  { -	unsigned long expires = jiffies + usecs_to_jiffies(timer_rate); +	unsigned long expires;  	unsigned long flags; -	mod_timer_pinned(&pcpu->cpu_timer, expires); -	if (timer_slack_val >= 0 && pcpu->target_freq > pcpu->policy->min) { -		expires += usecs_to_jiffies(timer_slack_val); -		mod_timer_pinned(&pcpu->cpu_slack_timer, expires); -	} -  	spin_lock_irqsave(&pcpu->load_lock, flags);  	pcpu->time_in_idle =  		get_cpu_idle_time(smp_processor_id(),  				     &pcpu->time_in_idle_timestamp);  	pcpu->cputime_speedadj = 0;  	pcpu->cputime_speedadj_timestamp = pcpu->time_in_idle_timestamp; +	expires = jiffies + usecs_to_jiffies(timer_rate); +	mod_timer_pinned(&pcpu->cpu_timer, expires); + +	if (timer_slack_val >= 0 && pcpu->target_freq > pcpu->policy->min) { +		expires += usecs_to_jiffies(timer_slack_val); +		mod_timer_pinned(&pcpu->cpu_slack_timer, expires); +	} +  	spin_unlock_irqrestore(&pcpu->load_lock, flags);  }  |