Re: [PATCHSET v14 sched_ext/for-7.4] sched: Make proxy execution compatible with sched_ext
From: Andrea Righi
Date: Mon Sep 28 2026 - 16:49:01 EST
Hi Tejun,
On Mon, Sep 28, 2026 at 09:53:31AM -1000, Tejun Heo wrote:
> On Tue, Sep 22, 2026 at 06:51:39PM +0200, Andrea Righi wrote:
> > Andrea Righi (16):
> ...
> > sched_ext: Block proxy donors before taking control
> > sched_ext: Fix ops.running/stopping() pairing for proxy-exec donors
> > sched_ext: Move reject DSQ draining into core
> > sched_ext: Generalize the reject DSQ reenqueue path
> > sched_ext: Handle proxy-exec races in remote DSQ transfers
> > sched_ext: Split curr|donor references properly
> > sched_ext: Track proxy execution for NOHZ_FULL
> > sched_ext: Delegate proxy donor admission to BPF schedulers
> > sched_ext: Add selftest for blocked donor admission
> > sched_ext: scx_qmap: Add proxy execution support
> > sched: Allow enabling proxy exec with sched_ext
>
> Applied 6-16 to sched_ext/for-7.4 on top of tip/sched/core (be100c77178e)
> with the following conflict resolutions:
>
> - 07: sched/core's c72945693b90 ("sched: Restart fair hrtick after same-task
> repicks") changed set_next_task_scx() to take enum snt_e. @first is now
> derived as type == SNT_PICK. SNT_REPICK returns early as before.
>
> - 08: for-7.4's 7a919c7f86de ("sched_ext: Test scx_has_subs() inline before
> calling sub-sched hooks") split scx_reenq_reject() into an inline wrapper
> and __scx_reenq_reject(). Moved the combined function into ext.c and
> dropped both from sub.h.
>
> - 08, 09, 10: Kept scx_reenq_wait_dispatching() from 7de9a6fb44ea
> ("sched_ext: Wait for SCX_OPSS_DISPATCHING before reenqueueing a task") in
> reenq_local() and scx_reenq_reject(), after the new proxy retry checks.
>
> - 10: be100c77178e already has the fixed scx_proxy_reenqueue_retry()
> signature, so only the body was applied. The rq_owned_post_enq() comment
> update was applied over the context changed by cb86607ada73 ("sched_ext:
> Don't run ops.dequeue() with a DSQ lock held").
>
> - 11: Context only, the can_stop_tick declaration in set_next_task_scx() and
> the rq->donor change in scx_rescue_timerfn().
>
> - 14: Context only, enq_blocked in the selftest Makefile.
>
> - 15: dispatch_to_rescue() inserts without needs_immed() per a0d356696f87
> ("sched_ext: scx_qmap: Do not add IMMED to rescue inserts"), and the
> rescue comment keeps the for-7.4 text.
>
> Can you please verify the result?
I reran all my proxy-exec tests on sched_ext/for-7.4. The conflict resolutions
look good. The only issues I saw were unrelated virtio console warnings while
testing inside virtme-ng, fixed by:
b144dc5a2414 ("virtio_console: allocate the port_buffer with the caller's gfp")
Otherwise, everything works great!
Thanks,
-Andrea