diff options
author | Caleb Palmer <cnpalmer@us.ibm.com> | 2019-08-07 13:38:08 -0500 |
---|---|---|
committer | Zane C Shelley <zshelle@us.ibm.com> | 2019-08-09 10:07:06 -0500 |
commit | b1090a522be13bedf9a47af0543cf6baa314a282 (patch) | |
tree | 87ca9cab8384392d43568f403552de9bf89e8e7d /src/usr/diag/prdf/plat/mem | |
parent | 3c440fe6d1e883b1d3bbb2b04ee5a9679c29d321 (diff) | |
download | talos-hostboot-b1090a522be13bedf9a47af0543cf6baa314a282.tar.gz talos-hostboot-b1090a522be13bedf9a47af0543cf6baa314a282.zip |
PRD: Axone more MEM_PORT cleanup and misc updates
Change-Id: I486f5b93d742f8c448c148da641c64152c050a68
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81926
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamen G Tyner <ben.tyner@ibm.com>
Reviewed-by: Zane C Shelley <zshelle@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81987
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/plat/mem')
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemScrubUtils.C | 33 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C | 89 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H | 2 |
3 files changed, 3 insertions, 121 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemScrubUtils.C b/src/usr/diag/prdf/plat/mem/prdfMemScrubUtils.C index a84f6b706..a6061dfc6 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemScrubUtils.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemScrubUtils.C @@ -106,17 +106,6 @@ uint32_t clearCmdCompleteAttn<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) } template<> -uint32_t clearCmdCompleteAttn<TYPE_MEM_PORT>( ExtensibleChip * i_chip ) -{ - PRDF_ASSERT( nullptr != i_chip ); - PRDF_ASSERT( TYPE_MEM_PORT == i_chip->getType() ); - - ExtensibleChip * ocmbChip = getConnectedParent( i_chip, TYPE_OCMB_CHIP ); - - return clearCmdCompleteAttn<TYPE_OCMB_CHIP>( ocmbChip ); -} - -template<> uint32_t clearCmdCompleteAttn<TYPE_MBA>( ExtensibleChip * i_chip ) { // Clear MBASPA[0,8]. @@ -194,17 +183,6 @@ uint32_t clearEccCounters<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) } template<> -uint32_t clearEccCounters<TYPE_MEM_PORT>( ExtensibleChip * i_chip ) -{ - PRDF_ASSERT( nullptr != i_chip ); - PRDF_ASSERT( TYPE_MEM_PORT == i_chip->getType() ); - - ExtensibleChip * ocmbChip = getConnectedParent( i_chip, TYPE_OCMB_CHIP ); - - return clearEccCounters<TYPE_OCMB_CHIP>( ocmbChip ); -} - -template<> uint32_t clearEccCounters<TYPE_MBA>( ExtensibleChip * i_chip ) { PRDF_ASSERT( nullptr != i_chip ); @@ -306,17 +284,6 @@ uint32_t clearEccFirs<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) } template<> -uint32_t clearEccFirs<TYPE_MEM_PORT>( ExtensibleChip * i_chip ) -{ - PRDF_ASSERT( nullptr != i_chip ); - PRDF_ASSERT( TYPE_MEM_PORT == i_chip->getType() ); - - ExtensibleChip * ocmbChip = getConnectedParent( i_chip, TYPE_OCMB_CHIP ); - - return clearEccFirs<TYPE_OCMB_CHIP>( ocmbChip ); -} - -template<> uint32_t clearEccFirs<TYPE_MBA>( ExtensibleChip * i_chip ) { uint32_t o_rc = SUCCESS; diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C index 23f08d6eb..779d13a73 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C @@ -1054,14 +1054,6 @@ SCAN_COMM_REGISTER_CLASS * __getEccFirAnd<TYPE_OCMB_CHIP>( } template<> -SCAN_COMM_REGISTER_CLASS * __getEccFirAnd<TYPE_MEM_PORT>( - ExtensibleChip * i_chip ) -{ - ExtensibleChip * ocmbChip = getConnectedParent( i_chip, TYPE_OCMB_CHIP ); - return ocmbChip->getRegister( "RDFFIR_AND" ); -} - -template<> SCAN_COMM_REGISTER_CLASS * __getEccFirAnd<TYPE_MBA>( ExtensibleChip * i_chip ) { ExtensibleChip * membChip = getConnectedParent( i_chip, TYPE_MEMBUF ); @@ -1144,83 +1136,6 @@ uint32_t __findChipMarks( TdRankList<TC> & i_rankList ) #undef PRDF_FUNC } -template <> -uint32_t __findChipMarks<TYPE_MEM_PORT>( - TdRankList<TYPE_OCMB_CHIP> & i_rankList ) -{ - #define PRDF_FUNC "[__findChipMarks] " - - uint32_t o_rc = SUCCESS; - - for ( auto & entry : i_rankList.getList() ) - { - ExtensibleChip * ocmb = entry.getChip(); - MemRank rank = entry.getRank(); - - // Call readChipMark to get MemMark. - MemMark chipMark; - o_rc = MarkStore::readChipMark<TYPE_OCMB_CHIP>( ocmb, rank, chipMark ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "readChipMark(0x%08x,0x%02x) failed", - ocmb->getHuid(), rank.getKey() ); - break; - } - - if ( !chipMark.isValid() ) continue; // no chip mark present - - // Get the DQ Bitmap data. - MemDqBitmap dqBitmap; - o_rc = getBadDqBitmap( ocmb->getTrgt(), rank, dqBitmap ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x,0x%02x)", - ocmb->getHuid(), rank.getKey() ); - break; - } - - // Check if the chip mark is verified or not. - bool cmVerified = false; - o_rc = dqBitmap.isChipMark( chipMark.getSymbol(), cmVerified ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "dqBitmap.isChipMark() failed on 0x%08x " - "0x%02x", ocmb->getHuid(), rank.getKey() ); - break; - } - - // If the chip mark is unverified, add a VcmEvent to the TD queue. - if ( !cmVerified ) - { - // Chip mark is not present in VPD. Add it to queue. - TdEntry * e = new VcmEvent<TYPE_OCMB_CHIP>{ ocmb, rank, chipMark }; - MemDbUtils::pushToQueue<TYPE_OCMB_CHIP>( ocmb, e ); - - // We will want to clear the MPE attention for the unverified chip - // mark so we don't get any 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. - SCAN_COMM_REGISTER_CLASS* reg =__getEccFirAnd<TYPE_OCMB_CHIP>(ocmb); - reg->setAllBits(); - reg->ClearBit( 0 + rank.getMaster() ); // fetch - reg->ClearBit( 20 + rank.getMaster() ); // scrub - o_rc = reg->Write(); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "Write() failed on ECC FIR AND: 0x%08x", - ocmb->getHuid() ); - break; - } - } - } - - return o_rc; - - #undef PRDF_FUNC -} - - template<> uint32_t MemTdCtlr<TYPE_MCBIST>::initialize() { @@ -1281,7 +1196,7 @@ uint32_t MemTdCtlr<TYPE_OCMB_CHIP>::initialize() } // Find all unverified chip marks. - o_rc = __findChipMarks<TYPE_MEM_PORT>( iv_rankList ); + o_rc = __findChipMarks<TYPE_OCMB_CHIP>( iv_rankList ); if ( SUCCESS != o_rc ) { PRDF_ERR( PRDF_FUNC "__findChipMarks() failed on 0x%08x", @@ -1516,7 +1431,7 @@ uint32_t MemTdCtlr<TYPE_OCMB_CHIP>::handleRrFo() chipMark ); if ( SUCCESS != o_rc ) { - PRDF_ERR( PRDF_FUNC "readChipMark<TYPE_MEM_PORT>(0x%08x,%d) " + PRDF_ERR( PRDF_FUNC "readChipMark<TYPE_OCMB_CHIP>(0x%08x,%d) " "failed", ocmbChip->getHuid(), rank.getMaster() ); break; } diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H b/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H index d1cf12a50..2e833a12a 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H @@ -81,7 +81,7 @@ class TdRankListEntry private: ExtensibleChip * iv_chip = nullptr; ///< MCA, MBA, or OCMB chip. - MemRank iv_rank = MemRank(0); ///< Any rank on the MCA/MBA/MEM_PORT + MemRank iv_rank = MemRank(0); ///< Any rank on the MCA/MBA/OCMB }; /** |