In function amdgpu_userq_wait_for_last_fence use
dma_fence_wait_timeout directly instead of checking
for signalled fence first.

Return dma_fence_wait_timeout return value. Also update
the fence timeout log to differentiate where fence timedout.

Signed-off-by: Sunil Khatri <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
index 9666f31e5f39..22c2bd4e71a2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
@@ -433,14 +433,16 @@ static int amdgpu_userq_wait_for_last_fence(struct 
amdgpu_usermode_queue *queue)
        struct dma_fence *f = queue->last_fence;
        int ret = 0;
 
-       if (f && !dma_fence_is_signaled(f)) {
-               ret = dma_fence_wait_timeout(f, true, MAX_SCHEDULE_TIMEOUT);
-               if (ret <= 0) {
-                       drm_file_err(uq_mgr->file, "Timed out waiting for 
fence=%llu:%llu\n",
-                                    f->context, f->seqno);
-                       queue->state = AMDGPU_USERQ_STATE_HUNG;
-                       return -ETIME;
-               }
+       if (!f)
+               return 0;
+
+       ret = dma_fence_wait_timeout(f, true, MAX_SCHEDULE_TIMEOUT);
+       if (ret <= 0) {
+               drm_file_err(uq_mgr->file,
+                            "Timed out in wait_for_last_fence 
fence=%llu:%llu\n",
+                            f->context, f->seqno);
+               queue->state = AMDGPU_USERQ_STATE_HUNG;
+               return -ETIMEDOUT;
        }
 
        return ret;
-- 
2.34.1

Reply via email to