Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752654AbbHPWCP (ORCPT ); Sun, 16 Aug 2015 18:02:15 -0400 Received: from casper.infradead.org ([85.118.1.10]:55472 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751452AbbHPWBq (ORCPT ); Sun, 16 Aug 2015 18:01:46 -0400 Date: Sun, 16 Aug 2015 22:35:12 +0200 From: Peter Zijlstra To: Morten Rasmussen Cc: mingo@redhat.com, vincent.guittot@linaro.org, daniel.lezcano@linaro.org, Dietmar Eggemann , yuyang.du@intel.com, mturquette@baylibre.com, rjw@rjwysocki.net, Juri Lelli , sgurrappadi@nvidia.com, pang.xunlei@zte.com.cn, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org Subject: Re: [RFCv5 PATCH 45/46] sched/cpufreq_sched: modify pcpu_capacity handling Message-ID: <20150816203512.GK10304@worktop.programming.kicks-ass.net> References: <1436293469-25707-1-git-send-email-morten.rasmussen@arm.com> <1436293469-25707-46-git-send-email-morten.rasmussen@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1436293469-25707-46-git-send-email-morten.rasmussen@arm.com> User-Agent: Mutt/1.5.22.1 (2013-10-16) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1463 Lines: 37 On Tue, Jul 07, 2015 at 07:24:28PM +0100, Morten Rasmussen wrote: > From: Juri Lelli > > Use the cpu argument of cpufreq_sched_set_cap() to handle per_cpu writes, > as the thing can be called remotely (e.g., from load balacing code). > > cc: Ingo Molnar > cc: Peter Zijlstra > > Signed-off-by: Juri Lelli > --- > kernel/sched/cpufreq_sched.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/sched/cpufreq_sched.c b/kernel/sched/cpufreq_sched.c > index 06ff183..b81ac779 100644 > --- a/kernel/sched/cpufreq_sched.c > +++ b/kernel/sched/cpufreq_sched.c > @@ -151,7 +151,7 @@ void cpufreq_sched_set_cap(int cpu, unsigned long capacity) > unsigned long capacity_max = 0; > > /* update per-cpu capacity request */ > - __this_cpu_write(pcpu_capacity, capacity); > + per_cpu(pcpu_capacity, cpu) = capacity; > > policy = cpufreq_cpu_get(cpu); > if (IS_ERR_OR_NULL(policy)) { Uhm,.. this function seems to hard assume its called for the local CPU. It will only use the irq_queue_work_on() if the cpufreq thing requires the thread, otherwise it will call the method directly on the calling cpu. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/