diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 | 
1 files changed, 11 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index 90f64b8bc358..b33a4eb39193 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -4374,9 +4374,17 @@ static int gfx_v9_0_ecc_late_init(void *handle)  	struct amdgpu_device *adev = (struct amdgpu_device *)handle;  	int r; -	r = gfx_v9_0_do_edc_gds_workarounds(adev); -	if (r) -		return r; +	/* +	 * Temp workaround to fix the issue that CP firmware fails to +	 * update read pointer when CPDMA is writing clearing operation +	 * to GDS in suspend/resume sequence on several cards. So just +	 * limit this operation in cold boot sequence. +	 */ +	if (!adev->in_suspend) { +		r = gfx_v9_0_do_edc_gds_workarounds(adev); +		if (r) +			return r; +	}  	/* requires IBs so do in late init after IB pool is initialized */  	r = gfx_v9_0_do_edc_gpr_workarounds(adev); | 
