diff --git a/src/sst_mailbox.cpp b/src/sst_mailbox.cpp
index 0c35d55..418f3fe 100644
--- a/src/sst_mailbox.cpp
+++ b/src/sst_mailbox.cpp
@@ -79,9 +79,9 @@
     void setWakeOnPECI(bool enable)
     {
         uint8_t completionCode;
-        EPECIStatus libStatus =
-            peci_WrPkgConfig(peciAddress, 5, enable ? 1 : 0, 0,
-                             sizeof(uint32_t), &completionCode);
+        EPECIStatus libStatus = peci_WrPkgConfig(peciAddress, 5, enable ? 1 : 0,
+                                                 0, sizeof(uint32_t),
+                                                 &completionCode);
         if (!checkPECIStatus(libStatus, completionCode))
         {
             throw PECIError("Failed to set Wake-On-PECI mode bit");
@@ -277,8 +277,8 @@
     {
         DEBUG_PRINT << "Running OS Mailbox command "
                     << static_cast<int>(subcommand) << '\n';
-        PECIManager::MailboxStatus* callStatus =
-            errorPolicy == Throw ? nullptr : &status;
+        PECIManager::MailboxStatus* callStatus = errorPolicy == Throw ? nullptr
+                                                                      : &status;
         uint32_t param = (static_cast<uint32_t>(param4) << 24) |
                          (static_cast<uint32_t>(param3) << 16) |
                          (static_cast<uint32_t>(param2) << 8) | param1;
@@ -401,8 +401,7 @@
         address(_address), model(_model),
         pm(static_cast<uint8_t>(address), model)
     {}
-    ~SSTMailbox()
-    {}
+    ~SSTMailbox() {}
 
     bool ready() override
     {
@@ -529,12 +528,12 @@
     std::vector<unsigned int>
         bfHighPriorityCoreList(unsigned int level) override
     {
-        uint64_t coreMaskLo =
-            PbfGetCoreMaskInfo(pm, static_cast<uint8_t>(level), 0)
-                .p1HiCoreMask();
-        uint64_t coreMaskHi =
-            PbfGetCoreMaskInfo(pm, static_cast<uint8_t>(level), 1)
-                .p1HiCoreMask();
+        uint64_t coreMaskLo = PbfGetCoreMaskInfo(pm,
+                                                 static_cast<uint8_t>(level), 0)
+                                  .p1HiCoreMask();
+        uint64_t coreMaskHi = PbfGetCoreMaskInfo(pm,
+                                                 static_cast<uint8_t>(level), 1)
+                                  .p1HiCoreMask();
         std::bitset<64> hiFreqCoreList = (coreMaskHi << 32) | coreMaskLo;
         return convertMaskToList(hiFreqCoreList);
     }
