summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-06-05 13:19:27 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-06-08 22:46:06 -0400
commitf54c91bffdc2d9c41fb22e0f7a97f6db8e1d636e (patch)
treed028e7d8331b90e3ca93322aa9085639f8679ab0
parentbcfc61239031341766108f5a8c32a8284f945202 (diff)
downloadtalos-hostboot-f54c91bffdc2d9c41fb22e0f7a97f6db8e1d636e.tar.gz
talos-hostboot-f54c91bffdc2d9c41fb22e0f7a97f6db8e1d636e.zip
PRD: removed erroneous trace in getMemBufRawCardType()
Change-Id: Ie7cc0db26fb33f5b70f5c51229c99a809318d663 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59979 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/60143 Tested-by: Jenkins OP Build CI <op-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.C20
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemCeTable.C8
-rw-r--r--src/usr/diag/prdf/common/plat/prdfPlatServices_common.C92
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfPlatServices_common.H11
4 files changed, 41 insertions, 90 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
index 985c3dcd6..14ee4a4ca 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
@@ -68,27 +68,13 @@ void addExtMemMruData( const MemoryMru & i_memMru, errlHndl_t io_errl )
extMemMru.isX4Dram = isDramWidthX4( trgt ) ? 1 : 0;
// Get the DIMM type.
- bool isBufDimm = false;
if ( TYPE_MBA == getTargetType(trgt) )
{
- isBufDimm = isMembufOnDimm<TYPE_MBA>( trgt );
+ extMemMru.isBufDimm = isMembufOnDimm<TYPE_MBA>( trgt ) ? 1 : 0;
+ extMemMru.cardType = getMemBufRawCardType<TYPE_MBA>( trgt );
}
- extMemMru.isBufDimm = isBufDimm ? 1 : 0;
- if ( isBufDimm )
- {
- // Get the raw card type (Centaur DIMMs only).
- CEN_SYMBOL::WiringType cardType = CEN_SYMBOL::WIRING_INVALID;
- int32_t l_rc = getMemBufRawCardType( trgt, cardType );
- if ( SUCCESS != l_rc )
- {
- PRDF_ERR( PRDF_FUNC "getMemBufRawCardType() failed. MBA:0x%08x",
- getHuid(trgt) );
- break;
- }
- extMemMru.cardType = cardType;
- }
- else
+ if ( 0 == extMemMru.isBufDimm )
{
// Get the 80-byte DQ map (ISDIMMs only). This is only needed if the
// MemoryMru contains a single DIMM callout with a valid symbol.
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemCeTable.C b/src/usr/diag/prdf/common/plat/mem/prdfMemCeTable.C
index aae97e989..07d2dff96 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemCeTable.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemCeTable.C
@@ -210,13 +210,7 @@ void MemCeTable<T>::addCapData( CaptureData & io_cd )
{
isMba = 1;
mbaPos = getTargetPosition( iv_chip->getTrgt() );
-
- if ( SUCCESS != getMemBufRawCardType(iv_chip->getTrgt(), rcType) )
- {
- PRDF_ERR( "addCapData: getMemBufRawCardType(0x%08x) failed",
- iv_chip->getHuid() );
- rcType = CEN_SYMBOL::WIRING_INVALID; // Just in case.
- }
+ rcType = getMemBufRawCardType<TYPE_MBA>( iv_chip->getTrgt() );
}
// Fill in the header info.
diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C
index b7f58445c..82b7d5e9d 100644
--- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C
+++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C
@@ -59,7 +59,7 @@ using namespace TARGETING;
namespace PRDF
{
-using namespace CEN_SYMBOL;
+
namespace PlatServices
{
@@ -659,7 +659,7 @@ int32_t getSpdModspecComRefRawCard(
#define PRDF_FUNC "[PlatServices::getSpdModspecComRefRawCard] "
int32_t rc = SUCCESS;
- o_rawCard = WIRING_INVALID;
+ o_rawCard = 0xff; // something invalid
size_t l_size = 0;
uint8_t * l_blobData = nullptr;
@@ -736,49 +736,38 @@ int32_t getSpdModspecComRefRawCard(
#undef PRDF_FUNC
}
+//------------------------------------------------------------------------------
-int32_t getMemBufRawCardType( TargetHandle_t i_mba,
- WiringType & o_cardType )
+template<>
+CEN_SYMBOL::WiringType getMemBufRawCardType<TYPE_MBA>( TargetHandle_t i_trgt )
{
#define PRDF_FUNC "[PlatServices::getMemBufRawCardType] "
- int32_t o_rc = SUCCESS;
+ PRDF_ASSERT( nullptr != i_trgt );
+ PRDF_ASSERT( TYPE_MBA == getTargetType(i_trgt) );
- o_cardType = WIRING_INVALID;
+ // Ensure invalid card type if something fails.
+ CEN_SYMBOL::WiringType o_cardType = CEN_SYMBOL::WIRING_INVALID;
do
{
- if ( TYPE_MBA != getTargetType(i_mba) )
- {
- PRDF_ERR( PRDF_FUNC "Target 0x%08x is not an MBA", getHuid(i_mba) );
- o_rc = FAIL; break;
- }
-
- if ( !isMembufOnDimm<TYPE_MBA>(i_mba) )
- {
- PRDF_ERR( PRDF_FUNC "MBA 0x%08x is not on a buffered DIMM",
- getHuid(i_mba) );
- o_rc = FAIL; break;
- }
+ // Must be a custom DIMM with Centaur chip.
+ if ( !isMembufOnDimm<TYPE_MBA>(i_trgt) ) break;
- TargetHandleList l_dimmList = getConnected( i_mba, TYPE_DIMM );
- if ( 0 == l_dimmList.size() )
- {
- PRDF_ERR( PRDF_FUNC "No DIMMs connected to MBA 0x%08x",
- getHuid(i_mba) );
- o_rc = FAIL; break;
- }
+ TargetHandleList l_dimmList = getConnected( i_trgt, TYPE_DIMM );
+ PRDF_ASSERT( 0 != l_dimmList.size() ); // MBA configured with no DIMMs
// All logical DIMMs connected to this MBA are on the same card as the
// MBA so we can use any connected DIMM to query for the raw card type.
- uint8_t l_cardType = WIRING_INVALID;
- o_rc = getSpdModspecComRefRawCard(l_dimmList[0], l_cardType);
- if ( o_rc != SUCCESS )
+ uint8_t l_cardType;
+ if ( SUCCESS != getSpdModspecComRefRawCard(l_dimmList[0], l_cardType) )
{
+ PRDF_ERR( PRDF_FUNC "getSpdModspecComRefRawCard(0x%08x) failed",
+ getHuid(l_dimmList[0]) );
break;
}
- uint8_t l_version = getDramGen<TYPE_MBA>( i_mba );
+ uint8_t l_version = getDramGen<TYPE_MBA>( i_trgt );
// Centaur raw card types are only used for DRAM site locations. If an
// invalid wiring type is passed to the error log parser, the parser
@@ -793,73 +782,56 @@ int32_t getMemBufRawCardType( TargetHandle_t i_mba,
case SPD_MODSPEC_COM_REF_RAW_CARD_A:
if (CEN_EFF_DRAM_GEN_DDR3 == l_version)
{
- o_cardType = CEN_TYPE_A;
+ o_cardType = CEN_SYMBOL::CEN_TYPE_A;
}
else if (CEN_EFF_DRAM_GEN_DDR4 == l_version)
{
- o_cardType = CEN_TYPE_A4;
- }
- else
- {
- o_cardType = WIRING_INVALID;
+ o_cardType = CEN_SYMBOL::CEN_TYPE_A4;
}
break;
case SPD_MODSPEC_COM_REF_RAW_CARD_B:
if (CEN_EFF_DRAM_GEN_DDR3 == l_version)
{
- o_cardType = CEN_TYPE_B;
- } // end if DDR3
+ o_cardType = CEN_SYMBOL::CEN_TYPE_B;
+ }
else if (CEN_EFF_DRAM_GEN_DDR4 == l_version)
{
- o_cardType = CEN_TYPE_B4;
- } // end else if DDR4
- else
- { // don't know what this is
- o_cardType = WIRING_INVALID;
- } // end else unknown DRAM version
+ o_cardType = CEN_SYMBOL::CEN_TYPE_B4;
+ }
break;
case SPD_MODSPEC_COM_REF_RAW_CARD_C:
if (CEN_EFF_DRAM_GEN_DDR3 == l_version)
{
- o_cardType = CEN_TYPE_C;
+ o_cardType = CEN_SYMBOL::CEN_TYPE_C;
}
else if (CEN_EFF_DRAM_GEN_DDR4 == l_version)
{
- o_cardType = CEN_TYPE_C4;
- }
- else
- {
- o_cardType = WIRING_INVALID;
+ o_cardType = CEN_SYMBOL::CEN_TYPE_C4;
}
break;
case SPD_MODSPEC_COM_REF_RAW_CARD_D:
if (CEN_EFF_DRAM_GEN_DDR3 == l_version)
{
- o_cardType = CEN_TYPE_D;
+ o_cardType = CEN_SYMBOL::CEN_TYPE_D;
}
else if (CEN_EFF_DRAM_GEN_DDR4 == l_version)
{
- o_cardType = CEN_TYPE_D4;
- }
- else
- {
- o_cardType = WIRING_INVALID;
+ o_cardType = CEN_SYMBOL::CEN_TYPE_D4;
}
break;
default:
- o_cardType = WIRING_INVALID; // Anything unsupported
+ PRDF_INF( PRDF_FUNC "Unsupported card type 0x%02x or DRAM "
+ "version 0x%02x on DIMM 0x%08x", l_cardType,
+ l_version, getHuid(l_dimmList[0]) );
}
- PRDF_INF( PRDF_FUNC "DIMM 0x%08x - RawType 0x%02x, version = 0x%02x => 0x%02x card type",
- getHuid(l_dimmList[0]), l_cardType, l_version, o_cardType );
-
} while(0);
- return o_rc;
+ return o_cardType;
#undef PRDF_FUNC
}
diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H
index 367e35f2a..de41a416a 100755
--- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H
+++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H
@@ -259,13 +259,12 @@ int32_t getDimmSpareConfig( TARGETING::TargetHandle_t i_mba, MemRank i_rank,
/**
* @brief Returns the raw card type of a buffered DIMM.
- * @param i_mbaTarget An MBA target. This MBA must be on a buffered DIMM.
- * @param o_wiringType The DIMM's raw card type. Will return WIRING_INVALID if
- * the raw card type currently is not supported.
- * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise.
+ * @param i_trgt An MBA target.
+ * @return WIRING_INVALID if an internal function fails. Otherwise, the DIMM's
+ * raw card type.
*/
-int32_t getMemBufRawCardType( TARGETING::TargetHandle_t i_mbaTarget,
- CEN_SYMBOL::WiringType & o_wiringType );
+template<TARGETING::TYPE>
+CEN_SYMBOL::WiringType getMemBufRawCardType( TARGETING::TargetHandle_t i_trgt );
/**
* @brief get DIMM DQ map from FAPI routines
OpenPOWER on IntegriCloud