Re: Internal vs. external barriers (was: Re: Interesting LKMM litmus test)

From: Paul E. McKenney
Date: Fri Jan 20 2023 - 16:20:44 EST


On Fri, Jan 20, 2023 at 03:36:24PM -0500, Alan Stern wrote:
> On Fri, Jan 20, 2023 at 11:20:32AM -0800, Paul E. McKenney wrote:
> > On Fri, Jan 20, 2023 at 01:37:51PM -0500, Alan Stern wrote:
> > > srcu_read_unlock() does not need a full smp_mb().
> >
> > That is quite possible, and that is what we are looking into. And testing
> > thus far agrees with you. But the grace-period ordering constraints
> > are quite severe, so this requires careful checking and severe testing.
>
> If you're interested, I can provide a simple argument to show that the
> Fundamental Law of RCU would continue to hold with only a release fence.
> There is an added requirement: merely that synchronize_srcu() must have
> an smp_mb() somewhere after its final read of the unlock counters --
> which your version of the algorithm already has.

Please!

For your amusement, here is a very informal argument that this is
the case:

https://docs.google.com/document/d/1xvwQzavmH474MBPAIBqVyvCrCcS5j2BpqhErPhRj7Is/edit?usp=sharing

See the "Read-Side Optimizations" section at the end.

Thanx, Paul