Message ID | 1725227.VMGKuhRxma@vostro.rjw.lan (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
On 10-09-15, 23:36, Rafael J. Wysocki wrote: > BTW, I wonder how much of the stuff in cpufreq.h can be moved to a local header > under drivers/cpufreq/. It looks like the majority of it is not used by > anybody else. Okay, will check that out and do some cleanup. > --- > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > Subject: cpufreq: acpi-cpufreq: Use cpufreq_cpu_get_raw() in ->get() > > cpufreq_cpu_get() called by get_cur_freq_on_cpu() is overkill, > because the ->get() callback is always invoked in a context in > which all of the conditions checked by cpufreq_cpu_get() are > guaranteed to be satisfied. > > Use cpufreq_cpu_get_raw() instead of it and drop the > corresponding cpufreq_cpu_put() from get_cur_freq_on_cpu(). > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > --- > drivers/cpufreq/acpi-cpufreq.c | 3 +-- > drivers/cpufreq/cpufreq.c | 2 +- > include/linux/cpufreq.h | 5 +++++ > 3 files changed, 7 insertions(+), 3 deletions(-) > > Index: linux-pm/drivers/cpufreq/acpi-cpufreq.c > =================================================================== > --- linux-pm.orig/drivers/cpufreq/acpi-cpufreq.c > +++ linux-pm/drivers/cpufreq/acpi-cpufreq.c > @@ -375,12 +375,11 @@ static unsigned int get_cur_freq_on_cpu( > > pr_debug("get_cur_freq_on_cpu (%d)\n", cpu); > > - policy = cpufreq_cpu_get(cpu); > + policy = cpufreq_cpu_get_raw(cpu); > if (unlikely(!policy)) > return 0; > > data = policy->driver_data; > - cpufreq_cpu_put(policy); > if (unlikely(!data || !data->freq_table)) > return 0; > > Index: linux-pm/drivers/cpufreq/cpufreq.c > =================================================================== > --- linux-pm.orig/drivers/cpufreq/cpufreq.c > +++ linux-pm/drivers/cpufreq/cpufreq.c > @@ -238,13 +238,13 @@ int cpufreq_generic_init(struct cpufreq_ > } > EXPORT_SYMBOL_GPL(cpufreq_generic_init); > > -/* Only for cpufreq core internal use */ > struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) > { > struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); > > return policy && cpumask_test_cpu(cpu, policy->cpus) ? policy : NULL; > } > +EXPORT_SYMBOL_GPL(cpufreq_cpu_get_raw); > > unsigned int cpufreq_generic_get(unsigned int cpu) > { > Index: linux-pm/include/linux/cpufreq.h > =================================================================== > --- linux-pm.orig/include/linux/cpufreq.h > +++ linux-pm/include/linux/cpufreq.h > @@ -129,9 +129,14 @@ struct cpufreq_policy { > #define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/ > > #ifdef CONFIG_CPU_FREQ > +struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu); > struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu); > void cpufreq_cpu_put(struct cpufreq_policy *policy); > #else > +static inline struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) > +{ > + return NULL; > +} > static inline struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu) > { > return NULL; Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
On 11-09-15, 21:48, Viresh Kumar wrote: > > -/* Only for cpufreq core internal use */ > > struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) > > { > > struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); > > > > return policy && cpumask_test_cpu(cpu, policy->cpus) ? policy : NULL; > > } > > +EXPORT_SYMBOL_GPL(cpufreq_cpu_get_raw); This routine was recently marked as static and now with your patch it results in compilation error. You just need to remove the 'static' part from the routine. I would have sent a patch for this, but I thought you would like to edit the original patch itself to not break git bisect.
On Tuesday, September 15, 2015 01:09:21 PM Viresh Kumar wrote: > On 11-09-15, 21:48, Viresh Kumar wrote: > > > -/* Only for cpufreq core internal use */ > > > struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) > > > { > > > struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); > > > > > > return policy && cpumask_test_cpu(cpu, policy->cpus) ? policy : NULL; > > > } > > > +EXPORT_SYMBOL_GPL(cpufreq_cpu_get_raw); > > This routine was recently marked as static and now with your patch it > results in compilation error. You just need to remove the 'static' > part from the routine. > > I would have sent a patch for this, but I thought you would like to > edit the original patch itself to not break git bisect. I even tried to do that previously, but I made a mistake then. It should be fixed in my bleeding-edge branch now. Thanks, Rafael -- 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
Index: linux-pm/drivers/cpufreq/acpi-cpufreq.c =================================================================== --- linux-pm.orig/drivers/cpufreq/acpi-cpufreq.c +++ linux-pm/drivers/cpufreq/acpi-cpufreq.c @@ -375,12 +375,11 @@ static unsigned int get_cur_freq_on_cpu( pr_debug("get_cur_freq_on_cpu (%d)\n", cpu); - policy = cpufreq_cpu_get(cpu); + policy = cpufreq_cpu_get_raw(cpu); if (unlikely(!policy)) return 0; data = policy->driver_data; - cpufreq_cpu_put(policy); if (unlikely(!data || !data->freq_table)) return 0; Index: linux-pm/drivers/cpufreq/cpufreq.c =================================================================== --- linux-pm.orig/drivers/cpufreq/cpufreq.c +++ linux-pm/drivers/cpufreq/cpufreq.c @@ -238,13 +238,13 @@ int cpufreq_generic_init(struct cpufreq_ } EXPORT_SYMBOL_GPL(cpufreq_generic_init); -/* Only for cpufreq core internal use */ struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) { struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu); return policy && cpumask_test_cpu(cpu, policy->cpus) ? policy : NULL; } +EXPORT_SYMBOL_GPL(cpufreq_cpu_get_raw); unsigned int cpufreq_generic_get(unsigned int cpu) { Index: linux-pm/include/linux/cpufreq.h =================================================================== --- linux-pm.orig/include/linux/cpufreq.h +++ linux-pm/include/linux/cpufreq.h @@ -129,9 +129,14 @@ struct cpufreq_policy { #define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/ #ifdef CONFIG_CPU_FREQ +struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu); struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu); void cpufreq_cpu_put(struct cpufreq_policy *policy); #else +static inline struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) +{ + return NULL; +} static inline struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu) { return NULL;