diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2018-05-17 21:57:07 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-05-23 15:11:28 -0400 |
commit | 4b7ee363259204d07076d93a89d49abb19d4f166 (patch) | |
tree | 842ef3fbe78fe6e83c4e2bcf5f91c6b4d505c392 /src/usr/diag/prdf/common/plat/pegasus | |
parent | e940af9a779a680dd817b65f5bbc356ad91f4c59 (diff) | |
download | talos-hostboot-4b7ee363259204d07076d93a89d49abb19d4f166.tar.gz talos-hostboot-4b7ee363259204d07076d93a89d49abb19d4f166.zip |
PRD: Update MemTdCtlr::initialize() for Centaur
Change-Id: I8d80af3f401af0728fa41585c33b8ff900cfae39
RTC: 192638
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59060
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59230
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>
Diffstat (limited to 'src/usr/diag/prdf/common/plat/pegasus')
-rw-r--r-- | src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C | 47 | ||||
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C | 131 |
2 files changed, 0 insertions, 178 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C index 0a30244e0..aa27c6797 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C @@ -43,53 +43,6 @@ using namespace PlatServices; //------------------------------------------------------------------------------ -int32_t CenMbaTdCtlrCommon::initialize() -{ - #define PRDF_FUNC "[CenMbaTdCtlrCommon::initialize] " - - int32_t o_rc = SUCCESS; - - do - { - // Set iv_mbaTrgt - iv_mbaTrgt = iv_mbaChip->GetChipHandle(); - - // Validate iv_mbaChip. - if ( TYPE_MBA != getTargetType(iv_mbaTrgt) ) - { - PRDF_ERR( PRDF_FUNC "iv_mbaChip is not TYPE_MBA" ); - o_rc = FAIL; break; - } - - // Set iv_membChip. - CenMbaDataBundle * mbadb = getMbaDataBundle( iv_mbaChip ); - iv_membChip = mbadb->getMembChip(); - if ( NULL == iv_membChip ) - { - PRDF_ERR( PRDF_FUNC "getMembChip() failed" ); - o_rc = FAIL; break; - } - - // Set iv_mbaPos. - iv_mbaPos = getTargetPosition( iv_mbaTrgt ); - if ( MAX_MBA_PER_MEMBUF <= iv_mbaPos ) - { - PRDF_ERR( PRDF_FUNC "iv_mbaPos=%d is invalid", iv_mbaPos ); - o_rc = FAIL; break; - } - - // Set iv_x4Dimm. - iv_x4Dimm = isDramWidthX4(iv_mbaTrgt); - - } while (0); - - return o_rc; - - #undef PRDF_FUNC -} - -//------------------------------------------------------------------------------ - bool CenMbaTdCtlrCommon::isInTdMode() { return ( (NO_OP != iv_tdState) && (MAX_TD_STATE > iv_tdState) ); 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 6e69f8ac5..a5d3382eb 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C @@ -337,137 +337,6 @@ int32_t CenMbaTdCtlr::handleTdEvent( STEP_CODE_DATA_STRUCT & io_sc, // Private Functions //------------------------------------------------------------------------------ -int32_t CenMbaTdCtlr::initialize() -{ - #define PRDF_FUNC "[CenMbaTdCtlr::initialize] " - - int32_t o_rc = SUCCESS; - - do - { - if ( iv_initialized ) break; // nothing to do - - // Initialize common instance variables - o_rc = CenMbaTdCtlrCommon::initialize(); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "CenMbaTdCtlrCommon::initialize() failed" ); - break; - } - - // Initialize the list of master ranks. - o_rc = iv_masterRanks.initialize( iv_mbaTrgt ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "TdRankList::initialize() failed" ); - break; - } - - // Unmask the fetch attentions just in case there were masked during a - // TD procedure prior to a reset/reload. - o_rc = unmaskFetchAttns(); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "unmaskFetchAttns() failed" ); - break; - } - - //---------------------------------------------------------------------- - // Add any unverified chip marks to the TD queue - //---------------------------------------------------------------------- - - // Will want to clear the MPE attention for any unverified chip marks. - // This is so we don't get redundant attentions for chip marks that are - // already in the queue. This is reset/reload safe because initialize() - // will be called again and we can redetect the unverified chip marks. - - const char * reg_str = (0 == iv_mbaPos) ? "MBSECCFIR_0_AND" - : "MBSECCFIR_1_AND"; - SCAN_COMM_REGISTER_CLASS * firand = iv_membChip->getRegister( reg_str ); - firand->setAllBits(); - - // Search all configured ranks for unverfied chip marks. - TdRankList::List rankList = iv_masterRanks.getList(); - for ( TdRankList::ListItr it = rankList.begin(); - it != rankList.end(); it++ ) - { - CenMark markData; - CenRank rank ( it->rank ); - - // Get mark store from hardware. - o_rc = mssGetMarkStore( iv_mbaTrgt, rank, markData ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "mssGetMarkStore() failed." ); - o_rc = FAIL; break; - } - - // Move on to the next rank if there is no chip mark in hardware. - if ( !markData.getCM().isValid() ) continue; - - // Check if chip mark also present in VPD. - CenDqBitmap bitmap; - o_rc = getBadDqBitmap( iv_mbaTrgt, rank, bitmap ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getBadDqBitmap() failed" ); - break; - } - - bool vpdCM; - o_rc = bitmap.isChipMark( markData.getCM(), vpdCM ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "isChipMark() failed" ); - break; - } - - if ( !vpdCM ) - { - PRDF_INF( PRDF_FUNC "Adding CM to queue: huid=0x%08x rank=%d", - iv_mbaChip->GetId(), rank.getMaster() ); - - // Chip mark is not present in VPD. Add it to queue. - o_rc = addTdQueueEntryVCM( rank ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "addTdQueueEntryVCM() failed" ); - break; - } - - // Clear MPE bits for this rank. - firand->ClearBit( 0 + rank.getMaster() ); // fetch - firand->ClearBit( 20 + rank.getMaster() ); // scrub - } - } - if ( SUCCESS != o_rc ) break; - - if ( !iv_queue.empty() ) - { - // Unverified chip marks found so clear the FIR bits. - o_rc = firand->Write(); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "Write() failed on %s", reg_str ); - break; - } - } - - //---------------------------------------------------------------------- - // At this point, the TD controller is initialized. - //---------------------------------------------------------------------- - - iv_initialized = true; - - } 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 ) |