diff options
author | Rickard Andersson <rickard.andersson@stericsson.com> | 2012-12-27 09:55:38 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-02-01 18:01:13 -0500 |
commit | 2abfa876f1117b0ab45f191fb1f82c41b1cbc8fe (patch) | |
tree | 929f7c181cead27bc5c1d320c53ba0e99a9f0544 /drivers/cpufreq/cpufreq_conservative.c | |
parent | 88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7 (diff) |
cpufreq: handle SW coordinated CPUs
This patch fixes a bug that occurred when we had load on a secondary CPU
and the primary CPU was sleeping. Only one sampling timer was spawned
and it was spawned as a deferred timer on the primary CPU, so when a
secondary CPU had a change in load this was not detected by the cpufreq
governor (both ondemand and conservative).
This patch make sure that deferred timers are run on all CPUs in the
case of software controlled CPUs that run on the same frequency.
Signed-off-by: Rickard Andersson <rickard.andersson@stericsson.com>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq/cpufreq_conservative.c')
-rw-r--r-- | drivers/cpufreq/cpufreq_conservative.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index 64ef737e7e72..b9d7f14d7d3d 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c | |||
@@ -122,7 +122,8 @@ static void cs_dbs_timer(struct work_struct *work) | |||
122 | 122 | ||
123 | dbs_check_cpu(&cs_dbs_data, cpu); | 123 | dbs_check_cpu(&cs_dbs_data, cpu); |
124 | 124 | ||
125 | schedule_delayed_work_on(cpu, &dbs_info->cdbs.work, delay); | 125 | schedule_delayed_work_on(smp_processor_id(), &dbs_info->cdbs.work, |
126 | delay); | ||
126 | mutex_unlock(&dbs_info->cdbs.timer_mutex); | 127 | mutex_unlock(&dbs_info->cdbs.timer_mutex); |
127 | } | 128 | } |
128 | 129 | ||