diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2018-05-15 21:17:35 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-05-23 15:11:16 -0400 |
commit | 5064efd9ee552ace99fb051ce98bb896202933ab (patch) | |
tree | a162ded1c13ee10a2e9edcdadd243ed961970f89 /src/usr | |
parent | 0535232e93da36701b20fd52022f02af6fdfc7f4 (diff) | |
download | talos-hostboot-5064efd9ee552ace99fb051ce98bb896202933ab.tar.gz talos-hostboot-5064efd9ee552ace99fb051ce98bb896202933ab.zip |
PRD: Simplify templates in memory CE functions
Change-Id: I8182ce256b247009b198220f937aef58343a61bf
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58879
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59227
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C | 2 | ||||
-rw-r--r-- | src/usr/diag/prdf/common/plat/mem/prdfMemDbUtils.H | 32 | ||||
-rw-r--r-- | src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.C | 20 | ||||
-rw-r--r-- | src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.H | 4 | ||||
-rw-r--r-- | src/usr/diag/prdf/common/plat/mem/prdfP9Mca_common.C | 2 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C | 12 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_ipl.C | 18 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C | 36 |
8 files changed, 73 insertions, 53 deletions
diff --git a/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C b/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C index eda3cea48..e34b40591 100644 --- a/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C +++ b/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C @@ -260,7 +260,7 @@ int32_t AnalyzeFetchNce##POS( ExtensibleChip * i_chip, \ { \ ExtensibleChip * mbaChip = getConnectedChild( i_chip, TYPE_MBA, POS ); \ PRDF_ASSERT( nullptr != mbaChip ); \ - MemEcc::analyzeFetchNceTce<TYPE_MBA, MbaDataBundle *>( mbaChip, io_sc ); \ + MemEcc::analyzeFetchNceTce<TYPE_MBA>( mbaChip, io_sc ); \ return SUCCESS; \ } \ PRDF_PLUGIN_DEFINE( cen_centaur, AnalyzeFetchNce##POS ); diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemDbUtils.H b/src/usr/diag/prdf/common/plat/mem/prdfMemDbUtils.H index fc4ff7800..9028dec8e 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemDbUtils.H +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemDbUtils.H @@ -40,6 +40,38 @@ namespace MemDbUtils //############################################################################## /** + * @brief Generic wrapper to add an entry to the CE table. + * @param i_chip MCA or MBA. + * @param i_addr CE address. + * @param i_symbol CE symbol. + * @param i_isHard True if this was a hard CE. False otherwise. + * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. + */ +template<TARGETING::TYPE T> +uint32_t addCeTableEntry( ExtensibleChip * i_chip, const MemAddr & i_addr, + const MemSymbol & i_symbol, bool i_isHard ); + +template<> inline +uint32_t addCeTableEntry<TARGETING::TYPE_MCA>( ExtensibleChip * i_chip, + const MemAddr & i_addr, + const MemSymbol & i_symbol, + bool i_isHard ) +{ + return getMcaDataBundle(i_chip)->iv_ceTable.addEntry( i_addr, i_symbol, + i_isHard ); +} + +template<> inline +uint32_t addCeTableEntry<TARGETING::TYPE_MBA>( ExtensibleChip * i_chip, + const MemAddr & i_addr, + const MemSymbol & i_symbol, + bool i_isHard ) +{ + return getMbaDataBundle(i_chip)->iv_ceTable.addEntry( i_addr, i_symbol, + i_isHard ); +} + +/** * @brief Generic wrapper to add an entry to the UE table. * @param i_chip MCA or MBA. * @param i_type UE table entry type. diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.C b/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.C index 9cb7f5b42..467441c5a 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.C @@ -585,7 +585,7 @@ uint32_t analyzeFetchMpe<TYPE_MBA>( ExtensibleChip * i_chip, //------------------------------------------------------------------------------ -template<TARGETING::TYPE T, typename D> +template<TARGETING::TYPE T> uint32_t handleMemCe( ExtensibleChip * i_chip, const MemAddr & i_addr, const MemSymbol & i_symbol, bool & o_doTps, STEP_CODE_DATA_STRUCT & io_sc, bool i_isHard ) @@ -604,8 +604,8 @@ uint32_t handleMemCe( ExtensibleChip * i_chip, const MemAddr & i_addr, io_sc.service_data->SetCallout( memmru, MRU_MEDA ); // Add data to the CE table. - D db = static_cast<D>(i_chip->getDataBundle()); - uint32_t ceTableRc = db->iv_ceTable.addEntry( i_addr, i_symbol, i_isHard ); + uint32_t ceTableRc = MemDbUtils::addCeTableEntry<T>( i_chip, i_addr, + i_symbol, i_isHard ); // Check MNFG thresholds, if needed. // NOTE: We will only check the MNFG thresholds if DRAM repairs is disabled. @@ -688,7 +688,7 @@ uint32_t handleMemCe( ExtensibleChip * i_chip, const MemAddr & i_addr, //------------------------------------------------------------------------------ -template<TARGETING::TYPE T, typename D> +template<TARGETING::TYPE T> uint32_t analyzeFetchNceTce( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ) { @@ -726,7 +726,7 @@ uint32_t analyzeFetchNceTce( ExtensibleChip * i_chip, bool doTps = false; if ( sym1.isValid() ) { - o_rc = handleMemCe<T,D>( i_chip, addr, sym1, doTps, io_sc ); + o_rc = handleMemCe<T>( i_chip, addr, sym1, doTps, io_sc ); if ( SUCCESS != o_rc ) { PRDF_ERR( PRDF_FUNC "handleMemCe(0x%08x,0x%02x,%d) failed", @@ -747,7 +747,7 @@ uint32_t analyzeFetchNceTce( ExtensibleChip * i_chip, if ( sym2.isValid() ) { bool tmp; - o_rc = handleMemCe<T,D>( i_chip, addr, sym2, tmp, io_sc ); + o_rc = handleMemCe<T>( i_chip, addr, sym2, tmp, io_sc ); if ( SUCCESS != o_rc ) { PRDF_ERR( PRDF_FUNC "handleMemCe(0x%08x,0x%02x,%d) failed", @@ -790,11 +790,11 @@ uint32_t analyzeFetchNceTce( ExtensibleChip * i_chip, // To resolve template linker errors. template -uint32_t analyzeFetchNceTce<TYPE_MCA, McaDataBundle *>( ExtensibleChip * i_chip, - STEP_CODE_DATA_STRUCT & io_sc ); +uint32_t analyzeFetchNceTce<TYPE_MCA>( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ); template -uint32_t analyzeFetchNceTce<TYPE_MBA, MbaDataBundle *>( ExtensibleChip * i_chip, - STEP_CODE_DATA_STRUCT & io_sc ); +uint32_t analyzeFetchNceTce<TYPE_MBA>( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ); //------------------------------------------------------------------------------ diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.H b/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.H index 1a96afeec..735ae436f 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.H +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemEccAnalysis.H @@ -59,7 +59,7 @@ namespace MemEcc * @param i_isHard True if this is a hard CE. Default is false. * @return Non-SUCCESS if an interal function fails, SUCCESS otherwise. */ -template<TARGETING::TYPE T, typename D> +template<TARGETING::TYPE T> uint32_t handleMemCe( ExtensibleChip * i_chip, const MemAddr & i_addr, const MemSymbol & i_symbol, bool & o_doTps, STEP_CODE_DATA_STRUCT & io_sc, bool i_isHard = false ); @@ -150,7 +150,7 @@ uint32_t analyzeFetchMpe( ExtensibleChip * i_chip, const MemRank & i_rank, * @param io_sc The step code data struct. * @return Non-SUCCESS if an interal function fails, SUCCESS otherwise. */ -template<TARGETING::TYPE T, typename D> +template<TARGETING::TYPE T> uint32_t analyzeFetchNceTce( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ); diff --git a/src/usr/diag/prdf/common/plat/mem/prdfP9Mca_common.C b/src/usr/diag/prdf/common/plat/mem/prdfP9Mca_common.C index c5e9680c4..ac54ac97e 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfP9Mca_common.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfP9Mca_common.C @@ -211,7 +211,7 @@ PLUGIN_FETCH_MPE_ERROR( 7 ) int32_t AnalyzeFetchNceTce( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ) { - MemEcc::analyzeFetchNceTce<TYPE_MCA, McaDataBundle *>( i_chip, io_sc ); + MemEcc::analyzeFetchNceTce<TYPE_MCA>( i_chip, io_sc ); return SUCCESS; // nothing to return to rule code } PRDF_PLUGIN_DEFINE( p9_mca, AnalyzeFetchNceTce ); diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C index 410ef7ac8..d4e29723c 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C @@ -218,7 +218,7 @@ uint32_t MemTdCtlr<T>::handleCmdComplete( STEP_CODE_DATA_STRUCT & io_sc ) // some way to change the template to use the MCA. It is also a local function // because this is only for MemTdCtlr internal use and it didn't make much sense // to create a public function. -template<TARGETING::TYPE T, typename D> +template<TARGETING::TYPE T> uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, const MemAddr & i_addr, bool & o_errorsFound, STEP_CODE_DATA_STRUCT & io_sc ); @@ -272,11 +272,8 @@ uint32_t __analyzeCmdComplete<TYPE_MCBIST>( ExtensibleChip * i_chip, for ( auto & mcaChip : portList ) { bool errorsFound; - uint32_t l_rc = __checkEcc<TYPE_MCA, McaDataBundle *>( mcaChip, - io_queue, - i_addr, - errorsFound, - io_sc ); + uint32_t l_rc = __checkEcc<TYPE_MCA>( mcaChip, io_queue, i_addr, + errorsFound, io_sc ); if ( SUCCESS != l_rc ) { PRDF_ERR( PRDF_FUNC "__checkEcc<TYPE_MCA>(0x%08x) failed", @@ -307,8 +304,7 @@ uint32_t __analyzeCmdComplete<TYPE_MBA>( ExtensibleChip * i_chip, o_stoppedRank = __getStopRank<TYPE_MBA>( i_chip, i_addr ); // Check the MBA for ECC errors. - return __checkEcc<TYPE_MBA, MbaDataBundle *>( i_chip, io_queue, i_addr, - o_errorsFound, io_sc ); + return __checkEcc<TYPE_MBA>(i_chip, io_queue, i_addr, o_errorsFound, io_sc); } //------------------------------------------------------------------------------ diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_ipl.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_ipl.C index b0901b456..6fcd0f4de 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_ipl.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_ipl.C @@ -165,7 +165,7 @@ bool __mnfgCeCheck<TYPE_MBA>( uint32_t i_eccAttns ) return ( 0 != (i_eccAttns & MAINT_HARD_NCE_ETE) ); } -template <TARGETING::TYPE T, typename D> +template <TARGETING::TYPE T> uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, const MemAddr & i_addr, bool & o_errorsFound, STEP_CODE_DATA_STRUCT & io_sc ) @@ -244,17 +244,13 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, } template -uint32_t __checkEcc<TYPE_MCA, McaDataBundle *>( ExtensibleChip * i_chip, - TdQueue & io_queue, - const MemAddr & i_addr, - bool & o_errorsFound, - STEP_CODE_DATA_STRUCT & io_sc ); +uint32_t __checkEcc<TYPE_MCA>( ExtensibleChip * i_chip, TdQueue & io_queue, + const MemAddr & i_addr, bool & o_errorsFound, + STEP_CODE_DATA_STRUCT & io_sc ); template -uint32_t __checkEcc<TYPE_MBA, MbaDataBundle *>( ExtensibleChip * i_chip, - TdQueue & io_queue, - const MemAddr & i_addr, - bool & o_errorsFound, - STEP_CODE_DATA_STRUCT & io_sc ); +uint32_t __checkEcc<TYPE_MBA>( ExtensibleChip * i_chip, TdQueue & io_queue, + const MemAddr & i_addr, bool & o_errorsFound, + STEP_CODE_DATA_STRUCT & io_sc ); //------------------------------------------------------------------------------ diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C index 0c329f89b..e0835df7e 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C @@ -457,7 +457,7 @@ uint32_t MemTdCtlr<T>::defaultStep( STEP_CODE_DATA_STRUCT & io_sc ) //------------------------------------------------------------------------------ -template<TARGETING::TYPE T, typename D> +template<TARGETING::TYPE T> uint32_t __handleNceEte( ExtensibleChip * i_chip, TdQueue & io_queue, const MemAddr & i_addr, STEP_CODE_DATA_STRUCT & io_sc, bool i_isHard = false ) @@ -496,8 +496,8 @@ uint32_t __handleNceEte( ExtensibleChip * i_chip, TdQueue & io_queue, { // Add the symbol(s) to the callout list and CE table. bool doTps; - o_rc = MemEcc::handleMemCe<T,D>( i_chip, i_addr, d.symbol, doTps, - io_sc, i_isHard ); + o_rc = MemEcc::handleMemCe<T>( i_chip, i_addr, d.symbol, doTps, + io_sc, i_isHard ); if ( SUCCESS != o_rc ) { PRDF_ERR( PRDF_FUNC "handleMemCe(0x%08x) failed", @@ -595,7 +595,7 @@ uint32_t __handleRceEte<TYPE_MBA>( ExtensibleChip * i_chip, //------------------------------------------------------------------------------ -template <TARGETING::TYPE T, typename D> +template <TARGETING::TYPE T> uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, const MemAddr & i_addr, bool & o_errorsFound, STEP_CODE_DATA_STRUCT & io_sc ) @@ -630,10 +630,10 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, o_errorsFound = true; io_sc.service_data->AddSignatureList( trgt, PRDFSIG_MaintINTER_CTE); - o_rc = __handleNceEte<T,D>( i_chip, io_queue, i_addr, io_sc ); + o_rc = __handleNceEte<T>( i_chip, io_queue, i_addr, io_sc ); if ( SUCCESS != o_rc ) { - PRDF_ERR( PRDF_FUNC "__handleNceEte<T,D>(0x%08x) failed", + PRDF_ERR( PRDF_FUNC "__handleNceEte<T>(0x%08x) failed", huid ); break; } @@ -644,10 +644,10 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, o_errorsFound = true; io_sc.service_data->AddSignatureList( trgt, PRDFSIG_MaintSOFT_CTE ); - o_rc = __handleNceEte<T,D>( i_chip, io_queue, i_addr, io_sc ); + o_rc = __handleNceEte<T>( i_chip, io_queue, i_addr, io_sc ); if ( SUCCESS != o_rc ) { - PRDF_ERR( PRDF_FUNC "__handleNceEte<T,D>(0x%08x) failed", + PRDF_ERR( PRDF_FUNC "__handleNceEte<T>(0x%08x) failed", huid ); break; } @@ -658,10 +658,10 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, o_errorsFound = true; io_sc.service_data->AddSignatureList( trgt, PRDFSIG_MaintHARD_CTE ); - o_rc = __handleNceEte<T,D>( i_chip, io_queue, i_addr, io_sc, true ); + o_rc = __handleNceEte<T>( i_chip, io_queue, i_addr, io_sc, true ); if ( SUCCESS != o_rc ) { - PRDF_ERR( PRDF_FUNC "__handleNceEte<T,D>(0x%08x) failed", + PRDF_ERR( PRDF_FUNC "__handleNceEte<T>(0x%08x) failed", huid ); break; } @@ -734,17 +734,13 @@ uint32_t __checkEcc( ExtensibleChip * i_chip, TdQueue & io_queue, } template -uint32_t __checkEcc<TYPE_MCA, McaDataBundle *>( ExtensibleChip * i_chip, - TdQueue & io_queue, - const MemAddr & i_addr, - bool & o_errorsFound, - STEP_CODE_DATA_STRUCT & io_sc ); +uint32_t __checkEcc<TYPE_MCA>( ExtensibleChip * i_chip, TdQueue & io_queue, + const MemAddr & i_addr, bool & o_errorsFound, + STEP_CODE_DATA_STRUCT & io_sc ); template<> -uint32_t __checkEcc<TYPE_MBA, MbaDataBundle *>( ExtensibleChip * i_chip, - TdQueue & io_queue, - const MemAddr & i_addr, - bool & o_errorsFound, - STEP_CODE_DATA_STRUCT & io_sc ) +uint32_t __checkEcc<TYPE_MBA>( ExtensibleChip * i_chip, TdQueue & io_queue, + const MemAddr & i_addr, bool & o_errorsFound, + STEP_CODE_DATA_STRUCT & io_sc ) { // TODO: remove this once runtime support is abled for MBA. return SUCCESS; |