Re: [PATCH sched_ext/for-7.4] tools/sched_ext: Skip scx_lib_init_probe() without CONFIG_FUNCTION_TRACER
| 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