Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751386AbdH2SrQ (ORCPT ); Tue, 29 Aug 2017 14:47:16 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:35697 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751215AbdH2SrO (ORCPT ); Tue, 29 Aug 2017 14:47:14 -0400 Date: Tue, 29 Aug 2017 20:47:10 +0200 From: Peter Zijlstra To: Byungchul Park Cc: Byungchul Park , Ingo Molnar , Tejun Heo , Boqun Feng , 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: <20170829184710.GX32112@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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: 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: 1485 Lines: 34 On Wed, Aug 30, 2017 at 01:02:39AM +0900, Byungchul Park wrote: > On Tue, Aug 29, 2017 at 5:59 PM, Peter Zijlstra wrote: > > On Fri, Aug 25, 2017 at 10:11:14AM +0900, Byungchul Park wrote: > >> I meant, this seems to be led from your mis-understanding of > >> crossrelease_hist_{start, end}(). > > > > I have, several times now, explained why PROC is special. > > I rather have explained why it's not, more times than you did, and you > have not read my explanation. Anyway, I am seriously curious about > why. Of course, I remember you said "PROC is special", but not _why_. > I really want to know _why_ PROC(=each work) should be handled > differently from others. It is a question of need. We don't need more. At points where we hold no locks and know we don't depend on prior state, we can simply throw away history to get what we want, independent execution. We don't loose anything by it and its simpler. It is not much different from that work_id thing you had previously. And its fairly fundamental, every site where we know prior state is irrelevant, we must not hold any locks, because at that point you explicitly throw away dependencies (like we do for the wq thing now). > Please show me an example except wq case > where you just tried to avoid problems than fix them. wq isn't broken, the annotations there are fine. The interaction between the existing annotations and crossrelease are unfortunate but that doesn't mean they're no good.