Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu/swsmu: Only force workload setup on init

Needed to set the workload type at init time so that
we can apply the navi3x margin optimization.

Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3618
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>

+3 -3
+3 -3
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
··· 2232 2232 static int smu_adjust_power_state_dynamic(struct smu_context *smu, 2233 2233 enum amd_dpm_forced_level level, 2234 2234 bool skip_display_settings, 2235 - bool force_update) 2235 + bool init) 2236 2236 { 2237 2237 int ret = 0; 2238 2238 int index = 0; ··· 2261 2261 } 2262 2262 } 2263 2263 2264 - if (force_update || smu_dpm_ctx->dpm_level != level) { 2264 + if (smu_dpm_ctx->dpm_level != level) { 2265 2265 ret = smu_asic_set_performance_level(smu, level); 2266 2266 if (ret) { 2267 2267 dev_err(smu->adev->dev, "Failed to set performance level!"); ··· 2278 2278 index = index > 0 && index <= WORKLOAD_POLICY_MAX ? index - 1 : 0; 2279 2279 workload[0] = smu->workload_setting[index]; 2280 2280 2281 - if (force_update || smu->power_profile_mode != workload[0]) 2281 + if (init || smu->power_profile_mode != workload[0]) 2282 2282 smu_bump_power_profile_mode(smu, workload, 0); 2283 2283 } 2284 2284