[Skiboot] Towards standard firmware update

Stewart Smith stewart at linux.vnet.ibm.com
Fri Jul 31 11:38:56 AEST 2015


Hi all,

Currently our OPAL APIs for firmware update are only linked up on FSP
machines and the interface is rather FSP specific (the verify call only
takes the first 4k or something, which is obviously problematic).

If I had a dollar for every time I've been asked in the past week about
firmware update on OpenPower systems... I'd at least be able to buy a
very nice lunch.

I think it would be good to have the standard update_flash userspace
utility (or some replacement that's a bit nicer), with a single standard
kernel interface with a standard set of OPAL calls for updating firmware
on all platforms.

After all, no *user* ever wants to have to know exactly what type of
machine they have to update their firmware, they're already going to be
annoyed at having to find out the model number to type into a vendor's
web site to find the blob of stuff to download.

So... how do we do that?

Our OPAL calls are currently documented in
doc/opal-api/opal-code-update-76-77-78.txt

We'll likely need to change them, but we should work out what would be
the requirements for having common calls on AST BMC machines.

My current guess is we need
1) verify image. does platform specific sanity checks on an image loaded
   by host kernel. Could be verifying LIDs on FSP, checking crc32s or
   headers or anything that can give some assurance of  "your not
   certainly going to brick your box"
2) flash image
   image loaded by host into memory, skiboot flashes it onto some
   side/location.
   TODO: how do we abstract away P/T or Golden/not-golden ?
3) flip boot side.
   When platform has multiple instances of the firmware, flip between
   what's giong to be booted (permanently/temporarily)
4) get info on flash
   What we expose in DT is what we had *on boot* and does *NOT*
   represent what's on the flash *NOW*.
   So... if a platform supports flashing at runtime (I can't see
   anything in FSP docs that says it isn't supported... not that we do
   it currently and I have no idea if it works)

On AST BMC machines this could all just be flash operations.

Thoughts? Comments?



More information about the Skiboot mailing list