Commit f7e3a577 authored by Evan Quan's avatar Evan Quan Committed by Alex Deucher

drm/amd/powerplay: check SMU engine readiness before proceeding on S3 resume

This is especially needed for non-psp loading way.
Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 0e0b89c0
......@@ -1213,11 +1213,10 @@ static int smu_free_memory_pool(struct smu_context *smu)
return ret;
}
static int smu_hw_init(void *handle)
static int smu_start_smc_engine(struct smu_context *smu)
{
int ret;
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
struct smu_context *smu = &adev->smu;
struct amdgpu_device *adev = smu->adev;
int ret = 0;
if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) {
if (adev->asic_type < CHIP_NAVI10) {
......@@ -1228,8 +1227,21 @@ static int smu_hw_init(void *handle)
}
ret = smu_check_fw_status(smu);
if (ret)
pr_err("SMC is not ready\n");
return ret;
}
static int smu_hw_init(void *handle)
{
int ret;
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
struct smu_context *smu = &adev->smu;
ret = smu_start_smc_engine(smu);
if (ret) {
pr_err("SMC firmware status is not correct\n");
pr_err("SMU is not ready yet!\n");
return ret;
}
......@@ -1381,6 +1393,12 @@ static int smu_resume(void *handle)
mutex_lock(&smu->mutex);
ret = smu_start_smc_engine(smu);
if (ret) {
pr_err("SMU is not ready yet!\n");
return ret;
}
ret = smu_smc_table_hw_init(smu, false);
if (ret)
goto failed;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment