diff options
author | Caleb Palmer <cnpalmer@us.ibm.com> | 2019-11-14 15:04:58 -0600 |
---|---|---|
committer | Zane C Shelley <zshelle@us.ibm.com> | 2019-12-06 16:50:34 -0600 |
commit | 574346780f244fc333f4fcc407214eac3c10b9f8 (patch) | |
tree | 885a6ea6f50a2ac56c4443a9bf1ac07a0f709e08 /src/usr/diag/prdf/plat/prdfPlatServices_rt.C | |
parent | 946a75dff8bf05795c2688add55d109ba0283159 (diff) | |
download | talos-hostboot-574346780f244fc333f4fcc407214eac3c10b9f8.tar.gz talos-hostboot-574346780f244fc333f4fcc407214eac3c10b9f8.zip |
PRD: Update CE/UE flood threshold to reset on new ranks
Change-Id: I89dce691642ebf4d753812bfae111d14c52753e3
CQ: SW480922
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/87032
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Zane C Shelley <zshelle@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/88203
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/plat/prdfPlatServices_rt.C')
-rw-r--r-- | src/usr/diag/prdf/plat/prdfPlatServices_rt.C | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices_rt.C b/src/usr/diag/prdf/plat/prdfPlatServices_rt.C index 74ba41e30..09eff0b6e 100644 --- a/src/usr/diag/prdf/plat/prdfPlatServices_rt.C +++ b/src/usr/diag/prdf/plat/prdfPlatServices_rt.C @@ -152,7 +152,8 @@ uint32_t stopBgScrub<TYPE_MCA>( ExtensibleChip * i_chip ) //------------------------------------------------------------------------------ template<> -uint32_t resumeBgScrub<TYPE_MCBIST>( ExtensibleChip * i_chip ) +uint32_t resumeBgScrub<TYPE_MCBIST>( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ) { #define PRDF_FUNC "[PlatServices::resumeBgScrub<TYPE_MCBIST>] " @@ -177,13 +178,13 @@ uint32_t resumeBgScrub<TYPE_MCBIST>( ExtensibleChip * i_chip ) // Check UE and CE stop counters to determine stop conditions mss::mcbist::stop_conditions<> stopCond; - if ( getMcbistDataBundle(i_chip)->iv_ueScrubStopCounter.atTh() ) + if ( getMcbistDataBundle(i_chip)->iv_ueStopCounter.thReached(io_sc) ) { // If we've reached the limit of UEs we're allowed to stop on // per rank, only set the stop on mpe stop condition. stopCond.set_pause_on_mpe(mss::ON); } - else if ( getMcbistDataBundle(i_chip)->iv_ceScrubStopCounter.atTh() ) + else if (getMcbistDataBundle(i_chip)->iv_ceStopCounter.thReached(io_sc)) { // If we've reached the limit of CEs we're allowed to stop on // per rank, set all the normal stop conditions except stop on CE @@ -208,12 +209,9 @@ uint32_t resumeBgScrub<TYPE_MCBIST>( ExtensibleChip * i_chip ) } // Resume the command on the next address. - // Note: we have to limit the number of times a command has been stopped - // because of a UE/CE. Therefore, we must always resume the command to - // the end of the current slave rank so we can reset the UE/CE counts. errlHndl_t errl; FAPI_INVOKE_HWP( errl, mss::memdiags::continue_cmd, fapiTrgt, - mss::mcbist::STOP_AFTER_SLAVE_RANK, stopCond ); + mss::mcbist::end_boundary::DONT_CHANGE, stopCond ); if ( nullptr != errl ) { @@ -233,12 +231,14 @@ uint32_t resumeBgScrub<TYPE_MCBIST>( ExtensibleChip * i_chip ) //------------------------------------------------------------------------------ template<> -uint32_t resumeBgScrub<TYPE_MCA>( ExtensibleChip * i_chip ) +uint32_t resumeBgScrub<TYPE_MCA>( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ) { PRDF_ASSERT( nullptr != i_chip ); PRDF_ASSERT( TYPE_MCA == i_chip->getType() ); - return resumeBgScrub<TYPE_MCBIST>(getConnectedParent(i_chip, TYPE_MCBIST)); + return resumeBgScrub<TYPE_MCBIST>(getConnectedParent(i_chip, TYPE_MCBIST), + io_sc); } //############################################################################## @@ -378,7 +378,8 @@ uint32_t __resumeScrub<TYPE_MBA>( ExtensibleChip * i_chip, //------------------------------------------------------------------------------ template<> -uint32_t resumeBgScrub<TYPE_MBA>( ExtensibleChip * i_chip ) +uint32_t resumeBgScrub<TYPE_MBA>( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ) { PRDF_ASSERT( nullptr != i_chip ); PRDF_ASSERT( TYPE_MBA == i_chip->getType() ); @@ -458,7 +459,8 @@ uint32_t stopBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) //------------------------------------------------------------------------------ template<> -uint32_t resumeBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) +uint32_t resumeBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ) { #define PRDF_FUNC "[PlatServices::resumeBgScrub<TYPE_OCMB_CHIP>] " @@ -485,13 +487,13 @@ uint32_t resumeBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) // Check UE and CE stop counters to determine stop conditions mss::mcbist::stop_conditions<> stopCond; - if ( getOcmbDataBundle(i_chip)->iv_ueScrubStopCounter.atTh() ) + if ( getOcmbDataBundle(i_chip)->iv_ueStopCounter.thReached(io_sc) ) { // If we've reached the limit of UEs we're allowed to stop on // per rank, only set the stop on mpe stop condition. stopCond.set_pause_on_mpe(mss::ON); } - else if ( getOcmbDataBundle(i_chip)->iv_ceScrubStopCounter.atTh() ) + else if ( getOcmbDataBundle(i_chip)->iv_ceStopCounter.thReached(io_sc) ) { // If we've reached the limit of CEs we're allowed to stop on // per rank, set all the normal stop conditions except stop on CE @@ -516,12 +518,9 @@ uint32_t resumeBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip ) } // Resume the command on the next address. - // Note: we have to limit the number of times a command has been stopped - // because of a UE/CE. Therefore, we must always resume the command to - // the end of the current slave rank so we can reset the UE/CE counts. errlHndl_t errl; FAPI_INVOKE_HWP( errl, mss::memdiags::continue_cmd, fapiTrgt, - mss::mcbist::STOP_AFTER_SLAVE_RANK, stopCond ); + mss::mcbist::end_boundary::DONT_CHANGE, stopCond ); if ( nullptr != errl ) { |