Re: [PATCH 05/12] sched: Move sched_class::prio_changed() into the change pattern
From: Pierre Gondois
Date: Tue Jan 13 2026 - 05:47:09 EST
Hello Prateek,
On 1/13/26 05:12, K Prateek Nayak wrote:
Hello Pierre,I can still see the issue.
On 1/13/2026 2:14 AM, Pierre Gondois wrote:
Hello Peter,Can you check if the following solution helps your case too:
It seems this patch:
6455ad5346c9 ("sched: Move sched_class::prio_changed() into the change pattern")
is triggering the following warning:
rq_pin_lock()
\-WARN_ON_ONCE(rq->balance_callback && rq->balance_callback != &balance_push_callback);
https://lore.kernel.org/all/20260106104113.GX3707891@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
It seems the task deadline is also updated in:
sched_change_end()
\-enqueue_task_dl()
\-enqueue_dl_entity()
\-setup_new_dl_entity()
\-replenish_dl_new_period()
if the task's period finished.
So in sched_change_end(), the task priority (i.e. p->dl.deadline) is updated.
This results in having an old_deadline earlier than the new p->dl.deadline.
Thus the rq->balance_callback:
prio_changed_dl() {
...
if (dl_time_before(old_deadline, p->dl.deadline))
deadline_queue_pull_task(rq);
...
}