All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: "Paul Heidekrüger" <paul.heidekrueger@in.tum.de>
Cc: Alan Stern <stern@rowland.harvard.edu>,
	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>,
	Akira Yokosawa <akiyks@gmail.com>,
	Daniel Lustig <dlustig@nvidia.com>,
	Joel Fernandes <joel@joelfernandes.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	linux-kernel@vger.kernel.org, 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 v4] tools/memory-model: Weaken ctrl dependency definition in explanation.txt
Date: Sat, 3 Sep 2022 13:19:07 -0700	[thread overview]
Message-ID: <20220903201907.GA6159@paulmck-ThinkPad-P17-Gen-1> (raw)
In-Reply-To: <20220903165718.4186763-1-paul.heidekrueger@in.tum.de>

On Sat, Sep 03, 2022 at 04:57:17PM +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>
> Co-developed-by: Alan Stern <stern@rowland.harvard.edu>
> Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
> Signed-off-by: Paul Heidekrüger <paul.heidekrueger@in.tum.de>

I have pulled this one in, thank you both!

It can still be updated if need be.  ;-)

							Thanx, Paul

> ---
> 
> v4:
> - Replace "a memory access event" with "a write event"
> 
> 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 | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/memory-model/Documentation/explanation.txt b/tools/memory-model/Documentation/explanation.txt
> index ee819a402b69..11a1d2d4f681 100644
> --- a/tools/memory-model/Documentation/explanation.txt
> +++ b/tools/memory-model/Documentation/explanation.txt
> @@ -464,9 +464,10 @@ 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 a write 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;
> 
> --
> 2.35.1
> 

      reply	other threads:[~2022-09-03 20:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-03 16:57 [PATCH v4] tools/memory-model: Weaken ctrl dependency definition in explanation.txt Paul Heidekrüger
2022-09-03 20:19 ` Paul E. McKenney [this message]

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=20220903201907.GA6159@paulmck-ThinkPad-P17-Gen-1 \
    --to=paulmck@kernel.org \
    --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=paul.heidekrueger@in.tum.de \
    --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.