From: Marat Khalili <qm2k21@gmail.com>
Cc: dev@dpdk.org, Marat Khalili <marat.khalili@huawei.com>,
Stephen Hemminger <stephen@networkplumber.org>,
Konstantin Ananyev <konstantin.ananyev@huawei.com>,
Marat Khalili <qm2k21@gmail.com>
Subject: [PATCH v4 0/7] validate-bpf: add standalone validation debug tool
Date: Thu, 17 Sep 2026 14:35:30 +0000 [thread overview]
Message-ID: <20260917143539.46951-1-qm2k21@gmail.com> (raw)
In-Reply-To: <20260915192626.48125-1-marat.khalili@huawei.com>
This patchset introduces a new standalone tool for pre-validating eBPF
programs and debugging validation problems. Its should allow developers
to trace validator state changes per instruction and understand verifier
decisions, simplifying the debugging of rejected programs before loading
them into a real application context.
v4:
* addressed reviewer feedback from Konstantin Ananyev:
* changed variable and array names to lowercase to follow conventions;
* replaced strtoull()/strtoumax() with strtoul() and removed redundant
SIZE_MAX checks;
* changed return types of point_infos_destroy_* functions to void;
* replaced %jd and (intmax_t) cast with PRId32 when printing frame
offsets;
* refactored the inverted loop in print_frame() for clarity;
* replaced return -ENOMEM with RTE_VERIFY() for allocations in debug.c
print functions;
* simplified token matching logic in parse_decl.c by using strncmp().
v3:
* addressed another FreeBSD issue (spurious uninitialized warning);
* addressed more AI comments:
* fail if library fails to set step catchpoint on start command;
* fail nicer if external variables are too big;
* fail nicer if EAL initialization or cleanup fails;
* explain why 9 steps are expeced in the test;
* explain that non-zero buf_size marks mbuf;
* avoid symbols starting with `RTE_` in the app;
v2:
* for FreeBSD compatibility switched from Linux to DPDK network structs;
* addressed small AI comments:
* clarified patch 1 commit message;
* renamed `rte_validate_bpf_logtype` to `validate_bpf_logtype`;
* corrected comment to an internal-use-only function to reflect that
next-after-last value of the program counter is no longer allowed;
Marat Khalili (7):
bpf/validate: fix finished status on restart
bpf/validate: refactor internal step function
bpf/validate: formalize call back requirements
bpf/validate: add jump notification events
bpf/validate: add get current event API
app/test: add test for bpf validate debug events
app/validate-bpf: add BPF validation application
MAINTAINERS | 2 +
app/meson.build | 1 +
app/test/test_bpf_validate.c | 344 +++++++-
app/validate-bpf/alloc_list.c | 53 ++
app/validate-bpf/args.c | 262 ++++++
app/validate-bpf/debug.c | 1087 ++++++++++++++++++++++++
app/validate-bpf/debug_command.c | 383 +++++++++
app/validate-bpf/debug_command.h | 65 ++
app/validate-bpf/eal_init_args.c | 57 ++
app/validate-bpf/internal.h | 151 ++++
app/validate-bpf/main.c | 90 ++
app/validate-bpf/meson.build | 13 +
app/validate-bpf/parse_decl.c | 616 ++++++++++++++
doc/guides/rel_notes/release_26_11.rst | 5 +
doc/guides/tools/index.rst | 1 +
doc/guides/tools/validate_bpf.rst | 97 +++
lib/bpf/bpf_validate.c | 49 +-
lib/bpf/bpf_validate_debug.c | 92 +-
lib/bpf/bpf_validate_debug.h | 12 +-
lib/bpf/rte_bpf_validate_debug.h | 42 +-
20 files changed, 3356 insertions(+), 66 deletions(-)
create mode 100644 app/validate-bpf/alloc_list.c
create mode 100644 app/validate-bpf/args.c
create mode 100644 app/validate-bpf/debug.c
create mode 100644 app/validate-bpf/debug_command.c
create mode 100644 app/validate-bpf/debug_command.h
create mode 100644 app/validate-bpf/eal_init_args.c
create mode 100644 app/validate-bpf/internal.h
create mode 100644 app/validate-bpf/main.c
create mode 100644 app/validate-bpf/meson.build
create mode 100644 app/validate-bpf/parse_decl.c
create mode 100644 doc/guides/tools/validate_bpf.rst
--
2.43.0
next prev parent reply other threads:[~2026-09-17 14:36 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 10:39 [PATCH 0/7] validate-bpf: add standalone validation debug tool Marat Khalili
2026-09-11 10:39 ` [PATCH 1/7] bpf/validate: fix finished status on restart Marat Khalili
2026-09-11 10:40 ` [PATCH 2/7] bpf/validate: refactor internal step function Marat Khalili
2026-09-11 10:40 ` [PATCH 3/7] bpf/validate: formalize call back requirements Marat Khalili
2026-09-11 10:40 ` [PATCH 4/7] bpf/validate: add jump notification events Marat Khalili
2026-09-11 10:40 ` [PATCH 5/7] bpf/validate: add get current event API Marat Khalili
2026-09-11 10:40 ` [PATCH 6/7] app/test: add test for bpf validate debug events Marat Khalili
2026-09-11 10:40 ` [PATCH 7/7] app/validate-bpf: add BPF validation application Marat Khalili
2026-09-14 14:54 ` [PATCH v2 0/7] validate-bpf: add standalone validation debug tool Marat Khalili
2026-09-14 14:54 ` [PATCH v2 1/7] bpf/validate: fix finished status on restart Marat Khalili
2026-09-14 14:54 ` [PATCH v2 2/7] bpf/validate: refactor internal step function Marat Khalili
2026-09-14 14:54 ` [PATCH v2 3/7] bpf/validate: formalize call back requirements Marat Khalili
2026-09-14 14:54 ` [PATCH v2 4/7] bpf/validate: add jump notification events Marat Khalili
2026-09-14 14:54 ` [PATCH v2 5/7] bpf/validate: add get current event API Marat Khalili
2026-09-14 14:54 ` [PATCH v2 6/7] app/test: add test for bpf validate debug events Marat Khalili
2026-09-14 14:54 ` [PATCH v2 7/7] app/validate-bpf: add BPF validation application Marat Khalili
2026-09-14 18:41 ` Stephen Hemminger
2026-09-15 13:13 ` Stephen Hemminger
2026-09-14 18:42 ` [PATCH v2 0/7] validate-bpf: add standalone validation debug tool Stephen Hemminger
2026-09-15 19:27 ` Marat Khalili
2026-09-15 19:26 ` [PATCH v3 " Marat Khalili
2026-09-15 19:26 ` [PATCH v3 1/7] bpf/validate: fix finished status on restart Marat Khalili
2026-09-15 19:26 ` [PATCH v3 2/7] bpf/validate: refactor internal step function Marat Khalili
2026-09-15 19:26 ` [PATCH v3 3/7] bpf/validate: formalize call back requirements Marat Khalili
2026-09-15 19:26 ` [PATCH v3 4/7] bpf/validate: add jump notification events Marat Khalili
2026-09-15 19:26 ` [PATCH v3 5/7] bpf/validate: add get current event API Marat Khalili
2026-09-15 19:26 ` [PATCH v3 6/7] app/test: add test for bpf validate debug events Marat Khalili
2026-09-15 19:26 ` [PATCH v3 7/7] app/validate-bpf: add BPF validation application Marat Khalili
2026-09-16 16:36 ` Konstantin Ananyev
2026-09-17 14:35 ` Marat Khalili [this message]
2026-09-17 14:35 ` [PATCH v4 1/7] bpf/validate: fix finished status on restart Marat Khalili
2026-09-17 14:35 ` [PATCH v4 2/7] bpf/validate: refactor internal step function Marat Khalili
2026-09-17 14:35 ` [PATCH v4 3/7] bpf/validate: formalize call back requirements Marat Khalili
2026-09-17 14:35 ` [PATCH v4 4/7] bpf/validate: add jump notification events Marat Khalili
2026-09-17 14:35 ` [PATCH v4 5/7] bpf/validate: add get current event API Marat Khalili
2026-09-17 14:35 ` [PATCH v4 6/7] app/test: add test for bpf validate debug events Marat Khalili
2026-09-17 14:35 ` [PATCH v4 7/7] app/validate-bpf: add BPF validation application Marat Khalili
2026-09-17 16:16 ` [PATCH v4 0/7] validate-bpf: add standalone validation debug tool Konstantin Ananyev
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=20260917143539.46951-1-qm2k21@gmail.com \
--to=qm2k21@gmail.com \
--cc=dev@dpdk.org \
--cc=konstantin.ananyev@huawei.com \
--cc=marat.khalili@huawei.com \
--cc=stephen@networkplumber.org \
/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