summaryrefslogtreecommitdiffstats
path: root/src/usr/fsiscom
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2014-04-10 09:16:03 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-06-23 15:24:15 -0500
commit02c81ca3e1e06b910c58905bcab913d30b0a5337 (patch)
treed301ae5056413e37daf15c3dc8cbae8ac1b74c45 /src/usr/fsiscom
parent0ea3be7d289e8e19aae6a426b65ec91a925ea11a (diff)
downloadtalos-hostboot-02c81ca3e1e06b910c58905bcab913d30b0a5337.tar.gz
talos-hostboot-02c81ca3e1e06b910c58905bcab913d30b0a5337.zip
More FFDC for SCOM Fails
Added more address-specific FFDC collection logic to handle more specific error scenarios we've seen or talked about. Change-Id: Ifcc2b98b9c55ed5e6a35d1556cd530438ec120c2 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11257 Tested-by: Jenkins Server Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/fsiscom')
-rw-r--r--src/usr/fsiscom/fsiscom.C17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/usr/fsiscom/fsiscom.C b/src/usr/fsiscom/fsiscom.C
index 962cfd5ab..aade95479 100644
--- a/src/usr/fsiscom/fsiscom.C
+++ b/src/usr/fsiscom/fsiscom.C
@@ -60,9 +60,19 @@ union ioData6432
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
+/**
+ * @brief Common function to add callouts and FFDC and recover
+ * from PIB errors
+ *
+ * @param[in] i_target SCom target
+ * @param[in] i_errlog Error log to append to
+ * @param[in] i_status FSI2PIB status register
+ * @param[in] i_scomAddr Address that we failed on
+ */
void pib_error_handler( TARGETING::Target* i_target,
errlHndl_t i_errlog,
- uint32_t i_status )
+ uint32_t i_status,
+ uint32_t i_scomAddr )
{
//Add this target to the FFDC
ERRORLOG::ErrlUserDetailsTarget(i_target,"SCOM Target").addToLog(i_errlog);
@@ -100,6 +110,7 @@ void pib_error_handler( TARGETING::Target* i_target,
uint32_t pib_error = i_status >> 12;
PIB::addFruCallouts( i_target,
pib_error,
+ i_scomAddr,
i_errlog );
//Grab the PIB2OPB Status reg for a Resource Occupied error
@@ -294,7 +305,7 @@ errlHndl_t fsiScomPerformOp(DeviceFW::OperationType i_opType,
l_status));
// call common error handler to do callouts and recovery
- pib_error_handler( i_target, l_err, l_status );
+ pib_error_handler( i_target, l_err, l_status, l_scomAddr );
//Grab the PIB2OPB Status reg for a XSCOM Block error
if( (l_status & 0x00007000) == 0x00001000 ) //piberr=001
@@ -381,7 +392,7 @@ errlHndl_t fsiScomPerformOp(DeviceFW::OperationType i_opType,
l_status));
// call common error handler to do callouts and recovery
- pib_error_handler( i_target, l_err, l_status );
+ pib_error_handler( i_target, l_err, l_status, l_scomAddr );
break;
}
OpenPOWER on IntegriCloud