Re: [PATCH RFC tools/lkmm 10/12] tools/memory-model: Add a S lock-based external-view litmus test

From: Paul E. McKenney
Date: Wed Feb 21 2018 - 17:25:21 EST


On Wed, Feb 21, 2018 at 02:27:04PM -0500, Alan Stern wrote:
> On Wed, 21 Feb 2018, Paul E. McKenney wrote:
>
> > > > +ISA2+pooncelock+pooncelock+pombonce.litmus
> > > > + Tests whether the ordering provided by a lock-protected S litmus
> > >
> > > Call it an ISA2 litmus test, not an S litmus test!
> >
> > Given the structure of the test, the relationship to S is important
> > because it helps motivate why anyone might care. But yes, having ISA2
> > only in the filename is a bit obtuse. How about the following?
> >
> > ISA2+pooncelock+pooncelock+pombonce.litmus
> > Tests whether the ordering provided by a lock-protected S
> > litmus test is visible to an external process whose accesses are
> > separated by smp_mb(). This addition of an external process to
> > S is otherwise known as ISA2.
>
> Okay, that's somewhat better.
>
> However, I still don't understand why you think of this as a form of S.
> In S, the first variable written by P0 is the same as the variable
> written by P1. In this test, no variable other than the spinlock gets
> written twice. To me that seems like a pretty fundamental difference.

There is a chain of processes connected by variables, similar to
a snap-together toy. If you "disconnect" S at the end and snap in
a process having a pair of reads separated by a full memory barrier,
you get ISA2. And yes, this does rename one of S's variables, but that
is OK because in this view, each variable is defined by the connection
between a given pair of pair of processes.

Unconventional perhaps, but then again remember who you are emailing
with. ;-)

Another (perhaps more conventional) way to think of this is in terms of
Andrea's python script that identified equivalent litmus tests. For that
script, both the variable names and process numbers are irrelevant.

Thanx, Paul