|
@@ -642,12 +642,7 @@ static void do_dbs_timer(struct work_struct *work)
|
|
|
unsigned int cpu = dbs_info->cpu;
|
|
|
int sample_type = dbs_info->sample_type;
|
|
|
|
|
|
- /* We want all CPUs to do sampling nearly on same jiffy */
|
|
|
- int delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate
|
|
|
- * dbs_info->rate_mult);
|
|
|
-
|
|
|
- if (num_online_cpus() > 1)
|
|
|
- delay -= jiffies % delay;
|
|
|
+ int delay;
|
|
|
|
|
|
mutex_lock(&dbs_info->timer_mutex);
|
|
|
|
|
@@ -660,10 +655,20 @@ static void do_dbs_timer(struct work_struct *work)
|
|
|
/* Setup timer for SUB_SAMPLE */
|
|
|
dbs_info->sample_type = DBS_SUB_SAMPLE;
|
|
|
delay = dbs_info->freq_hi_jiffies;
|
|
|
+ } else {
|
|
|
+ /* We want all CPUs to do sampling nearly on
|
|
|
+ * same jiffy
|
|
|
+ */
|
|
|
+ delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate
|
|
|
+ * dbs_info->rate_mult);
|
|
|
+
|
|
|
+ if (num_online_cpus() > 1)
|
|
|
+ delay -= jiffies % delay;
|
|
|
}
|
|
|
} else {
|
|
|
__cpufreq_driver_target(dbs_info->cur_policy,
|
|
|
dbs_info->freq_lo, CPUFREQ_RELATION_H);
|
|
|
+ delay = dbs_info->freq_lo_jiffies;
|
|
|
}
|
|
|
schedule_delayed_work_on(cpu, &dbs_info->work, delay);
|
|
|
mutex_unlock(&dbs_info->timer_mutex);
|