summaryrefslogtreecommitdiffstats
path: root/src/include/usr/errl/errludtarget.H
diff options
context:
space:
mode:
authorMike Jones <mjjones@us.ibm.com>2013-01-22 09:41:25 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-02-08 16:49:45 -0600
commitcaf328ccd931de4ce4e4d285d1a4e5ddd151abb5 (patch)
tree650c28362fef4b7fd3d8e727d2b13e25f119434b /src/include/usr/errl/errludtarget.H
parent7c50ac8fa046052334326fd4f3c8447cb0c9514d (diff)
downloadtalos-hostboot-caf328ccd931de4ce4e4d285d1a4e5ddd151abb5.tar.gz
talos-hostboot-caf328ccd931de4ce4e4d285d1a4e5ddd151abb5.zip
ERRL: Create Hostboot error log SRC/UD parser and deliver to FSP bld
A new script called genErrlParsers will scan the Hostboot code for error log tags and create a SRC parser for each component. The script will also scan the Hostboot code for plugin directories containing User Detail Data parsers and will create a makefile that is used by the FSP to build each component's SRC/UD parser. Change-Id: I7113f6cd8069447a1caaa199aff199b663d59072 RTC: 47518 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2975 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr/errl/errludtarget.H')
-rw-r--r--src/include/usr/errl/errludtarget.H224
1 files changed, 3 insertions, 221 deletions
diff --git a/src/include/usr/errl/errludtarget.H b/src/include/usr/errl/errludtarget.H
index 3db4b89cb..67ba891c3 100644
--- a/src/include/usr/errl/errludtarget.H
+++ b/src/include/usr/errl/errludtarget.H
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012 */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
/* */
/* p1 */
/* */
@@ -26,16 +26,12 @@
/**
* @file errludTarget.H
*
- * Defines the following classes:
- *
- * ErrlUserDetailsTarget: Adds Target FFDC to an error log as user detail data
- * ErrlUserDetailsParserTarget: Parses Target FFDC user detail in an error log
+ * Defines the ErrlUserDetailsTarget class that adds target FFDC to an
+ * error log as user detail data
*/
#include <errl/errluserdetails.H>
-#ifndef PARSER
-
// Forward reference
namespace TARGETING
{
@@ -75,219 +71,5 @@ private:
}
-#else // (if PARSER defined)
-
-#include <string.h>
-
-namespace ERRORLOG
-{
-
-/**
- * @class ErrlUserDetailsParserTarget
- *
- * Parses Target FFDC user detail in an error log
- */
-class ErrlUserDetailsParserTarget : public ErrlUserDetailsParser
-{
-public:
- /**
- * @brief Constructor
- */
- ErrlUserDetailsParserTarget() {}
-
- /**
- * @brief Destructor
- */
- virtual ~ErrlUserDetailsParserTarget() {}
-
- /**
- * @brief Parses Target user detail data from an error log
- *
- * @param i_version Version of the data
- * @param i_parse ErrlUsrParser object for outputting information
- * @param i_pBuffer Pointer to buffer containing detail data
- * @param i_buflen Length of the buffer
- */
- virtual void parse(errlver_t i_version,
- ErrlUsrParser & i_parser,
- void * i_pBuffer,
- const uint32_t i_buflen) const
- {
- i_parser.PrintString("Target data", NULL);
- const char *attrData;
- uint32_t i = 0;
-
- // errlog data
- uint8_t *l_ptr = static_cast<uint8_t *>(i_pBuffer);
-
- // TODO: needs to be updated to handle merged records
-
- if (*l_ptr == 1) // special - master
- {
- i_parser.PrintString(NULL, "MASTER_PROCESSOR_CHIP_TARGET_SENTINEL");
- }
- else
- {
- l_ptr += sizeof(uint8_t); // past the marker
-
- // first 4 are always the same
- if (i_buflen >= sizeof(uint32_t) + 3 * sizeof(uint8_t))
- {
- char sHuid[12];
- sprintf(sHuid, "0x%x",*((uint32_t *)l_ptr));
- i_parser.PrintString("ATTR_HUID", sHuid);
- i += sizeof(uint32_t);
- l_ptr += sizeof(uint32_t);
-
- // CLASS
- switch (*l_ptr) {
- case 0x00: { attrData = "CLASS_NA"; break; }
- case 0x01: { attrData = "CLASS_CARD"; break; }
- case 0x02: { attrData = "CLASS_ENC"; break; }
- case 0x03: { attrData = "CLASS_CHIP"; break; }
- case 0x04: { attrData = "CLASS_UNIT"; break; }
- case 0x05: { attrData = "CLASS_DEV"; break; }
- case 0x06: { attrData = "CLASS_SYS"; break; }
- case 0x07: { attrData = "CLASS_LOGICAL_CARD"; break; }
- case 0x08: { attrData = "CLASS_MAX"; break; }
- default: { attrData = "UNKNOWN CLASS"; break; }
- } // switch
- i_parser.PrintString("ATTR_CLASS", attrData);
- i ++;
- l_ptr ++;
-
- // TYPE
- switch (*l_ptr) {
- // TODO: RTC 50828: make these build-time dynamic based
- // on values in obj/genfiles/attributeenums.H
- case 0x00: { attrData = "TYPE_NA"; break; }
- case 0x01: { attrData = "TYPE_SYS"; break; }
- case 0x02: { attrData = "TYPE_NODE"; break; }
- case 0x03: { attrData = "TYPE_DIMM"; break; }
- case 0x04: { attrData = "TYPE_MEMBUF"; break; }
- case 0x05: { attrData = "TYPE_PROC"; break; }
- case 0x06: { attrData = "TYPE_EX"; break; }
- case 0x07: { attrData = "TYPE_CORE"; break; }
- case 0x08: { attrData = "TYPE_L2"; break; }
- case 0x09: { attrData = "TYPE_L3"; break; }
- case 0x0A: { attrData = "TYPE_L4"; break; }
- case 0x0B: { attrData = "TYPE_MCS"; break; }
- case 0x0C: { attrData = "TYPE_MBS"; break; }
- case 0x0D: { attrData = "TYPE_MBA"; break; }
- case 0x0E: { attrData = "TYPE_XBUS"; break; }
- case 0x0F: { attrData = "TYPE_ABUS"; break; }
- case 0x10: { attrData = "TYPE_PCI"; break; }
- case 0x11: { attrData = "TYPE_DPSS"; break; }
- case 0x12: { attrData = "TYPE_APSS"; break; }
- case 0x13: { attrData = "TYPE_OCC"; break; }
- case 0x14: { attrData = "TYPE_PSI"; break; }
- case 0x15: { attrData = "TYPE_FSP"; break; }
- case 0x16: { attrData = "TYPE_PNOR"; break; }
- case 0x17: { attrData = "TYPE_LAST_IN_RANGE"; break; }
- default: { attrData = "UNKNOWN TYPE"; break; }
- } // switch
- i_parser.PrintString("ATTR_TYPE", attrData);
- i++;
- l_ptr++;
-
- // MODEL
- switch (*l_ptr) {
- // TODO: RTC 50828: make these build-time dynamic based
- // on values in obj/genfiles/attributeenums.H
- case 0x00: { attrData = "MODEL_NA"; break; }
- case 0x10: { attrData = "MODEL_RESERVED"; break; }
- case 0x11: { attrData = "MODEL_VENICE"; break; }
- case 0x12: { attrData = "MODEL_MURANO"; break; }
- case 0x30: { attrData = "MODEL_CENTAUR"; break; }
- case 0x50: { attrData = "MODEL_JEDEC"; break; }
- case 0x51: { attrData = "MODEL_CDIMM"; break; }
- case 0x70: { attrData = "MODEL_POWER8"; break; }
- default: { attrData = "UNKNOWN MODEL"; break; }
- } // switch
- i_parser.PrintString("ATTR_MODEL", attrData);
- i++;
- l_ptr++;
- }
-
- for (; i < i_buflen; )
- {
- if ((*l_ptr == 0x15) || // ATTR_PHYS_PATH
- (*l_ptr == 0x16)) // ATTR_AFFINITY_PATH
- {
- l_ptr++;
- const char *pathString;
- char outString[128];
- // from targeting/common/entitypath.[CH]
- // entityPath is PATH_TYPE:4, NumberOfElements:4,
- // [Element, Instance#]
- // PATH_TYPE
- const uint8_t pathTypeLength = *((uint8_t *)l_ptr);
- l_ptr++;
- const uint8_t pathType = (pathTypeLength & 0xF0) >> 4;
- switch (pathType) {
- case 0x01: pathString = "Logical:"; break;
- case 0x02: pathString = "Physical:"; break;
- case 0x03: pathString = "Device:"; break;
- case 0x04: pathString = "Power:"; break;
- default: pathString = "Unknown:"; break;
- }
- uint32_t dataSize = sprintf(outString, "%s",pathString);
- const uint8_t pathSize = (pathTypeLength & 0x0F);
- uint8_t *lElementInstance = ((uint8_t *)l_ptr);
- l_ptr += pathSize * sizeof(uint8_t);
- for (uint32_t j=0;j<pathSize;j += 2) {
- switch (lElementInstance[j]) {
- // TODO: RTC 50828: make these build-time dynamic based
- // on values in obj/genfiles/attributeenums.H
- case 0x01: pathString = "/Sys"; break;
- case 0x02: pathString = "/Node"; break;
- case 0x03: pathString = "/DIMM"; break;
- case 0x04: pathString = "/Membuf"; break;
- case 0x05: pathString = "/Proc"; break;
- case 0x06: pathString = "/EX"; break;
- case 0x07: pathString = "/Core"; break;
- case 0x08: pathString = "/L2"; break;
- case 0x09: pathString = "/L3"; break;
- case 0x0A: pathString = "/L4"; break;
- case 0x0B: pathString = "/MCS"; break;
- case 0x0C: pathString = "/MBS"; break;
- case 0x0D: pathString = "/MBA"; break;
- case 0x0E: pathString = "/XBUS"; break;
- case 0x0F: pathString = "/ABUS"; break;
- case 0x10: pathString = "/PCI"; break;
- case 0x11: pathString = "/DPSS"; break;
- case 0x12: pathString = "/APSS"; break;
- case 0x13: pathString = "/OCC"; break;
- case 0x14: pathString = "/PSI"; break;
- case 0x15: pathString = "/FSP"; break;
- case 0x16: pathString = "/PNOR"; break;
- default: pathString = "/Unknown"; break;
- } // switch
- // copy next part in, overwritting previous terminator
- dataSize += sprintf(outString + dataSize, "%s%d",pathString,lElementInstance[j+1]);
- } // for
- if (*l_ptr == 0x15) // ATTR_PHYS_PATH
- {
- i_parser.PrintString("ATTR_PHYS_PATH", outString);
- }
- else
- {
- i_parser.PrintString("ATTR_AFFINITY_PATH", outString);
- }
- }
- } // for
- }
- } // parse()
-
-private:
- // Disabled
- ErrlUserDetailsParserTarget(const ErrlUserDetailsParserTarget &);
- ErrlUserDetailsParserTarget & operator=(
- const ErrlUserDetailsParserTarget &);
-};
-
-}
-
-#endif
#endif
OpenPOWER on IntegriCloud