]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/panthor: Drop a WARN_ON() in group_free_queue()
authorBoris Brezillon <boris.brezillon@collabora.com>
Wed, 3 Dec 2025 12:17:48 +0000 (13:17 +0100)
committerLiviu Dudau <liviu.dudau@arm.com>
Wed, 3 Dec 2025 12:29:56 +0000 (12:29 +0000)
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().

v2:
- Collect R-bs

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Link: https://patch.msgid.link/20251203121750.404340-2-boris.brezillon@collabora.com
drivers/gpu/drm/panthor/panthor_sched.c

index 389d508b3848eff10cbbc70fe081fd4e5afd3550..203f6a0a6b9ab53ac5cbaafa55151443e1261c19 100644 (file)
@@ -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);