From: Tejun Heo Date: Wed, 14 May 2025 16:37:18 +0000 (-0400) Subject: sched_ext: Explain the temporary situation around scx_root dereferences X-Git-Tag: v6.16-rc1~153^2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cb4ff91492de79e1dd1daacf75c2bd7c54d23252;p=thirdparty%2Flinux.git 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 --- 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; /*