summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorcrgeddes <crgeddes@us.ibm.com>2016-11-09 16:48:23 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-11-14 21:31:37 -0500
commit7011329d47c30f6d2c6939bc1c8b9425d3eac87b (patch)
tree2ba2f3af05396da76e84c80e0cd27e6fc5a288ea /src
parent2da4b3794cb7ee133d1c4db6640aad99748ebf4b (diff)
downloadblackbird-hostboot-7011329d47c30f6d2c6939bc1c8b9425d3eac87b.tar.gz
blackbird-hostboot-7011329d47c30f6d2c6939bc1c8b9425d3eac87b.zip
Ignore CHIP_OFFLINE pib error when scom is multicast
When a scom returns an error that says the chip was offline, if it was a multicasted scom we expect this to happen so we can ignore the error and continue RTC:163898 Change-Id: Id9753eab70f78573f0c8d27a74aef62e5715e85c Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32455 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/usr/fsi/fsidd.C8
-rw-r--r--src/usr/sbeio/sbe_scomAccess.C7
-rw-r--r--src/usr/scom/scom.C23
3 files changed, 26 insertions, 12 deletions
diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C
index f09363be2..db2811f82 100644
--- a/src/usr/fsi/fsidd.C
+++ b/src/usr/fsi/fsidd.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2011,2015 */
+/* Contributors Listed Below - COPYRIGHT 2011,2016 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -229,12 +229,6 @@ errlHndl_t ddOp(DeviceFW::OperationType i_opType,
}while(0);
- if ( l_err )
- {
- // On fail, assume no data was read or written
- io_buflen = 0;
- }
-
mutex_unlock(&g_fsiOpMux);//@fixme - RTC:98898
return l_err;
diff --git a/src/usr/sbeio/sbe_scomAccess.C b/src/usr/sbeio/sbe_scomAccess.C
index 63689685d..44c1ac37f 100644
--- a/src/usr/sbeio/sbe_scomAccess.C
+++ b/src/usr/sbeio/sbe_scomAccess.C
@@ -166,11 +166,8 @@ errlHndl_t getFifoScom(TARGETING::Target * i_target,
(uint32_t *)&l_fifoRequest,
(uint32_t *)&l_fifoResponse,
sizeof(fifoGetScomResponse));
- // return data if no error
- if (!errl)
- {
- o_data = l_fifoResponse.data;
- }
+ //always return data even if there is an error
+ o_data = l_fifoResponse.data;
}
while (0);
diff --git a/src/usr/scom/scom.C b/src/usr/scom/scom.C
index 81e272d9e..fed9dfc2c 100644
--- a/src/usr/scom/scom.C
+++ b/src/usr/scom/scom.C
@@ -45,6 +45,8 @@
#include <errl/errludtarget.H>
#include <errl/errludlogregister.H>
#include <hw_access_def.H>
+#include <p9_scom_addr.H>
+
// Trace definition
@@ -777,6 +779,27 @@ errlHndl_t doScomOp(DeviceFW::OperationType i_opType,
io_buflen, accessType_flag, i_addr );
}
+
+ if( l_err && p9_scom_addr(i_addr).is_multicast() )
+ {
+ //Delete the error if the mask matches the pib err
+ for(auto data : l_err->getUDSections(SCOM_COMP_ID, SCOM::SCOM_UDT_PIB))
+ {
+ //We get the raw data from the userdetails section, which in this
+ //case is the pib_err itself so just check it.
+ if(*reinterpret_cast<uint8_t *>(data) == PIB::PIB_CHIPLET_OFFLINE)
+ {
+ TRACFCOMP(g_trac_scom, "Ignoring error %.8X because it is a"
+ " multicast scom with a PIB_CHIPLET_OFFLINE error,"
+ " and this is expected",
+ l_err->plid() );
+ delete l_err;
+ l_err = NULL;
+ break;
+ }
+ }
+ }
+
//Add some additional FFDC based on the specific operation
if( l_err )
{
OpenPOWER on IntegriCloud