-
Notifications
You must be signed in to change notification settings - Fork 5
powerpc64/bpf: Add jit support for load_acquire and store_release #5608
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
powerpc64/bpf: Add jit support for load_acquire and store_release #5608
Conversation
|
Upstream branch: 0768e98 |
8a62404 to
ce490aa
Compare
|
Upstream branch: 0768e98 |
61ea0b3 to
6b88458
Compare
ce490aa to
81338c7
Compare
|
Upstream branch: 0ee30d9 |
6b88458 to
341f53d
Compare
81338c7 to
cbc14bb
Compare
|
Upstream branch: 0ee30d9 |
341f53d to
62f876e
Compare
cbc14bb to
49a2b50
Compare
|
Upstream branch: beb1097 |
62f876e to
bbb3359
Compare
49a2b50 to
2fb23f0
Compare
|
Upstream branch: 42be23e |
bbb3359 to
1c29517
Compare
2fb23f0 to
749128d
Compare
|
Upstream branch: 42be23e |
1c29517 to
3d2460c
Compare
749128d to
4bae2d4
Compare
|
Upstream branch: 95993dc |
3d2460c to
a7f4b38
Compare
af31cfa to
c6f1448
Compare
|
Upstream branch: b114fce |
ba57df9 to
633323e
Compare
c6f1448 to
f34ad0b
Compare
|
Upstream branch: e9f545d |
633323e to
caa4fcb
Compare
f34ad0b to
6978e3e
Compare
|
Upstream branch: 5345e64 |
caa4fcb to
3fca8c3
Compare
6978e3e to
1661322
Compare
|
Upstream branch: 5b4c54a |
3fca8c3 to
774803b
Compare
1661322 to
6217ef6
Compare
|
Upstream branch: cd7c97f |
774803b to
380fd25
Compare
6217ef6 to
9879802
Compare
Add JIT support for the load_acquire and store_release instructions. The
implementation is similar to the kernel where:
load_acquire => plain load -> lwsync
store_release => lwsync -> plain store
To test the correctness of the implementation, following selftests were
run:
[fedora@linux-kernel bpf]$ sudo ./test_progs -a \
verifier_load_acquire,verifier_store_release,atomics
#11/1 atomics/add:OK
#11/2 atomics/sub:OK
#11/3 atomics/and:OK
#11/4 atomics/or:OK
#11/5 atomics/xor:OK
#11/6 atomics/cmpxchg:OK
#11/7 atomics/xchg:OK
#11 atomics:OK
#519/1 verifier_load_acquire/load-acquire, 8-bit:OK
#519/2 verifier_load_acquire/load-acquire, 8-bit @unpriv:OK
#519/3 verifier_load_acquire/load-acquire, 16-bit:OK
#519/4 verifier_load_acquire/load-acquire, 16-bit @unpriv:OK
#519/5 verifier_load_acquire/load-acquire, 32-bit:OK
#519/6 verifier_load_acquire/load-acquire, 32-bit @unpriv:OK
#519/7 verifier_load_acquire/load-acquire, 64-bit:OK
#519/8 verifier_load_acquire/load-acquire, 64-bit @unpriv:OK
#519/9 verifier_load_acquire/load-acquire with uninitialized
src_reg:OK
#519/10 verifier_load_acquire/load-acquire with uninitialized src_reg
@unpriv:OK
#519/11 verifier_load_acquire/load-acquire with non-pointer src_reg:OK
#519/12 verifier_load_acquire/load-acquire with non-pointer src_reg
@unpriv:OK
#519/13 verifier_load_acquire/misaligned load-acquire:OK
#519/14 verifier_load_acquire/misaligned load-acquire @unpriv:OK
#519/15 verifier_load_acquire/load-acquire from ctx pointer:OK
#519/16 verifier_load_acquire/load-acquire from ctx pointer @unpriv:OK
#519/17 verifier_load_acquire/load-acquire with invalid register R15:OK
#519/18 verifier_load_acquire/load-acquire with invalid register R15
@unpriv:OK
#519/19 verifier_load_acquire/load-acquire from pkt pointer:OK
#519/20 verifier_load_acquire/load-acquire from flow_keys pointer:OK
#519/21 verifier_load_acquire/load-acquire from sock pointer:OK
#519 verifier_load_acquire:OK
#556/1 verifier_store_release/store-release, 8-bit:OK
#556/2 verifier_store_release/store-release, 8-bit @unpriv:OK
#556/3 verifier_store_release/store-release, 16-bit:OK
#556/4 verifier_store_release/store-release, 16-bit @unpriv:OK
#556/5 verifier_store_release/store-release, 32-bit:OK
#556/6 verifier_store_release/store-release, 32-bit @unpriv:OK
#556/7 verifier_store_release/store-release, 64-bit:OK
#556/8 verifier_store_release/store-release, 64-bit @unpriv:OK
#556/9 verifier_store_release/store-release with uninitialized
src_reg:OK
#556/10 verifier_store_release/store-release with uninitialized src_reg
@unpriv:OK
#556/11 verifier_store_release/store-release with uninitialized
dst_reg:OK
#556/12 verifier_store_release/store-release with uninitialized dst_reg
@unpriv:OK
#556/13 verifier_store_release/store-release with non-pointer
dst_reg:OK
#556/14 verifier_store_release/store-release with non-pointer dst_reg
@unpriv:OK
#556/15 verifier_store_release/misaligned store-release:OK
#556/16 verifier_store_release/misaligned store-release @unpriv:OK
#556/17 verifier_store_release/store-release to ctx pointer:OK
#556/18 verifier_store_release/store-release to ctx pointer @unpriv:OK
#556/19 verifier_store_release/store-release, leak pointer to stack:OK
#556/20 verifier_store_release/store-release, leak pointer to stack
@unpriv:OK
#556/21 verifier_store_release/store-release, leak pointer to map:OK
#556/22 verifier_store_release/store-release, leak pointer to map
@unpriv:OK
#556/23 verifier_store_release/store-release with invalid register
R15:OK
#556/24 verifier_store_release/store-release with invalid register R15
@unpriv:OK
#556/25 verifier_store_release/store-release to pkt pointer:OK
#556/26 verifier_store_release/store-release to flow_keys pointer:OK
#556/27 verifier_store_release/store-release to sock pointer:OK
#556 verifier_store_release:OK
Summary: 3/55 PASSED, 0 SKIPPED, 0 FAILED
Signed-off-by: Puranjay Mohan <[email protected]>
Reviewed-by: Hari Bathini <[email protected]>
Tested-by: Saket Kumar Bhaskar <[email protected]>
|
Upstream branch: e8d780d |
380fd25 to
cdb86f4
Compare
|
At least one diff in series https://patchwork.kernel.org/project/netdevbpf/list/?series=983501 irrelevant now. Closing PR. |
Pull request for series with
subject: powerpc64/bpf: Add jit support for load_acquire and store_release
version: 1
url: https://patchwork.kernel.org/project/netdevbpf/list/?series=983474