lkml.org 
[lkml]   [2021]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: Building perf with BUILD_BPF_SKEL=1 by default
    Em Fri, Dec 03, 2021 at 07:32:34PM +0000, Song Liu escreveu:
    >
    >
    > > On Dec 3, 2021, at 5:10 AM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
    > >
    > > Hi Song,
    > >
    > > So I'm changing all my containers to build with BUILD_BPF_SKEL=1
    > > to then make this the default, so far older containers fail either
    > > because the clang available is too old, so I've added a NO_BUILD_BPF_SKEL=1
    > > env var to disable that in those containers and then there is this other
    > > case where clang is recent enough but:
    > >
    > > util/bpf_skel/bperf_leader.bpf.c:13:20: error: use of undeclared identifier 'BPF_F_PRESERVE_ELEMS'
    > > __uint(map_flags, BPF_F_PRESERVE_ELEMS);
    > >
    > > Because the system's /usr/include/linux/bpf.h doesn't have that
    > > BPF_F_PRESERVE_ELEMS enum entry.
    > >
    > > These are enums to make them available via BTF, but then I can't use
    > > the:
    > >
    > > #ifdef BPF_F_PRESERVE_ELEMS
    > > #define BPF_F_PRESERVE_ELEMS (1U << 11)
    > > #endif
    > >
    > > approach.
    > >
    > > But then we _have_ it in the tools/include/uapi/linux/bpf.h we ship:
    > >
    > > $ grep BPF_F_PRESERVE_ELEMS tools/include/uapi/linux/bpf.h
    > > BPF_F_PRESERVE_ELEMS = (1U << 11),
    > > $
    > >
    > > so we need to switch to using it somehow, this way we can build in more
    > > systems and make bperf and other BPF enabled features.
    > >
    > > From a quick look I couldn't find where to add
    > > $(sourcedir)/tools/include/uapi/ to the include path used to build
    > > util/bpf_skel/bperf_leader.bpf.c, should be easy, can you take a look?
    > >
    > > Thanks,
    > >
    > > - Arnaldo
    >
    > I think the following should fix it

    I'm trying this now and tentatively sticking a Signed-off-by: you to it,
    ok?

    - Arnaldo

    > Thanks,
    > Song
    >
    >
    > diff --git i/tools/perf/util/bpf_skel/bperf_follower.bpf.c w/tools/perf/util/bpf_skel/bperf_follower.bpf.c
    > index b8fa3cb2da230..4a6acfde14937 100644
    > --- i/tools/perf/util/bpf_skel/bperf_follower.bpf.c
    > +++ w/tools/perf/util/bpf_skel/bperf_follower.bpf.c
    > @@ -1,7 +1,6 @@
    > // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
    > // Copyright (c) 2021 Facebook
    > -#include <linux/bpf.h>
    > -#include <linux/perf_event.h>
    > +#include "vmlinux.h"
    > #include <bpf/bpf_helpers.h>
    > #include <bpf/bpf_tracing.h>
    > #include "bperf.h"
    > diff --git i/tools/perf/util/bpf_skel/bperf_leader.bpf.c w/tools/perf/util/bpf_skel/bperf_leader.bpf.c
    > index 4f70d1459e86c..40d962b058634 100644
    > --- i/tools/perf/util/bpf_skel/bperf_leader.bpf.c
    > +++ w/tools/perf/util/bpf_skel/bperf_leader.bpf.c
    > @@ -1,7 +1,6 @@
    > // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
    > // Copyright (c) 2021 Facebook
    > -#include <linux/bpf.h>
    > -#include <linux/perf_event.h>
    > +#include "vmlinux.h"
    > #include <bpf/bpf_helpers.h>
    > #include <bpf/bpf_tracing.h>
    > #include "bperf.h"
    > diff --git i/tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c w/tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
    > index ab12b4c4ece21..97037d3b3d9fa 100644
    > --- i/tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
    > +++ w/tools/perf/util/bpf_skel/bpf_prog_profiler.bpf.c
    > @@ -1,6 +1,6 @@
    > // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
    > // Copyright (c) 2020 Facebook
    > -#include <linux/bpf.h>
    > +#include "vmlinux.h"
    > #include <bpf/bpf_helpers.h>
    > #include <bpf/bpf_tracing.h>
    >

    --

    - Arnaldo

    \
     
     \ /
      Last update: 2021-12-05 14:07    [W:7.536 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site