Hi, This is the first attempt to solve the problems outlined in [1, 2, 3]. The main problem is that kfuncs in modules do not fit into bpf_insn.imm on s390x; the secondary problem is that there is a conflict between "abstract" XDP metadata function BTF ids and their "concrete" addresses. The proposed solution is to keep fkunc BTF ids in bpf_insn.imm, and put the addresses into bpf_kfunc_desc, which does not have size restrictions. Jiri and I discussed putting them into bpf_insn_aux_data, but at the very beginning of the implementation it became clear that this struct is freed at the end of verification and is not available during JITing. I regtested this only on s390x, where it does not regress anything. If this approach is fine (especially w.r.t. dev-bound kfuncs), I can check the other arches. [1] https://lore.kernel.org/bpf/Y9%2FyrKZkBK6yzXp+@krava/ [2] https://lore.kernel.org/bpf/20230128000650.1516334-1-iii@xxxxxxxxxxxxx/ [3] https://lore.kernel.org/bpf/20230128000650.1516334-32-iii@xxxxxxxxxxxxx/ Best regards, Ilya Ilya Leoshkevich (1): bpf: Support 64-bit pointers to kfuncs include/linux/bpf.h | 2 ++ kernel/bpf/core.c | 23 ++++++++++--- kernel/bpf/verifier.c | 79 +++++++++++++------------------------------ 3 files changed, 45 insertions(+), 59 deletions(-) -- 2.39.1