Re: [PATCH sched_ext/for-7.4] tools/sched_ext: Skip scx_lib_init_probe() without CONFIG_FUNCTION_TRACER

[email protected]
Newsgroups dev.linux.lists.sched-ext
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The SCX_OPS_LOAD macro introduces a hard compile-time dependency on `scx_lib_init_probe` existing in the user's BPF skeleton, which will cause a C compiler error for schedulers that do not define this probe.
--

--- Patch [1]: [PATCH sched_ext/for-7.4] tools/sched_ext: Skip scx_lib_init_probe() without CONFIG_FUNCTION_TRACER ---
commit fc2df7f154a3b0d6909630ef49d7036552669ee3
Author: Cheng-Yang Chou <[email protected]>

tools/sched_ext: Skip scx_lib_init_probe() without CONFIG_FUNCTION_TRACER

This commit updates the SCX_OPS_LOAD macro to conditionally disable
autoload for the scx_lib_init_probe program if function tracing is
unavailable. It also modifies the post-load loop to skip programs that
have autoload disabled.

> diff --git a/tools/sched_ext/include/scx/compat.h b/tools/sched_ext/include/scx/compat.h
> --- a/tools/sched_ext/include/scx/compat.h
> +++ b/tools/sched_ext/include/scx/compat.h

[ ... ]

>  /* See SCX_OPS_OPEN() above for backward-compatibility handling. */
>  #define SCX_OPS_LOAD(__skel, __ops_name, __scx_name, __uei_name) ({		\
>  	struct bpf_program *__prog;						\
>  	UEI_SET_SIZE(__skel, __ops_name, __uei_name);				\
> +	if (!__COMPAT_function_tracer_available())				\
> +		bpf_program__set_autoload((__skel)->progs.scx_lib_init_probe, false); \

[Severity: Medium]
Will this cause a compile-time failure for out-of-tree schedulers that do
not include a scx_lib_init_probe program?

Skeletons generated by bpftool only contain fields for BPF programs that
are actually present in the BPF object. If a user's scheduler skeleton
lacks this specific probe, (__skel)->progs.scx_lib_init_probe won't exist
in the generated struct and will trigger a C compiler error when invoking
this macro.

Could this look up the program dynamically using
bpf_object__find_program_by_name() at runtime instead, to avoid breaking
compilation for schedulers without this probe?

>  	SCX_BUG_ON(__scx_name##__load((__skel)), "Failed to load skel");	\

[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.