From: "Ihor Solodrai" <ihor.solodrai@linux.dev>
To: "Eduard Zingerman" <eddyz87@gmail.com>,
"Peilin Ye" <yepeilin@google.com>,
bpf@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: bpf@ietf.org, "Xu Kuohai" <xukuohai@huaweicloud.com>,
"David Vernet" <void@manifault.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Martin KaFai Lau" <martin.lau@linux.dev>,
"Song Liu" <song@kernel.org>,
"Yonghong Song" <yonghong.song@linux.dev>,
"John Fastabend" <john.fastabend@gmail.com>,
"KP Singh" <kpsingh@kernel.org>,
"Stanislav Fomichev" <sdf@fomichev.me>,
"Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Paul E. McKenney" <paulmck@kernel.org>,
"Puranjay Mohan" <puranjay@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>,
"Quentin Monnet" <qmo@kernel.org>,
"Mykola Lysenko" <mykolal@fb.com>,
"Shuah Khan" <shuah@kernel.org>, "Josh Don" <joshdon@google.com>,
"Barret Rhoden" <brho@google.com>,
"Neel Natu" <neelnatu@google.com>,
"Benjamin Segall" <bsegall@google.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH bpf-next v1 7/8] selftests/bpf: Add selftests for load-acquire and store-release instructions
Date: Wed, 29 Jan 2025 02:07:45 +0000 [thread overview]
Message-ID: <bda935ed074d3151d9afe02df06f026b8ea30690@linux.dev> (raw)
In-Reply-To: <131a817f7f2749e78e527a251ca7971588cf62f8.camel@gmail.com>
January 28, 2025 at 5:06 PM, "Eduard Zingerman" <eddyz87@gmail.com> wrote:
>
> On Sat, 2025-01-25 at 02:19 +0000, Peilin Ye wrote:
>
> >
> > Add several ./test_progs tests:
> >
> >
> >
> > - atomics/load_acquire
> >
> > - atomics/store_release
> >
> > - arena_atomics/load_acquire
> >
> > - arena_atomics/store_release
> >
> > - verifier_load_acquire/*
> >
> > - verifier_store_release/*
> >
> > - verifier_precision/bpf_load_acquire
> >
> > - verifier_precision/bpf_store_release
> >
> >
> >
> > The last two tests are added to check if backtrack_insn() handles the
> >
> > new instructions correctly.
> >
> >
> >
> > Additionally, the last test also makes sure that the verifier
> >
> > "remembers" the value (in src_reg) we store-release into e.g. a stack
> >
> > slot. For example, if we take a look at the test program:
> >
> >
> >
> > #0: "r1 = 8;"
> >
> > #1: "store_release((u64 *)(r10 - 8), r1);"
> >
> > #2: "r1 = *(u64 *)(r10 - 8);"
> >
> > #3: "r2 = r10;"
> >
> > #4: "r2 += r1;" /* mark_precise */
> >
> > #5: "r0 = 0;"
> >
> > #6: "exit;"
> >
> >
> >
> > At #1, if the verifier doesn't remember that we wrote 8 to the stack,
> >
> > then later at #4 we would be adding an unbounded scalar value to the
> >
> > stack pointer, which would cause the program to be rejected:
> >
> >
> >
> > VERIFIER LOG:
> >
> > =============
> >
> > ...
> >
> > math between fp pointer and register with unbounded min value is not allowed
> >
> >
> >
> > All new tests depend on the pre-defined __BPF_FEATURE_LOAD_ACQ_STORE_REL
> >
> > feature macro, which implies -mcpu>=v4.
> >
>
> This restriction would mean that tests are skipped on BPF CI, as it
>
> currently runs using llvm 17 and 18. Instead, I suggest using some
Eduard, if this feature requires a particular version of LLVM, it's
not difficult to add a configuration for it to BPF CI.
Whether we want to do it is an open question though. Issues may come
up with other tests when newer LLVM is used.
>
> macro hiding an inline assembly as below:
>
> asm volatile (".8byte %[insn];"
>
> :
>
> : [insn]"i"(*(long *)&(BPF_RAW_INSN(...)))
>
> : /* correct clobbers here */);
>
> See the usage of the __imm_insn() macro in the test suite.
>
> Also, "BPF_ATOMIC loads from R%d %s is not allowed\n" and
>
> "BPF_ATOMIC stores into R%d %s is not allowed\n"
>
> situations are not tested.
>
> [...]
>
> >
>
> [...]
>
WARNING: multiple messages have this Message-ID (diff)
From: "Ihor Solodrai" <ihor.solodrai@linux.dev>
To: "Eduard Zingerman" <eddyz87@gmail.com>,
"Peilin Ye" <yepeilin@google.com>,
bpf@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: bpf@ietf.org, Xu Kuohai <xukuohai@huaweicloud.com>,
David Vernet <void@manifault.com>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
"Paul E. McKenney" <paulmck@kernel.org>,
Puranjay Mohan <puranjay@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Quentin Monnet <qmo@kernel.org>,
Mykola Lysenko <mykolal@fb.com>, Shuah Khan <shuah@kernel.org>,
Josh Don <joshdon@google.com>, Barret Rhoden <brho@google.com>,
Neel Natu <neelnatu@google.com>,
Benjamin Segall <bsegall@google.com>,
linux-kernel@vger.kernel.org
Subject: [Bpf] Re: [PATCH bpf-next v1 7/8] selftests/bpf: Add selftests for load-acquire and store-release instructions
Date: Wed, 29 Jan 2025 02:07:45 +0000 [thread overview]
Message-ID: <bda935ed074d3151d9afe02df06f026b8ea30690@linux.dev> (raw)
Message-ID: <20250129020745.PbFlK7QOfQPfAxMuIfpvWJiz1T87u73F0iRRAC6smZ8@z> (raw)
In-Reply-To: <131a817f7f2749e78e527a251ca7971588cf62f8.camel@gmail.com>
January 28, 2025 at 5:06 PM, "Eduard Zingerman" <eddyz87@gmail.com> wrote:
>
> On Sat, 2025-01-25 at 02:19 +0000, Peilin Ye wrote:
>
> >
> > Add several ./test_progs tests:
> >
> >
> >
> > - atomics/load_acquire
> >
> > - atomics/store_release
> >
> > - arena_atomics/load_acquire
> >
> > - arena_atomics/store_release
> >
> > - verifier_load_acquire/*
> >
> > - verifier_store_release/*
> >
> > - verifier_precision/bpf_load_acquire
> >
> > - verifier_precision/bpf_store_release
> >
> >
> >
> > The last two tests are added to check if backtrack_insn() handles the
> >
> > new instructions correctly.
> >
> >
> >
> > Additionally, the last test also makes sure that the verifier
> >
> > "remembers" the value (in src_reg) we store-release into e.g. a stack
> >
> > slot. For example, if we take a look at the test program:
> >
> >
> >
> > #0: "r1 = 8;"
> >
> > #1: "store_release((u64 *)(r10 - 8), r1);"
> >
> > #2: "r1 = *(u64 *)(r10 - 8);"
> >
> > #3: "r2 = r10;"
> >
> > #4: "r2 += r1;" /* mark_precise */
> >
> > #5: "r0 = 0;"
> >
> > #6: "exit;"
> >
> >
> >
> > At #1, if the verifier doesn't remember that we wrote 8 to the stack,
> >
> > then later at #4 we would be adding an unbounded scalar value to the
> >
> > stack pointer, which would cause the program to be rejected:
> >
> >
> >
> > VERIFIER LOG:
> >
> > =============
> >
> > ...
> >
> > math between fp pointer and register with unbounded min value is not allowed
> >
> >
> >
> > All new tests depend on the pre-defined __BPF_FEATURE_LOAD_ACQ_STORE_REL
> >
> > feature macro, which implies -mcpu>=v4.
> >
>
> This restriction would mean that tests are skipped on BPF CI, as it
>
> currently runs using llvm 17 and 18. Instead, I suggest using some
Eduard, if this feature requires a particular version of LLVM, it's
not difficult to add a configuration for it to BPF CI.
Whether we want to do it is an open question though. Issues may come
up with other tests when newer LLVM is used.
>
> macro hiding an inline assembly as below:
>
> asm volatile (".8byte %[insn];"
>
> :
>
> : [insn]"i"(*(long *)&(BPF_RAW_INSN(...)))
>
> : /* correct clobbers here */);
>
> See the usage of the __imm_insn() macro in the test suite.
>
> Also, "BPF_ATOMIC loads from R%d %s is not allowed\n" and
>
> "BPF_ATOMIC stores into R%d %s is not allowed\n"
>
> situations are not tested.
>
> [...]
>
> >
>
> [...]
>
--
Bpf mailing list -- bpf@ietf.org
To unsubscribe send an email to bpf-leave@ietf.org
next prev parent reply other threads:[~2025-01-29 2:08 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-25 2:16 [PATCH bpf-next v1 0/8] Introduce load-acquire and store-release BPF instructions Peilin Ye
2025-01-25 2:17 ` [PATCH bpf-next v1 1/8] bpf/verifier: Factor out atomic_ptr_type_ok() Peilin Ye
2025-01-25 2:18 ` [PATCH bpf-next v1 2/8] bpf/verifier: Factor out check_atomic_rmw() Peilin Ye
2025-01-25 2:18 ` [PATCH bpf-next v1 3/8] bpf: Introduce load-acquire and store-release instructions Peilin Ye
2025-01-29 0:19 ` Eduard Zingerman
2025-01-29 22:04 ` Peilin Ye
2025-01-29 22:42 ` Eduard Zingerman
2025-01-30 3:10 ` Peilin Ye
2025-01-29 1:30 ` Eduard Zingerman
2025-01-29 22:17 ` Peilin Ye
2025-01-30 0:41 ` Alexei Starovoitov
2025-01-30 3:38 ` Peilin Ye
2025-01-25 2:18 ` [PATCH bpf-next v1 4/8] arm64: insn: Add BIT(23) to {load,store}_ex's mask Peilin Ye
2025-01-25 2:19 ` [PATCH bpf-next v1 5/8] arm64: insn: Add load-acquire and store-release instructions Peilin Ye
2025-01-25 2:19 ` [PATCH bpf-next v1 6/8] bpf, arm64: Support " Peilin Ye
2025-01-25 2:19 ` [PATCH bpf-next v1 7/8] selftests/bpf: Add selftests for " Peilin Ye
2025-01-29 1:06 ` Eduard Zingerman
2025-01-29 2:07 ` Ihor Solodrai [this message]
2025-01-29 2:07 ` [Bpf] " Ihor Solodrai
2025-01-29 2:17 ` Eduard Zingerman
2025-01-30 0:03 ` Peilin Ye
2025-02-04 0:30 ` Peilin Ye
2025-02-04 0:52 ` Eduard Zingerman
2025-02-04 1:29 ` Peilin Ye
2025-01-25 2:19 ` [PATCH bpf-next v1 8/8] bpf, docs: Update instruction-set.rst " Peilin Ye
2025-01-30 0:44 ` Alexei Starovoitov
2025-01-30 7:33 ` Peilin Ye
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=bda935ed074d3151d9afe02df06f026b8ea30690@linux.dev \
--to=ihor.solodrai@linux.dev \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@ietf.org \
--cc=bpf@vger.kernel.org \
--cc=brho@google.com \
--cc=bsegall@google.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=joshdon@google.com \
--cc=kpsingh@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=mykolal@fb.com \
--cc=neelnatu@google.com \
--cc=paulmck@kernel.org \
--cc=puranjay@kernel.org \
--cc=qmo@kernel.org \
--cc=sdf@fomichev.me \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=void@manifault.com \
--cc=will@kernel.org \
--cc=xukuohai@huaweicloud.com \
--cc=yepeilin@google.com \
--cc=yonghong.song@linux.dev \
/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.