]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/deadline: Ignore special tasks when rebuilding domains
authorJuri Lelli <juri.lelli@redhat.com>
Thu, 13 Mar 2025 17:00:04 +0000 (18:00 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 17 Mar 2025 10:23:41 +0000 (11:23 +0100)
SCHED_DEADLINE special tasks get a fake bandwidth that is only used to
make sure sleeping and priority inheritance 'work', but it is ignored
for runtime enforcement and admission control.

Be consistent with it also when rebuilding root domains.

Fixes: 53916d5fd3c0 ("sched/deadline: Check bandwidth overflow earlier for hotplug")
Reported-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Valentin Schneider <vschneid@redhat.com>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Waiman Long <longman@redhat.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Link: https://lore.kernel.org/r/20250313170011.357208-2-juri.lelli@redhat.com
kernel/sched/deadline.c

index ff4df16b5186d7738898bf61705ac86d46b36c4b..1a041c1fc0d1ec9c115c8bbcf9262c9d5866d68a 100644 (file)
@@ -2956,7 +2956,7 @@ void dl_add_task_root_domain(struct task_struct *p)
        struct dl_bw *dl_b;
 
        raw_spin_lock_irqsave(&p->pi_lock, rf.flags);
-       if (!dl_task(p)) {
+       if (!dl_task(p) || dl_entity_is_special(&p->dl)) {
                raw_spin_unlock_irqrestore(&p->pi_lock, rf.flags);
                return;
        }