diff options
| author | Mike Jones <mjjones@us.ibm.com> | 2013-03-22 16:00:47 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-04-04 17:08:36 -0500 |
| commit | d80544e716c93297feb4c64fceabcdec6c2efbc7 (patch) | |
| tree | c1652e24fd8487cbf5ce6fdc67734938c2f28a4e /src/include | |
| parent | f3af02b13688f74136c9983fb9919bf64b9eb304 (diff) | |
| download | talos-hostboot-d80544e716c93297feb4c64fceabcdec6c2efbc7.tar.gz talos-hostboot-d80544e716c93297feb4c64fceabcdec6c2efbc7.zip | |
HWPF: Support Procedure Callouts
Change-Id: I250472ba4125944ba17433c759c915b30a9bc93e
RTC: 50323
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3699
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/usr/hwpf/fapi/fapiErrorInfo.H | 72 | ||||
| -rw-r--r-- | src/include/usr/hwpf/fapi/fapiReturnCode.H | 42 |
2 files changed, 93 insertions, 21 deletions
diff --git a/src/include/usr/hwpf/fapi/fapiErrorInfo.H b/src/include/usr/hwpf/fapi/fapiErrorInfo.H index 6df78114d..6fa4d404d 100644 --- a/src/include/usr/hwpf/fapi/fapiErrorInfo.H +++ b/src/include/usr/hwpf/fapi/fapiErrorInfo.H @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2012 */ +/* COPYRIGHT International Business Machines Corp. 2011,2013 */ /* */ /* p1 */ /* */ @@ -38,6 +38,7 @@ * mjjones 08/14/2012 Merge Callout/Deconfig/Gard * structures into one * mjjones 09/19/2012 Replace FFDC type with ID + * mjjones 03/22/2013 Support Procedure Callouts */ #ifndef FAPIERRORINFO_H_ @@ -51,6 +52,45 @@ namespace fapi { /** + * @enum ProcedureCallout + * + * This enumeration defines the possible Procedure Callouts + * These instruct the customer/customer-engineer what to do + * + * Note that platform code may depend on the enum values starting at 0 and + * incrementing in order to efficiently convert to a platform callout value + * so do not reorder without consulting all platforms + */ +namespace ProcedureCallouts +{ +enum ProcedureCallout +{ + CODE = 0, // Code problem + LVL_SUPPORT = 1, // Call next level of support + MEMORY_PLUGGING_ERROR = 2, // DIMM Plugging error +}; +} + +/** + * @enum CalloutPriority + * + * This enumeration defines the possible Procedure and Target callout priorities + * + * Note that platform code may depend on the enum values starting at 0 and + * incrementing in order to efficiently convert to a platform priority value + * so do not reorder without consulting all platforms + */ +namespace CalloutPriorities +{ +enum CalloutPriority +{ + LOW = 0, + MEDIUM = 1, + HIGH = 2, +}; +} + +/** * @class ErrorInfoFfdc * * This class contains a copy of some FFDC data @@ -108,15 +148,24 @@ private: }; /** - * @enum CalloutPriority + * @struct ErrorInfoProcedureCallout * - * This enumeration defines the possible callout priorities + * This struct contains a procedure to callout */ -enum CalloutPriority +struct ErrorInfoProcedureCallout { - PRI_LOW = 1, - PRI_MEDIUM = 2, - PRI_HIGH = 3, + /** + * @brief Constructor. + * + * @param[in] i_procedure Procedure to callout + * @param[in] i_calloutPriority Priority of callout + */ + ErrorInfoProcedureCallout( + const ProcedureCallouts::ProcedureCallout i_procedure, + const CalloutPriorities::CalloutPriority i_calloutPriority); + + ProcedureCallouts::ProcedureCallout iv_procedure; + CalloutPriorities::CalloutPriority iv_calloutPriority; }; /** @@ -138,7 +187,7 @@ struct ErrorInfoCDG // Callout Information bool iv_callout; - CalloutPriority iv_calloutPriority; + CalloutPriorities::CalloutPriority iv_calloutPriority; // Deconfigure Information bool iv_deconfigure; @@ -176,6 +225,13 @@ struct ErrorInfo typedef std::vector<ErrorInfoFfdc *>::iterator ErrorInfoFfdcItr_t; typedef std::vector<ErrorInfoFfdc *>::const_iterator ErrorInfoFfdcCItr_t; + // Vector of procedures to callout + std::vector<ErrorInfoProcedureCallout *> iv_procedureCallouts; + typedef std::vector<ErrorInfoProcedureCallout *>::iterator + ErrorInfoProcedureCalloutItr_t; + typedef std::vector<ErrorInfoProcedureCallout *>::const_iterator + ErrorInfoProcedureCalloutCItr_t; + // Vector of targets to callout/deconfigure/GARD std::vector<ErrorInfoCDG *> iv_CDGs; typedef std::vector<ErrorInfoCDG *>::iterator ErrorInfoCDGItr_t; diff --git a/src/include/usr/hwpf/fapi/fapiReturnCode.H b/src/include/usr/hwpf/fapi/fapiReturnCode.H index 6c48aac10..40bb55ff5 100644 --- a/src/include/usr/hwpf/fapi/fapiReturnCode.H +++ b/src/include/usr/hwpf/fapi/fapiReturnCode.H @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2012 */ +/* COPYRIGHT International Business Machines Corp. 2011,2013 */ /* */ /* p1 */ /* */ @@ -45,6 +45,7 @@ * brianh 07/31/2012 performance/size optimizations * mjjones 08/14/2012 Created getCreateReturnCodeDataRef * mjjones 09/19/2012 Add FFDC ID to error info + * mjjones 03/22/2013 Support Procedure Callouts */ #ifndef FAPIRETURNCODE_H_ @@ -277,10 +278,11 @@ public: */ enum ErrorInfoType { - EI_TYPE_FFDC = 1, - EI_TYPE_CALLOUT = 2, - EI_TYPE_DECONF = 3, - EI_TYPE_GARD = 4, + EI_TYPE_FFDC = 1, + EI_TYPE_PROCEDURE_CALLOUT = 2, + EI_TYPE_CALLOUT = 3, + EI_TYPE_DECONF = 4, + EI_TYPE_GARD = 5, }; /** @@ -291,12 +293,13 @@ public: */ struct ErrorInfoEntry { - uint8_t iv_type; // The type of ErrorInfo (from ErrorInfoType enum) - uint8_t iv_object; // Which object in the i_pObjects array the - // ErrorInfoEntry refers to - int16_t iv_data1; // EI_TYPE_FFDC : Size of FFDC - // EI_TYPE_CALLOUT: CalloutPriority - uint32_t iv_data2; // EI_TYPE_FFDC : FFDC Id + uint8_t iv_type; // The type of ErrorInfo (from ErrorInfoType enum) + uint8_t iv_object; // Which object in the i_pObjects array the + // ErrorInfoEntry refers to + int16_t iv_data1; // EI_TYPE_FFDC : Size of FFDC + // EI_TYPE_[PROCEDURE_]CALLOUT: CalloutPriority + uint32_t iv_data2; // EI_TYPE_FFDC : FFDC Id + // EI_TYPE_PROCEDURE_CALLOUT : ProcedureCallout }; /** @@ -377,6 +380,18 @@ private: void forgetData(); /** + * @brief Add a procedure to callout to the ErrorInfo + * + * This is called by addErrorInfo + * + * @param[in] i_procedure The procedure to callout + * @param[in] i_priority The priority of the callout + */ + void addEIProcedureCallout( + const ProcedureCallouts::ProcedureCallout i_procedure, + const CalloutPriorities::CalloutPriority i_priority); + + /** * @brief Add a target to callout to the ErrorInfo * * This is called by addErrorInfo @@ -384,8 +399,9 @@ private: * @param[in] i_target Reference to the target to callout. * @param[in] i_priority The priority of the callout */ - void addEICallout(const Target & i_target, - const CalloutPriority i_priority); + void addEICallout( + const Target & i_target, + const CalloutPriorities::CalloutPriority i_priority); /** * @brief Add a target to deconfigure to the ErrorInfo |

