blob: 7a2c03d25f1e76d6ae470265a94a8ffc478b513b [file] [log] [blame]
Stewart Smith59d3cb42018-02-12 11:52:12 +11001Introduction to OpenPOWER Firmware
2==================================
3
4The ``op-build`` project constructs a host firmware image for OpenPOWER
5machines.
6
7Firmware Components
8-------------------
9
Stewart Smith9ae44772018-12-11 11:23:43 +110010Buildroot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110011 We use http://buildroot.net/ as the build system for assembling a firmware
12 image. `op-build` is a "Buildroot overlay". We build a kernel and initramfs
Stewart Smith9ae44772018-12-11 11:23:43 +110013 using buildroot to run the Petitboot boot loader in. We maintain a branch
14 with a minimum number of patches on top of upstream buildroot.
Stewart Smith84fae252019-07-08 16:58:20 +100015op-build_
16 A buildroot overlay that assembles OpenPOWER Firmware images.
Stewart Smith9ae44772018-12-11 11:23:43 +110017SBE_
Stewart Smith59d3cb42018-02-12 11:52:12 +110018 the Self Boot Engine is the first unit inside the POWER processor to start
19 executing. It's job is to set up a core and load Hostboot.
Stewart Smith9ae44772018-12-11 11:23:43 +110020Hostboot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110021 Low level system boot firmware. It brings up CPU cores, the OCC, Memory
22 and hands control over to OPAL (skiboot)
Stewart Smith9ae44772018-12-11 11:23:43 +110023OCC_
Stewart Smith59d3cb42018-02-12 11:52:12 +110024 The On Chip Controller is responsible for thermal limits and frequency
25 management.
26OPAL
27 The OpenPOWER Abstraction Layer, provided by skiboot
Stewart Smith9ae44772018-12-11 11:23:43 +110028skiboot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110029 skiboot implements OPAL (the OpenPOWER Abstraction Layer). Skiboot is
30 boot and runtime firmware and is responsible for bringing up PCI and
31 providing runtime abstractions to the running OS.
Stewart Smith9ae44772018-12-11 11:23:43 +110032Linux_
Stewart Smith59d3cb42018-02-12 11:52:12 +110033 Once skiboot has finished setting up the machine, it hands control over
34 to a Linux kernel. This kernel provides device drivers and userspace to
Stewart Smith9ae44772018-12-11 11:23:43 +110035 run the bootloader, Petitboot. We maintain our own branch with a minimal
36 number of patches on top of the latest upstream stable release.
37Petitboot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110038 The bootloader. It is a normal user-space process running on Linux that
39 searches the system for disks and network devices that it can boot the
40 OS from.
Stewart Smith84fae252019-07-08 16:58:20 +100041HCODE_
42 Firmware for the power management PPE. Implements heavy lifting for deeper
43 STOP states.
Stewart Smith9ae44772018-12-11 11:23:43 +110044
45.. _Buildroot: https://github.com/open-power/buildroot
Stewart Smith84fae252019-07-08 16:58:20 +100046.. _op-build: https://github.com/open-power/op-build
Stewart Smith9ae44772018-12-11 11:23:43 +110047.. _SBE: https://github.com/open-power/sbe
48.. _OCC: https://github.com/open-power/occ
49.. _Hostboot: https://github.com/open-power/hostboot
50.. _skiboot: https://open-power.github.io/skiboot/
51.. _Linux: https://github.com/open-power/linux
52.. _Petitboot: https://github.com/open-power/petitboot/
Stewart Smith84fae252019-07-08 16:58:20 +100053.. _HCODE: https://github.com/open-power/hcode