Commit 5bd8e05f authored by Yifan Zhang's avatar Yifan Zhang Committed by Alex Deucher

drm/amd/pm: call smu_cmn_get_smc_version in is_mode1_reset_supported.

is_mode1_reset_supported may be called before smu init, when smu_context
is unitialized in driver load/unload test. Call smu_cmn_get_smc_version
explicitly in is_mode1_reset_supported.

v2: apply to aldebaran in case is_mode1_reset_supported will be
uncommented (Candice Li)

Fixes: 710d9cae ("drm/amd/pm: drop most smu_cmn_get_smc_version in smu")
Signed-off-by: default avatarYifan Zhang <yifan1.zhang@amd.com>
Reviewed-by: default avatarCandice Li <candice.li@amd.com>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2cea7bb9
...@@ -2461,12 +2461,18 @@ static bool sienna_cichlid_is_mode1_reset_supported(struct smu_context *smu) ...@@ -2461,12 +2461,18 @@ static bool sienna_cichlid_is_mode1_reset_supported(struct smu_context *smu)
{ {
struct amdgpu_device *adev = smu->adev; struct amdgpu_device *adev = smu->adev;
uint32_t val; uint32_t val;
uint32_t smu_version;
int ret;
/** /**
* SRIOV env will not support SMU mode1 reset * SRIOV env will not support SMU mode1 reset
* PM FW support mode1 reset from 58.26 * PM FW support mode1 reset from 58.26
*/ */
if (amdgpu_sriov_vf(adev) || (smu->smc_fw_version < 0x003a1a00)) ret = smu_cmn_get_smc_version(smu, NULL, &smu_version);
if (ret)
return false;
if (amdgpu_sriov_vf(adev) || (smu_version < 0x003a1a00))
return false; return false;
/** /**
......
...@@ -1931,11 +1931,19 @@ static bool aldebaran_is_mode1_reset_supported(struct smu_context *smu) ...@@ -1931,11 +1931,19 @@ static bool aldebaran_is_mode1_reset_supported(struct smu_context *smu)
#if 0 #if 0
struct amdgpu_device *adev = smu->adev; struct amdgpu_device *adev = smu->adev;
uint32_t val; uint32_t val;
uint32_t smu_version;
int ret;
/** /**
* PM FW version support mode1 reset from 68.07 * PM FW version support mode1 reset from 68.07
*/ */
if ((smu->smc_fw_version < 0x00440700)) ret = smu_cmn_get_smc_version(smu, NULL, &smu_version);
if (ret)
return false; return false;
if ((smu_version < 0x00440700))
return false;
/** /**
* mode1 reset relies on PSP, so we should check if * mode1 reset relies on PSP, so we should check if
* PSP is alive. * PSP is alive.
......
...@@ -2615,13 +2615,19 @@ static int smu_v13_0_0_baco_exit(struct smu_context *smu) ...@@ -2615,13 +2615,19 @@ static int smu_v13_0_0_baco_exit(struct smu_context *smu)
static bool smu_v13_0_0_is_mode1_reset_supported(struct smu_context *smu) static bool smu_v13_0_0_is_mode1_reset_supported(struct smu_context *smu)
{ {
struct amdgpu_device *adev = smu->adev; struct amdgpu_device *adev = smu->adev;
u32 smu_version;
int ret;
/* SRIOV does not support SMU mode1 reset */ /* SRIOV does not support SMU mode1 reset */
if (amdgpu_sriov_vf(adev)) if (amdgpu_sriov_vf(adev))
return false; return false;
/* PMFW support is available since 78.41 */ /* PMFW support is available since 78.41 */
if (smu->smc_fw_version < 0x004e2900) ret = smu_cmn_get_smc_version(smu, NULL, &smu_version);
if (ret)
return false;
if (smu_version < 0x004e2900)
return false; return false;
return true; return true;
......
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