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,

On 1/13/2026 2:14 AM, Pierre Gondois wrote:
Hello Peter,

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);
Can you check if the following solution helps your case too:
https://lore.kernel.org/all/20260106104113.GX3707891@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/

I can still see the issue.
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);
...
}