summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-07-23 13:32:01 -0500
committerZane C Shelley <zshelle@us.ibm.com>2019-08-05 11:16:41 -0500
commit9de71650fde36c28681150ed7bef8c986e2db1f1 (patch)
tree3b35e918316e2c1357c1467680a776ffbfdad38f /src/usr
parentceef10b02ff071edf0cbc75a86f8f94bdcf6617d (diff)
downloadtalos-hostboot-9de71650fde36c28681150ed7bef8c986e2db1f1.tar.gz
talos-hostboot-9de71650fde36c28681150ed7bef8c986e2db1f1.zip
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 <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>
Diffstat (limited to 'src/usr')
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfTargetServices.C37
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfLogParse_common.C19
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfParserEnums.H5
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 7fdf2b1e3..ad73ba49a 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<ATTR_OMI_DL_GROUP_POS>(omiPos) &&
+ if ( (*trgtIt)->tryGetAttr<ATTR_OMI_DL_GROUP_POS>(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 c6cd47d0b..08aa11600 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 cefccd98f..1001e185f 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,
OpenPOWER on IntegriCloud