summaryrefslogtreecommitdiffstats
path: root/src/usr/diag
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2014-03-06 18:05:56 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-20 15:48:09 -0500
commit4a1c826da12ff99c5f078d7ed13a82aea51659ce (patch)
tree7dac1c6292b6c8124de6fcd6a5b23a2434a050c5 /src/usr/diag
parent8df400cb723a3a2d1ded42f8611e9d6065e759fc (diff)
downloadtalos-hostboot-4a1c826da12ff99c5f078d7ed13a82aea51659ce.tar.gz
talos-hostboot-4a1c826da12ff99c5f078d7ed13a82aea51659ce.zip
PRD: Runtime DRAM Repairs workaround
Change-Id: Ieaec6a5a5e4403e5873ba0d0f88dc3e5a7884257 CQ: SW250519 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9366 Tested-by: Jenkins Server Reviewed-by: Christopher T. Phan <cphan@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Bilicon Patil <bilpatil@in.ibm.com> Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com> Squashed: I42b2c0a1ad9ad9e33b5651d9bf295c09fa46b3d8 Backport: release-fips810 Depends-On: Ib036c6cb11126a55a3598cd02628621a2141feb8 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9776
Diffstat (limited to 'src/usr/diag')
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C14
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H10
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaExtraSig.H1
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.H1
-rw-r--r--src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C9
5 files changed, 15 insertions, 20 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C
index 53aeb0593..f79f197b7 100755
--- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C
+++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C
@@ -714,7 +714,7 @@ int32_t mss_MaintCmdWrapper::cleanupCmd()
// Helper function for the other createMssCmd() functions.
mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
TargetHandle_t i_mba, uint32_t i_stopCond,
- bool i_isFastSpeed,
+ mss_MaintCmd::TimeBaseSpeed i_cmdSpeed,
ecmdDataBufferBase i_startAddr,
ecmdDataBufferBase i_endAddr )
{
@@ -722,23 +722,19 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
mss_MaintCmdWrapper * o_cmd = NULL;
- mss_MaintCmd::TimeBaseSpeed cmdSpeed = mss_MaintCmd::BG_SCRUB;
- if ( i_isFastSpeed )
- cmdSpeed = mss_MaintCmd::FAST_MAX_BW_IMPACT;
-
mss_MaintCmd * cmd = NULL;
switch ( i_cmdType )
{
case mss_MaintCmdWrapper::TIMEBASE_SCRUB:
cmd = new mss_TimeBaseScrub( getFapiTarget(i_mba), i_startAddr,
- i_endAddr, cmdSpeed, i_stopCond,
+ i_endAddr, i_cmdSpeed, i_stopCond,
false );
break;
case mss_MaintCmdWrapper::TIMEBASE_STEER_CLEANUP:
cmd = new mss_TimeBaseSteerCleanup( getFapiTarget(i_mba),
i_startAddr, i_endAddr,
- cmdSpeed, i_stopCond, false );
+ i_cmdSpeed, i_stopCond, false );
break;
case mss_MaintCmdWrapper::SUPERFAST_READ:
cmd = new mss_SuperFastRead( getFapiTarget(i_mba), i_startAddr,
@@ -761,6 +757,7 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
TargetHandle_t i_mba,
const CenRank & i_rank, uint32_t i_stopCond,
+ mss_MaintCmd::TimeBaseSpeed i_cmdSpeed,
uint32_t i_flags,
const CenAddr * i_sAddrOverride )
{
@@ -768,7 +765,6 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
bool slaveOnly = ( 0 != (i_flags & mss_MaintCmdWrapper::SLAVE_RANK_ONLY) );
bool allMemory = ( 0 != (i_flags & mss_MaintCmdWrapper::END_OF_MEMORY ) );
- bool fastScrub = ( 0 == (i_flags & mss_MaintCmdWrapper::BG_SCRUB ) );
do
{
@@ -796,7 +792,7 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
}
// Create the command
- o_cmd = createMssCmd( i_cmdType, i_mba, i_stopCond, fastScrub,
+ o_cmd = createMssCmd( i_cmdType, i_mba, i_stopCond, i_cmdSpeed,
sAddr, eAddr );
} while (0);
diff --git a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H
index 928772f61..0e0dfbb16 100755
--- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H
+++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H
@@ -367,10 +367,6 @@ class mss_MaintCmdWrapper
* to the end of memory. Default is to run to the end of the rank. */
END_OF_MEMORY = 0x01,
- /** When set, the command will run once every 12/24 hours. Default is to
- * run as fast as possible. */
- BG_SCRUB = 0x02,
-
/** When set, the command will run on the slave rank only. Default is to
* run on the entire master rank. */
SLAVE_RANK_ONLY = 0x04,
@@ -426,6 +422,7 @@ class mss_MaintCmdWrapper
* @param i_rank The first rank to start with (see enum CtrlFlags for
* more details).
* @param i_stopCond Bit mask for conditions in which to stop command.
+ * @param i_cmdSpeed See enum mss_MaintCmd::TimeBaseSpeed for details.
* @param i_flags See enum CtrlFlags for details.
* @param i_sAddrOverride A non-NULL value indicates to use this start address
* and not the start address of i_rank.
@@ -439,10 +436,11 @@ class mss_MaintCmdWrapper
mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
TARGETING::TargetHandle_t i_mba,
const CenRank & i_rank, uint32_t i_stopCond,
+ mss_MaintCmd::TimeBaseSpeed i_cmdSpeed
+ = mss_MaintCmd::FAST_MAX_BW_IMPACT,
uint32_t i_flags = mss_MaintCmdWrapper::NO_FLAGS,
const CenAddr * i_sAddrOverride = NULL );
-
//##############################################################################
//## util functions
//##############################################################################
@@ -455,8 +453,6 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType,
void captureFsiStatusReg( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc );
-
-
} // end namespace PlatServices
} // end namespace PRDF
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaExtraSig.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaExtraSig.H
index d7a571250..ffd220e60 100644
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaExtraSig.H
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaExtraSig.H
@@ -36,7 +36,6 @@ PRDR_ERROR_SIGNATURE(StartDsdPhase2, 0xffff0003, "", "Starting DSD phase 2");
PRDR_ERROR_SIGNATURE(StartTpsPhase1, 0xffff0004, "", "Starting TPS phase 1");
PRDR_ERROR_SIGNATURE(StartTpsPhase2, 0xffff0005, "", "Starting TPS phase 2");
PRDR_ERROR_SIGNATURE(EndTpsPhase2, 0xffff0006, "", "TPS Phase 2 completed");
-PRDR_ERROR_SIGNATURE(StartRankScrub, 0xffff0007, "", "Starting rank scrub");
PRDR_ERROR_SIGNATURE(MaintUE, 0xffff0010, "", "Maintenance UE");
PRDR_ERROR_SIGNATURE(MaintMPE, 0xffff0011, "", "Maintenance MPE");
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.H
index 310e208b4..a111ab26b 100644
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.H
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaTdCtlr_common.H
@@ -79,7 +79,6 @@ class CenMbaTdCtlrCommon
DSD_PHASE_2, ///< DRAM Spare Deploy phase 2.
TPS_PHASE_1, ///< Two-Phase Scrub phase 1.
TPS_PHASE_2, ///< Two-Phase Scrub phase 2.
- RANK_SCRUB, ///< Targetted fast scrub on a rank.
MAX_TD_STATE ///< The maximum number of TD states.
};
diff --git a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C
index 87c3fd3f5..f13a5b23c 100644
--- a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C
+++ b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C
@@ -64,7 +64,6 @@ CenMbaTdCtlr::FUNCS CenMbaTdCtlr::cv_cmdCompleteFuncs[] =
&CenMbaTdCtlr::analyzeDsdPhase2, // DSD_PHASE_2
&CenMbaTdCtlr::analyzeTpsPhase1, // TPS_PHASE_1
&CenMbaTdCtlr::analyzeTpsPhase2, // TPS_PHASE_2
- NULL, // RANK_SCRUB
};
//------------------------------------------------------------------------------
@@ -245,10 +244,14 @@ int32_t CenMbaTdCtlr::startInitialBgScrub()
break;
}
+ mss_MaintCmd::TimeBaseSpeed cmdSpeed = enableFastBgScrub()
+ ? mss_MaintCmd::FAST_MED_BW_IMPACT
+ : mss_MaintCmd::FAST_MIN_BW_IMPACT;
+
// Start the initial fast scrub.
iv_mssCmd = createMssCmd( mss_MaintCmdWrapper::TIMEBASE_SCRUB,
iv_mbaTrgt, startAddr.getRank(),
- COND_FAST_SCRUB,
+ COND_FAST_SCRUB, cmdSpeed,
mss_MaintCmdWrapper::END_OF_MEMORY );
if ( NULL == iv_mssCmd )
{
@@ -1026,6 +1029,7 @@ int32_t CenMbaTdCtlr::startTpsPhase1( STEP_CODE_DATA_STRUCT & io_sc )
// Start phase 1.
iv_mssCmd = createMssCmd( mss_MaintCmdWrapper::TIMEBASE_SCRUB,
iv_mbaTrgt, iv_rank, COND_TARGETED_CMD,
+ mss_MaintCmd::FAST_MAX_BW_IMPACT,
mss_MaintCmdWrapper::SLAVE_RANK_ONLY );
if ( NULL == iv_mssCmd )
{
@@ -1079,6 +1083,7 @@ int32_t CenMbaTdCtlr::startTpsPhase2( STEP_CODE_DATA_STRUCT & io_sc )
// Start phase 2.
iv_mssCmd = createMssCmd( mss_MaintCmdWrapper::TIMEBASE_SCRUB,
iv_mbaTrgt, iv_rank, COND_TARGETED_CMD,
+ mss_MaintCmd::FAST_MAX_BW_IMPACT,
mss_MaintCmdWrapper::SLAVE_RANK_ONLY );
if ( NULL == iv_mssCmd )
{
OpenPOWER on IntegriCloud