summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMike Jones <mjjones@us.ibm.com>2013-03-22 16:00:47 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-04-04 17:08:36 -0500
commitd80544e716c93297feb4c64fceabcdec6c2efbc7 (patch)
treec1652e24fd8487cbf5ce6fdc67734938c2f28a4e /src/include
parentf3af02b13688f74136c9983fb9919bf64b9eb304 (diff)
downloadtalos-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.H72
-rw-r--r--src/include/usr/hwpf/fapi/fapiReturnCode.H42
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
OpenPOWER on IntegriCloud