Only set an error on the fence if the fence is not
signalled.  We can end up with a warning if the
per queue reset path signals the fence and sets an error
as part of the reset, but fails to recover.

Reviewed-by: Timur Kristóf <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index 67fde99724bad..7f5d01164897f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -147,7 +147,8 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct 
drm_sched_job *s_job)
                dev_err(adev->dev, "Ring %s reset failed\n", ring->sched.name);
        }
 
-       dma_fence_set_error(&s_job->s_fence->finished, -ETIME);
+       if (dma_fence_get_status(&s_job->s_fence->finished) == 0)
+               dma_fence_set_error(&s_job->s_fence->finished, -ETIME);
 
        amdgpu_vm_put_task_info(ti);
 
-- 
2.52.0

Reply via email to