PEL: Update bmc & platform dump status in SRC section
With every PEL creation, the status of bmc and platform dumps -
Hardware and Hypervisor would be checked and status bits in SRC
section updated accordingly.
Change-Id: I3ec7626611cf330f2ce235a97ee3046c0d32b6ab
Signed-off-by: Sumit Kumar <sumit_kumar@in.ibm.com>
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 6c6a2d4..a9f1b7f 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -348,11 +348,12 @@
// M: Partition dump status = 0
// I: System boot state = TODO
// G: Partition Boot type = 0
- // V: BMC dump status = TODO
+ // V: BMC dump status
// E: Platform boot mode = 0 (side = temporary, speed = fast)
- // P: Platform dump status = TODO
+ // P: Platform dump status
// FF: SRC format, set below
+ setDumpStatus(dataIface);
setBMCFormat();
setBMCPosition();
setMotherboardCCIN(dataIface);
@@ -1403,5 +1404,28 @@
return mrus;
}
+void SRC::setDumpStatus(const DataInterfaceBase& dataIface)
+{
+ std::vector<bool> dumpStatus{false, false, false};
+
+ try
+ {
+ std::vector<std::string> dumpType = {"bmc/entry", "resource/entry",
+ "system/entry"};
+ dumpStatus = dataIface.checkDumpStatus(dumpType);
+
+ // For bmc - set bit 0 of nibble [4-7] bits of byte-1 SP dump
+ // For resource - set bit 2 of nibble [4-7] bits of byte-2 Hypervisor
+ // For system - set bit 1 of nibble [4-7] bits of byte-2 HW dump
+ _hexData[0] |= ((dumpStatus[0] << 19) | (dumpStatus[1] << 9) |
+ (dumpStatus[2] << 10));
+ }
+ catch (const std::exception& e)
+ {
+ // Exception - may be no dump interface on dbus or getProperty
+ // failed
+ }
+}
+
} // namespace pels
} // namespace openpower