Commit 89aae41d authored by Christian König's avatar Christian König
Browse files

drm/radeon: use dma_resv_wait_timeout() instead of manually waiting



Don't touch the exclusive fence manually here, but rather use the
general dma_resv function. We did that for better hw reset handling but
this doesn't necessary work correctly.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarAlex Deuche <alexander.deucher@amd.com>
Acked-by: default avatarNirmoy Das <nirmoy.das@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211028132630.2330-6-christian.koenig@amd.com
parent c29d6797
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -469,7 +469,6 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
{
	int32_t *msg, msg_type, handle;
	unsigned img_size = 0;
	struct dma_fence *f;
	void *ptr;

	int i, r;
@@ -479,13 +478,11 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
		return -EINVAL;
	}

	f = dma_resv_excl_fence(bo->tbo.base.resv);
	if (f) {
		r = radeon_fence_wait((struct radeon_fence *)f, false);
		if (r) {
	r = dma_resv_wait_timeout(bo->tbo.base.resv, false, false,
				  MAX_SCHEDULE_TIMEOUT);
	if (r <= 0) {
		DRM_ERROR("Failed waiting for UVD message (%d)!\n", r);
			return r;
		}
		return r ? r : -ETIME;
	}

	r = radeon_bo_kmap(bo, &ptr);