History log of /openbmc/entity-manager/src/ (Results 1 – 25 of 533)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
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 ...

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
entity_manager/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/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
entity_manager/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
entity_manager/devices.hpp
entity_manager/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 ...

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

entity-manager: addObjectRuntimeValidateJson

extract function addObjectRuntimeValidateJson from addObject function.

Since the runtime configuration validation feature for "AddObject" API
looks to b

entity-manager: addObjectRuntimeValidateJson

extract function addObjectRuntimeValidateJson from addObject function.

Since the runtime configuration validation feature for "AddObject" API
looks to be broken since some time, extract it into it's own function to
separate the `AddObject` feature from schema handling and enhance
readability of the default code path.

Tested: next patches in series

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

show more ...

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

entity-manager: extract function for AddObject API

extract `addObject` function for the implementation of "AddObject" DBus
API.

The reduced indentation enhances readability and helps with further
r

entity-manager: extract function for AddObject API

extract `addObject` function for the implementation of "AddObject" DBus
API.

The reduced indentation enhances readability and helps with further
refactoring.

Additionally the feature is decoupled from its DBus method name,
allowing easier unit-testing.

Tested: next patches in series

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

show more ...

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

Flat map all the things

In an earlier commit, entity-manager gained required dependency
on std::flat_map. This means that EM can only compile with gcc-15,
which the project only recently moved to.

Flat map all the things

In an earlier commit, entity-manager gained required dependency
on std::flat_map. This means that EM can only compile with gcc-15,
which the project only recently moved to. Rather than move backwards,
port forward all uses of boost flat_map and flat_set to their std
equivalents.

Tested: entity-manager launches and enumerates devices on
gb200-obmc.

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

show more ...


/openbmc/entity-manager/configurations/meta/ventura/ventura_cable.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_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/yosemite4.json
/openbmc/entity-manager/configurations/meta/yv4/yosemite4n.json
entity_manager/dbus_interface.cpp
entity_manager/dbus_interface.hpp
entity_manager/devices.hpp
entity_manager/entity_manager.cpp
entity_manager/entity_manager.hpp
entity_manager/log_device_inventory.cpp
entity_manager/overlay.cpp
entity_manager/perform_probe.cpp
entity_manager/perform_probe.hpp
entity_manager/perform_scan.cpp
entity_manager/perform_scan.hpp
entity_manager/utils.hpp
fru_device/fru_device.cpp
fru_device/fru_utils.cpp
fru_device/fru_utils.hpp
gpio-presence/config_provider.cpp
utils.cpp
utils.hpp
/openbmc/entity-manager/test/test_fru-utils.cpp
8290ca4204-Aug-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: constructor arg to load config

Introduce a constructor arg to point EM to directories to load
configuration from.

This enables running unit tests without depending on a specific
dir

entity-manager: constructor arg to load config

Introduce a constructor arg to point EM to directories to load
configuration from.

This enables running unit tests without depending on a specific
directory layout from our rofs.

Tested: on Tyan S8030. Config parsed as expected.

```
Oct 02 11:22:52 s8030-bmc-30303035c0c1 systemd[1]: Starting Entity Manager...
Oct 02 11:22:52 s8030-bmc-30303035c0c1 systemd[1]: Started Entity Manager.
Oct 02 11:23:02 s8030-bmc-30303035c0c1 entity-manager[8265]: There's still template variable $PRODUCT_PART_NUMBER un-replaced. Removing it from the string.
Oct 02 11:23:02 s8030-bmc-30303035c0c1 entity-manager[8265]: There's still template variable $PRODUCT_ASSET_TAG un-replaced. Removing it from the string.
Oct 02 11:23:02 s8030-bmc-30303035c0c1 entity-manager[8265]: There's still template variable $PRODUCT_ASSET_TAG un-replaced. Removing it from the string.
Oct 02 11:23:02 s8030-bmc-30303035c0c1 entity-manager[8265]: There's still template variable $PRODUCT_ASSET_TAG un-replaced. Removing it from the string.
Oct 02 11:23:02 s8030-bmc-30303035c0c1 entity-manager[8265]: There's still template variable $PRODUCT_PART_NUMBER un-replaced. Removing it from the string.
Oct 02 11:23:04 s8030-bmc-30303035c0c1 entity-manager[8265]: Inventory Added: Supermicro PWS 920P SQ 0
Oct 02 11:23:04 s8030-bmc-30303035c0c1 entity-manager[8265]: Inventory Added: Supermicro PWS 920P SQ 1
Oct 02 11:23:04 s8030-bmc-30303035c0c1 entity-manager[8265]: Inventory Added: Tyan S8030 Baseboard
Oct 02 11:23:04 s8030-bmc-30303035c0c1 entity-manager[8265]: Inventory Added: MBX 1.57 Chassis
```

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

show more ...

c689762b29-Oct-2025 Haiyue Wang <haiyuewa@163.com>

entity_manager: Remove unused local variable

The local object variable 'systemConfiguration' in main() function is
not used, it is changed to public member value of 'class EntityManager'
by the comm

entity_manager: Remove unused local variable

The local object variable 'systemConfiguration' in main() function is
not used, it is changed to public member value of 'class EntityManager'
by the commit cf6a75bd2bbf ("Introduce EntityManager class").

Change-Id: I28fe6814c2b7c1aecd4aa54583304ba7e6179711
Signed-off-by: Haiyue Wang <haiyuewa@163.com>

show more ...


/openbmc/entity-manager/configurations/ampere/mtjade.json
/openbmc/entity-manager/configurations/ampere/mtjefferson_mb.json
/openbmc/entity-manager/configurations/ampere/mtmitchell_mb.json
/openbmc/entity-manager/configurations/meson.build
/openbmc/entity-manager/configurations/meta/catalina/catalina_hdd_adc_ina.json
/openbmc/entity-manager/configurations/meta/catalina/catalina_hdd_adc_isl.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/yv5/yosemite5_1kw_paddle_board.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/nvidia/nvidia_cable_cartridge.json
/openbmc/entity-manager/docs/associations.md
/openbmc/entity-manager/schemas/exposes_record.json
/openbmc/entity-manager/schemas/firmware.json
/openbmc/entity-manager/schemas/legacy.json
/openbmc/entity-manager/schemas/topology.json
entity_manager/main.cpp
/openbmc/entity-manager/test/test_gpio_presence_state.cpp
92d7981422-Aug-2025 Alexander Hansen <alexander.hansen@9elements.com>

gpio-presence: track parent inventory compatible

When detecting multiple instances of a device such as a fan module
```
{
"Exposes": [
{
"Name": "FAN1",
"PresencePinNames": [

gpio-presence: track parent inventory compatible

When detecting multiple instances of a device such as a fan module
```
{
"Exposes": [
{
"Name": "FAN1",
"PresencePinNames": [
"FAN1_PRSNT"
],
"PresencePinValues": [
1
],
"Type": "GPIODeviceDetect"
},
{
"Name": "FAN2",
"PresencePinNames": [
"FAN2_PRSNT"
],
"PresencePinValues": [
1
],
"Type": "GPIODeviceDetect"
}
],
"Name": "Minerva Fan Board 6",
"Probe": [
"xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'Minerva Fan Board.*', 'PRODUCT_MANUFACTURER': 'Quanta', 'BUS': 21, 'BOARD_INFO_AM4': 'pwr-silergy'})",
"OR",
"xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'Minerva Fan Board DVT', 'PRODUCT_MANUFACTURER': 'Quanta', 'BUS': 21, 'BOARD_PART_NUMBER': '3XF0MFB0030'})"
],
"Type": "Board",
"xyz.openbmc_project.Inventory.Decorator.Asset": {
"BuildDate": "$BOARD_MANUFACTURE_DATE",
"Manufacturer": "$BOARD_MANUFACTURER",
"Model": "$BOARD_PRODUCT_NAME",
"PartNumber": "$BOARD_PART_NUMBER",
"SerialNumber": "$BOARD_SERIAL_NUMBER",
"SparePartNumber": "$BOARD_INFO_AM1"
},
"xyz.openbmc_project.Inventory.Decorator.AssetTag": {
"AssetTag": "$PRODUCT_ASSET_TAG"
},
"xyz.openbmc_project.Inventory.Decorator.Compatible": {
"Names": [
"com.meta.Hardware.Minerva.FanBoard"
]
}
}
```

we want to use a single configuration file for that FRU to avoid
duplication.

```
{
"Exposes": [],
"Name": "$Name",
"Probe": [
"xyz.openbmc_project.Inventory.Source.DevicePresence({'Name': 'FAN*'})"
],
"Type": "Board",
"xyz.openbmc_project.Inventory.Decorator.Asset": {
"Manufacturer": "Unknown",
"Model": "Unknown",
"PartNumber": "Unknown",
"SerialNumber": "Unknown",
"SparePartNumber": "05-100051"
}
}
```

That creates the requirement to have `Name` property to be something
which can show up for example in the fan (or whichever) inventory.

This requirement conflicts with the requirement for `Probe` statements
to be unique and not trigger any unintended probing of unrelated
configurations.

Since `FAN 2` is a good name to use in context of a single system, but
not sufficiently unique to probe a configuration.

This patch populates a `Compatible` field on the
`xyz.openbmc_project.Inventory.Source.DevicePresence` interface which
allows to rewrite above `Probe` statement as:

```
"xyz.openbmc_project.Inventory.Source.DevicePresence({'Name': 'FAN*', 'Compatible': 'com.meta.Hardware.Minerva*'})"
```

which will be unique and not probe accidentally on other systems.

The PDI change is [4].

The value for `Compatible` field is taken from the parent inventory item
object path, which can have an optional
"xyz.openbmc_project.Inventory.Decorator.Compatible" configured.

From my perspective, entity-manager does not currently support probing
on properties which have an array type [3], so we simply take the first
value if there are multiple compatible strings on the decorator.

In case there is no such decorator, the `Compatible` string will be
empty.

Alternatives considered:

- configuring a `Compatible` property on `GPIODeviceDetect` schema.

This creates configuration bloat as all such instances are already
identified by `Name` in context of a single system.

- expanding `Probe` statement to also probe on the baseboard.

This is undesirable as currently `Probe` statement is kind of broken
[2], does not support nested expressions and also does not handle
boolean operator precedence correctly.

Tested:

Unit Tests have been adjusted.

On Tyan S8030 added following example record for some gpio.

```
{
"Name": "ExampleDevice",
"PresencePinNames": [ "BMC_SPD_SEL" ],
"PresencePinValues": [ 0 ],
"Type": "GPIODeviceDetect"
},
```

compatible decorator is not set, so compatible is empty when it detects
the Example Device.

```
xyz.openbmc_project.Inventory.Source.DevicePresence interface - - -
.Compatible property s "" emits-change writable
.Name property s "ExampleDevice" emits-change writable
```

Adding following compatible decorator
```
"xyz.openbmc_project.Inventory.Decorator.Compatible": {
"Names": [
"com.tyan.Hardware.Mainboard.S8030",
"com.tyan.Hardware.Mainboard.S8030GM"
]
}
```

And the daemon picks it up
```
Aug 22 14:43:35 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: found configuration interface at xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard/ExampleDevice xyz.openbmc_project.Configuration.GPIODeviceDetect
Aug 22 14:43:35 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: Found 'Compatible' decorator on parent inventory path of /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard/ExampleDevice
Aug 22 14:43:35 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: adding configuration for /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard/ExampleDevice
Aug 22 14:43:36 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: found valid configuration at object path /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard/ExampleDevice
Aug 22 14:43:36 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: Watching gpio events for BMC_SPD_SEL
Aug 22 14:43:36 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: GPIO line BMC_SPD_SEL went low
Aug 22 14:43:36 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: Updating dbus interface for config ExampleDevice
Aug 22 14:43:36 s8030-bmc-30303035c0c1 gpio-presence-sensor[7336]: Detected ExampleDevice as present, adding dbus interface
```

Then the Compatible string is exposed as expected
```
xyz.openbmc_project.Inventory.Source.DevicePresence interface - - -
.Compatible property s "com.tyan.Hardware.Mainboard.S8030" emits-change writable
.Name property s "ExampleDevice" emits-change writable
```

References:
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/82819
[2] https://github.com/openbmc/entity-manager/blob/e86be7c648b6fa6e457928b4348e561b852b79bb/src/entity_manager/perform_probe.cpp#L165
[3] https://github.com/openbmc/entity-manager/blob/e86be7c648b6fa6e457928b4348e561b852b79bb/src/utils.cpp#L116
[4] https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/83061

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

show more ...

7f2fbf8214-Oct-2025 Ed Tanous <ed@tanous.net>

Remove enable_shared_from_this on PerformProbe

This class was both added incorrectly as a private base class, and not
used. Had it been used, it would've shown errors on construction, but
as-is, it

Remove enable_shared_from_this on PerformProbe

This class was both added incorrectly as a private base class, and not
used. Had it been used, it would've shown errors on construction, but
as-is, it can fail on destruction. This isn't used anywhere, so just
remove it.

Clang tidy has a bugprone check that will be enabled separately.

[1] https://clang.llvm.org/extra/clang-tidy/checks/bugprone/incorrect-enable-shared-from-this.html

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

show more ...

9a5eec9107-Aug-2025 Christopher Meis <christopher.meis@9elements.com>

entity-manager: Add probe associations

Probe associations provides a mapping between a probed path and the
inventory path of the board.
This may help in getting information about bus and address
val

entity-manager: Add probe associations

Probe associations provides a mapping between a probed path and the
inventory path of the board.
This may help in getting information about bus and address
values from the properties available via the aforementioned probed path.
Probed path of board 'probed_by' inventory board path.
Inventory board path 'probing' probe path.
A probe path can be valid statement found in the 'Probe' statement of a
EM configuration.

This change could require testing on real hardware from other reviewers
and maintainers to make sure, the feature works as intended.

Tested on QEMU/Yosemite4 with EEPROM data added to QEMU source code.
This allows loading configurations without changing the probe
statements.
Logs:
```
root@yosemite4:~# journalctl | grep entity-manager
Apr 03 13:35:05 yosemite4 entity-manager[464]: Clearing previous configuration
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 2
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 8
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 4 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 12 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 1 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 6
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 8 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 10 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 13 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 14 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 7 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 3 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 15 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 9 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 12 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 9 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 1
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 2 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Management Board
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 2 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 15 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 7
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 6 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 5
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 3
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 7 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 11 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 5 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 10 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 14 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 16 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 3 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 5 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 1 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 16 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Fan Board 1
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 6 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 11 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 4
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 4 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Fan Board 0
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 8 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 13 Chassis

root@yosemite4:~# 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/Yosemite_4_Fan_Board_0
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_ADC
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN0_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN0_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN1_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN1_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN4_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN4_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN5_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN5_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN8_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN8_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN9_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN9_TACH_OUTLET_SPEED_RPM
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/Fan_Board_0_FRU
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_ADC
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN10_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN10_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN11_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN11_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN2_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN2_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN3_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN3_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN6_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN6_TACH_OUTLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN7_TACH_INLET_SPEED_RPM
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN7_TACH_OUTLET_SPEED_RPM
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/Fan_Board_1_FRU
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/All_Fan
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P0V6_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P12V_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P1V0_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P1V2_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P1V8_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P2V5_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P3V3_RGM_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P3V3_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P3V_BAT_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P5V_USB_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P5V_VOLT_V
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_TEMP_C
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/PID_NIC_TEMP
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_MGNT_TEMP
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_NIC_TEMP
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_SENTINEL_DOME_SLOT_PRESENT_PERCENTAGE
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_VIRTUAL_NIC_TEMP_C
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Zone_1
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_CPU_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_DIMM_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_SSD_BOOT_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_VR_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_CALIBRATED_MB_FIO_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_CPU_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_DIMM_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_FIO_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_INLET_OUTLET_TEMP_Slot_1
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_SSD_BOOT_Slot_1
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_VR_Slot_1
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_CPU_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_DIMM_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_SSD_BOOT_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_VR_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_CALIBRATED_MB_FIO_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_CPU_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_DIMM_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_FIO_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_INLET_OUTLET_TEMP_Slot_2
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_SSD_BOOT_Slot_2
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_VR_Slot_2
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_CPU_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_DIMM_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_SSD_BOOT_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_VR_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_CALIBRATED_MB_FIO_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_CPU_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_DIMM_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_FIO_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_INLET_OUTLET_TEMP_Slot_3
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_SSD_BOOT_Slot_3
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_VR_Slot_3
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_CPU_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_DIMM_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_SSD_BOOT_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_VR_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_CALIBRATED_MB_FIO_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_CPU_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_DIMM_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_FIO_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_INLET_OUTLET_TEMP_Slot_4
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_SSD_BOOT_Slot_4
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_VR_Slot_4
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_CPU_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_DIMM_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_SSD_BOOT_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_VR_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_CALIBRATED_MB_FIO_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_CPU_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_DIMM_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_FIO_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_INLET_OUTLET_TEMP_Slot_5
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_SSD_BOOT_Slot_5
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_VR_Slot_5
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_CPU_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_DIMM_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_SSD_BOOT_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_VR_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_CALIBRATED_MB_FIO_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_CPU_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_DIMM_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_FIO_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_INLET_OUTLET_TEMP_Slot_6
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_SSD_BOOT_Slot_6
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_VR_Slot_6
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_CPU_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_DIMM_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_SSD_BOOT_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_VR_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_CALIBRATED_MB_FIO_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_CPU_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_DIMM_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_FIO_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_INLET_OUTLET_TEMP_Slot_7
| | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_SSD_BOOT_Slot_7
| | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_VR_Slot_7
| `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_CPU_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_DIMM_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_SSD_BOOT_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_VR_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_CALIBRATED_MB_FIO_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_CPU_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_DIMM_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_FIO_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_INLET_OUTLET_TEMP_Slot_8
| |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_SSD_BOOT_Slot_8
| `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_VR_Slot_8
|- /xyz/openbmc_project/inventory/system/chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_10_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_11_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_12_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_13_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_14_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_15_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_16_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_1_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_2_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_3_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_4_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_5_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_6_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_7_Chassis
| |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_8_Chassis
| `- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_9_Chassis
`- /xyz/openbmc_project/inventory/system/cpu
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_10_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_11_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_12_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_13_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_14_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_15_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_16_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_1_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_2_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_3_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_4_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_5_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_6_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_7_CPU
|- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_8_CPU
`- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_9_CPU

busctl introspect xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_10_CPU
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -
xyz.openbmc_project.AddObject interface - - -
.AddObject method a{sv} - -
xyz.openbmc_project.Association.Definitions interface - - -
.Associations property a(sss) 1 "probed_by" "probing" "/xyz/openbmc... emits-change
xyz.openbmc_project.Inventory.Decorator.Asset interface - - -
.Manufacturer property s "N/A" emits-change
.Model property s "N/A" emits-change
.PartNumber property s "N/A" emits-change
.SerialNumber property s "$CHASSIS_INFO_AM1" emits-change
xyz.openbmc_project.Inventory.Decorator.Slot interface - - -
.SlotNumber property t 10 emits-change
xyz.openbmc_project.Inventory.Item.CPU interface - - -
.Name property s "Yosemite 4 Sentinel Dome Slot 10 CPU" emits-change
.Probe property s "xyz.openbmc_project.FruDevice({\'BOA... emits-change
.Type property s "CPU" emits-change

root@yosemite4:~# busctl get-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Chassis xyz.openbmc_project.Association.Definitions Associations
a(sss) 2 "probed_by" "probed" "/xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board" "probed_by" "probed" "/xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome"

busctl get-property xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_10_CPU/probed_by xyz.openbmc_project.Association endpoints
as 1 "/xyz/openbmc_project/FruDevice/Sentinel_Dome_without_Retimer_0"
```

Change-Id: Id5f2564a38327e029b7e5c6faef75b2547b42527
Signed-off-by: Christopher Meis <christopher.meis@9elements.com>

show more ...

cefe4bb602-Sep-2025 Marc Olberding <molberding@nvidia.com>

fru_device: Add the ability to skip addresses for all buses

In certain situations, we won't know the buses ahead of time,
like when probing muxes dynamically using EntityManager. We do
however know

fru_device: Add the ability to skip addresses for all buses

In certain situations, we won't know the buses ahead of time,
like when probing muxes dynamically using EntityManager. We do
however know the general range of where our eeproms are. Ideally
we would have the ability to set a range of addresses, but this
is a lower lift change, to allow addresses to blocklisted across
all buses.

Tested:
Ran on an nvl32-obmc model with i2c tracing enabled.
Added a blocked list entry and checked logging as well
as that no i2c transactions were issued by fru-device
to the blocked addresses. Existing FRU's worked as
expected.

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

show more ...

c58af0b612-Sep-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: use PDI constants for inventory

Use PDI constants to create inventory interfaces, where possible. This
helps to make the code more readable and guarantees the interfaces which
are di

entity-manager: use PDI constants for inventory

Use PDI constants to create inventory interfaces, where possible. This
helps to make the code more readable and guarantees the interfaces which
are directly created from a PDI constant actually exist.

Also use the decorator asset interface PDI definition to query asset
information.

Tested: on Tyan S8030

Inventory interfaces are created as before
```
busctl introspect xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/board/Tyan_S8030_Baseboard
```

output
```
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
...
xyz.openbmc_project.Inventory.Decorator.Asset
...
xyz.openbmc_project.Inventory.Item.Board
...
```

Asset information is queried as before

```
Sep 12 14:31:41 s8030-bmc-30303035c0c1 entity-manager[19121]: Inventory Added: Supermicro PWS 920P SQ 0
Sep 12 14:31:41 s8030-bmc-30303035c0c1 entity-manager[19121]: Inventory Added: Supermicro PWS 920P SQ 1
Sep 12 14:31:41 s8030-bmc-30303035c0c1 entity-manager[19121]: Inventory Added: Tyan S8030 Baseboard
Sep 12 14:31:41 s8030-bmc-30303035c0c1 entity-manager[19121]: Inventory Added: MBX 1.57 Chassis
```

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

show more ...

fa88c5e612-Sep-2025 Alexander Hansen <alexander.hansen@9elements.com>

entity-manager: use PDI constants for Host State

PDI already defines interface name and path namespace, use that instead
of duplicating it here.

Using the interface variable for service name since

entity-manager: use PDI constants for Host State

PDI already defines interface name and path namespace, use that instead
of duplicating it here.

Using the interface variable for service name since service name is not
defined in PDI and it's the same.

Defining default service name in [1].

Tested: on Tyan S8030

```
Sep 12 11:32:18 s8030-bmc-30303035c0c1 entity-manager[14717]: querying initial power state
```

```
ipmitool power on
```

```
Sep 12 11:37:27 s8030-bmc-30303035c0c1 entity-manager[14717]: power match triggered
Sep 12 11:37:28 s8030-bmc-30303035c0c1 entity-manager[14717]: power match triggered
Sep 12 11:37:28 s8030-bmc-30303035c0c1 entity-manager[14717]: power match triggered
Sep 12 11:37:28 s8030-bmc-30303035c0c1 entity-manager[14717]: power match triggered
```

```
ipmitool power off
```

```
Sep 12 11:37:52 s8030-bmc-30303035c0c1 entity-manager[14717]: power match triggered
```

References:
[1] https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/83644

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

show more ...

8ee4369309-Oct-2025 Chau Ly <chaul@amperecomputing.com>

Don't handle leftover template vars for "Probe" string

As "Probe" string does not contain any template variable, we should not
check for leftover template variables in it after performing template
v

Don't handle leftover template vars for "Probe" string

As "Probe" string does not contain any template variable, we should not
check for leftover template variables in it after performing template
variable replacement which can mistakenly treat the regex token "$" as a
template variable.

This commit also skips handling leftover template variables for
"Exposes" object when the replacement is performed on the record for the
first time. The handling will be done when the replacement is targeted
for "Exposes" object later.

Tested on configurations with regex patterns in Probe string and and on
meta's fan boards that have math operations for more than 2 template
variables in the same JSON pair value. e.g:

```
"in0_Name": "FCB_$bus % 2 FAN_$bus % 2 * 2 VOLT_V",
```

Fixes: I4499baf3ebe9560e13932a49e324d1c8b0255623
Change-Id: I86ba103fec67c79908aa7a09755582e76b4cdee1
Signed-off-by: Chau Ly <chaul@amperecomputing.com>

show more ...

12345678910>>...22