Some devices do not support fullscreen 3D.

v2: Make the check generic.

Fixes: 336568de918e ("drm/amdgpu/swsmu: default to fullscreen 3D profile for 
dGPUs")
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Cc: Kenneth Feng <kenneth.f...@amd.com>
Cc: Lijo Lazar <lijo.la...@amd.com>
---
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c 
b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
index accc96a03bd9..8d4aee4e2287 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
@@ -1236,6 +1236,14 @@ static void smu_init_xgmi_plpd_mode(struct smu_context 
*smu)
        }
 }
 
+static bool smu_is_workload_profile_available(struct smu_context *smu,
+                                             u32 profile)
+{
+       if (profile >= PP_SMC_POWER_PROFILE_COUNT)
+               return false;
+       return smu->workload_map && smu->workload_map[profile].valid_mapping;
+}
+
 static int smu_sw_init(struct amdgpu_ip_block *ip_block)
 {
        struct amdgpu_device *adev = ip_block->adev;
@@ -1267,7 +1275,8 @@ static int smu_sw_init(struct amdgpu_ip_block *ip_block)
        smu->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 5;
        smu->workload_prority[PP_SMC_POWER_PROFILE_CUSTOM] = 6;
 
-       if (smu->is_apu)
+       if (smu->is_apu ||
+           !smu_is_workload_profile_available(smu, 
PP_SMC_POWER_PROFILE_FULLSCREEN3D))
                smu->workload_mask = 1 << 
smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT];
        else
                smu->workload_mask = 1 << 
smu->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D];
-- 
2.46.2

Reply via email to