ARM NEOVERSE · PRESENTATION 04

SBSA, SystemReady & the Platform Contract

What makes a Neoverse SoC into a server you can just boot Ubuntu on
SBSA levels 3-7 · SBBR · BSA · SystemReady SR / ES / IR / LS · UEFI + ACPI on Arm
02

The Pre-SBSA Problem

  • Pre-2016 Arm servers were each a little snowflake — vendor-specific boot, vendor-patched kernel, vendor device tree, vendor config for GIC/SMMU/timers.
  • Ubuntu on Cavium ThunderX needed one patched kernel tree; Ubuntu on AMD Seattle needed another; neither ran on each other's box.
  • This was OK in mobile (vendor bootloader + AOSP image per device) but unsuitable for datacentres where the admin wants "just boot a stock RHEL/Ubuntu/Rocky ISO".
  • x86 had solved this in the 1990s: BIOS → UEFI + ACPI gave a standard runtime machine description; installers probed and worked everywhere.
  • Arm needed the same contract. SBSA (2016) + SBBR + BSA (2019) + SystemReady (2020) built it.
"If you have to rebuild your kernel per box, it's not a server; it's an embedded project wearing a blazer." — datacentre operator axiom

The platform contract is as important as the CPU itself for Neoverse's success. Graviton wouldn't exist at hyperscale if AWS had to maintain a bespoke kernel image.

03

The Standards Stack

SpecWhat it definesWho consumes it
SBSAMinimum architectural features the SoC must have (GICv3, SMMUv3, PCIe, timers, PMU)Silicon designer
SBBRBoot requirements — UEFI 2.7+, PSCI, ACPI tables, SMBIOSFirmware + bootloader team
BSABase System Architecture — the SBSA successor covering all Arm platforms (not only server)Silicon designer (newer IoT / automotive)
BBRBase Boot Requirements — BSA companionFirmware
ACSArchitecture Compliance Suite — software tests that run on the SoC to prove complianceValidation + certification
SystemReadyCertification program that bundles BSA + BBR + ACS into tiers (SR, ES, IR, LS)OEM, OS distributor

Think of it as three layers: SBSA/BSA says what the silicon must have; SBBR/BBR says what the firmware must expose; SystemReady is the stamp that says "a distro can boot unmodified on this box".

04

SBSA Levels — 3 through 7

LevelYearKey additions
SBSA 32016GICv3 + ITS · SMMUv2 · PCIe Gen 3 · 64-bit AArch64 only · EL2 virtualization · Armv8.1-A
SBSA 42018SMMUv3 · PCIe PASID + ATS · Armv8.2-A baseline · PMUv3 events · RAS architecture · DIT
SBSA 52019MPAM v1 optional · Armv8.4-A features (secure-EL2, nested virt) · Enhanced RAS · Activity Monitors (AMU)
SBSA 62021Armv8.5-A: BTI / MTE / SSBS · SPE required · TRBE · Counter virtualization
SBSA 72023Armv9.0-A baseline: SVE2 mandatory · RME / CCA optional · CXL 2.0 · MPAM v1 mandatory

Each level is cumulative. Graviton 2 is SBSA 4. Graviton 3 is SBSA 5. Cobalt 100 and Graviton 4 are SBSA 6+. CSS V3 / N3 targets SBSA 7.

SBSA levels are the way Arm disciplines the ecosystem: every generation of Neoverse bumps at least one level, which in turn forces OS distributions to keep pace — and forces silicon vendors to add features that would otherwise be optional.

05

Core Mandatory IP Under SBSA

  • GICv3 (+ ITS) — interrupt controller. ITS (Interrupt Translation Service) handles MSI / LPI routing.
  • SMMU-v3 — I/O MMU. Stage 1 + 2 translation, ATS / PASID / PRI, event queue.
  • Generic Timer — architectural per-EL timers + memory-mapped system counter.
  • PMU (PMUv3) — standardised performance counter access at EL1 + EL0.
  • PCIe root complex — PCIe ECAM memory layout specified.
  • UART — SBSA UART is a subset of PL011; boot console.
  • Watchdog — SBSA Watchdog spec; two-stage (warn + reset).
  • TPM — for SBSA 5+, a TCG-compliant TPM 2.0 at a discoverable location.

Why name specific IPs?

Not to lock vendors in — GICv3 is architectural, many vendors' own implementations conform. But SBSA specifies programming interfaces so Linux drivers are shared.

See the System IP deck

Deep dive on GIC, SMMU, DynamIQ DSU, MPAM/CoreSight in the Arm System IP series.

06

SBBR — What the Firmware Must Do

  • UEFI 2.7+ (runtime services, boot services, boot manager, HII).
  • ACPI 6.3+ tables describing every device:
    • RSDT / XSDT — root pointers
    • MADT — GIC topology
    • GTDT — timers
    • IORT — SMMU/PCIe topology
    • PPTT — processor cache/package hierarchy
    • SPCR — UART config
    • SLIT / SRAT — NUMA + affinity
    • MPAM / APMT / BDAT — partitioning + DRAM setup
  • PSCI (Power State Coordination) — CPU_ON, CPU_OFF, SYSTEM_RESET, SYSTEM_SUSPEND.
// Boot flow on a SystemReady-SR Arm server:
// (x86-like, except EL3 secure monitor below UEFI)

BL1 (ROM loader)          → in ROM
BL2 (image loader)        → DRAM bring-up
BL31 (EL3, TF-A)          → PSCI, SDEI, SMCCC services
BL32 (optional S-EL1 TEE) → OP-TEE if present
BL33 (UEFI, EDK2)         → Boot Manager, ACPI tables

UEFI -> grub-aa64.efi -> vmlinuz + initrd

// Linux sees: ACPI tables, PSCI over SMC, GICv3, SMMUv3
// No per-vendor DTB; device description is ACPI.
07

BSA — the Superset for All Arm Platforms

  • BSA (Base System Architecture) was announced in 2019 as the superset of SBSA + the equivalent for embedded / IoT / client Arm platforms.
  • Same philosophy: define the standard runtime feature set so distros don't need per-device patches.
  • Used by:
    • Arm-based laptops (Windows on Arm devices, Qualcomm Snapdragon Compute)
    • IoT / networking SoCs targeting Ubuntu or Fedora IoT
    • Automotive Linux targets (QNX, AGL)
  • BBR is the companion firmware boot spec.
  • SBSA is now effectively "BSA for servers" — has SBSA-specific extras like PCIe Root Complex requirements.

Why BSA matters

A decade ago every Arm dev board booted differently (U-Boot with per-SoC defconfig, NAND-specific). BSA gives IoT device OEMs the same "distro boots unmodified" experience servers already have.

Shared ecosystem with x86

BSA + BBR = UEFI/ACPI on Arm. Ubuntu's single arm64 ISO boots on any certified box, exactly like the x86-64 ISO boots on any PC. Same tool-chain (grub, systemd-boot, sb-sign).

08

SystemReady — the Certification Tiers

TierScopeTargetExample platforms
SR (Server)Full SBSA + SBBR; Linux distro boots unmodifiedData centre serversGraviton, Ampere Altra, Azure Cobalt
ES (Embedded Server)SBSA-like for edge servers (5G base station, network appliance)Telco, CDNMarvell Octeon 10, ECS-style DPUs
IR (IoT Ready)BSA + BBR + U-Boot compat; slimmer — fits a Raspberry Pi class SoCGateways, IoT hubsNXP i.MX 8M Plus, Rockchip RK3588
LS (LinuxBoot Server)SR-equivalent but LinuxBoot flavoured firmware (kernel-as-loader), no UEFI at runtimeHyperscaler custom platformsOCP / internal designs
Devicetree (legacy)Devicetree-based boards that don't do ACPIEmbedded, older SoCsHundreds of board types

All SystemReady tiers run the Arm ACS (Architecture Compliance Suite) — a set of ~2500 automated tests that must pass before a vendor claims certification. Published pass lists are at arm.com/SystemReady.

09

Linux Boot Path on a SystemReady-SR Box

Mask ROM / BL1 (on-chip) BL2 — DRAM bring-up, board init BL31 — EL3 TF-A, PSCI, SDEI, SMCCC BL32 — S-EL1 OP-TEE (optional) BL33 — UEFI (EDK2 EL2) grub-aa64.efi (EL1) Linux kernel + initramfs (EL1) systemd / userspace / apps (EL0)
  • Every transition is standardised — UEFI handoff protocol, PSCI ABI, ACPI runtime.
  • Linux entry point doesn't care about vendor: reads MADT/GTDT/IORT from ACPI, brings up cores via PSCI.
  • TF-A (EL3) is the same code base across 40+ SoCs with vendor-specific BL2 platforms as plugins.
  • Kernel command line + initramfs fetched from EFI System Partition — same as any x86 UEFI box.
10

ACPI Tables You'll See on Neoverse

TableContents
MADTGICv3 distributor / redistributor / ITS locations + CPU IDs
GTDTGeneric Timer + Watchdog base addresses, secure/nonsecure IRQs
IORTI/O Relationship Table — maps PCIe Requester ID → SMMU → memory
MCFGPCIe ECAM base addresses per segment
PPTTProcessor Properties Topology — cores, clusters, caches, shared resources
SRAT / SLITNUMA topology — which memory ranges and cores share nodes, relative distances
HMATHeterogeneous Memory — latency/bandwidth between NUMA nodes (CXL-aware)
APMTArm PMU Table — describes coherent PMU outside the core (CMN PMU, SMMU PMU)
MPAMMPAM configuration — which resources are partitionable
RAS / EINJ / HESTRAS event injection and source table — portable across vendors
11

TF-A & EDK2 — the Open-Source Plumbing

  • Trusted Firmware-A (TF-A) — canonical EL3 implementation. BSD licence. Supported by virtually every Arm server SoC vendor.
  • Supplies PSCI, SDEI, SMCCC, RAS handlers, EL3 secure monitor for TrustZone / RME.
  • EDK2 (TianoCore) — the UEFI implementation that ships as BL33 on every SystemReady-SR box.
  • EDK2 provides UEFI Boot Services (LoadImage, AllocatePages) and Runtime Services (GetTime, SetVariable).
  • Linaro's OP-TEE is the canonical S-EL1 trusted OS — handles secure storage, fTPM, fingerprint, biometric matchers.
  • Together: EL3 TF-A + S-EL1 OP-TEE + EL2 hypervisor + EL1 Linux is a full stack, entirely open-source.

Why this matters day-to-day

For a firmware or kernel role at Arm / AWS / Azure, knowing TF-A + EDK2 + OP-TEE is table stakes. These are where platform bring-up happens in 2024.

Why open-source mattered

x86 servers have had open-source firmware (coreboot) for years but non-dominantly. Arm servers made open-source the default from Graviton 2 onwards — reduced bring-up time for new silicon from ~18 months to ~6.

12

Virtualization Baseline — What a Neoverse VM Sees

  • Guest expects SBSA-level features emulated or passed through:
    • GICv3 with vGIC (virtual distributor)
    • vSMMU (if passing through PCIe)
    • Virtual PMU (PMUv3 + SPE if enabled)
    • Generic Timer + CNTVOFF_EL2 offset
  • PSCI to the guest is a trap-and-emulate into KVM.
  • SBSA Level 3 is the practical "minimum VM guest" — anything newer is host-dependent.
  • CCA adds a Realm VM flavour where even the host hypervisor can't introspect guest memory.

KVM on Arm

KVM was architecturally identical to Xen on Arm from 2013 onwards. With VHE (v8.1-A) KVM became truly competitive with x86 KVM — no split-mode hypervisor overhead.

Nested virt

SBSA 5 supports nested virt via Armv8.4-A's FEAT_NV / NV2. AWS Nitro + Firecracker exploit this for micro-VM isolation.

13

Why SystemReady Matters in Practice

  • A Neoverse hire is often responsible for one or more of:
    • Making a new SoC pass Arm ACS
    • Writing the ACPI tables
    • Debugging PSCI or SMCCC corner cases
    • Implementing MPAM at SLC
    • Certifying a box through SystemReady SR or ES
  • A candidate who can't explain MADT, IORT, and PSCI is immediately out in 2024.
  • A candidate who knows the layering — "SBSA says core count ≥ 4, SBBR says UEFI 2.7, ACS runs in UEFI shell" — is in.

The signal to watch for

Ask: "Why does Ubuntu 22.04 boot on Graviton 3 but not on an older Armada-8K dev board?" The answer lives in SystemReady — Graviton is SR-certified, the Armada isn't. Many readers never get past "it's Arm, they should both work".

For new grads

Reading an /proc/iomem, dmesg | grep ACPI, and efibootmgr -v on a Neoverse box reveals the whole layered boot story in minutes. Better than any slide deck.

14

Lessons

  • "What's the difference between SBSA and BSA?" → SBSA is server-specific; BSA is the superset covering servers, laptops, IoT, automotive. BSA came later (2019) as the unifying spec.
  • "What tables does the Linux kernel read to discover CPUs?" → MADT (GIC topology + CPU MPIDRs), PPTT (cache/package hierarchy), SRAT (NUMA).
  • "Who implements PSCI on a Neoverse box?" → EL3 TF-A. The OS SMC's up with a PSCI function ID and TF-A executes it (power up a core, system reset).
  • "What's IORT for?" → maps PCIe Requester ID → SMMU stream ID → memory. Without it, DMA isolation for virt wouldn't work.
  • "Why SystemReady SR vs ES vs IR?" → SR = server (full UEFI + ACPI, distro boots); ES = embedded server (edge, 5G); IR = IoT (U-Boot allowed, simpler); LS = LinuxBoot-flavoured.
  • "What is the Arm ACS?" → Architecture Compliance Suite — 2000+ tests the silicon must pass for SystemReady certification. Runs in UEFI shell pre-OS.
15

References

Arm Ltd.Server Base System Architecture (ARM DEN 0029 / DEN 0094) — freely downloadable
Arm Ltd.Base System Architecture (DEN 0094) + Base Boot Requirements (DEN 0044)
Arm Ltd.Server Base Boot Requirements (DEN 0044C) — UEFI + ACPI + SMBIOS profile
Arm Ltd.SystemReady Certification Program documentation — arm.com/systemready
Trusted Firmware-Atrustedfirmware.org
TianoCore EDK2 — github.com/tianocore/edk2
LinaroReference Platforms & Engineering Groups — release notes for each SystemReady cycle
UEFI Forum — ACPI 6.5 Specification
Linux kerneldrivers/acpi/arm64/, drivers/firmware/psci/, Documentation/arm64/booting.rst

Presentation built with Reveal.js 4.6 · Playfair Display + DM Sans + JetBrains Mono
Educational use.