diff options
-rw-r--r-- | drivers/cpufreq/cpufreq_governor.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c index 0e5929b36276..0806c31e5764 100644 --- a/drivers/cpufreq/cpufreq_governor.c +++ b/drivers/cpufreq/cpufreq_governor.c | |||
@@ -123,7 +123,14 @@ void gov_queue_work(struct dbs_data *dbs_data, struct cpufreq_policy *policy, | |||
123 | return; | 123 | return; |
124 | 124 | ||
125 | if (!all_cpus) { | 125 | if (!all_cpus) { |
126 | __gov_queue_work(smp_processor_id(), dbs_data, delay); | 126 | /* |
127 | * Use raw_smp_processor_id() to avoid preemptible warnings. | ||
128 | * We know that this is only called with all_cpus == false from | ||
129 | * works that have been queued with *_work_on() functions and | ||
130 | * those works are canceled during CPU_DOWN_PREPARE so they | ||
131 | * can't possibly run on any other CPU. | ||
132 | */ | ||
133 | __gov_queue_work(raw_smp_processor_id(), dbs_data, delay); | ||
127 | } else { | 134 | } else { |
128 | for_each_cpu(i, policy->cpus) | 135 | for_each_cpu(i, policy->cpus) |
129 | __gov_queue_work(i, dbs_data, delay); | 136 | __gov_queue_work(i, dbs_data, delay); |