summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2018-10-22 17:37:01 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-10-29 22:38:16 -0500
commit414037d985e17e2e3ef769bcc086b08c0e92bbe4 (patch)
tree2a46028aac36347d382217be14fd966b60ba8524 /src/usr/diag/prdf/plat/mem/prdfMemVcm.C
parent451a26b55f90bd6d1c23762c8dcab20ab63b2bea (diff)
downloadtalos-hostboot-414037d985e17e2e3ef769bcc086b08c0e92bbe4.tar.gz
talos-hostboot-414037d985e17e2e3ef769bcc086b08c0e92bbe4.zip
PRD: Increment addr to next row for VCM row repair
Change-Id: I3ffb09f8bf1af96587762dbeba665942a13cdcbc CQ: SW449443 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67860 Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> 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/68108 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/mem/prdfMemVcm.C')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemVcm.C23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm.C b/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
index b4dc9903f..8c3c4480a 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
@@ -380,6 +380,29 @@ uint32_t VcmEvent<TYPE_MBA>::handlePhaseComplete( const uint32_t & i_eccAttns,
break;
}
if ( o_done ) break;
+
+ // Row repair is enabled, we found an MCE, and we did not
+ // need to exit the procedure. This means we will resume the
+ // command on the next row, but first we need to make sure
+ // the command did not stop on the last row of the address
+ // range. So reinitialize iv_canResumeScrub if necessary.
+
+ o_rc = didCmdStopOnLastAddr<TYPE_MBA>( iv_chip, MASTER_RANK,
+ lastAddr, true );
+ if ( SUCCESS != o_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "didCmdStopOnLastAddr(0x%08x) "
+ "failed", iv_chip->getHuid() );
+ break;
+ }
+ iv_canResumeScrub = !lastAddr;
+
+ if ( iv_canResumeScrub )
+ {
+ // Indicate that we need to resume the command on the
+ // next row instead of the next address.
+ iv_resumeNextRow = true;
+ }
}
else
{
OpenPOWER on IntegriCloud