drm/panthor: Don't overrule pending immediate ticks in sched_resume_tick()

We schedule immediate ticks when we need to process events on CSGs,
but those immediate ticks don't change the resched_target because we
want the other groups to stay scheduled for the remaining of the GPU
timeslot they were given. Make sure these immediate ticks don't get
overruled by a sched_queue_delayed_work() that would delay the tick
execution.

Fixes: 99820b4b7e ("drm/panthor: Make sure we resume the tick when new jobs are submitted")
Reported-by: sashiko-bot@kernel.org
Closes: https://sashiko.dev/#/patchset/20260625-panthor-signal-from-irq-v4-0-3d2908912afa@collabora.com?part=9
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Karunika Choo <karunika.choo@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Link: https://patch.msgid.link/20260625-panthor-misc-fixes-v1-6-b67ed973fea6@collabora.com
This commit is contained in:
Boris Brezillon 2026-06-25 14:40:32 +02:00 committed by Liviu Dudau
parent fe4c05a590
commit 6fec8b4734

View File

@ -2667,7 +2667,14 @@ static void sched_resume_tick(struct panthor_device *ptdev)
else
delay_jiffies = 0;
sched_queue_delayed_work(sched, tick, delay_jiffies);
/* We schedule immediate ticks when we need to process events on CSGs,
* but those don't change the resched_target because we want the other
* groups to stay scheduled for the remaining of the GPU timeslot they
* were given. Make sure those immediate ticks don't get overruled by
* a sched_queue_delayed_work() that would delay the tick execution.
*/
if (!delayed_work_pending(&sched->tick_work))
sched_queue_delayed_work(sched, tick, delay_jiffies);
}
static void group_schedule_locked(struct panthor_group *group, u32 queue_mask)