summaryrefslogtreecommitdiff
path: root/Documentation/mainboard/emulation/qemu-sbsa.md
blob: abbd1895a51fd0305fd0e16a121f9b3dd427336e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# QEMU SBSA emulator
This page describes how to build and run ```coreboot``` for QEMU's sbsa-ref machine.
The qemu-sbsa ```coreboot``` image acts as BL-3.3 for Arm Trusted Firmware (```TF-A```) and
mainly takes care of setting up SMBIOS and ACPI tables, hence, in order to boot,
you also need to supply a ```TF-A``` image.

## Building TF-A

You can build ```TF-A``` from source by fetching
```
https://github.com/ARM-software/arm-trusted-firmware
```
and building the qemu-sbsa platform
```
PLAT=qemu_sbsa
```
Upon entry, ```coreboot``` expects a FDT pointer in x0, so make sure to compile ```TF-A``` with
```
ARM_LINUX_KERNEL_AS_BL33=1
```
This will force ```TF-A``` to pass a pointer to the FDT in x0.

## Building coreboot

Simply select the qemu-sbsa board and, optionally, configure a payload. We recommend
the ```leanefi``` payload. ```leanefi``` will setup a minimal set of UEFI services, just enough
to boot into a linux kernel.

## Running coreboot in QEMU

Once you have obtained ```TF-A``` and ```coreboot``` images, launch qemu via

```bash
qemu-system-aarch64 -nographic -m 1024 -M sbsa-ref -pflash <path/to/TFA.fd> \
                                                   -pflash <path/to/coreboot.rom>
```

## LBBR bootflow

arm and 9elements worked together in order to create a LBBR compliant bootflow
consisting of ```TF-A```, ```coreboot```, ```leanefi``` and ```LinuxBoot```. A proof of concept
can be found here https://gitlab.arm.com/systemready/firmware-build/linuxboot/lbbr-coreboot-poc