static DEFINE_PER_CPU(struct cs_cpu_dbs_info_s, cs_cpu_dbs_info);
 
+static struct dbs_governor cs_dbs_gov;
+
 static inline unsigned int get_freq_target(struct cs_dbs_tuners *cs_tuners,
                                           struct cpufreq_policy *policy)
 {
 static ssize_t store_ignore_nice_load(struct dbs_data *dbs_data,
                const char *buf, size_t count)
 {
-       unsigned int input, j;
+       unsigned int input;
        int ret;
 
        ret = sscanf(buf, "%u", &input);
        dbs_data->ignore_nice_load = input;
 
        /* we need to re-evaluate prev_cpu_idle */
-       for_each_online_cpu(j) {
-               struct cs_cpu_dbs_info_s *dbs_info;
-               dbs_info = &per_cpu(cs_cpu_dbs_info, j);
-               dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j,
-                                       &dbs_info->cdbs.prev_cpu_wall, 0);
-               if (dbs_data->ignore_nice_load)
-                       dbs_info->cdbs.prev_cpu_nice =
-                               kcpustat_cpu(j).cpustat[CPUTIME_NICE];
-       }
+       gov_update_cpu_data(&cs_dbs_gov, dbs_data);
+
        return count;
 }
 
 
 }
 EXPORT_SYMBOL_GPL(store_sampling_rate);
 
+/**
+ * gov_update_cpu_data - Update CPU load data.
+ * @gov: Governor whose data is to be updated.
+ * @dbs_data: Top-level governor data pointer.
+ *
+ * Update CPU load data for all CPUs in the domain governed by @dbs_data
+ * (that may be a single policy or a bunch of them if governor tunables are
+ * system-wide).
+ *
+ * Call under the @dbs_data mutex.
+ */
+void gov_update_cpu_data(struct dbs_governor *gov, struct dbs_data *dbs_data)
+{
+       struct policy_dbs_info *policy_dbs;
+
+       list_for_each_entry(policy_dbs, &dbs_data->policy_dbs_list, list) {
+               unsigned int j;
+
+               for_each_cpu(j, policy_dbs->policy->cpus) {
+                       struct cpu_dbs_info *j_cdbs = gov->get_cpu_cdbs(j);
+
+                       j_cdbs->prev_cpu_idle = get_cpu_idle_time(j, &j_cdbs->prev_cpu_wall,
+                                                                 dbs_data->io_is_busy);
+                       if (dbs_data->ignore_nice_load)
+                               j_cdbs->prev_cpu_nice = kcpustat_cpu(j).cpustat[CPUTIME_NICE];
+               }
+       }
+}
+EXPORT_SYMBOL_GPL(gov_update_cpu_data);
+
 static inline struct dbs_data *to_dbs_data(struct kobject *kobj)
 {
        return container_of(kobj, struct dbs_data, kobj);
 
 void od_unregister_powersave_bias_handler(void);
 ssize_t store_sampling_rate(struct dbs_data *dbs_data, const char *buf,
                            size_t count);
+void gov_update_cpu_data(struct dbs_governor *gov, struct dbs_data *dbs_data);
 #endif /* _CPUFREQ_GOVERNOR_H */
 
 
 static DEFINE_PER_CPU(struct od_cpu_dbs_info_s, od_cpu_dbs_info);
 
+static struct dbs_governor od_dbs_gov;
 static struct od_ops od_ops;
 
 static unsigned int default_powersave_bias;
 {
        unsigned int input;
        int ret;
-       unsigned int j;
 
        ret = sscanf(buf, "%u", &input);
        if (ret != 1)
        dbs_data->io_is_busy = !!input;
 
        /* we need to re-evaluate prev_cpu_idle */
-       for_each_online_cpu(j) {
-               struct od_cpu_dbs_info_s *dbs_info = &per_cpu(od_cpu_dbs_info,
-                                                                       j);
-               dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j,
-                       &dbs_info->cdbs.prev_cpu_wall, dbs_data->io_is_busy);
-       }
+       gov_update_cpu_data(&od_dbs_gov, dbs_data);
+
        return count;
 }
 
        unsigned int input;
        int ret;
 
-       unsigned int j;
-
        ret = sscanf(buf, "%u", &input);
        if (ret != 1)
                return -EINVAL;
        dbs_data->ignore_nice_load = input;
 
        /* we need to re-evaluate prev_cpu_idle */
-       for_each_online_cpu(j) {
-               struct od_cpu_dbs_info_s *dbs_info;
-               dbs_info = &per_cpu(od_cpu_dbs_info, j);
-               dbs_info->cdbs.prev_cpu_idle = get_cpu_idle_time(j,
-                       &dbs_info->cdbs.prev_cpu_wall, dbs_data->io_is_busy);
-               if (dbs_data->ignore_nice_load)
-                       dbs_info->cdbs.prev_cpu_nice =
-                               kcpustat_cpu(j).cpustat[CPUTIME_NICE];
+       gov_update_cpu_data(&od_dbs_gov, dbs_data);
 
-       }
        return count;
 }