diff --git a/sys/dev/drm/amd/powerplay/hwmgr/vega12_hwmgr.c b/sys/dev/drm/amd/powerplay/hwmgr/vega12_hwmgr.c --- a/sys/dev/drm/amd/powerplay/hwmgr/vega12_hwmgr.c +++ b/sys/dev/drm/amd/powerplay/hwmgr/vega12_hwmgr.c @@ -1969,8 +1969,12 @@ /* Hardmin is dependent on displayconfig */ if (disable_mclk_switching) { + if (dpm_table->count == 0) + return -EINVAL; dpm_table->dpm_state.hard_min_level = dpm_table->dpm_levels[dpm_table->count - 1].value; - for (i = 0; i < data->mclk_latency_table.count - 1; i++) { + for (i = 0; i < data->mclk_latency_table.count && + i < dpm_table->count && + i < MAX_REGULAR_DPM_NUMBER - 1; i++) { if (data->mclk_latency_table.entries[i].latency <= latency) { if (dpm_table->dpm_levels[i].value >= (hwmgr->display_config->min_mem_set_clock / 100)) { dpm_table->dpm_state.hard_min_level = dpm_table->dpm_levels[i].value; @@ -1980,8 +1984,11 @@ } } - if (hwmgr->display_config->nb_pstate_switch_disable) + if (hwmgr->display_config->nb_pstate_switch_disable) { + if (dpm_table->count == 0) + return -EINVAL; dpm_table->dpm_state.hard_min_level = dpm_table->dpm_levels[dpm_table->count - 1].value; + } /* vclk */ dpm_table = &(data->dpm_table.vclk_table);