diff --git a/sys/dev/drm/radeon/kv_dpm.c b/sys/dev/drm/radeon/kv_dpm.c --- a/sys/dev/drm/radeon/kv_dpm.c +++ b/sys/dev/drm/radeon/kv_dpm.c @@ -2352,7 +2352,7 @@ u32 vid_2bit; pi->graphics_dpm_level_count = 0; - for (i = 0; i < table->count; i++) { + for (i = 0; i < table->count && i < SMU__NUM_SCLK_DPM_STATE; i++) { if (pi->high_voltage_t && (pi->high_voltage_t < kv_convert_8bit_index_to_voltage(rdev, table->entries[i].v))) @@ -2363,7 +2363,7 @@ &pi->sys_info.vid_mapping_table, table->entries[i].v); kv_set_vid(rdev, i, vid_2bit); - kv_set_at(rdev, i, pi->at[i]); + kv_set_at(rdev, i, (i < SUMO_MAX_HARDWARE_POWERLEVELS) ? pi->at[i] : 0); kv_dpm_power_level_enabled_for_throttle(rdev, i, true); pi->graphics_dpm_level_count++; } @@ -2372,7 +2372,7 @@ &pi->sys_info.sclk_voltage_mapping_table; pi->graphics_dpm_level_count = 0; - for (i = 0; i < table->num_max_dpm_entries; i++) { + for (i = 0; i < table->num_max_dpm_entries && i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) { if (pi->high_voltage_t && pi->high_voltage_t < kv_convert_2bit_index_to_voltage(rdev, table->entries[i].vid_2bit))