Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757930AbeAINoz (ORCPT + 1 other); Tue, 9 Jan 2018 08:44:55 -0500 Received: from mail-qt0-f180.google.com ([209.85.216.180]:34669 "EHLO mail-qt0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753640AbeAINox (ORCPT ); Tue, 9 Jan 2018 08:44:53 -0500 X-Google-Smtp-Source: ACJfBosQE+Swqgine9UuXkmA/XRXL8HZ4k7EhVJxpN1HZba6FjJQsQ2uRRuGjNKy1VreXzkYoz1nJw== Date: Tue, 9 Jan 2018 05:44:48 -0800 From: Tejun Heo To: "Paul E. McKenney" Cc: Prateek Sood , Peter Zijlstra , avagin@gmail.com, mingo@kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, sramana@codeaurora.org Subject: Re: [PATCH] cgroup/cpuset: fix circular locking dependency Message-ID: <20180109134448.GE3668920@devbig577.frc2.facebook.com> References: <20171213160617.GQ3919388@devbig577.frc2.facebook.com> <9843d982-d201-8702-2e4e-0541a4d96b53@codeaurora.org> <20180102161656.GD3668920@devbig577.frc2.facebook.com> <20180102174408.GM7829@linux.vnet.ibm.com> <20180102180119.GA1355@linux.vnet.ibm.com> <20180108122823.GL3668920@devbig577.frc2.facebook.com> <20180108225238.GN9671@linux.vnet.ibm.com> <20180109003127.GA30224@linux.vnet.ibm.com> <20180109034211.GC3668920@devbig577.frc2.facebook.com> <20180109042016.GR9671@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180109042016.GR9671@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Hello, Paul. On Mon, Jan 08, 2018 at 08:20:16PM -0800, Paul E. McKenney wrote: > OK, so I can put WQ_MEM_RECLAIM on the early boot creation of RCU's > workqueue_struct as shown below, right? Yes, this looks good to me. Just one question. > +struct workqueue_struct *rcu_gp_workqueue; > + > void __init rcu_init(void) > { > int cpu; > @@ -4298,6 +4300,10 @@ void __init rcu_init(void) > rcu_cpu_starting(cpu); > rcutree_online_cpu(cpu); > } > + > + /* Create workqueue for expedited GPs and for Tree SRCU. */ > + rcu_gp_workqueue = alloc_workqueue("rcu_gp", WQ_MEM_RECLAIM, 0); > + WARN_ON(!rcu_gp_workqueue); The code was previously using both system_power_efficient_wq and system_workqueue (for the expedited path). I guess the options were either using two workqueues or dropping POWER_EFFICIENT. I have no idea how big an impact this will make or whether it'd even be noticeable but maybe it'd be worthwhile to mention that in the description? Thanks. -- tejun