cpufreq: governor: Use common mutex for dbs_data protection
Every governor relying on the common code in cpufreq_governor.c has to provide its own mutex in struct common_dbs_data. However, there actually is no need to have a separate mutex per governor for this purpose, they may be using the same global mutex just fine. Accordingly, introduce a single common mutex for that and drop the mutex field from struct common_dbs_data. That at least will ensure that the mutex is always present and initialized regardless of what the particular governors do. Another benefit is that the common code does not need a pointer to a governor-related structure to get to the mutex which sometimes helps. Finally, it makes the code generally easier to follow. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Saravana Kannan <skannan@codeaurora.org> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
This commit is contained in:
@@ -249,7 +249,7 @@ static void update_sampling_rate(struct dbs_data *dbs_data,
|
||||
/*
|
||||
* Lock governor so that governor start/stop can't execute in parallel.
|
||||
*/
|
||||
mutex_lock(&od_dbs_cdata.mutex);
|
||||
mutex_lock(&dbs_data_mutex);
|
||||
|
||||
cpumask_copy(&cpumask, cpu_online_mask);
|
||||
|
||||
@@ -306,7 +306,7 @@ static void update_sampling_rate(struct dbs_data *dbs_data,
|
||||
}
|
||||
}
|
||||
|
||||
mutex_unlock(&od_dbs_cdata.mutex);
|
||||
mutex_unlock(&dbs_data_mutex);
|
||||
}
|
||||
|
||||
static ssize_t store_sampling_rate(struct dbs_data *dbs_data, const char *buf,
|
||||
@@ -552,7 +552,6 @@ static struct common_dbs_data od_dbs_cdata = {
|
||||
.gov_ops = &od_ops,
|
||||
.init = od_init,
|
||||
.exit = od_exit,
|
||||
.mutex = __MUTEX_INITIALIZER(od_dbs_cdata.mutex),
|
||||
};
|
||||
|
||||
static int od_cpufreq_governor_dbs(struct cpufreq_policy *policy,
|
||||
|
Reference in New Issue
Block a user