From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Song Liu <songliubraving@fb.com>,
Howard Chu <howardchu95@gmail.com>,
Andrea Righi <andrea.righi@linux.dev>,
peterz@infradead.org, mingo@redhat.com, mark.rutland@arm.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
irogers@google.com, adrian.hunter@intel.com,
kan.liang@linux.intel.com, linux-perf-users@vger.kernel.org,
linux-kernel@vger.kernel.org, james.clark@linaro.org,
alan.maguire@oracle.com
Subject: Re: [PATCH v2 0/2] perf trace: Fix support for the new BPF feature in clang 12
Date: Tue, 22 Oct 2024 16:52:16 -0700 [thread overview]
Message-ID: <Zxg6sCJAUDUsaVBM@google.com> (raw)
In-Reply-To: <Zxfv3BupKqhi3zGV@x1>
On Tue, Oct 22, 2024 at 03:33:00PM -0300, Arnaldo Carvalho de Melo wrote:
> On Tue, Oct 22, 2024 at 10:04:52AM -0700, Namhyung Kim wrote:
> > Hi Arnaldo,
> >
> > On Wed, Oct 16, 2024 at 11:22:15AM -0300, Arnaldo Carvalho de Melo wrote:
> > > On Tue, Oct 15, 2024 at 07:06:35PM -0700, Namhyung Kim wrote:
> > > > Hi Arnaldo,
> > > >
> > > > On Tue, Oct 15, 2024 at 05:37:38PM -0300, Arnaldo Carvalho de Melo wrote:
> > > > > On Tue, Oct 15, 2024 at 04:58:56PM -0300, Arnaldo Carvalho de Melo wrote:
> > > > > > So I'm trying adding extra bounds checking, marking the index as
> > > > > > volatile, adding compiler barriers, etc, all the fun with the verifier,
> > > > > > but got distracted with other stuff, coming back to this now.
> > > > >
> > > > > > Ok, the following seems to do the trick:
> > > > >
> > > > > > [acme@dell-per740-01 perf-tools]$ git diff
> > > > > > diff --git a/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c b/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c
> > > > > > index 3b30aa74a3ae..ef87a04ff8d0 100644
> > > > > > --- a/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c
> > > > > > +++ b/tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c
> > > > > > @@ -486,6 +486,7 @@ static int augment_sys_enter(void *ctx, struct syscall_enter_args *args)
> > > > > > augmented = true;
> > > > > > } else if (size < 0 && size >= -6) { /* buffer */
> > > > > > index = -(size + 1);
> > > > > > + index &= 7; // To satisfy the bounds checking with the verifier in some kernels
> > > > > > aug_size = args->args[index];
> > > > > >
> > > > > > if (aug_size > TRACE_AUG_MAX_BUF)
> > > > > >
> > > > > > I'll now test it without Howard's patch to see if it fixes the RHEL8 +
> > > > > > clang 17 case.
> > > > >
> > > > > It works with this one-liner + the simplified patch from Howard and also
> > > > > on this other system (RHEL9), as well as with Fedora 40, it would be
> > > > > nice if someone could test with clang 16 and report back the version of
> > > > > the kernel tested as well as the distro name/release, that way I can try
> > > > > to get my hands on such as system and test there as well.
> > > > >
> > > > > Its all at:
> > > > >
> > > > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools.git tmp.perf-tools
> > > > >
> > > > > This is the current set of patches that when further tested will go to
> > > > > Linus for v6.12:
> > > > >
> > > > > ⬢[acme@toolbox perf-tools]$ git log --oneline torvalds/master..
> > > > > ff14baa7a290bf42 (HEAD -> perf-tools, x1/perf-tools, perf-tools/tmp.perf-tools) perf trace augmented_raw_syscalls: Add more checks to pass the verifier
> > > > > 46180bec048aad85 perf trace augmented_raw_syscalls: Add extra array index bounds checking to satisfy some BPF verifiers
> > > > > 45d1aadac64869a2 perf build: Change the clang check back to 12.0.1
> > > >
> > > > Wouldn't it be better to have this change after fixing the verifier
> > > > issues in the later commits?
> > >
> > > I'm still testing it, this is a one-liner, so I think that the order in
> > > which the patches are applied isn't important. Also Howard's patch (the
> > > simplified one) doesn't clash with it.
> >
> > I'm afraid if it'd break git bisect by allowing old clang versions
> > before the fix.
>
> I can reorder the patches if you think it is interesting, but from the
> extended set of tests I'm performing on different kernel and clang
> version and in x86_64 and arm 64-bit, 32-bit and various distros, I'm
> not sure bisection is an option for BPF programs at this stage 8-)
Maybe. But at least we can try our best. :)
>
> There, did it now it looks like this:
>
> ⬢ [acme@toolbox perf-tools]$ git log --oneline torvalds/master..
> 5d3a1b9ca3b1a059 (HEAD -> perf-tools) perf trace arm32: Fix iteration of syscall ids in syscalltbl->entries
> 34d2358a24fb5963 perf trace augmented_raw_syscalls: Add more checks to pass the verifier
> cdb84c31bd2813de perf trace augmented_raw_syscalls: Add extra array index bounds checking to satisfy some BPF verifiers
> e5c1811c590c4312 perf build: Change the clang check back to 12.0.1
> 39c6a356201ebbd7 perf trace: The return from 'write' isn't a pid
> ab8aaab874c4aa37 tools headers UAPI: Sync linux/const.h with the kernel headers
> ⬢ [acme@toolbox perf-tools]$
>
> Is that what you meant?
Nope, I'd like to have e5c1811c590c4312 after the verifier fixes:
34d2358a24fb5963 perf trace augmented_raw_syscalls: Add more checks to pass the verifier
cdb84c31bd2813de perf trace augmented_raw_syscalls: Add extra array index bounds checking to satisfy some BPF verifiers
Thanks,
Namhyung
next prev parent reply other threads:[~2024-10-22 23:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-11 2:14 [PATCH v2 0/2] perf trace: Fix support for the new BPF feature in clang 12 Howard Chu
2024-10-11 2:14 ` [PATCH v2 1/2] perf build: Change the clang check back to 12.0.1 Howard Chu
2024-10-11 2:14 ` [PATCH v2 2/2] perf trace: Rewrite BPF code to pass the verifier Howard Chu
2024-10-11 8:18 ` [PATCH v2 0/2] perf trace: Fix support for the new BPF feature in clang 12 James Clark
2024-10-15 18:32 ` Namhyung Kim
2024-10-15 19:35 ` Arnaldo Carvalho de Melo
2024-10-15 19:58 ` Arnaldo Carvalho de Melo
2024-10-15 20:37 ` Arnaldo Carvalho de Melo
2024-10-15 21:37 ` Song Liu
[not found] ` <CA+JHD905Xtbb2OYqm3mGbh3C1dKOd-avnC=01=uJfTVEnmA1zQ@mail.gmail.com>
2024-10-15 23:20 ` Song Liu
2024-10-16 2:06 ` Namhyung Kim
2024-10-16 14:22 ` Arnaldo Carvalho de Melo
2024-10-22 17:04 ` Namhyung Kim
2024-10-22 18:33 ` Arnaldo Carvalho de Melo
2024-10-22 23:52 ` Namhyung Kim [this message]
2024-10-23 14:39 ` Arnaldo Carvalho de Melo
2024-10-23 21:57 ` Namhyung Kim
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=Zxg6sCJAUDUsaVBM@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alan.maguire@oracle.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andrea.righi@linux.dev \
--cc=howardchu95@gmail.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=songliubraving@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 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.