mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-17 22:05:08 +00:00
drm/panthor: Report group as timedout when we fail to properly suspend
If we don't do that, the group is considered usable by userspace, but all further GROUP_SUBMIT will fail with -EINVAL. Changes in v3: - Add R-bs Changes in v2: - New patch Fixes: de8548813824 ("drm/panthor: Add the scheduler logical block") Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: Liviu Dudau <liviu.dudau@arm.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241029152912.270346-3-boris.brezillon@collabora.com
This commit is contained in:
parent
412a2a8fdd
commit
4700fd3e05
@ -589,10 +589,11 @@ struct panthor_group {
|
||||
* @timedout: True when a timeout occurred on any of the queues owned by
|
||||
* this group.
|
||||
*
|
||||
* Timeouts can be reported by drm_sched or by the FW. In any case, any
|
||||
* timeout situation is unrecoverable, and the group becomes useless.
|
||||
* We simply wait for all references to be dropped so we can release the
|
||||
* group object.
|
||||
* Timeouts can be reported by drm_sched or by the FW. If a reset is required,
|
||||
* and the group can't be suspended, this also leads to a timeout. In any case,
|
||||
* any timeout situation is unrecoverable, and the group becomes useless. We
|
||||
* simply wait for all references to be dropped so we can release the group
|
||||
* object.
|
||||
*/
|
||||
bool timedout;
|
||||
|
||||
@ -2640,6 +2641,12 @@ void panthor_sched_suspend(struct panthor_device *ptdev)
|
||||
csgs_upd_ctx_init(&upd_ctx);
|
||||
while (slot_mask) {
|
||||
u32 csg_id = ffs(slot_mask) - 1;
|
||||
struct panthor_csg_slot *csg_slot = &sched->csg_slots[csg_id];
|
||||
|
||||
/* We consider group suspension failures as fatal and flag the
|
||||
* group as unusable by setting timedout=true.
|
||||
*/
|
||||
csg_slot->group->timedout = true;
|
||||
|
||||
csgs_upd_ctx_queue_reqs(ptdev, &upd_ctx, csg_id,
|
||||
CSG_STATE_TERMINATE,
|
||||
|
Loading…
x
Reference in New Issue
Block a user