[AMD Official Use Only - General] Reviewed-by: Evan Quan <evan.quan@xxxxxxx> > -----Original Message----- > From: Deucher, Alexander <Alexander.Deucher@xxxxxxx> > Sent: Tuesday, February 7, 2023 1:05 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Quan, Evan > <Evan.Quan@xxxxxxx> > 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@xxxxxxx> > 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@xxxxxxx> > --- > .../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