summaryrefslogtreecommitdiffstats
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
parent8db1ba5aaa8198a0535cc472eda56cecdbb016f9 (diff)
downloadtalos-hostboot-8e6a69de2d3988dd904ede00a99b6fc537c30c8b.tar.gz
talos-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>
-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
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C18
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C33
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H20
-rw-r--r--src/usr/diag/prdf/plat/prdfPlatServices.C30
-rw-r--r--src/usr/diag/prdf/plat/prdfPlatServices_ipl.C36
15 files changed, 165 insertions, 257 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 );
}
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
index 6dff91e82..fcd347793 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
@@ -305,24 +305,8 @@ uint32_t __analyzeCmdComplete<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
do
{
- // Get all ports in which the command was run.
- ExtensibleChipList portList;
- o_rc = getMcbistMaintPort<TYPE_OCMB_CHIP>( i_chip, portList );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "getMcbistMaintPort(0x%08x) failed",
- i_chip->getHuid() );
- break;
- }
-
- // In broadcast mode, the rank configuration for all ports will be the
- // same. In non-broadcast mode, there will only be one MEM_PORT in
- // the list. Therefore, we can simply use the first MEM_PORT in the
- // list for all configs.
- ExtensibleChip * stopChip = portList.front();
-
// Update iv_stoppedRank.
- o_stoppedRank = __getStopRank<TYPE_MEM_PORT>( stopChip, i_addr );
+ o_stoppedRank = __getStopRank<TYPE_OCMB_CHIP>( i_chip, i_addr );
// Check the OCMB for ECC errors.
bool errorsFound;
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
index 35c44e2be..28988f1ab 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
@@ -1154,11 +1154,9 @@ uint32_t __findChipMarks<TYPE_MEM_PORT>(
for ( auto & entry : i_rankList.getList() )
{
- ExtensibleChip * memPort = entry.getChip();
+ ExtensibleChip * ocmb = entry.getChip();
MemRank rank = entry.getRank();
- ExtensibleChip * ocmb = getConnectedParent( memPort, TYPE_OCMB_CHIP );
-
// Call readChipMark to get MemMark.
MemMark chipMark;
o_rc = MarkStore::readChipMark<TYPE_OCMB_CHIP>( ocmb, rank, chipMark );
@@ -1171,13 +1169,19 @@ uint32_t __findChipMarks<TYPE_MEM_PORT>(
if ( !chipMark.isValid() ) continue; // no chip mark present
+ // 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( ocmb->getTrgt(),
+ TYPE_MEM_PORT, 0 );
+
// Get the DQ Bitmap data.
MemDqBitmap dqBitmap;
- o_rc = getBadDqBitmap( memPort->getTrgt(), rank, dqBitmap );
+ o_rc = getBadDqBitmap( memPort, rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x,0x%02x)",
- memPort->getHuid(), rank.getKey() );
+ getHuid(memPort), rank.getKey() );
break;
}
@@ -1187,7 +1191,7 @@ uint32_t __findChipMarks<TYPE_MEM_PORT>(
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "dqBitmap.isChipMark() failed on 0x%08x "
- "0x%02x", memPort->getHuid(), rank.getKey() );
+ "0x%02x", getHuid(memPort), rank.getKey() );
break;
}
@@ -1509,31 +1513,36 @@ uint32_t MemTdCtlr<TYPE_OCMB_CHIP>::handleRrFo()
for ( auto & entry : vectorList )
{
- ExtensibleChip * memPortChip = entry.getChip();
+ ExtensibleChip * ocmbChip = entry.getChip();
MemRank rank = entry.getRank();
// Get the chip mark
MemMark chipMark;
- o_rc = MarkStore::readChipMark<TYPE_OCMB_CHIP>( iv_chip, rank,
+ o_rc = MarkStore::readChipMark<TYPE_OCMB_CHIP>( ocmbChip, rank,
chipMark );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "readChipMark<TYPE_MEM_PORT>(0x%08x,%d) "
- "failed", memPortChip->getHuid(), rank.getMaster() );
+ "failed", ocmbChip->getHuid(), rank.getMaster() );
break;
}
if ( !chipMark.isValid() ) continue; // no chip mark present
+ // 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.
+
// Get the DQ Bitmap data.
- TargetHandle_t memPortTrgt = memPortChip->GetChipHandle();
+ TargetHandle_t memPort = getConnectedChild( ocmbChip->getTrgt(),
+ TYPE_MEM_PORT, 0 );
MemDqBitmap dqBitmap;
- o_rc = getBadDqBitmap( memPortTrgt, rank, dqBitmap );
+ o_rc = getBadDqBitmap( memPort, rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x, %d)",
- getHuid(memPortTrgt), rank.getMaster() );
+ getHuid(memPort), rank.getMaster() );
break;
}
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H b/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H
index e61389ea2..d1cf12a50 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H
+++ b/src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H
@@ -80,7 +80,7 @@ class TdRankListEntry
private:
- ExtensibleChip * iv_chip = nullptr; ///< MCA, MBA, or MEM_PORT chip.
+ ExtensibleChip * iv_chip = nullptr; ///< MCA, MBA, or OCMB chip.
MemRank iv_rank = MemRank(0); ///< Any rank on the MCA/MBA/MEM_PORT
};
@@ -95,7 +95,7 @@ class TdRankList
/**
* @brief Constructor.
- * @param MCBIST or MBA chip.
+ * @param MCBIST, OCMB, or MBA chip.
*/
explicit TdRankList( ExtensibleChip * i_chip );
@@ -191,17 +191,13 @@ inline TdRankList<TARGETING::TYPE_OCMB_CHIP>::TdRankList(
PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() );
- ExtensibleChipList memPortChipList = getConnected( i_chip, TYPE_MEM_PORT );
- for ( auto & memPortChip : memPortChipList )
- {
- std::vector<MemRank> rankList;
- getSlaveRanks<TYPE_MEM_PORT>( memPortChip->getTrgt(), rankList );
- PRDF_ASSERT( !rankList.empty() ); // target configured with no ranks
+ std::vector<MemRank> rankList;
+ getSlaveRanks<TYPE_OCMB_CHIP>( i_chip->getTrgt(), rankList );
+ PRDF_ASSERT( !rankList.empty() ); // target configured with no ranks
- for ( auto & rank : rankList )
- {
- iv_list.push_back( TdRankListEntry(memPortChip, rank) );
- }
+ for ( auto & rank : rankList )
+ {
+ iv_list.push_back( TdRankListEntry(i_chip, rank) );
}
}
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices.C b/src/usr/diag/prdf/plat/prdfPlatServices.C
index f34c26a9c..d61bb7844 100644
--- a/src/usr/diag/prdf/plat/prdfPlatServices.C
+++ b/src/usr/diag/prdf/plat/prdfPlatServices.C
@@ -1316,20 +1316,19 @@ uint32_t incMaintAddr<TYPE_MBA>( ExtensibleChip * i_chip,
//##############################################################################
template<>
-uint32_t startBgScrub<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
- const MemRank & i_rank )
+uint32_t startBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_ocmb,
+ const MemRank & i_rank )
{
- #define PRDF_FUNC "[PlatServices::startBgScrub<TYPE_MEM_PORT>] "
+ #define PRDF_FUNC "[PlatServices::startBgScrub<TYPE_OCMB_CHIP>] "
- PRDF_ASSERT( nullptr != i_memPort );
- PRDF_ASSERT( TYPE_MEM_PORT == i_memPort->getType() );
+ PRDF_ASSERT( nullptr != i_ocmb );
+ PRDF_ASSERT( TYPE_OCMB_CHIP == i_ocmb->getType() );
uint32_t o_rc = SUCCESS;
/* TODO RTC 207273 - no HWP support yet
// Get the OCMB fapi target
- ExtensibleChip * ocmbChip = getConnectedParent( i_memPort, TYPE_OCMB_CHIP );
- fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> fapiTrgt (ocmbChip->getTrgt());
+ fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> fapiTrgt (i_ocmb->getTrgt());
// Get the stop conditions.
// NOTE: If HBRT_PRD is not configured, we want to use the defaults so that
@@ -1383,11 +1382,11 @@ uint32_t startBgScrub<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
}
// Clear all of the counters and maintenance ECC attentions.
- o_rc = prepareNextCmd<TYPE_OCMB_CHIP>( ocmbChip );
+ o_rc = prepareNextCmd<TYPE_OCMB_CHIP>( i_ocmb );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "prepareNextCmd(0x%08x) failed",
- ocmbChip->getHuid() );
+ i_ocmb->getHuid() );
break;
}
@@ -1399,7 +1398,7 @@ uint32_t startBgScrub<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
if ( nullptr != errl )
{
PRDF_ERR( PRDF_FUNC "mss::memdiags::background_scrub(0x%08x,%d) "
- "failed", ocmbChip->getHuid(), i_rank.getMaster() );
+ "failed", i_ocmb->getHuid(), i_rank.getMaster() );
PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT );
o_rc = FAIL; break;
}
@@ -1414,17 +1413,6 @@ uint32_t startBgScrub<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
//------------------------------------------------------------------------------
-// This specialization only exists to avoid a lot of extra code in some classes.
-// The input chip must still be a MEM_PORT.
-template<>
-uint32_t startBgScrub<TYPE_OCMB_CHIP>( ExtensibleChip * i_memPort,
- const MemRank & i_rank )
-{
- return startBgScrub<TYPE_MEM_PORT>( i_memPort, i_rank );
-}
-
-//------------------------------------------------------------------------------
-
template<>
uint32_t startTdScrub<TYPE_OCMB_CHIP>(ExtensibleChip * i_chip,
const MemRank & i_rank,
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices_ipl.C b/src/usr/diag/prdf/plat/prdfPlatServices_ipl.C
index f516d53b7..204e61ca6 100644
--- a/src/usr/diag/prdf/plat/prdfPlatServices_ipl.C
+++ b/src/usr/diag/prdf/plat/prdfPlatServices_ipl.C
@@ -859,22 +859,21 @@ bool isBroadcastModeCapable<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip )
//------------------------------------------------------------------------------
template<>
-uint32_t startSfRead<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
- const MemRank & i_rank )
+uint32_t startSfRead<TYPE_OCMB_CHIP>( ExtensibleChip * i_ocmb,
+ const MemRank & i_rank )
{
- #define PRDF_FUNC "[PlatServices::startSfRead<TYPE_MCA>] "
+ #define PRDF_FUNC "[PlatServices::startSfRead<TYPE_OCMB_CHIP>] "
PRDF_ASSERT( isInMdiaMode() ); // MDIA must be running.
- PRDF_ASSERT( nullptr != i_memPort );
- PRDF_ASSERT( TYPE_MEM_PORT == i_memPort->getType() );
+ PRDF_ASSERT( nullptr != i_ocmb );
+ PRDF_ASSERT( TYPE_OCMB_CHIP == i_ocmb->getType() );
uint32_t o_rc = SUCCESS;
/* TODO RTC 207273 - no HWP support yet
// Get the OCMB_CHIP fapi target
- ExtensibleChip * ocmbChip = getConnectedParent( i_memPort, TYPE_OCMB_CHIP );
- fapi2::Target<fapi2::TYPE_OCMB_CHIP> fapiTrgt ( ocmbChip->getTrgt() );
+ fapi2::Target<fapi2::TYPE_OCMB_CHIP> fapiTrgt ( i_ocmb->getTrgt() );
// Get the stop conditions.
mss::mcbist::stop_conditions<> stopCond;
@@ -892,21 +891,21 @@ uint32_t startSfRead<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
{
// Get the first address of the given rank.
mss::mcbist::address saddr, eaddr;
- o_rc = getMemAddrRange<TYPE_MEM_PORT>( i_memPort, i_rank, saddr, eaddr,
- SLAVE_RANK );
+ o_rc = getMemAddrRange<TYPE_OCMB_CHIP>( i_ocmb, i_rank, saddr, eaddr,
+ SLAVE_RANK );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getMemAddrRange(0x%08x,0x%2x) failed",
- i_memPort->getHuid(), i_rank.getKey() );
+ i_ocmb->getHuid(), i_rank.getKey() );
break;
}
// Clear all of the counters and maintenance ECC attentions.
- o_rc = prepareNextCmd<TYPE_OCMB_CHIP>( ocmbChip );
+ o_rc = prepareNextCmd<TYPE_OCMB_CHIP>( i_ocmb );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "prepareNextCmd(0x%08x) failed",
- ocmbChip->getHuid() );
+ i_ocmb->getHuid() );
break;
}
@@ -917,7 +916,7 @@ uint32_t startSfRead<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
if ( nullptr != errl )
{
PRDF_ERR( PRDF_FUNC "mss::memdiags::sf_read(0x%08x,%d) failed",
- ocmbChip->getHuid(), i_rank.getMaster() );
+ i_ocmb->getHuid(), i_rank.getMaster() );
PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT );
o_rc = FAIL; break;
}
@@ -933,17 +932,6 @@ uint32_t startSfRead<TYPE_MEM_PORT>( ExtensibleChip * i_memPort,
//------------------------------------------------------------------------------
-// This specialization only exists to avoid a lot of extra code in some classes.
-// The input chip must still be an MEM_PORT chip.
-template<>
-uint32_t startSfRead<TYPE_OCMB_CHIP>( ExtensibleChip * i_memPort,
- const MemRank & i_rank )
-{
- return startSfRead<TYPE_MEM_PORT>( i_memPort, i_rank );
-}
-
-//------------------------------------------------------------------------------
-
template<>
uint32_t cleanupSfRead<TYPE_OCMB_CHIP>( ExtensibleChip * i_ocmbChip )
{
OpenPOWER on IntegriCloud