<div dir="ltr">Hi Stephen,<div><br></div><div>I had added some logs in the BPF verifier of Kernel code, to print the number of instructions processed and error-code returned as follows:</div><div>============================</div><div>logs # dmesg |tail -n 20<br>[   76.318101] #### do_check: instructions Processed 999989 insn<br>[   76.318102] #### do_check: instructions Processed 999990 insn<br>[   76.318103] #### do_check: instructions Processed 999991 insn<br>[   76.318104] #### do_check: instructions Processed 999992 insn<br>[   76.318105] #### do_check: instructions Processed 999993 insn<br>[   76.318106] #### do_check: instructions Processed 999994 insn<br>[   76.318107] #### do_check: instructions Processed 999995 insn<br>[   76.318108] #### do_check: instructions Processed 999996 insn<br>[   76.318109] #### do_check: instructions Processed 999997 insn<br>[   76.318110] #### do_check: instructions Processed 999998 insn<br>[   76.318111] #### do_check: instructions Processed 999999 insn<br>[   76.318112] #### do_check: instructions Processed 1000000 insn<br>[   76.318113] BPF program is too large. Processed 1000001 insn<br>[   76.318209] ########## bpf_check:  do_check_main done..: ret: -7 <br>[   76.318210] ########## bpf_check:  bpf_prog_offload_finalize done..: ret: -7 <br>[   76.318212] ########## bpf_check:  check_max_stack_depth done..: ret: -7 <br>[   76.318212] ########## bpf_check:  fixup_call_args done..: ret: -7 <br>[   76.318224] ########## bpf_check:  end..: ret: -7 <br>[   76.318224] ##########  BPF  bpf_check return err: -7..:<br></div><div>=========================</div><div><br></div><div>Only these logs which I add in the Kernel-code were printed and do not see any other Kernel-logs.</div><div><br></div><div>Thanks,</div><div>Madhuker.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 15, 2023 at 8:49 PM Stephen Hemminger <<a href="mailto:stephen@networkplumber.org">stephen@networkplumber.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, 15 Nov 2023 15:38:55 +0530<br>
madhukar mythri <<a href="mailto:madhukar.mythri@gmail.com" target="_blank">madhukar.mythri@gmail.com</a>> wrote:<br>
<br>
> Hi all,<br>
> <br>
> On the RHEL9.2 with DPDK 22.11.1 version, DPDK primary application failed<br>
> to add RSS flow on TAP sub-device, when loading the TAP BPF byte-code<br>
> instructions.<br>
> <br>
> This "struct bpf_insn l3_l4_hash_insns[]" array(from file:<br>
> drivers/net/tap/tap_bpf_insns.h) is in eBPF bytecode instructions format,<br>
> this eBPF failed to load on TAP PMD with the following error:<br>
> <br>
> =====================<br>
> rss_add_actions(): Failed to load BPF section 'l3_l4' (7): Argument list<br>
> too long.<br>
> net_failsafe: Failed to create a flow on sub_device 1."<br>
> =====================<br>
> On Kernel-version:  5.15.0 #9 SMP PREEMPT<br>
> Arch: x86_64 GNU/Linux<br>
> <br>
> When added some debug logs on Kernel BPF verifier code, we could see that<br>
> instruction processed were reached to 1 Million.<br>
> But, the Byte code has only 1698 instructions only. Why the Kernel BPF<br>
> verifier is processing beyond 1,698 instructions ?<br>
> <br>
> The same byte-code(with DPDK-22.11.1) worked well with RHEL8.x and not<br>
> working in RHEL-9.x version.<br>
> <br>
> Does anybody faced such issues ?<br>
> Please let me know how to debug such issues on Byte-code.<br>
> <br>
> Thanks,<br>
> Madhukar.<br>
<br>
Is there anything in the kernel log?<br>
<br>
<br>
</blockquote></div>