Complete the hang user queue fence unconditionally, including the case where queue reset fails. Without this fix, a failed reset leaves the fence unsignaled, causing waiters to block indefinitely.
Signed-off-by: Prike Liang <[email protected]> --- drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c index 83a438d8e117..2bb5f231f133 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c @@ -255,12 +255,10 @@ int mes_userq_reset_queue(struct amdgpu_device *adev, r = amdgpu_mes_reset_queue_mmio(adev, queue_type, 0, 1, pipe, queue, 0); else r = amdgpu_mes_reset_user_queue(adev, queue_type, db, 0); - if (r) - return r; - r = mes_userq_unmap(uq); - if (r) - return r; + if (!r) + r = mes_userq_unmap(uq); amdgpu_userq_fence_driver_force_completion(uq); + return r; break; } } -- 2.34.1
