43 lines
2.0 KiB
Diff
43 lines
2.0 KiB
Diff
|
From 3c881c7323af4269aa58848dd9da694d5a73d353 Mon Sep 17 00:00:00 2001
|
||
|
From: Alex Deucher <alexander.deucher@amd.com>
|
||
|
Date: Thu, 3 Oct 2024 09:57:38 -0400
|
||
|
Subject: drm/amdgpu/swsmu: default to fullscreen 3D profile for dGPUs
|
||
|
|
||
|
This uses more aggressive hueristics than the the bootup default
|
||
|
profile. On windows the OS has a special fullscreen 3D mode
|
||
|
where this is used. Since we don't have the equivalent on Linux
|
||
|
default to this profile for dGPUs.
|
||
|
|
||
|
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3618
|
||
|
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1500
|
||
|
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3131
|
||
|
Fixes: c50fe289ed72 ("drm/amdgpu/swsmu: always force a state reprogram on init")
|
||
|
Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
|
||
|
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||
|
---
|
||
|
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 6 +++++-
|
||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||
|
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
|
||
|
@@ -1257,7 +1257,6 @@ static int smu_sw_init(void *handle)
|
||
|
atomic_set(&smu->smu_power.power_gate.vpe_gated, 1);
|
||
|
atomic_set(&smu->smu_power.power_gate.umsch_mm_gated, 1);
|
||
|
|
||
|
- smu->workload_mask = 1 << smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT];
|
||
|
smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT] = 0;
|
||
|
smu->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D] = 1;
|
||
|
smu->workload_prority[PP_SMC_POWER_PROFILE_POWERSAVING] = 2;
|
||
|
@@ -1266,6 +1265,11 @@ static int smu_sw_init(void *handle)
|
||
|
smu->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 5;
|
||
|
smu->workload_prority[PP_SMC_POWER_PROFILE_CUSTOM] = 6;
|
||
|
|
||
|
+ if (smu->is_apu)
|
||
|
+ 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];
|
||
|
+
|
||
|
smu->workload_setting[0] = PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT;
|
||
|
smu->workload_setting[1] = PP_SMC_POWER_PROFILE_FULLSCREEN3D;
|
||
|
smu->workload_setting[2] = PP_SMC_POWER_PROFILE_POWERSAVING;
|