OpenPOWER Firmware

From RCS Wiki
Revision as of 06:06, 2 August 2018 by HLandau (talk | contribs)
Jump to navigation Jump to search

OpenPOWER Firmware is an open-source alternative to OpenFirmware and proprietary IBM firmware used on Power machines.[1] It is a general name for many separate pieces of software used to start recent Power Architecture chips made by IBM.[2]

OpenBMC is a separate project that creates firmware for the Baseboard Management Controller.

Components

Firmware Executed on Loaded from Function
OTPROM SBE core (on CPU chip) eFuses
  • very first instructions executed
  • loads SBE firmware from SEEPROM into SBE core
Self-Boot Engine (SBE) SBE core (on CPU chip) SBE SEEPROM
  • initialises CPU core
  • loads Hostboot Bootloader
  • backup copy stored on PNOR SPI Flash, used to stage SBE firmware updates
Hostboot Bootloader (HBBL) CPU core SBE SEEPROM
  • first code which runs on main CPU cores; loads and executes rest of Hostboot
  • responsible for verifying integrity of Hostboot when secure boot is enabled, so this part of Hostboot is stored on the SBE SEEPROM, even though its source code lives inside the Hostboot repository
Hostboot CPU core PNOR SPI Flash
  • initialises DRAM (memory training, zeroing of ECC memory, etc.), processor bus, memory buffers
  • finally, chainloads Skiboot
Skiboot CPU core PNOR SPI Flash
  • initialises PCIe controllers, device trees, real time clock, NVlink, sensors
  • loads OCC firmware and starts OCC running
  • implements OpenPOWER Abstraction Layer (OPAL) for OS runtime services; remains resident in RAM after OS boot
  • finally, chainloads Skiroot
Skiroot/Petitboot CPU core PNOR SPI Flash
  • Skiroot refers to the Linux kernel and initramfs which runs from RAM
  • Contains Petitboot, a userspace application which provides a boot menu
  • Petitboot loads operating system via kexec
On-Chip Controller (OCC) OCC core (on CPU chip) PNOR SPI Flash
  • thermal regulation of CPU chip, turbo frequency selection, voltage ID selection, power measurement, etc.

Process

  1. SBE executes OTPROM, which loads SEEPROM firmware into SBE PIBMEM
  2. SBE executes SEEPROM firmware
  3. OpenBMC uses FSI interface to start SBE
  4. SBE loads Hostboot
  5. Hostboot loads Skiboot
  6. Skiboot loads OCC, Skiroot
  7. Petitboot application within Skiroot loads the operating system
  8. OS talks to firmware through OPAL

References

See also

External Links