Loongarch JIT doesn't support bpf-to-bpf calls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I  use xdp-loader to load XDP program [0] that  tails call XDP
synproxy program that was modified from kernel source [1] on Loongarch
platform, I got message "JIT doesn't support bpf-to-bpf call near the
bottom of the output below:

[root@fedora xdp-tools]# ./xdp-loader/xdp-loader load  -vvv lo -m skb
-P 80 -p /sys/fs/bpf/xdp-synproxy-tailcall -n synproxy_tailcall
./xdp-synproxy-tailcall/xdp_synproxy_tailcall.bpf.o

Current rlimit 8388608 already >= minimum 1048576
Loading 1 files on interface 'lo'.
  libbpf: loading object from
./xdp-synproxy-tailcall/xdp_synproxy_tailcall.bpf.o
  libbpf: elf: section(2) .text, size 888, link 0, flags 6, type=1
  libbpf: sec '.text': found program 'tscookie_tcpopt_parse_batch' at
insn offset 0 (0 bytes), code size 111 insns (888 bytes)
  libbpf: elf: section(3) xdp, size 7312, link 0, flags 6, type=1
  libbpf: sec 'xdp': found program 'syncookie_xdp' at insn offset 0 (0
bytes), code size 890 insns (7120 bytes)
  libbpf: sec 'xdp': found program 'synproxy_tailcall' at insn offset
890 (7120 bytes), code size 24 insns (192 bytes)
  libbpf: elf: section(4) .relxdp, size 128, link 28, flags 40, type=9
  libbpf: elf: section(5) .maps, size 128, link 0, flags 3, type=1
  libbpf: elf: section(6) .rel.maps, size 16, link 28, flags 40, type=9
  libbpf: elf: section(7) license, size 4, link 0, flags 3, type=1
  libbpf: license of ./xdp-synproxy-tailcall/xdp_synproxy_tailcall.bpf.o is GPL
  libbpf: elf: section(8) .rodata, size 12, link 0, flags 2, type=1
  libbpf: elf: section(19) .BTF, size 9434, link 0, flags 0, type=1
  libbpf: elf: section(21) .BTF.ext, size 7628, link 0, flags 0, type=1
  libbpf: elf: section(28) .symtab, size 1656, link 1, flags 0, type=2
  libbpf: looking for externs among 69 symbols...
  libbpf: collected 2 externs total
  libbpf: extern (ksym) #0: symbol 63, name bpf_ct_release
  libbpf: extern (ksym) #1: symbol 62, name bpf_xdp_ct_lookup
  libbpf: map 'tail_call_tbl': at sec_idx 5, offset 0.
  libbpf: map 'tail_call_tbl': found type = 3.
  libbpf: map 'tail_call_tbl': found key_size = 4.
  libbpf: map 'tail_call_tbl': found value_size = 4.
  libbpf: map 'tail_call_tbl': found max_entries = 1.
  libbpf: map 'tail_call_tbl': found pinning = 1.
  libbpf: map 'values': at sec_idx 5, offset 48.
  libbpf: map 'values': found type = 2.
  libbpf: map 'values': found key [18], sz = 4.
  libbpf: map 'values': found value [21], sz = 8.
  libbpf: map 'values': found max_entries = 2.
  libbpf: map 'values': found pinning = 1.
  libbpf: map 'allowed_ports': at sec_idx 5, offset 88.
  libbpf: map 'allowed_ports': found type = 2.
  libbpf: map 'allowed_ports': found key [18], sz = 4.
  libbpf: map 'allowed_ports': found value [26], sz = 2.
  libbpf: map 'allowed_ports': found max_entries = 24.
  libbpf: map 'allowed_ports': found pinning = 1.
  libbpf: map 'xdp_synp.rodata' (global data): at sec_idx 8, offset 0, flags 80.
  libbpf: map 3 is "xdp_synp.rodata"
  libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
  libbpf: sec '.relxdp': relo #0: insn #115 against 'bpf_xdp_ct_lookup'
  libbpf: prog 'syncookie_xdp': found extern #1 'bpf_xdp_ct_lookup'
(sym 62) for insn #115
  libbpf: sec '.relxdp': relo #1: insn #119 against 'bpf_ct_release'
  libbpf: prog 'syncookie_xdp': found extern #0 'bpf_ct_release' (sym
63) for insn #119
  libbpf: sec '.relxdp': relo #2: insn #138 against 'allowed_ports'
  libbpf: prog 'syncookie_xdp': found map 2 (allowed_ports, sec 5, off
88) for insn #138
  libbpf: sec '.relxdp': relo #3: insn #386 against '.text'
  libbpf: sec '.relxdp': relo #4: insn #450 against 'values'
  libbpf: prog 'syncookie_xdp': found map 1 (values, sec 5, off 48)
for insn #450
  libbpf: sec '.relxdp': relo #5: insn #600 against 'values'
  libbpf: prog 'syncookie_xdp': found map 1 (values, sec 5, off 48)
for insn #600
  libbpf: sec '.relxdp': relo #6: insn #883 against 'values'
  libbpf: prog 'syncookie_xdp': found map 1 (values, sec 5, off 48)
for insn #883
  libbpf: sec '.relxdp': relo #7: insn #908 against 'tail_call_tbl'
  libbpf: prog 'synproxy_tailcall': found map 0 (tail_call_tbl, sec 5,
off 0) for insn #18
  libbpf: .maps relo #0: for 61 value 0 rel->r_offset 40 name 189
('syncookie_xdp')
  libbpf: .maps relo #0: map 'tail_call_tbl' slot [0] points to prog
'syncookie_xdp'
 libxdp: Found func synproxy_tailcall matching synproxy_tailcall
 libxdp: DATASEC '.xdp_run_config' not found.
XDP program 0: Run prio: 80. Chain call actions: XDP_PASS
 libxdp: Generating multi-prog dispatcher for 1 programs
 libxdp: Checking for kernel frags support
 libxdp: Loading XDP program 'xdp-dispatcher.o' from embedded object file
  libbpf: loading object 'xdp-dispatcher.o' from buffer
  libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
  libbpf: sec '.text': found program 'prog0' at insn offset 0 (0
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog1' at insn offset 6 (48
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog2' at insn offset 12 (96
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog3' at insn offset 18 (144
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog4' at insn offset 24 (192
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog5' at insn offset 30 (240
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog6' at insn offset 36 (288
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog7' at insn offset 42 (336
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog8' at insn offset 48 (384
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog9' at insn offset 54 (432
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'compat_test' at insn offset 60
(480 bytes), code size 6 insns (48 bytes)
  libbpf: elf: section(3) xdp, size 1160, link 0, flags 6, type=1
  libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0
(0 bytes), code size 143 insns (1144 bytes)
  libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 143 (1144
bytes), code size 2 insns (16 bytes)
  libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
  libbpf: elf: section(5) .rodata, size 124, link 0, flags 2, type=1
  libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
  libbpf: license of xdp-dispatcher.o is GPL
  libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
  libbpf: elf: skipping unrecognized data section(7) xdp_metadata
  libbpf: elf: section(18) .BTF, size 3248, link 0, flags 0, type=1
  libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
  libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
  libbpf: looking for externs among 42 symbols...
  libbpf: collected 0 externs total
  libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 80.
  libbpf: map 0 is "xdp_disp.rodata"
  libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
  libbpf: sec '.relxdp': relo #0: insn #1 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 1
  libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
  libbpf: sec '.relxdp': relo #2: insn #18 against 'prog1'
  libbpf: sec '.relxdp': relo #3: insn #19 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 19
  libbpf: sec '.relxdp': relo #4: insn #32 against 'prog2'
  libbpf: sec '.relxdp': relo #5: insn #33 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 33
  libbpf: sec '.relxdp': relo #6: insn #45 against 'prog3'
  libbpf: sec '.relxdp': relo #7: insn #46 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 46
  libbpf: sec '.relxdp': relo #8: insn #59 against 'prog4'
  libbpf: sec '.relxdp': relo #9: insn #60 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 60
  libbpf: sec '.relxdp': relo #10: insn #72 against 'prog5'
  libbpf: sec '.relxdp': relo #11: insn #73 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 73
  libbpf: sec '.relxdp': relo #12: insn #86 against 'prog6'
  libbpf: sec '.relxdp': relo #13: insn #87 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 87
  libbpf: sec '.relxdp': relo #14: insn #99 against 'prog7'
  libbpf: sec '.relxdp': relo #15: insn #100 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 100
  libbpf: sec '.relxdp': relo #16: insn #113 against 'prog8'
  libbpf: sec '.relxdp': relo #17: insn #114 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 114
  libbpf: sec '.relxdp': relo #18: insn #126 against 'prog9'
  libbpf: sec '.relxdp': relo #19: insn #127 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 127
  libbpf: sec '.relxdp': relo #20: insn #140 against 'compat_test'
 libxdp: DATASEC '.xdp_run_config' not found.
  libbpf: object 'xdp-dispatcher.': failed (-95) to create BPF token
from '/sys/fs/bpf', skipping optional step...
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
  libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 135 points to
subprog 'prog0' (now at 143 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
  libbpf: prog 'xdp_dispatcher': insn #18 relocated, imm 130 points to
subprog 'prog1' (now at 149 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
  libbpf: prog 'xdp_dispatcher': insn #32 relocated, imm 122 points to
subprog 'prog2' (now at 155 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
  libbpf: prog 'xdp_dispatcher': insn #45 relocated, imm 115 points to
subprog 'prog3' (now at 161 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
  libbpf: prog 'xdp_dispatcher': insn #59 relocated, imm 107 points to
subprog 'prog4' (now at 167 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
  libbpf: prog 'xdp_dispatcher': insn #72 relocated, imm 100 points to
subprog 'prog5' (now at 173 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
  libbpf: prog 'xdp_dispatcher': insn #86 relocated, imm 92 points to
subprog 'prog6' (now at 179 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
  libbpf: prog 'xdp_dispatcher': insn #99 relocated, imm 85 points to
subprog 'prog7' (now at 185 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
  libbpf: prog 'xdp_dispatcher': insn #113 relocated, imm 77 points to
subprog 'prog8' (now at 191 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
  libbpf: prog 'xdp_dispatcher': insn #126 relocated, imm 70 points to
subprog 'prog9' (now at 197 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
  libbpf: prog 'xdp_dispatcher': insn #140 relocated, imm 62 points to
subprog 'compat_test' (now at 203 offset)
  libbpf: map 'xdp_disp.rodata': created successfully, fd=3
 libxdp: Loaded XDP program xdp_pass, got fd 10
 libxdp: Duplicated fd 10 to 11 for prog xdp_pass
 libxdp: Kernel supports XDP programs with frags
 libxdp: Loading XDP program 'xdp-dispatcher.o' from embedded object file
  libbpf: loading object 'xdp-dispatcher.o' from buffer
  libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
  libbpf: sec '.text': found program 'prog0' at insn offset 0 (0
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog1' at insn offset 6 (48
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog2' at insn offset 12 (96
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog3' at insn offset 18 (144
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog4' at insn offset 24 (192
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog5' at insn offset 30 (240
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog6' at insn offset 36 (288
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog7' at insn offset 42 (336
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog8' at insn offset 48 (384
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog9' at insn offset 54 (432
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'compat_test' at insn offset 60
(480 bytes), code size 6 insns (48 bytes)
  libbpf: elf: section(3) xdp, size 1160, link 0, flags 6, type=1
  libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0
(0 bytes), code size 143 insns (1144 bytes)
  libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 143 (1144
bytes), code size 2 insns (16 bytes)
  libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
  libbpf: elf: section(5) .rodata, size 124, link 0, flags 2, type=1
  libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
  libbpf: license of xdp-dispatcher.o is GPL
  libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
  libbpf: elf: skipping unrecognized data section(7) xdp_metadata
  libbpf: elf: section(18) .BTF, size 3248, link 0, flags 0, type=1
  libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
  libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
  libbpf: looking for externs among 42 symbols...
  libbpf: collected 0 externs total
  libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 80.
  libbpf: map 0 is "xdp_disp.rodata"
  libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
  libbpf: sec '.relxdp': relo #0: insn #1 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 1
  libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
  libbpf: sec '.relxdp': relo #2: insn #18 against 'prog1'
  libbpf: sec '.relxdp': relo #3: insn #19 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 19
  libbpf: sec '.relxdp': relo #4: insn #32 against 'prog2'
  libbpf: sec '.relxdp': relo #5: insn #33 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 33
  libbpf: sec '.relxdp': relo #6: insn #45 against 'prog3'
  libbpf: sec '.relxdp': relo #7: insn #46 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 46
  libbpf: sec '.relxdp': relo #8: insn #59 against 'prog4'
  libbpf: sec '.relxdp': relo #9: insn #60 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 60
  libbpf: sec '.relxdp': relo #10: insn #72 against 'prog5'
  libbpf: sec '.relxdp': relo #11: insn #73 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 73
  libbpf: sec '.relxdp': relo #12: insn #86 against 'prog6'
  libbpf: sec '.relxdp': relo #13: insn #87 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 87
  libbpf: sec '.relxdp': relo #14: insn #99 against 'prog7'
  libbpf: sec '.relxdp': relo #15: insn #100 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 100
  libbpf: sec '.relxdp': relo #16: insn #113 against 'prog8'
  libbpf: sec '.relxdp': relo #17: insn #114 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 114
  libbpf: sec '.relxdp': relo #18: insn #126 against 'prog9'
  libbpf: sec '.relxdp': relo #19: insn #127 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 127
  libbpf: sec '.relxdp': relo #20: insn #140 against 'compat_test'
 libxdp: DATASEC '.xdp_run_config' not found.
 libxdp: At least one attached program doesn't support frags,
disabling it for the dispatcher
 libxdp: Loading multiprog dispatcher for 1 programs without frags support
  libbpf: object 'xdp-dispatcher.': failed (-95) to create BPF token
from '/sys/fs/bpf', skipping optional step...
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
  libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 135 points to
subprog 'prog0' (now at 143 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
  libbpf: prog 'xdp_dispatcher': insn #18 relocated, imm 130 points to
subprog 'prog1' (now at 149 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
  libbpf: prog 'xdp_dispatcher': insn #32 relocated, imm 122 points to
subprog 'prog2' (now at 155 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
  libbpf: prog 'xdp_dispatcher': insn #45 relocated, imm 115 points to
subprog 'prog3' (now at 161 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
  libbpf: prog 'xdp_dispatcher': insn #59 relocated, imm 107 points to
subprog 'prog4' (now at 167 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
  libbpf: prog 'xdp_dispatcher': insn #72 relocated, imm 100 points to
subprog 'prog5' (now at 173 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
  libbpf: prog 'xdp_dispatcher': insn #86 relocated, imm 92 points to
subprog 'prog6' (now at 179 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
  libbpf: prog 'xdp_dispatcher': insn #99 relocated, imm 85 points to
subprog 'prog7' (now at 185 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
  libbpf: prog 'xdp_dispatcher': insn #113 relocated, imm 77 points to
subprog 'prog8' (now at 191 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
  libbpf: prog 'xdp_dispatcher': insn #126 relocated, imm 70 points to
subprog 'prog9' (now at 197 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
  libbpf: prog 'xdp_dispatcher': insn #140 relocated, imm 62 points to
subprog 'compat_test' (now at 203 offset)
  libbpf: map 'xdp_disp.rodata': created successfully, fd=3
 libxdp: Loaded XDP program xdp_dispatcher, got fd 9
 libxdp: Duplicated fd 9 to 11 for prog xdp_dispatcher
 libxdp: Checking dispatcher compatibility
 libxdp: Loading XDP program 'xdp-dispatcher.o' from embedded object file
  libbpf: loading object 'xdp-dispatcher.o' from buffer
  libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
  libbpf: sec '.text': found program 'prog0' at insn offset 0 (0
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog1' at insn offset 6 (48
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog2' at insn offset 12 (96
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog3' at insn offset 18 (144
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog4' at insn offset 24 (192
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog5' at insn offset 30 (240
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog6' at insn offset 36 (288
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog7' at insn offset 42 (336
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog8' at insn offset 48 (384
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog9' at insn offset 54 (432
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'compat_test' at insn offset 60
(480 bytes), code size 6 insns (48 bytes)
  libbpf: elf: section(3) xdp, size 1160, link 0, flags 6, type=1
  libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0
(0 bytes), code size 143 insns (1144 bytes)
  libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 143 (1144
bytes), code size 2 insns (16 bytes)
  libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
  libbpf: elf: section(5) .rodata, size 124, link 0, flags 2, type=1
  libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
  libbpf: license of xdp-dispatcher.o is GPL
  libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
  libbpf: elf: skipping unrecognized data section(7) xdp_metadata
  libbpf: elf: section(18) .BTF, size 3248, link 0, flags 0, type=1
  libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
  libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
  libbpf: looking for externs among 42 symbols...
  libbpf: collected 0 externs total
  libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 80.
  libbpf: map 0 is "xdp_disp.rodata"
  libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
  libbpf: sec '.relxdp': relo #0: insn #1 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 1
  libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
  libbpf: sec '.relxdp': relo #2: insn #18 against 'prog1'
  libbpf: sec '.relxdp': relo #3: insn #19 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 19
  libbpf: sec '.relxdp': relo #4: insn #32 against 'prog2'
  libbpf: sec '.relxdp': relo #5: insn #33 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 33
  libbpf: sec '.relxdp': relo #6: insn #45 against 'prog3'
  libbpf: sec '.relxdp': relo #7: insn #46 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 46
  libbpf: sec '.relxdp': relo #8: insn #59 against 'prog4'
  libbpf: sec '.relxdp': relo #9: insn #60 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 60
  libbpf: sec '.relxdp': relo #10: insn #72 against 'prog5'
  libbpf: sec '.relxdp': relo #11: insn #73 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 73
  libbpf: sec '.relxdp': relo #12: insn #86 against 'prog6'
  libbpf: sec '.relxdp': relo #13: insn #87 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 87
  libbpf: sec '.relxdp': relo #14: insn #99 against 'prog7'
  libbpf: sec '.relxdp': relo #15: insn #100 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 100
  libbpf: sec '.relxdp': relo #16: insn #113 against 'prog8'
  libbpf: sec '.relxdp': relo #17: insn #114 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 114
  libbpf: sec '.relxdp': relo #18: insn #126 against 'prog9'
  libbpf: sec '.relxdp': relo #19: insn #127 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 127
  libbpf: sec '.relxdp': relo #20: insn #140 against 'compat_test'
 libxdp: DATASEC '.xdp_run_config' not found.
 libxdp: Loading XDP program 'xdp-dispatcher.o' from embedded object file
  libbpf: loading object 'xdp-dispatcher.o' from buffer
  libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
  libbpf: sec '.text': found program 'prog0' at insn offset 0 (0
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog1' at insn offset 6 (48
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog2' at insn offset 12 (96
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog3' at insn offset 18 (144
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog4' at insn offset 24 (192
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog5' at insn offset 30 (240
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog6' at insn offset 36 (288
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog7' at insn offset 42 (336
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog8' at insn offset 48 (384
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog9' at insn offset 54 (432
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'compat_test' at insn offset 60
(480 bytes), code size 6 insns (48 bytes)
  libbpf: elf: section(3) xdp, size 1160, link 0, flags 6, type=1
  libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0
(0 bytes), code size 143 insns (1144 bytes)
  libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 143 (1144
bytes), code size 2 insns (16 bytes)
  libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
  libbpf: elf: section(5) .rodata, size 124, link 0, flags 2, type=1
  libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
  libbpf: license of xdp-dispatcher.o is GPL
  libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
  libbpf: elf: skipping unrecognized data section(7) xdp_metadata
  libbpf: elf: section(18) .BTF, size 3248, link 0, flags 0, type=1
  libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
  libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
  libbpf: looking for externs among 42 symbols...
  libbpf: collected 0 externs total
  libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 80.
  libbpf: map 0 is "xdp_disp.rodata"
  libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
  libbpf: sec '.relxdp': relo #0: insn #1 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 1
  libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
  libbpf: sec '.relxdp': relo #2: insn #18 against 'prog1'
  libbpf: sec '.relxdp': relo #3: insn #19 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 19
  libbpf: sec '.relxdp': relo #4: insn #32 against 'prog2'
  libbpf: sec '.relxdp': relo #5: insn #33 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 33
  libbpf: sec '.relxdp': relo #6: insn #45 against 'prog3'
  libbpf: sec '.relxdp': relo #7: insn #46 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 46
  libbpf: sec '.relxdp': relo #8: insn #59 against 'prog4'
  libbpf: sec '.relxdp': relo #9: insn #60 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 60
  libbpf: sec '.relxdp': relo #10: insn #72 against 'prog5'
  libbpf: sec '.relxdp': relo #11: insn #73 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 73
  libbpf: sec '.relxdp': relo #12: insn #86 against 'prog6'
  libbpf: sec '.relxdp': relo #13: insn #87 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 87
  libbpf: sec '.relxdp': relo #14: insn #99 against 'prog7'
  libbpf: sec '.relxdp': relo #15: insn #100 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 100
  libbpf: sec '.relxdp': relo #16: insn #113 against 'prog8'
  libbpf: sec '.relxdp': relo #17: insn #114 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 114
  libbpf: sec '.relxdp': relo #18: insn #126 against 'prog9'
  libbpf: sec '.relxdp': relo #19: insn #127 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 127
  libbpf: sec '.relxdp': relo #20: insn #140 against 'compat_test'
 libxdp: DATASEC '.xdp_run_config' not found.
  libbpf: object 'xdp-dispatcher.': failed (-95) to create BPF token
from '/sys/fs/bpf', skipping optional step...
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
  libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 135 points to
subprog 'prog0' (now at 143 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
  libbpf: prog 'xdp_dispatcher': insn #18 relocated, imm 130 points to
subprog 'prog1' (now at 149 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
  libbpf: prog 'xdp_dispatcher': insn #32 relocated, imm 122 points to
subprog 'prog2' (now at 155 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
  libbpf: prog 'xdp_dispatcher': insn #45 relocated, imm 115 points to
subprog 'prog3' (now at 161 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
  libbpf: prog 'xdp_dispatcher': insn #59 relocated, imm 107 points to
subprog 'prog4' (now at 167 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
  libbpf: prog 'xdp_dispatcher': insn #72 relocated, imm 100 points to
subprog 'prog5' (now at 173 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
  libbpf: prog 'xdp_dispatcher': insn #86 relocated, imm 92 points to
subprog 'prog6' (now at 179 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
  libbpf: prog 'xdp_dispatcher': insn #99 relocated, imm 85 points to
subprog 'prog7' (now at 185 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
  libbpf: prog 'xdp_dispatcher': insn #113 relocated, imm 77 points to
subprog 'prog8' (now at 191 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
  libbpf: prog 'xdp_dispatcher': insn #126 relocated, imm 70 points to
subprog 'prog9' (now at 197 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
  libbpf: prog 'xdp_dispatcher': insn #140 relocated, imm 62 points to
subprog 'compat_test' (now at 203 offset)
  libbpf: map 'xdp_disp.rodata': created successfully, fd=12
 libxdp: Loaded XDP program xdp_pass, got fd 16
 libxdp: Duplicated fd 16 to 17 for prog xdp_pass
  libbpf: object 'xdp-dispatcher.': failed (-95) to create BPF token
from '/sys/fs/bpf', skipping optional step...
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
  libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 135 points to
subprog 'prog0' (now at 143 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
  libbpf: prog 'xdp_dispatcher': insn #18 relocated, imm 130 points to
subprog 'prog1' (now at 149 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
  libbpf: prog 'xdp_dispatcher': insn #32 relocated, imm 122 points to
subprog 'prog2' (now at 155 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
  libbpf: prog 'xdp_dispatcher': insn #45 relocated, imm 115 points to
subprog 'prog3' (now at 161 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
  libbpf: prog 'xdp_dispatcher': insn #59 relocated, imm 107 points to
subprog 'prog4' (now at 167 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
  libbpf: prog 'xdp_dispatcher': insn #72 relocated, imm 100 points to
subprog 'prog5' (now at 173 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
  libbpf: prog 'xdp_dispatcher': insn #86 relocated, imm 92 points to
subprog 'prog6' (now at 179 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
  libbpf: prog 'xdp_dispatcher': insn #99 relocated, imm 85 points to
subprog 'prog7' (now at 185 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
  libbpf: prog 'xdp_dispatcher': insn #113 relocated, imm 77 points to
subprog 'prog8' (now at 191 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
  libbpf: prog 'xdp_dispatcher': insn #126 relocated, imm 70 points to
subprog 'prog9' (now at 197 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
  libbpf: prog 'xdp_dispatcher': insn #140 relocated, imm 62 points to
subprog 'compat_test' (now at 203 offset)
  libbpf: map 'xdp_disp.rodata': created successfully, fd=13
 libxdp: Loaded XDP program xdp_pass, got fd 20
 libxdp: Duplicated fd 20 to 21 for prog xdp_pass
 libxdp: Failed to attach test program to dispatcher: Unknown error 524
 libxdp: Compatibility check for dispatcher program failed: Unknown error 524
 libxdp: Falling back to loading single prog without dispatcher
 libxdp: Checking for kernel frags support
 libxdp: Loading XDP program 'xdp-dispatcher.o' from embedded object file
  libbpf: loading object 'xdp-dispatcher.o' from buffer
  libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
  libbpf: sec '.text': found program 'prog0' at insn offset 0 (0
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog1' at insn offset 6 (48
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog2' at insn offset 12 (96
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog3' at insn offset 18 (144
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog4' at insn offset 24 (192
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog5' at insn offset 30 (240
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog6' at insn offset 36 (288
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog7' at insn offset 42 (336
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog8' at insn offset 48 (384
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'prog9' at insn offset 54 (432
bytes), code size 6 insns (48 bytes)
  libbpf: sec '.text': found program 'compat_test' at insn offset 60
(480 bytes), code size 6 insns (48 bytes)
  libbpf: elf: section(3) xdp, size 1160, link 0, flags 6, type=1
  libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0
(0 bytes), code size 143 insns (1144 bytes)
  libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 143 (1144
bytes), code size 2 insns (16 bytes)
  libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
  libbpf: elf: section(5) .rodata, size 124, link 0, flags 2, type=1
  libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
  libbpf: license of xdp-dispatcher.o is GPL
  libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
  libbpf: elf: skipping unrecognized data section(7) xdp_metadata
  libbpf: elf: section(18) .BTF, size 3248, link 0, flags 0, type=1
  libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
  libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
  libbpf: looking for externs among 42 symbols...
  libbpf: collected 0 externs total
  libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 80.
  libbpf: map 0 is "xdp_disp.rodata"
  libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
  libbpf: sec '.relxdp': relo #0: insn #1 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 1
  libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
  libbpf: sec '.relxdp': relo #2: insn #18 against 'prog1'
  libbpf: sec '.relxdp': relo #3: insn #19 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 19
  libbpf: sec '.relxdp': relo #4: insn #32 against 'prog2'
  libbpf: sec '.relxdp': relo #5: insn #33 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 33
  libbpf: sec '.relxdp': relo #6: insn #45 against 'prog3'
  libbpf: sec '.relxdp': relo #7: insn #46 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 46
  libbpf: sec '.relxdp': relo #8: insn #59 against 'prog4'
  libbpf: sec '.relxdp': relo #9: insn #60 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 60
  libbpf: sec '.relxdp': relo #10: insn #72 against 'prog5'
  libbpf: sec '.relxdp': relo #11: insn #73 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 73
  libbpf: sec '.relxdp': relo #12: insn #86 against 'prog6'
  libbpf: sec '.relxdp': relo #13: insn #87 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 87
  libbpf: sec '.relxdp': relo #14: insn #99 against 'prog7'
  libbpf: sec '.relxdp': relo #15: insn #100 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 100
  libbpf: sec '.relxdp': relo #16: insn #113 against 'prog8'
  libbpf: sec '.relxdp': relo #17: insn #114 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 114
  libbpf: sec '.relxdp': relo #18: insn #126 against 'prog9'
  libbpf: sec '.relxdp': relo #19: insn #127 against '.rodata'
  libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata,
sec 5, off 0) for insn 127
  libbpf: sec '.relxdp': relo #20: insn #140 against 'compat_test'
 libxdp: DATASEC '.xdp_run_config' not found.
  libbpf: object 'xdp-dispatcher.': failed (-95) to create BPF token
from '/sys/fs/bpf', skipping optional step...
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
  libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 135 points to
subprog 'prog0' (now at 143 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
  libbpf: prog 'xdp_dispatcher': insn #18 relocated, imm 130 points to
subprog 'prog1' (now at 149 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
  libbpf: prog 'xdp_dispatcher': insn #32 relocated, imm 122 points to
subprog 'prog2' (now at 155 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
  libbpf: prog 'xdp_dispatcher': insn #45 relocated, imm 115 points to
subprog 'prog3' (now at 161 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
  libbpf: prog 'xdp_dispatcher': insn #59 relocated, imm 107 points to
subprog 'prog4' (now at 167 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
  libbpf: prog 'xdp_dispatcher': insn #72 relocated, imm 100 points to
subprog 'prog5' (now at 173 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
  libbpf: prog 'xdp_dispatcher': insn #86 relocated, imm 92 points to
subprog 'prog6' (now at 179 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
  libbpf: prog 'xdp_dispatcher': insn #99 relocated, imm 85 points to
subprog 'prog7' (now at 185 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
  libbpf: prog 'xdp_dispatcher': insn #113 relocated, imm 77 points to
subprog 'prog8' (now at 191 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
  libbpf: prog 'xdp_dispatcher': insn #126 relocated, imm 70 points to
subprog 'prog9' (now at 197 offset)
  libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
  libbpf: prog 'xdp_dispatcher': insn #140 relocated, imm 62 points to
subprog 'compat_test' (now at 203 offset)
  libbpf: map 'xdp_disp.rodata': created successfully, fd=3
 libxdp: Loaded XDP program xdp_pass, got fd 10
 libxdp: Duplicated fd 10 to 11 for prog xdp_pass
 libxdp: Kernel supports XDP programs with frags
  libbpf: object 'xdp_synproxy_ta': failed (-95) to create BPF token
from '/sys/fs/bpf', skipping optional step...
  libbpf: loaded kernel BTF from '/sys/kernel/btf/vmlinux'
  libbpf: extern (func ksym) 'bpf_ct_release': resolved to nf_conntrack [154930]
  libbpf: extern (func ksym) 'bpf_xdp_ct_lookup': resolved to
nf_conntrack [154938]
  libbpf: sec 'xdp': found 2 CO-RE relocations
  libbpf: CO-RE relocating [38] struct nf_conn: found target candidate
[70052] struct nf_conn in [vmlinux]
  libbpf: CO-RE relocating [38] struct nf_conn: found target candidate
[70063] struct nf_conn___init in [vmlinux]
  libbpf: prog 'syncookie_xdp': relo #0: <byte_off> [38] struct
nf_conn.status (0:0 @ offset 0)
  libbpf: prog 'syncookie_xdp': relo #0: matching candidate #0
<byte_off> [70052] struct nf_conn.status (0:4 @ offset 128)
  libbpf: prog 'syncookie_xdp': relo #0: non-matching candidate #1
<byte_off> [70063] struct nf_conn___init (0 @ offset 0)
  libbpf: prog 'syncookie_xdp': relo #0: patched insn #117
(LDX/ST/STX) off 0 -> 128
  libbpf: CO-RE relocating [49] struct bpf_ct_opts___local: found
target candidate [154911] struct bpf_ct_opts in [nf_conntrack]
  libbpf: prog 'syncookie_xdp': relo #1: <byte_off> [49] struct
bpf_ct_opts___local.error (0:1 @ offset 4)
  libbpf: prog 'syncookie_xdp': relo #1: matching candidate #0
<byte_off> [154911] struct bpf_ct_opts.error (0:1 @ offset 4)
  libbpf: prog 'syncookie_xdp': relo #1: patched insn #182
(LDX/ST/STX) off 4 -> 4
  libbpf: prog 'syncookie_xdp': added 111 insns from sub-prog
'tscookie_tcpopt_parse_batch'
  libbpf: prog 'syncookie_xdp': insn #386 relocated, imm 503 points to
subprog 'tscookie_tcpopt_parse_batch' (now at 890 offset)
  libbpf: found no pinned map to reuse at
'/sys/fs/bpf/xdp-synproxy-tailcall/tail_call_tbl'
  libbpf: map 'tail_call_tbl': created successfully, fd=4
  libbpf: pinned map '/sys/fs/bpf/xdp-synproxy-tailcall/tail_call_tbl'
  libbpf: found no pinned map to reuse at
'/sys/fs/bpf/xdp-synproxy-tailcall/values'
  libbpf: map 'values': created successfully, fd=5
  libbpf: pinned map '/sys/fs/bpf/xdp-synproxy-tailcall/values'
  libbpf: found no pinned map to reuse at
'/sys/fs/bpf/xdp-synproxy-tailcall/allowed_ports'
  libbpf: map 'allowed_ports': created successfully, fd=6
  libbpf: pinned map '/sys/fs/bpf/xdp-synproxy-tailcall/allowed_ports'
  libbpf: map 'xdp_synp.rodata': created successfully, fd=7
  libbpf: prog 'syncookie_xdp': BPF program load failed: Invalid argument
  libbpf: prog 'syncookie_xdp': -- BEGIN PROG LOAD LOG --
JIT doesn't support bpf-to-bpf calls
calling kernel functions are not allowed in non-JITed programs
processed 19083 insns (limit 1000000) max_states_per_insn 15
total_states 525 peak_states 291 mark_read 35
-- END PROG LOAD LOG --
  libbpf: prog 'syncookie_xdp': failed to load: -22
  libbpf: unpinned map 'tail_call_tbl' from
'/sys/fs/bpf/xdp-synproxy-tailcall/tail_call_tbl'
  libbpf: unpinned map 'values' from '/sys/fs/bpf/xdp-synproxy-tailcall/values'
  libbpf: unpinned map 'allowed_ports' from
'/sys/fs/bpf/xdp-synproxy-tailcall/allowed_ports'
  libbpf: failed to load object
'./xdp-synproxy-tailcall/xdp_synproxy_tailcall.bpf.o'
Couldn't attach XDP program on iface 'lo': Invalid argument(-22)

How to reproduce:

git clone https://github.com/vincentmli/xdp-tools.git
cd xdp-tools; make
./xdp-loader/xdp-loader load  -vvv lo -m skb -P 80 -p
/sys/fs/bpf/xdp-synproxy-tailcall -n synproxy_tailcall
./xdp-synproxy-tailcall/xdp_synproxy_tailcall.bpf.o

I have another XDP program [2] also tail calls other XDP program, it
works fine https://github.com/vincentmli/xdp-tools/tree/master/xdp-tailcall

[root@fedora xdp-tools]# ./xdp-loader/xdp-loader load  -v lo -m skb -P
80 -p /sys/fs/bpf/xdp-tailcall -n xdp_tailcall
./xdp-tailcall/xdp_tailcall.bpf.o

Current rlimit 8388608 already >= minimum 1048576
Loading 1 files on interface 'lo'.
XDP program 0: Run prio: 80. Chain call actions: XDP_PASS
 libxdp: Compatibility check for dispatcher program failed: Unknown error 524
 libxdp: Falling back to loading single prog without dispatcher

[0] https://github.com/vincentmli/xdp-tools/tree/master/xdp-synproxy-tailcall
[1] https://elixir.bootlin.com/linux/v6.14-rc5/source/tools/testing/selftests/bpf/progs/xdp_synproxy_kern.c
[2] https://github.com/vincentmli/xdp-tools/tree/master/xdp-tailcall


Vincent




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux