Arm Server Base System Architecture Reference board (``sbsa-ref``)
==================================================================

The ``sbsa-ref`` board intends to look like real hardware (while the ``virt``
board is a generic board platform that doesn't match any real hardware).

The hardware part is defined by two specifications:

  - `Base System Architecture <https://developer.arm.com/documentation/den0094/>`__ (BSA)
  - `Server Base System Architecture <https://developer.arm.com/documentation/den0029/>`__ (SBSA)

The `Arm Base Boot Requirements <https://developer.arm.com/documentation/den0044/>`__ (BBR)
specification defines how the firmware reports that to any operating system.

It is intended to be a machine for developing firmware and testing
standards compliance with operating systems.

Supported devices
"""""""""""""""""

The ``sbsa-ref`` board supports:

  - A configurable number of AArch64 CPUs
  - GIC version 3
  - System bus AHCI controller
  - System bus XHCI controller
  - CDROM and hard disc on AHCI bus
  - E1000E ethernet card on PCIe bus
  - Bochs display adapter on PCIe bus
  - A generic SBSA watchdog device


Board to firmware interface
"""""""""""""""""""""""""""

``sbsa-ref`` is a static system that reports a very minimal devicetree to the
firmware for non-discoverable information about system components. This
includes both internal hardware and parts affected by the qemu command line
(i.e. CPUs and memory). As a result it must have a firmware specifically built
to expect a certain hardware layout (as you would in a real machine).

Note
''''

QEMU provides the guest EL3 firmware with minimal information about hardware
platform using minimalistic devicetree. This is not a Linux devicetree. It is
not even a firmware devicetree.

It is information passed from QEMU to describe the information a hardware
platform would have other mechanisms to discover at runtime, that are affected
by the QEMU command line.

Ultimately this devicetree may be replaced by IPC calls to an emulated SCP.

DeviceTree information
''''''''''''''''''''''

The devicetree reports:

   - CPUs
   - memory
   - platform version
   - GIC addresses
   - NUMA node id for CPUs and memory

Platform version
''''''''''''''''

The platform version is only for informing platform firmware about
what kind of ``sbsa-ref`` board it is running on. It is neither
a QEMU versioned machine type nor a reflection of the level of the
SBSA/SystemReady SR support provided.

The ``machine-version-major`` value is updated when changes breaking
fw compatibility are introduced. The ``machine-version-minor`` value
is updated when features are added that don't break fw compatibility.

Platform version changes:

0.0
  Devicetree holds information about CPUs, memory and platform version.

0.1
  GIC information is present in devicetree.

0.2
  GIC ITS information is present in devicetree.

0.3
  The USB controller is an XHCI device, not EHCI.
