diff --git a/extensions/openpower-pels/pel_entry.cpp b/extensions/openpower-pels/pel_entry.cpp
index 403befd..7fc9f72 100644
--- a/extensions/openpower-pels/pel_entry.cpp
+++ b/extensions/openpower-pels/pel_entry.cpp
@@ -1,39 +1,39 @@
-#include "pel_entry.hpp"
-
-#include <iostream>
-#include <xyz/openbmc_project/Common/error.hpp>
-
-namespace openpower
-{
-namespace pels
-{
-
-namespace common_error = sdbusplus::xyz::openbmc_project::Common::Error;
-
-bool PELEntry::managementSystemAck(bool value)
-{
-    auto current = sdbusplus::org::open_power::Logging::PEL::server::Entry::
-        managementSystemAck();
-    if (value != current)
-    {
-        current = sdbusplus::org::open_power::Logging::PEL::server::Entry::
-            managementSystemAck(value);
-
-        Repository::LogID id{Repository::LogID::Obmc(getMyId())};
-        if (auto logId = _repo->getLogID(id); logId.has_value())
-        {
-            // Update HMC acknowledge bit in PEL
-            _repo->setPELHMCTransState(
-                logId->pelID.id,
-                (value ? TransmissionState::acked : TransmissionState::newPEL));
-        }
-        else
-        {
-            throw common_error::InvalidArgument();
-        }
-    }
-    return current;
-}
-
-} // namespace pels
-} // namespace openpower
+#include "pel_entry.hpp"
+
+#include <iostream>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+namespace openpower
+{
+namespace pels
+{
+
+namespace common_error = sdbusplus::xyz::openbmc_project::Common::Error;
+
+bool PELEntry::managementSystemAck(bool value)
+{
+    auto current = sdbusplus::org::open_power::Logging::PEL::server::Entry::
+        managementSystemAck();
+    if (value != current)
+    {
+        current = sdbusplus::org::open_power::Logging::PEL::server::Entry::
+            managementSystemAck(value);
+
+        Repository::LogID id{Repository::LogID::Obmc(getMyId())};
+        if (auto logId = _repo->getLogID(id); logId.has_value())
+        {
+            // Update HMC acknowledge bit in PEL
+            _repo->setPELHMCTransState(
+                logId->pelID.id,
+                (value ? TransmissionState::acked : TransmissionState::newPEL));
+        }
+        else
+        {
+            throw common_error::InvalidArgument();
+        }
+    }
+    return current;
+}
+
+} // namespace pels
+} // namespace openpower
