Reason: { [ 578.019986] amdgpu 0000:23:00.0: amdgpu: GPU reset begin! [ 583.245566] amdgpu 0000:23:00.0: amdgpu: Failed to disable smu features. [ 583.245621] amdgpu 0000:23:00.0: amdgpu: Fail to disable dpm features! [ 583.245639] [drm:amdgpu_device_ip_suspend_phase2 [amdgpu]] *ERROR* suspend of IP block <smu> failed -62 [ 583.248504] [drm] free PSP TMR buffer } Adjust ip block suspend sequence on aldebaran, it can fix disable smu feature failure. Signed-off-by: Stanley.Yang <Stanley.Yang@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index 4e3669407518..dc1d88a31f91 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c @@ -1309,7 +1309,9 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev) } } - if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) { + /* move add smu block after add smda block for aldebaran */ + if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) && + (adev->ip_versions[MP1_HWIP][0] != IP_VERSION(13, 0 ,2))) { r = amdgpu_discovery_set_smu_ip_blocks(adev); if (r) return r; @@ -1327,8 +1329,10 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev) if (r) return r; - if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT && - !amdgpu_sriov_vf(adev)) { + if ((adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT && + !amdgpu_sriov_vf(adev)) || + ((adev->ip_versions[MP1_HWIP][0] == IP_VERSION(13, 0 ,2)) && + likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP))) { r = amdgpu_discovery_set_smu_ip_blocks(adev); if (r) return r; -- 2.17.1