From: Tejun Heo <tj@kernel.org>
To: David Vernet <void@manifault.com>,
Andrea Righi <arighi@nvidia.com>,
Changwoo Min <changwoo@igalia.com>
Cc: sched-ext@lists.linux.dev, Emil Tsalapatis <emil@etsalapatis.com>,
linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>
Subject: [PATCHSET sched_ext/for-7.3-fixes] sched_ext: Fix keep-last for sub-scheduler tasks and two scx_qmap placement loops
Date: Sat, 5 Sep 2026 06:09:54 -1000 [thread overview]
Message-ID: <20260905160958.1565156-1-tj@kernel.org> (raw)
Hello,
Running scx_qmap as a sub-scheduler under scx_nitosis exposed a kernel bug
and two scx_qmap bugs:
- dispatch_one() decides whether to keep running @prev by testing the root
scheduler's SCX_OPS_ENQ_LAST and bypass state. Those are properties of
@prev's own scheduler, and put_prev_task_scx() acts on that scheduler.
When the root sets the flag and @prev belongs to a sub-scheduler that
doesn't, the task is not kept and is enqueued with SCX_ENQ_LAST to a
scheduler that never opted in. This trips the WARN_ON_ONCE in
put_prev_task_scx(), and the task is queued without a follow-up scheduling
event, which can stall it. Patches 1-2 fix this.
- scx_qmap added SCX_ENQ_IMMED to its rescue inserts, which turns a rescue
request into a regular placement on a time-shared cid and loops with the
kernel's REENQ bounce until the reenqueue limit ejects the scheduler.
Patch 3 fixes this.
- scx_qmap placed tasks from the delegation split alone, ahead of the caps
in effect on the cpus, so highpri moves to a freshly granted cid were
denied and bounced. Patch 4 fixes this.
This patchset contains the following four patches:
0001 sched_ext: Rename sch to root_sch in dispatch_one()
0002 sched_ext: Use @prev's scheduler for the keep decisions in dispatch_one()
0003 sched_ext: scx_qmap: Do not add IMMED to rescue inserts
0004 sched_ext: scx_qmap: Place only on cids whose caps are in effect
0001-0002 fix the kernel side. 0003-0004 fix scx_qmap.
The patchset is based on sched_ext/for-7.3-fixes (0a85182723b6) and is also
available in the following git branch:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git sub-keep-last-rescue
diffstat follows. Thanks.
kernel/sched/ext/ext.c | 33 ++++++++------
tools/sched_ext/scx_qmap.bpf.c | 101 ++++++++++++++++++++++++++++++-----------
tools/sched_ext/scx_qmap.h | 3 ++
3 files changed, 97 insertions(+), 40 deletions(-)
--
tejun
next reply other threads:[~2026-09-05 16:10 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-05 16:09 Tejun Heo [this message]
2026-09-05 16:09 ` [PATCH sched_ext/for-7.3-fixes 1/4] sched_ext: Rename sch to root_sch in dispatch_one() Tejun Heo
2026-09-05 16:09 ` [PATCH sched_ext/for-7.3-fixes 2/4] sched_ext: Use @prev's scheduler for the keep decisions " Tejun Heo
2026-09-05 16:09 ` [PATCH sched_ext/for-7.3-fixes 3/4] sched_ext: scx_qmap: Do not add IMMED to rescue inserts Tejun Heo
2026-09-05 16:09 ` [PATCH sched_ext/for-7.3-fixes 4/4] sched_ext: scx_qmap: Place only on cids whose caps are in effect Tejun Heo
2026-09-05 16:22 ` sashiko-bot
2026-09-05 16:40 ` Tejun Heo
2026-09-05 19:24 ` Andrea Righi
2026-09-05 22:57 ` Tejun Heo
2026-09-05 19:25 ` [PATCHSET sched_ext/for-7.3-fixes] sched_ext: Fix keep-last for sub-scheduler tasks and two scx_qmap placement loops Andrea Righi
2026-09-05 22:25 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260905160958.1565156-1-tj@kernel.org \
--to=tj@kernel.org \
--cc=arighi@nvidia.com \
--cc=changwoo@igalia.com \
--cc=emil@etsalapatis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sched-ext@lists.linux.dev \
--cc=void@manifault.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.