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.q...@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.deuc...@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

Reply via email to