summaryrefslogtreecommitdiffstats
path: root/src/include/usr/hwas
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2018-08-06 08:41:35 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-08-19 22:24:57 -0500
commit5675c7315db0c79fa464149ea38cde09f3195130 (patch)
tree0245f5a028edc609a5b9e0e6bf76203319189daa /src/include/usr/hwas
parent207de5cbd30e805f2f15dc9f2f4bc7e63e774796 (diff)
downloadtalos-hostboot-5675c7315db0c79fa464149ea38cde09f3195130.tar.gz
talos-hostboot-5675c7315db0c79fa464149ea38cde09f3195130.zip
Add flag to HWAS Callout for SMP repair indicator
Used one of the reserved bytes of the callout structure to hold a flag that will indicate if the SMP bus being called out is completely down, and thus eligible for concurrent repair. Change-Id: I299e3393529e811aa006a087de51165b79038201 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63946 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/usr/hwas')
-rw-r--r--src/include/usr/hwas/common/hwasCallout.H33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/include/usr/hwas/common/hwasCallout.H b/src/include/usr/hwas/common/hwasCallout.H
index 01275a012..54d3f4fd8 100644
--- a/src/include/usr/hwas/common/hwasCallout.H
+++ b/src/include/usr/hwas/common/hwasCallout.H
@@ -171,7 +171,15 @@ enum sensorTypeEnum
GPU_MEMORY_TEMP_SENSOR = 3,
};
-//
+//-- Flags
+typedef uint8_t CalloutFlag_t;
+// No extra flags are present
+const uint8_t FLAG_NONE = 0;
+// SMP link is down, therefore its pair cannot be repaired
+const uint8_t FLAG_LINK_DOWN = 1;
+
+//-- Callout types
+typedef uint8_t CalloutType_t;
const uint8_t HW_CALLOUT = 0x01;
const uint8_t PROCEDURE_CALLOUT = 0x02;
const uint8_t BUS_CALLOUT = 0x03;
@@ -182,12 +190,20 @@ const uint8_t I2C_DEVICE_CALLOUT = 0x07;
const uint8_t TARGET_IS_SENTINEL = 0xF0;
+/**
+ * @brief Defines the data layout that is passed around the code as part
+ * of en error log to specify a callout. Note that this structure
+ * is used in messages between Hostboot and FSP, and it is saved
+ * to persistent storage inside error logs. This means that the
+ * size cannot change and the fields cannot be reordered.
+ */
typedef struct callout_ud
{
- uint8_t type;
- uint8_t pad[3];
+ CalloutType_t type; //uint8_t
+ CalloutFlag_t flag; //uint8_t
+ uint8_t pad[2];
callOutPriority priority; // uint32_t
- union {
+ union { // 3 x uint32
struct { // type == HW_CALLOUT
DeconfigEnum deconfigState; // uint32_t
GARD_ErrorType gardErrorType; // uint32_t
@@ -196,9 +212,13 @@ typedef struct callout_ud
};
struct { // type == PROCEDURE_CALLOUT
epubProcedureID procedure; // uint32_t
+ // uint32 - unused
+ // uint32 - unused
};
struct { // type == BUS_CALLOUT
busTypeEnum busType; // uint32_t
+ // uint32 - unused
+ // uint32 - unused
// two Targets will follow
};
struct { // type == CLOCK_CALLOUT
@@ -216,6 +236,8 @@ typedef struct callout_ud
struct { // type == SENSOR_CALLOUT
uint32_t sensorId;
sensorTypeEnum sensorType;
+ // uint32 - unused
+ // zero Targets will follow
};
struct { // type == I2C_DEVICE_CALLOUT
uint8_t engine;
@@ -224,7 +246,8 @@ typedef struct callout_ud
// one Target will follow
};
}; // union
-} callout_ud_t;
+} __attribute__ ((packed)) callout_ud_t;
+
#ifndef PARSER
OpenPOWER on IntegriCloud