]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
sched_ext: Explain the temporary situation around scx_root dereferences
authorTejun Heo <tj@kernel.org>
Wed, 14 May 2025 16:37:18 +0000 (12:37 -0400)
committerTejun Heo <tj@kernel.org>
Wed, 14 May 2025 16:37:18 +0000 (12:37 -0400)
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 <tj@kernel.org>
Acked-by: Andrea Righi <arighi@nvidia.com>
kernel/sched/ext.c

index 38c37c842b3e3dcf746968e2cd9c4bb856fb26b8..52e0f9553e730b42385dadffc0274de73e2f7d79 100644 (file)
@@ -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;
 
 /*