summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem
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/plat/mem
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>
Diffstat (limited to 'src/usr/diag/prdf/plat/mem')
-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
3 files changed, 30 insertions, 41 deletions
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) );
}
}
OpenPOWER on IntegriCloud