At 9elements, we are constantly pushing the boundaries of open-source firmware - in the client and server space. Dispite our work within the x86 space - we are exploring different paths within the ARM ecosystem. Our recent work has led to a more formal partnership with ARM, highlighted by our certification in the ARM System Ready program. This significant stride not only strengthen our commitment to the ARM ecosystem but also positions us at the vanguard of server-side solutions.
The ARM System Ready SR (ServerReady) certification is a hallmark of reliability and seamless interoperability for servers and workstations. It's designed to ensure that ARM-based servers or workstations work “out of the box,” providing a bedrock of confidence for deploying ARM servers or workstations with ease1.
To underscore our commitment and showcase our technical expertise, we've collaborated with ARM to pioneer the enablement of the popular open-source cloud firmware stack, coreboot + LinuxBoot, on ARM64 systems. This venture marks a seminal moment as it's the first time we've enabled coreboot + LinuxBoot on ARM64 systems. Our proof of concept (PoC) has been successfully demonstrated on Qemu-sbsa-ref and the Neoverse V2 Simulator, illuminating the path of possibilities in the ARM64 ecosystem.
coreboot and LinuxBoot - for ARM64 Systems
The technical setup of the PoC is broken down into four main parts: ARM Trusted Firmware (TF-A), coreboot, UEFI Shim Layer, and LinuxBoot. Here's an easy-to-understand explanation of how these parts work together. The following diagram gives an overview of the complete stack.
ARM Trusted Firmware (TF-A)
The system starts from the reset vector, executing ARM Trusted Firmware, which is the first link in our firmware chain. It's like the starting point that sets the stage for everything else. It makes sure the hardware is ready for the firmware to take over after it's done its part. At this stage, it also sets up important interfaces like PSCI, SMCCC, SDEI, and more.
Then, control is passed on to coreboot.
coreboot
coreboot's job is mainly to create the ACPI and SMBIOS tables needed for the ARM64 system. Once control has been transitions from TF-A, coreboot takes over at EL3 level, while TF-A drops to EL2 level. coreboot parses the tables created through TF-A and generates ACPI and SMBIOS tables.
ACPI:
- Makes 64-bit pointers work properly.
- Moves some code around to make it optional as it's only for x86 hardware.
- Adds ARM64 specific table entries.
- Adds code to create PPTT.
- Updates various tables to ensure they work well together.
SMBIOS:
- Moves from arch/x86 to lib/ to work with the new architecture.
- Adds support for ARM64 caching setup.
- Updates SMBIOS entries to match the ARM64 setup.
After coreboot, control is handed over to our newly written UEFI Shim Layer.
UEFI Shim Layer
The UEFI Shim Layer is important because Linux on ARM64 with ACPI needs to boot via UEFI. This is due to the current architecture of Linux, only allowing to get the ACPI and Memory Map pointer via the EFI System Table.
Once set up, the UEFI Shim Layer sets up the necessary interfaces to meet the ARM LBBR (LinuxBoot Base Boot Requirement), making way for LinuxBoot to take over.
LinuxBoot
Lastly, we boot LinuxBoot. LinuxBoot is chosen because it simplifies the boot process, making it faster. It also allows for easier problem-solving during the boot process. By using LinuxBoot, we’re showing our dedication to using open-source solutions to improve system performance and reliability.
9elements and ARM - Partnership to strengthen Open-Source
As a ServerReady certified partner, 9elements is now at the helm of fostering a seamless transition and operational experience on ARM-based server platforms. Our partnership with ARM is a testament to our enduring aspiration to remain at the forefront of open-source firmware innovation, extending the scope of our expertise and solutions to a broader scope.
We are excited about the potential this partnership holds and look forward working hand in hand with ARM and our customers. Together, we aim to sculpt a more interoperable and flexible computing ecosystem, driving forward the narrative of open-source firmware solutions in the ARM domain.