Re: Some observations (results) on BPF acquire and release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/25/2024 3:44 PM, Andrea Parri wrote:
On Fri, Oct 25, 2024 at 03:28:17PM +0200, Hernan Ponce de Leon wrote:
On 10/25/2024 3:15 PM, Andrea Parri wrote:
BPF R+release+fence
{
    0:r2=x; 0:r4=y;
    1:r2=y; 1:r4=x; 1:r6=l;
}
    P0                                 | P1                                         ;
    r1 = 1                             | r1 = 2                                     ;
    *(u32 *)(r2 + 0) = r1              | *(u32 *)(r2 + 0) = r1                      ;
    r3 = 1                             | r5 = atomic_fetch_add((u32 *)(r6 + 0), r5) ;
    store_release((u32 *)(r4 + 0), r3) | r3 = *(u32 *)(r4 + 0)                      ;
exists ([y]=2 /\ 1:r3=0)

This "exists" condition is not satisfiable according to the BPF model;
however, if we adopt the "natural"/intended(?) PowerPC implementations
of the synchronization primitives above (aka, with store_release() -->
LWSYNC and atomic_fetch_add() --> SYNC ; [...] ), then we see that the
condition in question becomes (architecturally) satisfiable on PowerPC
(although I'm not aware of actual observations on PowerPC hardware).

Are the resulting PPC tests available somewhere?

My data go back to the LKMM paper, cf. e.g. the R+pooncerelease+fencembonceonce
entry at https://diy.inria.fr/linux/hard.html#unseen .

    Andrea

I guess I understood you wrong. I thought you had manually "compiled" those
to PPC litmus format (i.e., doing exactly what the JIT compiler would do). I
can obviously write them manually myself, but I find this painful and error
prone (I am particularly bad at this task), so I wanted to avoid this if
someone else had already done it.

FWIW, a comprehensive collection of PPC litmus tests could be found at

   https://www.cl.cam.ac.uk/~pes20/ppc-supplemental/ppc002.html

(just follow the link on the test pattern/variants to see the sources);
be aware the results of those tables date back to the PPC paper though.

Alternatively, remind that PPC is well supported by the herdtools7 diy7
generator; I see no reason for having to (re)write such tests manually.

   Andrea

I am particularly interested in tests using lwarx and stwcx instructions (this is what I understood would be used if one follows [1] to compile the tests in this thread).

I have not yet check the cambridge website, but due to the timeline, I don't expect to find tests with those instructions. The same is true with [2].

I have limited experience with diy7, but I remember that it had some limitations to generate RMW instructions, at least for C [3].

Hernan

[1] https://github.com/torvalds/linux/blob/master/arch/powerpc/net/bpf_jit_comp32.c [2] https://github.com/herd/herdtools7/tree/master/catalogue/herding-cats/ppc/tests/campaign
[3] https://github.com/herd/herdtools7/issues/905





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux