Skip to content

Commit

Permalink
PRD: separate UNIT_CS flag into PROC_CORE_CS and MEM_CHNL_FAIL
Browse files Browse the repository at this point in the history
Change-Id: Ifa6a79a80a5fe5f3c44f4a99d83919e05fb948fb
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61323
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61594
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
  • Loading branch information
zane131 committed Jun 29, 2018
1 parent bcb2189 commit 682ff15
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 171 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2012,2016 */
/* Contributors Listed Below - COPYRIGHT 2012,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -153,8 +153,7 @@ class ServiceDataCollector
PRDF_SDC_FLAG(DONT_SAVE_SDC, 0x80000)
PRDF_SDC_FLAG(USING_SAVED_SDC, 0x40000)
PRDF_SDC_FLAG(PROC_CORE_CS, 0x20000)
//(Note UNIT_CS is intentionally the same value as PROC_CORE_CS)
PRDF_SDC_FLAG(UNIT_CS, 0x20000)
PRDF_SDC_FLAG(MEM_CHNL_FAIL, 0x10000)
PRDF_SDC_FLAG(DONT_COMMIT_ERRL, 0x01000)
PRDF_SDC_FLAG(DUMP, 0x00800)
PRDF_SDC_FLAG(UERE, 0x00400)
Expand Down Expand Up @@ -703,11 +702,11 @@ class ServiceDataCollector
*/
void SetTOE(Timer& theTime) { ivCurrentEventTime = theTime; }

/** Is a Proc Core CS flag on? */
bool IsProcCoreCS (void) const { return queryFlag(PROC_CORE_CS); }
void setProcCoreCS() { return setFlag( PROC_CORE_CS); }
bool isProcCoreCS() const { return queryFlag(PROC_CORE_CS); }

/** Is a Unit CS flag on? */
bool IsUnitCS (void) const { return queryFlag(UNIT_CS); }
void setMemChnlFail() { return setFlag( MEM_CHNL_FAIL); }
bool isMemChnlFail() const { return queryFlag(MEM_CHNL_FAIL); }

/** Is a Using Saved SDC on? */
bool IsUsingSavedSdc (void) const { return queryFlag(USING_SAVED_SDC); }
Expand Down
8 changes: 4 additions & 4 deletions src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,7 @@ uint32_t handleChnlFail( ExtensibleChip * i_chip,
do
{
// Skip if already handling channel failure.
if ( io_sc.service_data->IsUnitCS() ) break;
if ( io_sc.service_data->isMemChnlFail() ) break;

// Skip if currently analyzing a host attention. This is a required for
// a rare scenario when a channel failure occurs after PRD is called to
Expand All @@ -667,9 +667,9 @@ uint32_t handleChnlFail( ExtensibleChip * i_chip,
// start looking for UNIT_CS attentions instead of recoverable.
io_sc.service_data->setSecondaryAttnType( UNIT_CS );

// Set the UNIT_CS flag in the SDC to indicate a channel failure has
// been detected and there is no need to check again.
io_sc.service_data->setFlag( ServiceDataCollector::UNIT_CS );
// Set the MEM_CHNL_FAIL flag in the SDC to indicate a channel failure
// has been detected and there is no need to check again.
io_sc.service_data->setMemChnlFail();

// Make the error log predictive and set threshold.
io_sc.service_data->setFlag( ServiceDataCollector::SERVICE_CALL );
Expand Down
2 changes: 1 addition & 1 deletion src/usr/diag/prdf/common/plat/p9/prdfCommonPlugins.C
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ int32_t ClearServiceCallFlag( ExtensibleChip * i_chip,
{
if ( i_sc.service_data->IsAtThreshold() && !mfgMode() &&
(CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) &&
(!i_sc.service_data->queryFlag(ServiceDataCollector::UNIT_CS)) )
(UNIT_CS != i_sc.service_data->getSecondaryAttnType()) )
{
i_sc.service_data->clearServiceCall();
}
Expand Down
6 changes: 3 additions & 3 deletions src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ int32_t PostAnalysis( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc )
{
#ifdef __HOSTBOOT_RUNTIME
if ( io_sc.service_data->IsUnitCS() )
if ( io_sc.service_data->isProcCoreCS() )
{
maskIfCoreCs(i_chip);
rtDcnfgCore(i_chip);
Expand Down Expand Up @@ -291,7 +291,7 @@ int32_t CheckCoreCheckstop( ExtensibleChip * i_chip,
do
{
// Skip if we're already at core checkstop in SDC.
if (io_sc.service_data->IsUnitCS())
if (io_sc.service_data->isProcCoreCS())
break;

// Read core checkstop bit in chiplet RER.
Expand All @@ -306,7 +306,7 @@ int32_t CheckCoreCheckstop( ExtensibleChip * i_chip,
break;

// We must be at core checkstop.
io_sc.service_data->setFlag(ServiceDataCollector::UNIT_CS);
io_sc.service_data->setProcCoreCS();
io_sc.service_data->SetThresholdMaskId(0);

// Check if we need to switch attn type to analyze Unit checkstop
Expand Down
99 changes: 0 additions & 99 deletions src/usr/diag/prdf/common/plat/pegasus/prdfP8Ex.C

This file was deleted.

44 changes: 0 additions & 44 deletions src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C
Original file line number Diff line number Diff line change
Expand Up @@ -796,50 +796,6 @@ PLUGIN_BUS_INTERFACE_CALLOUT( dmi, TYPE_MCS, 7 )

#undef PLUGIN_BUS_INTERFACE_CALLOUT

//------------------------------------------------------------------------------

/**
* @brief When not in MNFG mode, clear the service call flag so that
* thresholding will still be done, but no visible error log committed.
* @param i_chip P8 chip
* @param i_sc Step code data struct
* @returns SUCCESS always
*/
int32_t ClearServiceCallFlag( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & i_sc )
{
if ( i_sc.service_data->IsAtThreshold() && !mfgMode() &&
(CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) &&
(!i_sc.service_data->queryFlag(ServiceDataCollector::UNIT_CS)) )
{
i_sc.service_data->clearServiceCall();
}

return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, ClearServiceCallFlag );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, ClearServiceCallFlag );

/**
* @brief Clear the service call flag (field and MNFG) so that thresholding
* will still be done, but no visible error log committed.
* @param i_chip P8 chip
* @param i_sc Step code data struct
* @returns SUCCESS always
*/
int32_t ClearServiceCallFlag_mnfgInfo( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & i_sc )
{
if ( i_sc.service_data->IsAtThreshold() )
{
i_sc.service_data->clearServiceCall();
}

return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, ClearServiceCallFlag_mnfgInfo );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, ClearServiceCallFlag_mnfgInfo );

//------------------------------------------------------------------------------
// PHB Plugins for IOPCIFIR_x
//------------------------------------------------------------------------------
Expand Down
6 changes: 4 additions & 2 deletions src/usr/diag/prdf/common/plat/prdfRasServices_common.C
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,8 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType,
// First, check if an error log should be committed. Note that there should
// always be an error log if there was a system or unit checkstop.
if ( io_sdc.queryDontCommitErrl() &&
MACHINE_CHECK != i_attnType && !io_sdc.IsUnitCS() )
MACHINE_CHECK != i_attnType &&
UNIT_CS != io_sdc.getSecondaryAttnType() )
{
// User did not want this error log committed. No need to continue. So
// delete it and exit.
Expand Down Expand Up @@ -751,7 +752,8 @@ void ErrDataService::initPfaData( const ServiceDataCollector & i_sdc,
o_pfa.TRACKIT = i_sdc.IsMfgTracking() ? 1 : 0;
o_pfa.TERMINATE = i_sdc.Terminate() ? 1 : 0;
o_pfa.LOGIT = i_sdc.queryLogging() ? 1 : 0;
o_pfa.UNIT_CHECKSTOP = i_sdc.IsUnitCS() ? 1 : 0;
o_pfa.MEM_CHNL_FAIL = i_sdc.isMemChnlFail() ? 1 : 0;
o_pfa.PROC_CORE_CS = i_sdc.isProcCoreCS() ? 1 : 0;
o_pfa.LAST_CORE_TERMINATE = 0; // Will be set later, if needed.
o_pfa.USING_SAVED_SDC = i_sdc.IsUsingSavedSdc() ? 1 : 0;
o_pfa.DEFER_DECONFIG = i_deferDeconfig ? 1 : 0;
Expand Down
3 changes: 2 additions & 1 deletion src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
Original file line number Diff line number Diff line change
Expand Up @@ -632,7 +632,8 @@ bool parsePfaData( void * i_buffer, uint32_t i_buflen,
i_parser.PrintBool(" TRACKIT", pfa.TRACKIT );
i_parser.PrintBool(" TERMINATE", pfa.TERMINATE );
i_parser.PrintBool(" LOGIT", pfa.LOGIT );
i_parser.PrintBool(" Unit CS", pfa.UNIT_CHECKSTOP );
i_parser.PrintBool(" Memory channel failure", pfa.MEM_CHNL_FAIL );
i_parser.PrintBool(" Core unit checkstop", pfa.PROC_CORE_CS );
i_parser.PrintBool(" Using Sync'd Saved Sdc", pfa.USING_SAVED_SDC );
i_parser.PrintBool(" Last Core Termination", pfa.LAST_CORE_TERMINATE);
i_parser.PrintBool(" Deferred Deconfig", pfa.DEFER_DECONFIG );
Expand Down
23 changes: 13 additions & 10 deletions src/usr/diag/prdf/common/plugins/prdfPfa5Data.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2013,2017 */
/* Contributors Listed Below - COPYRIGHT 2013,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -160,12 +160,13 @@ struct PfaData
TRACKIT :1,
TERMINATE :1,
LOGIT :1,
UNIT_CHECKSTOP :1,
MEM_CHNL_FAIL :1,
PROC_CORE_CS :1,
USING_SAVED_SDC :1,
LAST_CORE_TERMINATE :1,
DEFER_DECONFIG :1,
SECONDARY_ERROR :1,
Reserved :18;
Reserved :17;

// Thresholding
uint32_t errorCount :16, // Number of occurrences of this attention
Expand Down Expand Up @@ -210,12 +211,13 @@ struct PfaData
(i_right.TRACKIT << 25) |
(i_right.TERMINATE << 24) |
(i_right.LOGIT << 23) |
// FYI, two deprecated entries were removed. To make the
// parser compatible with older or newer error logs, these
// bits must remain a hole (i.e. it can be reused, but
// FYI, one deprecated entry was removed. To make the
// parser compatible with older or newer error logs, this
// bit must remain a hole (i.e. it can be reused, but
// subsequent data must remain in the bit positions that
// they are currently in).
(i_right.UNIT_CHECKSTOP << 20) |
(i_right.MEM_CHNL_FAIL << 21) |
(i_right.PROC_CORE_CS << 20) |
(i_right.USING_SAVED_SDC << 19) |
(i_right.LAST_CORE_TERMINATE << 18) |
(i_right.DEFER_DECONFIG << 17) |
Expand Down Expand Up @@ -264,11 +266,12 @@ struct PfaData
i_right.TRACKIT = (l_tmp[2] >> 25) & 0x01;
i_right.TERMINATE = (l_tmp[2] >> 24) & 0x01;
i_right.LOGIT = (l_tmp[2] >> 23) & 0x01;
// FYI, two deprecated entries were removed. To make the parser
// compatible with older or newer error logs, these bits must remain a
// FYI, one deprecated entry was removed. To make the parser
// compatible with older or newer error logs, this bit must remain a
// hole (i.e. it can be reused, but subsequent data must remain in the
// bit positions that they are currently in).
i_right.UNIT_CHECKSTOP = (l_tmp[2] >> 20) & 0x01;
i_right.MEM_CHNL_FAIL = (l_tmp[2] >> 21) & 0x01;
i_right.PROC_CORE_CS = (l_tmp[2] >> 20) & 0x01;
i_right.USING_SAVED_SDC = (l_tmp[2] >> 19) & 0x01;
i_right.LAST_CORE_TERMINATE = (l_tmp[2] >> 18) & 0x01;
i_right.DEFER_DECONFIG = (l_tmp[2] >> 17) & 0x01;
Expand Down

0 comments on commit 682ff15

Please sign in to comment.