From aa5ff65d1a960643a9bb6633921ed3b95ea34919 Mon Sep 17 00:00:00 2001 From: Zane Shelley Date: Thu, 22 Jun 2017 11:36:15 -0500 Subject: [PATCH] PRD: fixed error log parsing for MCA DQs MCAs only have one DQ per symbol where MBA have two per symbol. Change-Id: I4ecf5e9f9b7406eb6cc997807e2c46c260d03736 CQ: SW392855 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42298 Tested-by: Jenkins Server Reviewed-by: Caleb N. Palmer Reviewed-by: Benjamin J. Weisenbeck Reviewed-by: Brian J. Stegmiller Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42427 Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins --- .../diag/prdf/common/plat/mem/prdfMemUtils.C | 2 +- .../prdf/common/plugins/prdfMemLogParse.C | 45 +++++++++++-------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C index 91d3363037d..124c4a6d845 100755 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C @@ -144,7 +144,7 @@ int32_t collectCeStats( ExtensibleChip * i_chip, SymbolData symData; symData.symbol = MemSymbol::fromSymbol( mcaTrgt, i_rank, - sym, CEN_SYMBOL::BOTH_SYMBOL_DQS ); + sym, CEN_SYMBOL::ODD_SYMBOL_DQ ); if ( !symData.symbol.isValid() ) { PRDF_ERR( PRDF_FUNC "MemSymbol() failed: symbol=%d", diff --git a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C index d39751f56f0..18d61550f53 100644 --- a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C +++ b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C @@ -2931,30 +2931,39 @@ void addDramSiteString( const MemoryMruData::ExtendedData & i_extMemMru, } else // IS DIMMs { - char tmp[DATA_SIZE] = { '\0' }; - // Add DQ info. + char tmp[DATA_SIZE] = { '\0' }; strcat( io_data, "DQ:" ); - switch ( mm.s.pins ) + + if ( mm.s.isMca ) // MCA { - case EVEN_SYMBOL_DQ: - snprintf( tmp, DATA_SIZE, "%d", i_extMemMru.dqMapping[dqIdx] ); - strcat( io_data, tmp ); - break; + // There is only one DQ per symbol. + snprintf( tmp, DATA_SIZE, "%d", i_extMemMru.dqMapping[dqIdx] ); + } + else // MBA + { + switch ( mm.s.pins ) + { + case EVEN_SYMBOL_DQ: + snprintf( tmp, DATA_SIZE, "%d", + i_extMemMru.dqMapping[dqIdx] ); + break; - case ODD_SYMBOL_DQ: - snprintf( tmp, DATA_SIZE, "%d", i_extMemMru.dqMapping[dqIdx+1]); - strcat( io_data, tmp ); - break; + case ODD_SYMBOL_DQ: + snprintf( tmp, DATA_SIZE, "%d", + i_extMemMru.dqMapping[dqIdx+1]); + break; - case BOTH_SYMBOL_DQS: - case NO_SYMBOL_DQS: - snprintf( tmp, DATA_SIZE, "%d,%d", - i_extMemMru.dqMapping[dqIdx], - i_extMemMru.dqMapping[dqIdx+1] ); - strcat( io_data, tmp ); - break; + case BOTH_SYMBOL_DQS: + case NO_SYMBOL_DQS: + snprintf( tmp, DATA_SIZE, "%d,%d", + i_extMemMru.dqMapping[dqIdx], + i_extMemMru.dqMapping[dqIdx+1] ); + break; + } } + + strcat( io_data, tmp ); } }