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>
此提交包含在:
@@ -228,11 +228,6 @@ struct common_dbs_data {
|
||||
|
||||
/* Governor specific ops, see below */
|
||||
void *gov_ops;
|
||||
|
||||
/*
|
||||
* Protects governor's data (struct dbs_data and struct common_dbs_data)
|
||||
*/
|
||||
struct mutex mutex;
|
||||
};
|
||||
|
||||
/* Governor Per policy data */
|
||||
@@ -277,6 +272,7 @@ static ssize_t show_sampling_rate_min_gov_pol \
|
||||
return sprintf(buf, "%u\n", dbs_data->min_sampling_rate); \
|
||||
}
|
||||
|
||||
extern struct mutex dbs_data_mutex;
|
||||
extern struct mutex cpufreq_governor_lock;
|
||||
void dbs_check_cpu(struct dbs_data *dbs_data, int cpu);
|
||||
int cpufreq_governor_dbs(struct cpufreq_policy *policy,
|
||||
|
新增問題並參考
封鎖使用者