On 2026/2/20 01:50, Alexei Starovoitov wrote:
> On Thu, Feb 19, 2026 at 6:30 AM Leon Hwang <[email protected]> wrote:
>>
>>
>> +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