blob: 260f87013d9eaee877247b482bac9113fd23451a [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
Stewart Smith51cd2b22019-07-08 16:58:41 +100054
55Introductory Videos
56-------------------
57
58There are a number of good recorded presentations from various conferences
59around the world that have overviews and deep dives into various parts of
60the firmware stack.
61
62Here, we present technical presentations that may be useful in learning
63about topics relevant to OpenPOWER firmware development.
64
65For broader OpenPOWER topics, check out the following channels:
66
67- `OpenPOWER Foundation` <https://github.com/open-power/op-build/pull/2983>`_
68
69Introductory
70^^^^^^^^^^^^
71
72.. youtube:: https://www.youtube.com/watch?v=a4XGvssR-ag
73.. youtube:: https://www.youtube.com/watch?v=hcLhKjxa-40
74
75Secure Boot
76^^^^^^^^^^^
77
78.. youtube:: https://www.youtube.com/watch?v=hwB1bkXQep4
79
80Interfaces and standards
81^^^^^^^^^^^^^^^^^^^^^^^^
82
83.. youtube:: https://www.youtube.com/watch?v=2TroT3ORw0s
84
85OpenCAPI
86^^^^^^^^
87
88.. youtube:: https://www.youtube.com/watch?v=h3pLBDCqY-I
89
90.. youtube:: https://www.youtube.com/watch?v=K4dhx0ctjkQ
91
92XIVE Interrupt Controller
93^^^^^^^^^^^^^^^^^^^^^^^^^
94
95.. youtube:: https://www.youtube.com/watch?v=s88beMQWkks
96
97Petitboot
98^^^^^^^^^
99
100.. youtube:: https://www.youtube.com/watch?v=4JbDb4bRBK4
101.. youtube:: https://www.youtube.com/watch?v=oxmMJMibZQ8
102
103Booting Faster
104^^^^^^^^^^^^^^
105
106.. youtube:: https://www.youtube.com/watch?v=fTLsS_QZ8us
107
108Testing
109^^^^^^^
110
111.. youtube:: https://www.youtube.com/watch?v=znEM2xqJhBU
112
113Bringup and customisation
114^^^^^^^^^^^^^^^^^^^^^^^^^
115
116.. youtube:: https://www.youtube.com/watch?v=v73Nw7NDxYI
117
118.. youtube:: https://www.youtube.com/watch?v=dBEBQQYP_eI