D-Bus interface to provide data to entity manager (was: Processing PLDM FRU information with entity manager)

Deepak Kodihalli dkodihal at linux.vnet.ibm.com
Tue May 26 22:56:27 AEST 2020

On 19/05/20 9:10 am, Deepak Kodihalli wrote:
> Hi,
> IBM systems have a requirement to consume FRU information sent down via 
> the host firmware and then relay that onto D-Bus (and then onto 
> Redfish). The host firmware will send down FRU information using PLDM.
> We wanted to use entity manager to enable transforming the PLDM FRU data 
> to D-Bus properties that fall under D-Bus inventory interfaces such as 
> the xyz.openbmc_project.Inventory.Decorator.Asset interface. I have an 
> update to the PLDM design doc to capture this flow [1], and some D-Bus 
> interfaces [2] proposed on Gerrit. Would appreciate feedback on the 
> same. The high level idea is that the pldm daemon will host raw PLDM FRU 
> information on D-Bus, and via JSON configs, entity manager can convert 
> those to D-Bus inventory objects (which then can be found by bmcweb).
>  From an entity manager perspective, I had few questions :
> - I see there is provision for persistence, but it looks like applying 
> the persisted information works only if "D-Bus probes" succeed. We have 
> a requirement to make the host-sent inventory information available even 
> when the host is powered off. Now if the host has sent this, then powers 
> off, and then BMC reboots, the BMC will no longer have the raw PLDM FRU 
> information on D-Bus and hence the entity manager probe on the same will 
> fail. Question is, can the probes be made optional when reading the 
> persisted config (system.json)?
> - How are hierarchical relationships between FRUs supposed to be 
> represented? Is that based on D-Bus pathnames? Or making use of 
> something like the D-Bus Associations interface? Any thoughts on how 
> representing such parent-child relation can be achieved via entity 
> manager configs?
> [1] https://gerrit.openbmc-project.xyz/#/c/openbmc/docs/+/32532/
> [2] 
> https://gerrit.openbmc-project.xyz/#/c/openbmc/phosphor-dbus-interfaces/+/32533/ 
> Thanks,
> Deepak

I've got some feedback on the proposal above, which is primarily 
directed at/impacts how the PLDM daemon provides FRU information to the 
entity manager daemon. Wanted to discuss the same here.

Very briefly, the proposal was :
a) The PLDM daemon will parse PLDM FRU format data and host the same on 
D-Bus as a set of PLDM FRU properties (similar to how the FruDevice 
daemon hosts properties under xyz.openbmc_project.FruDevice).
b) Apply EM system/board specific configurations on a) to be able to 
create specific inventory D-Bus objects (this is how EM works today).

To do a) above, there are 3 options:

1) Propose a D-Bus interface in phosphor-dbus-interfaces. This was [2] 
in my original email above. The concern raised by Patrick here is that 
this interface is very specific to a protocol (PLDM in this case), 
whereas the phosphor D-Bus interfaces are mostly abstract and protocol 

In my opinion, PLDM is also a data model, so PLDM specific D-Bus 
interfaces can enable two apps that are PLDM aware (for eg a PLDM 
requester app talking to the PLDM daemon) to talk to each other. I do 
see other protocol specific D-Bus interfaces as well (for eg related to 
SMBIOS). So I don't really understand the concern. The protocol specific 
interfaces do not preclude other abstract interfaces.

2) Propose a generic/abstract 'FRU properties' kind of D-Bus interface. 
This is something that both the PLDM daemon and FRU device daemon could 
use to host FRU information on D-Bus, and to provide the same as an 
intermediate FRU format data to apps like EM. The suggestion on the docs 
commit above [2] was to have an interface like {Enum[Protocol], 
array[byte]}. I think instead this could be a dict[string, 
variant[string, int64]], for a FRU property to value mapping.

While this sounds interesting, are the maintainers of EM and FruDevice 
interested in such an interface? Based on how this interface is 
designed, it might imply changes to FruDevice and Entity Manager. I 
might be interested in chasing this based on the feedback received, and 
if this will really have users other than the PLDM daemon.

3) If everyone thinks option 1 is a bad idea, and if the interest in 
option 2 is limited, I could do this based on how the FruDevice daemon 
and EM interact today, which is based on kind of a private D-Bus 
interface between the two apps. I don't think the Fru device daemon is 
tied up to EM though, it could even be in its own repository.


More information about the openbmc mailing list