From 3e8d0ececb96936ad2962ac8d165e97301ad52c4 Mon Sep 17 00:00:00 2001 From: Caleb Palmer Date: Thu, 23 Apr 2020 14:00:08 -0500 Subject: [PATCH] PRD: Fix MPE error path asserts Change-Id: I805585ea540663e80f7a4bae71f7dc0352dc3cbe CQ: SW489980 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/95648 Tested-by: Jenkins Server Reviewed-by: Benjamen G Tyner Reviewed-by: Brian J Stegmiller Reviewed-by: Zane C Shelley Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/96126 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins --- .../diag/prdf/common/plat/mem/prdfMemDqBitmap.C | 13 ++++++++++--- .../prdf/common/plat/prdfPlatServices_common.C | 2 ++ src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C | 16 ---------------- src/usr/diag/prdf/plat/prdfPlatServices.C | 5 +++-- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C index 5a729efd8db..9c3316e1450 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemDqBitmap.C @@ -583,9 +583,16 @@ uint32_t MemDqBitmap::isSpareAvailable( uint8_t i_portSlct, bool & o_dramSpare, } // Check for ECC spare - uint8_t eccDqBits = - iv_data.at(ECC_SPARE_PORT).bitmap[ECC_SPARE_BYTE]; - o_eccSpare = ( 0 == (eccDqBits & 0x0f) ); + // Note: ECC spares only exist when we have DIMM pairs. We don't + // want to check the iv_data map for data that won't exist + // if there is no DIMM on the ECC_SPARE_PORT, so we confirm + // that a paired DIMM exists here first. + if ( nullptr != getConnectedDimm(iv_trgt, iv_rank, ECC_SPARE_PORT) ) + { + uint8_t eccDqBits = + iv_data.at(ECC_SPARE_PORT).bitmap[ECC_SPARE_BYTE]; + o_eccSpare = ( 0 == (eccDqBits & 0x0f) ); + } } else { diff --git a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C index 7f871030829..6d55d7a7b63 100644 --- a/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C +++ b/src/usr/diag/prdf/common/plat/prdfPlatServices_common.C @@ -1239,6 +1239,7 @@ uint32_t isDramSparingEnabled( TARGETING::TargetHandle_t i_trgt, uint32_t o_rc = SUCCESS; o_spareEnable = false; + /* TODO RTC 199032 - DRAM Sparing disabled for now do { TargetHandle_t dimm = getConnectedDimm( i_trgt, i_rank, i_ps ); @@ -1262,6 +1263,7 @@ uint32_t isDramSparingEnabled( TARGETING::TargetHandle_t i_trgt, o_spareEnable = (TARGETING::MEM_EFF_DIMM_SPARE_NO_SPARE != cnfg); }while(0); + */ return o_rc; diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C index 5d310c51bf7..a94f2550009 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C @@ -434,13 +434,7 @@ void MemTdCtlr::collectStateCaptureData( STEP_CODE_DATA_STRUCT & io_sc, // Get the version to use. uint8_t version = TD_CTLR_DATA::VERSION_1; - bool isNimbus = false; if ( MODEL_NIMBUS == getChipModel(getMasterProc()) ) - { - version = TD_CTLR_DATA::VERSION_2; - isNimbus = true; - } - else if ( MODEL_AXONE == getChipModel(getMasterProc()) ) { version = TD_CTLR_DATA::VERSION_2; } @@ -486,11 +480,6 @@ void MemTdCtlr::collectStateCaptureData( STEP_CODE_DATA_STRUCT & io_sc, if ( TD_CTLR_DATA::VERSION_2 == version ) { curPort = iv_curProcedure->getChip()->getPos() % MAX_MCA_PER_MCBIST; - if ( !isNimbus ) - { - TargetHandle_t portTrgt = iv_curProcedure->getChip()->getTrgt(); - curPort = portTrgt->getAttr(); - } } } @@ -523,11 +512,6 @@ void MemTdCtlr::collectStateCaptureData( STEP_CODE_DATA_STRUCT & io_sc, if ( TD_CTLR_DATA::VERSION_2 == version ) { itPort = queue[n]->getChip()->getPos() % MAX_MCA_PER_MCBIST; - if ( !isNimbus ) - { - TargetHandle_t portTrgt = queue[n]->getChip()->getTrgt(); - itPort = portTrgt->getAttr(); - } } bsb.setFieldJustify( pos, 3, itMrnk ); pos+=3; diff --git a/src/usr/diag/prdf/plat/prdfPlatServices.C b/src/usr/diag/prdf/plat/prdfPlatServices.C index 0ad247134d3..a1baa5da38d 100644 --- a/src/usr/diag/prdf/plat/prdfPlatServices.C +++ b/src/usr/diag/prdf/plat/prdfPlatServices.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2019 */ +/* Contributors Listed Below - COPYRIGHT 2016,2020 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -715,7 +715,7 @@ bool isRowRepairEnabled( ExtensibleChip * i_chip, PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() ); bool o_isEnabled = false; - + /* TODO RTC 199035 do { // Don't do row repair if DRAM repairs is disabled. @@ -741,6 +741,7 @@ bool isRowRepairEnabled( ExtensibleChip * i_chip, } }while(0); + */ return o_isEnabled;