Re: [PATCH v4 sched_ext/for-7.3 09/40] sched_ext: Make scx_bpf_kick_cid() return void

From: Andrea Righi

Date: Thu Jul 09 2026 - 17:05:40 EST


On Wed, Jul 08, 2026 at 11:23:58AM -1000, Tejun Heo wrote:
> scx_bpf_kick_cid() returned an error code, but the value conveys nothing
> actionable and no caller consumes it. The kick is asynchronous, so a
> successful return only means it was queued. An invalid @cid is already
> reported through scx_error() by scx_cid_to_cpu(), and a missing scheduler
> leaves nothing to kick.
>
> Make scx_bpf_kick_cid() return void to match scx_bpf_kick_cpu(). The
> cid-form kfuncs are not in practical use yet, so the ABI change is safe.
>
> Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>

Reviewed-by: Andrea Righi <arighi@xxxxxxxxxx>

Thanks,
-Andrea

> ---
> kernel/sched/ext/ext.c | 11 +++++------
> tools/sched_ext/include/scx/common.bpf.h | 2 +-
> 2 files changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/kernel/sched/ext/ext.c b/kernel/sched/ext/ext.c
> index bd3cb59b1dbf..187754d0c3c8 100644
> --- a/kernel/sched/ext/ext.c
> +++ b/kernel/sched/ext/ext.c
> @@ -8533,10 +8533,10 @@ __bpf_kfunc void scx_bpf_kick_cpu(s32 cpu, u64 flags, const struct bpf_prog_aux
> * @flags: %SCX_KICK_* flags
> * @aux: implicit BPF argument to access bpf_prog_aux hidden from BPF progs
> *
> - * cid-addressed equivalent of scx_bpf_kick_cpu(). Return 0 on success,
> - * -errno otherwise.
> + * cid-addressed equivalent of scx_bpf_kick_cpu(). An invalid @cid aborts the
> + * scheduler via scx_cid_to_cpu().
> */
> -__bpf_kfunc s32 scx_bpf_kick_cid(s32 cid, u64 flags, const struct bpf_prog_aux *aux)
> +__bpf_kfunc void scx_bpf_kick_cid(s32 cid, u64 flags, const struct bpf_prog_aux *aux)
> {
> struct scx_sched *sch;
> s32 cpu;
> @@ -8544,12 +8544,11 @@ __bpf_kfunc s32 scx_bpf_kick_cid(s32 cid, u64 flags, const struct bpf_prog_aux *
> guard(rcu)();
> sch = scx_prog_sched(aux);
> if (unlikely(!sch))
> - return -ENODEV;
> + return;
> cpu = scx_cid_to_cpu(sch, cid);
> if (cpu < 0)
> - return cpu;
> + return;
> scx_kick_cpu(sch, cpu, flags);
> - return 0;
> }
>
> /**
> diff --git a/tools/sched_ext/include/scx/common.bpf.h b/tools/sched_ext/include/scx/common.bpf.h
> index bd51986c4c42..e7b3ba491c5e 100644
> --- a/tools/sched_ext/include/scx/common.bpf.h
> +++ b/tools/sched_ext/include/scx/common.bpf.h
> @@ -104,7 +104,7 @@ void scx_bpf_events(struct scx_event_stats *events, size_t events__sz) __ksym __
> s32 scx_bpf_cpu_to_cid(s32 cpu) __ksym __weak;
> s32 scx_bpf_cid_to_cpu(s32 cid) __ksym __weak;
> void scx_bpf_cid_topo(s32 cid, struct scx_cid_topo *out) __ksym __weak;
> -s32 scx_bpf_kick_cid(s32 cid, u64 flags) __ksym __weak;
> +void scx_bpf_kick_cid(s32 cid, u64 flags) __ksym __weak;
> s32 scx_bpf_task_cid(const struct task_struct *p) __ksym __weak;
> s32 scx_bpf_this_cid(void) __ksym __weak;
> struct task_struct *scx_bpf_cid_curr(s32 cid) __ksym __weak;
> --
> 2.54.0
>