entity-manager: Expose I2CDevice for EEPROMs Currently, EEPROMs handled by kernel drivers are explicitly skipped during raw I2C bus probing via finding sysfs 'eeprom' files. As a result, they do not get the xyz.openbmc_project.Inventory.Item.I2CDevice probe interface created for them. This commit adds a patch that calls makeProbeInterface() for addresses specifically identified as kernel-bound EEPROMs to expose the probe interfaces for them. This allows the Redfish RawEeproms node to successfully discover I2CDevices and invoke the GetRawFru DBus wrapper for diagnostics for any EEPROM type. Tested: Verified on dddhd28 that kernel-bound EEPROMs are exposed correctly. Before patch: busctl tree xyz.openbmc_project.FruDevice showed successfully parsed FRUs and non-kernel I2C devices (e.g., 3_82, 3_84, 4_83). After patch: busctl tree xyz.openbmc_project.FruDevice now also includes the kernel-bound EEPROM probe nodes (e.g., 14_85, 4_80). Successfully tested raw payload extraction on the newly exposed EEPROM: busctl call xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice xyz.openbmc_project.FruDeviceManager GetRawFru qy 4 80 -> Returned correct ASCII byte array. Tested: https://paste.googleplex.com/4709904605642752 Fusion-Link: fusion2 N/A Google-Bug-Id: 537017375 Change-Id: Iee7ebe0a092123e10b4eae0c97d30782c86a942c Signed-off-by: Rutu Patel <rutupatel@google.com>
diff --git a/recipes-phosphor/configuration/entity-manager/0001-FruDevice-Expose-I2CDevice-probe-interface-for-all-d.patch b/recipes-phosphor/configuration/entity-manager/0001-FruDevice-Expose-I2CDevice-probe-interface-for-all-d.patch new file mode 100644 index 0000000..a6d6372 --- /dev/null +++ b/recipes-phosphor/configuration/entity-manager/0001-FruDevice-Expose-I2CDevice-probe-interface-for-all-d.patch
@@ -0,0 +1,54 @@ +From 6487162b767cb62fa162b882180a3a7e5480d1c5 Mon Sep 17 00:00:00 2001 +From: Rutu Patel <rutupatel@google.com> +Date: Wed, 5 Aug 2026 16:39:37 +0000 +Subject: [PATCH] FruDevice: Expose I2CDevice probe interface for all detected + EEPROMs + +Currently, EEPROMs handled by kernel drivers are explicitly skipped via finding +sysfs 'eeprom' files. They do not get the xyz.openbmc_project.Inventory.Item.I2CDevice +interface created for them. When such a device fails FRU validation (e.g. CRC error), +it has neither the parsed FruDevice interface nor the raw probe interface, effectively +disappearing from Redfish. + +By calling makeProbeInterface() for addresses specifically identified as +kernel-bound EEPROMs we expose the probe interfaces for them. This will allow +the Redfish RawEeproms node to successfully discover I2CDevices and invoke +the GetRawFru DBus wrapper for diagnostics. + +Tested: +Verified on dddhd28 that kernel-bound EEPROMs are exposed correctly. +Before patch: + busctl tree xyz.openbmc_project.FruDevice only showed parsed FRUs (e.g., 3_82, 3_84, 4_83). +After patch: + busctl tree xyz.openbmc_project.FruDevice shows newly created kernel probe nodes (e.g., 14_85, 4_80). +Successfully tested raw payload extraction on the newly exposed EEPROM via: + busctl call xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice xyz.openbmc_project.FruDeviceManager GetRawFru qy 4 80 + -> Returned correct ASCII byte array. + +Signed-off-by: Rutu Patel <rutupatel@google.com> +--- + src/fru_device.cpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/fru_device.cpp b/src/fru_device.cpp +index 697abcf..8e047a2 100644 +--- a/src/fru_device.cpp ++++ b/src/fru_device.cpp +@@ -467,6 +467,14 @@ bool i2cFruScan(const std::weak_ptr<stdplus::ManagedFd>& weakFd, int first, + + // Scan for i2c eeproms loaded on this bus. + std::set<size_t> skipList = findI2CEeproms(bus, first, last, devices); ++ ++ // Ensure that all I2C EEPROMs get the I2CDevice probe interface exposed, ++ // so their raw contents can be queried over Dbus even if FRU validation fails. ++ for (const auto& addr : skipList) ++ { ++ makeProbeInterface(bus, addr, objServer); ++ } ++ + std::set<size_t>& failedItems = failedAddresses[bus]; + std::set<size_t>& foundItems = fruAddresses[bus]; + foundItems.clear(); +-- +2.55.0.629.g250fe7f194-goog +
diff --git a/recipes-phosphor/configuration/entity-manager_%.bbappend b/recipes-phosphor/configuration/entity-manager_%.bbappend index 68b2ff8..88c77ce 100644 --- a/recipes-phosphor/configuration/entity-manager_%.bbappend +++ b/recipes-phosphor/configuration/entity-manager_%.bbappend
@@ -27,6 +27,7 @@ file://0001-entity-manager-Fix-FOUND-probe-evaluation-for-templa.patch \ file://0001-entity-manager-gracefully-handle-read-only-filesystem.patch \ file://0001-entity-manager-Fix-OOB-read-in-readFRUContents.patch \ + file://0001-FruDevice-Expose-I2CDevice-probe-interface-for-all-d.patch \ " DEPENDS:append:gbmc = " stdplus"