diff --git a/nmi_main.cpp b/nmi_main.cpp
index 3a12bce..36a0004 100644
--- a/nmi_main.cpp
+++ b/nmi_main.cpp
@@ -20,7 +20,7 @@
 
 #include <sdbusplus/bus.hpp>
 
-int main(int argc, char* argv[])
+int main(int, char*[])
 {
 
     constexpr auto BUSPATH_NMI = "/xyz/openbmc_project/control/host0/nmi";
diff --git a/phalerror/phal_error.cpp b/phalerror/phal_error.cpp
index 8957487..2cd8d5b 100644
--- a/phalerror/phal_error.cpp
+++ b/phalerror/phal_error.cpp
@@ -196,7 +196,7 @@
 // list of debug traces
 static std::vector<std::pair<std::string, std::string>> traceLog;
 
-void processLogTraceCallback(void* private_data, const char* fmt, va_list ap)
+void processLogTraceCallback(void*, const char* fmt, va_list ap)
 {
     va_list vap;
     va_copy(vap, ap);
@@ -482,7 +482,7 @@
     counter = 0;
 }
 
-void pDBGLogTraceCallbackHelper(int log_level, const char* fmt, va_list ap)
+void pDBGLogTraceCallbackHelper(int, const char* fmt, va_list ap)
 {
     processLogTraceCallback(NULL, fmt, ap);
 }
diff --git a/procedures/common/cfam_overrides.cpp b/procedures/common/cfam_overrides.cpp
index 13f7659..ea311f5 100644
--- a/procedures/common/cfam_overrides.cpp
+++ b/procedures/common/cfam_overrides.cpp
@@ -27,7 +27,7 @@
 
 void CFAMOverride()
 {
-    int pos = 0;
+    size_t pos = 0;
     cfam_address_t address = 0;
     cfam_data_t data = 0;
     cfam_mask_t mask = 0;
@@ -48,7 +48,7 @@
                 if (!line.empty() && line.at(0) != '#')
                 {
                     mask = 0xFFFFFFFF;
-                    if (sscanf(line.c_str(), "%x %hx %x %x", &pos, &address,
+                    if (sscanf(line.c_str(), "%zu %hx %x %x", &pos, &address,
                                &data, &mask) >= 3)
                     {
                         const auto& target = targets.getTarget(pos);
@@ -74,7 +74,7 @@
     return;
 }
 
-REGISTER_PROCEDURE("CFAMOverride", CFAMOverride);
+REGISTER_PROCEDURE("CFAMOverride", CFAMOverride)
 
 } // namespace p9
 } // namespace openpower
diff --git a/procedures/common/cfam_reset.cpp b/procedures/common/cfam_reset.cpp
index acf3d3d..9a09d18 100644
--- a/procedures/common/cfam_reset.cpp
+++ b/procedures/common/cfam_reset.cpp
@@ -68,7 +68,7 @@
     line.set_value(1);
 }
 
-REGISTER_PROCEDURE("cfamReset", cfamReset);
+REGISTER_PROCEDURE("cfamReset", cfamReset)
 
 } // namespace misc
 } // namespace openpower
diff --git a/procedures/common/collect_sbe_hb_data.cpp b/procedures/common/collect_sbe_hb_data.cpp
index 6cba8ee..d810c02 100644
--- a/procedures/common/collect_sbe_hb_data.cpp
+++ b/procedures/common/collect_sbe_hb_data.cpp
@@ -137,7 +137,7 @@
     }
 }
 
-REGISTER_PROCEDURE("collectSBEHBData", collectSBEHBData);
+REGISTER_PROCEDURE("collectSBEHBData", collectSBEHBData)
 
 } // namespace debug
 } // namespace p9
diff --git a/procedures/common/enter_mpreboot.cpp b/procedures/common/enter_mpreboot.cpp
index 3c6e2e0..48e6ff3 100644
--- a/procedures/common/enter_mpreboot.cpp
+++ b/procedures/common/enter_mpreboot.cpp
@@ -14,11 +14,14 @@
  * limitations under the License.
  */
 
+#include "registration.hpp"
+
 #include <libpdbg.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
 #include <phosphor-logging/log.hpp>
+#include <system_error>
 #include <vector>
 
 namespace openpower
@@ -98,7 +101,7 @@
     }
 }
 
-REGISTER_PROCEDURE("enterMpReboot", enterMpReboot);
+REGISTER_PROCEDURE("enterMpReboot", enterMpReboot)
 
 } // namespace misc
 } // namespace openpower
diff --git a/procedures/openfsi/scan.cpp b/procedures/openfsi/scan.cpp
index e6bdd89..a9583c6 100644
--- a/procedures/openfsi/scan.cpp
+++ b/procedures/openfsi/scan.cpp
@@ -120,7 +120,7 @@
     }
 }
 
-REGISTER_PROCEDURE("scanFSI", scan);
+REGISTER_PROCEDURE("scanFSI", scan)
 
 } // namespace openfsi
 } // namespace openpower
diff --git a/procedures/p9/cleanup_pcie.cpp b/procedures/p9/cleanup_pcie.cpp
index 68b6649..316700d 100644
--- a/procedures/p9/cleanup_pcie.cpp
+++ b/procedures/p9/cleanup_pcie.cpp
@@ -65,7 +65,7 @@
     }
 }
 
-REGISTER_PROCEDURE("cleanupPcie", cleanupPcie);
+REGISTER_PROCEDURE("cleanupPcie", cleanupPcie)
 
 } // namespace p9
 } // namespace openpower
diff --git a/procedures/p9/set_sync_fsi_clock_mode.cpp b/procedures/p9/set_sync_fsi_clock_mode.cpp
index 4ffff9f..864dbb3 100644
--- a/procedures/p9/set_sync_fsi_clock_mode.cpp
+++ b/procedures/p9/set_sync_fsi_clock_mode.cpp
@@ -39,7 +39,7 @@
     writeRegWithMask(master, P9_LL_MODE_REG, 0x00000000, 0x00000001);
 }
 
-REGISTER_PROCEDURE("setSyncFSIClock", setSynchronousFSIClock);
+REGISTER_PROCEDURE("setSyncFSIClock", setSynchronousFSIClock)
 
 } // namespace p9
 } // namespace openpower
diff --git a/procedures/p9/start_host.cpp b/procedures/p9/start_host.cpp
index 2625888..e6279c8 100644
--- a/procedures/p9/start_host.cpp
+++ b/procedures/p9/start_host.cpp
@@ -90,7 +90,7 @@
     writeRegWithMask(master, P9_CBS_CS, 0x80000000, 0x80000000);
 }
 
-REGISTER_PROCEDURE("startHost", startHost);
+REGISTER_PROCEDURE("startHost", startHost)
 
 } // namespace p9
 } // namespace openpower
diff --git a/procedures/p9/start_host_mpreboot.cpp b/procedures/p9/start_host_mpreboot.cpp
index 192f6ca..8c02810 100644
--- a/procedures/p9/start_host_mpreboot.cpp
+++ b/procedures/p9/start_host_mpreboot.cpp
@@ -106,7 +106,7 @@
     }
 }
 
-REGISTER_PROCEDURE("startHostMpReboot", startHostMpReboot);
+REGISTER_PROCEDURE("startHostMpReboot", startHostMpReboot)
 
 } // namespace p9
 } // namespace openpower
diff --git a/procedures/phal/set_SPI_mux.cpp b/procedures/phal/set_SPI_mux.cpp
index 4d40a7d..4300a81 100644
--- a/procedures/phal/set_SPI_mux.cpp
+++ b/procedures/phal/set_SPI_mux.cpp
@@ -42,7 +42,7 @@
     }
 }
 
-REGISTER_PROCEDURE("setSPIMux", setSPIMux);
+REGISTER_PROCEDURE("setSPIMux", setSPIMux)
 
 } // namespace p10
 } // namespace openpower
diff --git a/procedures/phal/start_host.cpp b/procedures/phal/start_host.cpp
index 847e6c7..21d2d62 100644
--- a/procedures/phal/start_host.cpp
+++ b/procedures/phal/start_host.cpp
@@ -196,8 +196,8 @@
     startHost();
 }
 
-REGISTER_PROCEDURE("startHost", startHostNormal);
-REGISTER_PROCEDURE("startHostMpReboot", startHostMpReboot);
+REGISTER_PROCEDURE("startHost", startHostNormal)
+REGISTER_PROCEDURE("startHostMpReboot", startHostMpReboot)
 
 } // namespace phal
 } // namespace openpower
diff --git a/test/utest.cpp b/test/utest.cpp
index ca95db2..fb73fd0 100644
--- a/test/utest.cpp
+++ b/test/utest.cpp
@@ -121,8 +121,8 @@
     std::cout << "World\n";
 }
 
-REGISTER_PROCEDURE("hello", func1);
-REGISTER_PROCEDURE("world", func2);
+REGISTER_PROCEDURE("hello", func1)
+REGISTER_PROCEDURE("world", func2)
 
 TEST(RegistrationTest, TestReg)
 {
