Using bios-settings-mgr for setting hypervisor network attributes

Patrick Williams patrick at stwcx.xyz
Thu Sep 24 05:24:57 AEST 2020


On Tue, Sep 22, 2020 at 02:39:04PM +0530, Ratan Gupta wrote:
> Hi All,
> 
> Adding one more problem here with settings infra and with some proposed 
> solutions.
> 
> Problem Domain:
> 
>        - With multi property update from redfish , webserver updates the 
> settings object
>        - PLDM on bmc listens on the property update of settings object 
> and notifies to Hypervisor
>        - As there can be multiple properties in single PATCH operation, 
> PLDM on bmc sends
>          multiple Notifications to Hypervisor
>        - Specifically in case of network config,  single property update 
> on phyp may lead to network inconsistency.

The original bios config seemed to only apply settings at specific times
(ie. when the BIOS restarts) but your problem seems to indicate that
you're immediately sending settings up to the host whenever they change?

> How can we solve this?
> 
>   * Proposal 1: Add one more property in the settings Dbus object itself
>     which tells that it is ready to be read, PLDM on the BMC watching on
>     that property and read the whole network configuration and notifies
>     Hypervisor.
> 
>   * Proposal 2: Hypervisor runs the timer if the bios attr belongs to
>     network configuration and once the timer expires,it reads the bios
>     attr related to network and applies it.
> 
>   * Proposal 3: Add one more bios attribute in the bios table which
>     tells that Bios configuration can be read and applied by the
>     Hypervisor for the network configuration.

It is unfortunate that org.freedesktop.DBus.Properties doesn't have a
way to set multiple properties as the analogous operation to 'GetAll'.

In the case of networking, how do we handle this for the BMC settings?
Don't we have a similar situation where multiple properties are changed
via some interface and could leave the network in an unusual state?  I'm
thinking IPMI does this.

When all of our DBus objects were serial we likely never had this issue
because the request to read the properties (to send to the hypervisor)
would come behind the signal and subsequent property updates.  Now that
we're moving towards more ASIO we likely will see this kind of issue
more often.  I don't like it but we could certainly proposal a
'SetMultiple' extension to org.freedesktop or create our own interface.

Proposal #2 isn't great because, well, how long do you wait?  In the
case of hypervisor updates, delaying something on the order of a second
is probably sufficient for Redfish/PLDM, but that doesn't really
generally solve the problem.

We could define an interface to implement something like Proposal #1,
but we would need a new interface and not a property we tack onto
existing interfaces.  We'd probably need to revisit a lot of our
interface definitions and see which ones typicallly have multi-property
updates and does an intermediate state leave us in a bad situation.

Specifically for BIOS/Hypervisor settings, I mentioned before that it
isn't clear to me what the proposal is for applying Pending to Current.
Again, this isn't general, but we could define an interface specific for
BIOS/Hypervisor settings which has a way to indicate 'Pending
transaction is complete' (set by entities like Redfish) and 'Pending
values applied to Current' (set by entities like PLDM).  For the current
settings-style values though, this requires external interfaces to
somehow know that the setting is associated with the Host in order to do
the application, since BMC-owned properties won't have or need this.

-- 
Patrick Williams
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20200923/5526b07c/attachment.sig>


More information about the openbmc mailing list