diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 39 | 
1 files changed, 30 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c index ce64ca1c6e66..b1622ac9949f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c @@ -603,15 +603,16 @@ static int amdgpu_vcn_dec_send_msg(struct amdgpu_ring *ring,  				   struct amdgpu_ib *ib_msg,  				   struct dma_fence **fence)  { +	u64 addr = AMDGPU_GPU_PAGE_ALIGN(ib_msg->gpu_addr);  	struct amdgpu_device *adev = ring->adev;  	struct dma_fence *f = NULL;  	struct amdgpu_job *job;  	struct amdgpu_ib *ib; -	uint64_t addr = AMDGPU_GPU_PAGE_ALIGN(ib_msg->gpu_addr);  	int i, r; -	r = amdgpu_job_alloc_with_ib(adev, 64, -					AMDGPU_IB_POOL_DIRECT, &job); +	r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL, +				     64, AMDGPU_IB_POOL_DIRECT, +				     &job);  	if (r)  		goto err; @@ -790,8 +791,9 @@ static int amdgpu_vcn_dec_sw_send_msg(struct amdgpu_ring *ring,  	if (sq)  		ib_size_dw += 8; -	r = amdgpu_job_alloc_with_ib(adev, ib_size_dw * 4, -				AMDGPU_IB_POOL_DIRECT, &job); +	r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL, +				     ib_size_dw * 4, AMDGPU_IB_POOL_DIRECT, +				     &job);  	if (r)  		goto err; @@ -919,8 +921,9 @@ static int amdgpu_vcn_enc_get_create_msg(struct amdgpu_ring *ring, uint32_t hand  	if (sq)  		ib_size_dw += 8; -	r = amdgpu_job_alloc_with_ib(ring->adev, ib_size_dw * 4, -					AMDGPU_IB_POOL_DIRECT, &job); +	r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL, +				     ib_size_dw * 4, AMDGPU_IB_POOL_DIRECT, +				     &job);  	if (r)  		return r; @@ -985,8 +988,9 @@ static int amdgpu_vcn_enc_get_destroy_msg(struct amdgpu_ring *ring, uint32_t han  	if (sq)  		ib_size_dw += 8; -	r = amdgpu_job_alloc_with_ib(ring->adev, ib_size_dw * 4, -					AMDGPU_IB_POOL_DIRECT, &job); +	r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL, +				     ib_size_dw * 4, AMDGPU_IB_POOL_DIRECT, +				     &job);  	if (r)  		return r; @@ -1251,3 +1255,20 @@ int amdgpu_vcn_process_poison_irq(struct amdgpu_device *adev,  	return 0;  } + +void amdgpu_vcn_set_ras_funcs(struct amdgpu_device *adev) +{ +	if (!adev->vcn.ras) +		return; + +	amdgpu_ras_register_ras_block(adev, &adev->vcn.ras->ras_block); + +	strcpy(adev->vcn.ras->ras_block.ras_comm.name, "vcn"); +	adev->vcn.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__VCN; +	adev->vcn.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__POISON; +	adev->vcn.ras_if = &adev->vcn.ras->ras_block.ras_comm; + +	/* If don't define special ras_late_init function, use default ras_late_init */ +	if (!adev->vcn.ras->ras_block.ras_late_init) +		adev->vcn.ras->ras_block.ras_late_init = amdgpu_ras_block_late_init; +} | 
