Re: [PATCH] cgroup/cpuset: fix circular locking dependency

From: Tejun Heo
Date: Tue Jan 09 2018 - 08:44:59 EST


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