RISC-V Server Specifications

The RISC-V eco-system makes big strides to reach feature parity with other instructions set architectures.

RISC-V being an open standard instruction set architecture (ISA) all the standardization work happens in the open, organized in working groups of RISC-V International. All corporate members (like Canonical) and individual members (membership is free) can contribute.

The diagram below shows the top level specifications that will define the RISC-V server platform.

The Server SoC Specification focuses on hardware requirements: clocks, timers, IOMMU, PCIe subsystem, Reliability, Availability, and Serviceability, Quality of Service, Manageability, Performance Monitoring, Security Requirements.

The Boot and Runtime Services (BRS) Specification defines firmware requirements. For Ubuntu the BRS-I recipe is relevant. It defines requirements for: ACPI, SMBIOS, UEFI, supervisor binary interface (services provided by firmware to the kernel).

The RISC-V Profile Specification defines collections of instruction set extensions. Our current Ubuntu distribution runs on RVA20 hardware. RVA22 adds features like hypervisor support and vector instructions. RVA23 will make these mandatory and add vector crypto, pointer masking and more. RVA22 hardware is expected to reach the market in 2024, RVA23 in 2025 or 2026.

The Server Platform Specification refers to the three specification and adds further server specific requirements like secure boot.

For Ubuntu it is important that we review and comment on the upcoming specifications before they are finalized. Please, have a look at the links below.

Links

Specifications

Mailing lists

1 Like

I was curious to see what was mandated as part of boot architecture, TPM presence and measured boot.

I saw in the Server SoC 0.1 PDF from Feb:

  • Server SoC spec requires ACPI, does not allow for device tree
  • interface to a dTPM is mandatory, but there’s no mention of fTPM (not sure which spec that would fit into)

In the Server Platform spec’s embedded PDF from 3 months ago:

  • UEFI Secure Boot is mandatory
  • secure UEFI variables are mandatory

In the Boot and Runtime Services UEFI source doc from last month:

  • When implementing Secure Boot, you must implement TCG EFI Protocol
  • Capsule Updates are mandatory

This all seemed fine and inline with our typical expectations for Ubuntu classic and Core; not sure if we have more specific guidance to provide, e.g. what is the minimum size of UEFI variables we require, which crypto algorithms should be disabled etc.

NB: slightly painful that there is no easily browsable PDF of a recent tag to all review the exact same version; each repo is release-maintained slightly differently.