diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 25 | 
1 files changed, 19 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index 2dad7aa9a03b..a4b47e1bd111 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -1950,7 +1950,6 @@ static void amdgpu_ras_do_recovery(struct work_struct *work)  		reset_context.method = AMD_RESET_METHOD_NONE;  		reset_context.reset_req_dev = adev;  		clear_bit(AMDGPU_NEED_FULL_RESET, &reset_context.flags); -		clear_bit(AMDGPU_SKIP_MODE2_RESET, &reset_context.flags);  		amdgpu_device_gpu_recover(ras->adev, NULL, &reset_context);  	} @@ -2268,6 +2267,25 @@ static int amdgpu_ras_recovery_fini(struct amdgpu_device *adev)  static bool amdgpu_ras_asic_supported(struct amdgpu_device *adev)  { +	if (amdgpu_sriov_vf(adev)) { +		switch (adev->ip_versions[MP0_HWIP][0]) { +		case IP_VERSION(13, 0, 2): +			return true; +		default: +			return false; +		} +	} + +	if (adev->asic_type == CHIP_IP_DISCOVERY) { +		switch (adev->ip_versions[MP0_HWIP][0]) { +		case IP_VERSION(13, 0, 0): +		case IP_VERSION(13, 0, 10): +			return true; +		default: +			return false; +		} +	} +  	return adev->asic_type == CHIP_VEGA10 ||  		adev->asic_type == CHIP_VEGA20 ||  		adev->asic_type == CHIP_ARCTURUS || @@ -2311,11 +2329,6 @@ static void amdgpu_ras_check_supported(struct amdgpu_device *adev)  	    !amdgpu_ras_asic_supported(adev))  		return; -	/* If driver run on sriov guest side, only enable ras for aldebaran */ -	if (amdgpu_sriov_vf(adev) && -		adev->ip_versions[MP1_HWIP][0] != IP_VERSION(13, 0, 2)) -		return; -  	if (!adev->gmc.xgmi.connected_to_cpu) {  		if (amdgpu_atomfirmware_mem_ecc_supported(adev)) {  			dev_info(adev->dev, "MEM ECC is active.\n");  | 
