mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
drm/amdgpu/swsmu: Only force workload setup on init
commitcb07c8338fupstream. 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:c50fe289ed("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> (cherry picked from commit580ad7cbd4) Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0085f00b91
commit
c1e3d88caa
@@ -2226,7 +2226,7 @@ static int smu_bump_power_profile_mode(struct smu_context *smu,
|
|||||||
static int smu_adjust_power_state_dynamic(struct smu_context *smu,
|
static int smu_adjust_power_state_dynamic(struct smu_context *smu,
|
||||||
enum amd_dpm_forced_level level,
|
enum amd_dpm_forced_level level,
|
||||||
bool skip_display_settings,
|
bool skip_display_settings,
|
||||||
bool force_update)
|
bool init)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
@@ -2255,7 +2255,7 @@ static int smu_adjust_power_state_dynamic(struct smu_context *smu,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (force_update || smu_dpm_ctx->dpm_level != level) {
|
if (smu_dpm_ctx->dpm_level != level) {
|
||||||
ret = smu_asic_set_performance_level(smu, level);
|
ret = smu_asic_set_performance_level(smu, level);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(smu->adev->dev, "Failed to set performance level!");
|
dev_err(smu->adev->dev, "Failed to set performance level!");
|
||||||
@@ -2272,7 +2272,7 @@ static int smu_adjust_power_state_dynamic(struct smu_context *smu,
|
|||||||
index = index > 0 && index <= WORKLOAD_POLICY_MAX ? index - 1 : 0;
|
index = index > 0 && index <= WORKLOAD_POLICY_MAX ? index - 1 : 0;
|
||||||
workload[0] = smu->workload_setting[index];
|
workload[0] = smu->workload_setting[index];
|
||||||
|
|
||||||
if (force_update || smu->power_profile_mode != workload[0])
|
if (init || smu->power_profile_mode != workload[0])
|
||||||
smu_bump_power_profile_mode(smu, workload, 0);
|
smu_bump_power_profile_mode(smu, workload, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user