From: Jon Mason <jon.mason@arm.com>
To: meta-arm@lists.yoctoproject.org
Subject: [PATCH 4/6] arm-bsp/rdv1: add support
Date: Tue, 31 Mar 2026 09:07:00 -0400 [thread overview]
Message-ID: <20260331130702.56223-4-jon.mason@arm.com> (raw)
In-Reply-To: <20260331130702.56223-1-jon.mason@arm.com>
Add support for Neoverse Reference Design version 1
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
.gitlab-ci.yml | 9 +++
ci/fvps.yml | 1 +
ci/rdv1.yml | 14 ++++
meta-arm-bsp/conf/machine/rdv1.conf | 67 +++++++++++++++++++
.../runtime/cases/parselogs-ignores-rdv1.txt | 3 +
.../scp-firmware/scp-firmware-rdv1.inc | 7 ++
.../scp-firmware/scp-firmware_%.bbappend | 1 +
.../trusted-firmware-a-rdv1.inc | 19 ++++++
.../trusted-firmware-a_%.bbappend | 1 +
.../recipes-bsp/uefi/edk2-firmware-rdv1.inc | 7 ++
.../recipes-bsp/uefi/edk2-firmware_%.bbappend | 1 +
.../linux/linux-arm-platforms.inc | 8 +++
meta-arm/recipes-devtools/fvp/fvp-rdv1.bb | 14 ++++
13 files changed, 152 insertions(+)
create mode 100644 ci/rdv1.yml
create mode 100644 meta-arm-bsp/conf/machine/rdv1.conf
create mode 100644 meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv1.txt
create mode 100644 meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv1.inc
create mode 100644 meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv1.inc
create mode 100644 meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv1.inc
create mode 100644 meta-arm/recipes-devtools/fvp/fvp-rdv1.bb
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a1e40e365d7c..20b3998e787b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -306,6 +306,15 @@ qemuarmv5:
- DISTRO: poky-tiny
TESTING: testimage
+rdv1:
+ extends: .build
+ parallel:
+ matrix:
+ - TESTING: testimage
+ # FVP binary is x86-only
+ tags:
+ - x86_64
+
sbsa-ref:
extends: .build
parallel:
diff --git a/ci/fvps.yml b/ci/fvps.yml
index 8ec22a30f6af..db49b3e979a9 100644
--- a/ci/fvps.yml
+++ b/ci/fvps.yml
@@ -35,6 +35,7 @@ target:
- fvp-rdv3-r1
- nativesdk-fvp-rdv3-r1
# These are x86 only... :(
+ - nativesdk-fvp-rdv1
- nativesdk-fvp-sgi575
# IoT FVPs
diff --git a/ci/rdv1.yml b/ci/rdv1.yml
new file mode 100644
index 000000000000..52cc4b32ad2b
--- /dev/null
+++ b/ci/rdv1.yml
@@ -0,0 +1,14 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json
+
+header:
+ version: 14
+ includes:
+ - ci/base.yml
+ - ci/fvp.yml
+
+local_conf_header:
+ sshpregen: |
+ # Allow the use of the pregen keys as this is CI so safe
+ COMPATIBLE_MACHINE:pn-ssh-pregen-hostkeys:rdv1 = "rdv1"
+
+machine: rdv1
diff --git a/meta-arm-bsp/conf/machine/rdv1.conf b/meta-arm-bsp/conf/machine/rdv1.conf
new file mode 100644
index 000000000000..e3b6ce736ece
--- /dev/null
+++ b/meta-arm-bsp/conf/machine/rdv1.conf
@@ -0,0 +1,67 @@
+# Configuration for Arm Neoverse v1 Reference Design development board
+
+#@TYPE: Machine
+#@NAME: RD V1
+#@DESCRIPTION: Machine configuration for RD V1
+
+require conf/machine/include/arm/arch-armv8-4a.inc
+
+EXTRA_IMAGEDEPENDS += "virtual/control-processor-firmware"
+EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
+
+# 2.13.0 removes support for rdv1
+PREFERRED_VERSION_trusted-firmware-a ?= "2.12.%"
+
+KERNEL_IMAGETYPE ?= "Image"
+PREFERRED_PROVIDER_virtual/kernel:forcevariable = "linux-yocto"
+SERIAL_CONSOLES = "115200;ttyAMA0 115200;ttyAMA1"
+
+EFI_PROVIDER ?= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boot", "grub-efi", d)}"
+MACHINE_FEATURES += "efi"
+
+IMAGE_FSTYPES:forcevariable = "cpio.gz wic"
+IMAGE_NAME_SUFFIX = ""
+IMAGE_CLASSES += "fvpboot"
+
+WKS_FILE ?= "efi-disk.wks.in"
+WKS_FILE_DEPENDS:append = " ${EXTRA_IMAGEDEPENDS}"
+
+# testimage config
+TEST_TARGET = "OEFVPTarget"
+TEST_TARGET_IP = "127.0.0.1:2222"
+DEFAULT_TEST_SUITES:append = " fvp_boot fvp_devices"
+TEST_FVP_DEVICES ?= "watchdog networking"
+
+# FVP Config
+FVP_PROVIDER ?= "fvp-rdv1-native"
+FVP_EXE ?= "FVP_RD_V1"
+
+FVP_CONFIG[css.cmn_650.force_rnsam_internal] ?= "true"
+FVP_DATA ?= "css.scp.armcortexm7ct=scp-firmware/scp_ramfw.bin@0x0BD80000 \
+ css.mcp.armcortexm7ct=scp-firmware/mcp_ramfw.bin@0x0BF80000"
+
+FVP_CONFIG[css.mcp.ROMloader.fname] ?= "scp-firmware/mcp_romfw.bin"
+FVP_CONFIG[css.scp.ROMloader.fname] ?= "scp-firmware/scp_romfw.bin"
+
+FVP_CONFIG[css.trustedBootROMloader.fname] ?= "trusted-firmware-a/bl1.bin"
+FVP_CONFIG[board.flashloader0.fname] ?= "trusted-firmware-a/fip.bin"
+
+FVP_CONSOLES[default] = "terminal_uart_ap"
+FVP_TERMINALS[css.scp.terminal_uart_aon] ?= "SCP Console"
+FVP_TERMINALS[css.mcp.terminal_uart0] ?= ""
+FVP_TERMINALS[css.mcp.terminal_uart1] ?= ""
+FVP_TERMINALS[css.terminal_uart_ap] ?= "Console"
+FVP_TERMINALS[css.terminal_uart1_ap] ?= ""
+FVP_TERMINALS[soc.terminal_s0] ?= ""
+FVP_TERMINALS[soc.terminal_s1] ?= ""
+FVP_TERMINALS[soc.terminal_mcp] ?= ""
+FVP_TERMINALS[board.terminal_0] ?= ""
+FVP_TERMINALS[board.terminal_1] ?= ""
+
+FVP_CONFIG[css.gic_distributor.ITS-device-bits] ?= "20"
+
+# Virtio configuration
+FVP_CONFIG[board.virtio_net.enabled] ?= "1"
+FVP_CONFIG[board.virtio_net.hostbridge.userNetworking] ?= "1"
+FVP_CONFIG[board.virtio_net.hostbridge.userNetPorts] = "2222=22"
+FVP_CONFIG[board.virtioblockdevice.image_path] ?= "${IMAGE_NAME}.wic"
diff --git a/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv1.txt b/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv1.txt
new file mode 100644
index 000000000000..ff8db8d52e7c
--- /dev/null
+++ b/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv1.txt
@@ -0,0 +1,3 @@
+can't derive routing for PCI INT A
+jitterentropy: Initialization failed with host not compliant with requirements: 2
+PCI: OF: of_root node is NULL, cannot create PCI host bridge node
diff --git a/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv1.inc b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv1.inc
new file mode 100644
index 000000000000..ccd77f6bff2a
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv1.inc
@@ -0,0 +1,7 @@
+# RD V1 specific SCP configurations and build instructions
+
+COMPATIBLE_MACHINE:rdv1 = "rdv1"
+SCP_PRODUCT_GROUP = "neoverse-rd"
+SCP_PLATFORM = "rdv1"
+
+SCP_LOG_LEVEL = "INFO"
diff --git a/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_%.bbappend b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_%.bbappend
index bf0af54a671b..4b1bd09e0417 100644
--- a/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_%.bbappend
+++ b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_%.bbappend
@@ -3,6 +3,7 @@
MACHINE_SCP_REQUIRE ?= ""
MACHINE_SCP_REQUIRE:juno = "scp-firmware-juno.inc"
+MACHINE_SCP_REQUIRE:rdv1 = "scp-firmware-rdv1.inc"
MACHINE_SCP_REQUIRE:sgi575 = "scp-firmware-sgi575.inc"
require ${MACHINE_SCP_REQUIRE}
diff --git a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv1.inc b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv1.inc
new file mode 100644
index 000000000000..ccd4362d7751
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv1.inc
@@ -0,0 +1,19 @@
+# RD V1 specific TFA support
+
+COMPATIBLE_MACHINE = "rdv1"
+TFA_PLATFORM = "rdv1"
+TFA_BUILD_TARGET = "all fip"
+TFA_INSTALL_TARGET = "bl1 fip"
+TFA_DEBUG = "1"
+TFA_MBEDTLS = "1"
+TFA_UBOOT = "0"
+TFA_UEFI = "1"
+
+EXTRA_OEMAKE += "TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 ARM_ROTPK_LOCATION=devel_rsa \
+ ROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem"
+
+# If GENERATE_COT is set, then tf-a will try to use local poetry install
+# to run the python cot-dt2c command. Disable the local poetry and use
+# the provided cot-dt2c.
+EXTRA_OEMAKE += "POETRY=''"
+DEPENDS += "cot-dt2c-native"
diff --git a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend
index 5b4043e87bea..7e39487c49cf 100644
--- a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend
+++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend
@@ -4,6 +4,7 @@ MACHINE_TFA_REQUIRE ?= ""
MACHINE_TFA_REQUIRE:corstone1000 = "trusted-firmware-a-corstone1000.inc"
MACHINE_TFA_REQUIRE:fvp-base = "trusted-firmware-a-fvp-base.inc"
MACHINE_TFA_REQUIRE:juno = "trusted-firmware-a-juno.inc"
+MACHINE_TFA_REQUIRE:rdv1 = "trusted-firmware-a-rdv1.inc"
MACHINE_TFA_REQUIRE:sbsa-ref = "trusted-firmware-a-sbsa-ref.inc"
MACHINE_TFA_REQUIRE:sgi575 = "trusted-firmware-a-sgi575.inc"
diff --git a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv1.inc b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv1.inc
new file mode 100644
index 000000000000..7301a101975a
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv1.inc
@@ -0,0 +1,7 @@
+# RD V1 specific EDK2 configurations
+EDK2_BUILD_RELEASE = "0"
+EDK2_PLATFORM = "RdV1"
+EDK2_PLATFORM_DSC = "Platform/ARM/SgiPkg/RdV1/RdV1.dsc"
+EDK2_BIN_NAME = "BL33_AP_UEFI.fd"
+
+COMPATIBLE_MACHINE = "rdv1"
diff --git a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend
index 76ffa55521b3..17a2d23c9cda 100644
--- a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend
+++ b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend
@@ -4,6 +4,7 @@ MACHINE_EDK2_REQUIRE ?= ""
MACHINE_EDK2_REQUIRE:fvp-base = "edk2-firmware-fvp-base.inc"
MACHINE_EDK2_REQUIRE:juno = "edk2-firmware-juno.inc"
+MACHINE_EDK2_REQUIRE:rdv1 = "edk2-firmware-rdv1.inc"
MACHINE_EDK2_REQUIRE:sbsa-ref = "edk2-firmware-sbsa-ref.inc"
MACHINE_EDK2_REQUIRE:sgi575 = "edk2-firmware-sgi575.inc"
diff --git a/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc b/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc
index a0c4128fca7d..a70de61d78e9 100644
--- a/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc
+++ b/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc
@@ -110,6 +110,14 @@ FILESEXTRAPATHS:prepend:juno := "${ARMBSPFILESPATHS}"
COMPATIBLE_MACHINE:musca-b1 = "(^$)"
COMPATIBLE_MACHINE:musca-s1 = "(^$)"
+#
+# RDV1 KMACHINE
+#
+COMPATIBLE_MACHINE:rdv1 = "rdv1"
+KBUILD_DEFCONFIG:rdv1 = "defconfig"
+KCONFIG_MODE:rdv1 = "--alldefconfig"
+KCONF_BSP_AUDIT_LEVEL:rdv1 = "0"
+
#
# SGI575 KMACHINE
#
diff --git a/meta-arm/recipes-devtools/fvp/fvp-rdv1.bb b/meta-arm/recipes-devtools/fvp/fvp-rdv1.bb
new file mode 100644
index 000000000000..23804bf3fef4
--- /dev/null
+++ b/meta-arm/recipes-devtools/fvp/fvp-rdv1.bb
@@ -0,0 +1,14 @@
+require fvp-ecosystem.inc
+
+MODEL = "RD-V1"
+MODEL_CODE = "FVP_RD_V1"
+PV = "11.17.29"
+
+SRC_URI = "https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Neoverse-Infrastructure/${MODEL}/${MODEL_CODE}_${PV_URL}_${FVP_ARCH}.tgz;subdir=${BP};name=fvp-${HOST_ARCH}"
+SRC_URI[fvp-x86_64.sha256sum] = "715c0e0264fc3df961a0b9ff4c4399d55e4ccf4efb0944a412141d97873027a3"
+
+# The CSS used in the FVP homepage make it too difficult to query with the tooling currently in Yocto
+UPSTREAM_VERSION_UNKNOWN = "1"
+
+LIC_FILES_CHKSUM = "file://license_terms/license_agreement.txt;md5=1a33828e132ba71861c11688dbb0bd16 \
+ file://license_terms/third_party_licenses.txt;md5=41029e71051b1c786bae3112a29905a7"
--
2.50.1 (Apple Git-155)
next prev parent reply other threads:[~2026-03-31 13:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 13:06 [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
2026-03-31 13:06 ` [PATCH 2/6] Revert "arm/execstack: remove, no longer needed" Jon Mason
2026-03-31 13:06 ` [PATCH 3/6] arm/fvps: rename rdv3-r1 Jon Mason
2026-03-31 13:07 ` Jon Mason [this message]
2026-03-31 13:07 ` [PATCH 5/6] arm-bsp/rdn2: add support Jon Mason
2026-03-31 13:07 ` [PATCH 6/6] arm-bsp/rdv2: " Jon Mason
2026-03-31 18:42 ` [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260331130702.56223-4-jon.mason@arm.com \
--to=jon.mason@arm.com \
--cc=meta-arm@lists.yoctoproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.