diff --git a/phosphor-power-supply/power_supply.hpp b/phosphor-power-supply/power_supply.hpp
index 3386b80..875e714 100644
--- a/phosphor-power-supply/power_supply.hpp
+++ b/phosphor-power-supply/power_supply.hpp
@@ -150,7 +150,7 @@
      */
     bool isFaulted() const
     {
-        return faultFound;
+        return (faultFound || hasCommFault());
     }
 
     /**
@@ -193,6 +193,11 @@
         return vinUVFault;
     }
 
+    const std::string getDevicePath() const
+    {
+        return pmbusIntf->path();
+    }
+
     const std::string& getInventoryPath() const
     {
         return inventoryPath;
diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index 32847b8..b7f8caa 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -226,6 +226,18 @@
 
                 psu->setFaultLogged();
             }
+            else if (psu->hasCommFault())
+            {
+                /* Attempts to communicate with the power supply have reached
+                 * there limit. Create an error. */
+                additionalData["CALLOUT_DEVICE_PATH"] = psu->getDevicePath();
+
+                createError(
+                    "xyz.openbmc_project.Power.PowerSupply.Error.CommFault",
+                    additionalData);
+
+                psu->setFaultLogged();
+            }
         }
     }
 }
diff --git a/phosphor-power-supply/test/mock.hpp b/phosphor-power-supply/test/mock.hpp
index 63afffe..02e3947 100644
--- a/phosphor-power-supply/test/mock.hpp
+++ b/phosphor-power-supply/test/mock.hpp
@@ -22,6 +22,7 @@
     MOCK_METHOD(void, writeBinary,
                 (const std::string& name, std::vector<uint8_t> data, Type type),
                 (override));
+    MOCK_METHOD(const fs::path&, path, (), (const, override));
 };
 } // namespace pmbus
 
diff --git a/pmbus.hpp b/pmbus.hpp
index 1ca6536..6f5b91f 100644
--- a/pmbus.hpp
+++ b/pmbus.hpp
@@ -145,6 +145,7 @@
     virtual std::string readString(const std::string& name, Type type) = 0;
     virtual void writeBinary(const std::string& name, std::vector<uint8_t> data,
                              Type type) = 0;
+    virtual const fs::path& path() const = 0;
 };
 
 /**
@@ -308,7 +309,7 @@
     /**
      * Returns the sysfs base path of this device
      */
-    inline const auto& path() const
+    const fs::path& path() const override
     {
         return basePath;
     }
