Hi David, The following pull-request contains BPF updates for your *net-next* tree. 12 days of development and 85 files changed, 1889 insertions(+), 1020 deletions(-) The main changes are: 1) auto-generation of bpf_helper_defs.h, from Andrii. 2) split of bpf_helpers.h into bpf_{helpers, helper_defs, endian, tracing}.h and move into libbpf, from Andrii. 3) Track contents of read-only maps as scalars in the verifier, from Andrii. 4) small x86 JIT optimization, from Daniel. 5) cross compilation support, from Ivan. 6) bpf flow_dissector enhancements, from Jakub and Stanislav. Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git Note there will be a conflict in tools/lib/bpf/Makefile that should be resolved the way Stephen did in: https://lore.kernel.org/lkml/20191014103232.09c09e53@xxxxxxxxxxxxxxxx/ Thanks a lot! ---------------------------------------------------------------- The following changes since commit 37a2fce0900119bd5e8b2989970578a34584da97: dt-bindings: sh_eth convert bindings to json-schema (2019-10-01 15:31:33 -0700) 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 b8fc345d6b5d661e1125bd6a0e30b6fabf1a076e: Merge branch 'selftests-bpf-Makefile-cleanup' (2019-10-12 16:15:15 -0700) ---------------------------------------------------------------- Alexei Starovoitov (6): Merge branch 'libbpf-api' Merge branch 'autogen-bpf-helpers' Merge branch 'enforce-global-flow-dissector' Merge branch 'btf2c-padding' Merge branch 'samples-cross-compile' Merge branch 'selftests-bpf-Makefile-cleanup' Andrii Nakryiko (29): libbpf: Bump current version to v0.0.6 libbpf: Fix BTF-defined map's __type macro handling of arrays libbpf: stop enforcing kern_version, populate it for users libbpf: add bpf_object__open_{file, mem} w/ extensible opts libbpf: fix bpf_object__name() to actually return object name selftests/bpf: switch tests to new bpf_object__open_{file, mem}() APIs uapi/bpf: fix helper docs scripts/bpf: teach bpf_helpers_doc.py to dump BPF helper definitions libbpf: auto-generate list of BPF helper definitions selftests/bpf: Fix dependency ordering for attach_probe test bpftool: Fix bpftool build by switching to bpf_object__open_file() selftests/bpf: Undo GCC-specific bpf_helpers.h changes selftests/bpf: samples/bpf: Split off legacy stuff from bpf_helpers.h selftests/bpf: Adjust CO-RE reloc tests for new bpf_core_read() macro selftests/bpf: Split off tracing-only helpers into bpf_tracing.h libbpf: Move bpf_{helpers, helper_defs, endian, tracing}.h into libbpf libbpf: Add BPF_CORE_READ/BPF_CORE_READ_INTO helpers selftests/bpf: Add BPF_CORE_READ and BPF_CORE_READ_STR_INTO macro tests libbpf: Fix struct end padding in btf_dump selftests/bpf: Convert test_btf_dump into test_progs test selftests/bpf: Fix btf_dump padding test case scripts/bpf: Fix xdp_md forward declaration typo bpf: Track contents of read-only maps as scalars selftests/bpf: Add read-only map values propagation tests bpf: Fix cast to pointer from integer of different size warning libbpf: Generate more efficient BPF_CORE_READ code libbpf: Handle invalid typedef emitted by old GCC selftests/bpf: Enforce libbpf build before BPF programs are built selftests/bpf: Remove obsolete pahole/BTF support detection Anton Ivanov (2): samples/bpf: Trivial - fix spelling mistake in usage xdp: Trivial, fix spelling in function description Daniel Borkmann (4): bpf, x86: Small optimization in comparing against imm0 bpf: Add loop test case with 32 bit reg comparison against 0 Merge branch 'bpf-libbpf-helpers' Merge branch 'bpf-romap-known-scalars' Daniel T. Lee (1): samples: bpf: Add max_pckt_size option at xdp_adjust_tail Eric Dumazet (1): bpf: Align struct bpf_prog_stats Ilya Maximets (1): libbpf: Fix passing uninitialized bytes to setsockopt Ivan Khoronzhuk (17): selftests/bpf: Add static to enable_all_controllers() selftests/bpf: Correct path to include msg + path samples/bpf: Fix HDR_PROBE "echo" samples/bpf: Fix cookie_uid_helper_example obj build samples/bpf: Use --target from cross-compile samples/bpf: Use own EXTRA_CFLAGS for clang commands samples/bpf: Use __LINUX_ARM_ARCH__ selector for arm samples/bpf: Drop unnecessarily inclusion for bpf_load samples/bpf: Add makefile.target for separate CC target build samples/bpf: Base target programs rules on Makefile.target samples/bpf: Use own flags but not HOSTCFLAGS samples/bpf: Use target CC environment for HDR_PROBE libbpf: Don't use cxx to test_libpf target libbpf: Add C/LDFLAGS to libbpf.so and test_libpf targets samples/bpf: Provide C/LDFLAGS to libbpf samples/bpf: Add sysroot support samples/bpf: Add preparation steps and sysroot info to readme Jakub Sitnicki (2): flow_dissector: Allow updating the flow dissector program atomically selftests/bpf: Check that flow dissector can be re-attached Stanislav Fomichev (2): bpf/flow_dissector: add mode to enforce global BPF flow dissector selftests/bpf: add test for BPF flow dissector in the root namespace Toke Høiland-Jørgensen (1): libbpf: Add cscope and tags targets to Makefile Documentation/bpf/prog_flow_dissector.rst | 3 + arch/x86/net/bpf_jit_comp.c | 10 + include/linux/bpf.h | 2 +- include/uapi/linux/bpf.h | 32 +- kernel/bpf/verifier.c | 57 ++- net/core/flow_dissector.c | 46 +- net/core/xdp.c | 2 +- samples/bpf/Makefile | 164 ++++--- samples/bpf/Makefile.target | 75 +++ samples/bpf/README.rst | 41 +- samples/bpf/hbm_kern.h | 27 +- samples/bpf/map_perf_test_kern.c | 24 +- samples/bpf/offwaketime_kern.c | 1 + samples/bpf/parse_ldabs.c | 1 + samples/bpf/sampleip_kern.c | 1 + samples/bpf/sockex1_kern.c | 1 + samples/bpf/sockex2_kern.c | 1 + samples/bpf/sockex3_kern.c | 1 + samples/bpf/spintest_kern.c | 1 + samples/bpf/tcbpf1_kern.c | 1 + samples/bpf/test_map_in_map_kern.c | 16 +- samples/bpf/test_overhead_kprobe_kern.c | 1 + samples/bpf/test_probe_write_user_kern.c | 1 + samples/bpf/trace_event_kern.c | 1 + samples/bpf/tracex1_kern.c | 1 + samples/bpf/tracex2_kern.c | 1 + samples/bpf/tracex3_kern.c | 1 + samples/bpf/tracex4_kern.c | 1 + samples/bpf/tracex5_kern.c | 1 + samples/bpf/xdp_adjust_tail_kern.c | 7 +- samples/bpf/xdp_adjust_tail_user.c | 29 +- samples/bpf/xdpsock_user.c | 2 +- scripts/bpf_helpers_doc.py | 155 +++++- tools/bpf/bpftool/main.c | 4 +- tools/bpf/bpftool/main.h | 2 +- tools/bpf/bpftool/prog.c | 22 +- tools/include/uapi/linux/bpf.h | 32 +- tools/lib/bpf/.gitignore | 4 + tools/lib/bpf/Makefile | 52 +- tools/lib/bpf/bpf_core_read.h | 167 +++++++ tools/{testing/selftests => lib}/bpf/bpf_endian.h | 0 tools/lib/bpf/bpf_helpers.h | 41 ++ tools/lib/bpf/bpf_tracing.h | 195 ++++++++ tools/lib/bpf/btf_dump.c | 19 +- tools/lib/bpf/libbpf.c | 183 ++++--- tools/lib/bpf/libbpf.h | 48 +- tools/lib/bpf/libbpf.map | 6 + tools/lib/bpf/libbpf_internal.h | 32 ++ tools/lib/bpf/{test_libbpf.cpp => test_libbpf.c} | 14 +- tools/lib/bpf/xsk.c | 1 + tools/testing/selftests/bpf/Makefile | 61 +-- tools/testing/selftests/bpf/bpf_helpers.h | 535 --------------------- tools/testing/selftests/bpf/bpf_legacy.h | 39 ++ tools/testing/selftests/bpf/cgroup_helpers.c | 4 +- .../selftests/bpf/prog_tests/attach_probe.c | 49 +- .../bpf/{test_btf_dump.c => prog_tests/btf_dump.c} | 88 ++-- .../testing/selftests/bpf/prog_tests/core_reloc.c | 8 +- .../bpf/prog_tests/flow_dissector_reattach.c | 127 +++++ .../testing/selftests/bpf/prog_tests/rdonly_maps.c | 99 ++++ .../selftests/bpf/prog_tests/reference_tracking.c | 16 +- .../bpf/progs/btf_dump_test_case_padding.c | 5 +- .../testing/selftests/bpf/progs/core_reloc_types.h | 9 + tools/testing/selftests/bpf/progs/loop1.c | 1 + tools/testing/selftests/bpf/progs/loop2.c | 1 + tools/testing/selftests/bpf/progs/loop3.c | 1 + tools/testing/selftests/bpf/progs/sockopt_sk.c | 13 +- tools/testing/selftests/bpf/progs/tcp_rtt.c | 13 +- .../selftests/bpf/progs/test_attach_probe.c | 1 - tools/testing/selftests/bpf/progs/test_btf_haskv.c | 1 + tools/testing/selftests/bpf/progs/test_btf_newkv.c | 1 + .../selftests/bpf/progs/test_core_reloc_arrays.c | 11 +- .../selftests/bpf/progs/test_core_reloc_flavors.c | 9 +- .../selftests/bpf/progs/test_core_reloc_ints.c | 19 +- .../selftests/bpf/progs/test_core_reloc_kernel.c | 61 ++- .../selftests/bpf/progs/test_core_reloc_misc.c | 9 +- .../selftests/bpf/progs/test_core_reloc_mods.c | 19 +- .../selftests/bpf/progs/test_core_reloc_nesting.c | 7 +- .../bpf/progs/test_core_reloc_primitives.c | 13 +- .../bpf/progs/test_core_reloc_ptr_as_arr.c | 5 +- .../selftests/bpf/progs/test_get_stack_rawtp.c | 4 +- .../testing/selftests/bpf/progs/test_perf_buffer.c | 1 - .../testing/selftests/bpf/progs/test_rdonly_maps.c | 83 ++++ .../selftests/bpf/progs/test_stacktrace_map.c | 1 - tools/testing/selftests/bpf/test_flow_dissector.sh | 48 +- tools/testing/selftests/bpf/verifier/loops1.c | 17 + 85 files changed, 1889 insertions(+), 1020 deletions(-) create mode 100644 samples/bpf/Makefile.target create mode 100644 tools/lib/bpf/bpf_core_read.h rename tools/{testing/selftests => lib}/bpf/bpf_endian.h (100%) create mode 100644 tools/lib/bpf/bpf_helpers.h create mode 100644 tools/lib/bpf/bpf_tracing.h rename tools/lib/bpf/{test_libbpf.cpp => test_libbpf.c} (61%) delete mode 100644 tools/testing/selftests/bpf/bpf_helpers.h create mode 100644 tools/testing/selftests/bpf/bpf_legacy.h rename tools/testing/selftests/bpf/{test_btf_dump.c => prog_tests/btf_dump.c} (51%) create mode 100644 tools/testing/selftests/bpf/prog_tests/flow_dissector_reattach.c create mode 100644 tools/testing/selftests/bpf/prog_tests/rdonly_maps.c create mode 100644 tools/testing/selftests/bpf/progs/test_rdonly_maps.c