drm/amd/powerplay: check SMU engine readiness before proceeding on S3 resume
This is especially needed for non-psp loading way. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
0e0b89c0d7
commit
f7e3a5776f
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user