On Thu, Oct 01, 2026 at 05:35 PM Qiliang Yuan <[email protected]> wrote: > The other passes still use bpf_patch_insn_data() and can move over to > the list one at a time in follow-up series.
That's not going to fly. After this series there are two implementations of the same thing. patch_list_adj_aux() is a copy of adjust_insn_aux_data(). patch_list_adj_insn() redoes bpf_adj_branches(). The tail of bpf_patch_list_commit() redoes adjust_subprog_starts(), bpf_adj_linfo(), adjust_insn_arrays(), bpf_adjust_func_ptrs() and adjust_poke_descs(). __bpf_patch_insn_data() and these helpers were changed four times in September. Every such change would have to be done twice. Jiong's RFC converted all passes and deleted the old code in the last patch: https://lore.kernel.org/bpf/[email protected]/ Pls do the same in one series. One-off patches can be add + commit. > base patched > pyperf180 0.575 s 0.458 s -20.4% > pyperf600 1.491 s 1.041 s -30.2% That's veristat on x86. test_progs loads pyperf with BPF_F_TEST_RND_HI32, and s390, riscv, powerpc need zext. bpf_opt_subreg_zext_lo32_rnd_hi32() does more patches than misc_fixups there, I think, and it has one call site. > On a side note, the largest part of the time to load pyperf180 is the > arg tracking analysis: analyze_subprog() takes about half of it on base, > __arg_track_join() alone about 30%. That's unexpected. Pls share the perf report. pw-bot: cr

