From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755199AbcCBMDV (ORCPT ); Wed, 2 Mar 2016 07:03:21 -0500 Received: from casper.infradead.org ([85.118.1.10]:32915 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753373AbcCBMDU (ORCPT ); Wed, 2 Mar 2016 07:03:20 -0500 Date: Wed, 2 Mar 2016 13:03:16 +0100 From: Peter Zijlstra To: Alexander Gordeev Cc: linux-kernel@vger.kernel.org, Oleg Nesterov , Tejun Heo Subject: Re: [PATCH v3 1/2] sched/core: Get rid of 'cpu' argument in wq_worker_sleeping() Message-ID: <20160302120316.GD6356@twins.programming.kicks-ass.net> References: <3cc0bf6e136c1177c9dd56d567d5e3f76147d456.1456919394.git.agordeev@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3cc0bf6e136c1177c9dd56d567d5e3f76147d456.1456919394.git.agordeev@redhat.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This really should also have been Cc'ed to TJ, doing so now. On Wed, Mar 02, 2016 at 12:53:31PM +0100, Alexander Gordeev wrote: > Given that wq_worker_sleeping() could only be called for a > CPU it is running on, we do not need passing a CPU ID as an > argument. > > Suggested-by: Oleg Nesterov > Cc: Oleg Nesterov > Cc: Peter Zijlstra > Signed-off-by: Alexander Gordeev > --- > kernel/sched/core.c | 2 +- > kernel/workqueue.c | 5 ++--- > kernel/workqueue_internal.h | 2 +- > 3 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 423452c..735e87c 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -3183,7 +3183,7 @@ static void __sched notrace __schedule(bool preempt) > if (prev->flags & PF_WQ_WORKER) { > struct task_struct *to_wakeup; > > - to_wakeup = wq_worker_sleeping(prev, cpu); > + to_wakeup = wq_worker_sleeping(prev); > if (to_wakeup) > try_to_wake_up_local(to_wakeup); > } > diff --git a/kernel/workqueue.c b/kernel/workqueue.c > index 7ff5dc7..2fa8d26 100644 > --- a/kernel/workqueue.c > +++ b/kernel/workqueue.c > @@ -858,7 +858,6 @@ void wq_worker_waking_up(struct task_struct *task, int cpu) > /** > * wq_worker_sleeping - a worker is going to sleep > * @task: task going to sleep > - * @cpu: CPU in question, must be the current CPU number > * > * This function is called during schedule() when a busy worker is > * going to sleep. Worker on the same cpu can be woken up by > @@ -870,7 +869,7 @@ void wq_worker_waking_up(struct task_struct *task, int cpu) > * Return: > * Worker task on @cpu to wake up, %NULL if none. > */ > -struct task_struct *wq_worker_sleeping(struct task_struct *task, int cpu) > +struct task_struct *wq_worker_sleeping(struct task_struct *task) > { > struct worker *worker = kthread_data(task), *to_wakeup = NULL; > struct worker_pool *pool; > @@ -886,7 +885,7 @@ struct task_struct *wq_worker_sleeping(struct task_struct *task, int cpu) > pool = worker->pool; > > /* this can only happen on the local cpu */ > - if (WARN_ON_ONCE(cpu != raw_smp_processor_id() || pool->cpu != cpu)) > + if (WARN_ON_ONCE(pool->cpu != raw_smp_processor_id())) > return NULL; > > /* > diff --git a/kernel/workqueue_internal.h b/kernel/workqueue_internal.h > index 4521587..8635417 100644 > --- a/kernel/workqueue_internal.h > +++ b/kernel/workqueue_internal.h > @@ -69,6 +69,6 @@ static inline struct worker *current_wq_worker(void) > * sched/core.c and workqueue.c. > */ > void wq_worker_waking_up(struct task_struct *task, int cpu); > -struct task_struct *wq_worker_sleeping(struct task_struct *task, int cpu); > +struct task_struct *wq_worker_sleeping(struct task_struct *task); > > #endif /* _KERNEL_WORKQUEUE_INTERNAL_H */ > -- > 1.8.3.1 >