diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 38 | 
1 files changed, 12 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c index 5f3f54073818..98a1b2ce2b9d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c @@ -1032,8 +1032,10 @@ out:   * @ib: the IB to execute   *   */ -void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib, -			     unsigned vmid, bool ctx_switch) +void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, +				struct amdgpu_job *job, +				struct amdgpu_ib *ib, +				bool ctx_switch)  {  	amdgpu_ring_write(ring, VCE_CMD_IB);  	amdgpu_ring_write(ring, lower_32_bits(ib->gpu_addr)); @@ -1079,11 +1081,9 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)  		return 0;  	r = amdgpu_ring_alloc(ring, 16); -	if (r) { -		DRM_ERROR("amdgpu: vce failed to lock ring %d (%d).\n", -			  ring->idx, r); +	if (r)  		return r; -	} +  	amdgpu_ring_write(ring, VCE_CMD_END);  	amdgpu_ring_commit(ring); @@ -1093,14 +1093,8 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)  		DRM_UDELAY(1);  	} -	if (i < timeout) { -		DRM_DEBUG("ring test on %d succeeded in %d usecs\n", -			 ring->idx, i); -	} else { -		DRM_ERROR("amdgpu: ring %d test failed\n", -			  ring->idx); +	if (i >= timeout)  		r = -ETIMEDOUT; -	}  	return r;  } @@ -1121,27 +1115,19 @@ int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring, long timeout)  		return 0;  	r = amdgpu_vce_get_create_msg(ring, 1, NULL); -	if (r) { -		DRM_ERROR("amdgpu: failed to get create msg (%ld).\n", r); +	if (r)  		goto error; -	}  	r = amdgpu_vce_get_destroy_msg(ring, 1, true, &fence); -	if (r) { -		DRM_ERROR("amdgpu: failed to get destroy ib (%ld).\n", r); +	if (r)  		goto error; -	}  	r = dma_fence_wait_timeout(fence, false, timeout); -	if (r == 0) { -		DRM_ERROR("amdgpu: IB test timed out.\n"); +	if (r == 0)  		r = -ETIMEDOUT; -	} else if (r < 0) { -		DRM_ERROR("amdgpu: fence wait failed (%ld).\n", r); -	} else { -		DRM_DEBUG("ib test on ring %d succeeded\n", ring->idx); +	else if (r > 0)  		r = 0; -	} +  error:  	dma_fence_put(fence);  	return r;  | 
