diff --git a/Makefile.am b/Makefile.am
index 73ea204..57c0e2c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -6,9 +6,10 @@
 openpower_proc_control_SOURCES = \
 	proc_control.cpp \
 	cfam_access.cpp \
-	p9_procedures.cpp \
 	filedescriptor.cpp \
-	targeting.cpp
+	targeting.cpp \
+	procedures/p9/start_host.cpp \
+	procedures/p9/vcs_workaround.cpp
 
 openpower_proc_control_LDFLAGS = $(PHOSPHOR_LOGGING_LIBS) -lstdc++fs
 openpower_proc_control_CXXFLAGS = $(PHOSPHOR_LOGGING_CFLAGS)
diff --git a/p9_procedures.cpp b/procedures/p9/start_host.cpp
similarity index 71%
rename from p9_procedures.cpp
rename to procedures/p9/start_host.cpp
index 188fec0..f781e68 100644
--- a/p9_procedures.cpp
+++ b/procedures/p9/start_host.cpp
@@ -28,6 +28,11 @@
 using namespace openpower::cfam::p9;
 using namespace openpower::targeting;
 
+
+/**
+ * @brief Starts the self boot engine on P9 position 0 to kick off a boot.
+ * @return void
+ */
 void startHost()
 {
     Targeting targets;
@@ -36,7 +41,6 @@
     log<level::INFO>("Running P9 procedure startHost",
                      entry("NUM_PROCS=%d", targets.size()));
 
-
     //Ensure asynchronous clock mode is set
     writeReg(master, P9_LL_MODE_REG, 0x00000001);
 
@@ -68,32 +72,6 @@
 }
 
 
-void vcsWorkaround()
-{
-    Targeting targets;
-    const auto& master = *(targets.begin());
-
-    log<level::INFO>("Running P9 procedure vcsWorkaround",
-                     entry("NUM_PROCS=%d", targets.size()));
-
-    //Set asynchronous clock mode
-    writeReg(master, P9_LL_MODE_REG, 0x00000001);
-
-    for (const auto& t : targets)
-    {
-        //Unfence PLL controls
-        writeRegWithMask(t, P9_ROOT_CTRL0,
-                         0x00000000, 0x00010000);
-
-        //Assert Perv chiplet endpoint reset
-        writeRegWithMask(t, P9_PERV_CTRL0,
-                         0x40000000, 0x40000000);
-
-        //Enable Nest PLL
-        writeRegWithMask(t, P9_PERV_CTRL0,
-                         0x00000001, 0x00000001);
-    }
-}
-
 }
 }
+
diff --git a/p9_procedures.cpp b/procedures/p9/vcs_workaround.cpp
similarity index 61%
copy from p9_procedures.cpp
copy to procedures/p9/vcs_workaround.cpp
index 188fec0..64b41c1 100644
--- a/p9_procedures.cpp
+++ b/procedures/p9/vcs_workaround.cpp
@@ -28,46 +28,11 @@
 using namespace openpower::cfam::p9;
 using namespace openpower::targeting;
 
-void startHost()
-{
-    Targeting targets;
-    const auto& master = *(targets.begin());
 
-    log<level::INFO>("Running P9 procedure startHost",
-                     entry("NUM_PROCS=%d", targets.size()));
-
-
-    //Ensure asynchronous clock mode is set
-    writeReg(master, P9_LL_MODE_REG, 0x00000001);
-
-    //Clock mux select override
-    for (const auto& t : targets)
-    {
-        writeRegWithMask(t, P9_ROOT_CTRL8,
-                         0x0000000C, 0x0000000C);
-    }
-
-    //Enable P9 checkstop to be reported to the BMC
-
-    //Setup FSI2PIB to report checkstop
-    writeReg(master, P9_FSI_A_SI1S, 0x20000000);
-
-    //Enable Xstop/ATTN interrupt
-    writeReg(master, P9_FSI2PIB_TRUE_MASK, 0x60000000);
-
-    //Arm it
-    writeReg(master, P9_FSI2PIB_INTERRUPT, 0xFFFFFFFF);
-
-    //Kick off the SBE to start the boot
-
-    //First ensure ISTEP stepping isn't enabled
-    writeReg(master, P9_SCRATCH_REGISTER_8, 0x20000000);
-
-    //Start the SBE
-    writeRegWithMask(master, P9_CBS_CS, 0x80000000, 0x80000000);
-}
-
-
+/**
+ * @brief Performs the 'VCS Workaround' on all P9s in the system.
+ * @return void
+ */
 void vcsWorkaround()
 {
     Targeting targets;
