diff options
| author | Hawking Zhang <Hawking.Zhang@amd.com> | 2021-03-08 16:40:07 +0800 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2021-04-09 16:50:48 -0400 | 
| commit | 75f06251c921baf99c003662c529c25ba9937b2d (patch) | |
| tree | da3a64d5681bf1ef84fd6f4587028436c70b9caa /drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | |
| parent | 158fc08d174d0f7070d8456599fb60d6f0fdb5bd (diff) | |
drm/amdgpu: initialze ras caps per paltform config
Driver only manages GFX/SDMA/MMHUB RAS in platforms
that gpu node is connected to cpu through XGMI, other
than that, it queries VBIOS for RAS capabilities.
Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: John Clements <John.Clements@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 35 | 
1 files changed, 23 insertions, 12 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 26458946145c..1708045e2a0d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1936,6 +1936,7 @@ static bool amdgpu_ras_asic_supported(struct amdgpu_device *adev)  	return adev->asic_type == CHIP_VEGA10 ||  		adev->asic_type == CHIP_VEGA20 ||  		adev->asic_type == CHIP_ARCTURUS || +		adev->asic_type == CHIP_ALDEBARAN ||  		adev->asic_type == CHIP_SIENNA_CICHLID;  } @@ -1958,19 +1959,29 @@ static void amdgpu_ras_check_supported(struct amdgpu_device *adev,  	    !amdgpu_ras_asic_supported(adev))  		return; -	if (amdgpu_atomfirmware_mem_ecc_supported(adev)) { -		dev_info(adev->dev, "MEM ECC is active.\n"); -		*hw_supported |= (1 << AMDGPU_RAS_BLOCK__UMC | -				1 << AMDGPU_RAS_BLOCK__DF); -	} else -		dev_info(adev->dev, "MEM ECC is not presented.\n"); +	if (!adev->gmc.xgmi.connected_to_cpu) { +		if (amdgpu_atomfirmware_mem_ecc_supported(adev)) { +			dev_info(adev->dev, "MEM ECC is active.\n"); +			*hw_supported |= (1 << AMDGPU_RAS_BLOCK__UMC | +					1 << AMDGPU_RAS_BLOCK__DF); +		} else { +			dev_info(adev->dev, "MEM ECC is not presented.\n"); +		} -	if (amdgpu_atomfirmware_sram_ecc_supported(adev)) { -		dev_info(adev->dev, "SRAM ECC is active.\n"); -		*hw_supported |= ~(1 << AMDGPU_RAS_BLOCK__UMC | -				1 << AMDGPU_RAS_BLOCK__DF); -	} else -		dev_info(adev->dev, "SRAM ECC is not presented.\n"); +		if (amdgpu_atomfirmware_sram_ecc_supported(adev)) { +			dev_info(adev->dev, "SRAM ECC is active.\n"); +			*hw_supported |= ~(1 << AMDGPU_RAS_BLOCK__UMC | +					1 << AMDGPU_RAS_BLOCK__DF); +		} else { +			dev_info(adev->dev, "SRAM ECC is not presented.\n"); +		} +	} else { +		/* driver only manages a few IP blocks RAS feature +		 * when GPU is connected cpu through XGMI */ +		*hw_supported |= (1 << AMDGPU_RAS_BLOCK__GFX | +				1 << AMDGPU_RAS_BLOCK__SDMA | +				1 << AMDGPU_RAS_BLOCK__MMHUB); +	}  	/* hw_supported needs to be aligned with RAS block mask. */  	*hw_supported &= AMDGPU_RAS_BLOCK_MASK; | 
