summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C')
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C240
1 files changed, 0 insertions, 240 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C
index f3ee6884f..a2bc9ca83 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C
@@ -76,246 +76,6 @@ CenMbaTdCtlr::FUNCS CenMbaTdCtlr::cv_cmdCompleteFuncs[] =
// Private Functions
//------------------------------------------------------------------------------
-int32_t CenMbaTdCtlr::analyzeVcmPhase1( STEP_CODE_DATA_STRUCT & io_sc,
- const CenAddr & i_stopAddr,
- const CenAddr & i_endAddr )
-{
- #define PRDF_FUNC "[CenMbaTdCtlr::analyzeVcmPhase1] "
-
- int32_t o_rc = SUCCESS;
-
- do
- {
- if ( VCM_PHASE_1 != iv_tdState )
- {
- PRDF_ERR( PRDF_FUNC "Invalid state machine configuration" );
- o_rc = FAIL; break;
- }
-
- // Add the mark to the callout list.
- CalloutUtil::calloutMark( iv_mbaTrgt, iv_rank, iv_mark, io_sc );
-
- // Check for any ECC errors that occurred during the procedure.
- uint16_t eccErrorMask = NO_ERROR;
- o_rc = checkEccErrors( eccErrorMask, io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "checkEccErrors() failed" );
- break;
- }
-
- if ( eccErrorMask & UE )
- {
- o_rc = handleUe_Td( io_sc, i_stopAddr );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleUe_Td() failed" );
- break;
- }
-
- // Abort the procedure.
- iv_tdState = NO_OP;
- break;
- }
-
- if ( eccErrorMask & RETRY_CTE )
- {
- o_rc = handleRceEte_Td( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleRceEte_Td() failed" );
- break;
- }
- }
-
- // If the scrub stopped on the last address of the rank, start the next
- // TD procedure. Otherwise, resume background scrubbing. This is needed
- // for attentions like retry CTEs where, due to a hardware issue, must
- // report the attention immediately and cannot wait for the scrub to get
- // to the end of the rank.
-
- if ( i_endAddr == i_stopAddr )
- {
- // Start VCM Phase 2
- o_rc = startVcmPhase2( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "startVcmPhase2() failed" );
- break;
- }
- }
- else
- {
- // Restart the scrub on the next address.
- o_rc = resumeScrub( io_sc, eccErrorMask );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "resumeScrub() failed" );
- break;
- }
- }
-
- } while(0);
-
- // If this TD procedure was aborted, execute TD complete sequence.
- if ( (iv_tdState == NO_OP) && (SUCCESS == o_rc) )
- {
- o_rc = handleTdComplete( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleTdComplete() failed" );
- }
- }
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
-
-//------------------------------------------------------------------------------
-
-int32_t CenMbaTdCtlr::analyzeVcmPhase2( STEP_CODE_DATA_STRUCT & io_sc,
- const CenAddr & i_stopAddr,
- const CenAddr & i_endAddr )
-{
- #define PRDF_FUNC "[CenMbaTdCtlr::analyzeVcmPhase2] "
-
- int32_t o_rc = SUCCESS;
-
- do
- {
- if ( VCM_PHASE_2 != iv_tdState )
- {
- PRDF_ERR( PRDF_FUNC "Invalid state machine configuration" );
- o_rc = FAIL; break;
- }
-
- // Add the mark to the callout list.
- CalloutUtil::calloutMark( iv_mbaTrgt, iv_rank, iv_mark, io_sc );
-
- // Check for any ECC errors that occurred during the procedure.
- uint16_t eccErrorMask = NO_ERROR;
- o_rc = checkEccErrors( eccErrorMask, io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "checkEccErrors() failed" );
- break;
- }
-
- if ( eccErrorMask & UE )
- {
- o_rc = handleUe_Td( io_sc, i_stopAddr );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleUe_Td() failed" );
- break;
- }
-
- // Abort the procedure.
- iv_tdState = NO_OP;
- break;
- }
-
- if ( eccErrorMask & RETRY_CTE )
- {
- o_rc = handleRceEte_Td( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleRceEte_Td() failed" );
- break;
- }
- }
-
- if ( eccErrorMask & MCE )
- {
- // Chip mark is verified.
- // Do callouts, VPD updates, and start DRAM sparing, if possible.
- o_rc = handleMCE_VCM2( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleMCE_VCM2() failed" );
- break;
- }
- }
- else if ( i_endAddr == i_stopAddr )
- {
- // Chip mark verification failed.
- setTdSignature( io_sc, PRDFSIG_VcmFalseAlarm );
-
- // In manufacturing, this error log will be predictive.
- if ( areDramRepairsDisabled() )
- {
- io_sc.service_data->setServiceCall();
- iv_tdState = NO_OP; // Move on to the next TD procedure.
- break;
- }
-
- // Increment the false alarm count and threshold. if needed.
- if ( iv_vcmRankData.incFalseAlarm(iv_rank, io_sc) )
- {
- io_sc.service_data->AddSignatureList( iv_mbaTrgt,
- PRDFSIG_VcmFalseAlarmExceeded );
-
- // Treat the chip mark as verified.
- o_rc = handleMCE_VCM2( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleMCE_VCM2() failed" );
- }
- }
- else
- {
- // Remove chip mark from hardware.
- iv_mark.clearCM();
-
- // There is small time window where hardware places a chip mark
- // immediately after it is removed, but before the HWP procedure
- // can query the FIR registers. In this case, we will simply
- // allow the write to be 'blocked' and handle the new chip mark
- // in a separate attention.
- bool allowWriteBlocked = true;
- bool blocked; // Currently ignored.
- o_rc = mssSetMarkStore( iv_mbaTrgt, iv_rank, iv_mark, blocked,
- allowWriteBlocked );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "mssSetMarkStore() failed" );
- break;
- }
-
- iv_tdState = NO_OP; // Move on to the next TD procedure.
- }
- }
- else
- {
- // Restart the scrub on the next address.
- o_rc = resumeScrub( io_sc, eccErrorMask );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "resumeScrub() failed" );
- break;
- }
- }
-
- } while(0);
-
- // If this TD procedure was aborted, execute TD complete sequence.
- if ( (iv_tdState == NO_OP) && (SUCCESS == o_rc) )
- {
- o_rc = handleTdComplete( io_sc );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "handleTdComplete() failed" );
- }
- }
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
-
-//------------------------------------------------------------------------------
-
int32_t CenMbaTdCtlr::analyzeDsdPhase1( STEP_CODE_DATA_STRUCT & io_sc,
const CenAddr & i_stopAddr,
const CenAddr & i_endAddr )
OpenPOWER on IntegriCloud