diff --git a/patches.kernel.org/6.2.12-121-drm-amd-pm-correct-SMU13.0.7-max-shader-clock-.patch b/patches.kernel.org/6.2.12-121-drm-amd-pm-correct-SMU13.0.7-max-shader-clock-.patch new file mode 100644 index 0000000..38171f2 --- /dev/null +++ b/patches.kernel.org/6.2.12-121-drm-amd-pm-correct-SMU13.0.7-max-shader-clock-.patch @@ -0,0 +1,111 @@ +From: Horatio Zhang +Date: Thu, 6 Apr 2023 13:32:14 +0800 +Subject: [PATCH] drm/amd/pm: correct SMU13.0.7 max shader clock reporting +References: bsc#1012628 +Patch-mainline: 6.2.12 +Git-commit: 85e0689eb6b10cd3b2fb455d1b3f4d4d0b13ff78 + +commit 85e0689eb6b10cd3b2fb455d1b3f4d4d0b13ff78 upstream. + +Correct the max shader clock reporting on SMU +13.0.7. + +Signed-off-by: Horatio Zhang +Reviewed-by: Kenneth Feng +Signed-off-by: Alex Deucher +Cc: stable@vger.kernel.org # 6.1.x +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Jiri Slaby +--- + .../drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 61 ++++++++++++++++++- + 1 file changed, 60 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +index 37739f5e..4399416d 100644 +--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c ++++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +@@ -575,6 +575,14 @@ static int smu_v13_0_7_set_default_dpm_table(struct smu_context *smu) + dpm_table); + if (ret) + return ret; ++ ++ if (skutable->DriverReportedClocks.GameClockAc && ++ (dpm_table->dpm_levels[dpm_table->count - 1].value > ++ skutable->DriverReportedClocks.GameClockAc)) { ++ dpm_table->dpm_levels[dpm_table->count - 1].value = ++ skutable->DriverReportedClocks.GameClockAc; ++ dpm_table->max = skutable->DriverReportedClocks.GameClockAc; ++ } + } else { + dpm_table->count = 1; + dpm_table->dpm_levels[0].value = smu->smu_table.boot_values.gfxclk / 100; +@@ -828,6 +836,57 @@ static int smu_v13_0_7_get_smu_metrics_data(struct smu_context *smu, + return ret; + } + ++static int smu_v13_0_7_get_dpm_ultimate_freq(struct smu_context *smu, ++ enum smu_clk_type clk_type, ++ uint32_t *min, ++ uint32_t *max) ++{ ++ struct smu_13_0_dpm_context *dpm_context = ++ smu->smu_dpm.dpm_context; ++ struct smu_13_0_dpm_table *dpm_table; ++ ++ switch (clk_type) { ++ case SMU_MCLK: ++ case SMU_UCLK: ++ /* uclk dpm table */ ++ dpm_table = &dpm_context->dpm_tables.uclk_table; ++ break; ++ case SMU_GFXCLK: ++ case SMU_SCLK: ++ /* gfxclk dpm table */ ++ dpm_table = &dpm_context->dpm_tables.gfx_table; ++ break; ++ case SMU_SOCCLK: ++ /* socclk dpm table */ ++ dpm_table = &dpm_context->dpm_tables.soc_table; ++ break; ++ case SMU_FCLK: ++ /* fclk dpm table */ ++ dpm_table = &dpm_context->dpm_tables.fclk_table; ++ break; ++ case SMU_VCLK: ++ case SMU_VCLK1: ++ /* vclk dpm table */ ++ dpm_table = &dpm_context->dpm_tables.vclk_table; ++ break; ++ case SMU_DCLK: ++ case SMU_DCLK1: ++ /* dclk dpm table */ ++ dpm_table = &dpm_context->dpm_tables.dclk_table; ++ break; ++ default: ++ dev_err(smu->adev->dev, "Unsupported clock type!\n"); ++ return -EINVAL; ++ } ++ ++ if (min) ++ *min = dpm_table->min; ++ if (max) ++ *max = dpm_table->max; ++ ++ return 0; ++} ++ + static int smu_v13_0_7_read_sensor(struct smu_context *smu, + enum amd_pp_sensors sensor, + void *data, +@@ -1684,7 +1743,7 @@ static const struct pptable_funcs smu_v13_0_7_ppt_funcs = { + .dpm_set_jpeg_enable = smu_v13_0_set_jpeg_enable, + .init_pptable_microcode = smu_v13_0_init_pptable_microcode, + .populate_umd_state_clk = smu_v13_0_7_populate_umd_state_clk, +- .get_dpm_ultimate_freq = smu_v13_0_get_dpm_ultimate_freq, ++ .get_dpm_ultimate_freq = smu_v13_0_7_get_dpm_ultimate_freq, + .get_vbios_bootup_values = smu_v13_0_get_vbios_bootup_values, + .read_sensor = smu_v13_0_7_read_sensor, + .feature_is_enabled = smu_cmn_feature_is_enabled, +-- +2.35.3 + diff --git a/series.conf b/series.conf index c98751d..d952e77 100644 --- a/series.conf +++ b/series.conf @@ -2348,6 +2348,7 @@ patches.kernel.org/6.2.12-118-cgroup-cpuset-Make-cpuset_fork-handle-CLONE_IN.patch patches.kernel.org/6.2.12-119-cgroup-cpuset-Add-cpuset_can_fork-and-cpuset_c.patch patches.kernel.org/6.2.12-120-drm-amd-pm-correct-SMU13.0.7-pstate-profiling-.patch + patches.kernel.org/6.2.12-121-drm-amd-pm-correct-SMU13.0.7-max-shader-clock-.patch ######################################################## # Build fixes that apply to the vanilla kernel too.