PEL: Support for CheckstopFlag msg reg field
Similiar to the DeconfigFlag field that was recently added, this one
indicates the PEL is for a hardware checkstop and results in a bit in
SRC hex word 5 being set.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Ib05de7471ad3e32f48e7f20a5c611abc119fe82a
diff --git a/extensions/openpower-pels/registry.cpp b/extensions/openpower-pels/registry.cpp
index aeba998..a96f661 100644
--- a/extensions/openpower-pels/registry.cpp
+++ b/extensions/openpower-pels/registry.cpp
@@ -195,6 +195,11 @@
return src["DeconfigFlag"].get<bool>();
}
+bool getSRCCheckstopFlag(const nlohmann::json& src)
+{
+ return src["CheckstopFlag"].get<bool>();
+}
+
std::optional<std::map<SRC::WordNum, SRC::AdditionalDataField>>
getSRCHexwordFields(const nlohmann::json& src, const std::string& name)
{
@@ -745,6 +750,11 @@
entry.src.deconfigFlag = helper::getSRCDeconfigFlag(src);
}
+ if (src.contains("CheckstopFlag"))
+ {
+ entry.src.checkstopFlag = helper::getSRCCheckstopFlag(src);
+ }
+
auto& doc = (*e)["Documentation"];
entry.doc.message = doc["Message"];
entry.doc.description = doc["Description"];
diff --git a/extensions/openpower-pels/registry.hpp b/extensions/openpower-pels/registry.hpp
index e72fafb..cd39b3f 100644
--- a/extensions/openpower-pels/registry.hpp
+++ b/extensions/openpower-pels/registry.hpp
@@ -110,7 +110,12 @@
*/
bool deconfigFlag;
- SRC() : type(0), reasonCode(0), deconfigFlag(false) {}
+ /**
+ * @brief If the checkstop flag should be set in hex word 5
+ */
+ bool checkstopFlag;
+
+ SRC() : type(0), reasonCode(0), deconfigFlag(false), checkstopFlag(false) {}
};
struct AppCapture
diff --git a/extensions/openpower-pels/registry/README.md b/extensions/openpower-pels/registry/README.md
index f914bfc..05a35e9 100644
--- a/extensions/openpower-pels/registry/README.md
+++ b/extensions/openpower-pels/registry/README.md
@@ -253,6 +253,15 @@
"DeconfigFlag": true
```
+### SRC Checkstop Flag
+
+This is used to indicate the PEL is for a hardware checkstop, and causes bit 0
+in hex word 5 of the SRC to be set.
+
+```json
+"CheckstopFlag": true
+```
+
### Documentation Fields
The documentation fields are used by PEL parsers to display a human readable
diff --git a/extensions/openpower-pels/registry/message_registry.json b/extensions/openpower-pels/registry/message_registry.json
index c2b3e91..6c2e807 100644
--- a/extensions/openpower-pels/registry/message_registry.json
+++ b/extensions/openpower-pels/registry/message_registry.json
@@ -1677,6 +1677,7 @@
"SRC": {
"ReasonCode": "0xE510",
"SymptomIDFields": ["SRCWord6", "SRCWord7", "SRCWord8"],
+ "CheckstopFlag": true,
"Words6To9": {
"6": {
"AdditionalDataPropSource": "SRC6"
diff --git a/extensions/openpower-pels/registry/schema/schema.json b/extensions/openpower-pels/registry/schema/schema.json
index 11885e5..4c548e5 100644
--- a/extensions/openpower-pels/registry/schema/schema.json
+++ b/extensions/openpower-pels/registry/schema/schema.json
@@ -102,7 +102,9 @@
"Words6To9": { "$ref": "#/definitions/srcWords6To9" },
- "DeconfigFlag": { "$ref": "#/definitions/deconfigFlag" }
+ "DeconfigFlag": { "$ref": "#/definitions/deconfigFlag" },
+
+ "CheckstopFlag": { "$ref": "#/definitions/checkstopFlag" }
},
"required": ["ReasonCode", "Words6To9"],
@@ -139,6 +141,11 @@
"type": "boolean"
},
+ "checkstopFlag": {
+ "description": "Indicates the SRC is for a hardware checkstop.",
+ "type": "boolean"
+ },
+
"docNotes": {
"description": "Any notes/comments about the error. An array of strings for manual line wrapping. Optional.",
"type": "array",
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index d78c07a..00ea0b8 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -350,6 +350,11 @@
setBMCPosition();
setMotherboardCCIN(dataIface);
+ if (regEntry.src.checkstopFlag)
+ {
+ setErrorStatusFlag(ErrorStatusFlags::hwCheckstop);
+ }
+
if (regEntry.src.deconfigFlag)
{
setErrorStatusFlag(ErrorStatusFlags::deconfigured);
diff --git a/extensions/openpower-pels/src.hpp b/extensions/openpower-pels/src.hpp
index bc73fa2..a09f286 100644
--- a/extensions/openpower-pels/src.hpp
+++ b/extensions/openpower-pels/src.hpp
@@ -62,8 +62,9 @@
* @brief Enums for the error status bits in hex word 5
* of BMC SRCs.
*/
- enum class ErrorStatusFlags
+ enum class ErrorStatusFlags : uint32_t
{
+ hwCheckstop = 0x80000000,
terminateFwErr = 0x20000000,
deconfigured = 0x02000000,
guarded = 0x01000000