All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul Heidekrüger" <Paul.Heidekrueger@in.tum.de>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Andrea Parri <parri.andrea@gmail.com>,
	Will Deacon <will@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Boqun Feng <boqun.feng@gmail.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	David Howells <dhowells@redhat.com>,
	Jade Alglave <j.alglave@ucl.ac.uk>,
	Luc Maranget <luc.maranget@inria.fr>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	Akira Yokosawa <akiyks@gmail.com>,
	Daniel Lustig <dlustig@nvidia.com>,
	Joel Fernandes <joel@joelfernandes.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-arch <linux-arch@vger.kernel.org>,
	Marco Elver <elver@google.com>,
	Charalampos Mainas <charalampos.mainas@gmail.com>,
	Pramod Bhatotia <pramod.bhatotia@in.tum.de>,
	Soham Chakraborty <s.s.chakraborty@tudelft.nl>,
	Martin Fink <martin.fink@in.tum.de>
Subject: Re: [PATCH v3] tools/memory-model: Weaken ctrl dependency definition in explanation.txt
Date: Sat, 3 Sep 2022 13:41:34 +0200	[thread overview]
Message-ID: <D7E3D42D-2ABE-4D16-9DCA-0605F0C84F7D@in.tum.de> (raw)
In-Reply-To: <YxKtmk2q8Uzb+Qk9@rowland.harvard.edu>

On 3. Sep 2022, at 03:27, Alan Stern <stern@rowland.harvard.edu> wrote:

> On Fri, Sep 02, 2022 at 09:13:40PM +0000, Paul Heidekrüger wrote:
>> The current informal control dependency definition in explanation.txt is
>> too broad and, as discussed, needs to be updated.
>> 
>> Consider the following example:
>> 
>>> if(READ_ONCE(x))
>>>  return 42;
>>> 
>>> WRITE_ONCE(y, 42);
>>> 
>>> return 21;
>> 
>> The read event determines whether the write event will be executed "at all"
>> - as per the current definition - but the formal LKMM does not recognize
>> this as a control dependency.
>> 
>> Introduce a new definition which includes the requirement for the second
>> memory access event to syntactically lie within the arm of a non-loop
>> conditional.
>> 
>> Link: https://lore.kernel.org/all/20220615114330.2573952-1-paul.heidekrueger@in.tum.de/
>> Cc: Marco Elver <elver@google.com>
>> Cc: Charalampos Mainas <charalampos.mainas@gmail.com>
>> Cc: Pramod Bhatotia <pramod.bhatotia@in.tum.de>
>> Cc: Soham Chakraborty <s.s.chakraborty@tudelft.nl>
>> Cc: Martin Fink <martin.fink@in.tum.de>
>> Signed-off-by: Paul Heidekrüger <paul.heidekrueger@in.tum.de>
>> Co-developed-by: Alan Stern <stern@rowland.harvard.edu>
> 
> Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
> 
>> ---
>> 
>> v3:
>> - Address Alan and Joel's feedback re: the wording around switch statements
>> and the use of "guarding"
>> 
>> v2:
>> - Fix typos
>> - Fix indentation of code snippet
>> 
>> v1:
>> @Alan, since I got it wrong the last time, I'm adding you as a co-developer
>> after my SOB. I'm sorry if this creates extra work on your side due to you
>> having to resubmit the patch now with your SOB if I understand correctly,
>> but since it's based on your wording from the other thread, I definitely
>> wanted to give you credit.
>> 
>> tools/memory-model/Documentation/explanation.txt | 8 +++++---
>> 1 file changed, 5 insertions(+), 3 deletions(-)
>> 
>> diff --git a/tools/memory-model/Documentation/explanation.txt b/tools/memory-model/Documentation/explanation.txt
>> index ee819a402b69..0b7e1925a673 100644
>> --- a/tools/memory-model/Documentation/explanation.txt
>> +++ b/tools/memory-model/Documentation/explanation.txt
>> @@ -464,9 +464,11 @@ to address dependencies, since the address of a location accessed
>> through a pointer will depend on the value read earlier from that
>> pointer.
>> 
>> -Finally, a read event and another memory access event are linked by a
>> -control dependency if the value obtained by the read affects whether
>> -the second event is executed at all.  Simple example:
>> +Finally, a read event X and another memory access event Y are linked by
>> +a control dependency if Y syntactically lies within an arm of an if
>> +statement and X affects the evaluation of the if condition via a data or
>> +address dependency (or similarly for a switch statement).  Simple
>> +example:
>> 
>> 	int x, y;

Hang on, shouldn't this read "a write event" instead of "another memory
access event"? Control dependencies only provide ordering from READ_ONCE to
WRITE_ONCE, not from READ_ONCE to (READ | WRITE)_ONCE?

Or am I missing something?

Many thanks,
Paul

  reply	other threads:[~2022-09-03 11:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-02 21:13 [PATCH v3] tools/memory-model: Weaken ctrl dependency definition in explanation.txt Paul Heidekrüger
2022-09-03  1:27 ` Alan Stern
2022-09-03 11:41   ` Paul Heidekrüger [this message]
2022-09-03 15:54     ` Alan Stern

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D7E3D42D-2ABE-4D16-9DCA-0605F0C84F7D@in.tum.de \
    --to=paul.heidekrueger@in.tum.de \
    --cc=akiyks@gmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=charalampos.mainas@gmail.com \
    --cc=dhowells@redhat.com \
    --cc=dlustig@nvidia.com \
    --cc=elver@google.com \
    --cc=j.alglave@ucl.ac.uk \
    --cc=joel@joelfernandes.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luc.maranget@inria.fr \
    --cc=martin.fink@in.tum.de \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=parri.andrea@gmail.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=pramod.bhatotia@in.tum.de \
    --cc=s.s.chakraborty@tudelft.nl \
    --cc=stern@rowland.harvard.edu \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.