On 5/25/26 06:51, Sunil Khatri wrote: > 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 <[email protected]>
Reviewed-by: Christian König <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 4 ---- > drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 5 +++++ > 2 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > index 5e361b035e8f..f0c7b686f68d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > @@ -534,10 +534,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); > diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c > b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c > index e9189f07c6dc..836a156cafd8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c > +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c > @@ -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)
