From: Yonghong Song <yhs@fb.com>
To: <bpf@vger.kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Fangrui Song <maskray@google.com>, <kernel-team@fb.com>
Subject: [PATCH bpf-next v2 00/15] bpf: Support new insns from cpu v4
Date: Wed, 12 Jul 2023 23:07:18 -0700 [thread overview]
Message-ID: <20230713060718.388258-1-yhs@fb.com> (raw)
In previous discussion ([1]), it is agreed that we should introduce
cpu version 4 (llvm flag -mcpu=v4) which contains some instructions
which can simplify code, make code easier to understand, fix the
existing problem, or simply for feature completeness. More specifically,
the following new insns are proposed:
. sign extended load
. sign extended mov
. bswap
. signed div/mod
. ja with 32-bit offset
This patch set added kernel support for insns proposed in [1] except
BPF_ST which already has full kernel support. Beside the above proposed
insns, LLVM will generate BPF_ST insn as well under -mcpu=v4 ([2]).
The patchset implements interpreter and jit support for these new
insns as well as necessary verifier support.
To test this patch set, you need to have latest llvm from 'main' branch
of llvm-project repo and apply [2] on top of it.
[1] https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/
[2] https://reviews.llvm.org/D144829
Changelogs:
RFCv1 -> v2:
. add more verifier supports for signed extend load and mov insns.
. rename some insn names to be more consistent with intel practice.
. add cpuv4 test runner for test progs.
. add more unit and C tests.
. add documentation.
Yonghong Song (15):
bpf: Support new sign-extension load insns
bpf: Fix sign-extension ctx member accesses
bpf: Support new sign-extension mov insns
bpf: Support new unconditional bswap instruction
bpf: Support new signed div/mod instructions.
bpf: Fix jit blinding with new sdiv/smov insns
bpf: Support new 32bit offset jmp instruction
selftests/bpf: Add a cpuv4 test runner for cpu=v4 testing
selftests/bpf: Add unit tests for new sign-extension load insns
selftests/bpf: Add unit tests for new sign-extension mov insns
selftests/bpf: Add unit tests for new bswap insns
selftests/bpf: Add unit tests for new sdiv/smod insns
selftests/bpf: Add unit tests for new gotol insn
selftests/bpf: Test ldsx with more complex cases
docs/bpf: Add documentation for new instructions
Documentation/bpf/bpf_design_QA.rst | 5 -
.../bpf/standardization/instruction-set.rst | 100 ++-
arch/x86/net/bpf_jit_comp.c | 131 ++-
include/linux/filter.h | 14 +-
include/uapi/linux/bpf.h | 1 +
kernel/bpf/cgroup.c | 14 +-
kernel/bpf/core.c | 174 +++-
kernel/bpf/verifier.c | 315 ++++++--
tools/include/uapi/linux/bpf.h | 1 +
tools/testing/selftests/bpf/.gitignore | 2 +
tools/testing/selftests/bpf/Makefile | 18 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 9 +-
.../selftests/bpf/prog_tests/test_ldsx_insn.c | 88 ++
.../selftests/bpf/prog_tests/verifier.c | 10 +
.../selftests/bpf/progs/test_ldsx_insn.c | 75 ++
.../selftests/bpf/progs/verifier_bswap.c | 45 ++
.../selftests/bpf/progs/verifier_gotol.c | 30 +
.../selftests/bpf/progs/verifier_ldsx.c | 115 +++
.../selftests/bpf/progs/verifier_movsx.c | 177 ++++
.../selftests/bpf/progs/verifier_sdiv.c | 763 ++++++++++++++++++
20 files changed, 1929 insertions(+), 158 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_ldsx_insn.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ldsx_insn.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_bswap.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_gotol.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_ldsx.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_movsx.c
create mode 100644 tools/testing/selftests/bpf/progs/verifier_sdiv.c
--
2.34.1
next reply other threads:[~2023-07-13 6:07 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-13 6:07 Yonghong Song [this message]
2023-07-13 6:07 ` [PATCH bpf-next v2 01/15] bpf: Support new sign-extension load insns Yonghong Song
2023-07-14 18:13 ` Alexei Starovoitov
2023-07-14 23:22 ` Yonghong Song
2023-07-17 1:39 ` Eduard Zingerman
2023-07-19 0:15 ` Eduard Zingerman
2023-07-19 2:28 ` Yonghong Song
2023-07-13 6:07 ` [PATCH bpf-next v2 02/15] bpf: Fix sign-extension ctx member accesses Yonghong Song
2023-07-17 1:40 ` Eduard Zingerman
2023-07-19 0:40 ` Yonghong Song
2023-07-13 6:07 ` [PATCH bpf-next v2 03/15] bpf: Support new sign-extension mov insns Yonghong Song
2023-07-17 1:41 ` Eduard Zingerman
2023-07-19 1:17 ` Yonghong Song
2023-07-19 12:53 ` Eduard Zingerman
2023-07-19 15:59 ` Fangrui Song
2023-07-19 16:57 ` Eduard Zingerman
2023-07-13 6:07 ` [PATCH bpf-next v2 04/15] bpf: Support new unconditional bswap instruction Yonghong Song
2023-07-17 1:42 ` Eduard Zingerman
2023-07-19 1:22 ` Yonghong Song
2023-07-13 6:07 ` [PATCH bpf-next v2 05/15] bpf: Support new signed div/mod instructions Yonghong Song
2023-07-18 23:00 ` Eduard Zingerman
2023-07-19 2:30 ` Yonghong Song
2023-07-19 2:44 ` Alexei Starovoitov
2023-07-19 6:57 ` Yonghong Song
2023-07-13 6:07 ` [PATCH bpf-next v2 06/15] bpf: Fix jit blinding with new sdiv/smov insns Yonghong Song
2023-07-13 6:07 ` [PATCH bpf-next v2 07/15] bpf: Support new 32bit offset jmp instruction Yonghong Song
2023-07-13 6:08 ` [PATCH bpf-next v2 08/15] selftests/bpf: Add a cpuv4 test runner for cpu=v4 testing Yonghong Song
2023-07-13 6:18 ` Fangrui Song
2023-07-13 6:25 ` Yonghong Song
2023-07-13 6:08 ` [PATCH bpf-next v2 09/15] selftests/bpf: Add unit tests for new sign-extension load insns Yonghong Song
2023-07-18 23:06 ` Eduard Zingerman
2023-07-13 6:08 ` [PATCH bpf-next v2 10/15] selftests/bpf: Add unit tests for new sign-extension mov insns Yonghong Song
2023-07-13 6:08 ` [PATCH bpf-next v2 11/15] selftests/bpf: Add unit tests for new bswap insns Yonghong Song
2023-07-13 6:08 ` [PATCH bpf-next v2 12/15] selftests/bpf: Add unit tests for new sdiv/smod insns Yonghong Song
2023-07-18 23:10 ` Eduard Zingerman
2023-07-13 6:08 ` [PATCH bpf-next v2 13/15] selftests/bpf: Add unit tests for new gotol insn Yonghong Song
2023-07-13 6:08 ` [PATCH bpf-next v2 14/15] selftests/bpf: Test ldsx with more complex cases Yonghong Song
2023-07-13 6:08 ` [PATCH bpf-next v2 15/15] docs/bpf: Add documentation for new instructions Yonghong Song
2023-07-14 18:28 ` Alexei Starovoitov
2023-07-14 23:26 ` Yonghong Song
2023-07-14 23:33 ` Dave Thaler
2023-07-14 23:33 ` [Bpf] " Dave Thaler
2023-07-15 0:23 ` Alexei Starovoitov
2023-07-15 0:23 ` [Bpf] " Alexei Starovoitov
2023-07-14 23:34 ` Dave Thaler
2023-07-14 23:34 ` [Bpf] " Dave Thaler
2023-07-17 1:39 ` [PATCH bpf-next v2 00/15] bpf: Support new insns from cpu v4 Eduard Zingerman
2023-07-17 16:56 ` Alexei Starovoitov
2023-07-17 17:04 ` Eduard Zingerman
2023-07-17 21:52 ` Yonghong Song
2023-07-21 14:56 ` Jose E. Marchesi
2023-07-24 0:17 ` Jose E. Marchesi
2023-07-24 1:04 ` Jose E. Marchesi
2023-07-24 2:35 ` Yonghong Song
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=20230713060718.388258-1-yhs@fb.com \
--to=yhs@fb.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=maskray@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.