Re: [PATCH] sched_ext: Documentation: add note about multiple ops.enqueue() calls in a row

Andrea Righi
2026-04-20T14:44:52Z

Hi Kuba,

On Mon, Apr 20, 2026 at 02:39:39PM +0000, Kuba Piecuch wrote:
> 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().
> AFAIK this was not possible before that commit.
> Document this behavior as it may be surprising to some.
>
> Signed-off-by: Kuba Piecuch <jpiecuch@google.com>

Looks good to me and I think it's good to document this special case.

Acked-by: Andrea Righi <arighi@nvidia.com>

Thanks,
-Andrea

> ---
> Documentation/scheduler/sched-ext.rst | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/Documentation/scheduler/sched-ext.rst b/Documentation/scheduler/sched-ext.rst
> index 03d595d178ea..fba09aa1cd4e 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:
>
> --
> 2.54.0.rc1.555.g9c883467ad-goog
>