summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDzuy Nguyen <dzuy@us.ibm.com>2017-06-09 09:09:50 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-06-23 10:45:01 -0400
commit6a207fa8c5da3075d6674bfe62682c032d546ec5 (patch)
tree7bc16302b37281acacd65da37e4bce21dfd43527
parentc4dc9402e4237e5318c834f4535f6c1f58419951 (diff)
downloadtalos-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.C39
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,
OpenPOWER on IntegriCloud