diff --git a/elog-errors.hpp b/elog-errors.hpp
index 5a6fad8..7309c89 100644
--- a/elog-errors.hpp
+++ b/elog-errors.hpp
@@ -181,6 +181,26 @@
 {
 namespace Error
 {
+    struct PowerSupplyInputFault;
+} // namespace Error
+} // namespace Fault
+} // namespace Power
+} // namespace openbmc_project
+} // namespace xyz
+} // namespace sdbusplus
+
+namespace sdbusplus
+{
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Power
+{
+namespace Fault
+{
+namespace Error
+{
     struct GPUPowerFault;
 } // namespace Error
 } // namespace Fault
@@ -588,6 +608,53 @@
 {
 namespace Fault
 {
+namespace _PowerSupplyInputFault
+{
+
+struct RAW_STATUS
+{
+    static constexpr auto str = "RAW_STATUS=%s";
+    static constexpr auto str_short = "RAW_STATUS";
+    using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
+    explicit constexpr RAW_STATUS(const char* a) : _entry(entry(str, a)) {};
+    type _entry;
+};
+
+}  // namespace _PowerSupplyInputFault
+
+struct PowerSupplyInputFault
+{
+    static constexpr auto L = level::ERR;
+    using RAW_STATUS = _PowerSupplyInputFault::RAW_STATUS;
+    using metadata_types = std::tuple<RAW_STATUS>;
+
+};
+
+} // namespace Fault
+} // namespace Power
+} // namespace openbmc_project
+} // namespace xyz
+
+
+namespace details
+{
+
+template <>
+struct map_exception_type<sdbusplus::xyz::openbmc_project::Power::Fault::Error::PowerSupplyInputFault>
+{
+    using type = xyz::openbmc_project::Power::Fault::PowerSupplyInputFault;
+};
+
+}
+
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Power
+{
+namespace Fault
+{
 namespace _Shutdown
 {
 
diff --git a/pmbus.hpp b/pmbus.hpp
index 9254fe7..214040d 100644
--- a/pmbus.hpp
+++ b/pmbus.hpp
@@ -11,11 +11,18 @@
 
 namespace fs = std::experimental::filesystem;
 
+// The file name Linux uses to capture the VIN_UV_FAULT bit from the STATUS_WORD
+constexpr auto VIN_UV_FAULT = "in1_alarm";
+
+// The file name Linux uses to capture the input fault or warning bit from the
+// STATUS_WORD
+constexpr auto INPUT_FAULT_WARN = "power1_alarm";
+
 // The file name Linux uses to capture the STATUS_WORD from pmbus.
 constexpr auto STATUS_WORD = "status0";
 
-// The file name Linux uses to capture the VIN_UV_FAULT bit from the STATUS_WORD
-constexpr auto VIN_UV_FAULT = "in1_alarm";
+// The file name Linux uses to capture the STATUS_INPUT from pmbus.
+constexpr auto STATUS_INPUT = "status0_input";
 
 // Uses Page substitution
 constexpr auto STATUS_VOUT = "statusP_vout";
diff --git a/power-supply/power_supply.cpp b/power-supply/power_supply.cpp
index f70b79d..f5d3fa3 100644
--- a/power-supply/power_supply.cpp
+++ b/power-supply/power_supply.cpp
@@ -46,8 +46,6 @@
     : Device(name, inst), monitorPath(objpath), inventoryPath(invpath),
       bus(bus), pmbusIntf(objpath)
 {
-    updatePresence();
-
     using namespace sdbusplus::bus;
     auto present_obj_path = INVENTORY_OBJ_PATH + inventoryPath;
     presentMatch = std::make_unique<match_t>(bus,
@@ -58,6 +56,8 @@
     {
         this->inventoryChanged(msg);
     });
+
+    updatePresence();
 }
 
 void PowerSupply::analyze()
@@ -76,11 +76,12 @@
             // If count reaches 3, we have fault. If count reaches 0, fault is
             // cleared.
 
-            //TODO: INPUT FAULT or WARNING bit to check from STATUS_WORD
-            // pmbus-core update to read high byte of STATUS_WORD?
+            auto curInputFault = pmbusIntf.readBit(INPUT_FAULT_WARN,
+                                                   Type::Hwmon);
 
-            if ((curUVFault != vinUVFault) || inputFault)
+            if (curUVFault != vinUVFault)
             {
+                vinUVFault = curUVFault;
 
                 if (curUVFault)
                 {
@@ -103,8 +104,37 @@
                     log<level::INFO>("VIN_UV_FAULT cleared",
                                      entry("POWERSUPPLY=%s",
                                            inventoryPath.c_str()));
-                    vinUVFault = false;
                 }
+
+            }
+
+            if (curInputFault != inputFault)
+            {
+                if (curInputFault)
+                {
+                    std::uint16_t statusWord = 0;
+                    std::uint8_t  statusInput = 0;
+
+                    statusWord = pmbusIntf.read(STATUS_WORD, Type::Debug);
+                    statusInput = pmbusIntf.read(STATUS_INPUT, Type::Debug);
+
+                    util::NamesValues nv;
+                    nv.add("STATUS_WORD", statusWord);
+                    nv.add("STATUS_INPUT", statusInput);
+
+                    using metadata = xyz::openbmc_project::Power::Fault::
+                            PowerSupplyInputFault;
+
+                    report<PowerSupplyInputFault>(
+                            metadata::RAW_STATUS(nv.get().c_str()));
+
+                    inputFault = true;
+                }
+                else
+                {
+                    inputFault = false;
+                }
+
             }
         }
     }
@@ -138,6 +168,7 @@
         {
             readFailLogged = false;
             vinUVFault = false;
+            inputFault = false;
         }
     }
 
diff --git a/xyz/openbmc_project/Power/Fault.errors.yaml b/xyz/openbmc_project/Power/Fault.errors.yaml
index bd9d7b5..6911753 100644
--- a/xyz/openbmc_project/Power/Fault.errors.yaml
+++ b/xyz/openbmc_project/Power/Fault.errors.yaml
@@ -1,5 +1,7 @@
 - name: PowerSupplyUnderVoltageFault
   description: The power supply has indicated an input or under voltage fault condition.
+- name: PowerSupplyInputFault
+  description: The power supply has indicated an input fault or warn condition.
 - name: Shutdown
   description: A power off was issued because a power fault was detected
 
diff --git a/xyz/openbmc_project/Power/Fault.metadata.yaml b/xyz/openbmc_project/Power/Fault.metadata.yaml
index 5f02864..184fffa 100644
--- a/xyz/openbmc_project/Power/Fault.metadata.yaml
+++ b/xyz/openbmc_project/Power/Fault.metadata.yaml
@@ -3,6 +3,11 @@
   meta:
     - str: "RAW_STATUS=%s"
       type: string
+- name: PowerSupplyInputFault
+  level: ERR
+  meta:
+    - str: "RAW_STATUS=%s"
+      type: string
 - name: Shutdown
   level: ERR
 
