diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2014-11-03 14:04:14 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-11-12 17:07:04 -0600 |
commit | 71a92d99bc32fe35a5b87cf321c0e4cf5e8f6e9c (patch) | |
tree | 6af83db2e5bee7bfe3995205943a91607983779e /src/usr | |
parent | 6ae96c32de5550194aaa721ba1a5d875ccf86acd (diff) | |
download | talos-hostboot-71a92d99bc32fe35a5b87cf321c0e4cf5e8f6e9c.tar.gz talos-hostboot-71a92d99bc32fe35a5b87cf321c0e4cf5e8f6e9c.zip |
PRD: HW workaround for MBRCER register
Change-Id: I06cff636abe7af5caf7eb83bf14bcb15ec110236
CQ: SW284716
Backport: release-fips811
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14304
Tested-by: Jenkins Server
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Reviewed-by: Christopher T. Phan <cphan@us.ibm.com>
Reviewed-by: Prem Shanker Jha <premjha2@in.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/14356
Diffstat (limited to 'src/usr')
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 070a0d40b..750803d0b 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -716,12 +716,14 @@ int32_t AnalyzeFetchRcePue( ExtensibleChip * i_membChip, CenMbaDataBundle * mbadb = getMbaDataBundle( mbaChip ); - CenAddr addr; - if ( i_isRceError ) - l_rc = getCenReadAddr( i_membChip, i_mbaPos, READ_RCE_ADDR, addr ); - else - l_rc = getCenReadAddr( i_membChip, i_mbaPos, READ_UE_ADDR, addr ); + // WORKAROUND: Since an RCE starts as a UE, it's address is trapped in + // MBUER (note: UE fir bit not set at this point). But since multiple + // addresses are retried (not just the failing address), MBRCER will + // contain the last address retried, and not necessarily the address + // that started out with the UE. + CenAddr addr; + l_rc = getCenReadAddr( i_membChip, i_mbaPos, READ_UE_ADDR, addr ); if ( SUCCESS != l_rc ) { PRDF_ERR( PRDF_FUNC"getCenReadAddr() failed" ); |