Read Firmware Versions
Lei Yu
yulei.sh at bytedance.com
Thu Sep 24 12:36:40 AEST 2020
On Thu, Sep 24, 2020 at 9:40 AM Vijay Khemka <vijaykhemka at fb.com> wrote:
>
>
>
> On 9/23/20, 1:19 PM, "openbmc on behalf of Adriana Kobylak" <openbmc-bounces+vijaykhemka=fb.com at lists.ozlabs.org on behalf of anoo at linux.ibm.com> wrote:
>
> On 2020-09-23 10:35, Patrick Williams wrote:
> > On Tue, Sep 22, 2020 at 01:34:50PM +0000, Jayashree D wrote:
> >> Classification: HCL Internal
> >>
> >> Thanks Patrick for your response.
> >>
> >> In phosphor-bmc-code-mgmt, I am seeing the software image is upgraded
> >> and based on the image update, version is updated.
> >> But in my platform, I have to read firmware versions using oem
> >> commands and that version should be displayed under dbus objects.
> >> Whether phosphor-bmc-code-mgmt repo will be suitable to display the
> >> firmware version using dbus objects?
> >
> > Vijay recently added a simple BIOS flash management to
> > phosphor-bmc-code-mgmt, but there is also a openpower-pnor-code-mgmt
> > for
> > the equivalent of BIOS management on openpower systems. Since your
> > code
> > update scheme is likely to be specific to your IPMB commands, I don't
> > know if that would be best in a separate repository or an extension
> > onto
> > phosphor-bmc-code-mgmt.
> >
> > Adriana, any opinions?
>
> It could fit in phosphor-bmc-code-mgmt, some thoughts:
>
> The d-bus objects get created at 2 different times:
>
> 1. One scenario is when an image is uploaded to be updated, this is the
> support that Vijay added which allows a custom script to be run to
> update the BIOS image. If you're interested in this method for updating
> your BIOS, you could potentially add your IPMB commands in that service
> and use the Activation interfaces to drive the update.
>
> 2. The second scenario is when the BMC reboots and it recreates the
> d-bus objects. For this scenario, there's no currently support for BIOS,
> so for example the support that Vijay added does not create a d-bus
> interface if the BMC reboots, which is ok if you only want to use the
> Activation interface to trigger the update. But sounds like you want to
> always have the version information as a d-bus object, so support for
> BIOS could be added. For example, to get the BMC levels, the code looks
> for version information in the BMC in the media directory. If you get
> your app to get the version information via the oem commands you
> mentioned and create a file in the bmc in the media directory we could
> extend the logic to create the Version d-bus objects for each BIOS
> version when the BMC reboots. We'd just need to work out the details for
> the format for the files that would host the version information, and
> how to identify they're BIOS versions vs BMC.
>
> I already create a file after reading bios version via oem commands, Is there
> a pattern where should we keep this file and what is the name of file. Also
> I thought there is a dbus interface for bios management already created by
> some daemon newly added which can keep bios version.
>
We plan to do something like this:
1. The BIOS version is stored in an eeprom;
2. On BMC boot, phosphor-bmc-code-mgmt creates the bios object, and
fill the version read from the eeprom;
3. When the host is started, BIOS sends its version via OEM ipmi command;
4. BMC will update and write the version to the eeprom if the version
is different.
--
BRs,
Lei YU
More information about the openbmc
mailing list