From: Andrea Parri <parri.andrea@gmail.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Kenneth-Lee-2012@foxmail.com, linux-kernel@vger.kernel.org,
paulmck@kernel.org
Subject: Re: Question about PB rule of LKMM
Date: Thu, 7 Mar 2024 16:52:07 +0100 [thread overview]
Message-ID: <Zenip+8BDM3p+MUh@andrea> (raw)
In-Reply-To: <ZejC+lutRuwXQrMz@andrea>
On Wed, Mar 06, 2024 at 08:24:42PM +0100, Andrea Parri wrote:
> > Later on, the file includes this paragraph, which answers the question
> > you were asking:
> >
> > ---------------------------------------------------------------------
> > The existence of a pb link from E to F implies that E must execute
> > before F. To see why, suppose that F executed first. Then W would
> > have propagated to E's CPU before E executed. If E was a store, the
> > memory subsystem would then be forced to make E come after W in the
> > coherence order, contradicting the fact that E ->coe W. If E was a
> > load, the memory subsystem would then be forced to satisfy E's read
> > request with the value stored by W or an even later store,
> > contradicting the fact that E ->fre W.
> > ---------------------------------------------------------------------
>
> TBF, that just explains (not F ->xb E), or I guess that was the origin
> of the question.
So perhaps as in the diff below. (Alan, feel free to manipulate to better
align with the current contents and style of explanation.txt.)
Andrea
From c13fd76cd62638cbe197431a16aeea001f80f6ec Mon Sep 17 00:00:00 2001
From: Andrea Parri <parri.andrea@gmail.com>
Date: Thu, 7 Mar 2024 16:31:57 +0100
Subject: [PATCH] tools/memory-model: Amend the description of the pb relation
To convey why E ->pb F implies E ->xb F in the operational model of
explanation.txt.
Reported-by: Kenneth Lee <Kenneth-Lee-2012@foxmail.com>
Signed-off-by: Andrea Parri <parri.andrea@gmail.com>
---
tools/memory-model/Documentation/explanation.txt | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/tools/memory-model/Documentation/explanation.txt b/tools/memory-model/Documentation/explanation.txt
index 6dc8b3642458e..68af5effadbbb 100644
--- a/tools/memory-model/Documentation/explanation.txt
+++ b/tools/memory-model/Documentation/explanation.txt
@@ -1461,13 +1461,11 @@ The case where E is a load is exactly the same, except that the first
link in the sequence is fre instead of coe.
The existence of a pb link from E to F implies that E must execute
-before F. To see why, suppose that F executed first. Then W would
-have propagated to E's CPU before E executed. If E was a store, the
-memory subsystem would then be forced to make E come after W in the
-coherence order, contradicting the fact that E ->coe W. If E was a
-load, the memory subsystem would then be forced to satisfy E's read
-request with the value stored by W or an even later store,
-contradicting the fact that E ->fre W.
+before F. To see why, let W be a store coherence-later than E and
+propagating to every CPU and to RAM before F executes. Then E must
+execute before W propagates to E's CPU (since W is coherence-later
+than E). In turn, W propagates to E's CPU (and every CPU) before F
+executes.
A good example illustrating how pb works is the SB pattern with strong
fences:
--
2.34.1
next prev parent reply other threads:[~2024-03-07 15:52 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-01 3:18 Question about PB rule of LKMM Kenneth-Lee-2012
2024-03-05 18:00 ` Andrea Parri
2024-03-06 9:53 ` Kenneth-Lee-2012
2024-03-06 17:36 ` Andrea Parri
2024-03-06 18:29 ` Alan Stern
2024-03-06 19:24 ` Andrea Parri
2024-03-07 0:45 ` Kenneth-Lee-2012
2024-03-07 15:52 ` Andrea Parri [this message]
2024-03-07 17:25 ` Alan Stern
2024-03-07 18:18 ` Andrea Parri
2024-03-07 18:30 ` Alan Stern
2024-03-07 19:08 ` Andrea Parri
2024-03-07 19:46 ` Alan Stern
2024-03-07 21:06 ` Andrea Parri
2024-03-08 17:54 ` Alan Stern
2024-03-08 21:29 ` Andrea Parri
2024-03-08 3:10 ` Kenneth-Lee-2012
2024-03-08 21:38 ` Andrea Parri
2024-03-09 5:43 ` Kenneth-Lee-2012
2024-03-10 2:27 ` Andrea Parri
2024-03-10 2:52 ` Kenneth-Lee-2012
2024-03-11 3:41 ` Kenneth-Lee-2012
[not found] ` <20240311034104.7iffcia4k5rxvgog@kllt01>
2024-03-11 8:20 ` Kenneth-Lee-2012
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=Zenip+8BDM3p+MUh@andrea \
--to=parri.andrea@gmail.com \
--cc=Kenneth-Lee-2012@foxmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=stern@rowland.harvard.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox