From: Kuba Piecuch Date: Mon, 20 Apr 2026 15:28:47 +0000 (+0000) Subject: sched_ext: Documentation: add note about multiple ops.enqueue() calls in a row X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d722d70a8be441df1c3e3e9be454d99f527f93d5;p=thirdparty%2Fkernel%2Flinux.git sched_ext: Documentation: add note about multiple ops.enqueue() calls in a row Commit 84b1a0ea0b7c ("sched_ext: Implement scx_bpf_dsq_reenq() for user DSQs") introduced the possibility of ops.enqueue() being called multiple times in a row for the same task without intervening calls to ops.dequeue(). Document this behavior as it may be surprising to some. Acked-by: Andrea Righi Acked-by: Cheng-Yang Chou Signed-off-by: Kuba Piecuch Signed-off-by: Tejun Heo --- diff --git a/Documentation/scheduler/sched-ext.rst b/Documentation/scheduler/sched-ext.rst index 03d595d178ea4..fba09aa1cd4e7 100644 --- a/Documentation/scheduler/sched-ext.rst +++ b/Documentation/scheduler/sched-ext.rst @@ -339,6 +339,11 @@ The following briefly shows how a waking task is scheduled and executed. leaves (e.g., when ``ops.dispatch()`` moves it to a terminal DSQ, or on property change / sleep). + Note that ``ops.enqueue()`` can be called multiple times in a row without + an intervening call to ``ops.dequeue()``. This can happen, for example, + when a task on a user-created DSQ is re-enqueued using + ``scx_bpf_dsq_reenq()``. The task stays in BPF custody the entire time. + When a task leaves BPF scheduler custody, ``ops.dequeue()`` is invoked. The dequeue can happen for different reasons, distinguished by flags: