diff options
author | Dzuy Nguyen <dzuy@us.ibm.com> | 2017-06-09 09:09:50 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-06-23 10:45:01 -0400 |
commit | 6a207fa8c5da3075d6674bfe62682c032d546ec5 (patch) | |
tree | 7bc16302b37281acacd65da37e4bce21dfd43527 | |
parent | c4dc9402e4237e5318c834f4535f6c1f58419951 (diff) | |
download | talos-hostboot-6a207fa8c5da3075d6674bfe62682c032d546ec5.tar.gz talos-hostboot-6a207fa8c5da3075d6674bfe62682c032d546ec5.zip |
Finalize SBE PSU FFDC collection - Handle setFFDCAddress failed
Change-Id: I9d9ac10df9eb44f63203abca14db3bcf8a7c9d16
RTC: 164405
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41608
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r-- | src/usr/sbeio/sbe_psudd.C | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/usr/sbeio/sbe_psudd.C b/src/usr/sbeio/sbe_psudd.C index 4496f0ff1..1a8343dfb 100644 --- a/src/usr/sbeio/sbe_psudd.C +++ b/src/usr/sbeio/sbe_psudd.C @@ -358,6 +358,7 @@ errlHndl_t SbePsu::readResponse(TARGETING::Target * i_target, SBE_TRACFBIN( "Full response:", o_pPsuResponse, sizeof(psuResponse) ); break; } + //check status and seq ID in response messages else if ((SBE_PRI_OPERATION_SUCCESSFUL != o_pPsuResponse->primaryStatus) || (SBE_SEC_OPERATION_SUCCESSFUL != o_pPsuResponse->secondaryStatus) || @@ -375,6 +376,7 @@ errlHndl_t SbePsu::readResponse(TARGETING::Target * i_target, o_pPsuResponse->seqID); SBE_TRACFBIN( "Full response:", o_pPsuResponse, sizeof(psuResponse) ); + /*@ * @errortype * @moduleid SBEIO_PSU @@ -400,22 +402,35 @@ errlHndl_t SbePsu::readResponse(TARGETING::Target * i_target, o_pPsuResponse->mbxReg4); void * l_ffdcPkg = findFFDCBufferByTarget(i_target); + if(l_ffdcPkg != NULL) { - SbeFFDCParser * l_ffdc_parser = new SbeFFDCParser(); - l_ffdc_parser->parseFFDCData(l_ffdcPkg); - uint8_t l_pkgs = l_ffdc_parser->getTotalPackages(); - uint8_t i; - for(i = 0; i < l_pkgs; i++) + //If this is a result of setFFDCAddress command, it fails. + //Deallocate FFDC buffer + if(i_pPsuRequest->command == SBE_PSU_SET_FFDC_ADDRESS) { - errl->addFFDC( SBEIO_COMP_ID, - l_ffdc_parser->getFFDCPackage(i), - l_ffdc_parser->getPackageLength(i), - 0, - SBEIO_UDT_PARAMETERS, - false ); + SBE_TRACF(ERR_MRK, "sbe_psudd.C: readResponse: " + "Set FFDC Address failed."); + PageManager::freePage(l_ffdcPkg); + iv_ffdcPackageBuffer.erase(i_target); + } + else + { + SbeFFDCParser * l_ffdc_parser = new SbeFFDCParser(); + l_ffdc_parser->parseFFDCData(l_ffdcPkg); + uint8_t l_pkgs = l_ffdc_parser->getTotalPackages(); + uint8_t i; + for(i = 0; i < l_pkgs; i++) + { + errl->addFFDC( SBEIO_COMP_ID, + l_ffdc_parser->getFFDCPackage(i), + l_ffdc_parser->getPackageLength(i), + 0, + SBEIO_UDT_PARAMETERS, + false ); + } + delete l_ffdc_parser; } - delete l_ffdc_parser; } errl->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE, |