summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2011-10-08 21:41:17 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:52:36 -0800
commit6b9c5a2e97b887025b0cc22e146231f0b5b4ac4e (patch)
tree7bb400f3f23aae2488b7ec08c40e7c30ca3b1e61 /drivers
parentbeceb9b139a6f7a7ed598233380a983f7faf280a (diff)
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 <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Ra79d9a3ca97b0cfd49fb642ba7cafb98c11c04f1
Diffstat (limited to 'drivers')
-rw-r--r--drivers/cpufreq/cpufreq_interactive.c6
1 files changed, 6 insertions, 0 deletions
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);
}
/*