Re: [PATCH] tools/memory-model: Document herd7 (internal) representation

From: Alan Stern
Date: Fri May 24 2024 - 16:04:22 EST


On Fri, May 24, 2024 at 05:37:06PM +0200, Andrea Parri wrote:
> > - While checking the information below using herd7, I've observed some
> > "strange" behavior with spin_is_locked() (perhaps, unsurprisingly...);
> > IAC, that's also excluded from this table/submission.
>
> For completeness, the behavior in question:
>
> $ cat T.litmus
> C T
>
> {}
>
> P0(spinlock_t *x)
> {
> int r0;
>
> spin_lock(x);
> spin_unlock(x);
> r0 = spin_is_locked(x);
> }
>
> $ herd7 -conf linux-kernel.cfg T.litmus
> Test T Required
> States 0
> Ok
> Witnesses
> Positive: 0 Negative: 0
> Condition forall (true)
> Observation T Never 0 0
> Time T 0.00
> Hash=6fa204e139ddddf2cb6fa963bad117c0
>
> Haven't been using spin_is_locked for a while... perhaps I'm doing
> something wrong? (IAC, will have a closer look next week...)

I get the same empty result. There's definitely something going wrong
in the "with ... from cross(...)" lines in lock.cat. I need to do some
checking and testing.

Also, lock.cat doesn't check for R events that don't actually read from
anything (which will happen when the spin_is_locked() call above
generates an RL event). This is a separate bug, easily fixed.

Alan