Re: [PATCH] cpufreq: userspace: Simplify governor
On Tuesday, June 18, 2013 10:20:33 AM Viresh Kumar wrote: > On 5 June 2013 18:38, Viresh Kumar wrote: > > To be honest with the amount of experience I have now, my log was > > poor :( > > > > I have used following log in the attached patch: > > > > Subject: [PATCH] cpufreq: userspace: Simplify governor > > > > Userspace governor has got more code than what it needs for its functioning. > > Lets simplify it. Portions of code removed are: > > - Extra header files which aren't required anymore (rearranged them as well) > > - cpu_{max|min|cur|set}_freq, as they are always same as > > policy->{max|min|cur} > > - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq > > anymore > > - cpus_using_userspace_governor as it was for notifier code > > > > Signed-off-by: Viresh Kumar > > Hi Rafael, > > Are you happy with the log & description of this patch now? Yes, I am. I'm hoping to get to the pending patches later today. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] cpufreq: userspace: Simplify governor
On Tuesday, June 18, 2013 10:20:33 AM Viresh Kumar wrote: On 5 June 2013 18:38, Viresh Kumar viresh.ku...@linaro.org wrote: To be honest with the amount of experience I have now, my log was poor :( I have used following log in the attached patch: Subject: [PATCH] cpufreq: userspace: Simplify governor Userspace governor has got more code than what it needs for its functioning. Lets simplify it. Portions of code removed are: - Extra header files which aren't required anymore (rearranged them as well) - cpu_{max|min|cur|set}_freq, as they are always same as policy-{max|min|cur} - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq anymore - cpus_using_userspace_governor as it was for notifier code Signed-off-by: Viresh Kumar viresh.ku...@linaro.org Hi Rafael, Are you happy with the log description of this patch now? Yes, I am. I'm hoping to get to the pending patches later today. Thanks, Rafael -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] cpufreq: userspace: Simplify governor
On 5 June 2013 18:38, Viresh Kumar wrote: > To be honest with the amount of experience I have now, my log was > poor :( > > I have used following log in the attached patch: > > Subject: [PATCH] cpufreq: userspace: Simplify governor > > Userspace governor has got more code than what it needs for its functioning. > Lets simplify it. Portions of code removed are: > - Extra header files which aren't required anymore (rearranged them as well) > - cpu_{max|min|cur|set}_freq, as they are always same as policy->{max|min|cur} > - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq > anymore > - cpus_using_userspace_governor as it was for notifier code > > Signed-off-by: Viresh Kumar Hi Rafael, Are you happy with the log & description of this patch now? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] cpufreq: userspace: Simplify governor
On 5 June 2013 18:38, Viresh Kumar viresh.ku...@linaro.org wrote: To be honest with the amount of experience I have now, my log was poor :( I have used following log in the attached patch: Subject: [PATCH] cpufreq: userspace: Simplify governor Userspace governor has got more code than what it needs for its functioning. Lets simplify it. Portions of code removed are: - Extra header files which aren't required anymore (rearranged them as well) - cpu_{max|min|cur|set}_freq, as they are always same as policy-{max|min|cur} - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq anymore - cpus_using_userspace_governor as it was for notifier code Signed-off-by: Viresh Kumar viresh.ku...@linaro.org Hi Rafael, Are you happy with the log description of this patch now? -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] cpufreq: userspace: Simplify governor
2013/6/5 Viresh Kumar : > On 5 June 2013 18:07, Rafael J. Wysocki wrote: >> On Wednesday, June 05, 2013 02:34:33 PM Viresh Kumar wrote: >>> Userspace governor has got more code than what it needs for its functioning. >>> Lets simplify it. >> >> OK >> >> Why exactly is the code you're removing unnecessary? >> >>> Over that it will fix issues in cpufreq_governor_userspace(), which isn't >>> doing >>> right things in START/STOP. >> >> What exactly is the problem? > > I sent a reply now to the problem reported by Xiaoguang as I don't feel > now there is a problem :( > Yes, I think the problem will disappear since the related code is deleted. the original code path will not be executed. >>> It is working per-cpu currently whereas it just >>> required to manage policy->cpu. >>> >>> Reported-by: Xiaoguang Chen >>> Signed-off-by: Viresh Kumar >>> --- >>> @Rafael: >>> >>> I don't know why this code was initially added. Please let me know if I am >>> doing >>> something stupid. >>> >>> Also, please apply it as a fix for 3.10 as it is broken recently in 3.9. >> >> I'd love to, but I need answers to the above questions before I do that. > > To be honest with the amount of experience I have now, my log was > poor :( > > I have used following log in the attached patch: > > Subject: [PATCH] cpufreq: userspace: Simplify governor > > Userspace governor has got more code than what it needs for its functioning. > Lets simplify it. Portions of code removed are: > - Extra header files which aren't required anymore (rearranged them as well) > - cpu_{max|min|cur|set}_freq, as they are always same as policy->{max|min|cur} > - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq > anymore > - cpus_using_userspace_governor as it was for notifier code > > Signed-off-by: Viresh Kumar -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] cpufreq: userspace: Simplify governor
2013/6/5 Viresh Kumar viresh.ku...@linaro.org: On 5 June 2013 18:07, Rafael J. Wysocki r...@sisk.pl wrote: On Wednesday, June 05, 2013 02:34:33 PM Viresh Kumar wrote: Userspace governor has got more code than what it needs for its functioning. Lets simplify it. OK Why exactly is the code you're removing unnecessary? Over that it will fix issues in cpufreq_governor_userspace(), which isn't doing right things in START/STOP. What exactly is the problem? I sent a reply now to the problem reported by Xiaoguang as I don't feel now there is a problem :( Yes, I think the problem will disappear since the related code is deleted. the original code path will not be executed. It is working per-cpu currently whereas it just required to manage policy-cpu. Reported-by: Xiaoguang Chen chenxg.marv...@gmail.com Signed-off-by: Viresh Kumar viresh.ku...@linaro.org --- @Rafael: I don't know why this code was initially added. Please let me know if I am doing something stupid. Also, please apply it as a fix for 3.10 as it is broken recently in 3.9. I'd love to, but I need answers to the above questions before I do that. To be honest with the amount of experience I have now, my log was poor :( I have used following log in the attached patch: Subject: [PATCH] cpufreq: userspace: Simplify governor Userspace governor has got more code than what it needs for its functioning. Lets simplify it. Portions of code removed are: - Extra header files which aren't required anymore (rearranged them as well) - cpu_{max|min|cur|set}_freq, as they are always same as policy-{max|min|cur} - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq anymore - cpus_using_userspace_governor as it was for notifier code Signed-off-by: Viresh Kumar viresh.ku...@linaro.org -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] cpufreq: userspace: Simplify governor
On 5 June 2013 18:07, Rafael J. Wysocki wrote: > On Wednesday, June 05, 2013 02:34:33 PM Viresh Kumar wrote: >> Userspace governor has got more code than what it needs for its functioning. >> Lets simplify it. > > OK > > Why exactly is the code you're removing unnecessary? > >> Over that it will fix issues in cpufreq_governor_userspace(), which isn't >> doing >> right things in START/STOP. > > What exactly is the problem? I sent a reply now to the problem reported by Xiaoguang as I don't feel now there is a problem :( >> It is working per-cpu currently whereas it just >> required to manage policy->cpu. >> >> Reported-by: Xiaoguang Chen >> Signed-off-by: Viresh Kumar >> --- >> @Rafael: >> >> I don't know why this code was initially added. Please let me know if I am >> doing >> something stupid. >> >> Also, please apply it as a fix for 3.10 as it is broken recently in 3.9. > > I'd love to, but I need answers to the above questions before I do that. To be honest with the amount of experience I have now, my log was poor :( I have used following log in the attached patch: Subject: [PATCH] cpufreq: userspace: Simplify governor Userspace governor has got more code than what it needs for its functioning. Lets simplify it. Portions of code removed are: - Extra header files which aren't required anymore (rearranged them as well) - cpu_{max|min|cur|set}_freq, as they are always same as policy->{max|min|cur} - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq anymore - cpus_using_userspace_governor as it was for notifier code Signed-off-by: Viresh Kumar 0001-cpufreq-userspace-Simplify-governor.patch Description: Binary data
Re: [PATCH] cpufreq: userspace: Simplify governor
On Wednesday, June 05, 2013 02:34:33 PM Viresh Kumar wrote: > Userspace governor has got more code than what it needs for its functioning. > Lets simplify it. OK Why exactly is the code you're removing unnecessary? > Over that it will fix issues in cpufreq_governor_userspace(), which isn't > doing > right things in START/STOP. What exactly is the problem? > It is working per-cpu currently whereas it just > required to manage policy->cpu. > > Reported-by: Xiaoguang Chen > Signed-off-by: Viresh Kumar > --- > @Rafael: > > I don't know why this code was initially added. Please let me know if I am > doing > something stupid. > > Also, please apply it as a fix for 3.10 as it is broken recently in 3.9. I'd love to, but I need answers to the above questions before I do that. Thanks, Rafael > drivers/cpufreq/cpufreq_userspace.c | 108 > > 1 file changed, 12 insertions(+), 96 deletions(-) > > diff --git a/drivers/cpufreq/cpufreq_userspace.c > b/drivers/cpufreq/cpufreq_userspace.c > index bbeb9c0..5dc77b7 100644 > --- a/drivers/cpufreq/cpufreq_userspace.c > +++ b/drivers/cpufreq/cpufreq_userspace.c > @@ -13,55 +13,13 @@ > > #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt > > -#include > -#include > -#include > -#include > -#include > -#include > #include > -#include > -#include > -#include > -#include > +#include > +#include > #include > > -/** > - * A few values needed by the userspace governor > - */ > -static DEFINE_PER_CPU(unsigned int, cpu_max_freq); > -static DEFINE_PER_CPU(unsigned int, cpu_min_freq); > -static DEFINE_PER_CPU(unsigned int, cpu_cur_freq); /* current CPU freq */ > -static DEFINE_PER_CPU(unsigned int, cpu_set_freq); /* CPU freq desired by > - userspace */ > static DEFINE_PER_CPU(unsigned int, cpu_is_managed); > - > static DEFINE_MUTEX(userspace_mutex); > -static int cpus_using_userspace_governor; > - > -/* keep track of frequency transitions */ > -static int > -userspace_cpufreq_notifier(struct notifier_block *nb, unsigned long val, > - void *data) > -{ > - struct cpufreq_freqs *freq = data; > - > - if (!per_cpu(cpu_is_managed, freq->cpu)) > - return 0; > - > - if (val == CPUFREQ_POSTCHANGE) { > - pr_debug("saving cpu_cur_freq of cpu %u to be %u kHz\n", > - freq->cpu, freq->new); > - per_cpu(cpu_cur_freq, freq->cpu) = freq->new; > - } > - > - return 0; > -} > - > -static struct notifier_block userspace_cpufreq_notifier_block = { > - .notifier_call = userspace_cpufreq_notifier > -}; > - > > /** > * cpufreq_set - set the CPU frequency > @@ -80,13 +38,6 @@ static int cpufreq_set(struct cpufreq_policy *policy, > unsigned int freq) > if (!per_cpu(cpu_is_managed, policy->cpu)) > goto err; > > - per_cpu(cpu_set_freq, policy->cpu) = freq; > - > - if (freq < per_cpu(cpu_min_freq, policy->cpu)) > - freq = per_cpu(cpu_min_freq, policy->cpu); > - if (freq > per_cpu(cpu_max_freq, policy->cpu)) > - freq = per_cpu(cpu_max_freq, policy->cpu); > - > /* >* We're safe from concurrent calls to ->target() here >* as we hold the userspace_mutex lock. If we were calling > @@ -107,7 +58,7 @@ static int cpufreq_set(struct cpufreq_policy *policy, > unsigned int freq) > > static ssize_t show_speed(struct cpufreq_policy *policy, char *buf) > { > - return sprintf(buf, "%u\n", per_cpu(cpu_cur_freq, policy->cpu)); > + return sprintf(buf, "%u\n", policy->cur); > } > > static int cpufreq_governor_userspace(struct cpufreq_policy *policy, > @@ -119,66 +70,31 @@ static int cpufreq_governor_userspace(struct > cpufreq_policy *policy, > switch (event) { > case CPUFREQ_GOV_START: > BUG_ON(!policy->cur); > - mutex_lock(_mutex); > - > - if (cpus_using_userspace_governor == 0) { > - cpufreq_register_notifier( > - _cpufreq_notifier_block, > - CPUFREQ_TRANSITION_NOTIFIER); > - } > - cpus_using_userspace_governor++; > + pr_debug("started managing cpu %u\n", cpu); > > + mutex_lock(_mutex); > per_cpu(cpu_is_managed, cpu) = 1; > - per_cpu(cpu_min_freq, cpu) = policy->min; > - per_cpu(cpu_max_freq, cpu) = policy->max; > - per_cpu(cpu_cur_freq, cpu) = policy->cur; > - per_cpu(cpu_set_freq, cpu) = policy->cur; > - pr_debug("managing cpu %u started " > - "(%u - %u kHz, currently %u kHz)\n", > - cpu, > - per_cpu(cpu_min_freq, cpu), > - per_cpu(cpu_max_freq, cpu), > - per_cpu(cpu_cur_freq, cpu)); > - > mutex_unlock(_mutex);
Re: [PATCH] cpufreq: userspace: Simplify governor
On Wednesday, June 05, 2013 02:34:33 PM Viresh Kumar wrote: Userspace governor has got more code than what it needs for its functioning. Lets simplify it. OK Why exactly is the code you're removing unnecessary? Over that it will fix issues in cpufreq_governor_userspace(), which isn't doing right things in START/STOP. What exactly is the problem? It is working per-cpu currently whereas it just required to manage policy-cpu. Reported-by: Xiaoguang Chen chenxg.marv...@gmail.com Signed-off-by: Viresh Kumar viresh.ku...@linaro.org --- @Rafael: I don't know why this code was initially added. Please let me know if I am doing something stupid. Also, please apply it as a fix for 3.10 as it is broken recently in 3.9. I'd love to, but I need answers to the above questions before I do that. Thanks, Rafael drivers/cpufreq/cpufreq_userspace.c | 108 1 file changed, 12 insertions(+), 96 deletions(-) diff --git a/drivers/cpufreq/cpufreq_userspace.c b/drivers/cpufreq/cpufreq_userspace.c index bbeb9c0..5dc77b7 100644 --- a/drivers/cpufreq/cpufreq_userspace.c +++ b/drivers/cpufreq/cpufreq_userspace.c @@ -13,55 +13,13 @@ #define pr_fmt(fmt) KBUILD_MODNAME : fmt -#include linux/kernel.h -#include linux/module.h -#include linux/smp.h -#include linux/init.h -#include linux/spinlock.h -#include linux/interrupt.h #include linux/cpufreq.h -#include linux/cpu.h -#include linux/types.h -#include linux/fs.h -#include linux/sysfs.h +#include linux/init.h +#include linux/module.h #include linux/mutex.h -/** - * A few values needed by the userspace governor - */ -static DEFINE_PER_CPU(unsigned int, cpu_max_freq); -static DEFINE_PER_CPU(unsigned int, cpu_min_freq); -static DEFINE_PER_CPU(unsigned int, cpu_cur_freq); /* current CPU freq */ -static DEFINE_PER_CPU(unsigned int, cpu_set_freq); /* CPU freq desired by - userspace */ static DEFINE_PER_CPU(unsigned int, cpu_is_managed); - static DEFINE_MUTEX(userspace_mutex); -static int cpus_using_userspace_governor; - -/* keep track of frequency transitions */ -static int -userspace_cpufreq_notifier(struct notifier_block *nb, unsigned long val, - void *data) -{ - struct cpufreq_freqs *freq = data; - - if (!per_cpu(cpu_is_managed, freq-cpu)) - return 0; - - if (val == CPUFREQ_POSTCHANGE) { - pr_debug(saving cpu_cur_freq of cpu %u to be %u kHz\n, - freq-cpu, freq-new); - per_cpu(cpu_cur_freq, freq-cpu) = freq-new; - } - - return 0; -} - -static struct notifier_block userspace_cpufreq_notifier_block = { - .notifier_call = userspace_cpufreq_notifier -}; - /** * cpufreq_set - set the CPU frequency @@ -80,13 +38,6 @@ static int cpufreq_set(struct cpufreq_policy *policy, unsigned int freq) if (!per_cpu(cpu_is_managed, policy-cpu)) goto err; - per_cpu(cpu_set_freq, policy-cpu) = freq; - - if (freq per_cpu(cpu_min_freq, policy-cpu)) - freq = per_cpu(cpu_min_freq, policy-cpu); - if (freq per_cpu(cpu_max_freq, policy-cpu)) - freq = per_cpu(cpu_max_freq, policy-cpu); - /* * We're safe from concurrent calls to -target() here * as we hold the userspace_mutex lock. If we were calling @@ -107,7 +58,7 @@ static int cpufreq_set(struct cpufreq_policy *policy, unsigned int freq) static ssize_t show_speed(struct cpufreq_policy *policy, char *buf) { - return sprintf(buf, %u\n, per_cpu(cpu_cur_freq, policy-cpu)); + return sprintf(buf, %u\n, policy-cur); } static int cpufreq_governor_userspace(struct cpufreq_policy *policy, @@ -119,66 +70,31 @@ static int cpufreq_governor_userspace(struct cpufreq_policy *policy, switch (event) { case CPUFREQ_GOV_START: BUG_ON(!policy-cur); - mutex_lock(userspace_mutex); - - if (cpus_using_userspace_governor == 0) { - cpufreq_register_notifier( - userspace_cpufreq_notifier_block, - CPUFREQ_TRANSITION_NOTIFIER); - } - cpus_using_userspace_governor++; + pr_debug(started managing cpu %u\n, cpu); + mutex_lock(userspace_mutex); per_cpu(cpu_is_managed, cpu) = 1; - per_cpu(cpu_min_freq, cpu) = policy-min; - per_cpu(cpu_max_freq, cpu) = policy-max; - per_cpu(cpu_cur_freq, cpu) = policy-cur; - per_cpu(cpu_set_freq, cpu) = policy-cur; - pr_debug(managing cpu %u started - (%u - %u kHz, currently %u kHz)\n, - cpu, - per_cpu(cpu_min_freq, cpu), - per_cpu(cpu_max_freq, cpu), -
Re: [PATCH] cpufreq: userspace: Simplify governor
On 5 June 2013 18:07, Rafael J. Wysocki r...@sisk.pl wrote: On Wednesday, June 05, 2013 02:34:33 PM Viresh Kumar wrote: Userspace governor has got more code than what it needs for its functioning. Lets simplify it. OK Why exactly is the code you're removing unnecessary? Over that it will fix issues in cpufreq_governor_userspace(), which isn't doing right things in START/STOP. What exactly is the problem? I sent a reply now to the problem reported by Xiaoguang as I don't feel now there is a problem :( It is working per-cpu currently whereas it just required to manage policy-cpu. Reported-by: Xiaoguang Chen chenxg.marv...@gmail.com Signed-off-by: Viresh Kumar viresh.ku...@linaro.org --- @Rafael: I don't know why this code was initially added. Please let me know if I am doing something stupid. Also, please apply it as a fix for 3.10 as it is broken recently in 3.9. I'd love to, but I need answers to the above questions before I do that. To be honest with the amount of experience I have now, my log was poor :( I have used following log in the attached patch: Subject: [PATCH] cpufreq: userspace: Simplify governor Userspace governor has got more code than what it needs for its functioning. Lets simplify it. Portions of code removed are: - Extra header files which aren't required anymore (rearranged them as well) - cpu_{max|min|cur|set}_freq, as they are always same as policy-{max|min|cur} - userspace_cpufreq_notifier_block as we don't need to set cpu_cur_freq anymore - cpus_using_userspace_governor as it was for notifier code Signed-off-by: Viresh Kumar viresh.ku...@linaro.org 0001-cpufreq-userspace-Simplify-governor.patch Description: Binary data