Hi David, The following pull-request contains BPF updates for your *net-next* tree. We've added 27 non-merge commits during the last 4 day(s) which contain a total of 50 files changed, 2031 insertions(+), 548 deletions(-). The main changes are: 1) Optimize bpf_tail_call() from retpoline-ed indirect jump to direct jump, from Daniel. 2) Support global variables in libbpf, from Andrii. 3) Cleanup selftests with BPF_TRACE_x() macro, from Martin. 4) Fix devmap hash, from Toke. 5) Fix register bounds after 32-bit conditional jumps, from Yonghong. Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git There are 3 patch sets pending that we still consider for this merge window, so there could be one more PR shortly. Thanks a lot! Also thanks to reporters, reviewers and testers of commits in this pull-request: Alexei Starovoitov, Andrii Nakryiko, Björn Töpel, Jakub Kicinski, Jakub Sitnicki, John Fastabend, Naresh Kamboju, Tetsuo Handa ---------------------------------------------------------------- The following changes since commit c392bccf2c1075b5d2cc9022d0116a516acb721d: powerpc: Add const qual to local_read() parameter (2019-11-24 15:06:33 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git for you to fetch changes up to b553a6ec570044fc1ae300c6fb24f9ce204c5894: bpf: Simplify __bpf_arch_text_poke poke type handling (2019-11-24 17:12:11 -0800) ---------------------------------------------------------------- Alexei Starovoitov (4): Merge branch 'libbpf-global-vars' Merge branch 'jmp32-reg-bounds' selftests/bpf: Add BPF trampoline performance test Merge branch 'optimize-bpf_tail_call' Andrii Nakryiko (7): selftests/bpf: Ensure no DWARF relocations for BPF object files libbpf: Refactor relocation handling libbpf: Fix various errors and warning reported by checkpatch.pl libbpf: Support initialized global variables selftests/bpf: Integrate verbose verifier log into test_progs libbpf: Fix bpf_object name determination for bpf_object__open_file() selftests/bpf: Ensure core_reloc_kernel is reading test_progs's data only Daniel Borkmann (10): bpf, x86: Generalize and extend bpf_arch_text_poke for direct jumps bpf: Move bpf_free_used_maps into sleepable section bpf: Move owner type, jited info into array auxiliary data bpf: Add initial poke descriptor table for jit images bpf: Add poke dependency tracking for prog array maps bpf: Constant map key tracking for prog array pokes bpf, x86: Emit patchable direct jump as tail call bpf, testing: Add various tail call test cases bpf: Add bpf_jit_blinding_enabled for !CONFIG_BPF_JIT bpf: Simplify __bpf_arch_text_poke poke type handling Jakub Kicinski (1): selftests, bpftool: Skip the build test if not in tree Luc Van Oostenryck (1): xsk: Fix xsk_poll()'s return type Martin KaFai Lau (1): bpf: Introduce BPF_TRACE_x helper for the tracing tests Quentin Monnet (3): tools, bpftool: Fix warning on ignored return value for 'read' tools, bpf: Fix build for 'make -s tools/bpf O=<dir>' selftests, bpftool: Set EXIT trap after usage function Toke Høiland-Jørgensen (1): xdp: Fix cleanup on map free for devmap_hash map type Yonghong Song (2): bpf: Provide better register bounds after jmp32 instructions selftests/bpf: Add verifier tests for better jmp32 register bounds arch/x86/net/bpf_jit_comp.c | 229 +++++++--- include/linux/bpf.h | 60 ++- include/linux/bpf_verifier.h | 3 +- include/linux/filter.h | 15 + kernel/bpf/arraymap.c | 205 ++++++++- kernel/bpf/core.c | 73 ++- kernel/bpf/devmap.c | 74 ++-- kernel/bpf/map_in_map.c | 5 +- kernel/bpf/syscall.c | 56 +-- kernel/bpf/trampoline.c | 8 +- kernel/bpf/verifier.c | 139 +++++- net/xdp/xsk.c | 8 +- tools/bpf/Makefile | 6 + tools/bpf/bpftool/btf.c | 6 +- tools/lib/bpf/bpf_helpers.h | 13 - tools/lib/bpf/libbpf.c | 294 +++++++------ tools/testing/selftests/bpf/Makefile | 2 +- tools/testing/selftests/bpf/bpf_trace_helpers.h | 58 +++ .../selftests/bpf/prog_tests/bpf_verif_scale.c | 4 +- .../testing/selftests/bpf/prog_tests/core_reloc.c | 16 +- tools/testing/selftests/bpf/prog_tests/tailcalls.c | 487 +++++++++++++++++++++ .../selftests/bpf/prog_tests/test_overhead.c | 142 ++++++ tools/testing/selftests/bpf/progs/fentry_test.c | 72 +-- tools/testing/selftests/bpf/progs/fexit_bpf2bpf.c | 27 +- tools/testing/selftests/bpf/progs/fexit_test.c | 83 +--- tools/testing/selftests/bpf/progs/kfree_skb.c | 43 +- tools/testing/selftests/bpf/progs/tailcall1.c | 48 ++ tools/testing/selftests/bpf/progs/tailcall2.c | 59 +++ tools/testing/selftests/bpf/progs/tailcall3.c | 31 ++ tools/testing/selftests/bpf/progs/tailcall4.c | 33 ++ tools/testing/selftests/bpf/progs/tailcall5.c | 40 ++ .../selftests/bpf/progs/test_core_reloc_arrays.c | 4 +- .../bpf/progs/test_core_reloc_bitfields_direct.c | 4 +- .../bpf/progs/test_core_reloc_bitfields_probed.c | 4 +- .../bpf/progs/test_core_reloc_existence.c | 4 +- .../selftests/bpf/progs/test_core_reloc_flavors.c | 4 +- .../selftests/bpf/progs/test_core_reloc_ints.c | 4 +- .../selftests/bpf/progs/test_core_reloc_kernel.c | 8 +- .../selftests/bpf/progs/test_core_reloc_misc.c | 4 +- .../selftests/bpf/progs/test_core_reloc_mods.c | 4 +- .../selftests/bpf/progs/test_core_reloc_nesting.c | 4 +- .../bpf/progs/test_core_reloc_primitives.c | 4 +- .../bpf/progs/test_core_reloc_ptr_as_arr.c | 4 +- .../selftests/bpf/progs/test_core_reloc_size.c | 4 +- tools/testing/selftests/bpf/progs/test_overhead.c | 39 ++ tools/testing/selftests/bpf/test_bpftool_build.sh | 30 +- tools/testing/selftests/bpf/test_progs.c | 18 +- tools/testing/selftests/bpf/test_progs.h | 10 +- tools/testing/selftests/bpf/test_stub.c | 4 + tools/testing/selftests/bpf/verifier/jmp32.c | 83 ++++ 50 files changed, 2031 insertions(+), 548 deletions(-) create mode 100644 tools/testing/selftests/bpf/bpf_trace_helpers.h create mode 100644 tools/testing/selftests/bpf/prog_tests/tailcalls.c create mode 100644 tools/testing/selftests/bpf/prog_tests/test_overhead.c create mode 100644 tools/testing/selftests/bpf/progs/tailcall1.c create mode 100644 tools/testing/selftests/bpf/progs/tailcall2.c create mode 100644 tools/testing/selftests/bpf/progs/tailcall3.c create mode 100644 tools/testing/selftests/bpf/progs/tailcall4.c create mode 100644 tools/testing/selftests/bpf/progs/tailcall5.c create mode 100644 tools/testing/selftests/bpf/progs/test_overhead.c