diff options
| author | Caleb Palmer <cnpalmer@us.ibm.com> | 2019-06-21 11:16:39 -0500 |
|---|---|---|
| committer | Zane C. Shelley <zshelle@us.ibm.com> | 2019-06-28 14:08:02 -0500 |
| commit | 8e6a69de2d3988dd904ede00a99b6fc537c30c8b (patch) | |
| tree | 73b1862be2497ddb93bf8a436a180af9ecacdaaf /src/usr/diag/prdf/plat | |
| parent | 8db1ba5aaa8198a0535cc472eda56cecdbb016f9 (diff) | |
| download | blackbird-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/plat')
| -rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C | 18 | ||||
| -rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C | 33 | ||||
| -rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemTdRankList.H | 20 | ||||
| -rw-r--r-- | src/usr/diag/prdf/plat/prdfPlatServices.C | 30 | ||||
| -rw-r--r-- | src/usr/diag/prdf/plat/prdfPlatServices_ipl.C | 36 |
5 files changed, 51 insertions, 86 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) ); } } 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 ) { |

