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 0ef829065403..002162dcbd3f 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(f, true); + 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
