History log of /openbmc/entity-manager/src/entity_manager/ (Results 1 – 25 of 113)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
9d684ca113-Jan-2026 Alexander Hansen <alexander.hansen@9elements.com>

extract function templateCharReplaceLoop

function templateCharReplace has become too long and hard to understand
since a couple things are all combined into one function:

- recursion down to std::s

extract function templateCharReplaceLoop

function templateCharReplace has become too long and hard to understand
since a couple things are all combined into one function:

- recursion down to std::string
- iterating over DBus interface properties to replace
- hex number handling

Extract function templateCharReplaceLoop to isolate the part where we
are iterating over the DBus interface properties.

Tested: Existing unit tests for this function pass.

Change-Id: I5bf99a4a9415c92ae5e2b374fa921e176503732e
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

83c8e49413-Jan-2026 Alexander Hansen <alexander.hansen@9elements.com>

refactor handleLeftOverTemplateVars

Handling of leftover template vars is only done on strings, the rest
of the function is just recursion to get there.

Break out some function overloads, which res

refactor handleLeftOverTemplateVars

Handling of leftover template vars is only done on strings, the rest
of the function is just recursion to get there.

Break out some function overloads, which results in smaller functions.

Tested: Existing and newly written unit tests pass.

Confirmed (via LSP) that the newly written overloads are actually called
in testcases.

Change-Id: Iefc496caca22a1495b2c3fdd6b39c0fe97ce1416
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

193fd6cc12-Feb-2026 Nagavarapu Sai Pavan <saipavann@ami.com>

entity-manager: Remove duplicate PIC32 export template

PIC32 export template entry was duplicated in devices.hpp.
Remove the redundant entry.

Change-Id: If2df7da9b04fddbe9ed3352cbb4a55e59ca2d0e0
Si

entity-manager: Remove duplicate PIC32 export template

PIC32 export template entry was duplicated in devices.hpp.
Remove the redundant entry.

Change-Id: If2df7da9b04fddbe9ed3352cbb4a55e59ca2d0e0
Signed-off-by: Nagavarapu Sai Pavan <saipavann@ami.com>

show more ...

48f2c87503-Nov-2025 Jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>

Add support for PCF85053 RTC device

Add support for PCF85053 RTC device in entity-manager to enable dynamic
RTC configuration for modular platforms (1S/2S/4S). This allows RTC
devices behind MUX's t

Add support for PCF85053 RTC device

Add support for PCF85053 RTC device in entity-manager to enable dynamic
RTC configuration for modular platforms (1S/2S/4S). This allows RTC
devices behind MUX's to be properly managed instead of being hardcoded
in device tree, which doesn't work for modular configurations where RTC
is accessed through different I2C bus paths.

Tested:
1S and 2S platforms - RTC devices are properly detected and functional.
:~# dmesg | grep rtc
[ 1.763117] rtc-pcf85053 12-006f: registered as rtc0
[ 1.770755] rtc-pcf85053 12-006f: setting system clock to
2025-10-31T06:20:21 UTC (1761891621)
Command: :~# timedatectl
Local time: Wed 2025-11-05 04:30:45 UTC
Universal time: Wed 2025-11-05 04:30:45 UTC
RTC time: Wed 2025-11-05 04:30:45
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Change-Id: Ibd00c190614d5bc8e33a4a1926e89c5872a2cb00
Signed-off-by: Jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
Signed-off-by: poram srinivasa rao <poramx.srinivasa.rao@intel.com>
Signed-off-by: Ed Tanous <etanous@nvidia.com>

show more ...

2ad634b920-Jan-2026 Nagavarapu Sai Pavan <saipavann@ami.com>

entity-manager: Fix addValueToDBus permission handling

The addValueToDBus() helper was hardcoding the property permission to
readOnly for non-array values, ignoring the permission argument passed
by

entity-manager: Fix addValueToDBus permission handling

The addValueToDBus() helper was hardcoding the property permission to
readOnly for non-array values, ignoring the permission argument passed
by the caller.

Update the implementation to honor the provided permission so that
properties can be correctly registered as read-write when required.

Inspection:

callers of addValueToDBus:
- populateInterfacePropertyFromJson

callers of populateInterfacePropertyFromJson:
- EMDBusInterface::populateInterfaceFromJson

callers of EMDBusInterface::populateInterfaceFromJson:
```
1 src/entity_manager/dbus_interface.cpp|369 col 5
2 src/entity_manager/entity_manager.cpp|182 col 20
3 src/entity_manager/entity_manager.cpp|194 col 28
4 src/entity_manager/entity_manager.cpp|273 col 24
5 src/entity_manager/entity_manager.cpp|285 col 24
6 src/entity_manager/entity_manager.cpp|309 col 20
7 src/entity_manager/entity_manager.cpp|329 col 24
8 src/entity_manager/entity_manager.cpp|372 col 28
```

1 is 'AddObject' use-case and sets read-write permission.
See no issue with it since that seems to be the intent of 'AddObject',
to be able to modify config externally.

2,3 uses default overload with read-only permission => no changes

inside `EntityManager::postExposesRecordsToDBus`
4,5,6 uses getPermission function to determine permission

inside `EntityManager::postConfigurationRecord`:
7,8 uses getPermission function to determine permission

`getPermission` looks at `settableInterfaces` which are
```
static constexpr std::array<const char*, 6> settableInterfaces = {
"FanProfile", "Pid", "Pid.Zone", "Stepwise", "Thresholds", "Polling"};
```

Tested: on Tyan S8030 (with full board, chassis, psu configs)

Using following script to dump the full EM D-Bus tree:
```
busctl tree --system xyz.openbmc_project.EntityManager --list |
while read -r obj; do
echo "### $obj"
busctl introspect --xml-interface xyz.openbmc_project.EntityManager "$obj"
done
```

which will dump everything similar to below format:
```
<interface name="xyz.openbmc_project.Configuration.Port">
<property name="Name" type="s" access="read">
</property>
<property name="PortType" type="s" access="read">
</property>
<property name="Type" type="s" access="read">
</property>
</interface>
```

step 1: dump without this change (master branch,
1f08ce74119b4cbd97e542e11eefc5fe99de9d94)

```
./em-recursive-permission.sh > busctl-em-output-master.txt
```

As expected, with the unpatched code the `getPermission` function only
has effect on the array properties of the intended 'settable'
interfaces. For example Type 'Pid' is intended settable but only a few
properties are actually read-write.

```
<interface name="xyz.openbmc_project.Configuration.Pid">
<property name="Class" type="s" access="read">
</property>
<property name="FFGainCoefficient" type="d" access="read">
</property>
<property name="FFOffCoefficient" type="d" access="read">
</property>
<property name="ICoefficient" type="d" access="read">
</property>
<property name="ILimitMax" type="d" access="read">
</property>
<property name="ILimitMin" type="d" access="read">
</property>
<property name="Inputs" type="as" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
...
```

step 2: dump with this change
```
./em-recursive-permission.sh > busctl-em-output-permission-fixed.txt
```

```
diff busctl-em-output-master.txt busctl-em-output-permission-fixed.txt | wc -l
2466
```

Now the effect of 'getPermission' function fully appears
```
<interface name="xyz.openbmc_project.Configuration.Pid">
<property name="Class" type="s" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
<property name="FFGainCoefficient" type="d" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
<property name="FFOffCoefficient" type="d" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
<property name="ICoefficient" type="d" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
<property name="ILimitMax" type="d" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
<property name="ILimitMin" type="d" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
<property name="Inputs" type="as" access="readwrite">
<annotation name="org.freedesktop.systemd1.Privileged" value="true"/>
</property>
```

Setting the property works but returns a false error:
```
root@s8030-bmc-30303035c0c1:~# busctl set-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/MBX_1_57_Chassis/Fan_Control xyz.openbmc_project.Configuration.Pid FFGainCoefficient d 4.0
Failed to set property FFGainCoefficient on interface xyz.openbmc_project.Configuration.Pid: Invalid argument
root@s8030-bmc-30303035c0c1:~# busctl get-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/MBX_1_57_Chassis/Fan_Control xyz.openbmc_project.Configuration.Pid FFGainCoefficient
d 4
```

Trying the same for array properties works as well, same bug (unrelated
to this change).
```
busctl set-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/MBX_1_57_Chassis/Fan_Control xyz.openbmc_project.Configuration.Pid Outputs as 4 "Pwm 3" "Pwm 4" "Pwm 5" "Pwm 6"
Failed to set property Outputs on interface xyz.openbmc_project.Configuration.Pid: Invalid argument
root@s8030-bmc-30303035c0c1:~# busctl get-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/MBX_1_57_Chassis/Fan_Control xyz.openbmc_project.Configuration.Pid Outputs
as 4 "Pwm 3" "Pwm 4" "Pwm 5" "Pwm 6"
```

Since it's currently impossible to search for usages of D-Bus interfaces
in OpenBMC [1], it may not be possible to make things read-only without
breaking anyone. Passing through the intended permission is more
consistent, the correct permission has to be set by the caller.

References:

[1] https://gerrit.openbmc.org/c/openbmc/docs/+/86505/comments/d00a8148_e38bbdf8

Change-Id: I8372e5068cd18da3c336f793ca2478d5d1002fde
Signed-off-by: Nagavarapu Sai Pavan <saipavann@ami.com>
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

380fa01f04-Feb-2026 Eric Yang <eric.yang.wiwynn@gmail.com>

entity-manager: Skip retries for removed D-Bus objects during scan

Detect when GetAll fails with EBADR (errno 53) and skip retry logic
instead of exhausting all retry attempts. This error code corre

entity-manager: Skip retries for removed D-Bus objects during scan

Detect when GetAll fails with EBADR (errno 53) and skip retry logic
instead of exhausting all retry attempts. This error code corresponds
to org.freedesktop.DBus.Error.UnknownObject and indicates the target
object was removed between GetSubTree enumeration and the subsequent
GetAll property fetch.

Log the condition at info level to provide visibility without flooding
error logs, as concurrent object removal is expected during device
hotplug or FRU rescanning operations.

Motivation:
Entity manager performs asynchronous D-Bus enumeration by first calling
GetSubTree to discover objects, then scheduling Properties.GetAll calls
to retrieve properties. If devices are removed during this window, for
example during multi-slot power cycles or FRU rescans, GetAll fails
because the target object no longer exists.

The existing retry mechanism treats all errors uniformly, exhausting
five retries with two-second delays (totaling ten seconds per removed
object) before giving up. When many objects churn concurrently, these
retries accumulate and significantly extend scan completion time.

sdbusplus obtains the mapped errno from sd-bus via message.get_errno()
and converts it to a boost::system::error_code for callers. Detecting
EBADR lets the scan logic treat the failure as an object removed
condition and skip futile retries, reducing scan latency and log noise
during device churn.

Change-Id: I87ab1979a190734d321e580370779bff1b26ebd2
Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>

show more ...

e548bbe009-Jan-2026 Eric Yang <eric.yang.wiwynn@gmail.com>

Create Inventory.Item with boardNameOrig as parent

In EntityManager::postBoardToDBus, use boardNameOrig as the parent when
creating the initial xyz.openbmc_project.Inventory.Item interface so it
mat

Create Inventory.Item with boardNameOrig as parent

In EntityManager::postBoardToDBus, use boardNameOrig as the parent when
creating the initial xyz.openbmc_project.Inventory.Item interface so it
matches the parent used by subsequent interfaces for the same device.

Motivation:
EMDBusInterface::inventory groups interfaces by the “parent” string
passed to createInterface, and getDeviceInterfaces / pruneConfiguration
access that grouping using device["Name"].

Previously, the first interface for a device (Inventory.Item) was
grouped under the underscored, sanitized name, while the rest were
grouped under the non-sanitized name. This split a single device across
two inventory groups, so pruning removed only the non-sanitized group
and left the underscored group behind.

By creating the initial Inventory.Item with boardNameOrig, all
interfaces for a device land under a single key, pruneConfiguration
removes them together, and re-scan/re-add no longer accumulates stray
interfaces.

Change-Id: I01abb26ff139d6aa802d9161113b54777f8861fb
Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>

show more ...

1f08ce7416-Oct-2025 Alexander Hansen <alexander.hansen@9elements.com>

meson: create static library utils_lib

utils.cpp was compiled 3 times in tests and binaries. Create a static
library so it is only compiled once.

Tested: Code compiles.

Change-Id: Ief6f7153c4494b7

meson: create static library utils_lib

utils.cpp was compiled 3 times in tests and binaries. Create a static
library so it is only compiled once.

Tested: Code compiles.

Change-Id: Ief6f7153c4494b77fa7a1b9a53e1971bdd4652f2
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...


/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_aalc.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_canbus.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_fan_tic.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_management.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_minisas_bottom.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_minisas_top.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_rmcv2_mb.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_scm.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_vt1_2.json
/openbmc/entity-manager/configurations/meta/ventura2/ventura2_vt3.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_chassis.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_chassis.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t1.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t1_retimer.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t2.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t2_retimer.json
/openbmc/entity-manager/schemas/firmware.json
/openbmc/entity-manager/schemas/legacy.json
meson.build
/openbmc/entity-manager/src/fru_device/meson.build
/openbmc/entity-manager/src/meson.build
/openbmc/entity-manager/test/entity_manager/meson.build
/openbmc/entity-manager/test/meson.build
b7a7417815-Jan-2026 Eric Yang <eric.yang.wiwynn@gmail.com>

Clean up D-Bus matches when objects are removed

Add an InterfacesRemoved signal handler in EntityManager::initFilters to
erase the PropertiesChanged match associated with an object from
dbusMatches

Clean up D-Bus matches when objects are removed

Add an InterfacesRemoved signal handler in EntityManager::initFilters to
erase the PropertiesChanged match associated with an object from
dbusMatches when that object's interfaces are removed.

Motivation:
EntityManager creates and stores a PropertiesChanged match for each
object path in dbusMatches. Device object paths for FRUs are allocated
by taking the current highest index and incrementing it (new objects get
the next higher index), while removals are driven by the bus event for
the specific object that disappeared. When multiple devices with the
same FRU identity exist concurrently, removing a device that is not the
highest-indexed one leaves a gap in the indexing; subsequent re-adds get
a new higher index rather than reusing the gap. If the match for the
removed path is not erased, repeated remove/add churn leaves stale
entries in dbusMatches that accumulate over time.

If left unchecked, those stale subscriptions can exhaust the D-Bus match
buffer and trigger an sdbusplus::exception::SdBusError (for example:
org.freedesktop.DBus.Error.LimitsExceeded: No buffer space available),
causing the service to abort and produce a core dump.

Example:
Initial state (matches in dbusMatches):
+-----------------------------------------------------------+
| /xyz/openbmc_project/FruDevice/A_0 (match) |
| /xyz/openbmc_project/FruDevice/A_1 (match) |
| /xyz/openbmc_project/FruDevice/A_2 (match) |
+-----------------------------------------------------------+

Cycle #1:
- Remove A_1 → match for A_1 not erased (stale)
- Re-add device → new path A_3 (highest + 1)
+-----------------------------------------------------------+
| /xyz/openbmc_project/FruDevice/A_0 (match) |
| /xyz/openbmc_project/FruDevice/A_1 (stale) |
| /xyz/openbmc_project/FruDevice/A_2 (match) |
| /xyz/openbmc_project/FruDevice/A_3 (new match) |
+-----------------------------------------------------------+

Cycle #2:
- Remove A_2 → match for A_2 not erased (stale)
- Re-add device → new path A_4 (highest + 1)
+-----------------------------------------------------------+
| /xyz/openbmc_project/FruDevice/A_0 (match) |
| /xyz/openbmc_project/FruDevice/A_1 (stale) |
| /xyz/openbmc_project/FruDevice/A_2 (stale) |
| /xyz/openbmc_project/FruDevice/A_3 (match) |
| /xyz/openbmc_project/FruDevice/A_4 (new match) |
+-----------------------------------------------------------+

Cycle #3:
- Remove A_0 → match for A_0 not erased (stale)
- Re-add device → new path A_5 (highest + 1)
+-----------------------------------------------------------+
| /xyz/openbmc_project/FruDevice/A_0 (stale) |
| /xyz/openbmc_project/FruDevice/A_1 (stale) |
| /xyz/openbmc_project/FruDevice/A_2 (stale) |
| /xyz/openbmc_project/FruDevice/A_3 (match) |
| /xyz/openbmc_project/FruDevice/A_4 (match) |
| /xyz/openbmc_project/FruDevice/A_5 (new match) |
+-----------------------------------------------------------+

Result:
- Stale entries (A_0, A_1, A_2, ...) accumulate in dbusMatches
- Eventually exhaust D-Bus match resources (LimitsExceeded)

Change-Id: Ib50ad89938323ea5c19bcd0ae8f88eaf3e763578
Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>

show more ...

5febd66315-Jan-2026 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: simplify startRemovedTimer

`startRemovedTimer` needlessly captures a reference to
`systemConfiguration` even though it is a member of EntityManager.

So there is no need to capture t

entity-manager: simplify startRemovedTimer

`startRemovedTimer` needlessly captures a reference to
`systemConfiguration` even though it is a member of EntityManager.

So there is no need to capture the reference since `this` is already
captured. Also no need to pass a ref to our own member variable into our
own member function.

Tested: on Tyan S8030

Started EM with the patch applied, no abnormal output, all devices
present.

Change-Id: I83fb2e0121134f56573b50ee7f1217a442e11fcb
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

826ec62513-Nov-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: not mark destructors as virtual

We are not deriving from PerformProbe or PerformScan.

Mark these classes as `final` to be clear.

Tested: on Tyan S8030

EM (re)starts normally, no e

entity-manager: not mark destructors as virtual

We are not deriving from PerformProbe or PerformScan.

Mark these classes as `final` to be clear.

Tested: on Tyan S8030

EM (re)starts normally, no errors observed. All devices present on D-Bus
as expected.

Change-Id: I50a09cca9323e284a0ba7b93d994f3a20fc2f558
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

064d8aff12-Jan-2026 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: add misc debug logs

Add these debug logs in places where config is changed or other major
steps in processing are started / completed.

For example pruning old configuration, derivin

entity-manager: add misc debug logs

Add these debug logs in places where config is changed or other major
steps in processing are started / completed.

For example pruning old configuration, deriving new configuration,
posting board config to DBus...

Most of these should only be printed once per EM startup or once per
config successfully probed.

The logs can be useful for understanding the overall control flow in
entity-manager and help to notice any duplicated/missing steps.

Tested: on Tyan S8030

```
Jan 12 04:54:27 s8030-bmc-30303035c0c1 systemd[1]: Started Entity Manager.
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: Finished loading 379 json configuration(s) from 271 file(s) in 5307ms
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.FruDevice
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: com.ibm.ipzvpd.VSBP
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: com.ibm.ipzvpd.VINI
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.Inventory.Decorator.Asset
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.Inventory.Source.Modbus.FRU
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: com.ibm.ipzvpd.VSYS
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.Inventory.Source.DevicePresence
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.Inventory.Decorator.Revision
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.Inventory.Item
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: found probe interface: xyz.openbmc_project.Ipmb.FruDevice
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: Done filtering probe interfaces from configurations
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: querying initial power state
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: properties changed callback
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: properties changed callback timer expired
Jan 12 04:54:33 s8030-bmc-30303035c0c1 entity-manager[30488]: properties changed callback in progress
...
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: deriving new configuration
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: Inventory Added: Supermicro PWS 920P SQ 0
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: Inventory Added: Supermicro PWS 920P SQ 1
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: Inventory Added: Tyan S8030 Baseboard
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: Inventory Added: MBX 1.57 Chassis
...
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: finish loading device overlays
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: writing system configuration to /var/configuration/system.json
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: post PowerSupply 'Supermicro PWS 920P SQ 0' to DBus
Jan 12 04:54:36 s8030-bmc-30303035c0c1 entity-manager[30488]: post PowerSupply 'Supermicro PWS 920P SQ 1' to DBus
Jan 12 04:54:37 s8030-bmc-30303035c0c1 entity-manager[30488]: post Board 'Tyan S8030 Baseboard' to DBus
Jan 12 04:54:38 s8030-bmc-30303035c0c1 entity-manager[30488]: post Chassis 'MBX 1.57 Chassis' to DBus
Jan 12 04:54:38 s8030-bmc-30303035c0c1 entity-manager[30488]: properties changed callback
Jan 12 04:54:39 s8030-bmc-30303035c0c1 entity-manager[30488]: properties changed callback
Jan 12 04:54:39 s8030-bmc-30303035c0c1 entity-manager[30488]: properties changed callback timer expired
...
Jan 12 04:54:42 s8030-bmc-30303035c0c1 entity-manager[30488]: deriving new configuration
Jan 12 04:54:42 s8030-bmc-30303035c0c1 entity-manager[30488]: start loading device overlays
Jan 12 04:54:42 s8030-bmc-30303035c0c1 entity-manager[30488]: finish loading device overlays
Jan 12 04:54:42 s8030-bmc-30303035c0c1 entity-manager[30488]: writing system configuration to /var/configuration/system.json
```

Change-Id: If357c6089082b0d0e7d917d3656dcf5e9bef7c38
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

83c07fdc05-Dec-2025 Alexander Hansen <alexander.hansen@9elements.com>

deduplicate DBus variant definitions

There were several versions of std::variant for DBus types in use
throughout the repo to represent all the types we may get from DBus.

Form the union of these v

deduplicate DBus variant definitions

There were several versions of std::variant for DBus types in use
throughout the repo to represent all the types we may get from DBus.

Form the union of these variants to use in all those places.

Since the variant is used in DBus context it's assumed we can safely use
the same variant type in all cases.

Tested: EM integration tests pass.

Tested: on Tyan S8030

`busctl tree` is as before

inspecting a single record:

```
busctl introspect xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard/VBAT_33 xyz.openbmc_project.Configuration.ADC
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.Index property t 10 emits-change
.Name property s "VBAT_33" emits-change
.PowerState property s "Always" emits-change
.ScaleFactor property d 0.3333 emits-change
.Type property s "ADC" emits-change
```

`ipmitool sensor` also shows the expected readings, indicating sensor
config was parsed successfully.

Change-Id: I6e0185f41d2860d8370fe515dd33acde84f30f70
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...


/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_mb.json
/openbmc/entity-manager/configurations/meta/clemente/clemente_interposer.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_e1s_bp.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_evb_pdb2.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb_evt1.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_pcie_switch_board.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_pdb1.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_pdb1_vr_sni.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_pdb2.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_scm.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_sitv_eth.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_e1s_x4_expansion_board_adc_ons_pmon_rtk.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_e1s_x4_expansion_board_adc_tic_pmon_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_medusa_board.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_scm.json
/openbmc/entity-manager/schemas/legacy.json
utils.hpp
/openbmc/entity-manager/src/gpio-presence/config_provider.cpp
/openbmc/entity-manager/src/utils.hpp
87d412f019-Feb-2025 Jian Zhang <zhangjian.3032@bytedance.com>

use correct exception type to catch json parse

the std::out_of_range exception is not the correct type to catch when
json pointer parse error, so we should catch the correct exception type
to handle

use correct exception type to catch json parse

the std::out_of_range exception is not the correct type to catch when
json pointer parse error, so we should catch the correct exception type
to handle the json pointer parse error.

Tested:
The following error message is printed when the json pointer parse error
occurs:
```
json out of range error for /67640200/Exposes/32/Type/Description : [json.exception.out_of_range.404] unresolved reference token 'Description'
```

the busctl will got a `internal error` instead of `invalid argument`,
the `invalid argument` is ambiguous.

Change-Id: Ia26f048ccc191b36ea8edf5032c75bd7f7870259
Signed-off-by: Jian Zhang <zhangjian.3032@bytedance.com>

show more ...

8039efec15-Dec-2025 Andy Hsu <andy.hsu.wiwynn@gmail.com>

entity-manager: Fix incorrect rvalue reference binding

Description
Regarding the Gerrit change:
https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85744
Calling operator[]<const key_type>(...) ma

entity-manager: Fix incorrect rvalue reference binding

Description
Regarding the Gerrit change:
https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85744
Calling operator[]<const key_type>(...) makes the template
parameter const key_type, so the parameter becomes
const key_type&& and can break forwarding. Fix by having the
const& overload call try_emplace directly,
e.g. try_emplace(__x).first->second.

cpp

Motivation
The current program build fails.

Change-Id: Ide6f0c0e3dbeabee74a7858ab1c9c33f1e9166fd
Signed-off-by: Andy Hsu <andy.hsu.wiwynn@gmail.com>

show more ...


/openbmc/entity-manager/configurations/acbel/r1ca2122a_psu.json
/openbmc/entity-manager/configurations/acbel/rica_psu.json
/openbmc/entity-manager/configurations/aspower/u1a-d10550_psu.json
/openbmc/entity-manager/configurations/aspower/u1a-d10800_psu.json
/openbmc/entity-manager/configurations/aspower/u1a-d11200_psu.json
/openbmc/entity-manager/configurations/aspower/u1a-d11600_psu.json
/openbmc/entity-manager/configurations/aspower/u1d-d10800_psu.json
/openbmc/entity-manager/configurations/asrock/altrad8.json
/openbmc/entity-manager/configurations/asrock/c3_medium_x86.json
/openbmc/entity-manager/configurations/asrock/e3c246d4i.json
/openbmc/entity-manager/configurations/asrock/e3c256d4i.json
/openbmc/entity-manager/configurations/asrock/m3_small_x86.json
/openbmc/entity-manager/configurations/asrock/n3_xlarge_x86.json
/openbmc/entity-manager/configurations/asrock/romed8hm3.json
/openbmc/entity-manager/configurations/asrock/spc621d8hm3.json
/openbmc/entity-manager/configurations/asrock/x470d4u.json
/openbmc/entity-manager/configurations/broadcomm/100g_1p_ocp_mezz.json
/openbmc/entity-manager/configurations/broadcomm/200g_1p_ocp_mezz.json
/openbmc/entity-manager/configurations/broadcomm/400g_1p_ocp3.json
/openbmc/entity-manager/configurations/compuware/cdr_9011_3m1_psu.json
/openbmc/entity-manager/configurations/delta/awf2dc3200w_psu.json
/openbmc/entity-manager/configurations/delta/dps-1600ab_psu.json
/openbmc/entity-manager/configurations/delta/dps-2000ab_psu.json
/openbmc/entity-manager/configurations/delta/dps-750xb_psu.json
/openbmc/entity-manager/configurations/flextronics/s-1100adu00-201_psu.json
/openbmc/entity-manager/configurations/gigabyte/msx4_mg1.json
/openbmc/entity-manager/configurations/gospower/g1136-1300wna_psu.json
/openbmc/entity-manager/configurations/ibm/blyth.json
/openbmc/entity-manager/configurations/ibm/blyth2.json
/openbmc/entity-manager/configurations/ibm/mudflap.json
/openbmc/entity-manager/configurations/ibm/storm_king.json
/openbmc/entity-manager/configurations/ibm/storm_king2.json
/openbmc/entity-manager/configurations/ibm/tacoma_rack_controller.json
/openbmc/entity-manager/configurations/intel/front_panel.json
/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_bridge_l.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_bridge_r.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_mb.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_pdb_l.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_pdb_r.json
/openbmc/entity-manager/configurations/meta/bletchley/bletchley_frontpanel.json
/openbmc/entity-manager/configurations/meta/catalina/catalina_hdd_nvme.json
/openbmc/entity-manager/configurations/meta/clemente/clemente_hdd_nvme.json
/openbmc/entity-manager/configurations/meta/clemente/clemente_interposer.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_1kw_paddle_board.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_cxl_board_vr_mps_tchip_stm.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_cxl_board_vr_raa_tchip_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_cxl_ddr5_board_vr_raa_tchip_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_e1s_expansion_board_adc_qns_pmon_sgy.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_e1s_expansion_board_adc_tic_pmon_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_medusa_board.json
/openbmc/entity-manager/configurations/micron/7450.json
/openbmc/entity-manager/configurations/nuvoton/npcm8xx_evb.json
/openbmc/entity-manager/configurations/nvidia/bmc_p3809.json
/openbmc/entity-manager/configurations/nvidia/cable_cartridge.json
/openbmc/entity-manager/configurations/nvidia/cx7_mezzanine_module.json
/openbmc/entity-manager/configurations/nvidia/cx8_mezzanine_module.json
/openbmc/entity-manager/configurations/nvidia/gb200.json
/openbmc/entity-manager/configurations/nvidia/gb300.json
/openbmc/entity-manager/configurations/nvidia/hmc.json
/openbmc/entity-manager/configurations/nvidia/imgx_connectx8_supernic_switch.json
/openbmc/entity-manager/configurations/nvidia/rtx6000_pro.json
/openbmc/entity-manager/configurations/solum/pssf162202_psu.json
/openbmc/entity-manager/configurations/supermicro/pws-920p-sq_psu.json
/openbmc/entity-manager/configurations/tyan/s5549_baseboard.json
/openbmc/entity-manager/configurations/tyan/s7106_baseboard.json
/openbmc/entity-manager/configurations/tyan/s8030_baseboard.json
/openbmc/entity-manager/configurations/tyan/s8036_baseboard.json
/openbmc/entity-manager/configurations/tyan/s8040_baseboard.json
/openbmc/entity-manager/configurations/tyan/s8047_baseboard.json
/openbmc/entity-manager/format-code
/openbmc/entity-manager/schemas/legacy.json
/openbmc/entity-manager/scripts/run-ci.sh
dbus_interface.cpp
0c32488803-Dec-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: remove boost::container::flat_map

A while back EM moved from `boost::container::flat_map` to
`std::flat_map`.

Migrate the last remaining usage of the boost flat_map.

Tested: Integr

entity-manager: remove boost::container::flat_map

A while back EM moved from `boost::container::flat_map` to
`std::flat_map`.

Migrate the last remaining usage of the boost flat_map.

Tested: Integration Tests pass further up in the patch series [1]

References:
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85557

Change-Id: I3240299c24a2530c52999762c12f935d87b0b6c7
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

8b7d634421-Nov-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: debug log for N configs loaded

For debugging testcases or configuration parsing on BMC, add the number
of configurations and configuration files loaded to the log statement.

Tested:

entity-manager: debug log for N configs loaded

For debugging testcases or configuration parsing on BMC, add the number
of configurations and configuration files loaded to the log statement.

Tested: Unit Test Pass, log statement as expected.

On BMC:
```
Nov 25 13:16:30 s8030-bmc-30303035c0c1 systemd[1]: Started Entity Manager.
Nov 25 13:16:39 s8030-bmc-30303035c0c1 entity-manager[10696]: Finished loading 371 json configuration(s) from 263 file(s) in 8726ms
```

When running tests:
```
[ RUN ] EndToEnd.probeTrueArrayOfConfigs
<7> writing test configuration file to /tmp/test_em_90329426/example_board.json
<7> Finished loading 2 json configuration(s) from 1 file(s) in 0ms
<7> querying initial power state
<7> requesting bus name xyz.openbmc_project.EntityManager90329426
...
```

Change-Id: I018dabbc8b99b0df2b7d359fc9477ee691dfdb96
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

8c7951b621-Nov-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: debug logs for propertiesChanged

Add some debug logs for propertiesChangedCallback.

Helps to debug controlflow on BMC and in unit tests.

Tested: on Tyan S8030

```
Nov 25 13:40:16

entity-manager: debug logs for propertiesChanged

Add some debug logs for propertiesChangedCallback.

Helps to debug controlflow on BMC and in unit tests.

Tested: on Tyan S8030

```
Nov 25 13:40:16 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback
Nov 25 13:40:17 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback timer expired
Nov 25 13:40:17 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback in progress
...
```

Triggering a power state change via `ipmitool power on`

```
Nov 25 14:01:42 s8030-bmc-30303035c0c1 entity-manager[11384]: power match triggered
Nov 25 14:01:42 s8030-bmc-30303035c0c1 entity-manager[11384]: power match triggered
Nov 25 14:01:42 s8030-bmc-30303035c0c1 entity-manager[11384]: power match triggered
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback timer expired
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback timer expired
... (omitted for brevity)
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback timer expired
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback timer expired
Nov 25 14:01:47 s8030-bmc-30303035c0c1 entity-manager[11384]: properties changed callback in progress
...
```

The logs show how the timer delay is effective in preventing frequent
recomputing of configuration. The timer is reset when propertiesChanged
is called again within the set duration (500ms).

Change-Id: I319d20d093a6e7c91034f4a7fdb400817f4ad6d1
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...


/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/harma/harma_mb.json
/openbmc/entity-manager/configurations/meta/harma/harma_mb_vr_infineon.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb_evt1.json
/openbmc/entity-manager/configurations/meta/yv4/fanboard/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_ons_efuse_max.json
/openbmc/entity-manager/configurations/meta/yv4/fanboard/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_ons_efuse_mps.json
/openbmc/entity-manager/configurations/meta/yv4/fanboard/yosemite4_fanboard_fsc_nct_adc_max_led_nxp_ons_efuse_max.json
/openbmc/entity-manager/configurations/meta/yv4/fanboard/yosemite4_fanboard_fsc_nct_adc_max_led_nxp_ons_efuse_mps.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_12vhsc_adi_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_hsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_isl_12vhsc_adi_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_isl_12vhsc_mps_48vhsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_isl_12vhsc_mps_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_rns_isl_hsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_silergy_12vhsc_adi_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_silergy_12vhsc_mps_48vhsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_silergy_12vhsc_mps_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_silergy_hsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_ti_12vhsc_adi_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_inf.json
/openbmc/entity-manager/configurations/meta/yv4/medusaboard/yosemite4_medusaboard_adc_ti_hsc_adi.json
/openbmc/entity-manager/configurations/meta/yv4/spiderboard/yosemite4_spiderboard_adc_max_pwr_rt.json
/openbmc/entity-manager/configurations/meta/yv4/spiderboard/yosemite4_spiderboard_adc_max_pwr_silergy.json
/openbmc/entity-manager/configurations/meta/yv4/spiderboard/yosemite4_spiderboard_adc_max_pwr_ti.json
/openbmc/entity-manager/configurations/meta/yv4/spiderboard/yosemite4_spiderboard_adc_ti_pwr_rt.json
/openbmc/entity-manager/configurations/meta/yv4/spiderboard/yosemite4_spiderboard_adc_ti_pwr_silergy.json
/openbmc/entity-manager/configurations/meta/yv4/spiderboard/yosemite4_spiderboard_adc_ti_pwr_ti.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_chassis.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_cpu.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_floatingfalls.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_chassis.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t1.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t1_retimer.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t2.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_sentineldome_t2_retimer.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4_wailuafalls.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4n.json
entity_manager.cpp
99f17c0821-Nov-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: load schema for runtime validation

Only load the json schema if runtime schema validation feature is
enabled.

Otherwise we can skip loading the schema.

Tested: Inspection only.

Ch

entity-manager: load schema for runtime validation

Only load the json schema if runtime schema validation feature is
enabled.

Otherwise we can skip loading the schema.

Tested: Inspection only.

Change-Id: Iccd508ff095a4722843de5e649e06340c4723596
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...


/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/catalina/catalina_hdd_nvme.json
/openbmc/entity-manager/configurations/meta/catalina/catalina_pdb_hsc_ltc_fsc_max_vr_delta_gndsen_ina_p12vsen_ina_p12vfan_mps.json
/openbmc/entity-manager/configurations/meta/catalina/catalina_pdb_hsc_ltc_fsc_max_vr_raa_gndsen_ina_p12vsen_ina_p12vfan_mps.json
/openbmc/entity-manager/configurations/meta/catalina/catalina_pdb_hsc_xdp_fsc_nct_vr_raa_gndsen_max_p12vsen_isl_p12vfan_rtt.json
/openbmc/entity-manager/configurations/meta/clemente/clemente_fio.json
/openbmc/entity-manager/configurations/meta/clemente/clemente_hdd_nvme.json
/openbmc/entity-manager/configurations/meta/clemente/clemente_pdb.json
/openbmc/entity-manager/configurations/meta/minerva/minerva_fanboard_adc_silergy.json
/openbmc/entity-manager/configurations/meta/minerva/minerva_fanboard_adc_ti.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb_evt1.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_pttv.json
/openbmc/entity-manager/configurations/meta/ventura/delta_reservoir_pump_unit.json
/openbmc/entity-manager/configurations/meta/ventura/ventura_scm.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_cxl_ddr5_board_vr_raa_tchip_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_mb_vr_mps_pvdd18vr_mps_adc_tic_i3chub_rtt.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_mb_vr_rtt_pvdd18vr_mps_adc_tic_i3chub_rtt.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_mb_vr_sni_pvdd18vr_sni_adc_tic_i3chub_rtt.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_medusa_board.json
configuration.cpp
bc0b05be10-Nov-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: fix type for schema directory

Change the type of schema directory from
`constexpr const char*` to `std::filesystem::path` and pass it through
the appropriate functions instead of dec

entity-manager: fix type for schema directory

Change the type of schema directory from
`constexpr const char*` to `std::filesystem::path` and pass it through
the appropriate functions instead of declaring in the header.

This avoids e.g. testcases gaining a dependency on PACKAGE_DIR symbol
and allows them to pass in a different directory for schemas, as the
package is usually not installed in a development / ci workflow.

Tested:

EM starts normally, configuration is loaded as expected and appears on
DBus.

```
Nov 10 15:56:54 s8030-bmc-30303035c0c1 entity-manager[20982]: Inventory Added: MBX 1.57 Chassis
Nov 10 15:56:54 s8030-bmc-30303035c0c1 entity-manager[20982]: Inventory Added: Supermicro PWS 920P SQ 2
Nov 10 15:56:54 s8030-bmc-30303035c0c1 entity-manager[20982]: Inventory Added: Tyan S8030 Baseboard
Nov 10 15:56:54 s8030-bmc-30303035c0c1 entity-manager[20982]: Inventory Added: Supermicro PWS 920P SQ 3
```

Change-Id: Iecc21ba0e1045bd8b37f4a0cc0e2ef25d06da18c
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

cba1a97a20-Nov-2025 Marc Olberding <molberding@nvidia.com>

entity-manager: fix index bug in perform_scan.cpp

Previously, matched names were not being replaced
before they hit dbus. This caused names that depend on index
to only allow one instance of a given

entity-manager: fix index bug in perform_scan.cpp

Previously, matched names were not being replaced
before they hit dbus. This caused names that depend on index
to only allow one instance of a given device, as $index was being
formatted to __index rather than the subsistuted value.

Tested: on nvl32-obmc startup entity-manager
before
```
busctl tree xyz.openbmc_project.EntityManager
`- /xyz
`- /xyz/openbmc_project
|- /xyz/openbmc_project/EntityManager
`- /xyz/openbmc_project/inventory
`- /xyz/openbmc_project/inventory/system
`- /xyz/openbmc_project/inventory/system/board
|- /xyz/openbmc_project/inventory/system/board/Nvidia_Alon8_HPM
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_Alon8_HPM/Nvidia_Alon8_HPM_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_IMGX_ConnectX8_SuperNIC_Switch
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/Nvidia_IMGX_ConnectX8_SuperNIC_Switch_FRU
`- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell__index
`- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell__index/Nvidia_RTX_PRO_6000_FRU
```

After:
```
busctl tree xyz.openbmc_project.EntityManager
`- /xyz
`- /xyz/openbmc_project
|- /xyz/openbmc_project/EntityManager
`- /xyz/openbmc_project/inventory
`- /xyz/openbmc_project/inventory/system
`- /xyz/openbmc_project/inventory/system/board
|- /xyz/openbmc_project/inventory/system/board/Nvidia_Alon8_HPM
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_Alon8_HPM/Nvidia_Alon8_HPM_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_IMGX_ConnectX8_SuperNIC_Switch
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_IMGX_ConnectX8_SuperNIC_Switch/Nvidia_IMGX_ConnectX8_SuperNIC_Switch_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_1
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_1/Nvidia_RTX_PRO_6000_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_2
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_2/Nvidia_RTX_PRO_6000_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_3
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_3/Nvidia_RTX_PRO_6000_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_4
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_4/Nvidia_RTX_PRO_6000_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_5
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_5/Nvidia_RTX_PRO_6000_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_6
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_6/Nvidia_RTX_PRO_6000_FRU
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_7
| |- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_7/GPU_6
| `- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_7/Nvidia_RTX_PRO_6000_FRU
`- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_8
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_8/GPU_7
|- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_8/GPU_7SMA
`- /xyz/openbmc_project/inventory/system/board/Nvidia_RTX_PRO_6000_Blackwell_8/Nvidia_RTX_PRO_6000_FRU
```

Change-Id: Ide8e6c1bee7870216cdda6a00718b4c82aa23671
Signed-off-by: Marc Olberding <molberding@nvidia.com>

show more ...

90e4f05810-Oct-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: fixes for logDeviceAdded/Removed

Follow-up patch to fix issues found in comments of [1].

- Use explicit type rather than 'auto' for local variable
- Setup a return variable to avoid

entity-manager: fixes for logDeviceAdded/Removed

Follow-up patch to fix issues found in comments of [1].

- Use explicit type rather than 'auto' for local variable
- Setup a return variable to avoid duplicate initial value "Unknown"
- Fix string value read to avoid uncaught exception
- Remove unused boost include
- Add unit tests

Tested: Unit tests pass.

References:
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84340

Change-Id: I3d5540860e8ef8e590bc2685ce559c53dc8452b5
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

7719269f24-Jun-2025 Ed Tanous <etanous@nvidia.com>

Remove implicit conversions

Implicit conversions are something that nlohmann library itself is a bad
default, and 3 years ago threatened to change the default. These
implicit conversions cause a nu

Remove implicit conversions

Implicit conversions are something that nlohmann library itself is a bad
default, and 3 years ago threatened to change the default. These
implicit conversions cause a number of crashes that are hard to
reproduce, because they throw an uncaught exception.

Update the code to be able to do no more implicit conversions.

Tested: Entity-manager launches and runs. Items are detected correctly
and show up on dbus. Unit tests pass.

Change-Id: Ib23159ae58f5584641427d9be7545bc25a3619af
Signed-off-by: Ed Tanous <etanous@nvidia.com>

show more ...

250432b313-Oct-2025 Ed Tanous <ed@tanous.net>

Make device array constexpr

This map will consume memory the whole time the application runs,
despite not being needed for anything but a lookup at startup. Move to
a constexpr array and std::find_

Make device array constexpr

This map will consume memory the whole time the application runs,
despite not being needed for anything but a lookup at startup. Move to
a constexpr array and std::find_if so that this struct will always be
const.

Tested: EM boots and detects devices.

Change-Id: Iae95884a8076d991d0d2696dd0c03113ed49a92f
Signed-off-by: Ed Tanous <ed@tanous.net>

show more ...


/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_bridge_l.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_bridge_r.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_mb.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_pdb_l.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_pdb_r.json
/openbmc/entity-manager/configurations/meta/anacapa/anacapa_scm.json
/openbmc/entity-manager/configurations/meta/santabarbara/santabarbara_mb.json
/openbmc/entity-manager/configurations/meta/ventura/delta_heat_exchanger.json
/openbmc/entity-manager/configurations/meta/ventura/delta_heat_exchanger_fans.json
/openbmc/entity-manager/configurations/meta/ventura/delta_reservoir_pump_unit.json
/openbmc/entity-manager/configurations/meta/ventura/ventura_scm.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_cxl_board_vr_mps_tchip_stm.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_cxl_board_vr_raa_tchip_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_e1s_expansion_board_adc_qns_pmon_sgy.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_e1s_expansion_board_adc_tic_pmon_tic.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_mb_vr_mps_pvdd18vr_mps_adc_tic_i3chub_rtt.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_mb_vr_rtt_pvdd18vr_mps_adc_tic_i3chub_rtt.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_mb_vr_sni_pvdd18vr_sni_adc_tic_i3chub_rtt.json
/openbmc/entity-manager/configurations/meta/yv5/yosemite5_medusa_board.json
/openbmc/entity-manager/schemas/legacy.json
devices.hpp
overlay.cpp
7d5f205f14-Oct-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: extract function addObjectJson

extract function `addObjectJson` from `addObject` function.

This separates the data conversion from core `AddObject` logic which
operates on json (as

entity-manager: extract function addObjectJson

extract function `addObjectJson` from `addObject` function.

This separates the data conversion from core `AddObject` logic which
operates on json (as usual with EM internals).

Tested: on Tyan S8030:

Adding a dummy record:

```
root@s8030-bmc-30303035c0c1:~# busctl call xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard xyz.openbmc_project.AddObject AddObject a{sv} 3 Name s DummyRecord Type s DummyType PollRate u 1000

root@s8030-bmc-30303035c0c1:~# busctl introspect xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard/DummyRecord

NAME TYPE SIGNATURE RESULT/VALUE FLAGS
...
xyz.openbmc_project.Configuration.DummyType interface - - -
.Delete method - - -
.Name property s "DummyRecord" emits-change
.PollRate property d 1000 emits-change
.Type property s "DummyType" emits-change
```

New record is added without issues.

Change-Id: I62e2276ff517d0369f5644fa21dae162c44590db
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

12345