summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
Diffstat (limited to 'src/import')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C37
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H18
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_base.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cme.C4
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cppm.C6
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_defines.H58
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_occ.C6
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_pgpe.C4
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_qppm.C6
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_sgpe.C4
10 files changed, 99 insertions, 46 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C
index 4117bdd62..dff4805a8 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C
@@ -62,16 +62,6 @@ enum
CFG_PM_MUX_DISABLE = 7,
TP_FENCE_PCB = 25,
OCC_FLAG2_SCOM1_ADDR = 0x0006C18B,
- STATE_CONFIG_SECTN = 0x00,
- SGPE_SECTN = 0x01,
- PGPE_SECTN = 0x02,
- CME_SECTN = 0x03,
- QPPM_SECTN = 0x04,
- CPPM_SECTN = 0x05,
- SGPE_GLOBAL_VAR_SECTN = 0x06,
- PGPE_GLOBAL_VAR_SECTN = 0x07,
- CME_GLOBAL_VAR_SECTN = 0x08,
- MAX_FFDC_SUMMARY_SECTN_CNT = 0x09,
};
/**
@@ -305,6 +295,7 @@ extern "C"
using namespace p9_stop_recov_ffdc;
FAPI_IMP(">> p9_pm_callout" );
+ errlver_t l_summSectn;
HomerFfdcRegion* l_pHomerFfdc =
( HomerFfdcRegion*)( (uint8_t*)i_pHomerBase + FFDC_REGION_HOMER_BASE_OFFSET );
uint8_t* l_pSummary = NULL;
@@ -331,29 +322,33 @@ extern "C"
l_coreActn.getDeadCoreVector( o_deadCores ); //retrieve Phyp generated dead core vector
FAPI_INF("Dead cores from PHYP: 0x%08x", o_deadCores);
- for( uint8_t l_ffdcSecId = 0; l_ffdcSecId < MAX_FFDC_SUMMARY_SECTN_CNT;
- l_ffdcSecId++ )
+ for( uint8_t l_secId = 0; l_secId < MAX_FFDC_SUMMARY_SECTN_CNT;
+ l_secId++ )
{
- switch( l_ffdcSecId )
+ switch( l_secId )
{
case STATE_CONFIG_SECTN:
l_pSummary = (uint8_t*) &l_pHomerFfdc->iv_ffdcSummaryRegion.iv_sysState;
l_sectnSize = sizeof(SysState);
+ l_summSectn = STATE_CONFIG_SECTN;
break;
case SGPE_SECTN:
l_pSummary = &l_pHomerFfdc->iv_ffdcSummaryRegion.iv_sgpeSummary[0];
l_sectnSize = FFDC_SUMMARY_SIZE_SGPE;
+ l_summSectn = SGPE_SECTN;
break;
case PGPE_SECTN:
l_pSummary = &l_pHomerFfdc->iv_ffdcSummaryRegion.iv_pgpeSummary[0];
l_sectnSize = FFDC_SUMMARY_SIZE_PGPE;
+ l_summSectn = PGPE_SECTN;
break;
case CME_SECTN:
l_pSummary = &l_pHomerFfdc->iv_ffdcSummaryRegion.iv_cmeSummary[0][0];
l_sectnSize = (FFDC_SUMMARY_SIZE_CME * MAX_CMES_PER_CHIP);
+ l_summSectn = CME_SECTN;
break;
case QPPM_SECTN:
@@ -361,6 +356,7 @@ extern "C"
//section of error log.
l_pSummary = &l_pHomerFfdc->iv_ffdcSummaryRegion.iv_qpmmRegSummary[0][0];
l_sectnSize = (FFDC_SUMMARY_SIZE_QPPM_REG * MAX_QUADS_PER_CHIP);
+ l_summSectn = QPPM_SECTN;
break;
case CPPM_SECTN:
@@ -368,16 +364,19 @@ extern "C"
//section of error log.
l_pSummary = &l_pHomerFfdc->iv_ffdcSummaryRegion.iv_cpmmRegSummary[0][0];
l_sectnSize = (FFDC_SUMMARY_SIZE_CPPM_REG * MAX_CORES_PER_CHIP);
+ l_summSectn = CPPM_SECTN;
break;
case SGPE_GLOBAL_VAR_SECTN:
l_pSummary = l_pHomerFfdc->iv_ffdcSummaryRegion.iv_sgpeScoreBoard.iv_dataPtr;
l_sectnSize = l_pHomerFfdc->iv_ffdcSummaryRegion.iv_sgpeScoreBoard.iv_dataSize;
+ l_summSectn = SGPE_GLOBAL_VAR_SECTN;
break;
case PGPE_GLOBAL_VAR_SECTN:
l_pSummary = l_pHomerFfdc->iv_ffdcSummaryRegion.iv_pgpeScoreBoard.iv_dataPtr;
l_sectnSize = l_pHomerFfdc->iv_ffdcSummaryRegion.iv_pgpeScoreBoard.iv_dataSize;
+ l_summSectn = PGPE_GLOBAL_VAR_SECTN;
break;
case CME_GLOBAL_VAR_SECTN:
@@ -388,21 +387,25 @@ extern "C"
{
l_pSummary = l_pHomerFfdc->iv_ffdcSummaryRegion.iv_cmeScoreBoard[l_corePos].iv_dataPtr;
l_sectnSize = l_pHomerFfdc->iv_ffdcSummaryRegion.iv_cmeScoreBoard[l_corePos].iv_dataSize;
- StopErrLogSectn l_coreGlobalVarSectn( l_pSummary, l_sectnSize );
+ StopErrLogSectn l_coreGlobalVarSectn( l_pSummary, l_sectnSize, CME_GLOBAL_VAR_SECTN );
o_ffdcList.push_back( l_coreGlobalVarSectn );
}
}
+ l_summSectn = CME_GLOBAL_VAR_SECTN;
break;
default:
//Skip the addition of this section to error log
- FAPI_ERR("Section Number %d Not Defined in STOP Recovery Summary", l_ffdcSecId );
+ FAPI_ERR("Section Number %d Not Defined in STOP Recovery Summary", l_secId );
continue;
}
- StopErrLogSectn l_ffdcSubSectn( l_pSummary, l_sectnSize );
- o_ffdcList.push_back( l_ffdcSubSectn );
+ if( l_summSectn < MAX_FFDC_SUMMARY_SECTN_CNT )
+ {
+ StopErrLogSectn l_ffdcSubSectn( l_pSummary, l_sectnSize, l_summSectn );
+ o_ffdcList.push_back( l_ffdcSubSectn );
+ }
}
if( o_ffdcList.size() > 0 )
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H
index 374370c3a..fa9d58f1a 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H
@@ -48,23 +48,7 @@
// Includes
// ------------------------------------------------------------------------------
#include <fapi2.H>
-
-///@brief models a sub-section of STOP Recovery summary.
-///@note caller of HWP passes in an empty vector however,
-///HWP populates it with pointers to all summary sub-section.
-struct StopErrLogSectn
-{
- uint8_t* iv_pBufPtr;
- uint16_t iv_bufSize;
- StopErrLogSectn( uint8_t* i_bufPtr, uint16_t i_bufSize )
- : iv_pBufPtr( i_bufPtr ), iv_bufSize( i_bufSize )
- { }
-
- StopErrLogSectn( )
- : iv_pBufPtr( NULL ),
- iv_bufSize( 0 )
- { }
-};
+#include <p9_pm_recovery_ffdc_defines.H>
enum RasAction
{
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_base.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_base.C
index c308feb57..58de5aa92 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_base.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_base.C
@@ -142,6 +142,8 @@ namespace p9_stop_recov_ffdc
{
FAPI_DBG( ">> PlatPmComplex::initRegList" );
iv_summaryReg.clear();
+ //NOTE: Update major or minor number as appropriate if this list
+ //ever changes. Failing to do so can break the error log parser.
iv_summaryReg.push_back( XSR );
iv_summaryReg.push_back( IAR );
iv_summaryReg.push_back( IR );
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cme.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cme.C
index 9a73d5f24..7c2791473 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cme.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cme.C
@@ -432,8 +432,8 @@
l_pHomerFfdc->iv_ffdcSummaryRegion.iv_cmeScoreBoard[l_exPos].iv_dataSize = FFDC_PPE_SCORE_BOARD_SIZE;
l_pCmeSummaryHdr->iv_subSectnId = PLAT_CME;
- l_pCmeSummaryHdr->iv_majorNum = 1;
- l_pCmeSummaryHdr->iv_minorNum = 0;
+ l_pCmeSummaryHdr->iv_majorNum = CME_MAJ_NUM;
+ l_pCmeSummaryHdr->iv_minorNum = CME_MIN_NUM;
l_pCmeSummaryHdr->iv_secValid = l_pCmeLayout->iv_ppeFfdcHdr.iv_ppeFfdcHdr.iv_sectionsValid;
if( !l_pCmeSummaryHdr->iv_secValid )
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cppm.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cppm.C
index 0d50b2e73..999abd617 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cppm.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_cppm.C
@@ -57,6 +57,8 @@
void CppmRegs::initRegList()
{
std::vector < uint32_t> l_scomRegList;
+ //NOTE: Update major or minor number as appropriate if this list
+ //ever changes. Failing to do so can break the error log parser.
l_scomRegList.push_back( C_PPM_SSHSRC );
l_scomRegList.push_back( C_PPM_VDMCR );
PlatPmComplex::updateSummaryList( l_scomRegList );
@@ -169,8 +171,8 @@
PpmFfdcHeader * l_CppmFfdcHdr = (PpmFfdcHeader *) i_pHomerBuf ;
l_CppmFfdcHdr->iv_ppmMagicWord = htobe32(FFDC_CPPM_MAGIC_NUM);
- l_CppmFfdcHdr->iv_versionMajor = 1;
- l_CppmFfdcHdr->iv_versionMinor = 0;
+ l_CppmFfdcHdr->iv_versionMajor = CPPM_MAJ_NUM;
+ l_CppmFfdcHdr->iv_versionMinor = CPPM_MIN_NUM;
l_CppmFfdcHdr->iv_Instance = i_corePos; // CHIP_UNIT_POS
l_CppmFfdcHdr->iv_ppmHeaderSize = htobe16 (sizeof(PpmFfdcHeader));
l_CppmFfdcHdr->iv_sectionSize = htobe16 (FFDC_CPPM_REGION_SIZE);
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_defines.H b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_defines.H
index c518e8d38..c9af43998 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_defines.H
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_defines.H
@@ -35,6 +35,45 @@
( (((WORD) >> 8) & 0x00FF) | (((WORD) << 8) & 0xFF00) )
#endif
+typedef uint8_t errlver_t;
+
+///@brief models a sub-section of STOP Recovery summary.
+///@note caller of p9_pm_callout passes in an empty vector
+/// however, HWP populates it with pointers to all
+/// summary sub-section.
+struct StopErrLogSectn
+{
+ uint8_t* iv_pBufPtr;
+ uint16_t iv_bufSize;
+ errlver_t iv_subsec;
+ StopErrLogSectn( uint8_t* i_bufPtr, uint16_t i_bufSize, errlver_t i_subSectn )
+ : iv_pBufPtr( i_bufPtr ), iv_bufSize( i_bufSize ), iv_subsec( i_subSectn )
+ { }
+
+ StopErrLogSectn( )
+ : iv_pBufPtr( NULL ),
+ iv_bufSize( 0 ),
+ iv_subsec( 0 )
+ { }
+};
+
+/**
+ * @brief sections of STOP Recovery FFDC summary
+ */
+enum VerList_t
+{
+ STATE_CONFIG_SECTN = 0x00,
+ SGPE_SECTN = 0x01,
+ PGPE_SECTN = 0x02,
+ CME_SECTN = 0x03,
+ QPPM_SECTN = 0x04,
+ CPPM_SECTN = 0x05,
+ SGPE_GLOBAL_VAR_SECTN = 0x06,
+ PGPE_GLOBAL_VAR_SECTN = 0x07,
+ CME_GLOBAL_VAR_SECTN = 0x08,
+ MAX_FFDC_SUMMARY_SECTN_CNT = 0x09,
+};
+
namespace p9_stop_recov_ffdc
{
@@ -68,6 +107,25 @@ enum PmResetStep
};
/**
+ * @brief miscellaneous constants
+ */
+enum SectionVer
+{
+ SYS_CONFIG_MAJ_NUM = 1,
+ SYS_CONFIG_MIN_NUM = 0,
+ SGPE_MAJ_NUM = 1,
+ SGPE_MIN_NUM = 0,
+ PGPE_MAJ_NUM = 1,
+ PGPE_MIN_NUM = 0,
+ CME_MAJ_NUM = 1,
+ CME_MIN_NUM = 0,
+ QPPM_MAJ_NUM = 1,
+ QPPM_MIN_NUM = 0,
+ CPPM_MAJ_NUM = 1,
+ CPPM_MIN_NUM = 0,
+};
+
+/**
* @brief enumerates all the platforms involved with STOP Recovery.
*/
enum PmComplexPlatId
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_occ.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_occ.C
index ba5c4000d..271f0af8a 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_occ.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_occ.C
@@ -76,6 +76,8 @@ namespace p9_stop_recov_ffdc
{
FAPI_DBG (">> PlatOcc::initRegList" );
std::vector < uint32_t> l_scomRegList;
+ //NOTE: Update major or minor number as appropriate if this list
+ //ever changes. Failing to do so can break the error log parser.
l_scomRegList.push_back( PU_OCB_OCI_CCSR_SCOM );
l_scomRegList.push_back( PU_OCB_OCI_QSSR_SCOM );
l_scomRegList.push_back( P9N2_PU_OCB_OCI_OCCFLG_SCOM );
@@ -479,8 +481,8 @@ namespace p9_stop_recov_ffdc
FfdcSummSubSectHdr * l_pSysConfigHdr =
(FfdcSummSubSectHdr *)&l_pSysConfig->iv_subSecHdr;
l_pSysConfigHdr->iv_subSectnId = PLAT_OCC;
- l_pSysConfigHdr->iv_majorNum = 1;
- l_pSysConfigHdr->iv_minorNum = 0;
+ l_pSysConfigHdr->iv_majorNum = SYS_CONFIG_MAJ_NUM;
+ l_pSysConfigHdr->iv_minorNum = SYS_CONFIG_MIN_NUM;
l_pSysConfigHdr->iv_secValid = l_pOccFfdcHdr->iv_sectionsValid;
if( l_pSysConfigHdr->iv_secValid )
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_pgpe.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_pgpe.C
index 894f35f85..0c661da1b 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_pgpe.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_pgpe.C
@@ -288,8 +288,8 @@
FfdcSummSubSectHdr * l_pPgpeSummaryHdr = (FfdcSummSubSectHdr *)&l_pHomerFfdc->iv_ffdcSummaryRegion.iv_pgpeSummary[0];
l_pPgpeSummaryHdr->iv_subSectnId = PLAT_PGPE;
- l_pPgpeSummaryHdr->iv_majorNum = 1;
- l_pPgpeSummaryHdr->iv_minorNum = 0;
+ l_pPgpeSummaryHdr->iv_majorNum = PGPE_MAJ_NUM;
+ l_pPgpeSummaryHdr->iv_minorNum = PGPE_MIN_NUM;
l_pPgpeSummaryHdr->iv_secValid = l_pPgpeFfdcHdr->iv_sectionsValid;
if( l_pPgpeSummaryHdr->iv_secValid )
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_qppm.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_qppm.C
index 44543ed58..23bce323e 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_qppm.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_qppm.C
@@ -71,6 +71,8 @@
void QppmRegs::initRegList()
{
std::vector < uint32_t> l_scomRegList;
+ //NOTE: Update major or minor number as appropriate if this list
+ //ever changes. Failing to do so can break the error log parser.
l_scomRegList.push_back( EQ_PPM_GPMMR_SCOM );
l_scomRegList.push_back( EQ_PPM_SSHSRC );
l_scomRegList.push_back( EQ_QPPM_DPLL_FREQ );
@@ -181,8 +183,8 @@
FfdcSummSubSectHdr * l_pQppmSummaryHdr
= (FfdcSummSubSectHdr *)&l_pHomerFfdc->iv_ffdcSummaryRegion.iv_qpmmRegSummary[l_ppmPos][0];
l_pQppmSummaryHdr->iv_subSectnId = PLAT_QPPM;
- l_pQppmSummaryHdr->iv_majorNum = 1;
- l_pQppmSummaryHdr->iv_minorNum = 0;
+ l_pQppmSummaryHdr->iv_majorNum = QPPM_MAJ_NUM;
+ l_pQppmSummaryHdr->iv_minorNum = QPPM_MIN_NUM;
l_pQppmSummaryHdr->iv_secValid = htobe16(l_pQppmHdr->iv_ffdcValid);
if( !l_pQppmSummaryHdr->iv_secValid )
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_sgpe.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_sgpe.C
index cbc1f8c6f..077059fba 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_sgpe.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_recovery_ffdc_sgpe.C
@@ -335,8 +335,8 @@
PpeFfdcHeader* l_pSgpeFfdcHdr = ( PpeFfdcHeader* )&l_pHomerFfdc->iv_sgpeFfdcRegion;
FfdcSummSubSectHdr * l_pSgpeSummaryHdr = (FfdcSummSubSectHdr *)&l_pHomerFfdc->iv_ffdcSummaryRegion.iv_sgpeSummary[0];
l_pSgpeSummaryHdr->iv_subSectnId = PLAT_SGPE;
- l_pSgpeSummaryHdr->iv_majorNum = 1;
- l_pSgpeSummaryHdr->iv_minorNum = 0;
+ l_pSgpeSummaryHdr->iv_majorNum = SGPE_MAJ_NUM;
+ l_pSgpeSummaryHdr->iv_minorNum = SGPE_MIN_NUM;
l_pSgpeSummaryHdr->iv_secValid = l_pSgpeFfdcHdr->iv_sectionsValid;
if( l_pSgpeSummaryHdr->iv_secValid )
OpenPOWER on IntegriCloud