diff options
author | Caleb Palmer <cnpalmer@us.ibm.com> | 2018-05-07 09:14:16 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-05-15 21:58:01 -0400 |
commit | 93a05fa7d48c6a76e521b00f438082e1d9f6bab8 (patch) | |
tree | 42a75eac3eace59aaf98381157611dc8998ce559 | |
parent | 40a290f2ab3b6d7b21f169f2383f1af204c628d8 (diff) | |
download | talos-hostboot-93a05fa7d48c6a76e521b00f438082e1d9f6bab8.tar.gz talos-hostboot-93a05fa7d48c6a76e521b00f438082e1d9f6bab8.zip |
PRD: Update getDimmDqAttr for Centaur
Change-Id: Ibdb47fa9528e4c4c562e1f70f242b8c4b84c5160
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58415
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58722
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
3 files changed, 41 insertions, 4 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C index 1d347514f..835309b6a 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C @@ -103,7 +103,19 @@ void addExtMemMruData( const MemoryMru & i_memMru, errlHndl_t io_errl ) "single DIMM." ); break; } - getDimmDqAttr( trgt, extMemMru.dqMapping ); + if ( TYPE_MCA == getTargetType(trgt) ) + { + getDimmDqAttr<TYPE_MCA>( trgt, extMemMru.dqMapping ); + } + else if ( TYPE_MBA == getTargetType(trgt) ) + { + getDimmDqAttr<TYPE_DIMM>(partList[0], extMemMru.dqMapping); + } + else + { + PRDF_ERR( PRDF_FUNC "Invalid target type." ); + PRDF_ASSERT(false); + } } } diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C index e4df155cc..97ffc839f 100644 --- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C +++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C @@ -634,10 +634,11 @@ int32_t getDimmSpareConfig( TargetHandle_t i_mba, CenRank i_rank, */ //------------------------------------------------------------------------------ -void getDimmDqAttr( TargetHandle_t i_target, - uint8_t (&o_dqMapPtr)[DQS_PER_DIMM] ) +template<> +void getDimmDqAttr<TYPE_MCA>( TargetHandle_t i_target, + uint8_t (&o_dqMapPtr)[DQS_PER_DIMM] ) { - #define PRDF_FUNC "[PlatServices::getDimmDqAttr] " + #define PRDF_FUNC "[PlatServices::getDimmDqAttr<TYPE_MCA>] " PRDF_ASSERT( TYPE_MCA == getTargetType(i_target) ); @@ -657,6 +658,29 @@ void getDimmDqAttr( TargetHandle_t i_target, #undef PRDF_FUNC } // end function getDimmDqAttr +template<> +void getDimmDqAttr<TYPE_DIMM>( TargetHandle_t i_target, + uint8_t (&o_dqMapPtr)[DQS_PER_DIMM] ) +{ + #define PRDF_FUNC "[PlatServices::getDimmDqAttr<TYPE_DIMM>] " + + PRDF_ASSERT( TYPE_DIMM == getTargetType(i_target) ); + + const uint8_t DIMM_BAD_DQ_SIZE_BYTES = 80; + + uint8_t tmpData[DIMM_BAD_DQ_SIZE_BYTES]; + + if ( !i_target->tryGetAttr<ATTR_CEN_DQ_TO_DIMM_CONN_DQ>(tmpData) ) + { + PRDF_ERR( PRDF_FUNC "Failed to get ATTR_CEN_DQ_TO_DIMM_CONN_DQ" ); + PRDF_ASSERT( false ); + } + + memcpy( &o_dqMapPtr[0], &tmpData[0], DQS_PER_DIMM ); + + #undef PRDF_FUNC +} // end function getDimmDqAttr + //------------------------------------------------------------------------------ /* TODO RTC 169956 diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H index a71f44061..790fb3fb6 100755 --- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H +++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H @@ -327,6 +327,7 @@ int32_t getMemBufRawCardType( TARGETING::TargetHandle_t i_mbaTarget, * @param io_dqMapPtr Pointer to area to receive DIMM DQ map (80 bytes) * @return Non-Null if error log occurs */ +template <TARGETING::TYPE> void getDimmDqAttr( TARGETING::TargetHandle_t i_target, uint8_t (&io_dqMapPtr)[DQS_PER_DIMM] ); |