Description
Please first read:
- https://github.com/openbmc/docs/blob/master/designs/remoteBIOSConfiguration.md
- https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/BIOSConfig/Manager.interface.yaml
Typically the default/master BIOS settings table lives in the host firmware image. On our systems, this lives on the BMC. To continue to do this, but to align with the design above, the following changes are needed:
-
Implement
SetBIOSTable
from DSP0247 v1.0.0. This should do the following:
a) Sanity/error checks, for eg check tables are sent in the expected order
b) Extract and persist tables to https://github.com/openbmc/pldm/blob/master/meson.build#L18
c) If a table of the type received is already present in the persisted location, discard the same.
d) Process the PLDM BIOS tables to set https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/BIOSConfig/Manager.interface.yaml#L65. Note the implementation of this D-Bus interface is happening in the OpenBMC community. Since the interface is merged, we can code to it.
This work is covered by story PLDM: Implement command SetBIOSTable #1464. -
The PLDM daemon currently processes JSON files to construct BIOS tables. That still needs to happen, but that should be routed through the
SetBIOSTable
command. This will require tweaks to the current code that processes the BIOS JSONs to call theSetBIOSTable
command from 1). Place this IBM specific code under anoem-ibm
compile flag.
a) Currently it is assumed that JSON entries not having a D-Bus mapping are read-only BIOS attributes. That needs to change. A new key needs to be introduced for Read-Only attributes.
b) When a D-Bus property from the JSON changes, the code currently updates the persisted BIOS tables. That should still happen.
This work is covered by story PLDM : Fix GetBIOSTable to work with generated/provded table #1465. -
The PLDM daemon should react to https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/BIOSConfig/Manager.interface.yaml#L105 and update the persisted BIOS attribute value table. The oem-ibm code should in addition send an event to PowerVM (if it is up) to inform it about the changed attributes. This is covered by PLDM: support runtime update of BIOS attributes #2283.