From: Hari Bathini <hbathini@linux.ibm.com>
To: bpf@vger.kernel.org, linuxppc-dev <linuxppc-dev@lists.ozlabs.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>,
"Naveen N. Rao" <naveen.n.rao@linux.ibm.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
netdev@vger.kernel.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>, Jordan Niethe <jniethe5@gmail.com>,
Russell Currey <ruscur@russell.cc>
Subject: [PATCH v2 0/5] Atomics support for eBPF on powerpc
Date: Fri, 10 Jun 2022 21:25:47 +0530 [thread overview]
Message-ID: <20220610155552.25892-1-hbathini@linux.ibm.com> (raw)
This patchset adds atomic operations to the eBPF instruction set on
powerpc. The instructions that are added here can be summarised with
this list of kernel operations for ppc64:
* atomic[64]_[fetch_]add
* atomic[64]_[fetch_]and
* atomic[64]_[fetch_]or
* atomic[64]_[fetch_]xor
* atomic[64]_xchg
* atomic[64]_cmpxchg
and this list of kernel operations for ppc32:
* atomic_[fetch_]add
* atomic_[fetch_]and
* atomic_[fetch_]or
* atomic_[fetch_]xor
* atomic_xchg
* atomic_cmpxchg
The following are left out of scope for this effort:
* 64 bit operations on ppc32.
* Explicit memory barriers, 16 and 8 bit operations on both ppc32
& ppc64.
The first patch adds support for bitwsie atomic operations on ppc64.
The next patch adds fetch variant support for these instructions. The
third patch adds support for xchg and cmpxchg atomic operations on
ppc64. Patch #4 adds support for 32-bit atomic bitwise operations on
ppc32. patch #5 adds support for xchg and cmpxchg atomic operations
on ppc32.
Validated these changes successfully with atomics test cases in
test_bpf testsuite and test_verifier & test_progs selftests.
With test_bpf testsuite:
all 147 atomics related test cases (both 32-bit & 64-bit) JIT'ed
successfully on ppc64:
test_bpf: Summary: 1026 PASSED, 0 FAILED, [1014/1014 JIT'ed]
all 76 atomics related test cases (32-bit) JIT'ed successfully
on ppc32:
test_bpf: Summary: 1027 PASSED, 0 FAILED, [915/1015 JIT'ed]
Changes in v2:
* Moved variable declaration to avoid late declaration error on
some compilers. Thanks to Russell for pointing this out.
* For ppc64, added an optimization for 32-bit cmpxchg with regard
to commit 39491867ace5.
* For ppc32, used an additional register (BPF_REG_AX):
- to avoid clobbering src_reg.
- to keep the lwarx reservation as intended.
- to avoid the odd switch/goto construct.
* For ppc32, zero'ed out the higher 32-bit explicitly when required.
Hari Bathini (5):
bpf ppc64: add support for BPF_ATOMIC bitwise operations
bpf ppc64: add support for atomic fetch operations
bpf ppc64: Add instructions for atomic_[cmp]xchg
bpf ppc32: add support for BPF_ATOMIC bitwise operations
bpf ppc32: Add instructions for atomic_[cmp]xchg
arch/powerpc/net/bpf_jit_comp32.c | 72 +++++++++++++++++++----
arch/powerpc/net/bpf_jit_comp64.c | 96 ++++++++++++++++++++++---------
2 files changed, 129 insertions(+), 39 deletions(-)
--
2.35.3
next reply other threads:[~2022-06-10 15:56 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-10 15:55 Hari Bathini [this message]
2022-06-10 15:55 ` [PATCH v2 1/5] bpf ppc64: add support for BPF_ATOMIC bitwise operations Hari Bathini
2022-06-10 15:55 ` [PATCH v2 2/5] bpf ppc64: add support for atomic fetch operations Hari Bathini
2022-06-10 15:55 ` [PATCH v2 3/5] bpf ppc64: Add instructions for atomic_[cmp]xchg Hari Bathini
2022-06-10 15:55 ` [PATCH v2 4/5] bpf ppc32: add support for BPF_ATOMIC bitwise operations Hari Bathini
2022-06-11 17:14 ` Christophe Leroy
2022-06-13 19:00 ` Hari Bathini
2022-06-10 15:55 ` [PATCH v2 5/5] bpf ppc32: Add instructions for atomic_[cmp]xchg Hari Bathini
2022-06-11 17:34 ` Christophe Leroy
2022-06-13 19:11 ` Hari Bathini
2022-06-13 19:14 ` Hari Bathini
2022-06-24 10:41 ` Naveen N. Rao
2022-06-24 10:37 ` [PATCH v2 0/5] Atomics support for eBPF on powerpc Naveen N. Rao
2022-07-04 11:33 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220610155552.25892-1-hbathini@linux.ibm.com \
--to=hbathini@linux.ibm.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=benh@kernel.crashing.org \
--cc=bpf@vger.kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=daniel@iogearbox.net \
--cc=jniethe5@gmail.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=naveen.n.rao@linux.ibm.com \
--cc=netdev@vger.kernel.org \
--cc=paulus@samba.org \
--cc=ruscur@russell.cc \
--cc=songliubraving@fb.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).