Since DAL settings come between .hw_init and .late_init of SMU. And DAL needs to know the maximum sustainable clocks. Change-Id: I0702b7332a0d7c0b29dfdf4999c18efb588b8862 Signed-off-by: Evan Quan <evan.quan@xxxxxxx> Reported-by: Flora Cui <flora.cui@xxxxxxx> --- drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c index 725ac90c0f36..6beae3b496be 100644 --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c @@ -819,12 +819,6 @@ static int smu_late_init(void *handle) return ret; } - ret = smu_init_max_sustainable_clocks(smu); - if (ret) { - dev_err(adev->dev, "Failed to init max sustainable clocks!\n"); - return ret; - } - ret = smu_populate_umd_state_clk(smu); if (ret) { dev_err(adev->dev, "Failed to populate UMD state clocks!\n"); @@ -1364,6 +1358,19 @@ static int smu_hw_init(void *handle) return ret; } + /* + * Move maximum sustainable clock retrieving here considering + * 1. It is not needed on resume(from S3). + * 2. DAL settings come between .hw_init and .late_init of SMU. + * And DAL needs to know the maximum sustainable clocks. Thus + * it cannot be put in .late_init(). + */ + ret = smu_init_max_sustainable_clocks(smu); + if (ret) { + dev_err(adev->dev, "Failed to init max sustainable clocks!\n"); + return ret; + } + adev->pm.dpm_enabled = true; dev_info(adev->dev, "SMU is initialized successfully!\n"); -- 2.27.0 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx