diff options
author | Caleb Palmer <cnpalmer@us.ibm.com> | 2019-05-22 16:17:06 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2019-06-28 14:09:04 -0500 |
commit | 8bc5e2c767934c5f9ea9ab8f26451a3e4bb9c431 (patch) | |
tree | 41113cb009fe1526059a44f1a9c9e1c6add79b5b /src/usr/diag/prdf/common | |
parent | 6060c1c88907e5ae512089cc2a110e7934a94a2c (diff) | |
download | talos-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')
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 ); //------------------------------------------------------------------------------ |