[Skiboot] [RFC PATCH 0/6] Add and integrate an ipmi-flash implmementation

Andrew Jeffery andrew at aj.id.au
Thu Sep 6 16:40:09 AEST 2018


This is an RFC series hacking and slashing our way to using IPMI as a transport
for the protocol formerly known as "mbox". The bikeshed^Wprotocol has been
tentatively renamed to the "hiomap" protocol ("Host I/O Map"). 

Along the way several changes were required to some core parts of skiboot,
including SEL handler registration, and some deadlock avoidance in core/flash
while we are in polling mode during initialisation.

For the moment pnor_init() is implemented such that it will prefer ipmi-flash,
but fall back to mbox-flash if the appropriate IPMI command isn't available.

This has been tested on a Witherspoon system with a swathe of BMC patches
(below) and some yet-to-be published Hostboot changes.

openpower-host-ipmi-flash plugin for phosphor-host-ipmid:

Changes to the reference implementation of the protocol formerly known as mbox:

Still to do:

* Remove the separate 'read' and 'write' struct lpc_window members from the
  ipmi-flash context struct, there isn't a need for them to be independent but
  I stole that part of the design from mbox-flash
* Clean up the devicetree (replace the "mbox" property or add and test for
  "hiomap" as well?)
* Deal with some concurrency issues around events that reset the window state.

I've sent this out now as an RFC in-case people find bigger fish to fry than
what's on the todo list. Please review!


Andrew Jeffery (6):
  ipmi: Introduce registration for SEL command handlers
  core/lock: Use try_lock_caller() in lock_caller() to capture owner
  core/flash: Only lock around flashes update in flash_register()
  core/flash: Unlock around blocklevel calls in NVRAM accessors
  libflash: Add ipmi-flash implementation
  astbmc: Prefer ipmi-flash for PNOR access

 core/flash.c              |  19 +-
 core/lock.c               |   2 +-
 hw/ast-bmc/ast-io.c       |  10 +-
 hw/ipmi/ipmi-sel.c        | 110 ++++--
 include/ast.h             |  11 +-
 include/ipmi.h            |   5 +
 include/platform.h        |   1 +
 libflash/Makefile.inc     |   2 +-
 libflash/ipmi-flash.c     | 792 ++++++++++++++++++++++++++++++++++++++
 libflash/ipmi-flash.h     |  29 ++
 platforms/astbmc/common.c |   9 +-
 platforms/astbmc/pnor.c   |  35 +-
 12 files changed, 971 insertions(+), 54 deletions(-)
 create mode 100644 libflash/ipmi-flash.c
 create mode 100644 libflash/ipmi-flash.h


More information about the Skiboot mailing list