diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2017-02-17 11:19:19 -0600 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2017-02-27 10:41:00 -0500 |
commit | 0de839164574599231f207f073803222a313d3d7 (patch) | |
tree | 19566e468eecb4ee3262d5c08842283dd43bcfbf | |
parent | cbc8e2e8919c5d8a7159a96803040511623c19dd (diff) | |
download | talos-hostboot-0de839164574599231f207f073803222a313d3d7.tar.gz talos-hostboot-0de839164574599231f207f073803222a313d3d7.zip |
PRD: reduced error path on memory threshold functions
Change-Id: I12ed4cca3b5b10d7d5505af0a0a23971e29634d0
RTC: 169729
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36675
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@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/37012
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
-rw-r--r-- | src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C | 10 | ||||
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C | 7 | ||||
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C | 12 | ||||
-rwxr-xr-x | src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.C | 104 | ||||
-rwxr-xr-x | src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.H | 21 | ||||
-rwxr-xr-x | src/usr/diag/prdf/plat/mem/prdfMemThresholds.C | 98 | ||||
-rwxr-xr-x | src/usr/diag/prdf/plat/mem/prdfMemThresholds.H | 27 | ||||
-rw-r--r-- | src/usr/diag/prdf/prdfMain_ipl.C | 29 |
8 files changed, 90 insertions, 218 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 119c74f70..d478b0bc6 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2015 */ +/* Contributors Listed Below - COPYRIGHT 2013,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -643,13 +643,7 @@ int32_t CenMbaTdCtlrCommon::setRtEteThresholds() break; } - uint16_t softIntCe = 0; - o_rc = getScrubCeThreshold( iv_mbaChip, iv_rank, softIntCe ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getScrubCeThreshold() failed." ); - break; - } + uint32_t softIntCe = getScrubCeThreshold( iv_mbaChip, iv_rank ); // Only care about retry CEs if there are a lot of them. So the // threshold will be high in the field. However, in MNFG the retry CEs 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 2d9892371..758e88454 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_rt.C @@ -2589,12 +2589,7 @@ int32_t CenMbaTdCtlr::getTpsCeThr( uint16_t & o_thr ) } else { - o_rc = getScrubCeThreshold( iv_mbaChip, iv_rank, o_thr ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getScrubCeThreshold() failed." ); - break; - } + o_thr = getScrubCeThreshold( iv_mbaChip, iv_rank ); } } while( 0 ); diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 7c84a4fc0..a1a11e0c2 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2016 */ +/* Contributors Listed Below - COPYRIGHT 2012,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -517,14 +517,8 @@ int32_t AnalyzeFetchNce( ExtensibleChip * i_membChip, if ( mfgMode() ) { // Get the MNFG CE thresholds. - uint16_t dramTh, hrTh, dimmTh; - l_rc = getMnfgMemCeTh( mbaChip, rank, dramTh, hrTh, dimmTh ); - if ( SUCCESS != l_rc ) - { - PRDF_ERR( PRDF_FUNC "getMnfgMemCeTh() failed: rank=m%ds%d", - rank.getMaster(), rank.getSlave() ); - break; - } + uint32_t dramTh, hrTh, dimmTh; + getMnfgMemCeTh( mbaChip, rank, dramTh, hrTh, dimmTh ); // Get counts from CE table. uint32_t dramCount, hrCount, dimmCount; diff --git a/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.C b/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.C index 8e8ee84d8..147c6ec35 100755 --- a/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.C @@ -175,45 +175,13 @@ int32_t MemIplCeStats<T>::collectStats( const MemRank & i_stopRank ) //------------------------------------------------------------------------------ template<TYPE T> -int32_t MemIplCeStats<T>::analyzeStats( bool & o_callOutsMade ) +bool MemIplCeStats<T>::analyzeStats() { - #define PRDF_FUNC "MemIplCeStats::analyzeStats " - int32_t o_rc = SUCCESS; - - o_callOutsMade = false; + bool tmp1 = calloutCePerDram(); + bool tmp2 = calloutCePerRank(); + bool tmp3 = calloutCePerDs(); - do - { - TargetHandle_t trgt = iv_chip->getTrgt(); - - o_rc = calloutCePerDram( o_callOutsMade ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC " calloutCePerDram() failed. trgt:0X%08X", - getHuid( trgt ) ); - break; - } - - o_rc = calloutCePerRank( o_callOutsMade ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "calloutCePerRank() failed. trgt:0X%08X", - getHuid( trgt ) ); - break; - } - - o_rc = calloutCePerDs( o_callOutsMade ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC " calloutCePerDs() failed. trgt:0X%08X", - getHuid( trgt ) ); - break; - } - - } while (0); - - return o_rc; - #undef PRDF_FUNC + return ( tmp1 || tmp2 || tmp3 ); } //------------------------------------------------------------------------------ @@ -281,10 +249,9 @@ int32_t MemIplCeStats<T>::calloutHardCes( const MemRank & i_stopRank ) //------------------------------------------------------------------------------ template<TYPE T> -int32_t MemIplCeStats<T>::calloutCePerDram( bool & o_callOutsMade ) +bool MemIplCeStats<T>::calloutCePerDram() { - #define PRDF_FUNC "[MemIplCeStats::calloutCePerDram] " - int32_t o_rc = SUCCESS; + bool o_callOutsMade = false; TargetHandle_t trgt = iv_chip->getTrgt(); @@ -301,16 +268,8 @@ int32_t MemIplCeStats<T>::calloutCePerDram( bool & o_callOutsMade ) continue; // Get the CEs per DRAM threshold. - uint16_t dramTh = 1, junk0, junk1; - - o_rc = getMnfgMemCeTh<T>( iv_chip, dramIter->first.rank, dramTh, - junk0, junk1 ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getMnfgMemCeTh() failed. trgt:0x%08X", - getHuid( trgt ) ); - break; - } + uint32_t dramTh = 1, junk0, junk1; + getMnfgMemCeTh<T>( iv_chip, dramIter->first.rank, dramTh, junk0, junk1); // Now, check if a threshold has been reached. If not, continue to the // next entry in iv_dsMap. @@ -353,17 +312,16 @@ int32_t MemIplCeStats<T>::calloutCePerDram( bool & o_callOutsMade ) } } } - return o_rc; - #undef PRDF_FUNC + + return o_callOutsMade; } //------------------------------------------------------------------------------ template<TYPE T> -int32_t MemIplCeStats<T>::calloutCePerRank( bool & o_callOutsMade ) +bool MemIplCeStats<T>::calloutCePerRank() { - #define PRDF_FUNC "[MemIplCeStats::calloutCePerRank] " - int32_t o_rc = SUCCESS; + bool o_callOutsMade = false; TargetHandle_t trgt = iv_chip->getTrgt(); @@ -380,15 +338,8 @@ int32_t MemIplCeStats<T>::calloutCePerRank( bool & o_callOutsMade ) continue; // Get the CEs per rank threshold. - uint16_t junk0, rankTh, junk1; - o_rc = getMnfgMemCeTh<T>( iv_chip, rankIter->first.rank, junk0, - rankTh, junk1 ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getMnfgMemCeTh() failed. trgt:0x%08X", - getHuid( trgt ) ); - break; - } + uint32_t junk0, rankTh, junk1; + getMnfgMemCeTh<T>( iv_chip, rankIter->first.rank, junk0, rankTh, junk1); // Now, check if a threshold has been reached. If not, continue to the // next entry in iv_rankMap. @@ -430,17 +381,17 @@ int32_t MemIplCeStats<T>::calloutCePerRank( bool & o_callOutsMade ) } } } - return o_rc; - #undef PRDF_FUNC + + return o_callOutsMade; } //------------------------------------------------------------------------------ template<TYPE T> -int32_t MemIplCeStats<T>::calloutCePerDs( bool & o_callOutsMade ) +bool MemIplCeStats<T>::calloutCePerDs() { - #define PRDF_FUNC "[MemIplCeStats::calloutCePerDs] " - int32_t o_rc = SUCCESS; + bool o_callOutsMade = false; + TargetHandle_t trgt = iv_chip->getTrgt(); for ( typename CePerHalfDsMap::iterator dsIter = iv_dsMap.begin(); @@ -456,15 +407,8 @@ int32_t MemIplCeStats<T>::calloutCePerDs( bool & o_callOutsMade ) continue; // Get the CEs per dimm select threshold. - uint16_t junk0, junk1, dsTh; - o_rc = getMnfgMemCeTh<T>( iv_chip, dsIter->first.rank, junk0, - junk1, dsTh ); - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC "getMnfgMemCeTh() failed. trgt:0x%08X", - getHuid( trgt ) ); - break; - } + uint32_t junk0, junk1, dsTh; + getMnfgMemCeTh<T>( iv_chip, dsIter->first.rank, junk0, junk1, dsTh ); // Now, check if a threshold has been reached. If not, continue to the // next entry in iv_dsMap. @@ -506,8 +450,8 @@ int32_t MemIplCeStats<T>::calloutCePerDs( bool & o_callOutsMade ) } } } - return o_rc; - #undef PRDF_FUNC + + return o_callOutsMade; } //------------------------------------------------------------------------------ diff --git a/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.H b/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.H index 04cfaaba7..846df1669 100755 --- a/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.H +++ b/src/usr/diag/prdf/plat/mem/prdfMemIplCeStats.H @@ -90,11 +90,9 @@ class MemIplCeStats /** * @brief Analyzes the maintenance statistics that were gathered, making * the appropriate callouts. - * @param o_callOutsDone TRUE if PRD made a hardware callout, FALSE - * otherwise. - * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. + * @return TRUE if PRD made a hardware callout, FALSE otherwise. */ - int32_t analyzeStats ( bool & o_callOutsDone ); + bool analyzeStats(); /** @brief Calls out all symbols with hard CEs. * @param i_stopRank The rank the maintenance command stopped on. @@ -176,23 +174,20 @@ class MemIplCeStats private: // functions /** @brief Calls out all symbols on a dram that has exceeded threshold. - * @param o_callOutsMade TRUE if a callout was made, FALSE othewise. - * @return Non-SUCCESS if an internal function fails, SUCCESS othewise. + * @return TRUE if a callout was made, FALSE othewise. */ - int32_t calloutCePerDram( bool & o_callOutsMade ); + bool calloutCePerDram(); /** @brief Calls out all symbols on a rank that has exceeded threshold. - * @param o_callOutsMade TRUE if a callout was made, FALSE othewise. - * @return Non-SUCCESS if an internal function fails, SUCCESS othewise. + * @return TRUE if a callout was made, FALSE othewise. */ - int32_t calloutCePerRank( bool & o_callOutsMade ); + bool calloutCePerRank(); /** @brief Calls out all symbols on a dimm select that has exceeded * threshold. - * @param o_callOutsMade TRUE if a callout was made, FALSE othewise. - * @return Non-SUCCESS if an internal function fails, SUCCESS othewise. + * @return TRUE if a callout was made, FALSE othewise. */ - int32_t calloutCePerDs( bool & o_callOutsMade ); + bool calloutCePerDs(); /** * @brief Add MemoryMru callout to error log and commit it. diff --git a/src/usr/diag/prdf/plat/mem/prdfMemThresholds.C b/src/usr/diag/prdf/plat/mem/prdfMemThresholds.C index 722378e01..55a4c2eae 100755 --- a/src/usr/diag/prdf/plat/mem/prdfMemThresholds.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemThresholds.C @@ -91,38 +91,28 @@ ThresholdResolution::ThresholdPolicy getRceThreshold() //------------------------------------------------------------------------------ template <TYPE T> -int32_t getMnfgMemCeTh( ExtensibleChip * i_chip, const MemRank & i_rank, - uint16_t & o_cePerDram, uint16_t & o_cePerHalfRank, - uint16_t & o_cePerDimm ) +void getMnfgMemCeTh( ExtensibleChip * i_chip, const MemRank & i_rank, + uint32_t & o_cePerDram, uint32_t & o_cePerRank, + uint32_t & o_cePerDimm ) { - #define PRDF_FUNC "[getMnfgMemCeTh] " + // Get base threshold ( 2GB ). + uint8_t baseTh = getMnfgCeTh(); - int32_t o_rc = SUCCESS; - - do + // A base threhold of 0 indicates there should be no thresholding. + if ( 0 == baseTh ) + { + o_cePerDram = o_cePerRank = o_cePerDimm = + MfgThreshold::INFINITE_LIMIT_THR; + } + else { - // Get base threshold ( 2GB ). - uint8_t baseTh = getMnfgCeTh(); - - // A base threhold of 0 indicates there should be no thresholding. - if ( 0 == baseTh ) - { - o_cePerDram = o_cePerHalfRank = o_cePerDimm = - MfgThreshold::INFINITE_LIMIT_THR; - break; - } - // Get DRAM size uint8_t size = MemUtils::getDramSize<T>( i_chip, i_rank.getDimmSlct() ); // Get number of ranks per DIMM select. - uint8_t rankCount = getNumRanksPerDimm<T>( - i_chip->getTrgt(), i_rank.getDimmSlct() ); - if ( 0 == rankCount ) - { - PRDF_ERR( PRDF_FUNC "PlatServices::getNumRanksPerDimm() failed" ); - o_rc = FAIL; break; - } + uint8_t rankCount = getNumRanksPerDimm<T>( i_chip->getTrgt(), + i_rank.getDimmSlct() ); + PRDF_ASSERT( 0 != rankCount ); // Code bug. // Get number of allowed CEs. uint8_t baseAllowed = baseTh - 1; @@ -139,63 +129,51 @@ int32_t getMnfgMemCeTh( ExtensibleChip * i_chip, const MemRank & i_rank, // Calculate CEs per DIMM. o_cePerDimm = ((computeBase * (2 + rankCount)) + 8) / 16; - // Calculate CEs per half-rank. + // Calculate CEs per rank per DIMM. // Same as perDimm where rankCount is 1; - o_cePerHalfRank = ((computeBase * (2 + 1)) + 8) / 16; - - } while (0); - - return o_rc; - - #undef PRDF_FUNC + o_cePerRank = ((computeBase * (2 + 1)) + 8) / 16; + } } // need these templates to avoid linker errors -template int32_t getMnfgMemCeTh<TYPE_MCA>( ExtensibleChip * i_chip, - const MemRank & i_rank, uint16_t & o_cePerDram, - uint16_t & o_cePerHalfRank, uint16_t & o_cePerDimm ); - -template int32_t getMnfgMemCeTh<TYPE_MBA>( ExtensibleChip * i_chip, - const MemRank & i_rank, uint16_t & o_cePerDram, - uint16_t & o_cePerHalfRank, uint16_t & o_cePerDimm ); +template +void getMnfgMemCeTh<TYPE_MCA>( ExtensibleChip * i_chip, const MemRank & i_rank, + uint32_t & o_cePerDram, uint32_t & o_cePerRank, + uint32_t & o_cePerDimm ); +template +void getMnfgMemCeTh<TYPE_MBA>( ExtensibleChip * i_chip, const MemRank & i_rank, + uint32_t & o_cePerDram, uint32_t & o_cePerRank, + uint32_t & o_cePerDimm ); //------------------------------------------------------------------------------ + template <TYPE T> -int32_t getScrubCeThreshold( ExtensibleChip * i_chip, const MemRank & i_rank, - uint16_t & o_thr ) +uint32_t getScrubCeThreshold( ExtensibleChip * i_chip, const MemRank & i_rank ) { - #define PRDF_FUNC "[getScrubCeThreshold] " - - int32_t o_rc = SUCCESS; - - o_thr = MBA_SCRUB_CE_NON_MNFG_TH; + uint32_t o_thr = MBA_SCRUB_CE_NON_MNFG_TH; if ( mfgMode() ) { - uint16_t junk1 = 0; - uint16_t junk2 = 0; + uint32_t junk1 = 0, junk2 = 0; - o_rc = getMnfgMemCeTh<T>( i_chip, i_rank, o_thr, junk1, junk2 ); - if ( SUCCESS != o_rc ) - PRDF_ERR( PRDF_FUNC "getMnfgMemCeTh() failed" ); + getMnfgMemCeTh<T>( i_chip, i_rank, o_thr, junk1, junk2 ); // getMnfgMemCeTh() returns the number of CEs allowed. Will need to add // one to get the real threshold. o_thr++; } - return o_rc; - - #undef PRDF_FUNC + return o_thr; } // need these templates to avoid linker errors -template int32_t getScrubCeThreshold<TYPE_MCA>( ExtensibleChip * i_chip, - const MemRank & i_rank, uint16_t & o_thr ); -template int32_t getScrubCeThreshold<TYPE_MBA>( ExtensibleChip * i_chip, - const MemRank & i_rank, uint16_t & o_thr ); - +template +uint32_t getScrubCeThreshold<TYPE_MCA>( ExtensibleChip * i_chip, + const MemRank & i_rank ); +template +uint32_t getScrubCeThreshold<TYPE_MBA>( ExtensibleChip * i_chip, + const MemRank & i_rank ); } // end namespace PRDF diff --git a/src/usr/diag/prdf/plat/mem/prdfMemThresholds.H b/src/usr/diag/prdf/plat/mem/prdfMemThresholds.H index 58a2eb53f..9f4d880ba 100755 --- a/src/usr/diag/prdf/plat/mem/prdfMemThresholds.H +++ b/src/usr/diag/prdf/plat/mem/prdfMemThresholds.H @@ -42,17 +42,16 @@ class ExtensibleChip; * @brief Returns number of allowed CEs for MNFG IPLs. * @pre Must check if in manufacturing mode before calling this function. * @post Must callout if the count is greater than the returned values. - * @param i_chip MCA or MBA chip. - * @param i_rank The rank for which the threshold is needed. - * @param o_cePerDram CEs allowed per DRAM. - * @param o_cePerHalfRank CEs allowed per logical DIMM rank. - * @param o_cePerDimm CEs allowed per logical DIMM. - * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. + * @param i_chip MCA or MBA chip. + * @param i_rank The rank for which the threshold is needed. + * @param o_cePerDram CEs allowed per DRAM. + * @param o_cePerRank CEs allowed per rank per logical DIMM. + * @param o_cePerDimm CEs allowed per logical DIMM. */ template <TARGETING::TYPE T> -int32_t getMnfgMemCeTh( ExtensibleChip * i_chip, const MemRank & i_rank, - uint16_t & o_cePerDram, uint16_t & o_cePerHalfRank, - uint16_t & o_cePerDimm ); +void getMnfgMemCeTh( ExtensibleChip * i_chip, const MemRank & i_rank, + uint32_t & o_cePerDram, uint32_t & o_cePerRank, + uint32_t & o_cePerDimm ); /** * @brief Returns RCE threshold policy. @@ -61,14 +60,12 @@ ThresholdResolution::ThresholdPolicy getRceThreshold(); /** * @brief Returns scrub soft/intermittent CEs threshold during runtime. - * @param i_chip MCA or MBA chip. - * @param i_rank The rank for which the threshold is needed. - * @param o_thr Scrub soft/intermittent CE threshold. - * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. + * @param i_chip MCA or MBA chip. + * @param i_rank The rank for which the threshold is needed. + * @return The Scrub soft/intermittent CE threshold. */ template <TARGETING::TYPE T> -int32_t getScrubCeThreshold( ExtensibleChip * i_chip, const MemRank & i_rank, - uint16_t & o_thr ); +uint32_t getScrubCeThreshold( ExtensibleChip * i_chip, const MemRank & i_rank ); } // end namespace PRDF diff --git a/src/usr/diag/prdf/prdfMain_ipl.C b/src/usr/diag/prdf/prdfMain_ipl.C index 7af6352ca..f54b8e7eb 100644 --- a/src/usr/diag/prdf/prdfMain_ipl.C +++ b/src/usr/diag/prdf/prdfMain_ipl.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2014,2016 */ +/* Contributors Listed Below - COPYRIGHT 2014,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -83,32 +83,7 @@ int32_t analyzeIplCEStats( TargetHandle_t i_mba, bool &o_calloutMade ) ExtensibleChip * mbaChip = (ExtensibleChip *)systemPtr->GetChip( i_mba ); CenMbaDataBundle * mbadb = getMbaDataBundle( mbaChip ); - o_rc = mbadb->getIplCeStats()->analyzeStats( o_calloutMade ); - - if ( SUCCESS != o_rc ) - { - PRDF_ERR( "[" PRDF_FUNC "] analyzeStats() failed"); - - // Get user data - uint64_t ud12 = PRDF_GET_UINT64_FROM_UINT32( getHuid(i_mba), 0 ); - uint64_t ud34 = PRDF_GET_UINT64_FROM_UINT32( PRDFSIG_MnfgIplFail, 0 ); - - // Create error log - errlHndl_t errl = new ERRORLOG::ErrlEntry( - ERRORLOG::ERRL_SEV_PREDICTIVE, // severity - PRDF_MNFG_IPL_CE_ANALYSIS, // module ID - PRDF_DETECTED_FAIL_SOFTWARE, // reason code - ud12, ud34 ); // user data 1-4 - - // Add 2nd level support - errl->addProcedureCallout( EPUB_PRC_LVL_SUPP, SRCI_PRIORITY_HIGH ); - - // Add traces - errl->collectTrace( PRDF_COMP_NAME, 512 ); - - // Commit the error log - ERRORLOG::errlCommit( errl, PRDF_COMP_ID ); - } + o_calloutMade = mbadb->getIplCeStats()->analyzeStats(); */ PRDF_EXIT( PRDF_FUNC "(0x%08x), o_calloutMade:%u", |