The goal of this patch-set is to reflect attribute bpf_fastcall for supported helpers and kfuncs in generated header files. For helpers this requires a tweak for scripts/bpf_doc.py and an update to uapi/linux/bpf.h doc-comment. For kfuncs this requires: - introduction of a new KF_FASTCALL flag; - modification to pahole to read kfunc flags and generate DECL_TAG "bpf_fastcall" for marked kfuncs; - modification to bpftool to scan for DECL_TAG "bpf_fastcall" presence. In both cases the following helper macro is defined in the generated header: #ifndef __bpf_fastcall #if __has_attribute(bpf_fastcall) #define __bpf_fastcall __attribute__((bpf_fastcall)) #else #define __bpf_fastcall #endif #endif And is used to mark appropriate function prototypes. More information about bpf_fastcall attribute could be found in [1] and [2]. Modifications to pahole are submitted separately. [1] LLVM source tree commit: 64e464349bfc ("[BPF] introduce __attribute__((bpf_fastcall))") [2] Linux kernel tree commit (note: feature was renamed from no_caller_saved_registers to bpf_fastcall after this commit): 52839f31cece ("Merge branch 'no_caller_saved_registers-attribute-for-helper-calls'") Eduard Zingerman (4): bpf: allow specifying bpf_fastcall attribute for BPF helpers bpf: __bpf_fastcall for bpf_get_smp_processor_id in uapi bpf: use KF_FASTCALL to mark kfuncs supporting fastcall contract bpftool: __bpf_fastcall for kfuncs marked with special decl_tag include/linux/btf.h | 1 + include/uapi/linux/bpf.h | 2 + kernel/bpf/helpers.c | 4 +- kernel/bpf/verifier.c | 5 +- scripts/bpf_doc.py | 50 ++++++++++++++++- tools/bpf/bpftool/btf.c | 98 ++++++++++++++++++++++++++++++---- tools/include/uapi/linux/bpf.h | 2 + 7 files changed, 144 insertions(+), 18 deletions(-) -- 2.46.0