summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/cpufreq_ondemand.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-02-21 00:51:27 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-03-09 14:41:09 +0100
commit8c8f77fd0719a079450f59debed4f69ede825adb (patch)
tree6e1370e23065e3243f2677742ca479771e39e843 /drivers/cpufreq/cpufreq_ondemand.c
parentcpufreq: governor: Make governor private data per-policy (diff)
downloadlinux-8c8f77fd0719a079450f59debed4f69ede825adb.tar.xz
linux-8c8f77fd0719a079450f59debed4f69ede825adb.zip
cpufreq: governor: Move per-CPU data to the common code
After previous changes there is only one piece of code in the ondemand governor making references to per-CPU data structures, but it can be easily modified to avoid doing that, so modify it accordingly and move the definition of per-CPU data used by the ondemand and conservative governors to the common code. Next, change that code to access the per-CPU data structures directly rather than via a governor callback. This causes the ->get_cpu_cdbs governor callback to become unnecessary, so drop it along with the macro and function definitions related to it. Finally, drop the definitions of struct od_cpu_dbs_info_s and struct cs_cpu_dbs_info_s that aren't necessary any more. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers/cpufreq/cpufreq_ondemand.c')
-rw-r--r--drivers/cpufreq/cpufreq_ondemand.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index cdf431696c40..acd80272ded6 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -28,9 +28,6 @@
#define MIN_FREQUENCY_UP_THRESHOLD (11)
#define MAX_FREQUENCY_UP_THRESHOLD (100)
-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;
@@ -222,7 +219,7 @@ static ssize_t store_io_is_busy(struct dbs_data *dbs_data, const char *buf,
dbs_data->io_is_busy = !!input;
/* we need to re-evaluate prev_cpu_idle */
- gov_update_cpu_data(&od_dbs_gov, dbs_data);
+ gov_update_cpu_data(dbs_data);
return count;
}
@@ -289,7 +286,7 @@ static ssize_t store_ignore_nice_load(struct dbs_data *dbs_data,
dbs_data->ignore_nice_load = input;
/* we need to re-evaluate prev_cpu_idle */
- gov_update_cpu_data(&od_dbs_gov, dbs_data);
+ gov_update_cpu_data(dbs_data);
return count;
}
@@ -413,8 +410,6 @@ static void od_start(struct cpufreq_policy *policy)
ondemand_powersave_bias_init(policy);
}
-define_get_cpu_dbs_routines(od_cpu_dbs_info);
-
static struct od_ops od_ops = {
.powersave_bias_target = generic_powersave_bias_target,
};
@@ -427,7 +422,6 @@ static struct dbs_governor od_dbs_gov = {
.owner = THIS_MODULE,
},
.kobj_type = { .default_attrs = od_attributes },
- .get_cpu_cdbs = get_cpu_cdbs,
.gov_dbs_timer = od_dbs_timer,
.alloc = od_alloc,
.free = od_free,
@@ -440,9 +434,6 @@ static struct dbs_governor od_dbs_gov = {
static void od_set_powersave_bias(unsigned int powersave_bias)
{
- struct cpufreq_policy *policy;
- struct dbs_data *dbs_data;
- struct od_dbs_tuners *od_tuners;
unsigned int cpu;
cpumask_t done;
@@ -451,21 +442,24 @@ static void od_set_powersave_bias(unsigned int powersave_bias)
get_online_cpus();
for_each_online_cpu(cpu) {
+ struct cpufreq_policy *policy;
struct policy_dbs_info *policy_dbs;
+ struct dbs_data *dbs_data;
+ struct od_dbs_tuners *od_tuners;
if (cpumask_test_cpu(cpu, &done))
continue;
- policy_dbs = per_cpu(od_cpu_dbs_info, cpu).cdbs.policy_dbs;
+ policy = cpufreq_cpu_get_raw(cpu);
+ if (!policy || policy->governor != CPU_FREQ_GOV_ONDEMAND)
+ continue;
+
+ policy_dbs = policy->governor_data;
if (!policy_dbs)
continue;
- policy = policy_dbs->policy;
cpumask_or(&done, &done, policy->cpus);
- if (policy->governor != CPU_FREQ_GOV_ONDEMAND)
- continue;
-
dbs_data = policy_dbs->dbs_data;
od_tuners = dbs_data->tuners;
od_tuners->powersave_bias = default_powersave_bias;