diff options
-rw-r--r-- | src/usr/fsi/fsidd.C | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C index 6653d39d7..a8c648827 100644 --- a/src/usr/fsi/fsidd.C +++ b/src/usr/fsi/fsidd.C @@ -1778,9 +1778,8 @@ errlHndl_t FsiDD::genFullFsiAddr(FsiAddrInfo_t& io_addrInfo) FSI::MOD_FSIDD_GENFULLFSIADDR, FSI::RC_FSI_NOT_SUPPORTED, TARGETING::get_huid(io_addrInfo.fsiTarg), - io_addrInfo.accessInfo.linkid.id ); - l_err->addProcedureCallout( HWAS::EPUB_PRC_FSI_PATH, - HWAS::SRCI_PRIORITY_HIGH ); + io_addrInfo.accessInfo.linkid.id, + true /*SW error*/); l_err->collectTrace(FSI_COMP_NAME); return l_err; } @@ -1823,9 +1822,8 @@ errlHndl_t FsiDD::genFullFsiAddr(FsiAddrInfo_t& io_addrInfo) TARGETING::get_huid(io_addrInfo.accessInfo.master)), TWO_UINT32_TO_UINT64( io_addrInfo.accessInfo.linkid.id, - mfsi_info.linkid.id) ); - l_err->addProcedureCallout( HWAS::EPUB_PRC_FSI_PATH, - HWAS::SRCI_PRIORITY_HIGH ); + mfsi_info.linkid.id), + true /*SW error*/); l_err->collectTrace(FSI_COMP_NAME); return l_err; } @@ -1858,9 +1856,8 @@ errlHndl_t FsiDD::genFullFsiAddr(FsiAddrInfo_t& io_addrInfo) TARGETING::get_huid(io_addrInfo.accessInfo.master)), TWO_UINT32_TO_UINT64( io_addrInfo.accessInfo.linkid.id, - mfsi_info.linkid.id) ); - l_err->addProcedureCallout( HWAS::EPUB_PRC_FSI_PATH, - HWAS::SRCI_PRIORITY_HIGH ); + mfsi_info.linkid.id), + true /*SW error*/); l_err->collectTrace(FSI_COMP_NAME); return l_err; } @@ -2732,6 +2729,16 @@ errlHndl_t FsiDD::checkForErrors( FsiAddrInfo_t& i_addrInfo ) i_addrInfo.accessInfo.linkid.id, maeb_data); + // We can't really isolate the fail so callout a procedure, but + // deconfigure the slave chip so that we have a chance of moving + // forward + l_err->addProcedureCallout( HWAS::EPUB_PRC_FSI_PATH, + HWAS::SRCI_PRIORITY_HIGH ); + l_err->addHwCallout( i_addrInfo.fsiTarg, + HWAS::SRCI_PRIORITY_LOW, + HWAS::DELAYED_DECONFIG, + HWAS::GARD_NULL ); + l_err->collectTrace(FSI_COMP_NAME); l_err->collectTrace(FSIR_TRACE_BUF); |