summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2018-05-07 09:14:16 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-05-15 21:58:01 -0400
commit93a05fa7d48c6a76e521b00f438082e1d9f6bab8 (patch)
tree42a75eac3eace59aaf98381157611dc8998ce559
parent40a290f2ab3b6d7b21f169f2383f1af204c628d8 (diff)
downloadtalos-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>
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C14
-rw-r--r--src/usr/diag/prdf/common/plat/prdfPlatServices_common.C30
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfPlatServices_common.H1
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] );
OpenPOWER on IntegriCloud