summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf
diff options
context:
space:
mode:
authorBenjamin Weisenbeck <bweisenb@us.ibm.com>2013-05-23 14:53:31 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-06-11 08:55:15 -0500
commit9f501a4a60af8ff4da2e7a67d2b85057626ac062 (patch)
tree91a370abe4586b9dcc2bc704dd779e6128cbd734 /src/usr/diag/prdf
parent879e709081b0474fd6cafd35378fb601481aeac7 (diff)
downloadtalos-hostboot-9f501a4a60af8ff4da2e7a67d2b85057626ac062.tar.gz
talos-hostboot-9f501a4a60af8ff4da2e7a67d2b85057626ac062.zip
PRD: Enable erepair code on FSP
Change-Id: I4d907e99c498e0c1ba0b0a59870fa2451d2fbb54 RTC: 64173 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4689 Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: Christopher T. Phan <cphan@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4930
Diffstat (limited to 'src/usr/diag/prdf')
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C40
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H8
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C3
3 files changed, 29 insertions, 22 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C
index 89c8b6ac1..140beebbd 100755
--- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C
+++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C
@@ -42,13 +42,11 @@
#include <dimmBadDqBitmapFuncs.H> // for dimm[S|G]etBadDqBitmap()
-//FIXME RTC:64173 - erepair code not in FSP yet
-#ifdef __HOSTBOOT_MODULE
#include <io_read_erepair.H>
#include <io_power_down_lanes.H>
#include <io_clear_firs.H>
#include <erepairAccessorHwpFuncs.H>
-#endif
+#include <io_fir_isolation.H>
using namespace TARGETING;
@@ -116,13 +114,10 @@ int32_t readErepair(TargetHandle_t i_rxBusTgt,
int32_t o_rc = SUCCESS;
errlHndl_t err = NULL;
- //FIXME RTC:64173 - erepair code not in FSP yet
-#ifdef __HOSTBOOT_MODULE
PRD_FAPI_TO_ERRL(err,
io_read_erepair,
getFapiTarget(i_rxBusTgt),
o_rxFailLanes);
-#endif
if(NULL != err)
{
@@ -140,12 +135,9 @@ int32_t clearIOFirs(TargetHandle_t i_rxBusTgt)
int32_t o_rc = SUCCESS;
errlHndl_t err = NULL;
- //FIXME RTC:64173 - erepair code not in FSP yet
-#ifdef __HOSTBOOT_MODULE
PRD_FAPI_TO_ERRL(err,
io_clear_firs,
getFapiTarget(i_rxBusTgt));
-#endif
if(NULL != err)
{
@@ -165,14 +157,11 @@ int32_t powerDownLanes(TargetHandle_t i_rxBusTgt,
int32_t o_rc = SUCCESS;
errlHndl_t err = NULL;
- //FIXME RTC:64173 - erepair code not in FSP yet
-#ifdef __HOSTBOOT_MODULE
PRD_FAPI_TO_ERRL(err,
io_power_down_lanes,
getFapiTarget(i_rxBusTgt),
i_txFailLanes,
i_rxFailLanes);
-#endif
if(NULL != err)
{
@@ -192,14 +181,11 @@ int32_t getVpdFailedLanes(TargetHandle_t i_rxBusTgt,
int32_t o_rc = SUCCESS;
errlHndl_t err = NULL;
- //FIXME RTC:64173 - erepair code not in FSP yet
-#ifdef __HOSTBOOT_MODULE
PRD_FAPI_TO_ERRL(err,
erepairGetFailedLanes,
getFapiTarget(i_rxBusTgt),
o_rxFailLanes,
o_txFailLanes);
-#endif
if(NULL != err)
{
@@ -220,15 +206,12 @@ int32_t setVpdFailedLanes(TargetHandle_t i_rxBusTgt,
int32_t o_rc = SUCCESS;
errlHndl_t err = NULL;
- //FIXME interface being updated in RTC59554
- /*
PRD_FAPI_TO_ERRL(err,
erepairSetFailedLanes,
- getFapiTarget(i_rxBusTgt),
getFapiTarget(i_txBusTgt),
- o_rxFailLanes,
+ getFapiTarget(i_rxBusTgt),
+ i_rxFailLanes,
o_thrExceeded);
- */
if(NULL != err)
{
PRDF_ERR( "[PlatServices::setVpdFailedLanes] rxHUID: 0x%08x "
@@ -240,6 +223,23 @@ int32_t setVpdFailedLanes(TargetHandle_t i_rxBusTgt,
return o_rc;
}
+int32_t erepairFirIsolation(TargetHandle_t i_rxBusTgt)
+{
+ errlHndl_t err = NULL;
+
+ PRD_FAPI_TO_ERRL(err, io_fir_isolation, getFapiTarget(i_rxBusTgt));
+
+ if(NULL != err)
+ {
+ PRDF_TRAC( "[PlatServices::setVpdFailedLanes] rxHUID: 0x%08x "
+ "committing io_fir_isolation log",
+ getHuid(i_rxBusTgt));
+ PRDF_COMMIT_ERRL( err, ERRL_ACTION_REPORT );
+ }
+
+ // Return SUCCESS since we expect this procedure to generate an error
+ return SUCCESS;
+}
//##############################################################################
//## Memory specific functions
//##############################################################################
diff --git a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H
index 2583b456a..50e27a8d0 100755
--- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H
+++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H
@@ -177,6 +177,14 @@ int32_t setVpdFailedLanes(TARGETING::TargetHandle_t i_rxBusTgt,
std::vector<uint8_t> &i_rxFailLanes,
bool & o_thrExceeded);
+/**
+ * @brief Calls io_fir_isolation HWP and commits FAPI errorlog containing
+ * additional FFDC
+ * @param i_rxBusTgt Target of the receiving end of the bus
+ * @return SUCCESS
+ */
+int32_t erepairFirIsolation(TARGETING::TargetHandle_t i_rxBusTgt);
+
//##############################################################################
//## Memory specific functions
//##############################################################################
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
index a0cd276b6..a76413ec6 100644
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
@@ -239,11 +239,10 @@ int32_t handleLaneRepairEvent (ExtensibleChip * i_chip,
} while (0);
- //FIXME RTC:64173 - Add call to io_fir_isolation when available
-
// Clear FIRs
if (rxBusTgt)
{
+ l_rc |= erepairFirIsolation(rxBusTgt);
l_rc |= clearIOFirs(rxBusTgt);
}
OpenPOWER on IntegriCloud