summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C13
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C3
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H7
-rw-r--r--src/usr/diag/prdf/common/plat/prdfPlatServices_common.C8
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfPlatServices_common.H6
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfTargetServices.H4
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfParserUtils.C18
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemDsd_ipl.C11
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C22
9 files changed, 39 insertions, 53 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
index 25db47d64..548f47f56 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
@@ -542,17 +542,14 @@ void addEccData<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
CaptureData & cd = io_sc.service_data->GetCaptureData();
OcmbDataBundle * db = getOcmbDataBundle( i_chip );
+
TargetHandle_t ocmbTrgt = i_chip->getTrgt();
// Add DRAM repairs data from hardware.
captureDramRepairsData<TYPE_OCMB_CHIP>( ocmbTrgt, 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( ocmbTrgt, TYPE_MEM_PORT, 0 );
- captureDramRepairsVpd<TYPE_MEM_PORT>( memPort, cd );
+ captureDramRepairsVpd<TYPE_OCMB_CHIP>( ocmbTrgt, cd );
// Add IUE counts to capture data.
captureIueCounts<OcmbDataBundle*>( ocmbTrgt, db, cd );
@@ -638,11 +635,7 @@ void addEccData<TYPE_OCMB_CHIP>( TargetHandle_t i_trgt,
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 );
+ captureDramRepairsVpd<TYPE_OCMB_CHIP>( i_trgt, 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 10f7125dd..5db522818 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C
@@ -450,6 +450,9 @@ std::vector<MemSymbol> MemDqBitmap::getSymbolList( uint8_t i_portSlct )
case TYPE_MEM_PORT:
symbol = dq2Symbol<TYPE_MEM_PORT>( dq, i_portSlct );
break;
+ case TYPE_OCMB_CHIP:
+ symbol = dq2Symbol<TYPE_OCMB_CHIP>(dq, i_portSlct);
+ break;
default:
PRDF_ERR( "Invalid trgt type" );
PRDF_ASSERT( false );
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H
index 9ba927432..c3648dbc5 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.H
@@ -75,8 +75,11 @@ class MemDqBitmap
BitmapData i_d ) : iv_trgt(i_trgt), iv_rank(i_rank),
iv_x4Dram(true), iv_data(i_d)
{
- if ( TARGETING::TYPE_MEM_PORT == PlatServices::getTargetType(iv_trgt) )
+ if ( TARGETING::TYPE_MEM_PORT == PlatServices::getTargetType(iv_trgt) ||
+ TARGETING::TYPE_OCMB_CHIP ==
+ PlatServices::getTargetType(iv_trgt) )
{
+ // TODO RTC 210072 - Support multiple ports
TARGETING::TargetHandle_t dimm =
PlatServices::getConnectedDimm( iv_trgt, iv_rank );
iv_x4Dram = PlatServices::isDramWidthX4( dimm );
@@ -236,7 +239,7 @@ class MemDqBitmap
private: // instance variables
- TARGETING::TargetHandle_t iv_trgt; ///< Target MBA/MCA/MEM_PORT
+ TARGETING::TargetHandle_t iv_trgt; ///< Target MBA/MCA/MEM_PORT/OCMB_CHIP
MemRank iv_rank; ///< Target rank
bool iv_x4Dram; ///< TRUE if iv_trgt uses x4 DRAMs
diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C
index 8e9f11807..d7bd5b46b 100644
--- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C
+++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C
@@ -695,6 +695,10 @@ uint32_t getBadDqBitmap( TargetHandle_t i_trgt, const MemRank & i_rank,
o_rc = __getBadDqBitmap<fapi2::TARGET_TYPE_MEM_PORT>( i_trgt,
i_rank, o_bitmap );
break;
+ case TYPE_OCMB_CHIP:
+ o_rc = __getBadDqBitmap<fapi2::TARGET_TYPE_OCMB_CHIP>( i_trgt,
+ i_rank, o_bitmap );
+ break;
default:
PRDF_ERR( PRDF_FUNC "Invalid trgt type" );
o_rc = FAIL;
@@ -777,6 +781,10 @@ uint32_t setBadDqBitmap( TargetHandle_t i_trgt, const MemRank & i_rank,
o_rc = __setBadDqBitmap<fapi2::TARGET_TYPE_MEM_PORT>( i_trgt,
i_rank, i_bitmap );
break;
+ case TYPE_OCMB_CHIP:
+ o_rc = __setBadDqBitmap<fapi2::TARGET_TYPE_OCMB_CHIP>( i_trgt,
+ i_rank, i_bitmap );
+ break;
default:
PRDF_ERR( PRDF_FUNC "Invalid trgt type" );
o_rc = FAIL;
diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H
index 5d41d96e0..203703b42 100755
--- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H
+++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.H
@@ -193,7 +193,7 @@ bool obusInSmpMode(TARGETING::TargetHandle_t obusTgt);
/**
* @brief Reads the bad DQ bitmap attribute for both ports of the target rank.
- * @param i_trgt A MCA/MBA/MEM_PORT target.
+ * @param i_trgt A MCA/MBA/MEM_PORT/OCMB_CHIP target.
* @param i_rank Target rank.
* @param o_bitmap DQ bitmap container.
* @return Non-SUCCESS if an internal function fails, SUCCESS otherwise.
@@ -203,7 +203,7 @@ uint32_t getBadDqBitmap( TARGETING::TargetHandle_t i_trgt,
/**
* @brief Writes the bad DQ bitmap attribute for both ports of the target rank.
- * @param i_trgt A MCA/MBA/MEM_PORT target.
+ * @param i_trgt A MCA/MBA/MEM_PORT/OCMB_CHIP target.
* @param i_rank Target rank.
* @param i_bitmap DQ bitmap container.
* @note This is a no-op if DRAM Repairs are disabled in manufacturing.
@@ -215,7 +215,7 @@ uint32_t setBadDqBitmap( TARGETING::TargetHandle_t i_trgt,
/**
* @brief Clears the bad DQ bitmap attribute for all ports of the target rank.
- * @param i_trgt A MCA/MBA/MEM_PORT target.
+ * @param i_trgt A MCA/MBA/MEM_PORT/OCMB_CHIP target.
* @param i_rank Target rank.
* @note This is a no-op if DRAM Repairs are disabled in manufacturing.
* @return Non-SUCCESS if an internal function fails, SUCCESS otherwise.
diff --git a/src/usr/diag/prdf/common/plat/prdfTargetServices.H b/src/usr/diag/prdf/common/plat/prdfTargetServices.H
index bd02cc44c..74ccbbc85 100755
--- a/src/usr/diag/prdf/common/plat/prdfTargetServices.H
+++ b/src/usr/diag/prdf/common/plat/prdfTargetServices.H
@@ -311,7 +311,7 @@ TARGETING::TargetHandle_t getConnectedPeerTarget(
TARGETING::TargetHandle_t i_tgt);
/**
- * @param i_trgt The target MBA, MCA, or MEM_PORT.
+ * @param i_trgt The target MBA, MCA, OCMB_CHIP, or MEM_PORT.
* @param i_rank The target rank.
* @return A list of DIMMs connected to the target and rank.
*/
@@ -319,7 +319,7 @@ TARGETING::TargetHandleList getConnectedDimms( TARGETING::TargetHandle_t i_trgt,
const MemRank & i_rank );
/**
- * @param i_trgt The target MBA, MCA, or MEM_PORT.
+ * @param i_trgt The target MBA, MCA, OCMB_CHIP, or MEM_PORT.
* @param i_rank The target rank.
* @param i_port Port select, only needed for MBA. MCA and MEM_PORT are
* targets equivalent to the port already.
diff --git a/src/usr/diag/prdf/common/plugins/prdfParserUtils.C b/src/usr/diag/prdf/common/plugins/prdfParserUtils.C
index 2409295c1..2f9bdb458 100644
--- a/src/usr/diag/prdf/common/plugins/prdfParserUtils.C
+++ b/src/usr/diag/prdf/common/plugins/prdfParserUtils.C
@@ -151,8 +151,8 @@ uint8_t dq2Symbol<TARGETING::TYPE_MBA>( uint8_t i_dq, uint8_t i_ps )
//------------------------------------------------------------------------------
-template<>
-uint8_t dq2Symbol<TARGETING::TYPE_MCA>( uint8_t i_dq, uint8_t i_ps )
+template<TARGETING::TYPE T>
+uint8_t dq2Symbol( uint8_t i_dq, uint8_t i_ps )
{
uint8_t symbol = SYMBOLS_PER_RANK;
@@ -177,14 +177,12 @@ uint8_t dq2Symbol<TARGETING::TYPE_MCA>( uint8_t i_dq, uint8_t i_ps )
return symbol;
}
-//------------------------------------------------------------------------------
-
-template<>
-uint8_t dq2Symbol<TARGETING::TYPE_MEM_PORT>( uint8_t i_dq, uint8_t i_ps )
-{
- // MEM_PORT case is identical to MCA
- return dq2Symbol<TARGETING::TYPE_MCA>( i_dq, i_ps );
-}
+template
+uint8_t dq2Symbol<TARGETING::TYPE_MCA>( uint8_t i_dq, uint8_t i_ps );
+template
+uint8_t dq2Symbol<TARGETING::TYPE_MEM_PORT>( uint8_t i_dq, uint8_t i_ps );
+template
+uint8_t dq2Symbol<TARGETING::TYPE_OCMB_CHIP>( uint8_t i_dq, uint8_t i_ps );
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemDsd_ipl.C b/src/usr/diag/prdf/plat/mem/prdfMemDsd_ipl.C
index 0e6069315..7abab6368 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemDsd_ipl.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemDsd_ipl.C
@@ -122,15 +122,8 @@ uint32_t DsdEvent<T>::verifySpare( const uint32_t & i_eccAttns,
// Set the bad spare in the VPD. At this point, the chip mark
// should have already been set in the VPD because it was recently
// verified.
- TargetHandle_t bitmapTrgt = iv_chip->getTrgt();
- if ( TYPE_OCMB_CHIP == T )
- {
- ExtensibleChip * bitmapChip = getConnectedChild( iv_chip,
- TYPE_MEM_PORT, iv_mark.getSymbol().getPortSlct() );
- bitmapTrgt = bitmapChip->getTrgt();
- }
MemDqBitmap bitmap;
- o_rc = getBadDqBitmap( bitmapTrgt, iv_rank, bitmap );
+ o_rc = getBadDqBitmap( iv_chip->getTrgt(), iv_rank, bitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap() failed" );
@@ -150,7 +143,7 @@ uint32_t DsdEvent<T>::verifySpare( const uint32_t & i_eccAttns,
}
}
- o_rc = setBadDqBitmap( bitmapTrgt, iv_rank, bitmap );
+ o_rc = setBadDqBitmap( iv_chip->getTrgt(), iv_rank, bitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "setBadDqBitmap() failed" );
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
index 28988f1ab..23f08d6eb 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr_rt.C
@@ -1169,19 +1169,13 @@ 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, rank, dqBitmap );
+ o_rc = getBadDqBitmap( ocmb->getTrgt(), rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x,0x%02x)",
- getHuid(memPort), rank.getKey() );
+ ocmb->getHuid(), rank.getKey() );
break;
}
@@ -1191,7 +1185,7 @@ uint32_t __findChipMarks<TYPE_MEM_PORT>(
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "dqBitmap.isChipMark() failed on 0x%08x "
- "0x%02x", getHuid(memPort), rank.getKey() );
+ "0x%02x", ocmb->getHuid(), rank.getKey() );
break;
}
@@ -1529,20 +1523,14 @@ uint32_t MemTdCtlr<TYPE_OCMB_CHIP>::handleRrFo()
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 memPort = getConnectedChild( ocmbChip->getTrgt(),
- TYPE_MEM_PORT, 0 );
MemDqBitmap dqBitmap;
- o_rc = getBadDqBitmap( memPort, rank, dqBitmap );
+ o_rc = getBadDqBitmap( ocmbChip->getTrgt(), rank, dqBitmap );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "getBadDqBitmap(0x%08x, %d)",
- getHuid(memPort), rank.getMaster() );
+ ocmbChip->getHuid(), rank.getMaster() );
break;
}
OpenPOWER on IntegriCloud