OPAL boot and runtime firmware for POWER
C C++ Makefile Assembly Shell SourcePawn
Latest commit e0225cc Jan 16, 2017 @stewart-ibm stewart-ibm Add skiboot 5.4.3 release notes
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
(cherry picked from 5.4.x commit 5930a57)
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Failed to load latest commit information.
asm head: add new OPAL entry points to the NACA Jan 15, 2017
ccan consolidate gcov flags into HOSTGCOVFLAGS for host binaries Sep 2, 2016
core platform: set default bmc_platform Jan 16, 2017
doc Add skiboot 5.4.3 release notes Jan 16, 2017
external generate-fwts-olog: add support for parsing prerror() Jan 5, 2017
hdata Fixup duplicate p9 entries in spira/xscom Jan 16, 2017
hw dts: Don't assert when we don't know the processor type Jan 16, 2017
include Fix PIR mask for POWER9 Jan 16, 2017
libc stdio: Fix default definition of pr_fmt Jan 5, 2017
libfdt libfdt: add basic sanity check to fdt_open_into Nov 17, 2015
libflash libflash: fix integer type in printf Jan 10, 2017
libpore stdio: Fix default definition of pr_fmt Jan 5, 2017
libstb print-stb-container: Fix build on centos7 Dec 22, 2016
opal-ci update opal-ci/README Dec 22, 2016
platforms platform: add zaius Jan 16, 2017
test hello_world: print out full path of missing MAMBO_BINARY Dec 22, 2016
.gitignore gitignore: Add Secure/Trusted Boot build files Dec 21, 2016
.travis.yml travis: enable fedora25 Dec 22, 2016
LICENCE Initial commit of Open Source release Jul 2, 2014
Makefile Add global DEBUG make flag Aug 18, 2016
Makefile.main Makefile: Disable stack protector due to gcc problems Dec 22, 2016
Makefile.rules make check: make test runs less noisy Jul 12, 2016
README.md Toplevel README -> README.md Jul 1, 2016
coverity-model.c Add coverity model Nov 18, 2015
extract-gcov.c Fix GCOV_COUNTERS ifdef logic for GCC 6.0 Jul 11, 2016
make_offsets.sh Initial commit of Open Source release Jul 2, 2014
make_version.sh versioning: Unify all versioning to match skiboot versions Jul 31, 2015
skiboot.lds.S hdata: Initialize SPIRA-H structure Apr 1, 2016
skiboot.spec external: improve xscom commands Makefile Apr 1, 2016



Firmware for OpenPower systems.

Source: https://github.com/open-power/skiboot

Mailing list: skiboot@lists.ozlabs.org

Info/subscribe: https://lists.ozlabs.org/listinfo/skiboot

Archives: https://lists.ozlabs.org/pipermail/skiboot/

Patchwork: http://patchwork.ozlabs.org/project/skiboot/list/


OPAL firmware (OpenPower Abstraction Layer) comes in several parts.

A simplified flow of what happens when the power button is pressed is:

  1. The baseboard management controller (BMC) powers the system on.
  2. The BMC selects the master chip and releases the self-boot engines (SBEs) on the POWER8 chips, master last.
  3. The BMC relinquishes control of the flexible service interface (FSI) SCAN/SCOM engines.
  4. The hostboot firmware IPLs the system. It initiates a secondary power-on sequence through a digital power systems sweep (DPSS).
  5. The hostboot firmware loads the OPAL image and moves all processors to their execution starting points.

Here, the OPAL image is three parts:

  1. skiboot (includes OPAL runtime services)
  2. skiroot - the bootloader environment
    • kernel
    • initramfs (containing petitboot bootloader)

They may be all part of one payload or three separate images (depending on platform).

The bootloader will kexec a host kernel (probably linux). The host OS can make OPAL calls. The OPAL API is documented in doc/opal-api/ (there are missing parts, patches are welcome!)

See doc/overview.txt for a more in depth overview of skiboot.


You can build on a linux host. Modern Debian and Ubuntu are well known to be suitable. Build and testing on x86 is fine. You do not need a POWER host to build and test skiboot.

You will need a C compiler for big endian ppc64. If your distro does not provide one, crosstool built compilers work well: https://www.kernel.org/pub/tools/crosstool/

You should then be able to just (where 4=nr cpu cores of your machine)

make -j4
make -j4 check

If using crosstool compilers, add /opt/cross/gcc-4.8.0-nolibc/powerpc64-linux/bin/ to your PATH.

If using packaged cross compilers on Ubuntu, you may need to set the following environment variable: CROSS=powerpc-linux-gnu-


To test in a simulator, install the IBM POWER8 Functional Simulator from: http://www-304.ibm.com/support/customercare/sas/f/pwrfs/home.html Also see external/mambo/README.md

Qemu (as of 2.2.0) is not suitable as it does not (yet) implement the HyperVisor mode of the POWER8 processor. See https://www.flamingspork.com/blog/2015/08/28/running-opal-in-qemu-the-powernv-platform/ for instructions on how to use a work-in-progress patchset to qemu that may be suitable for some work.

To run a boot-to-bootloader test, you'll need a zImage.papr built using the mambo_defconfig config for op-build. See https://github.com/open-power/op-build/ on howto build. Drop zImage.epapr in the skiboot directory and the skiboot test suite will automatically pick it up.

See opal-ci/README for further testing instructions.

To test on real hardware, you will need to understand how to flash new skiboot onto your system. This will vary from platform to platform.

You may want to start with external/boot-tests/boot_test.sh as it can (provided the correct usernames/passwords) automatically flash a new skiboot onto ASTBMC based OpenPower machines.


All patches should be sent to the mailing list with linux-kernel style 'Signed-Off-By'. The following git commands are your friends:

git commit -s
git format-patch

You probably want to read the linux Documentation/SubmittingPatches as much of it applies to skiboot.