diff options
Diffstat (limited to 'src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C')
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 4053a5414..0ff352b44 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -264,29 +264,6 @@ int32_t maxSparesExceeded( ExtensibleChip * i_membChip, } PRDF_PLUGIN_DEFINE( Membuf, maxSparesExceeded ); -/** - * @brief Checks if spare deployed bit for DMI bus is set. - * @param i_mbChip Membuf chip - * @param i_sc The step code data struct. - * @return SUCCESS if bit is on, FAIL otherwise. - */ -int32_t checkSpareBit( ExtensibleChip * i_mbChip, - STEP_CODE_DATA_STRUCT & i_sc ) -{ - using namespace LaneRepair; - int32_t l_rc = FAIL; - - ExtensibleChip * mcsChip = getMembufDataBundle( i_mbChip )->getMcsChip(); - - if ( true == isSpareBitOnDMIBus( mcsChip, i_mbChip )) - { - l_rc = SUCCESS; - } - - return l_rc; -} -PRDF_PLUGIN_DEFINE( Membuf, checkSpareBit ); - //############################################################################## // // MBSECCFIRs @@ -647,217 +624,6 @@ PLUGIN_FETCH_UE_ERROR( 1 ) //------------------------------------------------------------------------------ -/** - * @brief Handles MCS Channel fail bits, if they exist. - * - * @param i_membChip The Centaur chip. - * @param i_sc ServiceDataColector. - * - * @return SUCCESS if MCS channel fail is present and properly - * handled, FAIL otherwise. - */ -int32_t handleMcsChnlCs( ExtensibleChip * i_membChip, - STEP_CODE_DATA_STRUCT & i_sc ) -{ - #define PRDF_FUNC "[handleMcsChnlCs] " - - // We will return FAIL from this function if MCS channel fail bits - // are not set. If MCS channel fail bits are set, we will try to analyze - // Mcs. If MCS is not analyzed properly, we will return FAIL. - // This will trigger rule code to execute alternate resolution. - - int32_t l_rc = SUCCESS; - do - { - CenMembufDataBundle * mbdb = getMembufDataBundle( i_membChip ); - ExtensibleChip * mcsChip = mbdb->getMcsChip(); - if( NULL == mcsChip ) - { - l_rc = FAIL; - break; - } - - SCAN_COMM_REGISTER_CLASS * mciFir = mcsChip->getRegister("MCIFIR"); - SCAN_COMM_REGISTER_CLASS * mciFirMask = - mcsChip->getRegister("MCIFIR_MASK"); - - l_rc = mciFir->Read(); - l_rc |= mciFirMask->Read(); - - if ( SUCCESS != l_rc ) - { - PRDF_ERR( PRDF_FUNC "MCIFIR/MCIFIR_MASK read failed for 0x%08x", - mcsChip->GetId()); - break; - } - - // If any of MCS channel fail bit is set, we will analyze - // MCS. It is safe to do hard coded check as channel fail - // bits are hard wired and and they can not change without HW - // change. - // bits 0,1, 6, 8, 9, 22, 23, 40 are channel fail bits. - uint64_t chnlCsBitsMask = 0xC2C0030000800000ull; - uint64_t mciFirBits = mciFir->GetBitFieldJustified(0, 64); - uint64_t mciFirMaskBits = mciFirMask->GetBitFieldJustified(0, 64); - - if ( mciFirBits & ~mciFirMaskBits & chnlCsBitsMask ) - { - l_rc = mcsChip->Analyze( i_sc, - i_sc.service_data->getSecondaryAttnType() ); - - if( SUCCESS == l_rc ) break; - } - - l_rc = FAIL; - - }while( 0 ); - - return l_rc; - #undef PRDF_FUNC - -} PRDF_PLUGIN_DEFINE( Membuf, handleMcsChnlCs ); - -//------------------------------------------------------------------------------ - -/** - * @brief Handles MBACALFIR RCD Parity error bits, if they exist on a single mba - * - * @param i_membChip The Centaur chip. - * @param i_sc ServiceDataCollector. - * @param i_mbaPos The MBA position. - * - * @return SUCCESS if MBACALFIR Parity error is present and properly - * handled, FAIL otherwise. - */ -int32_t handleSingleMbaCalParityErr( ExtensibleChip * i_membChip, - STEP_CODE_DATA_STRUCT & i_sc, - uint32_t i_mbaPos) -{ - #define PRDF_FUNC "[handleSingleMbaCalParityErr] " - - int32_t l_rc = SUCCESS; - - CenMembufDataBundle * mbdb = getMembufDataBundle( i_membChip ); - - do - { - ExtensibleChip * mbaChip = mbdb->getMbaChip(i_mbaPos); - if ( NULL == mbaChip ) - { - l_rc = FAIL; - break; - } - - SCAN_COMM_REGISTER_CLASS * mbaCalFir = - mbaChip->getRegister("MBACALFIR"); - SCAN_COMM_REGISTER_CLASS * mbaCalMask = - mbaChip->getRegister("MBACALFIR_MASK"); - - l_rc = mbaCalFir->Read(); - l_rc |= mbaCalMask->Read(); - - if ( SUCCESS != l_rc ) - { - PRDF_ERR( PRDF_FUNC "MBACALFIR/MBACALFIR_MASK read failed for" - "0x%08x", mbaChip->GetId()); - break; - } - - // If any of the MBACALFIR parity error bits are set, we will - // analyze the MBA. - // bits 4 and 7 are parity error bits - bool bit4 = mbaCalFir->IsBitSet(4); - bool mask4 = mbaCalMask->IsBitSet(4); - - bool bit7 = mbaCalFir->IsBitSet(7); - bool mask7 = mbaCalMask->IsBitSet(7); - - if ( ( bit4 && !mask4 ) || ( bit7 && !mask7 ) ) - { - l_rc = mbaChip->Analyze( i_sc, - i_sc.service_data->getSecondaryAttnType() ); - if ( SUCCESS == l_rc ) break; - } - - l_rc = FAIL; - - }while(0); - - return l_rc; - #undef PRDF_FUNC - -} PRDF_PLUGIN_DEFINE( Membuf, handleSingleMbaCalParityErr ); - -//------------------------------------------------------------------------------ - -/** - * @brief MBSFIR[4] - Internal Timeout error. - * @param i_mbChip The Centaur chip - * @param i_sc Step code data struct - * @return Non-SUCCESS if analysis fails. SUCCESS otherwise. - */ -int32_t internalTimeout( ExtensibleChip * i_mbChip, - STEP_CODE_DATA_STRUCT & i_sc ) -{ - #define PRDF_FUNC "[internalTimeout] " - - int32_t o_rc = SUCCESS; - - do - { - // First, check if there are any MBACALFIR parity errors. - for ( uint32_t i = 0; i < MAX_MBA_PER_MEMBUF; i++) - { - o_rc = handleSingleMbaCalParityErr( i_mbChip, i_sc, i ); - - // If SUCCESS is returned, then there was a parity error and - // analysis was successful. - if ( SUCCESS == o_rc ) break; - } - if ( SUCCESS == o_rc ) break; // nothing more to do. - - // Next, check if there was an MBSFIR external timeout. - SCAN_COMM_REGISTER_CLASS * fir = i_mbChip->getRegister("MBSFIR"); - o_rc = fir->Read(); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "failed to read MBSFIR on 0x%08x", - i_mbChip->GetId() ); - break; - } - - if ( fir->IsBitSet(3) ) - { - if ( CHECK_STOP == i_sc.service_data->getPrimaryAttnType() ) - { - // In this case, we do not want the internal timeout to be - // blamed as the root cause of the checkstop. So move onto the - // next FIR bit. - o_rc = PRD_SCAN_COMM_REGISTER_ZERO; - } - else - { - // Make the callout of the external timeout error. - i_sc.service_data->SetCallout( LEVEL2_SUPPORT, - MRU_MED, NO_GARD ); - } - } - else - { - // The internal timeout error is on by itself. - i_sc.service_data->SetCallout( i_mbChip->GetChipHandle(), MRU_MED ); - } - - } while (0); - - return o_rc; - - #undef PRDF_FUNC - -} PRDF_PLUGIN_DEFINE( Membuf, internalTimeout ); - -//------------------------------------------------------------------------------ - // Define the plugins for memory ECC errors. #define PLUGIN_FETCH_ECC_ERROR( TYPE, MBA ) \ int32_t AnalyzeFetch##TYPE##MBA( ExtensibleChip * i_membChip, \ @@ -892,18 +658,6 @@ PLUGIN_FETCH_RCE_PREUE_ERROR( PreUe, 1, false ) #undef PLUGIN_FETCH_RCE_PREUE_ERROR -// Define the plugins for RCD parity error memory UE side-effects -#define PLUGIN_RCD_PARITY_UE_SIDEEFFECTS( MBA ) \ -int32_t handleSingleMbaCalParityErr##MBA( ExtensibleChip * i_membChip, \ - STEP_CODE_DATA_STRUCT & i_sc) \ -{ \ - return handleSingleMbaCalParityErr( i_membChip, i_sc, MBA ); \ -} \ -PRDF_PLUGIN_DEFINE( Membuf, handleSingleMbaCalParityErr##MBA ); - -PLUGIN_RCD_PARITY_UE_SIDEEFFECTS ( 0 ) -PLUGIN_RCD_PARITY_UE_SIDEEFFECTS ( 1 ) - //------------------------------------------------------------------------------ int32_t calloutInterface_dmi( ExtensibleChip * i_membChip, |