diff options
Diffstat (limited to 'src')
3 files changed, 49 insertions, 2 deletions
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C index 5814e3cc0..aee6401d0 100755 --- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C +++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C @@ -64,6 +64,19 @@ void invalidateNonMatchingFailLanes(std::vector<uint8_t>& io_endp1_txFaillanes, std::vector<uint8_t>::iterator l_itDrv; std::vector<uint8_t>::iterator l_itRcv; + FAPI_INF("invalidateNonMatchingFailLanes - endp1Tx size:%llu endp2Rx size:%llu", + io_endp1_txFaillanes.size(), io_endp2_rxFaillanes.size()); + + for(unsigned long i = 0; (i < io_endp1_txFaillanes.size() && io_endp1_txFaillanes.size() != 0); i++) + { + FAPI_INF("Endp1Tx(%lu):%llu ", i, io_endp1_txFaillanes[i]); + } + + for(unsigned long i = 0; (i < io_endp2_rxFaillanes.size() && io_endp2_rxFaillanes.size() != 0); i++) + { + FAPI_INF("Endp2Rx(%lu):%llu ", i, io_endp2_rxFaillanes[i]); + } + o_invalidFails_inTx_Ofendp1 = false; o_invalidFails_inRx_Ofendp2 = false; @@ -149,6 +162,9 @@ void combineFieldandMnfgLanes(std::vector<uint8_t>& i_mnfgFaillanes, { std::vector<uint8_t>::iterator l_it; + FAPI_INF("combineFieldandMnfgLanes - mnfgFailLanes size:%llu fieldFailLanes size:%llu", + i_mnfgFaillanes.size(), i_fieldFaillanes.size()); + // Merge the Field and Mnfg fail lanes l_it = o_allFaillanes.begin(); o_allFaillanes.insert(l_it, diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H index 4b8303c2f..aabb7613f 100755 --- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H +++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H @@ -1043,7 +1043,7 @@ fapi2::ReturnCode erepairGetRestoreLanes( fapi2::TargetType l_endp1_tgtType = fapi2::TARGET_TYPE_NONE; fapi2::TargetType l_endp2_tgtType = fapi2::TARGET_TYPE_NONE; - FAPI_DBG(">>erepairGetRestoreLanes"); + FAPI_INF(">>erepairGetRestoreLanes - ClkGrp:%d", i_clkGroup); FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_MNFG_FLAGS, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), @@ -1206,6 +1206,37 @@ fapi2::ReturnCode erepairGetRestoreLanes( } // end of else block of "if(l_mnfgModeIPL)" + /***** Remove invalid lane numbers *****/ + + // Check if there are invalid lanes in Tx side of endp1. + // If found, erase them from the vector + o_endp1_txFaillanes.erase(std::remove(o_endp1_txFaillanes.begin(), + o_endp1_txFaillanes.end(), + EREPAIR::INVALID_FAIL_LANE_NUMBER), + o_endp1_txFaillanes.end()); + + // Check if there are invalid lanes in Rx side of endp1. + // If found, erase them from the vector + o_endp1_rxFaillanes.erase(std::remove(o_endp1_rxFaillanes.begin(), + o_endp1_rxFaillanes.end(), + EREPAIR::INVALID_FAIL_LANE_NUMBER), + o_endp1_rxFaillanes.end()); + + // Check if there are invalid lanes in Tx side of endp2. + // If found, erase them from the vector + o_endp2_txFaillanes.erase(std::remove(o_endp2_txFaillanes.begin(), + o_endp2_txFaillanes.end(), + EREPAIR::INVALID_FAIL_LANE_NUMBER), + o_endp2_txFaillanes.end()); + + // Check if there are invalid lanes in Rx side of endp2. + // If found, erase them from the vector + o_endp2_rxFaillanes.erase(std::remove(o_endp2_rxFaillanes.begin(), + o_endp2_rxFaillanes.end(), + EREPAIR::INVALID_FAIL_LANE_NUMBER), + o_endp2_rxFaillanes.end()); + + /***** Check for threshold exceed conditions *****/ // Get the eRepair threshold limit diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H index 93df0bf3c..65f3bef6e 100755 --- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H +++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H @@ -44,7 +44,7 @@ namespace EREPAIR { -const uint8_t INVALID_FAIL_LANE_NUMBER = 0; +const uint8_t INVALID_FAIL_LANE_NUMBER = 0xFF; // X-Bus is 16+1 lanes wide in 2 byte mode // Data lanes numbering: 0 - 15 in 2 byte mode |