Re: [patch 2/2] sched/ext: Remove sched_fork() hack
From: Rasmus Villemoes
Date: Mon Oct 28 2024 - 08:30:29 EST
On Mon, Oct 28 2024, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
> Instead of solving the underlying problem of the double invocation of
> __sched_fork() for idle tasks, sched-ext decided to hack around the issue
> by partially clearing out the entity struct to preserve the already
> enqueued node. A provided analysis and solution has been ignored for four
> months.
>
> Now that someone else has taken care of cleaning it up, remove the
> disgusting hack and clear out the full structure.
>
> Fixes: f0e1a0643a59 ("sched_ext: Implement BPF extensible scheduler class")
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Tejun Heo <tj@xxxxxxxxxx>
> Cc: David Vernet <void@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Juri Lelli <juri.lelli@xxxxxxxxxx>
> Cc: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
> Cc: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
> Cc: Ben Segall <bsegall@xxxxxxxxxx>
> Cc: Mel Gorman <mgorman@xxxxxxx>
> Cc: Valentin Schneider <vschneid@xxxxxxxxxx>
> ---
> kernel/sched/ext.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> --- a/kernel/sched/ext.c
> +++ b/kernel/sched/ext.c
> @@ -3548,12 +3548,7 @@ static void scx_ops_exit_task(struct tas
>
> void init_scx_entity(struct sched_ext_entity *scx)
> {
> - /*
> - * init_idle() calls this function again after fork sequence is
> - * complete. Don't touch ->tasks_node as it's already linked.
> - */
> - memset(scx, 0, offsetof(struct sched_ext_entity, tasks_node));
> -
> + memset(scx, 0, sizeof(*scx));
> INIT_LIST_HEAD(&scx->dsq_list.node);
> RB_CLEAR_NODE(&scx->dsq_priq);
> scx->sticky_cpu = -1;
Should the "must be the last" comment in include/linux/sched/ext.h also
be removed?
Rasmus