summaryrefslogtreecommitdiffstats
path: root/src/usr/scom
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/usr/scom
parent2da4b3794cb7ee133d1c4db6640aad99748ebf4b (diff)
downloadtalos-hostboot-7011329d47c30f6d2c6939bc1c8b9425d3eac87b.tar.gz
talos-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/usr/scom')
-rw-r--r--src/usr/scom/scom.C23
1 files changed, 23 insertions, 0 deletions
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