On Tue, Dec 02, 2025 at 02:35:36PM +0100, Boris Brezillon wrote: > It appears the timeout can still be enabled when we reach that point, > because of the asynchronous progress check done on queues that resets > the timer when jobs are still in-flight, but progress was made. > We could add more checks to make sure the timer is not re-enabled when > a group can't run anymore, but we don't have a group to pass to > queue_check_job_completion() in some context. > > It's just as safe (we just want to be sure the timer is stopped before > we destroy the queue) and simpler to drop the WARN_ON() in > group_free_queue(). > > Signed-off-by: Boris Brezillon <[email protected]>
Reviewed-by: Liviu Dudau <[email protected]> Best regards, Liviu > --- > drivers/gpu/drm/panthor/panthor_sched.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/panthor/panthor_sched.c > b/drivers/gpu/drm/panthor/panthor_sched.c > index 389d508b3848..203f6a0a6b9a 100644 > --- a/drivers/gpu/drm/panthor/panthor_sched.c > +++ b/drivers/gpu/drm/panthor/panthor_sched.c > @@ -893,9 +893,8 @@ static void group_free_queue(struct panthor_group *group, > struct panthor_queue * > if (IS_ERR_OR_NULL(queue)) > return; > > - /* This should have been disabled before that point. */ > - drm_WARN_ON(&group->ptdev->base, > - disable_delayed_work_sync(&queue->timeout.work)); > + /* Disable the timeout before tearing down drm_sched components. */ > + disable_delayed_work_sync(&queue->timeout.work); > > if (queue->entity.fence_context) > drm_sched_entity_destroy(&queue->entity); > -- > 2.51.1 >
