summaryrefslogtreecommitdiffstats
path: root/src/sbefw/sbecmdgeneric.C
diff options
context:
space:
mode:
authorSunil.Kumar <skumar8j@in.ibm.com>2016-11-28 03:45:22 -0600
committerSachin Gupta <sgupta2m@in.ibm.com>2017-01-19 01:14:16 -0500
commit76b294bed6cd3aff8f8f74df8e0d2a09ca153e75 (patch)
tree2948ff38b7c12e169fef7cb19f178c2cd89e93dd /src/sbefw/sbecmdgeneric.C
parentf7622cfdaafd77c57b93ade0d144c623eaec043f (diff)
downloadtalos-sbe-76b294bed6cd3aff8f8f74df8e0d2a09ca153e75.tar.gz
talos-sbe-76b294bed6cd3aff8f8f74df8e0d2a09ca153e75.zip
RTC 149074 Async Response of PSU operation from SBE
Change-Id: Ifb6be2cb5edd2e1abeb5766a54bc44439c67e8dd Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33045 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/sbefw/sbecmdgeneric.C')
-rw-r--r--src/sbefw/sbecmdgeneric.C40
1 files changed, 37 insertions, 3 deletions
diff --git a/src/sbefw/sbecmdgeneric.C b/src/sbefw/sbecmdgeneric.C
index cf8579c5..444548ee 100644
--- a/src/sbefw/sbecmdgeneric.C
+++ b/src/sbefw/sbecmdgeneric.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER sbe Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2016 */
+/* Contributors Listed Below - COPYRIGHT 2015,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -138,7 +138,7 @@ uint32_t sbeGetCapabilities (uint8_t *i_pArg)
uint32_t sbeGetFfdc (uint8_t *i_pArg)
{
#define SBE_FUNC "sbeGetFfdc "
- SBE_DEBUG(SBE_FUNC);
+ SBE_ENTER(SBE_FUNC);
uint32_t rc = SBE_SEC_OPERATION_SUCCESSFUL;
uint32_t len = 0;
sbeRespGenHdr_t respHdr;
@@ -156,11 +156,45 @@ uint32_t sbeGetFfdc (uint8_t *i_pArg)
}
SbeFFDCPackage sbeFfdcPack;
- len = 0;
+ sbeResponseFfdc_t l_ffdc ;
+ l_ffdc.setRc(g_FfdcData.fapiRc);
+ SBE_INFO(SBE_FUNC"FAPI RC is %x", g_FfdcData.fapiRc);
+ // If no ffdc , exit;
+ if( (l_ffdc.getRc() != FAPI2_RC_SUCCESS))
+ {
+ // making sure ffdc length is multiples of uint32_t
+ assert((g_FfdcData.ffdcLength % sizeof(uint32_t)) == 0);
+ uint32_t ffdcDataLenInWords = g_FfdcData.ffdcLength
+ / sizeof(uint32_t);
+ // Set failed command information
+ // Sequence Id is 0 by default for Fifo interface
+ // @TODO via RTC : 149074
+ // primary and secondary status should be picked
+ // from the globals.
+ l_ffdc.setCmdInfo(0, respHdr.cmdClass, respHdr.command);
+ // Add HWP specific ffdc data length
+ l_ffdc.lenInWords += ffdcDataLenInWords;
+ len = sizeof(sbeResponseFfdc_t)/sizeof(uint32_t);
+ rc = sbeDownFifoEnq_mult ( len, ( uint32_t *) &l_ffdc);
+ if (rc)
+ {
+ break;
+ }
+ //Send HWP internal Data
+ rc = sbeDownFifoEnq_mult ( ffdcDataLenInWords,
+ ( uint32_t *) &g_FfdcData.ffdcData);
+ if (rc)
+ {
+ break;
+ }
+
+ }
//Send the FFDC data over FIFO.
// @TODO via RTC : 149074
// primary and secondary status should be picked
// from the globals.
+ // Check for Primary and Secondary Status from Globals and then send
+ // internal FFDC.
rc = sbeFfdcPack.sendOverFIFO(respHdr,
SBE_FFDC_ALL_DUMP,
len,
OpenPOWER on IntegriCloud