summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C16
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H33
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H2
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
OpenPOWER on IntegriCloud