Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 1 | Introduction to OpenPOWER Firmware |
| 2 | ================================== |
| 3 | |
| 4 | The ``op-build`` project constructs a host firmware image for OpenPOWER |
| 5 | machines. |
| 6 | |
| 7 | Firmware Components |
| 8 | ------------------- |
| 9 | |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 10 | Buildroot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 11 | 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 Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 13 | 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. |
| 15 | SBE_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 16 | the Self Boot Engine is the first unit inside the POWER processor to start |
| 17 | executing. It's job is to set up a core and load Hostboot. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 18 | Hostboot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 19 | Low level system boot firmware. It brings up CPU cores, the OCC, Memory |
| 20 | and hands control over to OPAL (skiboot) |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 21 | OCC_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 22 | The On Chip Controller is responsible for thermal limits and frequency |
| 23 | management. |
| 24 | OPAL |
| 25 | The OpenPOWER Abstraction Layer, provided by skiboot |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 26 | skiboot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 27 | skiboot implements OPAL (the OpenPOWER Abstraction Layer). Skiboot is |
| 28 | boot and runtime firmware and is responsible for bringing up PCI and |
| 29 | providing runtime abstractions to the running OS. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 30 | Linux_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 31 | Once skiboot has finished setting up the machine, it hands control over |
| 32 | to a Linux kernel. This kernel provides device drivers and userspace to |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 33 | run the bootloader, Petitboot. We maintain our own branch with a minimal |
| 34 | number of patches on top of the latest upstream stable release. |
| 35 | Petitboot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 36 | The bootloader. It is a normal user-space process running on Linux that |
| 37 | searches the system for disks and network devices that it can boot the |
| 38 | OS from. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame^] | 39 | |
| 40 | .. _Buildroot: https://github.com/open-power/buildroot |
| 41 | .. _SBE: https://github.com/open-power/sbe |
| 42 | .. _OCC: https://github.com/open-power/occ |
| 43 | .. _Hostboot: https://github.com/open-power/hostboot |
| 44 | .. _skiboot: https://open-power.github.io/skiboot/ |
| 45 | .. _Linux: https://github.com/open-power/linux |
| 46 | .. _Petitboot: https://github.com/open-power/petitboot/ |