From: Jon Mason <jon.mason@arm.com>
To: meta-arm@lists.yoctoproject.org
Subject: [PATCH 6/6] arm-bsp/rdv2: add support
Date: Tue, 31 Mar 2026 09:07:02 -0400 [thread overview]
Message-ID: <20260331130702.56223-6-jon.mason@arm.com> (raw)
In-Reply-To: <20260331130702.56223-1-jon.mason@arm.com>
Add support for Neoverse Reference Design version 2
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
.gitlab-ci.yml | 6 ++
ci/fvps.yml | 2 +
ci/rdv2.yml | 14 +++++
meta-arm-bsp/conf/machine/rdv2.conf | 60 +++++++++++++++++++
.../runtime/cases/parselogs-ignores-rdv2.txt | 2 +
.../scp-firmware/scp-firmware-rdv2.inc | 14 +++++
.../scp-firmware/scp-firmware_%.bbappend | 1 +
.../trusted-firmware-a-rdv2.inc | 29 +++++++++
.../trusted-firmware-a_%.bbappend | 1 +
.../recipes-bsp/uefi/edk2-firmware-rdv2.inc | 17 ++++++
.../recipes-bsp/uefi/edk2-firmware_%.bbappend | 1 +
.../linux/linux-arm-platforms.inc | 8 +++
meta-arm/recipes-devtools/fvp/fvp-rdv2.bb | 20 +++++++
13 files changed, 175 insertions(+)
create mode 100644 ci/rdv2.yml
create mode 100644 meta-arm-bsp/conf/machine/rdv2.conf
create mode 100644 meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv2.txt
create mode 100644 meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv2.inc
create mode 100644 meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv2.inc
create mode 100644 meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv2.inc
create mode 100644 meta-arm/recipes-devtools/fvp/fvp-rdv2.bb
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a07b82abb85d..09a5423f5141 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -321,6 +321,12 @@ rdv1:
tags:
- x86_64
+rdv2:
+ extends: .build
+ parallel:
+ matrix:
+ - TESTING: testimage
+
sbsa-ref:
extends: .build
parallel:
diff --git a/ci/fvps.yml b/ci/fvps.yml
index 185a4f3de846..5370402c9f17 100644
--- a/ci/fvps.yml
+++ b/ci/fvps.yml
@@ -34,6 +34,8 @@ target:
# Infrastructure FVPs
- fvp-rdv3-r1
- nativesdk-fvp-rdv3-r1
+ - fvp-rdv2
+ - nativesdk-fvp-rdv2
- fvp-rdn2
- nativesdk-fvp-rdn2
# These are x86 only... :(
diff --git a/ci/rdv2.yml b/ci/rdv2.yml
new file mode 100644
index 000000000000..7fa62b8309eb
--- /dev/null
+++ b/ci/rdv2.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:rdv2 = "rdv2"
+
+machine: rdv2
diff --git a/meta-arm-bsp/conf/machine/rdv2.conf b/meta-arm-bsp/conf/machine/rdv2.conf
new file mode 100644
index 000000000000..2c306f26316c
--- /dev/null
+++ b/meta-arm-bsp/conf/machine/rdv2.conf
@@ -0,0 +1,60 @@
+# Configuration for Arm Neoverse V2 Reference Design development board
+
+#@TYPE: Machine
+#@NAME: RD V2
+#@DESCRIPTION: Machine configuration for RD V2
+
+#FIXME - doesn't boot with armv9 tunes
+#require conf/machine/include/arm/arch-armv9a.inc
+require conf/machine/include/arm/arch-armv8a.inc
+
+EXTRA_IMAGEDEPENDS += "virtual/control-processor-firmware"
+EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
+
+KERNEL_IMAGETYPE ?= "Image"
+PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
+SERIAL_CONSOLES = "115200;ttyAMA2"
+EXTRA_IMAGEDEPENDS += "edk2-firmware"
+
+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-rdv2-native"
+FVP_EXE ?= "FVP_RD_V2"
+
+FVP_DATA ?= "css.scp.armcortexm7ct=scp-firmware/scp_ramfw.bin@0x0BD80000 \
+ css.mcp.armcortexm7ct=scp-firmware/mcp_ramfw.bin@0x0BF80000"
+
+FVP_CONFIG[css.gic_distributor.ITS-device-bits] ?= "20"
+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_CONFIG[board.dram_size] ?= "0x200000000"
+
+# 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"
+
+FVP_CONSOLES[default] = "terminal_ns_uart_ap"
+FVP_TERMINALS[css.scp.terminal_uart_scp] ?= "SCP Console"
+FVP_TERMINALS[css.mcp.terminal_uart_mcp] ?= "MCP Console"
+FVP_TERMINALS[css.terminal_ns_uart_ap] ?= "NS Console"
+FVP_TERMINALS[css.terminal_s_uart_ap] ?= "S Console"
diff --git a/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv2.txt b/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv2.txt
new file mode 100644
index 000000000000..7b55e8ea61f0
--- /dev/null
+++ b/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdv2.txt
@@ -0,0 +1,2 @@
+arch_timer: Failed to initialize memory-mapped timer.
+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-rdv2.inc b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv2.inc
new file mode 100644
index 000000000000..e36c7b60f407
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdv2.inc
@@ -0,0 +1,14 @@
+# RD V2 specific SCP configurations and build instructions
+
+COMPATIBLE_MACHINE:rdv2 = "rdv2"
+SCP_PRODUCT_GROUP = "neoverse-rd"
+SCP_PLATFORM = "rdn2"
+
+EXTRA_OECMAKE += "-D SCP_PLATFORM_VARIANT=0"
+
+SCP_LOG_LEVEL = "DEBUG"
+
+SRC_URI_SCP_FIRMWARE = "gitsm://gitlab.arm.com/infra-solutions/reference-design/platsw/scp-firmware.git;protocol=https"
+SRCBRANCH = "refinfra-bmc"
+# Use the RD-INFRA-2024.12.20 tag
+SRCREV = "62bc3f079d1ae5780df1459d4c66de2dbee54359"
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 222bee5e52e1..011090e72351 100644
--- a/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_%.bbappend
+++ b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_%.bbappend
@@ -5,6 +5,7 @@ MACHINE_SCP_REQUIRE ?= ""
MACHINE_SCP_REQUIRE:juno = "scp-firmware-juno.inc"
MACHINE_SCP_REQUIRE:rdn2 = "scp-firmware-rdn2.inc"
MACHINE_SCP_REQUIRE:rdv1 = "scp-firmware-rdv1.inc"
+MACHINE_SCP_REQUIRE:rdv2 = "scp-firmware-rdv2.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-rdv2.inc b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv2.inc
new file mode 100644
index 000000000000..796011576e1d
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdv2.inc
@@ -0,0 +1,29 @@
+# RD V2 specific TFA support
+
+COMPATIBLE_MACHINE = "rdv2"
+TFA_PLATFORM = "rdn2"
+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"
+
+SRC_URI_TRUSTED_FIRMWARE_A = "git://gitlab.arm.com/infra-solutions/reference-design/platsw/trusted-firmware-a.git;protocol=https"
+SRCBRANCH = "refinfra"
+# SHA not in any branches. so use RD-INFRA-2025.07.03
+SRCREV_tfa = "a4b376b128bb5b91771002f7808566f53c8d9f3a"
+
+# FIXME - hacking around using the 2.14 based recipe
+SRC_URI:remove = "file://0001-feat-build-add-HOSTLDFLAGS-to-pass-flags-to-host-lin.patch"
+LIC_FILES_CHKSUM:remove = "file://docs/license.rst;md5=6ed7bace7b0bc63021c6eba7b524039e"
+LIC_FILES_CHKSUM += "file://docs/license.rst;md5=1118e32884721c0be33267bd7ae11130"
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 9a5d4aa54fd1..6f7a6e857cfd 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
@@ -6,6 +6,7 @@ MACHINE_TFA_REQUIRE:fvp-base = "trusted-firmware-a-fvp-base.inc"
MACHINE_TFA_REQUIRE:juno = "trusted-firmware-a-juno.inc"
MACHINE_TFA_REQUIRE:rdn2 = "trusted-firmware-a-rdn2.inc"
MACHINE_TFA_REQUIRE:rdv1 = "trusted-firmware-a-rdv1.inc"
+MACHINE_TFA_REQUIRE:rdv2 = "trusted-firmware-a-rdv2.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-rdv2.inc b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv2.inc
new file mode 100644
index 000000000000..c2fd6fecfd32
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdv2.inc
@@ -0,0 +1,17 @@
+# RD V2 specific EDK2 configurations
+EDK2_BUILD_RELEASE = "0"
+EDK2_PLATFORM = "RdN2"
+EDK2_PLATFORM_DSC = "Platform/ARM/SgiPkg/RdN2/RdN2.dsc"
+EDK2_BIN_NAME = "BL33_AP_UEFI.fd"
+
+COMPATIBLE_MACHINE = "rdv2"
+
+SRC_URI_EDK2 = "gitsm://gitlab.arm.com/infra-solutions/reference-design/platsw/edk2.git;protocol=https"
+SRC_URI_EDK2_PLATFORMS = "git://gitlab.arm.com/infra-solutions/reference-design/platsw/edk2-platforms.git;protocol=https"
+
+SRCBRANCH_edk2 = "refinfra"
+SRCBRANCH_edk2_platforms = "refinfra"
+
+# Use the RD-INFRA-2024.12.20 tag
+SRCREV_edk2 = "dd25905d63ec72d6e06804155fda1098d10da19e"
+SRCREV_edk2-platforms = "f6ed3b0f92eeaf380638f77d8b5ace805facb301"
diff --git a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend
index 3bb1319d1545..7dd87303c5ec 100644
--- a/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend
+++ b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_%.bbappend
@@ -6,6 +6,7 @@ MACHINE_EDK2_REQUIRE:fvp-base = "edk2-firmware-fvp-base.inc"
MACHINE_EDK2_REQUIRE:juno = "edk2-firmware-juno.inc"
MACHINE_EDK2_REQUIRE:rdn2 = "edk2-firmware-rdn2.inc"
MACHINE_EDK2_REQUIRE:rdv1 = "edk2-firmware-rdv1.inc"
+MACHINE_EDK2_REQUIRE:rdv2 = "edk2-firmware-rdv2.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 c537c352f78b..bc1ea28cb70c 100644
--- a/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc
+++ b/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc
@@ -126,6 +126,14 @@ KBUILD_DEFCONFIG:rdv1 = "defconfig"
KCONFIG_MODE:rdv1 = "--alldefconfig"
KCONF_BSP_AUDIT_LEVEL:rdv1 = "0"
+#
+# RDV2 KMACHINE
+#
+COMPATIBLE_MACHINE:rdv2 = "rdv2"
+KBUILD_DEFCONFIG:rdv2 = "defconfig"
+KCONFIG_MODE:rdv2 = "--alldefconfig"
+KCONF_BSP_AUDIT_LEVEL:rdv2 = "0"
+
#
# SGI575 KMACHINE
#
diff --git a/meta-arm/recipes-devtools/fvp/fvp-rdv2.bb b/meta-arm/recipes-devtools/fvp/fvp-rdv2.bb
new file mode 100644
index 000000000000..3da7075abcd0
--- /dev/null
+++ b/meta-arm/recipes-devtools/fvp/fvp-rdv2.bb
@@ -0,0 +1,20 @@
+require fvp-ecosystem.inc
+
+MODEL = "RD-V2"
+MODEL_CODE = "FVP_RD_V2"
+PV = "11.24.12"
+
+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-aarch64.sha256sum] = "fa43cc506e3799afb73c646f93c2ea509dc1081c0e993c4a7bf83b082b896e5f"
+SRC_URI[fvp-x86_64.sha256sum] = "74199d4766e96ed86b071bf343a0a60d876accef83be41be3dbb9557b4455635"
+
+# 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/third_party_licenses.txt;md5=b9005e55057311e41efe02ccfea8ea72"
+
+COMPATIBLE_HOST = "(aarch64|x86_64).*-linux"
+
+require remove-execstack.inc
+REMOVE_EXECSTACKS:x86-64 = "${FVPDIR}/models/${FVP_ARCH_DIR}*/libarmctmodel.so"
--
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 ` [PATCH 4/6] arm-bsp/rdv1: add support Jon Mason
2026-03-31 13:07 ` [PATCH 5/6] arm-bsp/rdn2: " Jon Mason
2026-03-31 13:07 ` Jon Mason [this message]
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-6-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.