After testing looks like this subset of ASICs has GPU reset working for the most part. Enable reset due to job timeout. Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index d11489e..75308d2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -3292,18 +3292,32 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev, */ bool amdgpu_device_should_recover_gpu(struct amdgpu_device *adev) { + struct amdgpu_ip_block *ip_block; + if (!amdgpu_device_ip_check_soft_reset(adev)) { DRM_INFO("Timeout, but no hardware hang detected.\n"); return false; } - if (amdgpu_gpu_recovery == 0 || (amdgpu_gpu_recovery == -1 && - !amdgpu_sriov_vf(adev))) { - DRM_INFO("GPU recovery disabled.\n"); - return false; - } + if (amdgpu_gpu_recovery == 0) + goto disabled; + + if (amdgpu_sriov_vf(adev)) + return true; + + ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_GFX); + + if (amdgpu_gpu_recovery == -1 && + ((adev->flags & AMD_IS_APU) || + ip_block->version->major < 8 || + ip_block->version->major > 9)) + goto disabled; return true; + +disabled: + DRM_INFO("GPU recovery disabled.\n"); + return false; } /** -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx