]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu/userq: move wptr_obj cleanup in mqd_destroy
authorSunil Khatri <sunil.khatri@amd.com>
Mon, 25 May 2026 04:26:23 +0000 (09:56 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 3 Jun 2026 18:55:48 +0000 (14:55 -0400)
In case when queue_create fails and mqd has already been
allocated and hence wptr_obj is not cleaned up.

So moving that cleanup part to mqd_destroy so it takes
care of all the cases of clean up and during tear down of
the queue.

Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 43355f62cd2ef5386c2693df537c232ea0f2ce6c)

drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
drivers/gpu/drm/amd/amdgpu/mes_userqueue.c

index 986ef5ca00878951eccf87887e51b9766127c988..59ffaa7b61c2db1cd12bde144bb8328fc01e6c6e 100644 (file)
@@ -532,10 +532,6 @@ amdgpu_userq_destroy(struct amdgpu_userq_mgr *uq_mgr, struct amdgpu_usermode_que
        amdgpu_bo_unreserve(queue->db_obj.obj);
        amdgpu_bo_unref(&queue->db_obj.obj);
 
-       amdgpu_bo_reserve(queue->wptr_obj.obj, true);
-       amdgpu_bo_unpin(queue->wptr_obj.obj);
-       amdgpu_bo_unreserve(queue->wptr_obj.obj);
-       amdgpu_bo_unref(&queue->wptr_obj.obj);
        kfree(queue);
 
        pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
index 98aa00eeb2f472e5b100801abeb4c5ed6b659ac9..4cbd46f53e85e8d3429239937cc8e25486d6de32 100644 (file)
@@ -467,6 +467,11 @@ static void mes_userq_mqd_destroy(struct amdgpu_usermode_queue *queue)
        kfree(queue->userq_prop);
        amdgpu_bo_free_kernel(&queue->mqd.obj, &queue->mqd.gpu_addr,
                              &queue->mqd.cpu_ptr);
+
+       amdgpu_bo_reserve(queue->wptr_obj.obj, true);
+       amdgpu_bo_unpin(queue->wptr_obj.obj);
+       amdgpu_bo_unreserve(queue->wptr_obj.obj);
+       amdgpu_bo_unref(&queue->wptr_obj.obj);
 }
 
 static int mes_userq_preempt(struct amdgpu_usermode_queue *queue)