From: Jonas Oberhauser <jonas.oberhauser@huaweicloud.com>
To: Alan Stern <stern@rowland.harvard.edu>,
Boqun Feng <boqun.feng@gmail.com>
Cc: "Paul E. McKenney" <paulmck@kernel.org>,
Jonas Oberhauser <jonas.oberhauser@huawei.com>,
parri.andrea@gmail.com, will@kernel.org, peterz@infradead.org,
npiggin@gmail.com, dhowells@redhat.com, j.alglave@ucl.ac.uk,
luc.maranget@inria.fr, akiyks@gmail.com, dlustig@nvidia.com,
joel@joelfernandes.org, urezki@gmail.com,
quic_neeraju@quicinc.com, frederic@kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] tools/memory-model: Make ppo a subrelation of po
Date: Sun, 26 Feb 2023 12:17:31 +0100 [thread overview]
Message-ID: <a862ee59-ca12-b609-48cc-0784c7ce24af@huaweicloud.com> (raw)
In-Reply-To: <Y/rSQ2FNTJyj2bqR@rowland.harvard.edu>
On 2/26/2023 4:30 AM, Alan Stern wrote:
> On Sat, Feb 25, 2023 at 07:09:05PM -0800, Boqun Feng wrote:
>> On Sat, Feb 25, 2023 at 09:29:51PM -0500, Alan Stern wrote:
>>> On Sat, Feb 25, 2023 at 05:01:10PM -0800, Paul E. McKenney wrote:
>>>> A few other oddities:
>>>>
>>>> litmus/auto/C-LB-Lww+R-OC.litmus
>>>>
>>>> Both versions flag a data race, which I am not seeing. It appears
>>>> to me that P1's store to u0 cannot happen unless P0's store
>>>> has completed. So what am I missing here?
>>> The LKMM doesn't believe that a control or data dependency orders a
>>> plain write after a marked read. Hence in this test it thinks that P1's
>>> store to u0 can happen before the load of x1. I don't remember why we
>>> did it this way -- probably we just wanted to minimize the restrictions
>>> on when plain accesses can execute. (I do remember the reason for
>>> making address dependencies induce order; it was so RCU would work.)
>>>
>> Because plain store can be optimzed as an "store only if not equal"?
>> As the following sentenses in the explanations.txt:
>>
>> The need to distinguish between r- and w-bounding raises yet another
>> issue. When the source code contains a plain store, the compiler is
>> allowed to put plain loads of the same location into the object code.
>> For example, given the source code:
>>
>> x = 1;
>>
>> the compiler is theoretically allowed to generate object code that
>> looks like:
>>
>> if (x != 1)
>> x = 1;
>>
>> thereby adding a load (and possibly replacing the store entirely).
>> For this reason, whenever the LKMM requires a plain store to be
>> w-pre-bounded or w-post-bounded by a marked access, it also requires
>> the store to be r-pre-bounded or r-post-bounded, so as to handle cases
>> where the compiler adds a load.
> Good guess; maybe that was the reason. [...]
> So perhaps the original reason is not valid now
> that the memory model explicitly includes tests for stores being
> r-pre/post-bounded.
>
> Alan
I agree, I think you could relax that condition.
Note there's also rw-xbstar (used with fr) which doesn't check for
r-pre-bounded, but it should be ok. That's because only reads would be
unordered, as a result the read (in the if (x != ..) x=..) should provide
the correct value. The store would be issued as necessary, and the issued
store would still be ordered correctly w.r.t the read.
Best wishes,
jonas
next prev parent reply other threads:[~2023-02-26 11:18 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-24 13:52 Jonas Oberhauser
2023-02-24 15:32 ` Alan Stern
2023-02-24 18:37 ` Paul E. McKenney
2023-02-26 1:01 ` Paul E. McKenney
2023-02-26 2:29 ` Alan Stern
2023-02-26 3:03 ` Paul E. McKenney
2023-02-26 18:49 ` Paul E. McKenney
2023-02-26 3:09 ` Boqun Feng
2023-02-26 3:30 ` Alan Stern
2023-02-26 11:17 ` Jonas Oberhauser [this message]
2023-02-26 16:51 ` Alan Stern
2023-02-26 18:45 ` Paul E. McKenney
2023-02-26 19:32 ` Alan Stern
2023-02-27 14:03 ` Jonas Oberhauser
2023-02-27 16:16 ` Alan Stern
2023-02-27 16:50 ` Jonas Oberhauser
2023-02-27 18:41 ` Alan Stern
2023-02-27 19:40 ` Andrea Parri
2023-02-27 20:13 ` Jonas Oberhauser
2023-02-27 22:21 ` Paul E. McKenney
2023-02-28 8:49 ` Jonas Oberhauser
2023-02-28 15:40 ` Paul E. McKenney
2023-03-01 10:52 ` Jonas Oberhauser
2023-03-02 1:42 ` Paul E. McKenney
2023-02-26 2:58 ` Paul E. McKenney
2023-02-26 16:23 ` Joel Fernandes
2023-02-27 14:39 ` Jonas Oberhauser
2023-02-27 17:57 ` Joel Fernandes
2023-02-27 20:24 ` Jonas Oberhauser
2023-02-27 19:35 ` Andrea Parri
2023-02-28 22:01 ` Paul E. McKenney
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=a862ee59-ca12-b609-48cc-0784c7ce24af@huaweicloud.com \
--to=jonas.oberhauser@huaweicloud.com \
--cc=akiyks@gmail.com \
--cc=boqun.feng@gmail.com \
--cc=dhowells@redhat.com \
--cc=dlustig@nvidia.com \
--cc=frederic@kernel.org \
--cc=j.alglave@ucl.ac.uk \
--cc=joel@joelfernandes.org \
--cc=jonas.oberhauser@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luc.maranget@inria.fr \
--cc=npiggin@gmail.com \
--cc=parri.andrea@gmail.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=quic_neeraju@quicinc.com \
--cc=stern@rowland.harvard.edu \
--cc=urezki@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®