]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
cgroup/cpuset: Reserve DL bandwidth only for root-domain moves
authorGuopeng Zhang <zhangguopeng@kylinos.cn>
Sat, 9 May 2026 10:20:31 +0000 (18:20 +0800)
committerTejun Heo <tj@kernel.org>
Mon, 11 May 2026 20:27:14 +0000 (10:27 -1000)
commit5dd74441cbf42c22e874450eb6a6bbb19390a216
tree31bc5f42d6ba5c41002bd389a152e75b6f6aacc7
parent4a39eda5fdd867fc39f3c039714dd432cee00268
cgroup/cpuset: Reserve DL bandwidth only for root-domain moves

cpuset_can_attach() currently adds the bandwidth of all migrating
SCHED_DEADLINE tasks to sum_migrate_dl_bw. If the source and destination
cpuset effective CPU masks do not overlap, the whole sum is then
reserved in the destination root domain.

set_cpus_allowed_dl(), however, subtracts bandwidth from the source
root domain only when the affinity change really moves the task between
root domains. A DL task can move between cpusets that are still in the
same root domain, so including that task in sum_migrate_dl_bw can reserve
destination bandwidth without a matching source-side subtraction.

Share the root-domain move test with set_cpus_allowed_dl(). Keep
nr_migrate_dl_tasks counting all migrating deadline tasks for cpuset DL
task accounting, but add to sum_migrate_dl_bw only for tasks that need a
root-domain bandwidth move. Keep using the destination cpuset effective
CPU mask and leave the broader can_attach()/attach() transaction model
unchanged.

Fixes: 2ef269ef1ac0 ("cgroup/cpuset: Free DL BW in case can_attach() fails")
Cc: stable@vger.kernel.org # v6.10+
Signed-off-by: Guopeng Zhang <zhangguopeng@kylinos.cn>
Reviewed-by: Waiman Long <longman@redhat.com>
Acked-by: Juri Lelli <juri.lelli@redhat.com>
Tested-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/sched/deadline.h
kernel/cgroup/cpuset-internal.h
kernel/cgroup/cpuset.c
kernel/sched/deadline.c