[PATCH] drm/amd/pm/smu7: move variables to where they are used

Quan, Evan Evan.Quan at amd.com
Tue Feb 7 03:44:13 UTC 2023


[AMD Official Use Only - General]

Reviewed-by: Evan Quan <evan.quan at amd.com>

> -----Original Message-----
> From: Deucher, Alexander <Alexander.Deucher at amd.com>
> Sent: Tuesday, February 7, 2023 1:05 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Quan, Evan
> <Evan.Quan at amd.com>
> Subject: [PATCH] drm/amd/pm/smu7: move variables to where they are
> used
> 
> Move variable declarations to where they are used.  Fixes
> a segfault on smu7 V0 structures where some tables don't
> exist.
> 
> Cc: Evan Quan <evan.quan at amd.com>
> Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/2388
> Fixes: 711d3c39503b ("drm/amd/pm: fulfill powerplay peak profiling mode
> shader/memory clock settings")
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>  .../gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c    | 14 ++++++++--
> ----
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
> b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
> index 89fc32318d80..e10cc5e7928e 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
> @@ -1504,12 +1504,6 @@ static void
> smu7_populate_umdpstate_clocks(struct pp_hwmgr *hwmgr)
>  {
>  	struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr-
> >backend);
>  	struct smu7_dpm_table *golden_dpm_table = &data-
> >golden_dpm_table;
> -	struct phm_clock_voltage_dependency_table
> *vddc_dependency_on_sclk =
> -			hwmgr->dyn_state.vddc_dependency_on_sclk;
> -	struct phm_ppt_v1_information *table_info =
> -			(struct phm_ppt_v1_information *)(hwmgr-
> >pptable);
> -	struct phm_ppt_v1_clock_voltage_dependency_table
> *vdd_dep_on_sclk =
> -			table_info->vdd_dep_on_sclk;
>  	int32_t tmp_sclk, count, percentage;
> 
>  	if (golden_dpm_table->mclk_table.count == 1) {
> @@ -1524,6 +1518,9 @@ static void
> smu7_populate_umdpstate_clocks(struct pp_hwmgr *hwmgr)
>  	tmp_sclk = hwmgr->pstate_mclk * percentage / 100;
> 
>  	if (hwmgr->pp_table_version == PP_TABLE_V0) {
> +		struct phm_clock_voltage_dependency_table
> *vddc_dependency_on_sclk =
> +			hwmgr->dyn_state.vddc_dependency_on_sclk;
> +
>  		for (count = vddc_dependency_on_sclk->count - 1; count >=
> 0; count--) {
>  			if (tmp_sclk >= vddc_dependency_on_sclk-
> >entries[count].clk) {
>  				hwmgr->pstate_sclk =
> vddc_dependency_on_sclk->entries[count].clk;
> @@ -1536,6 +1533,11 @@ static void
> smu7_populate_umdpstate_clocks(struct pp_hwmgr *hwmgr)
>  		hwmgr->pstate_sclk_peak =
>  			vddc_dependency_on_sclk-
> >entries[vddc_dependency_on_sclk->count - 1].clk;
>  	} else if (hwmgr->pp_table_version == PP_TABLE_V1) {
> +		struct phm_ppt_v1_information *table_info =
> +			(struct phm_ppt_v1_information *)(hwmgr-
> >pptable);
> +		struct phm_ppt_v1_clock_voltage_dependency_table
> *vdd_dep_on_sclk =
> +			table_info->vdd_dep_on_sclk;
> +
>  		for (count = vdd_dep_on_sclk->count - 1; count >= 0; count--)
> {
>  			if (tmp_sclk >= vdd_dep_on_sclk->entries[count].clk)
> {
>  				hwmgr->pstate_sclk = vdd_dep_on_sclk-
> >entries[count].clk;
> --
> 2.39.1


More information about the amd-gfx mailing list