# 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

    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