diff --git a/meson.build b/meson.build
index 8ec5d09..a44306a 100644
--- a/meson.build
+++ b/meson.build
@@ -86,6 +86,8 @@
 conf.set_quoted(
     'INPUT_HISTORY_SENSOR_ROOT', get_option('input-history-sensor-root'))
 conf.set_quoted(
+    'INPUT_HISTORY_SYNC_GPIO', get_option('input-history-sync-gpio'))
+conf.set_quoted(
     'PSU_JSON_PATH', '/usr/share/phosphor-power/psu.json')
 conf.set(
     'SEQUENCER', sequencer_class)
diff --git a/meson_options.txt b/meson_options.txt
index c989334..7cf4e54 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -9,6 +9,11 @@
     description: 'The D-Bus power sensors namespace root.',
 )
 option(
+    'input-history-sync-gpio', type: 'string',
+    value: 'power-ffs-sync-history',
+    description: 'The GPIO line name for syncing input history data.',
+)
+option(
     'tests', type: 'feature', description: 'Build tests.',
 )
 option(
diff --git a/phosphor-power-supply/power_supply.cpp b/phosphor-power-supply/power_supply.cpp
index 254c9c7..b364b36 100644
--- a/phosphor-power-supply/power_supply.cpp
+++ b/phosphor-power-supply/power_supply.cpp
@@ -204,6 +204,10 @@
         {
             onOffConfig(phosphor::pmbus::ON_OFF_CONFIG_CONTROL_PIN_ONLY);
             clearFaults();
+            // Indicate that the input history data and timestamps between all
+            // the power supplies that are present in the system need to be
+            // synchronized.
+            syncHistoryRequired = true;
         }
     }
 }
@@ -1001,6 +1005,7 @@
                 log<level::DEBUG>(
                     fmt::format("{} avgPath: {}", shortName, avgPath).c_str());
             }
+
             if (!maximum)
             {
                 auto maxPath = historyObjectPath + '/' + history::Maximum::name;
diff --git a/phosphor-power-supply/power_supply.hpp b/phosphor-power-supply/power_supply.hpp
index b81599b..566deec 100644
--- a/phosphor-power-supply/power_supply.hpp
+++ b/phosphor-power-supply/power_supply.hpp
@@ -488,6 +488,26 @@
         }
     }
 
+    /**
+     * @brief Returns true when INPUT_HISTORY sync is required.
+     */
+    bool isSyncHistoryRequired() const
+    {
+        return syncHistoryRequired;
+    }
+
+    /**
+     * @brief Clears the indicator that sync required for INPUT_HISTORY.
+     *
+     * Sets variable to false to indicate that the sync is no longer required.
+     * This can be used after the PSUManager has reacted to the need for the
+     * INPUT_HISTORY data to be synchronized.
+     */
+    void clearSyncHistoryRequired()
+    {
+        syncHistoryRequired = false;
+    }
+
   private:
     /** @brief systemd bus member */
     sdbusplus::bus::bus& bus;
@@ -858,6 +878,15 @@
     bool inputHistorySupported{false};
 
     /**
+     * @brief Set to true when INPUT_HISTORY sync is required.
+     *
+     * A power supply will need to synchronize its INPUT_HISTORY data with the
+     * other power supplies installed in the system when it goes from missing to
+     * present.
+     */
+    bool syncHistoryRequired{false};
+
+    /**
      * @brief Class that manages the input power history records.
      **/
     std::unique_ptr<history::RecordManager> recordManager;
diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index acc3c2b..d7cfdfc 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -1,3 +1,5 @@
+#include "config.h"
+
 #include "psu_manager.hpp"
 
 #include "utility.hpp"
@@ -28,6 +30,8 @@
 constexpr auto supportedConfIntf =
     "xyz.openbmc_project.Configuration.SupportedConfiguration";
 
+constexpr auto INPUT_HISTORY_SYNC_DELAY = 1100;
+
 PSUManager::PSUManager(sdbusplus::bus::bus& bus, const sdeventplus::Event& e) :
     bus(bus), powerSystemInputs(bus, powerSystemsInputsObjPath),
     objectManager(bus, objectManagerObjPath),
@@ -454,8 +458,38 @@
     }
 }
 
+void PSUManager::syncHistory()
+{
+    log<level::INFO>("Synchronize INPUT_HISTORY");
+
+    if (!syncHistoryGPIO)
+    {
+        syncHistoryGPIO = createGPIO(INPUT_HISTORY_SYNC_GPIO);
+    }
+    if (syncHistoryGPIO)
+    {
+        const std::chrono::milliseconds delay{INPUT_HISTORY_SYNC_DELAY};
+        syncHistoryGPIO->toggleLowHigh(delay);
+        for (auto& psu : psus)
+        {
+            psu->clearSyncHistoryRequired();
+        }
+    }
+
+    log<level::INFO>("Synchronize INPUT_HISTORY completed");
+}
+
 void PSUManager::analyze()
 {
+    auto syncHistoryRequired =
+        std::any_of(psus.begin(), psus.end(), [](const auto& psu) {
+            return psu->isSyncHistoryRequired();
+        });
+    if (syncHistoryRequired)
+    {
+        syncHistory();
+    }
+
     for (auto& psu : psus)
     {
         psu->analyze();
diff --git a/phosphor-power-supply/psu_manager.hpp b/phosphor-power-supply/psu_manager.hpp
index 8725ce8..46560a7 100644
--- a/phosphor-power-supply/psu_manager.hpp
+++ b/phosphor-power-supply/psu_manager.hpp
@@ -377,6 +377,25 @@
      * the /org/open_power/sensors root D-Bus path.
      */
     sdbusplus::server::manager_t historyManager;
+
+    /**
+     * @brief GPIO to toggle to 'sync' power supply input history.
+     */
+    std::unique_ptr<GPIOInterfaceBase> syncHistoryGPIO = nullptr;
+
+    /**
+     * @brief Toggles the GPIO to sync power supply input history readings
+     *
+     * This GPIO is connected to all supplies.  This will clear the
+     * previous readings out of the supplies and restart them both at the
+     * same time zero and at record ID 0.  The supplies will return 0
+     * bytes of data for the input history command right after this until
+     * a new entry shows up.
+     *
+     * This will cause the code to delete all previous history data and
+     * start fresh.
+     */
+    void syncHistory();
 };
 
 } // namespace phosphor::power::manager
diff --git a/phosphor-power-supply/test/mock.hpp b/phosphor-power-supply/test/mock.hpp
index 1235c01..13d22e6 100644
--- a/phosphor-power-supply/test/mock.hpp
+++ b/phosphor-power-supply/test/mock.hpp
@@ -69,6 +69,8 @@
   public:
     MOCK_METHOD(int, read, (), (override));
     MOCK_METHOD(void, write, (int value, std::bitset<32> flags), (override));
+    MOCK_METHOD(void, toggleLowHigh, (const std::chrono::milliseconds& delay),
+                (override));
     MOCK_METHOD(std::string, getName, (), (const, override));
 };
 
diff --git a/phosphor-power-supply/test/power_supply_tests.cpp b/phosphor-power-supply/test/power_supply_tests.cpp
index 88caee8..fabe535 100644
--- a/phosphor-power-supply/test/power_supply_tests.cpp
+++ b/phosphor-power-supply/test/power_supply_tests.cpp
@@ -1968,3 +1968,31 @@
     EXPECT_EQ(psu.hasInputHistory(), true);
     EXPECT_EQ(psu.getNumInputHistoryRecords(), 0);
 }
+
+TEST_F(PowerSupplyTests, IsSyncHistoryRequired)
+{
+    auto bus = sdbusplus::bus::new_default();
+    PowerSupply psu{bus,  PSUInventoryPath, 8,
+                    0x6f, "ibm-cffps",      PSUGPIOLineName};
+    EXPECT_EQ(psu.hasInputHistory(), false);
+    EXPECT_EQ(psu.isSyncHistoryRequired(), false);
+    MockedGPIOInterface* mockPresenceGPIO =
+        static_cast<MockedGPIOInterface*>(psu.getPresenceGPIO());
+    // Always return 1 to indicate present.
+    EXPECT_CALL(*mockPresenceGPIO, read()).WillRepeatedly(Return(1));
+    MockedPMBus& mockPMBus = static_cast<MockedPMBus&>(psu.getPMBus());
+    setMissingToPresentExpects(mockPMBus, mockedUtil);
+    PMBusExpectations expectations;
+    setPMBusExpectations(mockPMBus, expectations);
+    EXPECT_CALL(mockPMBus, readString(READ_VIN, _))
+        .Times(1)
+        .WillRepeatedly(Return("205000"));
+    EXPECT_CALL(mockedUtil, setAvailable(_, _, true));
+    psu.analyze();
+    // The ibm-cffps power supply should support input history
+    EXPECT_EQ(psu.hasInputHistory(), true);
+    // Missing -> Present requires history sync
+    EXPECT_EQ(psu.isSyncHistoryRequired(), true);
+    psu.clearSyncHistoryRequired();
+    EXPECT_EQ(psu.isSyncHistoryRequired(), false);
+}
diff --git a/phosphor-power-supply/util.cpp b/phosphor-power-supply/util.cpp
index 0a7e20d..503e1c3 100644
--- a/phosphor-power-supply/util.cpp
+++ b/phosphor-power-supply/util.cpp
@@ -106,6 +106,14 @@
     }
 }
 
+void GPIOInterface::toggleLowHigh(const std::chrono::milliseconds& delay)
+{
+    auto flags = gpiod::line_request::FLAG_OPEN_DRAIN;
+    write(0, flags);
+    std::this_thread::sleep_for(delay);
+    write(1, flags);
+}
+
 std::unique_ptr<GPIOInterfaceBase> createGPIO(const std::string& namedGpio)
 {
     return GPIOInterface::createGPIO(namedGpio);
diff --git a/phosphor-power-supply/util.hpp b/phosphor-power-supply/util.hpp
index 92e4eeb..caa5bac 100644
--- a/phosphor-power-supply/util.hpp
+++ b/phosphor-power-supply/util.hpp
@@ -11,6 +11,7 @@
 #include <phosphor-logging/log.hpp>
 
 #include <bitset>
+#include <chrono>
 
 namespace phosphor::power::psu
 {
@@ -260,6 +261,15 @@
     void write(int value, std::bitset<32> flags) override;
 
     /**
+     * @brief Attempts to toggle (write) a GPIO low then high.
+     *
+     * Relies on write, so throws exception if line not found, etc.
+     *
+     * @param[in] delay - Milliseconds to delay betwen low/high toggle.
+     */
+    void toggleLowHigh(const std::chrono::milliseconds& delay) override;
+
+    /**
      * @brief Returns the name of the GPIO, if not empty.
      */
     std::string getName() const override;
diff --git a/phosphor-power-supply/util_base.hpp b/phosphor-power-supply/util_base.hpp
index 576a965..684abdf 100644
--- a/phosphor-power-supply/util_base.hpp
+++ b/phosphor-power-supply/util_base.hpp
@@ -5,6 +5,7 @@
 #include <sdbusplus/bus/match.hpp>
 
 #include <bitset>
+#include <chrono>
 
 namespace phosphor::power::psu
 {
@@ -67,6 +68,7 @@
 
     virtual int read() = 0;
     virtual void write(int value, std::bitset<32> flags) = 0;
+    virtual void toggleLowHigh(const std::chrono::milliseconds& delay) = 0;
     virtual std::string getName() const = 0;
 };
 
