Re: [PATCH 07/13] sched_ext: Make scx_exit() and scx_vexit() return bool

From: Andrea Righi

Date: Mon Nov 10 2025 - 03:28:49 EST


On Sun, Nov 09, 2025 at 08:31:06AM -1000, Tejun Heo wrote:
> Make scx_exit() and scx_vexit() return bool indicating whether the calling
> thread successfully claimed the exit. This will be used by the abort mechanism
> added in a later patch.
>
> Cc: Dan Schatzberg <schatzberg.dan@xxxxxxxxx>
> Cc: Emil Tsalapatis <etsal@xxxxxxxx>
> Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>

Reviewed-by: Andrea Righi <arighi@xxxxxxxxxx>

Thanks,
-Andrea

> ---
> kernel/sched/ext.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
> index afa89ca3659e..033c8b8e88e8 100644
> --- a/kernel/sched/ext.c
> +++ b/kernel/sched/ext.c
> @@ -177,18 +177,21 @@ MODULE_PARM_DESC(slice_bypass_us, "bypass slice in microseconds, applied on [un]
> static void process_ddsp_deferred_locals(struct rq *rq);
> static u32 reenq_local(struct rq *rq);
> static void scx_kick_cpu(struct scx_sched *sch, s32 cpu, u64 flags);
> -static void scx_vexit(struct scx_sched *sch, enum scx_exit_kind kind,
> +static bool scx_vexit(struct scx_sched *sch, enum scx_exit_kind kind,
> s64 exit_code, const char *fmt, va_list args);
>
> -static __printf(4, 5) void scx_exit(struct scx_sched *sch,
> +static __printf(4, 5) bool scx_exit(struct scx_sched *sch,
> enum scx_exit_kind kind, s64 exit_code,
> const char *fmt, ...)
> {
> va_list args;
> + bool ret;
>
> va_start(args, fmt);
> - scx_vexit(sch, kind, exit_code, fmt, args);
> + ret = scx_vexit(sch, kind, exit_code, fmt, args);
> va_end(args);
> +
> + return ret;
> }
>
> #define scx_error(sch, fmt, args...) scx_exit((sch), SCX_EXIT_ERROR, 0, fmt, ##args)
> @@ -4399,14 +4402,14 @@ static void scx_error_irq_workfn(struct irq_work *irq_work)
> kthread_queue_work(sch->helper, &sch->disable_work);
> }
>
> -static void scx_vexit(struct scx_sched *sch,
> +static bool scx_vexit(struct scx_sched *sch,
> enum scx_exit_kind kind, s64 exit_code,
> const char *fmt, va_list args)
> {
> struct scx_exit_info *ei = sch->exit_info;
>
> if (!scx_claim_exit(sch, kind))
> - return;
> + return false;
>
> ei->exit_code = exit_code;
> #ifdef CONFIG_STACKTRACE
> @@ -4423,6 +4426,7 @@ static void scx_vexit(struct scx_sched *sch,
> ei->reason = scx_exit_reason(ei->kind);
>
> irq_work_queue(&sch->error_irq_work);
> + return true;
> }
>
> static int alloc_kick_syncs(void)
> --
> 2.51.1
>