C MP+polockonce+poacquiresilsil

(*
 * Result: Sometimes
 *
 * Do spinlocks provide order to outside observers using spin_is_locked()
 * to sense the lock-held state, ordered by acquire?  Note that when the
 * first spin_is_locked() returns false and the second true, we know that
 * the smp_load_acquire() executed before the lock was acquired (loosely
 * speaking).
 *)

{
}

P0(spinlock_t *lo, int *x)
{
	spin_lock(lo);
	WRITE_ONCE(*x, 1);
	spin_unlock(lo);
}

P1(spinlock_t *lo, int *x)
{
	int r1;
	int r2;
	int r3;

	r1 = smp_load_acquire(x);
	r2 = spin_is_locked(lo);
	r3 = spin_is_locked(lo);
}

exists (1:r1=1 /\ 1:r2=0 /\ 1:r3=1)
