Skip to content

Commit

Permalink
PRD: Axone OMIC to OMI connection and log parser updates
Browse files Browse the repository at this point in the history
Change-Id: I4a1432e79e0ac24d84846d8be2fc1c6f0380f397
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80832
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: Paul Greenwood <paul.greenwood@ibm.com>
Reviewed-by: Zane C Shelley <zshelle@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81589
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>
  • Loading branch information
cnpalmer authored and zane131 committed Aug 5, 2019
1 parent ceef10b commit 9de7165
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 10 deletions.
37 changes: 27 additions & 10 deletions src/usr/diag/prdf/common/plat/prdfTargetServices.C
Expand Up @@ -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(),
Expand Down Expand Up @@ -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<ATTR_OMI_DL_GROUP_POS>(omiPos) &&
if ( (*trgtIt)->tryGetAttr<ATTR_OMI_DL_GROUP_POS>(omiPos) &&
(i_connPos == omiPos) )
{
*itr = trgt;
itr = trgtIt;
break;
}
}
Expand Down
19 changes: 19 additions & 0 deletions src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
Expand Up @@ -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;
Expand Down Expand Up @@ -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 );
Expand Down
5 changes: 5 additions & 0 deletions src/usr/diag/prdf/common/plugins/prdfParserEnums.H
Expand Up @@ -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,
Expand Down

0 comments on commit 9de7165

Please sign in to comment.