Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1329871pxj; Fri, 4 Jun 2021 11:28:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwke33hs7e5XdUFWsDsJsxZemDmTXqdQPTvFCq3e5FGQVepWNF3/PsQ9pfm+Ti6Qb8vzv3N X-Received: by 2002:a17:906:e10d:: with SMTP id gj13mr5471405ejb.150.1622831314997; Fri, 04 Jun 2021 11:28:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622831314; cv=none; d=google.com; s=arc-20160816; b=DrOAFOgKPp/GYIiZ34+2g5bFg+GK4QSH3wYQpTAKEVTczQOq2b70KiNNoHaIvYhs55 1uS32h4s+fqIurM6LMAWWcTgNufrBB/YxJecxiyHFA6YIrT8E/RlKoScoztySiADUl7D AHyncmCjJbLdYDRuzw/CAcYmJXmuLUkJHceJWUpR224qXS4ZtfmGBZ4Oe7jHScG8ncro G0H6nE1/lO7fZVx2sqV2kv2UCQiutUdAdl5hOAr3UI/rhowIhgHvgDXr0DUZX0a3R0/i KhXnO4Io6iqmYEYeQ/+oba69uLe1ta1v6LNjb44jT+c5T/C5t5AD/l5XEurqKvQ7Kqrf LMTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=KLF5ML+EMyWwacah8w0YV1NWi2AgP1e4etRq43vaZn8=; b=DbkV443VAcebFYOUG8aIeCHvDuOMAPg2AEXQ6OG+HOUKJgfs1LLMWUM9jmMoA+CfOq K799LHF7D22jf7bKPD6fD2QeajfxMwkkraRGCMKGZk5BdyVyNS/FqoMsue2rmCB5ymi/ YL9BaaoJrOp40UCX9zk4zs69QT7Dvuo1zfdNpzoeRl+z3w3cpcyn2eQqhHN0YD8UeKHO Jk0I4wAtnc8XXs+DRt0DE3pprJkoK3Tv2qxp+Soip4uwBO4jO5W/U5ce6RLLozj4OHLm zMgmlzpzpus1JWvvs3KDEkwbYbol5lPbraVjPgG/yar71+N6tL2oOXjWHpgFnvL1cgyH woUQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p7si5139464ejn.515.2021.06.04.11.28.10; Fri, 04 Jun 2021 11:28:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229769AbhFDS24 (ORCPT + 99 others); Fri, 4 Jun 2021 14:28:56 -0400 Received: from netrider.rowland.org ([192.131.102.5]:56803 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S229854AbhFDS2z (ORCPT ); Fri, 4 Jun 2021 14:28:55 -0400 Received: (qmail 1689146 invoked by uid 1000); 4 Jun 2021 14:27:08 -0400 Date: Fri, 4 Jun 2021 14:27:08 -0400 From: Alan Stern To: Peter Zijlstra Cc: Will Deacon , Linus Torvalds , paulmck@kernel.org, parri.andrea@gmail.com, boqun.feng@gmail.com, npiggin@gmail.com, dhowells@redhat.com, j.alglave@ucl.ac.uk, luc.maranget@inria.fr, akiyks@gmail.com, linux-kernel@vger.kernel.org, linux-toolchains@vger.kernel.org, linux-arch@vger.kernel.org Subject: Re: [RFC] LKMM: Add volatile_if() Message-ID: <20210604182708.GB1688170@rowland.harvard.edu> References: <20210604104359.GE2318@willie-the-truck> <20210604134422.GA2793@willie-the-truck> <20210604151356.GC2793@willie-the-truck> <20210604155154.GG1676809@rowland.harvard.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 04, 2021 at 06:17:20PM +0200, Peter Zijlstra wrote: > On Fri, Jun 04, 2021 at 11:51:54AM -0400, Alan Stern wrote: > > On Fri, Jun 04, 2021 at 05:42:28PM +0200, Peter Zijlstra wrote: > > > > #define volatile_if(cond) if (({ bool __t = (cond); BUILD_BUG_ON(__builtin_constant_p(__t)); volatile_cond(__t); })) > > > > That won't help with more complicated examples, such as: > > > > volatile_if (READ_ONCE(*x) * 0 + READ_ONCE(*y)) > > That's effectively: > > volatile_if (READ_ONCE(*y)) > WRITE_ONCE(*y, 42); Sorry, what I meant to write was: volatile_if (READ_ONCE(*x) * 0 + READ_ONCE(*y)) WRITE_ONCE(*z, 42); where there is no ordering between *x and *z. It's not daft, and yes, a macro won't be able to warn about it. Alan > which is a valid, but daft, LOAD->STORE order, no? A compiler might > maybe be able to WARN on that, but that's definitely beyond what we can > do with macros.