You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
selftests/bpf: Add selftests for load-acquire and store-release instructions
Add the following ./test_progs tests:
* atomics/load_acquire
* atomics/store_release
* arena_atomics/load_acquire
* arena_atomics/store_release
They depend on the pre-defined __BPF_FEATURE_LOAD_ACQ_STORE_REL feature
macro, which implies -mcpu>=v4.
$ ALLOWLIST=atomics/load_acquire,atomics/store_release,
$ ALLOWLIST+=arena_atomics/load_acquire,arena_atomics/store_release
$ ./test_progs-cpuv4 -a $ALLOWLIST
#3/9 arena_atomics/load_acquire:OK
#3/10 arena_atomics/store_release:OK
...
#10/8 atomics/load_acquire:OK
#10/9 atomics/store_release:OK
$ ./test_progs -v -a $ALLOWLIST
test_load_acquire:SKIP:Clang does not support BPF load-acquire or addr_space_cast
#3/9 arena_atomics/load_acquire:SKIP
test_store_release:SKIP:Clang does not support BPF store-release or addr_space_cast
#3/10 arena_atomics/store_release:SKIP
...
test_load_acquire:SKIP:Clang does not support BPF load-acquire
#10/8 atomics/load_acquire:SKIP
test_store_release:SKIP:Clang does not support BPF store-release
#10/9 atomics/store_release:SKIP
Additionally, add several ./test_verifier tests:
#65/u atomic BPF_LOAD_ACQ access through non-pointer OK
#65/p atomic BPF_LOAD_ACQ access through non-pointer OK
#66/u atomic BPF_STORE_REL access through non-pointer OK
#66/p atomic BPF_STORE_REL access through non-pointer OK
#67/u BPF_ATOMIC load-acquire, 8-bit OK
#67/p BPF_ATOMIC load-acquire, 8-bit OK
#68/u BPF_ATOMIC load-acquire, 16-bit OK
#68/p BPF_ATOMIC load-acquire, 16-bit OK
#69/u BPF_ATOMIC load-acquire, 32-bit OK
#69/p BPF_ATOMIC load-acquire, 32-bit OK
#70/u BPF_ATOMIC load-acquire, 64-bit OK
#70/p BPF_ATOMIC load-acquire, 64-bit OK
#71/u Cannot load-acquire from uninitialized src_reg OK
#71/p Cannot load-acquire from uninitialized src_reg OK
#76/u BPF_ATOMIC store-release, 8-bit OK
#76/p BPF_ATOMIC store-release, 8-bit OK
#77/u BPF_ATOMIC store-release, 16-bit OK
#77/p BPF_ATOMIC store-release, 16-bit OK
#78/u BPF_ATOMIC store-release, 32-bit OK
#78/p BPF_ATOMIC store-release, 32-bit OK
#79/u BPF_ATOMIC store-release, 64-bit OK
#79/p BPF_ATOMIC store-release, 64-bit OK
#80/u Cannot store-release from uninitialized src_reg OK
#80/p Cannot store-release from uninitialized src_reg OK
Reviewed-by: Josh Don <[email protected]>
Signed-off-by: Peilin Ye <[email protected]>
0 commit comments