summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-05-22 16:17:06 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2019-06-28 14:09:04 -0500
commit8bc5e2c767934c5f9ea9ab8f26451a3e4bb9c431 (patch)
tree41113cb009fe1526059a44f1a9c9e1c6add79b5b /src/usr/diag/prdf/common
parent6060c1c88907e5ae512089cc2a110e7934a94a2c (diff)
downloadtalos-hostboot-8bc5e2c767934c5f9ea9ab8f26451a3e4bb9c431.tar.gz
talos-hostboot-8bc5e2c767934c5f9ea9ab8f26451a3e4bb9c431.zip
PRD: Add OCMB support for BAD_DQ_BITMAP code
Change-Id: Ie7edc1f1c9a95647e45508ebd53ad424dc6eb718 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/77798 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: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79673 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/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
7 files changed, 32 insertions, 27 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 );
//------------------------------------------------------------------------------
OpenPOWER on IntegriCloud