diff --git a/recipes-phosphor/ipmi/phosphor-ipmi-host/0007-dbus-sdr-Add-limited-log-on-sensorTree-Resets.patch b/recipes-phosphor/ipmi/phosphor-ipmi-host/0007-dbus-sdr-Add-limited-log-on-sensorTree-Resets.patch
new file mode 100644
index 0000000..75b51c4
--- /dev/null
+++ b/recipes-phosphor/ipmi/phosphor-ipmi-host/0007-dbus-sdr-Add-limited-log-on-sensorTree-Resets.patch
@@ -0,0 +1,160 @@
+From efda29daceb0dd149744a4d9a3f0f46dcd9bedd8 Mon Sep 17 00:00:00 2001
+From: Willy Tu <wltu@google.com>
+Date: Wed, 29 May 2024 17:50:09 +0000
+Subject: [PATCH] dbus-sdr: Add limited log on sensorTree Resets
+
+Tested:
+ipmi still works after updating the library
+```
+$ systemctl restart phosphor-ipmi-host
+$ ipmitool sdr
+BRICK2_P12V_IOUT | 13.08 Amps        | ok
+CPU0_P1V1_IOUT   | 7.75 Amps         | ok
+CPU0_P1V8_IOUT   | 6.39 Amps         | ok
+CPU0_P3V3_IOUT   | 0 Amps            | ok
+```
+
+Log Example with the timeout working
+```
+root@yscdn3-nfd01:~# journalctl -f | grep "Sensor Cache Tree"
+May 29 13:12:35 gbmc ipmid[18845]: Sensor Cache Tree reset with /xyz/openbmc_project/sensors/current/BRICK2_P12V_IOUT/chassis
+...
+May 29 13:12:35 gbmc ipmid[18845]: Sensor Cache Tree reset with /xyz/openbmc_project/sensors/current/CPU0_VSOC_IOUT/inventory
+
+May 29 13:13:14 gbmc ipmid[18845]: Sensor Cache Tree reset with /xyz/openbmc_project/sensors/current/BRICK2_P12V_IOUT/chassis
+...
+```
+
+Patch Tracking Bug: b/343799072
+Upstream info / review: http://go/openbmccl/71702
+Upstream-Status: Submitted
+Justification: bugfix(b/325269540). Pending upstream reviews.
+Google-Bug-Id: 325269540
+Google-Bug-Id: 343799072
+Change-Id: Ie804a3e9a9ca19e6856a0cf65ca9170c6edeca05
+Signed-off-by: Willy Tu <wltu@google.com>
+---
+ dbus-sdr/sdrutils.cpp         | 37 ++++++++++++++++++++++++++++++++---
+ dbus-sdr/sensorcommands.cpp   |  2 ++
+ include/dbus-sdr/sdrutils.hpp |  1 +
+ 3 files changed, 37 insertions(+), 3 deletions(-)
+
+diff --git a/dbus-sdr/sdrutils.cpp b/dbus-sdr/sdrutils.cpp
+index 981e1c7..b7edfa3 100644
+--- a/dbus-sdr/sdrutils.cpp
++++ b/dbus-sdr/sdrutils.cpp
+@@ -21,8 +21,9 @@
+ #include <ipmid/utils.hpp>
+ 
+ #include <algorithm>
+-#include <regex>
++#include <chrono>
+ #include <optional>
++#include <regex>
+ #include <unordered_set>
+ 
+ constexpr std::array<const char*, 7> suffixes = {
+@@ -144,6 +145,7 @@ bool isExpectedInventoryInterfacesAdded(sdbusplus::message_t& message)
+         // Only expects Item.Cable interface for now
+         if (pair.first == itemCableInterface)
+         {
++            logCacheReset(path.str);
+             return true;
+         }
+     }
+@@ -162,6 +164,34 @@ bool isInSkipTempSensorRegex(std::string_view path)
+     return std::regex_match(sensorName, skipRegex);
+ }
+ 
++void logCacheReset(std::string_view path)
++{
++    static std::chrono::time_point cacheLogTime =
++        std::chrono::system_clock::now();
++    constexpr std::chrono::seconds cacheLogTimeout(30);
++    constexpr uint8_t loggingLimit = 30;
++    static uint8_t logCount = 0;
++
++    std::chrono::time_point now = std::chrono::system_clock::now();
++    std::chrono::duration<double> elapsedSeconds = now - cacheLogTime;
++    // If the logCount is greater than the limit and we haven't timedout... then
++    // should stop logging until the timer resets.
++    if (logCount > loggingLimit && elapsedSeconds < cacheLogTimeout)
++    {
++        return;
++    }
++
++    // Reset logCount and start of cacheLogTime if we have already timedout.
++    if (elapsedSeconds >= cacheLogTimeout)
++    {
++        logCount = 0;
++        cacheLogTime = now;
++    }
++
++    logCount++;
++    std::cerr << "Sensor Cache Tree reset with " << path << std::endl;
++}
++
+ uint16_t getSensorSubtree(std::shared_ptr<SensorSubTree>& subtree)
+ {
+     static std::shared_ptr<SensorSubTree> sensorTreePtr;
+@@ -176,6 +206,7 @@ uint16_t getSensorSubtree(std::shared_ptr<SensorSubTree>& subtree)
+         msg.read(path);
+         if (isInSkipTempSensorRegex(path.str))
+             return;
++        logCacheReset(path.str);
+         sensorTreePtr.reset();
+     });
+ 
+@@ -188,6 +219,7 @@ uint16_t getSensorSubtree(std::shared_ptr<SensorSubTree>& subtree)
+         msg.read(path);
+         if (isInSkipTempSensorRegex(path.str))
+             return;
++        logCacheReset(path.str);
+         sensorTreePtr.reset();
+     });
+ 
+@@ -223,8 +255,7 @@ uint16_t getSensorSubtree(std::shared_ptr<SensorSubTree>& subtree)
+ 
+     static constexpr const int32_t depth = 2;
+ 
+-    auto lbdUpdateSensorTree = [&dbus](const char* path,
+-                                       const auto& interfaces,
++    auto lbdUpdateSensorTree = [&dbus](const char* path, const auto& interfaces,
+                                        const bool groupByObjPath = false) {
+         auto mapperCall = dbus->new_method_call(
+             "xyz.openbmc_project.ObjectMapper",
+diff --git a/dbus-sdr/sensorcommands.cpp b/dbus-sdr/sensorcommands.cpp
+index a2bebd3..f2bdd46 100644
+--- a/dbus-sdr/sensorcommands.cpp
++++ b/dbus-sdr/sensorcommands.cpp
+@@ -140,6 +140,7 @@ static sdbusplus::bus::match_t sensorAdded(
+     msg.read(path);
+     if (details::isInSkipTempSensorRegex(path.str))
+         return;
++    details::logCacheReset(path.str);
+     getSensorTree().clear();
+     getIpmiDecoratorPaths(/*ctx=*/std::nullopt).reset();
+     sdrLastAdd = std::chrono::duration_cast<std::chrono::seconds>(
+@@ -156,6 +157,7 @@ static sdbusplus::bus::match_t sensorRemoved(
+     msg.read(path);
+     if (details::isInSkipTempSensorRegex(path.str))
+         return;
++    details::logCacheReset(path.str);
+     getSensorTree().clear();
+     getIpmiDecoratorPaths(/*ctx=*/std::nullopt).reset();
+     sdrLastRemove = std::chrono::duration_cast<std::chrono::seconds>(
+diff --git a/include/dbus-sdr/sdrutils.hpp b/include/dbus-sdr/sdrutils.hpp
+index 1fa634a..d1c98ab 100644
+--- a/include/dbus-sdr/sdrutils.hpp
++++ b/include/dbus-sdr/sdrutils.hpp
+@@ -286,6 +286,7 @@ bool getSensorNumMap(std::shared_ptr<SensorNumMap>& sensorNumMap);
+ bool isExpectedInventoryInterfacesRemoved(sdbusplus::message_t& message);
+ bool isExpectedInventoryInterfacesAdded(sdbusplus::message_t& message);
+ bool isInSkipTempSensorRegex(std::string_view path);
++void logCacheReset(std::string_view path);
+ } // namespace details
+ 
+ bool getSensorSubtree(SensorSubTree& subtree);
+-- 
+2.45.1.288.g0e0cd299f1-goog
+
diff --git a/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
index 89e8688..43b4412 100644
--- a/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
+++ b/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
@@ -9,4 +9,5 @@
   file://0004-Fix-ID-String-Type-Length-Code-byte-for-get-sdr-comm.patch \
   file://0005-dbus-sdr-add-event-type-for-sdr-count.patch \
   file://0006-dbus-sdr-fix-write-permission-for-external-sen.patch \
+  file://0007-dbus-sdr-Add-limited-log-on-sensorTree-Resets.patch \
 "
