diff --git a/include/cpuinfo.hpp b/include/cpuinfo.hpp
index 27a7264..d6acbf6 100644
--- a/include/cpuinfo.hpp
+++ b/include/cpuinfo.hpp
@@ -19,8 +19,6 @@
 #include <sdbusplus/asio/object_server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
 
-namespace phosphor
-{
 namespace cpu_info
 {
 static constexpr char const* cpuInfoObject = "xyz.openbmc_project.CPUInfo";
@@ -53,4 +51,3 @@
 };
 
 } // namespace cpu_info
-} // namespace phosphor
diff --git a/src/cpuinfo_main.cpp b/src/cpuinfo_main.cpp
index 2e8135c..5a3a5ff 100644
--- a/src/cpuinfo_main.cpp
+++ b/src/cpuinfo_main.cpp
@@ -42,8 +42,6 @@
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/asio/object_server.hpp>
 
-namespace phosphor
-{
 namespace cpu_info
 {
 static constexpr bool debug = false;
@@ -235,12 +233,15 @@
     CPUModel model{};
     uint8_t stepping = 0;
 
-    if (peci_GetCPUID(cpuAddr, &model, &stepping, &cc) != PECI_CC_SUCCESS)
+    // Wait for POST to complete to ensure that BIOS has time to enable the
+    // PPIN. Before BIOS enables it, we would get a 0x90 CC on PECI.
+    if (hostState != HostState::postComplete ||
+        peci_GetCPUID(cpuAddr, &model, &stepping, &cc) != PECI_CC_SUCCESS)
     {
         // Start the PECI check loop
         auto waitTimer = std::make_shared<boost::asio::steady_timer>(io);
         waitTimer->expires_after(
-            std::chrono::seconds(phosphor::cpu_info::peciCheckInterval));
+            std::chrono::seconds(cpu_info::peciCheckInterval));
 
         waitTimer->async_wait(
             [waitTimer, &io, conn, cpu](const boost::system::error_code& ec) {
@@ -502,7 +503,6 @@
 }
 
 } // namespace cpu_info
-} // namespace phosphor
 
 int main(int argc, char* argv[])
 {
@@ -512,7 +512,7 @@
         std::make_shared<sdbusplus::asio::connection>(io);
 
     // CPUInfo Object
-    conn->request_name(phosphor::cpu_info::cpuInfoObject);
+    conn->request_name(cpu_info::cpuInfoObject);
     sdbusplus::asio::object_server server =
         sdbusplus::asio::object_server(conn);
     sdbusplus::bus::bus& bus = static_cast<sdbusplus::bus::bus&>(*conn);
@@ -525,7 +525,7 @@
 
     // shared_ptr conn is global for the service
     // const reference of conn is passed to async calls
-    phosphor::cpu_info::getCpuConfiguration(io, conn, server);
+    cpu_info::getCpuConfiguration(io, conn, server);
 
     io.run();
 
diff --git a/src/speed_select.cpp b/src/speed_select.cpp
index 2c1ef6e..c320e39 100644
--- a/src/speed_select.cpp
+++ b/src/speed_select.cpp
@@ -664,7 +664,7 @@
 
     static std::string generatePath(int index)
     {
-        return phosphor::cpu_info::cpuPath + std::to_string(index);
+        return cpuPath + std::to_string(index);
     }
 };
 
