[External] Re: ipmitool FRU write question

Ed Tanous ed.tanous at intel.com
Sat Aug 17 03:37:53 AEST 2019


On 8/16/19 9:52 AM, Harry Sung1 wrote:
> 
> Hi Ed,
> 
> Thanks for your kindly reply! I have surveyed the entity-manager before.
> But I encountered an issue when I using phosphor-inventory-manager and entity-manager at the same time.
> Both of them have same method "Notify" under same interface " xyz.openbmc_project.Inventory.Manager ", but different signature.
> 
> phosphor-inventory-manager:
> NAME                                  TYPE    SIGNATURE   RESULT/VALUE   FLAGS
> xyz.openbmc_project.Inventory.Manager interface -             -             -
> .Notify                               method    a{oa{sa{sv}}} -             -
> 
> entity-manager
> NAME                                  TYPE    SIGNATURE   RESULT/VALUE   FLAGS
> xyz.openbmc_project.Inventory.Manager interface -         -            -
> .Notify                               method    a{sa{sv}} -            -

Looking at the code, there's some irony there.  That function appears to
be implemented for compatibility, as it doesn't actually do anything
except return immediately.
https://github.com/openbmc/entity-manager/blob/b0097d41d206006a6c9a0e464cb87ccbf797921b/src/EntityManager.cpp#L1641

The irony is that (as you've found) it got the interface wrong, so it
doesn't really do anything useful in terms of compatibility.

> 
> So when some services call the 'Notify' method failed because of getting wrong service. 
> Ex: https://github.com/openbmc/ipmi-fru-parser/blob/master/writefrudata.cpp#L206
> Have you ever seen this issue before?

If you are using FruDevice, you should use it in tandem with the command
sets I linked previously.  Given how entity-manager is architected,
there is no concept of a "Notify".  Entity manager relies on the
published ObjectManager interfaces to know when things have been
added/removed.  In the command sets I linked, they interact with
FruDevice directly, so technically entity manager isn't even required
for interacting with the physical fru devices.  Entity manager is used
for reconfiguring the system once the hardware has been detected via
FruDevice.

> 
> Should I use intel-dbus-interfaces if I want to use Frudevice (entity-manager) and write FRU command(intel-ipmi-oem)?
> Or it is compatible with original dbus-interface?

I don't believe anything you've looked at so far requires
intel-dbus-interfaces.  Most of the entity-manager/frudevice bindings
are using sdbusplus directly to create their interfaces.


More information about the openbmc mailing list