summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-06-21 11:16:39 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2019-06-28 14:08:02 -0500
commit8e6a69de2d3988dd904ede00a99b6fc537c30c8b (patch)
tree73b1862be2497ddb93bf8a436a180af9ecacdaaf /src/usr/diag/prdf/common
parent8db1ba5aaa8198a0535cc472eda56cecdbb016f9 (diff)
downloadblackbird-hostboot-8e6a69de2d3988dd904ede00a99b6fc537c30c8b.tar.gz
blackbird-hostboot-8e6a69de2d3988dd904ede00a99b6fc537c30c8b.zip
PRD: Remove use of unsupported MEM_PORT ExtensibleChip
Change-Id: I2fe2952854a62ce0b562eacdb7a554ed6a9f1881 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79344 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Benjamen G. Tyner <ben.tyner@ibm.com> Reviewed-by: Paul Greenwood <paul.greenwood@ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79346 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>
Diffstat (limited to 'src/usr/diag/prdf/common')
-rw-r--r--src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C12
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C87
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C53
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C24
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H9
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemMark.C25
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/mem/prdfMemThresholds.C3
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/mem/prdfMemUtils.C38
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/mem/prdfMemUtils.H4
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfTargetServices.C30
10 files changed, 114 insertions, 171 deletions
diff --git a/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C b/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C
index e70bfea8f..69d63b345 100644
--- a/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C
+++ b/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C
@@ -241,18 +241,18 @@ int32_t RdfRcdParityError( ExtensibleChip * i_chip,
if ( rdffir->IsBitSet(40) )
{
// callout MEM_PORT on 1st occurrence
- ExtensibleChip * memPort =
- getConnectedChild( i_chip, TYPE_MEM_PORT, 0 );
- io_sc.service_data->SetCallout( memPort->getTrgt() );
+ TargetHandle_t memPort =
+ getConnectedChild( i_chip->getTrgt(), TYPE_MEM_PORT, 0 );
+ io_sc.service_data->SetCallout( memPort );
}
// Else this is 'confirmed RCD parity error' case
else
{
// callout DIMM high priority, MEM_PORT low on 1st occurrence
CalloutAttachedDimmsHigh( i_chip, io_sc );
- ExtensibleChip * memPort =
- getConnectedChild( i_chip, TYPE_MEM_PORT, 0 );
- io_sc.service_data->SetCallout( memPort->getTrgt(), MRU_LOW );
+ TargetHandle_t memPort =
+ getConnectedChild( i_chip->getTrgt(), TYPE_MEM_PORT, 0 );
+ io_sc.service_data->SetCallout( memPort, MRU_LOW );
}
// Mask bit 40 as well
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C b/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C
index 5cf6a75a4..b913b6c18 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C
@@ -611,93 +611,6 @@ uint32_t getMcbistMaintPort<TYPE_MCBIST>( ExtensibleChip * i_mcbChip,
#undef PRDF_FUNC
}
-//------------------------------------------------------------------------------
-
-template<>
-uint32_t getMcbistMaintPort<TYPE_OCMB_CHIP>( ExtensibleChip * i_ocmbChip,
- ExtensibleChipList & o_portList )
-{
- #define PRDF_FUNC "[getMcbistMaintPort] "
-
- // Check parameters
- PRDF_ASSERT( nullptr != i_ocmbChip );
- PRDF_ASSERT( TYPE_OCMB_CHIP == i_ocmbChip->getType() );
-
- uint32_t o_rc = SUCCESS;
-
- o_portList.clear();
-
- SCAN_COMM_REGISTER_CLASS * mcbagra = i_ocmbChip->getRegister( "MCBAGRA" );
- SCAN_COMM_REGISTER_CLASS * mcbmcat = i_ocmbChip->getRegister( "MCBMCAT" );
- SCAN_COMM_REGISTER_CLASS * mcb_cntl = i_ocmbChip->getRegister( "MCB_CNTL" );
-
- do
- {
- o_rc = mcbagra->Read();
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "Read() failed on MCBAGRA: i_ocmbChip=0x%08x",
- i_ocmbChip->getHuid() );
- break;
- }
-
- // Get a mask of all ports in which the command was executed. Use
- // MCB_CNTL[2:5] only if MCBAGRA[10] is b0 OR MCBAGRA[10:11] is b11.
- // Otherwise, use MCBMCAT[38:39].
- uint8_t portMask = 0;
- if ( !mcbagra->IsBitSet(10) || mcbagra->IsBitSet(11) ) // broadcast mode
- {
- o_rc = mcb_cntl->Read();
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "Read() failed on MCB_CNTL: "
- "i_ocmbChip=0x%08x", i_ocmbChip->getHuid() );
- break;
- }
-
- portMask = mcb_cntl->GetBitFieldJustified( 2, 4 );
- }
- else // non-broadcast mode
- {
- o_rc = mcbmcat->Read();
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "Read() failed on MCBMCAT: "
- "i_ocmbChip=0x%08x", i_ocmbChip->getHuid() );
- break;
- }
-
- portMask = 0x8 >> mcbmcat->GetBitFieldJustified( 38, 2 );
- }
-
- // Get MEM_PORTs from all targeted ports.
- ExtensibleChipList portList = getConnected( i_ocmbChip, TYPE_MEM_PORT );
- for ( auto & port : portList )
- {
- // Get the MEM_PORT position relative to the OCMB
- uint8_t portRelPos = port->getTrgt()->getAttr<ATTR_REL_POS>();
-
- // If the port wasn't targeted by the command, skip to next port
- if ( 0 == (portMask & (0x8 >> portRelPos)) ) continue;
-
- o_portList.push_back( port );
- }
-
- // The list should never be empty.
- size_t sz_list = o_portList.size();
- if ( 0 == sz_list )
- {
- PRDF_ERR( PRDF_FUNC "o_portList is empty: i_ocmbChip=0x%08x "
- "portMask=0x%0x", i_ocmbChip->getHuid(), portMask );
- PRDF_ASSERT( false ); // mcbist functional but no configured ports
- }
-
- } while (0);
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
#endif
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
index e3da2e952..25db47d64 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
@@ -535,25 +535,27 @@ void addEccData<TYPE_MCBIST>( ExtensibleChip * i_chip,
}
template<>
-void addEccData<TYPE_MEM_PORT>( ExtensibleChip * i_chip,
- STEP_CODE_DATA_STRUCT & io_sc )
+void addEccData<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
+ STEP_CODE_DATA_STRUCT & io_sc )
{
- PRDF_ASSERT( TYPE_MEM_PORT == i_chip->getType() );
+ PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() );
CaptureData & cd = io_sc.service_data->GetCaptureData();
-
- TargetHandle_t trgt = i_chip->getTrgt();
- ExtensibleChip * ocmb = getConnectedParent( i_chip, TYPE_OCMB_CHIP );
- OcmbDataBundle * db = getOcmbDataBundle( ocmb );
+ OcmbDataBundle * db = getOcmbDataBundle( i_chip );
+ TargetHandle_t ocmbTrgt = i_chip->getTrgt();
// Add DRAM repairs data from hardware.
- captureDramRepairsData<TYPE_OCMB_CHIP>( ocmb->getTrgt(), cd );
+ captureDramRepairsData<TYPE_OCMB_CHIP>( ocmbTrgt, cd );
// Add DRAM repairs data from VPD.
- captureDramRepairsVpd<TYPE_MEM_PORT>( trgt, cd );
+ // TODO RTC 210072 - Explorer only has one port, however, multiple ports
+ // will be supported in the future. Updates will need to be made here so we
+ // can get the relevant port.
+ TargetHandle_t memPort = getConnectedChild( ocmbTrgt, TYPE_MEM_PORT, 0 );
+ captureDramRepairsVpd<TYPE_MEM_PORT>( memPort, cd );
// Add IUE counts to capture data.
- captureIueCounts<OcmbDataBundle*>( ocmb->getTrgt(), db, cd );
+ captureIueCounts<OcmbDataBundle*>( ocmbTrgt, db, cd );
// Add CE table to capture data.
db->iv_ceTable.addCapData( cd );
@@ -563,17 +565,6 @@ void addEccData<TYPE_MEM_PORT>( ExtensibleChip * i_chip,
}
template<>
-void addEccData<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
- STEP_CODE_DATA_STRUCT & io_sc )
-{
- PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() );
-
- // Add data for each connected MEM_PORT.
- ExtensibleChipList list = getConnected( i_chip, TYPE_MEM_PORT );
- for ( auto & port : list ) { addEccData<TYPE_MEM_PORT>(port, io_sc); }
-}
-
-template<>
void addEccData<TYPE_MBA>( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc )
{
@@ -635,6 +626,26 @@ void addEccData<TYPE_MBA>( TargetHandle_t i_trgt, errlHndl_t io_errl )
ErrDataService::AddCapData( cd, io_errl );
}
+template<>
+void addEccData<TYPE_OCMB_CHIP>( TargetHandle_t i_trgt,
+ errlHndl_t io_errl )
+{
+ PRDF_ASSERT( TYPE_OCMB_CHIP == getTargetType(i_trgt) );
+
+ CaptureData cd;
+
+ // Add DRAM repairs data from hardware.
+ captureDramRepairsData<TYPE_OCMB_CHIP>( i_trgt, cd );
+
+ // Add DRAM repairs data from VPD.
+ // TODO RTC 210072 - Explorer only has one port, however, multiple ports
+ // will be supported in the future. Updates will need to be made here so we
+ // can get the relevant port.
+ TargetHandle_t memPort = getConnectedChild( i_trgt, TYPE_MEM_PORT, 0 );
+ captureDramRepairsVpd<TYPE_MEM_PORT>( memPort, cd );
+
+ ErrDataService::AddCapData( cd, io_errl );
+}
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C
index 308e25dab..10f7125dd 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C
@@ -700,7 +700,7 @@ uint32_t MemDqBitmap::setEccSpare( uint8_t i_pins )
// Utility Functions
//##############################################################################
-uint32_t setDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
+uint32_t setDramInVpd( TargetHandle_t i_trgt, const MemRank & i_rank,
MemSymbol i_symbol )
{
#define PRDF_FUNC "[MemDqBitmap::__setDramInVpd] "
@@ -709,14 +709,12 @@ uint32_t setDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
do
{
- TARGETING::TargetHandle_t trgt = i_chip->getTrgt();
-
MemDqBitmap dqBitmap;
- o_rc = getBadDqBitmap( trgt, i_rank, dqBitmap );
+ o_rc = getBadDqBitmap( i_trgt, i_rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x, 0x%02x) failed.",
- getHuid(trgt), i_rank.getKey() );
+ getHuid(i_trgt), i_rank.getKey() );
break;
}
@@ -727,11 +725,11 @@ uint32_t setDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
break;
}
- o_rc = setBadDqBitmap( trgt, i_rank, dqBitmap );
+ o_rc = setBadDqBitmap( i_trgt, i_rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "setBadDqBitmap(0x%08x, 0x%02x) failed.",
- getHuid(trgt), i_rank.getKey() );
+ getHuid(i_trgt), i_rank.getKey() );
break;
}
}while(0);
@@ -743,7 +741,7 @@ uint32_t setDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
//------------------------------------------------------------------------------
-uint32_t clearDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
+uint32_t clearDramInVpd( TargetHandle_t i_trgt, const MemRank & i_rank,
MemSymbol i_symbol )
{
#define PRDF_FUNC "[MemDqBitmap::__clearDramInVpd] "
@@ -752,14 +750,12 @@ uint32_t clearDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
do
{
- TARGETING::TargetHandle_t trgt = i_chip->getTrgt();
-
MemDqBitmap dqBitmap;
- o_rc = getBadDqBitmap( trgt, i_rank, dqBitmap );
+ o_rc = getBadDqBitmap( i_trgt, i_rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x, 0x%02x) failed.",
- getHuid(trgt), i_rank.getKey() );
+ getHuid(i_trgt), i_rank.getKey() );
break;
}
@@ -770,11 +766,11 @@ uint32_t clearDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
break;
}
- o_rc = setBadDqBitmap( trgt, i_rank, dqBitmap );
+ o_rc = setBadDqBitmap( i_trgt, i_rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "setBadDqBitmap(0x%08x, 0x%02x) failed.",
- getHuid(trgt), i_rank.getKey() );
+ getHuid(i_trgt), i_rank.getKey() );
break;
}
}while(0);
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H
index 5d96aadfd..9ba927432 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H
@@ -250,20 +250,21 @@ class MemDqBitmap
/**
* @brief Sets the inputted dram in DRAM repairs VPD.
- * @param i_chip MBA or MCA chip.
+ * @param i_trgt MBA, MCA, MEM_PORT, or OCMB chip.
* @param i_rank Target rank.
* @return Non-SUCCESS if an internal function fails. SUCCESS otherwise.
*/
-uint32_t setDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
+uint32_t setDramInVpd( TARGETING::TargetHandle_t i_trgt, const MemRank & i_rank,
MemSymbol i_symbol );
/**
* @brief Clears the inputted dram in DRAM repairs VPD.
- * @param i_chip MBA or MCA chip.
+ * @param i_trgt MBA, MCA, MEM_PORT, or OCMB chip.
* @param i_rank Target rank.
* @return Non-SUCCESS if an internal function fails. SUCCESS otherwise.
*/
-uint32_t clearDramInVpd( ExtensibleChip * i_chip, const MemRank & i_rank,
+uint32_t clearDramInVpd( TARGETING::TargetHandle_t i_trgt,
+ const MemRank & i_rank,
MemSymbol i_symbol );
} // end namespace PRDF
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C b/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
index e0b54ab31..4aff52acd 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
@@ -1009,7 +1009,7 @@ void __addCallout( ExtensibleChip * i_chip, const MemRank & i_rank,
//------------------------------------------------------------------------------
template<TARGETING::TYPE T>
-uint32_t __addRowRepairCallout( ExtensibleChip * i_chip,
+uint32_t __addRowRepairCallout( TargetHandle_t i_trgt,
const MemRank & i_rank,
STEP_CODE_DATA_STRUCT & io_sc )
{
@@ -1018,7 +1018,7 @@ uint32_t __addRowRepairCallout( ExtensibleChip * i_chip,
uint32_t o_rc = SUCCESS;
// Get the dimms on this rank on either port.
- TargetHandleList dimmList = getConnectedDimms( i_chip->getTrgt(), i_rank );
+ TargetHandleList dimmList = getConnectedDimms( i_trgt, i_rank );
// Check for row repairs on each dimm.
for ( auto const & dimm : dimmList )
@@ -1124,8 +1124,8 @@ uint32_t __applyRasPolicies<TYPE_MBA>( ExtensibleChip * i_chip,
__addCallout( i_chip, i_rank, ecc, io_sc );
// Add the row repairs to the callout list if they exist
- o_rc = __addRowRepairCallout<TARGETING::TYPE_MBA>( i_chip, i_rank,
- io_sc );
+ o_rc = __addRowRepairCallout<TARGETING::TYPE_MBA>(
+ i_chip->getTrgt(), i_rank, io_sc );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "__addRowRepairCallout(0x%08x,0x%02x) "
@@ -1205,17 +1205,17 @@ uint32_t __applyRasPolicies<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
const uint8_t ps = i_chipMark.getSymbol().getPortSlct();
const uint8_t dram = i_chipMark.getSymbol().getDram();
- ExtensibleChip * memPort = getConnectedChild(i_chip, TYPE_MEM_PORT, ps);
+ TargetHandle_t memPort = getConnectedChild( i_chip->getTrgt(),
+ TYPE_MEM_PORT, ps );
- TargetHandle_t dimmTrgt = getConnectedDimm( memPort->getTrgt(), i_rank,
- ps );
+ TargetHandle_t dimmTrgt = getConnectedDimm( memPort, i_rank, ps );
const bool isX4 = isDramWidthX4( dimmTrgt );
// Determine if DRAM sparing is enabled.
bool isEnabled = false;
- o_rc = isDramSparingEnabled<TYPE_MEM_PORT>( memPort->getTrgt(), i_rank,
- ps, isEnabled );
+ o_rc = isDramSparingEnabled<TYPE_MEM_PORT>( memPort, i_rank, ps,
+ isEnabled );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "isDramSparingEnabled() failed." );
@@ -1268,7 +1268,7 @@ uint32_t __applyRasPolicies<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
// Certain DIMMs may have had spares intentially made unavailable by
// the manufacturer. Check the VPD for available spares.
bool spAvail, eccAvail;
- o_rc = isSpareAvailable<TYPE_MEM_PORT>( memPort->getTrgt(), i_rank,
+ o_rc = isSpareAvailable<TYPE_MEM_PORT>( memPort, i_rank,
ps, spAvail, eccAvail );
if ( spAvail )
{
@@ -1470,13 +1470,14 @@ uint32_t chipMarkCleanup( ExtensibleChip * i_chip, const MemRank & i_rank,
{
if ( TYPE_OCMB_CHIP == i_chip->getType() )
{
- ExtensibleChip * memPort = getConnectedChild( i_chip,
+ TargetHandle_t memPort = getConnectedChild( i_chip->getTrgt(),
TYPE_MEM_PORT, chipMark.getSymbol().getPortSlct() );
o_rc = setDramInVpd( memPort, i_rank, chipMark.getSymbol() );
}
else
{
- o_rc = setDramInVpd( i_chip, i_rank, chipMark.getSymbol() );
+ o_rc = setDramInVpd( i_chip->getTrgt(), i_rank,
+ chipMark.getSymbol() );
}
if ( SUCCESS != o_rc )
{
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemThresholds.C b/src/usr/diag/prdf/common/plat/mem/prdfMemThresholds.C
index c59fa3657..6ad8a724a 100755
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemThresholds.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemThresholds.C
@@ -173,7 +173,8 @@ void getMnfgMemCeTh( ExtensibleChip * i_chip, const MemRank & i_rank,
else
{
// Get DRAM size
- uint8_t size = MemUtils::getDramSize<T>( i_chip, i_rank.getDimmSlct() );
+ uint8_t size = MemUtils::getDramSize<T>( i_chip->getTrgt(),
+ i_rank.getDimmSlct() );
// Get number of ranks per DIMM select.
uint8_t rankCount = getNumRanksPerDimm<T>( i_chip->getTrgt(),
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C
index 4d96de65e..1f9037ee9 100755
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C
@@ -31,7 +31,9 @@
// Framework includes
#include <iipServiceDataCollector.h>
+#include <iipSystem.h>
#include <prdfExtensibleChip.H>
+#include <prdfGlobal_common.H>
#include <UtilHash.H>
// Platform includes
@@ -517,19 +519,18 @@ int32_t collectCeStats<TYPE_MBA>( ExtensibleChip * i_chip,
//------------------------------------------------------------------------------
template<>
-uint8_t getDramSize<TYPE_MCA>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
+uint8_t getDramSize<TYPE_MCA>( TargetHandle_t i_trgt, uint8_t i_dimmSlct )
{
#define PRDF_FUNC "[MemUtils::getDramSize] "
- PRDF_ASSERT( TYPE_MCA == i_chip->getType() );
+ PRDF_ASSERT( TYPE_MCA == getTargetType(i_trgt) );
PRDF_ASSERT( i_dimmSlct < DIMM_SLCT_PER_PORT );
- TargetHandle_t mcaTrgt = i_chip->getTrgt();
- TargetHandle_t mcsTrgt = getConnectedParent( mcaTrgt, TYPE_MCS );
+ TargetHandle_t mcsTrgt = getConnectedParent( i_trgt, TYPE_MCS );
PRDF_ASSERT( nullptr != mcsTrgt );
- uint8_t mcaRelPos = i_chip->getPos() % MAX_MCA_PER_MCS;
+ uint8_t mcaRelPos = getTargetPosition(i_trgt) % MAX_MCA_PER_MCS;
uint8_t tmp[MAX_MCA_PER_MCS][DIMM_SLCT_PER_PORT];
@@ -545,19 +546,22 @@ uint8_t getDramSize<TYPE_MCA>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
}
template<>
-uint8_t getDramSize<TYPE_MBA>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
+uint8_t getDramSize<TYPE_MBA>( TargetHandle_t i_trgt, uint8_t i_dimmSlct )
{
#define PRDF_FUNC "[MemUtils::getDramSize] "
- PRDF_ASSERT( TYPE_MBA == i_chip->getType() );
+ PRDF_ASSERT( TYPE_MBA == getTargetType(i_trgt) );
uint8_t o_size = 0;
do
{
- ExtensibleChip * membufChip = getConnectedParent(i_chip, TYPE_MEMBUF);
+ TargetHandle_t membuf = getConnectedParent(i_trgt, TYPE_MEMBUF);
+ ExtensibleChip * membufChip =
+ (ExtensibleChip*)systemPtr->GetChip(membuf);
+ PRDF_ASSERT( nullptr != membufChip );
- uint32_t pos = i_chip->getPos();
+ uint32_t pos = getTargetPosition(i_trgt);
const char * reg_str = (0 == pos) ? "MBA0_MBAXCR" : "MBA1_MBAXCR";
SCAN_COMM_REGISTER_CLASS * reg = membufChip->getRegister( reg_str );
@@ -565,7 +569,7 @@ uint8_t getDramSize<TYPE_MBA>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
if ( SUCCESS != rc )
{
PRDF_ERR( PRDF_FUNC "Read() failed on %s. Target=0x%08x",
- reg_str, i_chip->getHuid() );
+ reg_str, getHuid(i_trgt) );
break;
}
@@ -582,18 +586,16 @@ uint8_t getDramSize<TYPE_MBA>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
}
template<>
-uint8_t getDramSize<TYPE_MEM_PORT>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
+uint8_t getDramSize<TYPE_MEM_PORT>( TargetHandle_t i_trgt, uint8_t i_dimmSlct )
{
#define PRDF_FUNC "[MemUtils::getDramSize] "
- PRDF_ASSERT( TYPE_MEM_PORT == i_chip->getType() );
+ PRDF_ASSERT( TYPE_MEM_PORT == getTargetType(i_trgt) );
PRDF_ASSERT( i_dimmSlct < DIMM_SLCT_PER_PORT );
- TargetHandle_t memPortTrgt = i_chip->getTrgt();
-
uint8_t tmp[DIMM_SLCT_PER_PORT];
- if ( !memPortTrgt->tryGetAttr<TARGETING::ATTR_MEM_EFF_DRAM_DENSITY>(tmp) )
+ if ( !i_trgt->tryGetAttr<TARGETING::ATTR_MEM_EFF_DRAM_DENSITY>(tmp) )
{
PRDF_ERR( PRDF_FUNC "Failed to get ATTR_MEM_EFF_DRAM_DENSITY" );
PRDF_ASSERT( false );
@@ -605,18 +607,18 @@ uint8_t getDramSize<TYPE_MEM_PORT>(ExtensibleChip *i_chip, uint8_t i_dimmSlct)
}
template<>
-uint8_t getDramSize<TYPE_OCMB_CHIP>(ExtensibleChip * i_chip, uint8_t i_dimmSlct)
+uint8_t getDramSize<TYPE_OCMB_CHIP>( TargetHandle_t i_trgt, uint8_t i_dimmSlct )
{
#define PRDF_FUNC "[MemUtils::getDramSize] "
- PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() );
+ PRDF_ASSERT( TYPE_OCMB_CHIP == getTargetType(i_trgt) );
PRDF_ASSERT( i_dimmSlct < DIMM_SLCT_PER_PORT );
// TODO RTC 210072 - Explorer only has one port, however, multiple ports
// will be supported in the future. Updates will need to be made here so we
// can get the relevant port.
- ExtensibleChip * memPort = getConnectedChild( i_chip, TYPE_MEM_PORT, 0 );
+ TargetHandle_t memPort = getConnectedChild( i_trgt, TYPE_MEM_PORT, 0 );
return getDramSize<TYPE_MEM_PORT>( memPort, i_dimmSlct );
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.H b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.H
index 9759cd010..39a6051fe 100755
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.H
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.H
@@ -102,12 +102,12 @@ int32_t collectCeStats( ExtensibleChip * i_chip, const MemRank & i_rank,
/**
* @brief Gets DRAM size for an MBA, MCA, or MEM_PORT.
- * @param i_chip MBA, MCA, or MEM_PORT chip.
+ * @param i_trgt MBA, MCA, or MEM_PORT target.
* @param i_dimmSlct DIMM select. Optional for MBA chip.
* @return size for a DRAM
*/
template<TARGETING::TYPE T>
-uint8_t getDramSize( ExtensibleChip * i_chip, uint8_t i_dimmSlct = 0 );
+uint8_t getDramSize( TARGETING::TargetHandle_t i_trgt, uint8_t i_dimmSlct = 0 );
/**
* @brief determines the type of Centaur based raw card associated with MBA.
diff --git a/src/usr/diag/prdf/common/plat/prdfTargetServices.C b/src/usr/diag/prdf/common/plat/prdfTargetServices.C
index 3b85d3ca7..c3da71d42 100755
--- a/src/usr/diag/prdf/common/plat/prdfTargetServices.C
+++ b/src/usr/diag/prdf/common/plat/prdfTargetServices.C
@@ -1021,7 +1021,12 @@ ExtensibleChipList getConnected( ExtensibleChip * i_chip, TYPE i_connType )
TargetHandleList list = getConnected( i_chip->getTrgt(), i_connType );
for ( auto & trgt : list )
{
- o_list.push_back( (ExtensibleChip *)systemPtr->GetChip(trgt) );
+ // Check to make sure that if we have a non-null Target, we also
+ // get back a non-null ExtensibleChip.
+ ExtensibleChip * chip = (ExtensibleChip *)systemPtr->GetChip(trgt);
+ PRDF_ASSERT( nullptr != chip );
+
+ o_list.push_back( chip );
}
return o_list;
@@ -1037,7 +1042,12 @@ ExtensibleChip * getConnectedParent( ExtensibleChip * i_child,
TargetHandle_t trgt = getConnectedParent( i_child->getTrgt(),
i_parentType );
- return (ExtensibleChip *)systemPtr->GetChip( trgt );
+ // Check to make sure that if we have a non-null Target, we also
+ // get back a non-null ExtensibleChip.
+ ExtensibleChip * chip = (ExtensibleChip *)systemPtr->GetChip( trgt );
+ PRDF_ASSERT( nullptr != chip );
+
+ return chip;
}
//------------------------------------------------------------------------------
@@ -1056,6 +1066,10 @@ ExtensibleChip * getConnectedChild( ExtensibleChip * i_parent,
if ( nullptr != trgt )
{
o_child = (ExtensibleChip *)systemPtr->GetChip( trgt );
+
+ // Check to make sure that if we have a non-null Target, we also
+ // get back a non-null ExtensibleChip.
+ PRDF_ASSERT( nullptr != o_child );
}
return o_child;
@@ -1715,11 +1729,15 @@ void getSlaveRanks<TYPE_MBA>( TargetHandle_t i_trgt,
}
template<>
-void getSlaveRanks<TYPE_MEM_PORT>( TargetHandle_t i_trgt,
- std::vector<MemRank> & o_ranks,
- uint8_t i_ds )
+void getSlaveRanks<TYPE_OCMB_CHIP>( TargetHandle_t i_trgt,
+ std::vector<MemRank> & o_ranks,
+ uint8_t i_ds )
{
- __getSlaveRanks<TYPE_MEM_PORT>( i_trgt, o_ranks, i_ds );
+ // TODO RTC 210072 - Explorer only has one port, however, multiple ports
+ // will be supported in the future. Updates will need to be made here so we
+ // can get the relevant port.
+ TargetHandle_t memPort = getConnectedChild( i_trgt, TYPE_MEM_PORT, 0 );
+ __getSlaveRanks<TYPE_MEM_PORT>( memPort, o_ranks, i_ds );
}
//------------------------------------------------------------------------------
OpenPOWER on IntegriCloud