From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tejun Heo Subject: Re: [PATCH] workqueue: Handle race between wake up and rebind Date: Tue, 16 Jan 2018 09:35:34 -0800 Message-ID: <20180116173534.GR3460072@devbig577.frc2.facebook.com> References: <1516005492-4994-1-git-send-email-neeraju@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mail-qk0-f181.google.com ([209.85.220.181]:35003 "EHLO mail-qk0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750876AbeAPRfi (ORCPT ); Tue, 16 Jan 2018 12:35:38 -0500 Content-Disposition: inline In-Reply-To: <1516005492-4994-1-git-send-email-neeraju@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org To: Neeraj Upadhyay Cc: jiangshanlai@gmail.com, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, prsood@codeaurora.org, sramana@codeaurora.org Hello, Neeraj. On Mon, Jan 15, 2018 at 02:08:12PM +0530, Neeraj Upadhyay wrote: > - kworker/0:0 gets chance to run on cpu1; while processing > a work, it goes to sleep. However, it does not decrement > pool->nr_running. This is because WORKER_REBOUND (NOT_ > RUNNING) flag was cleared, when worker entered worker_ Do you mean that because REBOUND was set? > thread(). > > Worker 0 runs on cpu1 > worker_thread() > process_one_work() > wq_worker_sleeping() > if (worker->flags & WORKER_NOT_RUNNING) > return NULL; > if (WARN_ON_ONCE(pool->cpu != raw_smp_processor_id())) > > > - After this, when kworker/0:0 wakes up, this time on its > bounded cpu cpu0, it increments pool->nr_running again. > So, pool->nr_running becomes 2. Why is it suddenly 2? Who made it one on the account of the kworker? Do you see this happening? Or better, is there a (semi) reliable repro for this issue? Thanks. -- tejun