diff --git a/recipes-google/ipmi/google-ipmi-sys/0001-pcie_bifurcation-Fetch-highest-level-bifurcation-at-.patch b/recipes-google/ipmi/google-ipmi-sys/0001-pcie_bifurcation-Fetch-highest-level-bifurcation-at-.patch
index 63e000f..b6016e7 100644
--- a/recipes-google/ipmi/google-ipmi-sys/0001-pcie_bifurcation-Fetch-highest-level-bifurcation-at-.patch
+++ b/recipes-google/ipmi/google-ipmi-sys/0001-pcie_bifurcation-Fetch-highest-level-bifurcation-at-.patch
@@ -1,4 +1,4 @@
-From afe9ea49b93310aba31c78c1882d2ec9fefbbe9e Mon Sep 17 00:00:00 2001
+From e3c62b4fb4d96a55abc52d439ad5965cbfe0fe2c Mon Sep 17 00:00:00 2001
 From: Willy Tu <wltu@google.com>
 Date: Sun, 10 Oct 2021 13:34:41 -0700
 Subject: [PATCH] bifurcation: Enable Dynamic Bifurication
@@ -40,9 +40,10 @@
 %% original patch: 0001-pcie_bifurcation-Fetch-highest-level-bifurcation-at-.patch
 
 Change-Id: I0c473ae5657533113958b0b57f3145dd072f9b8a
+Signed-off-by: Willy Tu <wltu@google.com>
 ---
  bifurcation/bifurcation.hpp         | 159 +++++++++++++++-
- bifurcation/bifurcation_dynamic.cpp | 222 +++++++++++++++++++++++
+ bifurcation/bifurcation_dynamic.cpp | 222 ++++++++++++++++++++++
  bifurcation/bifurcation_static.cpp  |   3 +-
  bifurcation/meson.build             |   1 +
  handler.cpp                         |  55 +++++-
@@ -55,9 +56,9 @@
  pcie_bifurcation.hpp                |   5 +-
  test/bifurcation_mock.hpp           |  56 ++++++
  test/handler_mock.hpp               |   3 +-
- test/handler_unittest.cpp           | 271 +++++++++++++++++++++++++++-
+ test/handler_unittest.cpp           | 274 +++++++++++++++++++++++++++-
  test/pcie_bifurcation_unittest.cpp  |  66 ++++++-
- 16 files changed, 869 insertions(+), 28 deletions(-)
+ 16 files changed, 872 insertions(+), 28 deletions(-)
  create mode 100644 bifurcation/bifurcation_dynamic.cpp
  create mode 100644 test/bifurcation_mock.hpp
 
@@ -531,7 +532,7 @@
      dependencies: bifurcation_deps,
      include_directories: [bifurcation_inc, root_inc],
 diff --git a/handler.cpp b/handler.cpp
-index 66210a3..8927c85 100644
+index 863a253..8855011 100644
 --- a/handler.cpp
 +++ b/handler.cpp
 @@ -31,6 +31,7 @@
@@ -560,7 +561,7 @@
  #include <variant>
  
  #ifndef NCSI_IF_NAME
-@@ -667,9 +671,56 @@ void Handler::accelOobWrite(std::string_view name, uint64_t address,
+@@ -672,9 +676,56 @@ void Handler::accelOobWrite(std::string_view name, uint64_t address,
      }
  }
  
@@ -620,7 +621,7 @@
  }
  
 diff --git a/handler.hpp b/handler.hpp
-index adcbafb..9333830 100644
+index 8aa859a..0f9083d 100644
 --- a/handler.hpp
 +++ b/handler.hpp
 @@ -202,9 +202,12 @@ class HandlerInterface
@@ -639,7 +640,7 @@
      /**
       * Prepare for OS boot.
 diff --git a/handler_impl.hpp b/handler_impl.hpp
-index f2456b3..1755ac6 100644
+index 8358bdb..c89b0d3 100644
 --- a/handler_impl.hpp
 +++ b/handler_impl.hpp
 @@ -14,10 +14,13 @@
@@ -682,7 +683,7 @@
      uint32_t accelOobDeviceCount() const override;
      std::string accelOobDeviceName(size_t index) const override;
 diff --git a/ipmi.cpp b/ipmi.cpp
-index c086bc4..df9771e 100644
+index f76c1a8..e60e927 100644
 --- a/ipmi.cpp
 +++ b/ipmi.cpp
 @@ -12,6 +12,8 @@
@@ -704,15 +705,16 @@
              return linuxBootDone(data, handler);
          case SysGetAccelVrSettings:
 diff --git a/meson.build b/meson.build
-index 39ae9c5..d0b6394 100644
+index 899c726..379ffa3 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -13,10 +13,19 @@ conf_data.set_quoted(
+@@ -13,11 +13,20 @@ conf_data.set_quoted(
      'STATIC_BIFURCATION_CONFIG',
      get_option('static-bifurcation'),
  )
 +
  conf_data.set_quoted('CPU_CONFIG_PATH', get_option('cpu-config-path'))
+ conf_data.set_quoted('MEMORY_CONFIG_PATH', get_option('memory-config-path'))
  
  conf_data.set10('IPMI_ALLOWLIST', get_option('ipmi_allowlist'))
  
@@ -728,10 +730,10 @@
  
  bm_conf_data = configuration_data()
 diff --git a/meson.options b/meson.options
-index 4239f04..8a8125b 100644
+index 5b3386f..6398239 100644
 --- a/meson.options
 +++ b/meson.options
-@@ -30,3 +30,16 @@ option(
+@@ -36,3 +36,16 @@ option(
      value: false,
      description: 'IPMI allowlist enablement Flag',
  )
@@ -875,7 +877,7 @@
 +} // namespace ipmi
 +} // namespace google
 diff --git a/test/handler_mock.hpp b/test/handler_mock.hpp
-index a8c0821..a58e273 100644
+index 5a05d52..1c85c9a 100644
 --- a/test/handler_mock.hpp
 +++ b/test/handler_mock.hpp
 @@ -64,8 +64,9 @@ class HandlerMock : public HandlerInterface
@@ -890,7 +892,7 @@
      MOCK_METHOD(void, accelSetVrSettings,
                  (::ipmi::Context::ptr, uint8_t, uint8_t, uint16_t),
 diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
-index d28014a..2f6ab1f 100644
+index d7e7ff1..5f5150f 100644
 --- a/test/handler_unittest.cpp
 +++ b/test/handler_unittest.cpp
 @@ -12,9 +12,13 @@
@@ -957,10 +959,14 @@
          EXPECT_TRUE(bifurcation.empty());
      }
  }
-@@ -722,6 +729,262 @@ TEST(HandlerTest, GetCoreCountWithExtraKeys)
-     std::remove(testFilename);
- }
+@@ -802,6 +809,265 @@ TEST(HandlerTest, GetMemoryCapacityGibWithExtraKeys)
  
+     Handler h;
+     EXPECT_EQ(h.getMemoryCapacityGib(testFilename), 512);
++
++    std::remove(testFilename);
++}
++
 +struct PhysicalTopology
 +{
 +    std::string name;
@@ -1173,7 +1179,9 @@
 +TEST(HandlerTest, PcieBifurcationDynamicChannels)
 +{
 +    std::vector<std::string> baseAssociations = {
-+        "slot-10", "slot-20", "slot-30",
++        "slot-10",
++        "slot-20",
++        "slot-30",
 +    };
 +    std::vector<PhysicalTopology> topology = {
 +        {"slot-10", 10, 16, std::vector<std::string>{}, 2},
@@ -1214,12 +1222,9 @@
 +    bifurcation = h.pcieBifurcation(nullptr, 2, true);
 +    EXPECT_THAT(bifurcation, ElementsAre(16));
 +
-+    std::remove(testFilename);
-+}
-+
- // TODO: Add checks for other functions of handler.
+     std::remove(testFilename);
+ }
  
- } // namespace ipmi
 diff --git a/test/pcie_bifurcation_unittest.cpp b/test/pcie_bifurcation_unittest.cpp
 index 90e81e4..8c1a398 100644
 --- a/test/pcie_bifurcation_unittest.cpp
diff --git a/recipes-google/ipmi/google-ipmi-sys/0002-boot-time-monitor-Add-commands.patch b/recipes-google/ipmi/google-ipmi-sys/0002-boot-time-monitor-Add-commands.patch
index c295e56..aaf916c 100644
--- a/recipes-google/ipmi/google-ipmi-sys/0002-boot-time-monitor-Add-commands.patch
+++ b/recipes-google/ipmi/google-ipmi-sys/0002-boot-time-monitor-Add-commands.patch
@@ -1,7 +1,7 @@
-From f564d08b3a2fa04a37b38edb7300d5f96f5ca00a Mon Sep 17 00:00:00 2001
+From 72edc8cd0197aef6dda730f2f56bf78c516309c2 Mon Sep 17 00:00:00 2001
 From: Michael Shen <gpgpgp@google.com>
 Date: Mon, 29 Apr 2024 03:30:08 +0000
-Subject: [PATCH] boot-time-monitor: Add commands
+Subject: [PATCH 2/3] boot-time-monitor: Add commands
 
 Add new commands `sendRebootCheckpoint`, `sendRebootComplete` and
 `sendRebootAdditionalDuration`.
@@ -50,7 +50,7 @@
  create mode 100644 test/boot_time_monitor_unittest.cpp
 
 diff --git a/README.md b/README.md
-index aa84259..72fa05e 100644
+index ec30690..7c8225c 100644
 --- a/README.md
 +++ b/README.md
 @@ -460,6 +460,51 @@ Response (if applicable)
@@ -303,7 +303,7 @@
 +} // namespace ipmi
 +} // namespace google
 diff --git a/handler.cpp b/handler.cpp
-index a4e8c1f..5ea5f0e 100644
+index 8855011..69f6850 100644
 --- a/handler.cpp
 +++ b/handler.cpp
 @@ -801,6 +801,81 @@ void Handler::linuxBootDone() const
@@ -389,7 +389,7 @@
  static constexpr char ACCEL_POWER_PATH_PREFIX[] =
      "/com/google/accelPower/accel_power_";
 diff --git a/handler.hpp b/handler.hpp
-index 9333830..b04f6f2 100644
+index 0f9083d..c3380bc 100644
 --- a/handler.hpp
 +++ b/handler.hpp
 @@ -217,6 +217,35 @@ class HandlerInterface
@@ -429,7 +429,7 @@
       * Update the VR settings for the given settings_id
       *
 diff --git a/handler_impl.hpp b/handler_impl.hpp
-index 1755ac6..b72dd59 100644
+index c89b0d3..9360dc5 100644
 --- a/handler_impl.hpp
 +++ b/handler_impl.hpp
 @@ -85,6 +85,11 @@ class Handler : public HandlerInterface
@@ -445,7 +445,7 @@
                              uint8_t settings_id, uint16_t value) const override;
      uint16_t accelGetVrSettings(::ipmi::Context::ptr ctx, uint8_t chip_id,
 diff --git a/ipmi.cpp b/ipmi.cpp
-index df9771e..74d554a 100644
+index e60e927..965d6d2 100644
 --- a/ipmi.cpp
 +++ b/ipmi.cpp
 @@ -19,6 +19,7 @@
@@ -470,10 +470,10 @@
              return accelGetVrSettings(ctx, data, handler);
          case SysSetAccelVrSettings:
 diff --git a/meson.build b/meson.build
-index 9c1b718..5629568 100644
+index 379ffa3..39d8a95 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -65,6 +65,7 @@ sys_lib = static_library(
+@@ -67,6 +67,7 @@ sys_lib = static_library(
      'eth.cpp',
      'flash_size.cpp',
      'handler.cpp',
@@ -481,7 +481,7 @@
      'host_power_off.cpp',
      'ipmi.cpp',
      'linux_boot_done.cpp',
-@@ -76,7 +77,7 @@ sys_lib = static_library(
+@@ -78,7 +79,7 @@ sys_lib = static_library(
      'psu.cpp',
      'util.cpp',
      implicit_include_directories: false,
@@ -708,7 +708,7 @@
 +} // namespace ipmi
 +} // namespace google
 diff --git a/test/handler_mock.hpp b/test/handler_mock.hpp
-index a58e273..ea1903c 100644
+index 1c85c9a..f7b9c75 100644
 --- a/test/handler_mock.hpp
 +++ b/test/handler_mock.hpp
 @@ -68,6 +68,12 @@ class HandlerMock : public HandlerInterface
@@ -725,7 +725,7 @@
                  (::ipmi::Context::ptr, uint8_t, uint8_t, uint16_t),
                  (const, override));
 diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
-index e69a307..317ef36 100644
+index 6ce5d22..7a3d83b 100644
 --- a/test/handler_unittest.cpp
 +++ b/test/handler_unittest.cpp
 @@ -308,8 +308,8 @@ void ExpectGetManagedObjects(StrictMock<sdbusplus::SdBusMock>& mock,
@@ -739,7 +739,7 @@
  {
      EXPECT_CALL(mock, sd_bus_message_new_method_call(
                            _,         // sd_bus *bus,
-@@ -935,6 +935,198 @@ TEST(HandlerTest, PcieBifurcationDynamic)
+@@ -1069,6 +1069,198 @@ TEST(HandlerTest, PcieBifurcationDynamicChannels)
      std::remove(testFilename);
  }
  
@@ -939,7 +939,7 @@
  
  } // namespace ipmi
 diff --git a/test/meson.build b/test/meson.build
-index 9a6308a..f231333 100644
+index 413ec04..51bd580 100644
 --- a/test/meson.build
 +++ b/test/meson.build
 @@ -28,6 +28,7 @@ tests = [
@@ -951,5 +951,5 @@
      'pcie',
      'poweroff',
 -- 
-2.55.0.141.g00534a21ce-goog
+2.55.0.1007.g17ff1f9808-goog
 
diff --git a/recipes-google/ipmi/google-ipmi-sys/0003-Revert-sdbusplus-use-shorter-type-aliases.patch b/recipes-google/ipmi/google-ipmi-sys/0003-Revert-sdbusplus-use-shorter-type-aliases.patch
index 128870b..d3879ac 100644
--- a/recipes-google/ipmi/google-ipmi-sys/0003-Revert-sdbusplus-use-shorter-type-aliases.patch
+++ b/recipes-google/ipmi/google-ipmi-sys/0003-Revert-sdbusplus-use-shorter-type-aliases.patch
@@ -1,7 +1,7 @@
-From 38654e656ea76f4bf97c9903c8ef362e1554ab2c Mon Sep 17 00:00:00 2001
+From bf753d8bcffccb627a56b5df36009a1e223edd8a Mon Sep 17 00:00:00 2001
 From: Willy Tu <wltu@google.com>
 Date: Wed, 15 Jul 2026 16:06:41 +0000
-Subject: [PATCH] Revert "sdbusplus: use shorter type aliases"
+Subject: [PATCH 3/3] Revert "sdbusplus: use shorter type aliases"
 
 sdbusplus is not updated yet.
 
@@ -11,10 +11,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/handler.cpp b/handler.cpp
-index dec6f22..7f80b0c 100644
+index 69f6850..d56767b 100644
 --- a/handler.cpp
 +++ b/handler.cpp
-@@ -473,8 +473,8 @@ using AnyType = std::variant<std::string, uint8_t, uint32_t, uint64_t>;
+@@ -477,8 +477,8 @@ using AnyType = std::variant<std::string, uint8_t, uint32_t, uint64_t>;
  using AnyTypeList = std::vector<std::pair<std::string, AnyType>>;
  using NamedArrayOfAnyTypeLists =
      std::vector<std::pair<std::string, AnyTypeList>>;
@@ -26,5 +26,5 @@
  } // namespace
  
 -- 
-2.55.0.141.g00534a21ce-goog
+2.55.0.1007.g17ff1f9808-goog
 
