diff options
| author | Tejun Heo <tj@kernel.org> | 2026-09-05 06:09:58 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-09-05 12:12:28 -1000 |
| commit | 63b4ff622244483e7c530e97d787a3d6c2c38a33 (patch) | |
| tree | 52609c0c8da6a262bb090a1a921d02ed0f8eaa1f /scripts/Makefile.thinlto | |
| parent | a0d356696f87700c8c2934e3881277b0d37f0b71 (diff) | |
| download | linux-next-63b4ff622244483e7c530e97d787a3d6c2c38a33.tar.gz linux-next-63b4ff622244483e7c530e97d787a3d6c2c38a33.zip | |
sched_ext: scx_qmap: Place only on cids whose caps are in effect
qmap decides placements from self_cids, which redistribute() derives from
the caps view at ops.sub_caps_updated() time. That view runs ahead of the
cpus: a granted cid can be in self_cids before its cpu has reported the caps
in effect through ops.sub_ecaps_updated(). ops.update_idle() only comes once
BASE is in effect, so the idle-gated placements reach such a cid only
through an idle bit left over from an earlier hold. The highpri scan has no
gate at all:
parent cpu Y, qmap cpu X
grants ENQ on X to qmap
sub_caps_updated() adds X
to self_cids
highpri scan moves a task
to X with PREEMPT
caps not in effect,
move denied, task
bounced with REENQ_CAP
reject drain, enqueue
the scan moves it to X
again
denied again
dispatch syncs ecaps,
sub_ecaps_updated(X)
Every highpri move to X in that window is denied and bounced. The two
callbacks are meant to split the roles: ops.sub_caps_updated() tracks what
the node holds and drives what it delegates to its children, while
ops.sub_ecaps_updated() says whether a task can run on a cpu now. qmap used
the first for both. Track the caps in effect from ops.sub_ecaps_updated() as
avail_cids and place only on self_cids & avail_cids, so that self_cids stays
the delegation split and avail_cids gates the placement.
The stranded tests keep self_cids, as they ask whether the split gives the
task anywhere at all. A highpri task whose self_cids lack caps in effect
waits for them instead of being moved and bounced.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
