--- a/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c +++ b/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c @@ vegam_populate_all_memory_levels @@ - uint32_t i; + uint32_t i, mclk_count; @@ - for (i = 0; i < dpm_table->mclk_table.count; i++) { + mclk_count = min(dpm_table->mclk_table.count, + (uint32_t)SMU75_MAX_LEVELS_MEMORY); + for (i = 0; i < mclk_count; i++) { @@ - smu_data->smc_state_table.MemoryDpmLevelCount = - (uint8_t)dpm_table->mclk_table.count; + smu_data->smc_state_table.MemoryDpmLevelCount = (uint8_t)mclk_count; @@ - for (i = 0; i < dpm_table->mclk_table.count; i++) + for (i = 0; i < mclk_count; i++) @@ - levels[dpm_table->mclk_table.count - 1].DisplayWatermark = + levels[mclk_count - 1].DisplayWatermark = PPSMC_DISPLAY_WATERMARK_HIGH;