From 9de71650fde36c28681150ed7bef8c986e2db1f1 Mon Sep 17 00:00:00 2001 From: Caleb Palmer Date: Tue, 23 Jul 2019 13:32:01 -0500 Subject: [PATCH] PRD: Axone OMIC to OMI connection and log parser updates Change-Id: I4a1432e79e0ac24d84846d8be2fc1c6f0380f397 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80832 Tested-by: Jenkins Server Reviewed-by: Brian J Stegmiller Reviewed-by: Benjamen G Tyner Reviewed-by: Paul Greenwood Reviewed-by: Zane C Shelley Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81589 Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW --- .../prdf/common/plat/prdfTargetServices.C | 37 ++++++++++++++----- .../prdf/common/plugins/prdfLogParse_common.C | 19 ++++++++++ .../prdf/common/plugins/prdfParserEnums.H | 5 +++ 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/src/usr/diag/prdf/common/plat/prdfTargetServices.C b/src/usr/diag/prdf/common/plat/prdfTargetServices.C index 7fdf2b1e395..ad73ba49ad3 100755 --- a/src/usr/diag/prdf/common/plat/prdfTargetServices.C +++ b/src/usr/diag/prdf/common/plat/prdfTargetServices.C @@ -666,14 +666,30 @@ TargetHandleList getConnAssoc( TargetHandle_t i_target, TYPE i_connType, TargetHandleList o_list; // Default empty list - // Match any class, specified type, and functional. - PredicateCTM predType( CLASS_NA, i_connType ); - PredicateIsFunctional predFunc; - PredicatePostfixExpr predAnd; - predAnd.push(&predType).push(&predFunc).And(); + TYPE trgtType = getTargetType( i_target ); - targetService().getAssociated( o_list, i_target, i_assocType, - TargetService::ALL, &predAnd ); + // OMIC -> OMI and vice versa require special handling. + if ( TYPE_OMIC == trgtType && TYPE_OMI == i_connType ) + { + getChildOmiTargetsByState( o_list, i_target, CLASS_NA, TYPE_OMI, + UTIL_FILTER_FUNCTIONAL ); + } + else if ( TYPE_OMI == trgtType && TYPE_OMIC == i_connType ) + { + getParentOmicTargetsByState( o_list, i_target, CLASS_NA, TYPE_OMIC, + UTIL_FILTER_FUNCTIONAL ); + } + else + { + // Match any class, specified type, and functional. + PredicateCTM predType( CLASS_NA, i_connType ); + PredicateIsFunctional predFunc; + PredicatePostfixExpr predAnd; + predAnd.push(&predType).push(&predFunc).And(); + + targetService().getAssociated( o_list, i_target, i_assocType, + TargetService::ALL, &predAnd ); + } // Sort by target position. std::sort( o_list.begin(), o_list.end(), @@ -983,13 +999,14 @@ TargetHandle_t getConnectedChild( TargetHandle_t i_target, TYPE i_connType, else if ( TYPE_OMIC == trgtType && TYPE_OMI == i_connType ) { // i_connPos is position relative to OMIC (0-2) - for ( auto & trgt : list ) + for ( TargetHandleList::iterator trgtIt = list.begin(); + trgtIt != list.end(); trgtIt++ ) { uint8_t omiPos = 0; - if ( trgt->tryGetAttr(omiPos) && + if ( (*trgtIt)->tryGetAttr(omiPos) && (i_connPos == omiPos) ) { - *itr = trgt; + itr = trgtIt; break; } } diff --git a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C index c6cd47d0bdb..08aa116006a 100644 --- a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C +++ b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C @@ -237,6 +237,18 @@ void getTargetInfo( HUID i_chipId, TARGETING::TYPE & o_targetType, l_node, l_chip, l_chiplet ); break; + case TYPE_OCMB_CHIP: + snprintf( o_chipName, i_sz_chipName, "ocmb(n%dp%d)", + l_node, l_chip ); + break; + + case TYPE_MEM_PORT: + l_chip = l_chip / MAX_PORT_PER_OCMB; + l_chiplet = l_chiplet % MAX_PORT_PER_OCMB; + snprintf( o_chipName, i_sz_chipName, "memport(n%dp%dc%d)", + l_node, l_chip, l_chiplet ); + break; + case TYPE_MCS: l_chip = l_chip / MAX_MCS_PER_PROC; l_chiplet = l_chiplet % MAX_MCS_PER_PROC; @@ -286,6 +298,13 @@ void getTargetInfo( HUID i_chipId, TARGETING::TYPE & o_targetType, l_node, l_chip, l_chiplet ); break; + case TYPE_OMI: + l_chip = l_chip / MAX_OMI_PER_PROC; + l_chiplet = l_chiplet % MAX_OMI_PER_PROC; + snprintf( o_chipName, i_sz_chipName, "omi(n%dp%dc%d)", + l_node, l_chip, l_chiplet ); + break; + case TYPE_MEMBUF: snprintf( o_chipName, i_sz_chipName, "mb(n%dp%d)", l_node, l_chip ); diff --git a/src/usr/diag/prdf/common/plugins/prdfParserEnums.H b/src/usr/diag/prdf/common/plugins/prdfParserEnums.H index cefccd98f75..1001e185f07 100644 --- a/src/usr/diag/prdf/common/plugins/prdfParserEnums.H +++ b/src/usr/diag/prdf/common/plugins/prdfParserEnums.H @@ -109,10 +109,15 @@ enum PositionBounds MAX_OMI_PER_MCC = 2, MAX_OMI_PER_OMIC = 3, + MAX_OMI_PER_MC = 8, + MAX_OMI_PER_PROC = MAX_OMI_PER_MC * MAX_MC_PER_PROC, MAX_OCMB_PER_OMI = 1, MAX_OCMB_PER_MCC = MAX_OCMB_PER_OMI * MAX_OMI_PER_MCC, + // TODO RTC 210072 - Support multiple ports + MAX_PORT_PER_OCMB = 1, + MAX_SUB_PORT = 2, MAX_NPU_PER_PROC = 3,