]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amdgpu: validate userq hw unmap status for destroying userq
authorPrike Liang <Prike.Liang@amd.com>
Fri, 16 May 2025 08:20:54 +0000 (16:20 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 9 Sep 2025 20:18:37 +0000 (16:18 -0400)
Before destroying the userq buffer object, it requires validating
the userq HW unmap status and ensuring the userq is unmapped from
hardware. If the user HW unmap failed, then it needs to reset the
queue for reusing.

Signed-off-by: Prike Liang <Prike.Liang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c

index 02ab788995b090e82d1fcd73cc44f4fabc47556c..09cea573e5ad93667fd91b8b87c19cda6a47d7ec 100644 (file)
@@ -307,6 +307,11 @@ amdgpu_userq_destroy(struct drm_file *filp, int queue_id)
        debugfs_remove_recursive(queue->debugfs_queue);
 #endif
        r = amdgpu_userq_unmap_helper(uq_mgr, queue);
+       /*TODO: It requires a reset for userq hw unmap error*/
+       if (unlikely(r != AMDGPU_USERQ_STATE_UNMAPPED)) {
+               drm_warn(adev_to_drm(uq_mgr->adev), "trying to destroy a HW mapping userq\n");
+               queue->state = AMDGPU_USERQ_STATE_HUNG;
+       }
        amdgpu_userq_cleanup(uq_mgr, queue, queue_id);
        mutex_unlock(&uq_mgr->userq_mutex);