diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2013-06-20 16:20:27 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-06-21 11:29:33 -0500 |
commit | dee8369d052ac0682a42615645025e59dede268a (patch) | |
tree | b8f3b67d8b8d69f85d2a89bed87b93788ed2e0b4 /src/usr/diag/prdf | |
parent | 13fac7b91c19c5115a1cf6453e19e4c8c32495cd (diff) | |
download | talos-hostboot-dee8369d052ac0682a42615645025e59dede268a.tar.gz talos-hostboot-dee8369d052ac0682a42615645025e59dede268a.zip |
PRD: Ignore specific RCs from dimmGetBadDqBitmap()
Change-Id: Icd2ca71ddf831bd90a353b7c2ffb1f1017747a46
CQ: SW210713
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5111
Tested-by: Jenkins Server
Reviewed-by: Sachin Gupta <sgupta2m@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.austin.ibm.com:8080/gerrit/5125
Diffstat (limited to 'src/usr/diag/prdf')
3 files changed, 27 insertions, 15 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 696761ab1..fed697795 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C +++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C @@ -254,7 +254,7 @@ int32_t erepairFirIsolation(TargetHandle_t i_rxBusTgt) //############################################################################## int32_t getBadDqBitmap( TargetHandle_t i_mba, const CenRank & i_rank, - CenDqBitmap & o_bitmap ) + CenDqBitmap & o_bitmap, bool i_allowNoDimm ) { #define PRDF_FUNC "[PlatServices::getBadDqBitmap] " @@ -264,17 +264,26 @@ int32_t getBadDqBitmap( TargetHandle_t i_mba, const CenRank & i_rank, for ( int32_t ps = 0; ps < PORT_SLCT_PER_MBA; ps++ ) { - errlHndl_t errl = NULL; - PRD_FAPI_TO_ERRL( errl, dimmGetBadDqBitmap, getFapiTarget(i_mba), - ps, i_rank.getDimmSlct(), i_rank.getRankSlct(), - data[ps] ); - if ( NULL != errl ) + fapi::ReturnCode l_rc = dimmGetBadDqBitmap( getFapiTarget(i_mba), + ps, i_rank.getDimmSlct(), + i_rank.getRankSlct(), + data[ps] ); + + if ( i_allowNoDimm && (fapi::RC_BAD_DQ_DIMM_NOT_FOUND == l_rc) ) { - PRDF_ERR( PRDF_FUNC"dimmGetBadDqBitmap() failed: MBA=0x%08x " - "ps=%d ds=%d rs=%d", getHuid(i_mba), ps, - i_rank.getDimmSlct(), i_rank.getRankSlct() ); - PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); - o_rc = FAIL; break; + memset( &data[ps], 0x00, DIMM_DQ_RANK_BITMAP_SIZE ); + } + else + { + errlHndl_t errl = fapi::fapiRcToErrl(l_rc); + if ( NULL != errl ) + { + PRDF_ERR( PRDF_FUNC"dimmGetBadDqBitmap() failed: MBA=0x%08x " + "ps=%d ds=%d rs=%d", getHuid(i_mba), ps, + i_rank.getDimmSlct(), i_rank.getRankSlct() ); + PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); + o_rc = FAIL; break; + } } } 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 51fb8c1b9..19cdc84a6 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H +++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H @@ -197,12 +197,15 @@ int32_t erepairFirIsolation(TARGETING::TargetHandle_t i_rxBusTgt); /** * @brief Reads the bad DQ bitmap attribute for both ports of the target rank. * @param i_mbaTarget A MBA target. - * @param i_rank Target rank. - * @param o_bitmap DQ bitmap container. + * @param i_rank Target rank. + * @param o_bitmap DQ bitmap container. + * @param i_allowNoDimm TRUE ignores rc from hardware procedure indicating no + * DIMM is attached. This is useful when iterating all + * possible ranks. Default is FALSE. * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. */ int32_t getBadDqBitmap( TARGETING::TargetHandle_t i_mba, const CenRank & i_rank, - CenDqBitmap & o_bitmap ); + CenDqBitmap & o_bitmap, bool i_allowNoDimm = false ); /** * @brief Writes the bad DQ bitmap attribute for both ports of the target rank. diff --git a/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C b/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C index b2a64ef8e..cfcf67afa 100644 --- a/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C +++ b/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C @@ -291,7 +291,7 @@ bool processDq(TargetHandle_t i_mba) CenRank rank ( r ); CenDqBitmap bitmap; - if ( SUCCESS != getBadDqBitmap(i_mba, rank, bitmap) ) + if ( SUCCESS != getBadDqBitmap(i_mba, rank, bitmap, true) ) { continue; // skip this rank } |