Message ID | b3deff3c75a0ca1b687c92bf81061c3728346494.1362381470.git.viresh.kumar@linaro.org (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Monday, March 04, 2013 03:37:56 PM Viresh Kumar wrote: > have_multiple_policies is required by platforms having multiple clock-domains > for cpus, i.e. supporting multiple policies for cpus. This patch adds in a > Kconfig option for enabling execution of this code. > > Reported-by: Borislav Petkov <bp@alien8.de> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > drivers/cpufreq/Kconfig | 3 +++ > include/linux/cpufreq.h | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig > index cbcb21e..e6e6939 100644 > --- a/drivers/cpufreq/Kconfig > +++ b/drivers/cpufreq/Kconfig > @@ -23,6 +23,9 @@ config CPU_FREQ_TABLE > config CPU_FREQ_GOV_COMMON > bool > > +config CPU_FREQ_HAVE_MULTIPLE_POLICIES > + bool > + > config CPU_FREQ_STAT > tristate "CPU frequency translation statistics" > select CPU_FREQ_TABLE > diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h > index 6e1abd2..a092fcb 100644 > --- a/include/linux/cpufreq.h > +++ b/include/linux/cpufreq.h > @@ -107,11 +107,13 @@ struct cpufreq_policy { > unsigned int policy; /* see above */ > struct cpufreq_governor *governor; /* see below */ > void *governor_data; > +#ifdef CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES > /* This should be set by init() of platforms having multiple > * clock-domains, i.e. supporting multiple policies. With this sysfs > * directories of governor would be created in cpu/cpu<num>/cpufreq/ > * directory */ > bool have_multiple_policies; > +#endif > > struct work_struct update; /* if update_policy() needs to be > * called, but you're in IRQ context */ > @@ -142,9 +144,11 @@ static inline bool policy_is_shared(struct cpufreq_policy *policy) > static inline struct kobject * > get_governor_parent_kobj(struct cpufreq_policy *policy) > { > +#ifdef CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES > if (policy->have_multiple_policies) > return &policy->kobj; > else > +#endif > return cpufreq_global_kobject; > } One more question before I apply it. Is there any architecture/platform that will set CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES and keep have_multiple_policies unset at the same time? Rafael
On 12 March 2013 07:38, Rafael J. Wysocki <rjw@sisk.pl> wrote: > One more question before I apply it. > > Is there any architecture/platform that will set > CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES and keep have_multiple_policies unset > at the same time? No, they are redundant. That's why i have been forcing to drop this patch. -- 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 Tuesday, March 12, 2013 08:55:12 AM Viresh Kumar wrote: > On 12 March 2013 07:38, Rafael J. Wysocki <rjw@sisk.pl> wrote: > > One more question before I apply it. > > > > Is there any architecture/platform that will set > > CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES and keep have_multiple_policies unset > > at the same time? > > No, they are redundant. That's why i have been forcing to drop this patch. I see. What about having the Kconfig option alone, however? Rafael
On 14 March 2013 03:11, Rafael J. Wysocki <rjw@sisk.pl> wrote: > On Tuesday, March 12, 2013 08:55:12 AM Viresh Kumar wrote: >> On 12 March 2013 07:38, Rafael J. Wysocki <rjw@sisk.pl> wrote: >> > One more question before I apply it. >> > >> > Is there any architecture/platform that will set >> > CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES and keep have_multiple_policies unset >> > at the same time? >> >> No, they are redundant. That's why i have been forcing to drop this patch. > > I see. > > What about having the Kconfig option alone, however? Even that is not enough. We build multiplatform kernels and so need a variable to be set by platform. -- 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 Thursday, March 14, 2013 08:39:55 AM Viresh Kumar wrote: > On 14 March 2013 03:11, Rafael J. Wysocki <rjw@sisk.pl> wrote: > > On Tuesday, March 12, 2013 08:55:12 AM Viresh Kumar wrote: > >> On 12 March 2013 07:38, Rafael J. Wysocki <rjw@sisk.pl> wrote: > >> > One more question before I apply it. > >> > > >> > Is there any architecture/platform that will set > >> > CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES and keep have_multiple_policies unset > >> > at the same time? > >> > >> No, they are redundant. That's why i have been forcing to drop this patch. > > > > I see. > > > > What about having the Kconfig option alone, however? > > Even that is not enough. We build multiplatform kernels and so need a > variable to be set by platform. Which means the Kconfig option and the field are not redundant in fact. But do we need the field to reside in the policy structure? It looks like it may just be a global bool variable (in which case the Kconfig option could be dropped IMO). Is there any particular reason to put that thing into struct cpufreq_policy? Rafael
On 20 March 2013 05:50, Rafael J. Wysocki <rjw@sisk.pl> wrote: > On Thursday, March 14, 2013 08:39:55 AM Viresh Kumar wrote: >> On 14 March 2013 03:11, Rafael J. Wysocki <rjw@sisk.pl> wrote: >> > On Tuesday, March 12, 2013 08:55:12 AM Viresh Kumar wrote: >> >> On 12 March 2013 07:38, Rafael J. Wysocki <rjw@sisk.pl> wrote: >> >> > One more question before I apply it. >> >> > >> >> > Is there any architecture/platform that will set >> >> > CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES and keep have_multiple_policies unset >> >> > at the same time? >> >> >> >> No, they are redundant. That's why i have been forcing to drop this patch. >> > >> > I see. >> > >> > What about having the Kconfig option alone, however? >> >> Even that is not enough. We build multiplatform kernels and so need a >> variable to be set by platform. > > Which means the Kconfig option and the field are not redundant in fact. Yes. Redundant was the wrong word. Actually Kconfig option is just not required as we can work efficiently without it. > But do we need the field to reside in the policy structure? It looks like > it may just be a global bool variable Yes. It is not per policy but per cpufreq driver. And this can be done by sharing a function from cpufreq core to driver. But when do you want me to call this function (which will set this global variable). If we do it from init, then we will end up calling it again and again. Then it has to be called before calling cpufreq_register_driver(), as init() gets called internally. > (in which case the Kconfig option could be dropped IMO). We are aligned now :) > Is there any particular reason to put that thing into > struct cpufreq_policy? Just the problem i mentioned to you. -- 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 20 March 2013 09:53, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> But when do you want me to call this function
Guess what, i got answer to this question: struct cpufreq_driver :)
--
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/Kconfig b/drivers/cpufreq/Kconfig index cbcb21e..e6e6939 100644 --- a/drivers/cpufreq/Kconfig +++ b/drivers/cpufreq/Kconfig @@ -23,6 +23,9 @@ config CPU_FREQ_TABLE config CPU_FREQ_GOV_COMMON bool +config CPU_FREQ_HAVE_MULTIPLE_POLICIES + bool + config CPU_FREQ_STAT tristate "CPU frequency translation statistics" select CPU_FREQ_TABLE diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 6e1abd2..a092fcb 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -107,11 +107,13 @@ struct cpufreq_policy { unsigned int policy; /* see above */ struct cpufreq_governor *governor; /* see below */ void *governor_data; +#ifdef CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES /* This should be set by init() of platforms having multiple * clock-domains, i.e. supporting multiple policies. With this sysfs * directories of governor would be created in cpu/cpu<num>/cpufreq/ * directory */ bool have_multiple_policies; +#endif struct work_struct update; /* if update_policy() needs to be * called, but you're in IRQ context */ @@ -142,9 +144,11 @@ static inline bool policy_is_shared(struct cpufreq_policy *policy) static inline struct kobject * get_governor_parent_kobj(struct cpufreq_policy *policy) { +#ifdef CONFIG_CPU_FREQ_HAVE_MULTIPLE_POLICIES if (policy->have_multiple_policies) return &policy->kobj; else +#endif return cpufreq_global_kobject; }
have_multiple_policies is required by platforms having multiple clock-domains for cpus, i.e. supporting multiple policies for cpus. This patch adds in a Kconfig option for enabling execution of this code. Reported-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- drivers/cpufreq/Kconfig | 3 +++ include/linux/cpufreq.h | 4 ++++ 2 files changed, 7 insertions(+)