diff options
| author | crgeddes <crgeddes@us.ibm.com> | 2016-11-09 16:48:23 -0600 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-11-14 21:31:37 -0500 |
| commit | 7011329d47c30f6d2c6939bc1c8b9425d3eac87b (patch) | |
| tree | 2ba2f3af05396da76e84c80e0cd27e6fc5a288ea /src/usr/scom | |
| parent | 2da4b3794cb7ee133d1c4db6640aad99748ebf4b (diff) | |
| download | talos-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.C | 23 |
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 ) { |

