Message ID | 1359620064-14751-1-git-send-email-fabio.baltieri@linaro.org (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On 31 January 2013 13:44, Fabio Baltieri <fabio.baltieri@linaro.org> wrote: > 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: Viresh Kumar <viresh.kumar@linaro.org> > Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> > --- > drivers/cpufreq/cpufreq_conservative.c | 2 +- > drivers/cpufreq/cpufreq_governor.c | 8 -------- > drivers/cpufreq/cpufreq_governor.h | 1 - > drivers/cpufreq/cpufreq_ondemand.c | 2 +- > include/linux/cpufreq.h | 5 +++++ Great, But, you missed few places: drivers/cpufreq/acpi-cpufreq.c: if (bios_with_sw_any_bug && cpumask_weight(policy->cpus) == 1) { drivers/cpufreq/cpufreq_stats.c: if (policy && (cpumask_weight(policy->cpus) == 1)) { get these fixed too and add my Acked-by: Viresh Kumar <viresh.kumar@linaro.org> -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Jan 31, 2013 at 02:01:27PM +0530, Viresh Kumar wrote: > On 31 January 2013 13:44, Fabio Baltieri <fabio.baltieri@linaro.org> wrote: > > 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: Viresh Kumar <viresh.kumar@linaro.org> > > Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> > > --- > > drivers/cpufreq/cpufreq_conservative.c | 2 +- > > drivers/cpufreq/cpufreq_governor.c | 8 -------- > > drivers/cpufreq/cpufreq_governor.h | 1 - > > drivers/cpufreq/cpufreq_ondemand.c | 2 +- > > include/linux/cpufreq.h | 5 +++++ > > Great, > > But, you missed few places: > > drivers/cpufreq/acpi-cpufreq.c: if (bios_with_sw_any_bug && > cpumask_weight(policy->cpus) == 1) { > drivers/cpufreq/cpufreq_stats.c: if (policy && > (cpumask_weight(policy->cpus) == 1)) { This doesn't look like the same thing to me! Isn't this check here just to trigger during init (exit) on the first (last) cpu? How would you replace it? Fabio > get these fixed too and add my > > Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
On Thu, Jan 31, 2013 at 2:25 PM, Fabio Baltieri <fabio.baltieri@linaro.org> wrote: > On Thu, Jan 31, 2013 at 02:01:27PM +0530, Viresh Kumar wrote: >> On 31 January 2013 13:44, Fabio Baltieri <fabio.baltieri@linaro.org> wrote: >> > 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: Viresh Kumar <viresh.kumar@linaro.org> >> > Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> >> > --- >> > drivers/cpufreq/cpufreq_conservative.c | 2 +- >> > drivers/cpufreq/cpufreq_governor.c | 8 -------- >> > drivers/cpufreq/cpufreq_governor.h | 1 - >> > drivers/cpufreq/cpufreq_ondemand.c | 2 +- >> > include/linux/cpufreq.h | 5 +++++ >> >> Great, >> >> But, you missed few places: >> >> drivers/cpufreq/acpi-cpufreq.c: if (bios_with_sw_any_bug && >> cpumask_weight(policy->cpus) == 1) { >> drivers/cpufreq/cpufreq_stats.c: if (policy && >> (cpumask_weight(policy->cpus) == 1)) { > > This doesn't look like the same thing to me! Isn't this check here just > to trigger during init (exit) on the first (last) cpu? How would you > replace it? I don't think i am wrong, but i can be :) So, i would replace these as: drivers/cpufreq/acpi-cpufreq.c: if (bios_with_sw_any_bug && cpumask_weight(policy->cpus) == 1) { AS drivers/cpufreq/acpi-cpufreq.c: if (bios_with_sw_any_bug && !policy_is_shared(policy)) { similarly for the other one too. The whole point is about checking if policy is managing just one cpu or multiple cpus. -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index 5d8e894..653fb06 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c @@ -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, 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); } else { mutex_lock(&dbs_info->cdbs.timer_mutex); diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c index 46f96a4..67e235a 100644 --- a/drivers/cpufreq/cpufreq_governor.c +++ b/drivers/cpufreq/cpufreq_governor.c @@ -161,14 +161,6 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int 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, unsigned int sampling_rate) { diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h index aaf073d..b72e628 100644 --- a/drivers/cpufreq/cpufreq_governor.h +++ b/drivers/cpufreq/cpufreq_governor.h @@ -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); 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, struct cpufreq_policy *policy, unsigned int event); #endif /* _CPUFREQ_GOVERNER_H */ diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c index 1017b90..5ae84ff 100644 --- a/drivers/cpufreq/cpufreq_ondemand.c +++ b/drivers/cpufreq/cpufreq_ondemand.c @@ -277,7 +277,7 @@ static void od_dbs_timer(struct work_struct *work) struct od_cpu_dbs_info_s *dbs_info = 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); } else { mutex_lock(&dbs_info->cdbs.timer_mutex); diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 5fdc6c6..f106406 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -125,6 +125,11 @@ struct cpufreq_policy { #define CPUFREQ_SHARED_TYPE_ALL (2) /* All dependent CPUs should set freq */ #define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/ +static inline bool policy_is_shared(struct cpufreq_policy *policy) +{ + return cpumask_weight(policy->cpus) > 1; +} + /******************** cpufreq transition notifiers *******************/ #define CPUFREQ_PRECHANGE (0)
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: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> --- drivers/cpufreq/cpufreq_conservative.c | 2 +- drivers/cpufreq/cpufreq_governor.c | 8 -------- drivers/cpufreq/cpufreq_governor.h | 1 - drivers/cpufreq/cpufreq_ondemand.c | 2 +- include/linux/cpufreq.h | 5 +++++ 5 files changed, 7 insertions(+), 11 deletions(-)