From 6b9c5a2e97b887025b0cc22e146231f0b5b4ac4e Mon Sep 17 00:00:00 2001 From: Alex Frid Date: Sat, 8 Oct 2011 21:41:17 -0700 Subject: cpufreq interactive governor: Init idle times on governor start When governor starts initialize time_in_idle and idle_exit_time variables with current data, and restart timer. This is required to properly start governor on busy CPU that would not enter idle state for a long time. (cherry picked from commit 876dc6eddc68054e6abe23f6287cfbf5302a75b9) (cherry picked from commit d0024f3ad1e4c6d4885355df3fda02435ccc471d) Change-Id: I992ca9193cb95e64cc9ef8bfb86675b32ad6d43d Reviewed-on: http://git-master/r/61712 Reviewed-by: Varun Colbert Tested-by: Varun Colbert Rebase-Id: Ra79d9a3ca97b0cfd49fb642ba7cafb98c11c04f1 --- drivers/cpufreq/cpufreq_interactive.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c index b06f2b97cb54..2e3d0f6a2eaf 100644 --- a/drivers/cpufreq/cpufreq_interactive.c +++ b/drivers/cpufreq/cpufreq_interactive.c @@ -591,8 +591,14 @@ static int cpufreq_governor_interactive(struct cpufreq_policy *policy, pcpu->freq_change_time_in_idle = get_cpu_idle_time_us(j, &pcpu->freq_change_time); + pcpu->time_in_idle = pcpu->freq_change_time_in_idle; + pcpu->idle_exit_time = pcpu->freq_change_time; + pcpu->timer_idlecancel = 1; pcpu->governor_enabled = 1; smp_wmb(); + + if (!timer_pending(&pcpu->cpu_timer)) + mod_timer(&pcpu->cpu_timer, jiffies + 2); } /* -- cgit v1.2.3