diff options
Diffstat (limited to 'src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C')
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C | 219 |
1 files changed, 0 insertions, 219 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 24d7b6c9e..6e69f8ac5 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C @@ -468,124 +468,6 @@ int32_t CenMbaTdCtlr::initialize() //------------------------------------------------------------------------------ -int32_t CenMbaTdCtlr::analyzeCmdComplete( STEP_CODE_DATA_STRUCT & io_sc, - const CenAddr & i_stopAddr, - const CenAddr & i_endAddr ) -{ - #define PRDF_FUNC "[CenMbaTdCtlr::analyzeCmdComplete] " - - int32_t o_rc = SUCCESS; - - do - { - if ( NO_OP != iv_tdState ) - { - PRDF_ERR( PRDF_FUNC "Invalid state machine configuration" ); - o_rc = FAIL; break; - } - - // Initialize iv_rank. This must be done before calling other - // functions as they require iv_rank to be accurate. - iv_rank = i_stopAddr.getRank(); - - // Background scrubbing was interrupted, most likely because of an ECC - // error, so set the interrupted rank in the rank list. - o_rc = iv_masterRanks.setInterruptedRank( iv_rank ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "setInterruptedRank() failed" ); - break; - } - - // Get all reported error conditions. - uint16_t eccErrorMask = NO_ERROR; - o_rc = checkEccErrors( eccErrorMask, io_sc ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "checkEccErrors() failed" ); - break; - } - - // The order of the following checks is important. Each call to handle - // an error will set the PRD signature and override the previous - // signature. We want the highest priority error signature (memory UEs) - // to be displayed so these checks should be ordered from lowest to - // highest priority. - - if ( (eccErrorMask & SOFT_CTE) || (eccErrorMask & INTER_CTE) ) - { - o_rc = handleSoftIntCeEte_NonTd( io_sc ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "handleSoftIntCeEte_NonTd() failed" ); - break; - } - } - - if ( eccErrorMask & HARD_CTE ) - { - o_rc = handleHardCeEte_NonTd( io_sc, i_stopAddr ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "handleHardCeEte_NonTd() failed" ); - break; - } - } - - if ( iv_queue.empty() ) - { - // No TD requests so resume background. If the scrub reached the end - // address, start background scrubbing on the next good rank. - // Otherwise, resume the current scrub. - - if ( i_endAddr == i_stopAddr ) - { - if ( (NO_ERROR == eccErrorMask) || (MCE == eccErrorMask) ) - { - // The scrub completed without an error (this function - // currently ignores MCEs). Don't commit the error log - // (reduces informational error logs). - io_sc.service_data->setDontCommitErrl(); - } - - o_rc = startBgScrub( io_sc ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "startBgScrub() 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; - } - } - } - else - { - // A TD request was added to the queue, start the next TD request. - o_rc = startNextTd( io_sc ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "startNextTd() failed" ); - break; - } - } - - } while(0); - - return o_rc; - - #undef PRDF_FUNC -} - -//------------------------------------------------------------------------------ - int32_t CenMbaTdCtlr::analyzeVcmPhase1( STEP_CODE_DATA_STRUCT & io_sc, const CenAddr & i_stopAddr, const CenAddr & i_endAddr ) @@ -1926,107 +1808,6 @@ int32_t CenMbaTdCtlr::handleCeEte_Tps( STEP_CODE_DATA_STRUCT & io_sc ) //------------------------------------------------------------------------------ -int32_t CenMbaTdCtlr::handleHardCeEte_NonTd( STEP_CODE_DATA_STRUCT & io_sc, - const CenAddr & i_addr ) -{ - #define PRDF_FUNC "[CenMbaTdCtlr::handleHardCeEte_NonTd] " - - int32_t o_rc = SUCCESS; - - setTdSignature( io_sc, PRDFSIG_MaintHARD_CTE ); - - do - { - // Send page deallocation message to PHYP - o_rc = DEALLOC::pageGard( iv_mbaChip, i_addr ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "pageGard() failed" ); - break; - } - - // Get the failing symbol. Note that the hard CE threshold is 1 so there - // should only be one symbol with a non-zero per symbol count. - - MaintSymbols symData; CenSymbol junk; - o_rc = collectCeStats( iv_mbaChip, iv_rank, symData, junk ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "collectCeStats() failed." ); - break; - } - - if ( 1 != symData.size() ) - { - PRDF_ERR( PRDF_FUNC "collectCeStats() return size %d, but was " - "expecting size 1", symData.size() ); - o_rc = FAIL; - break; - } - - CenSymbol symbol = symData[0].symbol; - - // Callout the symbol. - MemoryMru memmru ( iv_mbaTrgt, iv_rank, symbol ); - io_sc.service_data->SetCallout( memmru ); - - // Add entry to CE table and add a TPS request to the queue, if needed. - CenMbaDataBundle * mbadb = getMbaDataBundle( iv_mbaChip ); - if ( mbadb->iv_ceTable.addEntry(i_addr, symbol, true) ) - { - o_rc = addTdQueueEntryTPS( iv_rank, io_sc ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "addTdQueueEntryTPS() failed" ); - break; - } - } - - // Any hard CEs in MNFG should be immediately reported. - if ( mfgMode() ) - io_sc.service_data->setServiceCall(); - - } while(0); - - return o_rc; - - #undef PRDF_FUNC -} - -//------------------------------------------------------------------------------ - -int32_t CenMbaTdCtlr::handleSoftIntCeEte_NonTd( STEP_CODE_DATA_STRUCT & io_sc ) -{ - #define PRDF_FUNC "[CenMbaTdCtlr::handleSoftIntCeEte_NonTd] " - - int32_t o_rc = SUCCESS; - - setTdSignature( io_sc, PRDFSIG_MaintNCE_CTE ); - - do - { - // Callout the rank. Note that the per CE counters only capture hard CEs - // so it is not possible to isolate any further than a rank. - MemoryMru memmru ( iv_mbaTrgt, iv_rank, MemoryMruData::CALLOUT_RANK ); - io_sc.service_data->SetCallout( memmru ); - - // Add a TPS request to the queue. - o_rc = addTdQueueEntryTPS( iv_rank, io_sc ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "addTdQueueEntryTPS() failed" ); - break; - } - - } while(0); - - return o_rc; - - #undef PRDF_FUNC -} - -//------------------------------------------------------------------------------ - int32_t CenMbaTdCtlr::handleTpsFalseAlarm( STEP_CODE_DATA_STRUCT & io_sc ) { #define PRDF_FUNC "[CenMbaTdCtlr::handleTpsFalseAlarm] " |