Re: [PATCH bpf-next v2 1/6] bpf: Introduce 64-bit bitops kfuncs
From: Leon Hwang <hidden>
Date: 2026-02-20 15:34:41
Also in:
bpf, linux-arm-kernel, linux-kselftest, lkml
On 2026/2/20 01:50, Alexei Starovoitov wrote:
On Thu, Feb 19, 2026 at 6:30 AM Leon Hwang [off-list ref] wrote:quoted
+static bool bpf_kfunc_is_fastcall(struct bpf_verifier_env *env, u32 func_id, u32 flags) +{ + if (!(flags & KF_FASTCALL)) + return false; + + if (!env->prog->jit_requested) + return true; + + if (func_id == special_kfunc_list[KF_bpf_clz64]) + return bpf_jit_inlines_kfunc_call(bpf_clz64); + if (func_id == special_kfunc_list[KF_bpf_ctz64]) + return bpf_jit_inlines_kfunc_call(bpf_ctz64); + if (func_id == special_kfunc_list[KF_bpf_ffs64]) + return bpf_jit_inlines_kfunc_call(bpf_ffs64); + if (func_id == special_kfunc_list[KF_bpf_fls64]) + return bpf_jit_inlines_kfunc_call(bpf_fls64); + if (func_id == special_kfunc_list[KF_bpf_bitrev64]) + return bpf_jit_inlines_kfunc_call(bpf_bitrev64); + if (func_id == special_kfunc_list[KF_bpf_popcnt64]) + return bpf_jit_inlines_kfunc_call(bpf_popcnt64); + if (func_id == special_kfunc_list[KF_bpf_rol64]) + return bpf_jit_inlines_kfunc_call(bpf_rol64); + if (func_id == special_kfunc_list[KF_bpf_ror64]) + return bpf_jit_inlines_kfunc_call(bpf_ror64);This is too ugly. Find a way to do it differently.
Agreed. I'd like to introduce a new flag KF_JIT_MAY_INLINE to indicate the kfunc will be inlined by JIT backends if possible. As for those kfuncs w/ KF_FASTCALL w/o KF_JIT_MAY_INLINE, they are fastcall always. Thanks, Leon