All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] tools/memory-model: Weaken ctrl dependency definition in explanation.txt
@ 2022-09-02 21:13 Paul Heidekrüger
  2022-09-03  1:27 ` Alan Stern
  0 siblings, 1 reply; 4+ messages in thread
From: Paul Heidekrüger @ 2022-09-02 21:13 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>
Signed-off-by: Paul Heidekrüger <paul.heidekrueger@in.tum.de>
Co-developed-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;

--
2.35.1


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

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

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2022-09-03 15:54     ` Alan Stern

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.