Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1771301imu; Thu, 10 Jan 2019 02:46:35 -0800 (PST) X-Google-Smtp-Source: ALg8bN4c9tbWm9tN2GkNENViS/q5Bjn4GbZbMhDXm3jNEqkMSGth81LM3mTA4wci5QSiPcEpUMIv X-Received: by 2002:a63:6bc1:: with SMTP id g184mr9093912pgc.25.1547117195107; Thu, 10 Jan 2019 02:46:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547117195; cv=none; d=google.com; s=arc-20160816; b=QfKwJUXtGDwivYHxwj7wJFAfRIsZSp7WKD0QcFYnVKPY9V04b4mYh0C+LROH4D8bCH dDL8I7D3dyXkcwt/Hkf/ZZXDKirOVil2CFBFOLyadREmQt9cjpUdn6WMSp8R7M4HVW2U m3+Z4J5/Cp777zVn/GB1tlhLyPCDewb/bPtHF5VbE9w+nEWiJl16rT1drrIvoorp9qKI BnpKPsygUAn19o2y9ETKXpFWSQgKx2/3fV0DCQujdbzeRkuSnV2hQy8RzOaw9Scowj/R yeHFYr+IEiakDxwHfYLYdRx9RwD+3ifq7vEAh4JqTlUo0/DC5xQRMktpOo6uJV7kP8cN aQdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=nXxMNgnNjv1FNbbfO1QjzeRs3wBxDBS9EbQ9kYXKStw=; b=rqyauHlPUxCp/pqazU04P7lHYSZK6BYBvLfvr5bnJoJeg7X8nHLp123vtfS/WOjF+T 6VkzKW6HyA3CupihVkRWqDhcv3Qdfkb4Py2c+8MefXuyoxmXEswag+bBFy9bVxMqxBYN ZDWkGTyNGnV/d52qe/ocxowFBXA+S2ekwfN3ABPmzSKLyWHcZMd/CSWERRWYcEfxV2zt wdH0DPrBtO18P7oo/9vM6Ny9ANug7lJGRb+yIXmGM7QjXk31omP7MduIgTn9IOMKALIm pTXcKvr9/bllZ4s1SzdXU4Ehn6I1CSHBPoIyKQ1UehxJkcPEz9JZC/svuB6w+vQ77THf Ejmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=qInd4RAq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t77si17432224pgb.51.2019.01.10.02.46.19; Thu, 10 Jan 2019 02:46:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=qInd4RAq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727617AbfAJItd (ORCPT + 99 others); Thu, 10 Jan 2019 03:49:33 -0500 Received: from mail-it1-f193.google.com ([209.85.166.193]:35297 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727443AbfAJItd (ORCPT ); Thu, 10 Jan 2019 03:49:33 -0500 Received: by mail-it1-f193.google.com with SMTP id p197so15148303itp.0 for ; Thu, 10 Jan 2019 00:49:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nXxMNgnNjv1FNbbfO1QjzeRs3wBxDBS9EbQ9kYXKStw=; b=qInd4RAq72NcVcx3YwHVvGixfiZgOmngzI69SwijvLIjpVZZqOVtNOjcgFCfl0YP1w YDm11Ie7slCqJ0tITog3++EkHtkciZgqFsOVFFhz5tQsqfS04dvswj0ZsJ3LSXurfGMZ tdk3mOEtrbAMYOmGY/Ozx1DLgAmpG0+6N8cf0z3DB6JVPzxKnhjt/mI1Xmm69AD8o6mI d7yrk1W7s5jvi8hiGwYO2NsAe9aalpsmiyNVd/RofPUTnBbnWSJJDW/ycimoQY8IyquC fNqKra9HRkuim8efan8f+AnqLhlQPnbeqCN3EDIVln3+aAjYbHSJK2V4gUJyLUqo6St7 gJXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nXxMNgnNjv1FNbbfO1QjzeRs3wBxDBS9EbQ9kYXKStw=; b=eNFS26oJ1xjex9VB5S/xilSbXWADGpAPs5xAb4vlLaK6bUwudekq22ya0+/+zovHuX ze76Ej4ylhKFBXz+nnSVOzFptSIn6xZPChszs68mcG7i2gKCJP+cSSJCrVUpSeuMzFPG MACwJTqHcwJiKOydZRMfQhLir1NtPWNIt7fY3ck9fmoX+3u9NjQGgnov1tjL9bedUYcZ 1izQTMgo8BTE3FzSe7Wor9QXS5MZkKEeajgdzrBKQTUXr26RjBv9DVceWS7lKyee58+y 7PnBM1lYHdMOa778K7w1j4IGKzCgpNuR8n6Nsoy8YsOoP2vbVRIE1YO5El0x+jeRB8mS OuIA== X-Gm-Message-State: AJcUukfd8P+0A3JAIb3se4w+9y28Cbsbu0Nrf0n0ANgZdRUpwEtY93DT K49SLppoITZ1Ea++X4WencC76FPIyND38FB6eqtrKw== X-Received: by 2002:a05:660c:f94:: with SMTP id x20mr5686968itl.144.1547110171410; Thu, 10 Jan 2019 00:49:31 -0800 (PST) MIME-Version: 1.0 References: <20190109000214.GA5907@andrea> <20190109112432.GA6351@andrea> <20190109121126.GA7141@andrea> <20190109171053.GY1215@linux.ibm.com> In-Reply-To: <20190109171053.GY1215@linux.ibm.com> From: Dmitry Vyukov Date: Thu, 10 Jan 2019 09:49:20 +0100 Message-ID: Subject: Re: seqcount usage in xt_replace_table() To: "Paul E. McKenney" Cc: Andrea Parri , Anatol Pomozov , Florian Westphal , LKML , Andrey Konovalov , Alan Stern , Luc Maranget , Will Deacon , Peter Zijlstra Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 9, 2019 at 6:11 PM Paul E. McKenney wrote: > > On Wed, Jan 09, 2019 at 01:29:02PM +0100, Dmitry Vyukov wrote: > > On Wed, Jan 9, 2019 at 1:11 PM Andrea Parri > > wrote: > > > > > > On Wed, Jan 09, 2019 at 12:55:27PM +0100, Dmitry Vyukov wrote: > > > > On Wed, Jan 9, 2019 at 12:24 PM Andrea Parri > > > > wrote: > > > > > > > > > > On Tue, Jan 08, 2019 at 04:36:46PM -0800, Anatol Pomozov wrote: > > > > > > Hello > > > > > > > > > > > > On Tue, Jan 8, 2019 at 4:02 PM Andrea Parri > > > > > > wrote: > > > > > > > > > > > > > > Hi Anatol, > > > > > > > > > > > > > > On Tue, Jan 08, 2019 at 11:33:39AM -0800, Anatol Pomozov wrote: > > > > > > > > Hello folks, > > > > > > > > > > > > > > > > A bit of context what I am doing. I am trying to port KTSAN (Kernel > > > > > > > > Thread Sanitizer) tool to v4.20. That tool tracks shared data usage > > > > > > > > and makes sure it is accessed in a thread-safe manner. > > > > > > > > > > > > > > Interesting! FYI, some LKMM's maintainers (Paul included) had and > > > > > > > continued to have some "fun" discussing topics related to "thread- > > > > > > > safe memory accesses": I'm sure that they'll be very interested in > > > > > > > such work of yours and eager to discuss your results. > > > > > > > > > > > > Thread Sanitizer is a great tool to find thread-safety issues with > > > > > > user-space code. The tool been developed by a team of smart people > > > > > > from Google [1]. > > > > > > > > > > > > KTSAN is an attempt to bring the same ideas to Linux kernel [2]. A > > > > > > bunch of work been done there but the project is still at > > > > > > proof-of-concept point. > > > > > > > > > > Yes, I have been aware of these tools since at least ;-) > > > > > > > > > > https://groups.google.com/forum/#!msg/ktsan/bVZ1c6H2NE0/Dxrw55bfBAAJ > > > > > > > > > > > > > > > > > > > > > > I am not a part of Google's dynamic tools team. But I've decided to > > > > > > pick something to do during the New Year holidays so started porting > > > > > > KTSAN from v4.2 to v4.20. The work is "almost completed" but I need to > > > > > > fix a few crashes [3]. > > > > > > > > > > I guess my first reaction would remain > > > > > > > > > > "it's kind of hard (to use an euphemism) to review 7,582 additions > > > > > or so for a data race detector without a clear/an accepted (by the > > > > > community) notion of data race..." > > > > > > > > Tsan's notion of a data race is basically the C/C++'s notion: > > > > concurrent/unsynchronized non-atomic access in different threads at > > > > least one of which is a write. > > > > > > Yeah, I think that this notion needs to be detailed, discussed, > > > documented, and discussed again. ;-) > > > > > > > > > > Tremendous (for such a project) benefits of automatic data race > > > > detection is a good motivation to finally agree on and accept a > > > > practically useful notion of a data race. > > > > > > Agreed. > > > > While having a 100% formal definition of a data race upfront would be > > useful, I don't think this is a hard requirement for deployment of > > KTSAN. What I think is required is: > > 1. Agree that the overall direction is right. > > 2. Agree that we want to enable data race detection and resolve > > problems as they appear in a practical manner (rather than block whole > > effort on every small thing). > > We deployed TSAN in user-space in much larger code bases than kernel, > > and while we had the C/C++ formal definition of a data race, practical > > and legacy matters were similar to that of the kernel (lots of legacy > > code, different opinions, etc). Doing both things in tandem (defining > > a memory model and deploying a data race detector) can actually have > > benefits as a race detector may point to under-defined or > > impractically defined areas, and will otherwise help to validate that > > the model works and is useful. > > KTSAN is not fixed as well. We adopted it as we gathered more > > knowledge and understanding of the kernel. So it's not that we have to > > commit to something upfront. > > In any case, there might well be some differences in approach between > KTSAN and LKMM due to input size differences: One would expect LKMM > to be able to tolerate a more computationally intensive definition as > a consequence of KTSAN's ability to process much larger code bases. > > But I nevertheless believe that it would be good to have these differences > be a matter of conscious choice rather than a matter of chance. ;-) > > My guess is that LKMM picks its starting point (which might take some > additional time), then KTSAN critiques it, and then we work out what > differences should result in a change to one or the other (or both) > and which differences are inherent in the different workloads that LKMM > and KTSAN are presented with. > > Seem reasonable? Sounds reasonable. For seqcounts we currently simply ignore all accesses within the read section (thus the requirement to dynamically track read sections). What does LKMM say about seqlocks?