diff options
author | Elizabeth Liner <eliner@us.ibm.com> | 2015-03-13 10:20:44 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-04-09 21:55:16 -0500 |
commit | 77f3ab96fd87a9bbecb19aba9f3b48cfb09983bd (patch) | |
tree | f2434c7d7383d2144bc13704d283eaf58bdd3415 /src/usr/errl/errlentry.C | |
parent | 9f36a6a79aae8d520a1c61348bb74c2133ebc753 (diff) | |
download | talos-hostboot-77f3ab96fd87a9bbecb19aba9f3b48cfb09983bd.tar.gz talos-hostboot-77f3ab96fd87a9bbecb19aba9f3b48cfb09983bd.zip |
Added support for adding the chip ECID to error logs with HWcallouts
Change-Id: I158b25db047ef9edf2908a6cad53e673ab062875
RTC:122888
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16475
Tested-by: Jenkins Server
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/errl/errlentry.C')
-rw-r--r-- | src/usr/errl/errlentry.C | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/usr/errl/errlentry.C b/src/usr/errl/errlentry.C index 5469a2268..93c21010b 100644 --- a/src/usr/errl/errlentry.C +++ b/src/usr/errl/errlentry.C @@ -42,6 +42,8 @@ #include <errl/errludcallout.H> #include <errl/errlreasoncodes.H> #include <errl/errludstring.H> +#include <errl/errluserdetails.H> +#include <errl/errludattribute.H> #include <trace/interface.H> #include <arch/ppc.H> #include <hwas/common/hwasCallout.H> @@ -549,6 +551,33 @@ void ErrlEntry::addHwCallout(const TARGETING::Target *i_target, #endif TARGETING::EntityPath ep; TARGETING::TYPE l_type = i_target->getAttr<TARGETING::ATTR_TYPE>(); + + TARGETING::TYPE l_type_ecid = l_type; + const TARGETING::Target* l_parentTarget = i_target; + if((l_type_ecid != TARGETING::TYPE_MEMBUF) || + (l_type_ecid != TARGETING::TYPE_PROC) || + (l_type_ecid != TARGETING::TYPE_NODE) + ) + { + //since this returns NULL if the parent is not found, + // we need a placeholder + const TARGETING::Target* l_tempParentTarget = + getParentChip(l_parentTarget); + if(l_tempParentTarget != NULL) + { + l_parentTarget = l_tempParentTarget; + l_type_ecid = l_parentTarget->getAttr<TARGETING::ATTR_TYPE>(); + } + } + //if we have found a type_membuf or type_proc, store the ecid + //otherwise, (type_node), do nothing. + if(l_type_ecid == TARGETING::TYPE_MEMBUF || + l_type_ecid == TARGETING::TYPE_PROC) + { + ErrlUserDetailsAttribute(l_parentTarget, + TARGETING::ATTR_ECID).addToLog(this); + } + if (l_type == TARGETING::TYPE_CORE) { //IF the type being garded is a Core the associated EX Chiplet |