DF-1368 / fix.diff
diff --git a/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c b/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c --- a/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c +++ b/sys/dev/drm/amd/powerplay/smumgr/vegam_smumgr.c @@ -512,7 +512,8 @@ * We are populating vddc CAC data to BapmVddc table * in split and merged mode */ - for (count = 0; count < lookup_table->count; count++) { + for (count = 0; count < lookup_table->count && + count < SMU75_MAX_LEVELS_VDDC; count++) { index = phm_get_voltage_index(lookup_table, data->vddc_voltage_table.entries[count].value); table->BapmVddcVidLoSidd[count] = @@ -1512,7 +1513,7 @@ ro = efuse * (max - min) / 255 + min; /* Populate Sclk_CKS_masterEn0_7 and Sclk_voltageOffset */ - for (i = 0; i < sclk_table->count; i++) { + for (i = 0; i < sclk_table->count && i < NUM_VFT_COLUMNS; i++) { smu_data->smc_state_table.Sclk_CKS_masterEn0_7 |= sclk_table->entries[i].cks_enable << i; volt_without_cks = (uint32_t)((2753594000U + (sclk_table->entries[i].clk/100) * @@ -1633,7 +1634,7 @@ AVFS_meanNsigma.Platform_sigma = PP_HOST_TO_SMC_US(avfs_params.usAVFS_meanNsigma_Platform_sigma); - for (i = 0; i < sclk_table->count; i++) { + for (i = 0; i < sclk_table->count && i < NUM_VFT_COLUMNS; i++) { AVFS_meanNsigma.Static_Voltage_Offset[i] = (uint8_t)(sclk_table->entries[i].cks_voffset * 100 / 625); AVFS_SclkOffset.Sclk_Offset[i] = |