1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hmz007 4af246ac59
Rockchip Anroid12_SDK 20221117-rkr12 (8826f866)
2 years ago
..
benchs Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
gnu Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
map_tests Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
prog_tests Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
progs Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
verifier Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
.gitignore Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
Makefile Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
README.rst Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bench.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bench.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bpf_legacy.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bpf_rand.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bpf_rlimit.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bpf_tcp_helpers.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
bpf_util.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
cgroup_helpers.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
cgroup_helpers.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
config Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
flow_dissector_load.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
flow_dissector_load.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
get_cgroup_id_user.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
netcnt_common.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
network_helpers.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
network_helpers.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
settings Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tcp_client.py Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
tcp_server.py Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_bpftool.py Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_bpftool.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_bpftool_build.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_bpftool_metadata.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_btf.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_cgroup_storage.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_cpp.cpp Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_current_pid_tgid_new_ns.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_dev_cgroup.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_flow_dissector.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_flow_dissector.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_ftrace.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_iptunnel_common.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_kmod.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_lirc_mode2.sh Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
test_lirc_mode2_user.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_lpm_map.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_lru_map.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_lwt_ip_encap.sh Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
test_lwt_seg6local.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_maps.c Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
test_maps.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_netcnt.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_offload.py Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_progs.c Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
test_progs.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_select_reuseport_common.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_skb_cgroup_id.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_skb_cgroup_id_user.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_sock.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_sock_addr.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_sock_addr.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_socket_cookie.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_sockmap.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_stub.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_sysctl.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tag.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tc_edt.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tc_redirect.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tc_tunnel.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcp_check_syncookie.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcp_check_syncookie_user.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcp_hdr_options.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcpbpf.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcpbpf_user.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcpnotify.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tcpnotify_user.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_tunnel.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_verifier.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_verifier_log.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_xdp_meta.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_xdp_redirect.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_xdp_veth.sh Rockchip Anroid12_SDK 20221117-rkr12 (8826f866) 2 years ago
test_xdp_vlan.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_xdp_vlan_mode_generic.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_xdp_vlan_mode_native.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
test_xdping.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
testing_helpers.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
testing_helpers.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
trace_helpers.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
trace_helpers.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
urandom_read.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
with_addr.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
with_tunnels.sh Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
xdping.c Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago
xdping.h Rockchip Anroid12_SDK 20220721-rkr10 (e1522e56) 3 years ago

README.rst

==================
BPF Selftest Notes
==================
General instructions on running selftests can be found in
`Documentation/bpf/bpf_devel_QA.rst`_.

Additional information about selftest failures are
documented here.

profiler[23] test failures with clang/llvm <12.0.0
==================================================

With clang/llvm <12.0.0, the profiler[23] test may fail.
The symptom looks like

.. code-block:: c

  // r9 is a pointer to map_value
  // r7 is a scalar
  17:       bf 96 00 00 00 00 00 00 r6 = r9
  18:       0f 76 00 00 00 00 00 00 r6 += r7
  math between map_value pointer and register with unbounded min value is not allowed

  // the instructions below will not be seen in the verifier log
  19:       a5 07 01 00 01 01 00 00 if r7 < 257 goto +1
  20:       bf 96 00 00 00 00 00 00 r6 = r9
  // r6 is used here

The verifier will reject such code with above error.
At insn 18 the r7 is indeed unbounded. The later insn 19 checks the bounds and
the insn 20 undoes map_value addition. It is currently impossible for the
verifier to understand such speculative pointer arithmetic.
Hence
    https://reviews.llvm.org/D85570
addresses it on the compiler side. It was committed on llvm 12.

The corresponding C code
.. code-block:: c

  for (int i = 0; i < MAX_CGROUPS_PATH_DEPTH; i++) {
          filepart_length = bpf_probe_read_str(payload, ...);
          if (filepart_length <= MAX_PATH) {
                  barrier_var(filepart_length); // workaround
                  payload += filepart_length;
          }
  }

bpf_iter test failures with clang/llvm 10.0.0
=============================================

With clang/llvm 10.0.0, the following two bpf_iter tests failed:
  * ``bpf_iter/ipv6_route``
  * ``bpf_iter/netlink``

The symptom for ``bpf_iter/ipv6_route`` looks like

.. code-block:: c

  2: (79) r8 = *(u64 *)(r1 +8)
  ...
  14: (bf) r2 = r8
  15: (0f) r2 += r1
  ; BPF_SEQ_PRINTF(seq, "%pi6 %02x ", &rt->fib6_dst.addr, rt->fib6_dst.plen);
  16: (7b) *(u64 *)(r8 +64) = r2
  only read is supported

The symptom for ``bpf_iter/netlink`` looks like

.. code-block:: c

  ; struct netlink_sock *nlk = ctx->sk;
  2: (79) r7 = *(u64 *)(r1 +8)
  ...
  15: (bf) r2 = r7
  16: (0f) r2 += r1
  ; BPF_SEQ_PRINTF(seq, "%pK %-3d ", s, s->sk_protocol);
  17: (7b) *(u64 *)(r7 +0) = r2
  only read is supported

This is due to a llvm BPF backend bug. The fix 
  https://reviews.llvm.org/D78466
has been pushed to llvm 10.x release branch and will be
available in 10.0.1. The fix is available in llvm 11.0.0 trunk.

BPF CO-RE-based tests and Clang version
=======================================

A set of selftests use BPF target-specific built-ins, which might require
bleeding-edge Clang versions (Clang 12 nightly at this time).

Few sub-tests of core_reloc test suit (part of test_progs test runner) require
the following built-ins, listed with corresponding Clang diffs introducing
them to Clang/LLVM. These sub-tests are going to be skipped if Clang is too
old to support them, they shouldn't cause build failures or runtime test
failures:

  - __builtin_btf_type_id() ([0], [1], [2]);
  - __builtin_preserve_type_info(), __builtin_preserve_enum_value() ([3], [4]).

  [0] https://reviews.llvm.org/D74572
  [1] https://reviews.llvm.org/D74668
  [2] https://reviews.llvm.org/D85174
  [3] https://reviews.llvm.org/D83878
  [4] https://reviews.llvm.org/D83242