Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2624f90c authored by Fabio Baltieri's avatar Fabio Baltieri Committed by Rafael J. Wysocki
Browse files

cpufreq: governors: implement generic policy_is_shared



Implement a generic helper function policy_is_shared() to replace the
current dbs_sw_coordinated_cpus() at cpufreq level, so that it can be
used by code other than cpufreq governors.

Suggested-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarFabio Baltieri <fabio.baltieri@linaro.org>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 6f35a65f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -734,7 +734,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)


#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
	dmi_check_system(sw_any_bug_dmi_table);
	dmi_check_system(sw_any_bug_dmi_table);
	if (bios_with_sw_any_bug && cpumask_weight(policy->cpus) == 1) {
	if (bios_with_sw_any_bug && !policy_is_shared(policy)) {
		policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
		policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
		cpumask_copy(policy->cpus, cpu_core_mask(cpu));
		cpumask_copy(policy->cpus, cpu_core_mask(cpu));
	}
	}
+1 −1
Original line number Original line Diff line number Diff line
@@ -154,7 +154,7 @@ static void cs_dbs_timer(struct work_struct *work)
	struct cs_cpu_dbs_info_s *dbs_info = container_of(work,
	struct cs_cpu_dbs_info_s *dbs_info = container_of(work,
			struct cs_cpu_dbs_info_s, cdbs.work.work);
			struct cs_cpu_dbs_info_s, cdbs.work.work);


	if (dbs_sw_coordinated_cpus(&dbs_info->cdbs)) {
	if (policy_is_shared(dbs_info->cdbs.cur_policy)) {
		cs_timer_coordinated(dbs_info, dw);
		cs_timer_coordinated(dbs_info, dw);
	} else {
	} else {
		mutex_lock(&dbs_info->cdbs.timer_mutex);
		mutex_lock(&dbs_info->cdbs.timer_mutex);
+0 −8
Original line number Original line Diff line number Diff line
@@ -161,14 +161,6 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu)
}
}
EXPORT_SYMBOL_GPL(dbs_check_cpu);
EXPORT_SYMBOL_GPL(dbs_check_cpu);


bool dbs_sw_coordinated_cpus(struct cpu_dbs_common_info *cdbs)
{
	struct cpufreq_policy *policy = cdbs->cur_policy;

	return cpumask_weight(policy->cpus) > 1;
}
EXPORT_SYMBOL_GPL(dbs_sw_coordinated_cpus);

static inline void dbs_timer_init(struct dbs_data *dbs_data, int cpu,
static inline void dbs_timer_init(struct dbs_data *dbs_data, int cpu,
				  unsigned int sampling_rate)
				  unsigned int sampling_rate)
{
{
+0 −1
Original line number Original line Diff line number Diff line
@@ -172,7 +172,6 @@ static inline int delay_for_sampling_rate(unsigned int sampling_rate)


u64 get_cpu_idle_time(unsigned int cpu, u64 *wall);
u64 get_cpu_idle_time(unsigned int cpu, u64 *wall);
void dbs_check_cpu(struct dbs_data *dbs_data, int cpu);
void dbs_check_cpu(struct dbs_data *dbs_data, int cpu);
bool dbs_sw_coordinated_cpus(struct cpu_dbs_common_info *cdbs);
int cpufreq_governor_dbs(struct dbs_data *dbs_data,
int cpufreq_governor_dbs(struct dbs_data *dbs_data,
		struct cpufreq_policy *policy, unsigned int event);
		struct cpufreq_policy *policy, unsigned int event);
#endif /* _CPUFREQ_GOVERNER_H */
#endif /* _CPUFREQ_GOVERNER_H */
+1 −1
Original line number Original line Diff line number Diff line
@@ -277,7 +277,7 @@ static void od_dbs_timer(struct work_struct *work)
	struct od_cpu_dbs_info_s *dbs_info =
	struct od_cpu_dbs_info_s *dbs_info =
		container_of(work, struct od_cpu_dbs_info_s, cdbs.work.work);
		container_of(work, struct od_cpu_dbs_info_s, cdbs.work.work);


	if (dbs_sw_coordinated_cpus(&dbs_info->cdbs)) {
	if (policy_is_shared(dbs_info->cdbs.cur_policy)) {
		od_timer_coordinated(dbs_info, dw);
		od_timer_coordinated(dbs_info, dw);
	} else {
	} else {
		mutex_lock(&dbs_info->cdbs.timer_mutex);
		mutex_lock(&dbs_info->cdbs.timer_mutex);
Loading