Skip to content
Permalink
Lorenz-Bauer/u…
Switch branches/tags

Commits on Oct 11, 2021

  1. bpf, mips: Fix comment on tail call count limiting

    In emit_tail_call() of bpf_jit_comp32.c, "blez t2" (t2 <= 0) is
    not consistent with the comment "t2 < 0", update the comment to
    keep consistency.
    
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Link: https://lore.kernel.org/bpf/1633915150-13220-3-git-send-email-yangtiezhu@loongson.cn
    Tiezhu Yang authored and borkmann committed Oct 11, 2021
  2. bpf, mips: Clean up config options about JIT

    The config options MIPS_CBPF_JIT and MIPS_EBPF_JIT are useless, remove
    them in arch/mips/Kconfig, and then modify arch/mips/net/Makefile.
    
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
    Link: https://lore.kernel.org/bpf/1633915150-13220-2-git-send-email-yangtiezhu@loongson.cn
    Tiezhu Yang authored and borkmann committed Oct 11, 2021

Commits on Oct 9, 2021

  1. selftests/bpf: Skip verifier tests that fail to load with ENOTSUPP

    The verifier tests added in commit c48e51c ("bpf: selftests: Add
    selftests for module kfunc support") fail on s390, since the JIT does
    not support calling kernel functions. This is most likely an issue for
    all the other non-Intel arches, as well as on Intel with
    !CONFIG_DEBUG_INFO_BTF or !CONFIG_BPF_JIT.
    
    Trying to check for messages from all the possible add_kfunc_call()
    failure cases in test_verifier looks pointless, so do a much simpler
    thing instead: just like it's already done in do_prog_test_run(), skip
    the tests that fail to load with ENOTSUPP.
    
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Song Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/bpf/20211007173329.381754-1-iii@linux.ibm.com
    iii-i authored and anakryiko committed Oct 9, 2021

Commits on Oct 8, 2021

  1. Merge branch 'selftests/bpf: Add parallelism to test_progs'

    Yucong Sun says:
    
    ====================
    
    This patch series adds "-j" parelell execution to test_progs, with "--debug" to
    display server/worker communications. Also, some Tests that often fails in
    parallel are marked as serial test, and it will run in sequence after parallel
    execution is done.
    
    This patch series also adds a error summary after all tests execution finished.
    
    V6 -> V5:
      * adding error summary logic for non parallel mode too.
      * changed how serial tests are implemented, use main process instead of worker 0.
      * fixed a dozen broken test when running in parallel.
    
    V5 -> V4:
      * change to SOCK_SEQPACKET for close notification.
      * move all debug output to "--debug" mode
      * output log as test finish, and all error logs again after summary line.
      * variable naming / style changes
      * adds serial_test_name() to replace serial test lists.
    ====================
    
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    anakryiko committed Oct 8, 2021
  2. selfetest/bpf: Make some tests serial

    Change tests that often fails in parallel execution mode to serial.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-15-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  3. selftests/bpf: Fix pid check in fexit_sleep test

    bpf_get_current_pid_tgid() returns u64, whose upper 32 bits are the same
    as userspace getpid() return value.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-13-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  4. selftests/bpf: Adding pid filtering for atomics test

    This make atomics test able to run in parallel with other tests.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-11-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  5. selftests/bpf: Make cgroup_v1v2 use its own port

    This patch change cgroup_v1v2 use a different port, avoid conflict with
    other tests.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-8-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  6. selftests/bpf: Fix race condition in enable_stats

    In parallel execution mode, this test now need to use atomic operation
    to avoid race condition.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-7-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  7. selftests/bpf: Add per worker cgroup suffix

    This patch make each worker use a unique cgroup base directory, thus
    allowing tests that uses cgroups to run concurrently.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-5-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  8. selftests/bpf: Allow some tests to be executed in sequence

    This patch allows tests to define serial_test_name() instead of
    test_name(), and this will make test_progs execute those in sequence
    after all other tests finished executing concurrently.
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-3-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  9. selftests/bpf: Add parallelism to test_progs

    This patch adds "-j" mode to test_progs, executing tests in multiple
    process.  "-j" mode is optional, and works with all existing test
    selection mechanism, as well as "-v", "-l" etc.
    
    In "-j" mode, main process use UDS/SEQPACKET to communicate to each forked
    worker, commanding it to run tests and collect logs. After all tests are
    finished, a summary is printed. main process use multiple competing
    threads to dispatch work to worker, trying to keep them all busy.
    
    The test status will be printed as soon as it is finished, if there are
    error logs, it will be printed after the final summary line.
    
    By specifying "--debug", additional debug information on server/worker
    communication will be printed.
    
    Example output:
      > ./test_progs -n 15-20 -j
      [   12.801730] bpf_testmod: loading out-of-tree module taints kernel.
      Launching 8 workers.
      torvalds#20 btf_split:OK
      torvalds#16 btf_endian:OK
      torvalds#18 btf_module:OK
      torvalds#17 btf_map_in_map:OK
      torvalds#19 btf_skc_cls_ingress:OK
      torvalds#15 btf_dump:OK
      Summary: 6/20 PASSED, 0 SKIPPED, 0 FAILED
    
    Signed-off-by: Yucong Sun <sunyucong@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211006185619.364369-2-fallentree@fb.com
    thefallentree authored and anakryiko committed Oct 8, 2021
  10. Merge branch 'add support for writable bare tracepoint'

    Hou Tao says:
    
    ====================
    
    From: Hou Tao <houtao1@huawei.com>
    
    Hi,
    
    The patchset series supports writable context for bare tracepoint.
    
    The main idea comes from patchset "writable contexts for bpf raw
    tracepoints" [1], but it only supports normal tracepoint with
    associated trace event under tracefs. Now we have one use case
    in which we add bare tracepoint in VFS layer, and update
    file::f_mode for specific files. The reason using bare tracepoint
    is that it doesn't form a ABI and we can change it freely. So
    add support for it in BPF.
    
    Comments are always welcome.
    
    [1]: https://lore.kernel.org/lkml/20190426184951.21812-1-mmullins@fb.com
    
    Change log:
    v5:
     * rebased on bpf-next
     * patch 1: add Acked-by tag
     * patch 2: handle invalid section name, make prefixes array being const
    
    v4: https://www.spinics.net/lists/bpf/msg47021.html
     * rebased on bpf-next
     * update patch 2 to add support for writable raw tracepoint attachment
       in attach_raw_tp().
     * update patch 3 to add Acked-by tag
    
    v3: https://www.spinics.net/lists/bpf/msg46824.html
      * use raw_tp.w instead of raw_tp_writable as section
        name of writable tp
      * use ASSERT_XXX() instead of CHECK()
      * define a common macro for "/sys/kernel/bpf_testmod"
    
    v2: https://www.spinics.net/lists/bpf/msg46356.html
      * rebase on bpf-next tree
      * address comments from Yonghong Song
      * rename bpf_testmode_test_writable_ctx::ret as early_ret to reflect
        its purpose better.
    
    v1: https://www.spinics.net/lists/bpf/msg46221.html
    ====================
    
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    anakryiko committed Oct 8, 2021
  11. bpf/selftests: Add test for writable bare tracepoint

    Add a writable bare tracepoint in bpf_testmod module, and
    trigger its calling when reading /sys/kernel/bpf_testmod
    with a specific buffer length. The reading will return
    the value in writable context if the early return flag
    is enabled in writable context.
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211004094857.30868-4-hotforest@gmail.com
    Hou Tao authored and anakryiko committed Oct 8, 2021
  12. libbpf: Support detecting and attaching of writable tracepoint program

    Program on writable tracepoint is BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
    but its attachment is the same as BPF_PROG_TYPE_RAW_TRACEPOINT.
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211004094857.30868-3-hotforest@gmail.com
    Hou Tao authored and anakryiko committed Oct 8, 2021
  13. bpf: Support writable context for bare tracepoint

    Commit 9df1c28 ("bpf: add writable context for raw tracepoints")
    supports writable context for tracepoint, but it misses the support
    for bare tracepoint which has no associated trace event.
    
    Bare tracepoint is defined by DECLARE_TRACE(), so adding a corresponding
    DECLARE_TRACE_WRITABLE() macro to generate a definition in __bpf_raw_tp_map
    section for bare tracepoint in a similar way to DEFINE_TRACE_WRITABLE().
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211004094857.30868-2-hotforest@gmail.com
    Hou Tao authored and anakryiko committed Oct 8, 2021
  14. Merge branch 'install libbpf headers when using the library'

    Quentin Monnet says:
    
    ====================
    
    Libbpf is used at several locations in the repository. Most of the time,
    the tools relying on it build the library in its own directory, and include
    the headers from there. This works, but this is not the cleanest approach.
    It generates objects outside of the directory of the tool which is being
    built, and it also increases the risk that developers include a header file
    internal to libbpf, which is not supposed to be exposed to user
    applications.
    
    This set adjusts all involved Makefiles to make sure that libbpf is built
    locally (with respect to the tool's directory or provided build directory),
    and by ensuring that "make install_headers" is run from libbpf's Makefile
    to export user headers properly.
    
    This comes at a cost: given that the libbpf was so far mostly compiled in
    its own directory by the different components using it, compiling it once
    would be enough for all those components. With the new approach, each
    component compiles its own version. To mitigate this cost, efforts were
    made to reuse the compiled library when possible:
    
    - Make the bpftool version in samples/bpf reuse the library previously
      compiled for the selftests.
    - Make the bpftool version in BPF selftests reuse the library previously
      compiled for the selftests.
    - Similarly, make resolve_btfids in BPF selftests reuse the same compiled
      library.
    - Similarly, make runqslower in BPF selftests reuse the same compiled
      library; and make it rely on the bpftool version also compiled from the
      selftests (instead of compiling its own version).
    - runqslower, when compiled independently, needs its own version of
      bpftool: make them share the same compiled libbpf.
    
    As a result:
    
    - Compiling the samples/bpf should compile libbpf just once.
    - Compiling the BPF selftests should compile libbpf just once.
    - Compiling the kernel (with BTF support) should now lead to compiling
      libbpf twice: one for resolve_btfids, one for kernel/bpf/preload.
    - Compiling runqslower individually should compile libbpf just once. Same
      thing for bpftool, resolve_btfids, and kernel/bpf/preload/iterators.
    
    (Not accounting for the boostrap version of libbpf required by bpftool,
    which was already placed under a dedicated .../boostrap/libbpf/ directory,
    and for which the count remains unchanged.)
    
    A few commits in the series also contain drive-by clean-up changes for
    bpftool includes, samples/bpf/.gitignore, or test_bpftool_build.sh. Please
    refer to individual commit logs for details.
    
    v4:
      - Make the "libbpf_hdrs" dependency an order-only dependency in
        kernel/bpf/preload/Makefile, samples/bpf/Makefile, and
        tools/bpf/runqslower/Makefile. This is to avoid to unconditionally
        recompile the targets.
      - samples/bpf/.gitignore: prefix objects with a "/" to mark that we
        ignore them when at the root of the samples/bpf/ directory.
      - libbpf: add a commit to make "install_headers" depend on the header
        files, to avoid exporting again if the sources are older than the
        targets. This ensures that applications relying on those headers are
        not rebuilt unnecessarily.
      - bpftool: uncouple the copy of nlattr.h from libbpf target, to have it
        depend on the source header itself. By avoiding to reinstall this
        header every time, we avoid unnecessary builds of bpftool.
      - samples/bpf: Add a new commit to remove the FORCE dependency for
        libbpf, and replace it with a "$(wildcard ...)" on the .c/.h files in
        libbpf's directory. This is to avoid always recompiling libbpf/bpftool.
      - Adjust prefixes in commit subjects.
    
    v3:
      - Remove order-only dependencies on $(LIBBPF_INCLUDE) (or equivalent)
        directories, given that they are created by libbpf's Makefile.
      - Add libbpf as a dependency for bpftool/resolve_btfids/runqslower when
        they are supposed to reuse a libbpf compiled previously. This is to
        avoid having several libbpf versions being compiled simultaneously in
        the same directory with parallel builds. Even if this didn't show up
        during tests, let's remain on the safe side.
      - kernel/bpf/preload/Makefile: Rename libbpf-hdrs (dash) dependency as
        libbpf_hdrs.
      - samples/bpf/.gitignore: Add bpftool/
      - samples/bpf/Makefile: Change "/bin/rm -rf" to "$(RM) -r".
      - samples/bpf/Makefile: Add missing slashes for $(LIBBPF_OUTPUT) and
        $(LIBBPF_DESTDIR) when buildling bpftool
      - samples/bpf/Makefile: Add a dependency to libbpf's headers for
        $(TRACE_HELPERS).
      - bpftool's Makefile: Use $(LIBBPF) instead of equivalent (but longer)
        $(LIBBPF_OUTPUT)libbpf.a
      - BPF iterators' Makefile: build bpftool in .output/bpftool (instead of
        .output/), add and clean up variables.
      - runqslower's Makefile: Add an explicit dependency on libbpf's headers
        to several objects. The dependency is not required (libbpf should have
        been compiled and so the headers exported through other dependencies
        for those targets), but they better mark the logical dependency and
        should help if exporting the headers changed in the future.
      - New commit to add an "install-bin" target to bpftool, to avoid
        installing bash completion when buildling BPF iterators and selftests.
    
    v2: Declare an additional dependency on libbpf's headers for
        iterators/iterators.o in kernel/preload/Makefile to make sure that
        these headers are exported before we compile the object file (and not
        just before we link it).
    ====================
    
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    anakryiko committed Oct 8, 2021
  15. bpftool: Add install-bin target to install binary only

    With "make install", bpftool installs its binary and its bash completion
    file. Usually, this is what we want. But a few components in the kernel
    repository (namely, BPF iterators and selftests) also install bpftool
    locally before using it. In such a case, bash completion is not
    necessary and is just a useless build artifact.
    
    Let's add an "install-bin" target to bpftool, to offer a way to install
    the binary only.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-13-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  16. selftests/bpf: Better clean up for runqslower in test_bpftool_build.sh

    The script test_bpftool_build.sh attempts to build bpftool in the
    various supported ways, to make sure nothing breaks.
    
    One of those ways is to run "make tools/bpf" from the root of the kernel
    repository. This command builds bpftool, along with the other tools
    under tools/bpf, and runqslower in particular. After running the
    command and upon a successful bpftool build, the script attempts to
    cleanup the generated objects. However, after building with this target
    and in the case of runqslower, the files are not cleaned up as expected.
    
    This is because the "tools/bpf" target sets $(OUTPUT) to
    .../tools/bpf/runqslower/ when building the tool, causing the object
    files to be placed directly under the runqslower directory. But when
    running "cd tools/bpf; make clean", the value for $(OUTPUT) is set to
    ".output" (relative to the runqslower directory) by runqslower's
    Makefile, and this is where the Makefile looks for files to clean up.
    
    We cannot easily fix in the root Makefile (where "tools/bpf" is defined)
    or in tools/scripts/Makefile.include (setting $(OUTPUT)), where changing
    the way the output variables are passed would likely have consequences
    elsewhere. We could change runqslower's Makefile to build in the
    repository instead of in a dedicated ".output/", but doing so just to
    accommodate a test script doesn't sound great. Instead, let's just make
    sure that we clean up runqslower properly by adding the correct command
    to the script.
    
    This will attempt to clean runqslower twice: the first try with command
    "cd tools/bpf; make clean" will search for tools/bpf/runqslower/.output
    and fail to clean it (but will still clean the other tools, in
    particular bpftool), the second one (added in this commit) sets the
    $(OUTPUT) variable like for building with the "tool/bpf" target and
    should succeed.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-12-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  17. samples/bpf: Do not FORCE-recompile libbpf

    In samples/bpf/Makefile, libbpf has a FORCE dependency that force it to
    be rebuilt. I read this as a way to keep the library up-to-date, given
    that we do not have, in samples/bpf, a list of the source files for
    libbpf itself. However, a better approach would be to use the
    "$(wildcard ...)" function from make, and to have libbpf depend on all
    the .c and .h files in its directory. This is what samples/bpf/Makefile
    does for bpftool, and also what the BPF selftests' Makefile does for
    libbpf.
    
    Let's update the Makefile to avoid rebuilding libbpf all the time (and
    bpftool on top of it).
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-11-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  18. samples/bpf: Install libbpf headers when building

    API headers from libbpf should not be accessed directly from the source
    directory. Instead, they should be exported with "make install_headers".
    Make sure that samples/bpf/Makefile installs the headers properly when
    building.
    
    The object compiled from and exported by libbpf are now placed into a
    subdirectory of sample/bpf/ instead of remaining in tools/lib/bpf/. We
    attempt to remove this directory on "make clean". However, the "clean"
    target re-enters the samples/bpf/ directory from the root of the
    repository ("$(MAKE) -C ../../ M=$(CURDIR) clean"), in such a way that
    $(srctree) and $(src) are not defined, making it impossible to use
    $(LIBBPF_OUTPUT) and $(LIBBPF_DESTDIR) in the recipe. So we only attempt
    to clean $(CURDIR)/libbpf, which is the default value.
    
    Add a dependency on libbpf's headers for the $(TRACE_HELPERS).
    
    We also change the output directory for bpftool, to place the generated
    objects under samples/bpf/bpftool/ instead of building in bpftool's
    directory directly. Doing so, we make sure bpftool reuses the libbpf
    library previously compiled and installed.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-10-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  19. samples/bpf: Update .gitignore

    Update samples/bpf/.gitignore to ignore files generated when building
    the samples. Add:
    
      - vmlinux.h
      - the generated skeleton files (*.skel.h)
      - the samples/bpf/libbpf/ and .../bpftool/ directories, in preparation
        of a future commit which introduces a local output directory for
        building libbpf and bpftool.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-9-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  20. bpf: iterators: Install libbpf headers when building

    API headers from libbpf should not be accessed directly from the
    library's source directory. Instead, they should be exported with "make
    install_headers". Let's make sure that bpf/preload/iterators/Makefile
    installs the headers properly when building.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-8-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  21. bpf: preload: Install libbpf headers when building

    API headers from libbpf should not be accessed directly from the
    library's source directory. Instead, they should be exported with "make
    install_headers". Let's make sure that bpf/preload/Makefile installs the
    headers properly when building.
    
    Note that we declare an additional dependency for iterators/iterators.o:
    having $(LIBBPF_A) as a dependency to "$(obj)/bpf_preload_umd" is not
    sufficient, as it makes it required only at the linking step. But we
    need libbpf to be compiled, and in particular its headers to be
    exported, before we attempt to compile iterators.o. The issue would not
    occur before this commit, because libbpf's headers were not exported and
    were always available under tools/lib/bpf.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-7-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  22. tools/runqslower: Install libbpf headers when building

    API headers from libbpf should not be accessed directly from the
    library's source directory. Instead, they should be exported with "make
    install_headers". Let's make sure that runqslower installs the
    headers properly when building.
    
    We use a libbpf_hdrs target to mark the logical dependency on libbpf's
    headers export for a number of object files, even though the headers
    should have been exported at this time (since bpftool needs them, and is
    required to generate the skeleton or the vmlinux.h).
    
    When descending from a parent Makefile, the specific output directories
    for building the library and exporting the headers are configurable with
    BPFOBJ_OUTPUT and BPF_DESTDIR, respectively. This is in addition to
    OUTPUT, on top of which those variables are constructed by default.
    
    Also adjust the Makefile for the BPF selftests. We pass a number of
    variables to the "make" invocation, because we want to point runqslower
    to the (target) libbpf shared with other tools, instead of building its
    own version. In addition, runqslower relies on (target) bpftool, and we
    also want to pass the proper variables to its Makefile so that bpftool
    itself reuses the same libbpf.
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-6-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
  23. tools/resolve_btfids: Install libbpf headers when building

    API headers from libbpf should not be accessed directly from the
    library's source directory. Instead, they should be exported with "make
    install_headers". Let's make sure that resolve_btfids installs the
    headers properly when building.
    
    When descending from a parent Makefile, the specific output directories
    for building the library and exporting the headers are configurable with
    LIBBPF_OUT and LIBBPF_DESTDIR, respectively. This is in addition to
    OUTPUT, on top of which those variables are constructed by default.
    
    Also adjust the Makefile for the BPF selftests in order to point to the
    (target) libbpf shared with other tools, instead of building a version
    specific to resolve_btfids. Remove libbpf's order-only dependencies on
    the include directories (they are created by libbpf and don't need to
    exist beforehand).
    
    Signed-off-by: Quentin Monnet <quentin@isovalent.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20211007194438.34443-5-quentin@isovalent.com
    qmonnet authored and anakryiko committed Oct 8, 2021
Older