All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] tools/memory-model: Weaken ctrl dependency definition in explanation.txt
@ 2022-09-03 16:57 Paul Heidekrüger
  2022-09-03 20:19 ` Paul E. McKenney
  0 siblings, 1 reply; 2+ messages in thread
From: Paul Heidekrüger @ 2022-09-03 16:57 UTC (permalink / raw)
  To: Alan Stern, Andrea Parri, Will Deacon, Peter Zijlstra,
	Boqun Feng, Nicholas Piggin, David Howells, Jade Alglave,
	Luc Maranget, Paul E. McKenney, Akira Yokosawa, Daniel Lustig,
	Joel Fernandes, Paul Heidekrüger, Michael Ellerman,
	linux-kernel, linux-arch
  Cc: Marco Elver, Charalampos Mainas, Pramod Bhatotia,
	Soham Chakraborty, Martin Fink

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>
---

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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v4] tools/memory-model: Weaken ctrl dependency definition in explanation.txt
  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
  0 siblings, 0 replies; 2+ messages in thread
From: Paul E. McKenney @ 2022-09-03 20:19 UTC (permalink / raw)
  To: Paul Heidekrüger
  Cc: Alan Stern, Andrea Parri, Will Deacon, Peter Zijlstra,
	Boqun Feng, Nicholas Piggin, David Howells, Jade Alglave,
	Luc Maranget, Akira Yokosawa, Daniel Lustig, Joel Fernandes,
	Michael Ellerman, linux-kernel, linux-arch, Marco Elver,
	Charalampos Mainas, Pramod Bhatotia, Soham Chakraborty,
	Martin Fink

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
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-03 20:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 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.