diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/soc24.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/soc24.c | 27 | 
1 files changed, 21 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/soc24.c b/drivers/gpu/drm/amd/amdgpu/soc24.c index be96de92b2f5..6b8e078ee7c7 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc24.c +++ b/drivers/gpu/drm/amd/amdgpu/soc24.c @@ -444,8 +444,18 @@ static int soc24_common_late_init(struct amdgpu_ip_block *ip_block)  {  	struct amdgpu_device *adev = ip_block->adev; -	if (amdgpu_sriov_vf(adev)) +	if (amdgpu_sriov_vf(adev)) {  		xgpu_nv_mailbox_get_irq(adev); +	} else { +		if (adev->nbio.ras && +		    adev->nbio.ras_err_event_athub_irq.funcs) +			/* don't need to fail gpu late init +			 * if enabling athub_err_event interrupt failed +			 * nbif v6_3_1 only support fatal error hanlding +			 * just enable the interrupt directly +			 */ +			amdgpu_irq_get(adev, &adev->nbio.ras_err_event_athub_irq, 0); +	}  	/* Enable selfring doorbell aperture late because doorbell BAR  	 * aperture will change if resize BAR successfully in gmc sw_init. @@ -501,8 +511,13 @@ static int soc24_common_hw_fini(struct amdgpu_ip_block *ip_block)  	adev->nbio.funcs->enable_doorbell_aperture(adev, false);  	adev->nbio.funcs->enable_doorbell_selfring_aperture(adev, false); -	if (amdgpu_sriov_vf(adev)) +	if (amdgpu_sriov_vf(adev)) {  		xgpu_nv_mailbox_put_irq(adev); +	} else { +		if (adev->nbio.ras && +		    adev->nbio.ras_err_event_athub_irq.funcs) +			amdgpu_irq_put(adev, &adev->nbio.ras_err_event_athub_irq, 0); +	}  	return 0;  } @@ -522,10 +537,10 @@ static bool soc24_common_is_idle(void *handle)  	return true;  } -static int soc24_common_set_clockgating_state(void *handle, +static int soc24_common_set_clockgating_state(struct amdgpu_ip_block *ip_block,  					      enum amd_clockgating_state state)  { -	struct amdgpu_device *adev = (struct amdgpu_device *)handle; +	struct amdgpu_device *adev = ip_block->adev;  	switch (amdgpu_ip_version(adev, NBIO_HWIP, 0)) {  	case IP_VERSION(6, 3, 1): @@ -542,10 +557,10 @@ static int soc24_common_set_clockgating_state(void *handle,  	return 0;  } -static int soc24_common_set_powergating_state(void *handle, +static int soc24_common_set_powergating_state(struct amdgpu_ip_block *ip_block,  					      enum amd_powergating_state state)  { -	struct amdgpu_device *adev = (struct amdgpu_device *)handle; +	struct amdgpu_device *adev = ip_block->adev;  	switch (amdgpu_ip_version(adev, LSDMA_HWIP, 0)) {  	case IP_VERSION(7, 0, 0): | 
