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 | |
| parent | 2da4b3794cb7ee133d1c4db6640aad99748ebf4b (diff) | |
| download | blackbird-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.C | 8 | ||||
| -rw-r--r-- | src/usr/sbeio/sbe_scomAccess.C | 7 | ||||
| -rw-r--r-- | src/usr/scom/scom.C | 23 |
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 ) { |

