diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2013-10-26 16:40:14 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-11-13 10:18:27 -0600 |
commit | 1ad8af50954d5eb8785a2dd0803db4245c01f396 (patch) | |
tree | 6406ff1644144a4dd6ef1302a1188ad469974a67 /src | |
parent | d12d677e100a9b48657c672e16288615703866e8 (diff) | |
download | talos-hostboot-1ad8af50954d5eb8785a2dd0803db4245c01f396.tar.gz talos-hostboot-1ad8af50954d5eb8785a2dd0803db4245c01f396.zip |
PRD: add fast scrub on next good rank (runtime TD)
Change-Id: I1cb888daa1eb0fbee41415e54ffd475b2d65b80c
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/6893
Tested-by: Jenkins Server
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com>
Reviewed-by: Christopher T. Phan <cphan@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7210
Diffstat (limited to 'src')
-rwxr-xr-x | src/usr/diag/prdf/common/framework/service/prdfTargetServices.C | 2 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C | 14 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C b/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C index 41ebd1356..82089523c 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C +++ b/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C @@ -1039,7 +1039,7 @@ int32_t getMasterRanks( TargetHandle_t i_memTrgt, for ( uint32_t rs = 0; rs < 4; rs++ ) { - if ( 0 != (rankMask & (0x08 >> rs)) ) + if ( 0 != (rankMask & (0x80 >> rs)) ) { o_ranks.push_back( CenRank((ds << 2) | rs) ); } diff --git a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C index e43c15190..d26a75214 100644 --- a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C +++ b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C @@ -164,11 +164,15 @@ int32_t CenMbaTdCtlr::handleCmdCompleteEvent( STEP_CODE_DATA_STRUCT & io_sc ) // There may have been a code bug, callout 2nd level support. io_sc.service_data->SetCallout( NextLevelSupport_ENUM, MRU_HIGH ); - // Callout the mark. If nothing was added to the callout list (no valid - // marks), callout the MBA. - CalloutUtil::calloutMark( mba, iv_rank, iv_mark, io_sc ); + // Callout the rank if no other callouts have been made (besides 2nd + // Level Support). Note that iv_mark is not always guaranteed to be + // valid for every error scenario. For simplicity, callout the rank that + // was targeted with low priority. if ( 1 == io_sc.service_data->GetMruList().size() ) - io_sc.service_data->SetCallout( mba ); + { + MemoryMru memmru ( mba, iv_rank, MemoryMruData::CALLOUT_RANK ); + io_sc.service_data->SetCallout( memmru, MRU_LOW ); + } // Just in case it was a legitimate maintenance command complete (error // log not committed) but something else failed. @@ -1551,7 +1555,7 @@ int32_t CenMbaTdCtlr::exitTdSequence() } // Clear out the mark, just in case. This is so we don't accidentally - // callout this mark on another rank in an error patch scenario. + // callout this mark on another rank in an error path scenario. iv_mark = CenMark(); } while (0); |