diff options
author | Mike Jones <mjjones@us.ibm.com> | 2013-01-22 09:41:25 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-02-08 16:49:45 -0600 |
commit | caf328ccd931de4ce4e4d285d1a4e5ddd151abb5 (patch) | |
tree | 650c28362fef4b7fd3d8e727d2b13e25f119434b /src/include/usr/errl/errludtarget.H | |
parent | 7c50ac8fa046052334326fd4f3c8447cb0c9514d (diff) | |
download | talos-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.H | 224 |
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 |