summaryrefslogtreecommitdiffstats
path: root/src/usr/errl/errlentry.C
diff options
context:
space:
mode:
authorElizabeth Liner <eliner@us.ibm.com>2015-03-13 10:20:44 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-04-09 21:55:16 -0500
commit77f3ab96fd87a9bbecb19aba9f3b48cfb09983bd (patch)
treef2434c7d7383d2144bc13704d283eaf58bdd3415 /src/usr/errl/errlentry.C
parent9f36a6a79aae8d520a1c61348bb74c2133ebc753 (diff)
downloadtalos-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.C29
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
OpenPOWER on IntegriCloud