From: Ed Tanous <ed.tanous@intel.com>
To: Patrick Venture <venture@google.com>,
Matt Spinler <mspinler@linux.vnet.ibm.com>,
Robert Lippert <rlippert@google.com>,
Brad Bishop <bradleyb@fuzziesquirrel.com>,
Nancy Yuen <yuenn@google.com>
Cc: Sai Dasari <sdasari@fb.com>,
Vernon Mauery <vernon.mauery@linux.intel.com>,
OpenBMC Maillist <openbmc@lists.ozlabs.org>,
openbmc
<openbmc-bounces+mspinler=linux.vnet.ibm.com@lists.ozlabs.org>
Subject: Re: In-Band Firmware Update
Date: Mon, 6 Aug 2018 15:20:04 -0700 [thread overview]
Message-ID: <5627e085-571f-02ef-306d-07874eae5109@intel.com> (raw)
In-Reply-To: <CAO=notz_FGnAe0_qJ4Zwh15Kr6_BqJiYNjA+feE2THYqRUQ4aw@mail.gmail.com>
>> The interface defines some primitives:
>> - BmcBlobGetCount: returns the number of blobs known presently
Is this blobs per object? Blobs total for the system?
>> - BmcBlobEnumerate: returns the blob's name for an index into the
>> count (index 0 might return "/tmp/bmc-image" or something)
Could this be a well known name rather than an index? Blob 0 is a lot
less descriptive than Blob: bmc-image.
>> - BmcBlobOpen: opens the blob and returns a session for future actions
I'm not really following what blob open would do. What arguments does
it take? Would this be on a higher level collection type interface? is
BmcBlobReset or BmcBlobClear a better name for the action it's performing?
>> - BmcBlobRead: returns bytes
>> - BmcBlobWrite: writes bytes
Should we put any restrictions on write/read sizes, or leave it up to
each implementation to enforce? I'm kind of leaning toward the later,
although it makes the interface harder to use.
I'm thinking about in band updatable power supplies that can only accept
writes of a very particular block sizes (I think it's 16 bytes at a time).
>> - BmcBlocCommit: any action the handler wants that basically means, do thing.
>> - BmcBlobClose: closes the file
What is the difference between commit and close? Close seems like a
possible implementation of commit, but not necessarily required if Blob
doesn't represent a file.
>> - BmcBlobDelete: deletes the blob, not always possible.
>> - BmcBlobStat: returns blob metadata
What would this return?
>> - BmcBlobSessionStat: returns metadata specific to the session
? I don't see any other mention of session. I feel like I'm missing
part of the picture.
Overall, this looks really interesting. We have a relatively similar
interface for shipping SMBIOS and MDR data from BIOS that we had to
invent to get those fields to work. I'm not sure if they map 100%, but
we could likely get it to work with a little massaging to our stuff. As
a general purpose interface, it seems very useful, especially in the
context of firmware update, which could be implemented in any number of
interfaces.
I'd be interested in separating out the "file like" nature from the
interface, and keep it as just a "block level" update, that may be a
file, or may be something else.
I'm also interested in the actual arguments, as well as the distinction
between a Blob and a BlobSession that I'm not really understanding.
>>
>> It doesn't immediately define actions such as "abort", however, "close
>> without commit" might be equivalent.
I kind of like this about the interface. Some updates can't really be
reverted cleanly, so leaving it up to the implementation to decide
(possibly based on a timeout or something) seems kinda nice to have.
>> Regardless if we want to use it for this, I'd also be willing to
>> upstream our ipmi-blobs handler infrastructure. It has presently one
>> limitation, and that is that it doesn't support run-time loading of
>> handlers, how ipmid supports finding IPMI libraries. It is fully
>> contained with the handlers, and they're enabled by configuration
>> flags in the build. This limitation could be removed if desired.
From the looks of Vernons IPMI handler rewrite document, runtime
loading of handler libraries might be out anyway, so I don't think this
is a non-starter, especially given the timeframes.
next prev parent reply other threads:[~2018-08-06 22:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-23 18:13 In-Band Firmware Update Patrick Venture
2018-07-23 22:18 ` Vernon Mauery
2018-07-24 0:13 ` Sai Dasari
2018-07-24 19:02 ` Bakshi, Sachit
2018-07-24 20:38 ` Matt Spinler
2018-07-27 19:01 ` Patrick Venture
2018-08-06 16:51 ` Patrick Venture
2018-08-06 17:26 ` Patrick Venture
2018-08-06 18:36 ` Patrick Venture
2018-08-06 22:20 ` Ed Tanous [this message]
2018-08-06 23:04 ` Andrew Jeffery
2018-08-07 15:14 ` Patrick Venture
2018-08-07 16:41 ` Patrick Venture
2018-08-07 18:48 ` Patrick Venture
2018-08-07 15:11 ` Patrick Venture
2018-08-06 21:59 ` Ed Tanous
2018-08-08 1:32 ` Jeremy Kerr
2018-08-08 21:42 ` Vernon Mauery
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5627e085-571f-02ef-306d-07874eae5109@intel.com \
--to=ed.tanous@intel.com \
--cc=bradleyb@fuzziesquirrel.com \
--cc=mspinler@linux.vnet.ibm.com \
--cc=openbmc-bounces+mspinler=linux.vnet.ibm.com@lists.ozlabs.org \
--cc=openbmc@lists.ozlabs.org \
--cc=rlippert@google.com \
--cc=sdasari@fb.com \
--cc=venture@google.com \
--cc=vernon.mauery@linux.intel.com \
--cc=yuenn@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.