From cb4ff91492de79e1dd1daacf75c2bd7c54d23252 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Wed, 14 May 2025 12:37:18 -0400 Subject: [PATCH] sched_ext: Explain the temporary situation around scx_root dereferences Naked scx_root dereferences are being used as temporary markers to indicate that they need to be updated to point to the right scheduler instance. Explain the situation. Signed-off-by: Tejun Heo Acked-by: Andrea Righi --- kernel/sched/ext.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 38c37c842b3e3..52e0f9553e730 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -1016,6 +1016,14 @@ enum scx_ops_state { #define SCX_OPSS_STATE_MASK ((1LU << SCX_OPSS_QSEQ_SHIFT) - 1) #define SCX_OPSS_QSEQ_MASK (~SCX_OPSS_STATE_MASK) +/* + * NOTE: sched_ext is in the process of growing multiple scheduler support and + * scx_root usage is in a transitional state. Naked dereferences are safe if the + * caller is one of the tasks attached to SCX and explicit RCU dereference is + * necessary otherwise. Naked scx_root dereferences trigger sparse warnings but + * are used as temporary markers to indicate that the dereferences need to be + * updated to point to the associated scheduler instances rather than scx_root. + */ static struct scx_sched __rcu *scx_root; /* -- 2.39.5