diff --git a/recipes-phosphor/smbios/smbios-mdr/0001-smbios-mdr-Add-support-to-get-SystemBootInfo.patch b/recipes-phosphor/smbios/smbios-mdr/0001-smbios-mdr-Add-support-to-get-SystemBootInfo.patch
deleted file mode 100644
index 5710708..0000000
--- a/recipes-phosphor/smbios/smbios-mdr/0001-smbios-mdr-Add-support-to-get-SystemBootInfo.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-From c4c3a905aa0073d0726790a06f026739a075f069 Mon Sep 17 00:00:00 2001
-From: Alex Lai <alexlai@google.com>
-Date: Tue, 1 Jul 2025 07:49:18 +0000
-Subject: [PATCH] smbios-mdr: Add support to get SystemBootInfo
-
-ref: https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.2.0.pdf?page=121
-
-Tested: b/409172603#comment#15
-Google-Bug-Id: 409172603
-Signed-off-by: Alex Lai <alexlai@google.com>
----
- include/mdrv2.hpp        |  2 ++
- include/smbios_mdrv2.hpp | 11 ++++++++++
- include/system_boot.hpp  | 46 ++++++++++++++++++++++++++++++++++++++++
- src/mdrv2.cpp            | 15 +++++++++++++
- src/meson.build          |  1 +
- src/system_boot.cpp      | 27 +++++++++++++++++++++++
- 6 files changed, 102 insertions(+)
- create mode 100644 include/system_boot.hpp
- create mode 100644 src/system_boot.cpp
-
-diff --git a/include/mdrv2.hpp b/include/mdrv2.hpp
-index 5ccbb49..40e12a9 100644
---- a/include/mdrv2.hpp
-+++ b/include/mdrv2.hpp
-@@ -20,6 +20,7 @@
- #include "pcieslot.hpp"
- #include "smbios_mdrv2.hpp"
- #include "system.hpp"
-+#include "system_boot.hpp"
- 
- #ifdef GOOGLE_CPU_LINK
- #include "cpulink.hpp"
-@@ -211,6 +212,7 @@ class MDRV2 :
-     std::vector<std::unique_ptr<Dimm>> dimms;
-     std::vector<std::unique_ptr<Pcie>> pcies;
-     std::unique_ptr<System> system;
-+    std::unique_ptr<SystemBoot> system_boot;
-     std::shared_ptr<sdbusplus::asio::dbus_interface> smbiosInterface;
- 
-     std::string smbiosFilePath;
-diff --git a/include/smbios_mdrv2.hpp b/include/smbios_mdrv2.hpp
-index b7906bc..8421473 100644
---- a/include/smbios_mdrv2.hpp
-+++ b/include/smbios_mdrv2.hpp
-@@ -157,6 +157,16 @@ struct EntryPointStructure30
-     uint64_t structTableAddr;
- } __attribute__((packed));
- 
-+struct SystemBootInfo
-+{
-+    uint8_t type;
-+    uint8_t length;
-+    uint16_t handle;
-+    uint8_t reserved[6];
-+    uint8_t statusCode;
-+    uint32_t bootCount;
-+} __attribute__((packed));
-+
- #ifdef GOOGLE_CPU_LINK
- struct CpuLinkInfo
- {
-@@ -206,6 +216,7 @@ typedef enum
-     systemEventLogType = 15,
-     physicalMemoryArrayType = 16,
-     memoryDeviceType = 17,
-+    systemBootInformationType = 32,
- #ifdef GOOGLE_CPU_LINK
-     googleCpuLinkType = 162,
- #endif
-diff --git a/include/system_boot.hpp b/include/system_boot.hpp
-new file mode 100644
-index 0000000..de6c997
---- /dev/null
-+++ b/include/system_boot.hpp
-@@ -0,0 +1,46 @@
-+#pragma once
-+#include "smbios_mdrv2.hpp"
-+
-+#include <phosphor-logging/lg2.hpp>
-+#include <sdbusplus/asio/object_server.hpp>
-+
-+namespace phosphor
-+{
-+
-+namespace smbios
-+{
-+
-+class SystemBoot
-+{
-+  public:
-+    SystemBoot() = delete;
-+    SystemBoot(const SystemBoot&) = delete;
-+    SystemBoot& operator=(const SystemBoot&) = delete;
-+    SystemBoot(SystemBoot&&) = delete;
-+    SystemBoot& operator=(SystemBoot&&) = delete;
-+    ~SystemBoot() = default;
-+
-+    SystemBoot(std::shared_ptr<sdbusplus::asio::object_server>& objServer,
-+               struct SystemBootInfo* bootInfo,
-+               const std::string& smbiosInventoryPath) :
-+        server(objServer), bootInfoPtr(bootInfo),
-+        smbiosInventoryPathStr(smbiosInventoryPath)
-+    {
-+        infoUpdate();
-+    }
-+
-+    void infoUpdate();
-+
-+  private:
-+    std::shared_ptr<sdbusplus::asio::object_server>& server;
-+
-+    std::shared_ptr<sdbusplus::asio::dbus_interface> objectInterface;
-+
-+    struct SystemBootInfo* bootInfoPtr;
-+
-+    const std::string& smbiosInventoryPathStr;
-+};
-+
-+} // namespace smbios
-+
-+} // namespace phosphor
-diff --git a/src/mdrv2.cpp b/src/mdrv2.cpp
-index 3a7c673..cb608e5 100644
---- a/src/mdrv2.cpp
-+++ b/src/mdrv2.cpp
-@@ -714,6 +714,21 @@ void MDRV2::systemInfoUpdate()
-         }
-     }
- 
-+    {
-+        uint8_t* dataIn = smbiosDir.dir[smbiosDirIndex].dataStorage;
-+        if (dataIn == nullptr)
-+        {
-+            phosphor::logging::log<phosphor::logging::level::ERR>(
-+                "instantiate cpu links failed - no storage data");
-+            return;
-+        }
-+        dataIn = getSMBIOSTypePtr(dataIn, systemBootInformationType);
-+        auto systemBootInfo = reinterpret_cast<struct SystemBootInfo*>(dataIn);
-+        system_boot = std::make_unique<SystemBoot>(objServer, systemBootInfo,
-+                                                   smbiosInventoryPath);
-+        lg2::info("system boot info added");
-+    }
-+
-     system.reset();
-     system = std::make_unique<System>(bus, smbiosInventoryPath + systemSuffix,
-                                       smbiosDir.dir[smbiosDirIndex].dataStorage,
-diff --git a/src/meson.build b/src/meson.build
-index 53292c7..c64b0f6 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -31,6 +31,7 @@ smbiosmdrv_sources = [
-   'cpu.cpp',
-   'dimm.cpp',
-   'system.cpp',
-+  'system_boot.cpp',
-   'pcieslot.cpp',
- ]
- 
-diff --git a/src/system_boot.cpp b/src/system_boot.cpp
-new file mode 100644
-index 0000000..08eedfa
---- /dev/null
-+++ b/src/system_boot.cpp
-@@ -0,0 +1,27 @@
-+#include "system_boot.hpp"
-+
-+namespace phosphor
-+{
-+namespace smbios
-+{
-+
-+void SystemBoot::infoUpdate()
-+{
-+    // get system path name
-+    std::string path = smbiosInventoryPathStr;
-+
-+    // populate info to dbus
-+    objectInterface = server->add_interface(
-+        path, "xyz.openbmc_project.Inventory.Item.SystemBoot");
-+    objectInterface->register_property("StatusCode", bootInfoPtr->statusCode);
-+    objectInterface->register_property("BootCount", bootInfoPtr->bootCount);
-+
-+    bool result = objectInterface->initialize();
-+    if (!result)
-+    {
-+        lg2::error("Failed to initialize System boot object");
-+    }
-+}
-+
-+} // namespace smbios
-+} // namespace phosphor
--- 
-2.50.0.727.gbf7dc18ff4-goog
-
diff --git a/recipes-phosphor/smbios/smbios-mdr_%.bbappend b/recipes-phosphor/smbios/smbios-mdr_%.bbappend
index 35337f9..6f152bd 100644
--- a/recipes-phosphor/smbios/smbios-mdr_%.bbappend
+++ b/recipes-phosphor/smbios/smbios-mdr_%.bbappend
@@ -5,7 +5,6 @@
   file://0001-Use-Device-Locator-as-DIMM-Object-Path-if-Enabled.patch \
   file://0001-Support-CoreEnable-attribute.patch \
   file://0001-Process-smbios-grpc-blob-tranasfer.patch \
-  file://0001-smbios-mdr-Add-support-to-get-SystemBootInfo.patch \
 "
 
 EXTRA_OEMESON:append:gbmc = " -Ddimm-only-locator=enabled"
