Since 'smu_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT)' will always return
false considering the 'smu_system_features_control(smu, false)' disabled
all SMU features.

Change-Id: I73956ffa51d6da8375c7c377895a221e13d31594
Signed-off-by: Evan Quan <evan.q...@amd.com>
---
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c 
b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index 7c84d48c19e6..6d4c99b016f9 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -1489,7 +1489,18 @@ static int smu_disable_dpm(struct smu_context *smu)
 
        /* For baco, need to leave BACO feature enabled */
        if (use_baco) {
-               if (smu_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT)) {
+               /*
+                * Correct the way for checking whether SMU_FEATURE_BACO_BIT
+                * is supported.
+                *
+                * Since 'smu_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT)' 
will
+                * always return false as the 'smu_system_features_control(smu, 
false)'
+                * was just issued above which disabled all SMU features.
+                *
+                * Thus 'smu_feature_get_index(smu, SMU_FEATURE_BACO_BIT)' is 
used
+                * now for the checking.
+                */
+               if (smu_feature_get_index(smu, SMU_FEATURE_BACO_BIT) >= 0) {
                        ret = smu_feature_set_enabled(smu, 
SMU_FEATURE_BACO_BIT, true);
                        if (ret) {
                                pr_warn("set BACO feature enabled failed, 
return %d\n", ret);
-- 
2.25.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to