diff options
author | Alex Frid <afrid@nvidia.com> | 2011-10-08 21:41:17 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:52:36 -0800 |
commit | 6b9c5a2e97b887025b0cc22e146231f0b5b4ac4e (patch) | |
tree | 7bb400f3f23aae2488b7ec08c40e7c30ca3b1e61 /drivers/cpufreq | |
parent | beceb9b139a6f7a7ed598233380a983f7faf280a (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/cpufreq')
-rw-r--r-- | drivers/cpufreq/cpufreq_interactive.c | 6 |
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); } /* |