Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751521AbdH3Ixr (ORCPT ); Wed, 30 Aug 2017 04:53:47 -0400 Received: from merlin.infradead.org ([205.233.59.134]:50694 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751298AbdH3Ixq (ORCPT ); Wed, 30 Aug 2017 04:53:46 -0400 Date: Wed, 30 Aug 2017 10:53:33 +0200 From: Peter Zijlstra To: Byungchul Park Cc: mingo@kernel.org, tj@kernel.org, boqun.feng@gmail.com, david@fromorbit.com, johannes@sipsolutions.net, oleg@redhat.com, linux-kernel@vger.kernel.org, kernel-team@lge.com Subject: Re: [PATCH 4/4] lockdep: Fix workqueue crossrelease annotation Message-ID: <20170830085333.GM32112@worktop.programming.kicks-ass.net> References: <20170823115843.662056844@infradead.org> <20170823121432.990701317@infradead.org> <20170824021840.GC6772@X58A-UD3R> <20170824140240.t4imrpvussebfimm@hirez.programming.kicks-ass.net> <20170825011114.GA3858@X58A-UD3R> <20170829085939.ggmb6xiohw67micb@hirez.programming.kicks-ass.net> <20170830020953.GE3240@X58A-UD3R> <20170830074117.GG3240@X58A-UD3R> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170830074117.GG3240@X58A-UD3R> 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: 1829 Lines: 38 On Wed, Aug 30, 2017 at 04:41:17PM +0900, Byungchul Park wrote: > On Wed, Aug 30, 2017 at 11:09:53AM +0900, Byungchul Park wrote: > > > Signed-off-by: Peter Zijlstra (Intel) > > > --- > > > diff --git a/kernel/workqueue.c b/kernel/workqueue.c > > > index c0331891dec1..ab3c0dc8c7ed 100644 > > > --- a/kernel/workqueue.c > > > +++ b/kernel/workqueue.c > > > @@ -2107,14 +2107,14 @@ __acquires(&pool->lock) > > > * Which would create W1->C->W1 dependencies, even though there is no > > > * actual deadlock possible. There are two solutions, using a > > > * read-recursive acquire on the work(queue) 'locks', but this will then > > > - * hit the lockdep limitation on recursive locks, or simly discard > > > + * hit the lockdep limitation on recursive locks, or simply discard > > > * these locks. > > > * > > > * AFAICT there is no possible deadlock scenario between the > > > * flush_work() and complete() primitives (except for single-threaded > > > * workqueues), so hiding them isn't a problem. > > > */ > > > - crossrelease_hist_start(XHLOCK_PROC, true); > > > + lockdep_invariant_state(true); > > > > This is what I am always curious about. It would be ok if you agree with > > removing this work-around after fixing acquire things in wq. But, you > > keep to say this is essencial. > > > > You should focus on what dependencies actually are, than saparating > > contexts unnecessarily. Of course, we have to do it for each work, _BUT_ > > not between outside of work and each work since there might be > > dependencies between them certainly. > > You have never answered it. I'm curious about your answer. If you can't, > I think you have to revert all your patches. All yours are wrong. Because I don't understand what you're on about. And my patches actually work.