OPAL <--> BMC interactions
==========================

This document provides information about some of the user-visible interactions
that skiboot performs with the BMC.

IPMI sensors
------------

OPAL will interact with a few IPMI sensors during the boot process. These
are:

  * Boot Count [type 0xc3: OEM reserved]
  * FW Boot progress [type 0x0f: System Firmware Progress]

Boot Count: assertion type. When OPAL reaches a late stage of boot, it sets the
boot count sensor to 0x02. This is intended to allow the BMC detect a failed
or aborted boot, for switching to a known-good firmware image.

FW Boot Progress: assertion type. During boot, skiboot will update this sensor
to one of the IPMI-defined progress codes. The codes use by skiboot are:

  * PCI Resource configuration (0x01)
     - asserted as the PCI devices have been probed and resources allocated

  * Motherboard init (0x14)
     - asserted as the platform-specific components have been initialised

  * OS boot (0x13)
     - asserted after skiboot has loaded the PAYLOAD image, and is about to
       boot it.

Chassis control messages
------------------------

OPAL uses chassis control messages to instruct the BMC to remove power from
the host. These messages are sent during graceful reboot and shutdown processes
initiated by the host.

For a BMC-initiated graceful power-down (or reboot), the BMC is expected to send
an OEM-defined SEL message, using a SMS_ATN to trigger a BMC-to-host
notification. This SEL has a type of 0xc0, and command of 0x04. The data0 field
of the SEL indicates shutdown (0x0) or reboot (0x1).


Watchdog support
----------------

OPAL supports a BMC watchdog during the boot process. This will be disabled
before entering the OS.


Real-time clock
---------------

On platforms where a real-time-clock is not available, skiboot may use the
IPMI SEL Time as a real-time-clock device.
