cpufreq: governors: implement generic policy_is_shared
authorFabio Baltieri <fabio.baltieri@linaro.org>
Thu, 31 Jan 2013 09:44:40 +0000 (09:44 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 1 Feb 2013 23:01:16 +0000 (00:01 +0100)
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>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/acpi-cpufreq.c
drivers/cpufreq/cpufreq_conservative.c
drivers/cpufreq/cpufreq_governor.c
drivers/cpufreq/cpufreq_governor.h
drivers/cpufreq/cpufreq_ondemand.c
drivers/cpufreq/cpufreq_stats.c
include/linux/cpufreq.h

index 22f9b47c5c74d30eaee965f6ba746f524ad1a4b4..937bc286591f9349b5366295fa210412b8ffb756 100644 (file)
@@ -734,7 +734,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
 
 #ifdef CONFIG_SMP
        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;
                cpumask_copy(policy->cpus, cpu_core_mask(cpu));
        }
index 5d8e8942ec977769ccf707dcef5e28ad68b5637d..653fb0652412304e9164e8bb49ea19f36058050b 100644 (file)
@@ -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);
index 46f96a4cebf943e902fad9a66f4842706caaa27f..67e235acf43b1daacf26282213fd3115b2445bf9 100644 (file)
@@ -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)
 {
index aaf073daa9fb30eb9db14921a2d53917ac29ab4e..b72e628e7ed64da374ca3699e21738eceebfaf68 100644 (file)
@@ -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 */
index 1017b90b902e3c797e6e5fc8a8e803000af0beab..5ae84ffeafb36b0f0d82b25fe4239ab1b6ba2c12 100644 (file)
@@ -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);
index beef6b54382b2982c4d86f6312af5c9e052e3636..572124c6e36b68edfafacdd6b305529a54b5d23b 100644 (file)
@@ -185,7 +185,7 @@ static void cpufreq_stats_free_table(unsigned int cpu)
 static void cpufreq_stats_free_sysfs(unsigned int cpu)
 {
        struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
-       if (policy && (cpumask_weight(policy->cpus) == 1)) {
+       if (policy && !policy_is_shared(policy)) {
                pr_debug("%s: Free sysfs stat\n", __func__);
                sysfs_remove_group(&policy->kobj, &stats_attr_group);
        }
index 753b198750cf68c5797ad129da47c5392ab21f37..feb360c8aa8891277ddf45022de49b9f99af046e 100644 (file)
@@ -127,6 +127,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)