[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+55aFzYca7EBTEbhJMoJcGspVGhmty243WQR_w7Eykmw9HX9w@mail.gmail.com>
Date: Tue, 29 May 2018 16:10:02 -0500
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Alan Stern <stern@...land.harvard.edu>
Cc: Paul McKenney <paulmck@...ux.vnet.ibm.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-arch <linux-arch@...r.kernel.org>,
andrea.parri@...rulasolutions.com,
Will Deacon <will.deacon@....com>,
Peter Zijlstra <peterz@...radead.org>,
Boqun Feng <boqun.feng@...il.com>,
Nick Piggin <npiggin@...il.com>,
David Howells <dhowells@...hat.com>,
Jade Alglave <j.alglave@....ac.uk>,
Luc Maranget <luc.maranget@...ia.fr>,
Akira Yokosawa <akiyks@...il.com>,
Ingo Molnar <mingo@...nel.org>,
Roman Pen <roman.penyaev@...fitbricks.com>
Subject: Re: LKMM litmus test for Roman Penyaev's rcu-rr
On Tue, May 29, 2018 at 3:49 PM Alan Stern <stern@...land.harvard.edu>
wrote:
> Putting this into herd would be extremely difficult, if not impossible,
> because it involves analyzing code that was not executed.
Does it?
Can't we simplify the whole sequence as basically
A
if (!B)
D
for that "not B" case, and just think about that. IOW, let's ignore the
whole "not executed" code.
If B depends on A like you state, then that already implies that the write
in D cannot come before the read of A.
You fundamentally cannot do a conditional write before the read that the
write condition depends on. So *any* write after a conditional is dependent
on the read.
So the existence of C - whether it has a barrier or not - is entirely
immaterial at run-time.
Now, the *compiler* can use the whole existence of that memory barrier in C
to determine whether it can re-order the write to D or not, of course, but
that's a separate issue, and then the whole "code that isn't executed" is
not the issue any more. The compiler obviously sees all code, whether
executing or not.
Or am I being stupid and missing something entirely? That's possible.
Linus
Powered by blists - more mailing lists