summaryrefslogtreecommitdiffstats
path: root/src/usr/fsiscom
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/fsiscom')
-rw-r--r--src/usr/fsiscom/fsiscom.C26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/usr/fsiscom/fsiscom.C b/src/usr/fsiscom/fsiscom.C
index 983e2d838..d87a6f393 100644
--- a/src/usr/fsiscom/fsiscom.C
+++ b/src/usr/fsiscom/fsiscom.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2012 */
+/* COPYRIGHT International Business Machines Corp. 2011,2013 */
/* */
/* p1 */
/* */
@@ -209,6 +209,28 @@ errlHndl_t fsiScomPerformOp(DeviceFW::OperationType i_opType,
// it should be done (this layer or somewhere higher in the call stack?)
//@todo: May add recover actions later. Currently undefined
+ //Grab the PIB2OPB Status reg for a XSCOM Block error
+ if( (l_status & 0x00007000) == 0x00001000 ) //piberr=001
+ {
+ //@todo: Switch to external FSI FFDC interfaces RTC:35064
+ TARGETING::Target* l_master = NULL;
+ TARGETING::targetService().
+ masterProcChipTargetHandle(l_master);
+
+ uint64_t scomdata = 0;
+ size_t scomsize = sizeof(uint64_t);
+ errlHndl_t l_err2 = DeviceFW::deviceOp( DeviceFW::READ,
+ l_master,
+ &scomdata,
+ scomsize,
+ DEVICE_XSCOM_ADDRESS(0x00020001));
+ if( l_err2 ) {
+ delete l_err2;
+ } else {
+ TRACFCOMP( g_trac_fsiscom, "PIB2OPB Status = %.16X", scomdata );
+ }
+ }
+
break;
}
@@ -250,7 +272,7 @@ errlHndl_t fsiScomPerformOp(DeviceFW::OperationType i_opType,
//bits 17-19 indicates PCB/PIB error
if((l_status & 0x00007000) != 0)
{
- TRACFCOMP( g_trac_fsiscom, ERR_MRK"fsiScomPerformOp:Read: PCB/PIB error received: l_status=0x%.8X)", l_status);
+ TRACFCOMP( g_trac_fsiscom, ERR_MRK"fsiScomPerformOp:Read: PCB/PIB error received: l_status=0x%0.8X)", l_status);
/*@
* @errortype
OpenPOWER on IntegriCloud