In vega10_populate_smc_link_levels(): there's this bit j = i - 1; while (i < NUM_LINK_LEVELS) { pp_table->PcieGenSpeed[i] = pcie_table->pcie_gen[j]; pp_table->PcieLaneCount[i] = pcie_table->pcie_lane[j]; result = vega10_populate_single_lclk_level(hwmgr, pcie_table->lclk[j], &(pp_table->LclkDid[i])); if (result) { pr_info("Populate LClock Level %d Failed!\n", i); return result; } i++; } It seems 'j' isn't changing so it's spamming multiple entries in the lclkdid[] array based on the same entries from the pcie_table->pcie*[j]. Is that intentional or is a ++ or -- to j missing? Cheers, Tom