* [PATCH 0/2] change lpj in arm smp common code @ 2012-02-29 7:18 Richard Zhao 2012-02-29 7:18 ` [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp Richard Zhao ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Richard Zhao @ 2012-02-29 7:18 UTC (permalink / raw) To: linux-arm-kernel The two patches were originally in [PATCH V6 0/7] add a generic cpufreq driver. I seperated them and hope they can go to upstream earlier. Richard Zhao (2): ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp cpufreq: OMAP: remove loops_per_jiffy recalculate for smp arch/arm/kernel/smp.c | 54 ++++++++++++++++++++++++++++++++++++++++ drivers/cpufreq/omap-cpufreq.c | 36 -------------------------- 2 files changed, 54 insertions(+), 36 deletions(-) -- 1.7.5.4 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp 2012-02-29 7:18 [PATCH 0/2] change lpj in arm smp common code Richard Zhao @ 2012-02-29 7:18 ` Richard Zhao 2012-02-29 8:42 ` Shilimkar, Santosh 2012-02-29 7:18 ` [PATCH 2/2] cpufreq: OMAP: remove loops_per_jiffy recalculate " Richard Zhao 2012-02-29 18:21 ` [PATCH 0/2] change lpj in arm smp common code Kevin Hilman 2 siblings, 1 reply; 7+ messages in thread From: Richard Zhao @ 2012-02-29 7:18 UTC (permalink / raw) To: linux-arm-kernel If CONFIG_SMP, cpufreq skips loops_per_jiffy update, because different arch has different per-cpu loops_per_jiffy definition. Signed-off-by: Richard Zhao <richard.zhao@linaro.org> Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/kernel/smp.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-) diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index cdeb727..4381bef 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -25,6 +25,7 @@ #include <linux/percpu.h> #include <linux/clockchips.h> #include <linux/completion.h> +#include <linux/cpufreq.h> #include <linux/atomic.h> #include <asm/cacheflush.h> @@ -599,3 +600,56 @@ int setup_profiling_timer(unsigned int multiplier) { return -EINVAL; } + +#ifdef CONFIG_CPU_FREQ + +static DEFINE_PER_CPU(unsigned long, l_p_j_ref); +static DEFINE_PER_CPU(unsigned long, l_p_j_ref_freq); +static unsigned long global_l_p_j_ref; +static unsigned long global_l_p_j_ref_freq; + +static int cpufreq_callback(struct notifier_block *nb, + unsigned long val, void *data) +{ + struct cpufreq_freqs *freq = data; + int cpu = freq->cpu; + + if (freq->flags & CPUFREQ_CONST_LOOPS) + return NOTIFY_OK; + + if (!per_cpu(l_p_j_ref, cpu)) { + per_cpu(l_p_j_ref, cpu) = + per_cpu(cpu_data, cpu).loops_per_jiffy; + per_cpu(l_p_j_ref_freq, cpu) = freq->old; + if (!global_l_p_j_ref) { + global_l_p_j_ref = loops_per_jiffy; + global_l_p_j_ref_freq = freq->old; + } + } + + if ((val == CPUFREQ_PRECHANGE && freq->old < freq->new) || + (val == CPUFREQ_POSTCHANGE && freq->old > freq->new) || + (val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) { + loops_per_jiffy = cpufreq_scale(global_l_p_j_ref, + global_l_p_j_ref_freq, + freq->new); + per_cpu(cpu_data, cpu).loops_per_jiffy = + cpufreq_scale(per_cpu(l_p_j_ref, cpu), + per_cpu(l_p_j_ref_freq, cpu), + freq->new); + } + return NOTIFY_OK; +} + +static struct notifier_block cpufreq_notifier = { + .notifier_call = cpufreq_callback, +}; + +static int __init register_cpufreq_notifier(void) +{ + return cpufreq_register_notifier(&cpufreq_notifier, + CPUFREQ_TRANSITION_NOTIFIER); +} +core_initcall(register_cpufreq_notifier); + +#endif -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp 2012-02-29 7:18 ` [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp Richard Zhao @ 2012-02-29 8:42 ` Shilimkar, Santosh 0 siblings, 0 replies; 7+ messages in thread From: Shilimkar, Santosh @ 2012-02-29 8:42 UTC (permalink / raw) To: linux-arm-kernel On Wed, Feb 29, 2012 at 12:48 PM, Richard Zhao <richard.zhao@linaro.org> wrote: > If CONFIG_SMP, cpufreq skips loops_per_jiffy update, because different > arch has different per-cpu loops_per_jiffy definition. > > Signed-off-by: Richard Zhao <richard.zhao@linaro.org> > Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> > --- Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] cpufreq: OMAP: remove loops_per_jiffy recalculate for smp 2012-02-29 7:18 [PATCH 0/2] change lpj in arm smp common code Richard Zhao 2012-02-29 7:18 ` [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp Richard Zhao @ 2012-02-29 7:18 ` Richard Zhao 2012-02-29 8:42 ` Shilimkar, Santosh 2012-02-29 18:21 ` [PATCH 0/2] change lpj in arm smp common code Kevin Hilman 2 siblings, 1 reply; 7+ messages in thread From: Richard Zhao @ 2012-02-29 7:18 UTC (permalink / raw) To: linux-arm-kernel arm registered cpufreq transition notifier to recalculate it. Signed-off-by: Richard Zhao <richard.zhao@linaro.org> --- drivers/cpufreq/omap-cpufreq.c | 36 ------------------------------------ 1 files changed, 0 insertions(+), 36 deletions(-) diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c index 5d04c57..17da4c4 100644 --- a/drivers/cpufreq/omap-cpufreq.c +++ b/drivers/cpufreq/omap-cpufreq.c @@ -37,16 +37,6 @@ #include <mach/hardware.h> -#ifdef CONFIG_SMP -struct lpj_info { - unsigned long ref; - unsigned int freq; -}; - -static DEFINE_PER_CPU(struct lpj_info, lpj_ref); -static struct lpj_info global_lpj_ref; -#endif - static struct cpufreq_frequency_table *freq_table; static atomic_t freq_table_users = ATOMIC_INIT(0); static struct clk *mpu_clk; @@ -118,32 +108,6 @@ static int omap_target(struct cpufreq_policy *policy, ret = clk_set_rate(mpu_clk, freqs.new * 1000); freqs.new = omap_getspeed(policy->cpu); -#ifdef CONFIG_SMP - /* - * Note that loops_per_jiffy is not updated on SMP systems in - * cpufreq driver. So, update the per-CPU loops_per_jiffy value - * on frequency transition. We need to update all dependent CPUs. - */ - for_each_cpu(i, policy->cpus) { - struct lpj_info *lpj = &per_cpu(lpj_ref, i); - if (!lpj->freq) { - lpj->ref = per_cpu(cpu_data, i).loops_per_jiffy; - lpj->freq = freqs.old; - } - - per_cpu(cpu_data, i).loops_per_jiffy = - cpufreq_scale(lpj->ref, lpj->freq, freqs.new); - } - - /* And don't forget to adjust the global one */ - if (!global_lpj_ref.freq) { - global_lpj_ref.ref = loops_per_jiffy; - global_lpj_ref.freq = freqs.old; - } - loops_per_jiffy = cpufreq_scale(global_lpj_ref.ref, global_lpj_ref.freq, - freqs.new); -#endif - /* notifiers */ for_each_cpu(i, policy->cpus) { freqs.cpu = i; -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] cpufreq: OMAP: remove loops_per_jiffy recalculate for smp 2012-02-29 7:18 ` [PATCH 2/2] cpufreq: OMAP: remove loops_per_jiffy recalculate " Richard Zhao @ 2012-02-29 8:42 ` Shilimkar, Santosh 0 siblings, 0 replies; 7+ messages in thread From: Shilimkar, Santosh @ 2012-02-29 8:42 UTC (permalink / raw) To: linux-arm-kernel On Wed, Feb 29, 2012 at 12:48 PM, Richard Zhao <richard.zhao@linaro.org> wrote: > arm registered cpufreq transition notifier to recalculate it. > > Signed-off-by: Richard Zhao <richard.zhao@linaro.org> > --- Thanks for the OMAP updates Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 0/2] change lpj in arm smp common code 2012-02-29 7:18 [PATCH 0/2] change lpj in arm smp common code Richard Zhao 2012-02-29 7:18 ` [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp Richard Zhao 2012-02-29 7:18 ` [PATCH 2/2] cpufreq: OMAP: remove loops_per_jiffy recalculate " Richard Zhao @ 2012-02-29 18:21 ` Kevin Hilman 2012-04-01 1:20 ` Richard Zhao 2 siblings, 1 reply; 7+ messages in thread From: Kevin Hilman @ 2012-02-29 18:21 UTC (permalink / raw) To: linux-arm-kernel Richard Zhao <richard.zhao@linaro.org> writes: > The two patches were originally in [PATCH V6 0/7] add a generic cpufreq driver. > I seperated them and hope they can go to upstream earlier. > > Richard Zhao (2): > ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp > cpufreq: OMAP: remove loops_per_jiffy recalculate for smp The first one should go into Russell's patch system. Once he queues that, I can queue the OMAP one for the CPUfreq maintainer. Kevin ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 0/2] change lpj in arm smp common code 2012-02-29 18:21 ` [PATCH 0/2] change lpj in arm smp common code Kevin Hilman @ 2012-04-01 1:20 ` Richard Zhao 0 siblings, 0 replies; 7+ messages in thread From: Richard Zhao @ 2012-04-01 1:20 UTC (permalink / raw) To: linux-arm-kernel On Wed, Feb 29, 2012 at 10:21:19AM -0800, Kevin Hilman wrote: > Richard Zhao <richard.zhao@linaro.org> writes: > > > The two patches were originally in [PATCH V6 0/7] add a generic cpufreq driver. > > I seperated them and hope they can go to upstream earlier. > > > > Richard Zhao (2): > > ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp > > cpufreq: OMAP: remove loops_per_jiffy recalculate for smp > > The first one should go into Russell's patch system. Once he queues > that, I can queue the OMAP one for the CPUfreq maintainer. Hi Russel & Kevin, Could you double check whether you've picked the patch searies? I can not find them in 3.4rc. Thanks Richard > > Kevin > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-04-01 1:20 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-02-29 7:18 [PATCH 0/2] change lpj in arm smp common code Richard Zhao 2012-02-29 7:18 ` [PATCH 1/2] ARM: add cpufreq transiton notifier to adjust loops_per_jiffy for smp Richard Zhao 2012-02-29 8:42 ` Shilimkar, Santosh 2012-02-29 7:18 ` [PATCH 2/2] cpufreq: OMAP: remove loops_per_jiffy recalculate " Richard Zhao 2012-02-29 8:42 ` Shilimkar, Santosh 2012-02-29 18:21 ` [PATCH 0/2] change lpj in arm smp common code Kevin Hilman 2012-04-01 1:20 ` Richard Zhao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).