PEL: Support MfgSeverity & MfgAction flags PEL reg fields
This is specifically for manufacturing mode.
Look for mfgSeverity and mfgAction flags being set in incoming PELs and
if it is then check for dbus property for QuiesceOnHwError and if it is
found then override the severity value with mfg value.
Signed-off-by: Sumit Kumar <sumit_kumar@in.ibm.com>
Change-Id: Icd590b0e2732df8aa9c2935078528dda8fd4f996
diff --git a/extensions/openpower-pels/data_interface.cpp b/extensions/openpower-pels/data_interface.cpp
index faf035d..2ef99f4 100644
--- a/extensions/openpower-pels/data_interface.cpp
+++ b/extensions/openpower-pels/data_interface.cpp
@@ -35,6 +35,7 @@
constexpr auto objectMapper = "xyz.openbmc_project.ObjectMapper";
constexpr auto vpdManager = "com.ibm.VPD.Manager";
constexpr auto ledGroupManager = "xyz.openbmc_project.LED.GroupManager";
+constexpr auto logSetting = "xyz.openbmc_project.Settings";
} // namespace service_name
namespace object_path
@@ -52,6 +53,7 @@
constexpr auto enableHostPELs =
"/xyz/openbmc_project/logging/send_event_logs_to_host";
constexpr auto vpdManager = "/com/ibm/VPD/Manager";
+constexpr auto logSetting = "/xyz/openbmc_project/logging/settings";
} // namespace object_path
namespace interface
@@ -76,6 +78,7 @@
constexpr auto ledGroup = "xyz.openbmc_project.Led.Group";
constexpr auto operationalStatus =
"xyz.openbmc_project.State.Decorator.OperationalStatus";
+constexpr auto logSetting = "xyz.openbmc_project.Logging.Settings";
} // namespace interface
using namespace sdbusplus::xyz::openbmc_project::State::Boot::server;
@@ -519,5 +522,34 @@
return std::get<std::vector<std::string>>(names);
}
+bool DataInterface::getQuiesceOnError() const
+{
+ bool ret = false;
+
+ try
+ {
+ auto service =
+ getService(object_path::logSetting, interface::logSetting);
+ if (!service.empty())
+ {
+ DBusValue value;
+ getProperty(service, object_path::logSetting, interface::logSetting,
+ "QuiesceOnHwError", value);
+
+ ret = std::get<bool>(value);
+ }
+ }
+ catch (const std::exception& e)
+ {
+ log<level::WARNING>(
+ fmt::format("Failed reading QuiesceOnHwError property from "
+ "Interface: {} exception: {}",
+ interface::logSetting, e.what())
+ .c_str());
+ }
+
+ return ret;
+}
+
} // namespace pels
} // namespace openpower