* [PATCH 2/6] Revert "arm/execstack: remove, no longer needed"
2026-03-31 13:06 [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
@ 2026-03-31 13:06 ` Jon Mason
2026-03-31 13:06 ` [PATCH 3/6] arm/fvps: rename rdv3-r1 Jon Mason
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2026-03-31 13:06 UTC (permalink / raw)
To: meta-arm
Some of the soon-to-be-added FVPs have the execute issue still. So,
re-add this until it can be resolved. Also, address S issue that
changed upstream between the original removal and now.
---
.../recipes-devtools/fvp/execstack-native.bb | 23 ++++++++++++++++
.../recipes-devtools/fvp/remove-execstack.inc | 26 +++++++++++++++++++
2 files changed, 49 insertions(+)
create mode 100644 meta-arm/recipes-devtools/fvp/execstack-native.bb
create mode 100644 meta-arm/recipes-devtools/fvp/remove-execstack.inc
diff --git a/meta-arm/recipes-devtools/fvp/execstack-native.bb b/meta-arm/recipes-devtools/fvp/execstack-native.bb
new file mode 100644
index 000000000000..0bd8f6f33d07
--- /dev/null
+++ b/meta-arm/recipes-devtools/fvp/execstack-native.bb
@@ -0,0 +1,23 @@
+SUMMARY = "execstack tool"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+
+DEPENDS = "binutils-native elfutils-native"
+
+SRC_URI = "git://git.yoctoproject.org/prelink-cross;protocol=https;branch=master"
+SRCREV = "ff2561c02ade96c5d4d56ddd4e27ff064840a176"
+PV = "1.0+git${SRCPV}"
+
+# The last tagged release was 20151030. Track this as a git tree to
+# see if there are any updates
+UPSTREAM_CHECK_COMMITS = "1"
+
+inherit autotools native
+
+do_compile() {
+ oe_runmake -C ${B}/src execstack
+}
+
+do_install() {
+ oe_runmake -C ${B}/src install-binPROGRAMS DESTDIR="${D}"
+}
diff --git a/meta-arm/recipes-devtools/fvp/remove-execstack.inc b/meta-arm/recipes-devtools/fvp/remove-execstack.inc
new file mode 100644
index 000000000000..7f02b5027b27
--- /dev/null
+++ b/meta-arm/recipes-devtools/fvp/remove-execstack.inc
@@ -0,0 +1,26 @@
+# Clear the executable stack flag on named shared libraries. This are typically
+# not needed, and glibc 2.41 will refuse to dlopen() a library that expects
+# an executable stack.
+#
+# The stack permissions can be checked with readelf -lW <.so> | grep GNU_STACK.
+# RW is read/write, RWE is read/write/execute.
+
+DEPENDS += "execstack-native"
+
+REMOVE_EXECSTACKS ?= ""
+
+do_install:append() {
+ for SO in ${REMOVE_EXECSTACKS}; do
+ NAME=$(basename $SO)
+ SO=${D}$SO
+
+ test -f $SO || bbfatal remove-execstack: cannot find $SO
+
+ if execstack --query $SO | grep -q ^X; then
+ bbnote "Stripping executable stack bit on $NAME"
+ execstack --clear-execstack $SO
+ else
+ bbwarn "Executable stack stripping no longer required for $NAME, remove"
+ fi
+ done
+}
--
2.50.1 (Apple Git-155)
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 3/6] arm/fvps: rename rdv3-r1
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 ` Jon Mason
2026-03-31 13:07 ` [PATCH 4/6] arm-bsp/rdv1: add support Jon Mason
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2026-03-31 13:06 UTC (permalink / raw)
To: meta-arm
Rename rdv3-r1 to be more consistent with other machines and match
documentation/website.
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
ci/fvps.yml | 4 ++--
.../recipes-devtools/fvp/{fvp-rd-v3-r1.bb => fvp-rdv3-r1.bb} | 0
2 files changed, 2 insertions(+), 2 deletions(-)
rename meta-arm/recipes-devtools/fvp/{fvp-rd-v3-r1.bb => fvp-rdv3-r1.bb} (100%)
diff --git a/ci/fvps.yml b/ci/fvps.yml
index f64885a35c9a..8ec22a30f6af 100644
--- a/ci/fvps.yml
+++ b/ci/fvps.yml
@@ -32,8 +32,8 @@ target:
- nativesdk-fvp-rd1-ae
# Infrastructure FVPs
- - fvp-rd-v3-r1
- - nativesdk-fvp-rd-v3-r1
+ - fvp-rdv3-r1
+ - nativesdk-fvp-rdv3-r1
# These are x86 only... :(
- nativesdk-fvp-sgi575
diff --git a/meta-arm/recipes-devtools/fvp/fvp-rd-v3-r1.bb b/meta-arm/recipes-devtools/fvp/fvp-rdv3-r1.bb
similarity index 100%
rename from meta-arm/recipes-devtools/fvp/fvp-rd-v3-r1.bb
rename to meta-arm/recipes-devtools/fvp/fvp-rdv3-r1.bb
--
2.50.1 (Apple Git-155)
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 4/6] arm-bsp/rdv1: add support
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
2026-03-31 13:07 ` [PATCH 5/6] arm-bsp/rdn2: " Jon Mason
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2026-03-31 13:07 UTC (permalink / raw)
To: meta-arm
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)
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 5/6] arm-bsp/rdn2: add support
2026-03-31 13:06 [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
` (2 preceding siblings ...)
2026-03-31 13:07 ` [PATCH 4/6] arm-bsp/rdv1: add support Jon Mason
@ 2026-03-31 13:07 ` 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
5 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2026-03-31 13:07 UTC (permalink / raw)
To: meta-arm
Add support for Neoverse Reference Design N2
Use the rdinfra sources to get it booting
Signed-off-by: Jon Mason <jon.mason@arm.com>
---
.gitlab-ci.yml | 6 ++
ci/fvps.yml | 2 +
ci/rdn2.yml | 14 +++++
meta-arm-bsp/conf/machine/rdn2.conf | 58 +++++++++++++++++++
.../runtime/cases/parselogs-ignores-rdn2.txt | 2 +
.../scp-firmware/scp-firmware-rdn2.inc | 14 +++++
.../scp-firmware/scp-firmware_%.bbappend | 1 +
.../trusted-firmware-a-rdn2.inc | 29 ++++++++++
.../trusted-firmware-a_%.bbappend | 1 +
.../recipes-bsp/uefi/edk2-firmware-rdn2.inc | 17 ++++++
.../recipes-bsp/uefi/edk2-firmware_%.bbappend | 1 +
.../linux/linux-arm-platforms.inc | 8 +++
meta-arm/recipes-devtools/fvp/fvp-rdn2.bb | 20 +++++++
13 files changed, 173 insertions(+)
create mode 100644 ci/rdn2.yml
create mode 100644 meta-arm-bsp/conf/machine/rdn2.conf
create mode 100644 meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdn2.txt
create mode 100644 meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdn2.inc
create mode 100644 meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdn2.inc
create mode 100644 meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdn2.inc
create mode 100644 meta-arm/recipes-devtools/fvp/fvp-rdn2.bb
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 20b3998e787b..a07b82abb85d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -306,6 +306,12 @@ qemuarmv5:
- DISTRO: poky-tiny
TESTING: testimage
+rdn2:
+ extends: .build
+ parallel:
+ matrix:
+ - TESTING: testimage
+
rdv1:
extends: .build
parallel:
diff --git a/ci/fvps.yml b/ci/fvps.yml
index db49b3e979a9..185a4f3de846 100644
--- a/ci/fvps.yml
+++ b/ci/fvps.yml
@@ -34,6 +34,8 @@ target:
# Infrastructure FVPs
- fvp-rdv3-r1
- nativesdk-fvp-rdv3-r1
+ - fvp-rdn2
+ - nativesdk-fvp-rdn2
# These are x86 only... :(
- nativesdk-fvp-rdv1
- nativesdk-fvp-sgi575
diff --git a/ci/rdn2.yml b/ci/rdn2.yml
new file mode 100644
index 000000000000..16e9c1629738
--- /dev/null
+++ b/ci/rdn2.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:rdn2 = "rdn2"
+
+machine: rdn2
diff --git a/meta-arm-bsp/conf/machine/rdn2.conf b/meta-arm-bsp/conf/machine/rdn2.conf
new file mode 100644
index 000000000000..cc9ba06c179e
--- /dev/null
+++ b/meta-arm-bsp/conf/machine/rdn2.conf
@@ -0,0 +1,58 @@
+# Configuration for Arm Neoverse N2 Reference Design development board
+
+#@TYPE: Machine
+#@NAME: RD N2
+#@DESCRIPTION: Machine configuration for RD N2
+
+require conf/machine/include/arm/armv9a/tune-neoversen2.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-rdn2-native"
+FVP_EXE ?= "FVP_RD_N2"
+
+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-rdn2.txt b/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdn2.txt
new file mode 100644
index 000000000000..7b55e8ea61f0
--- /dev/null
+++ b/meta-arm-bsp/lib/oeqa/runtime/cases/parselogs-ignores-rdn2.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-rdn2.inc b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdn2.inc
new file mode 100644
index 000000000000..b4e0437b20c3
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-rdn2.inc
@@ -0,0 +1,14 @@
+# RD N2 specific SCP configurations and build instructions
+
+COMPATIBLE_MACHINE:rdn2 = "rdn2"
+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 4b1bd09e0417..222bee5e52e1 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:rdn2 = "scp-firmware-rdn2.inc"
MACHINE_SCP_REQUIRE:rdv1 = "scp-firmware-rdv1.inc"
MACHINE_SCP_REQUIRE:sgi575 = "scp-firmware-sgi575.inc"
diff --git a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdn2.inc b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdn2.inc
new file mode 100644
index 000000000000..0c09818c9024
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-rdn2.inc
@@ -0,0 +1,29 @@
+# RD N2 specific TFA support
+
+COMPATIBLE_MACHINE = "rdn2"
+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 7e39487c49cf..9a5d4aa54fd1 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:rdn2 = "trusted-firmware-a-rdn2.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-rdn2.inc b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdn2.inc
new file mode 100644
index 000000000000..ef069c789055
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-rdn2.inc
@@ -0,0 +1,17 @@
+# RD N2 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 = "rdn2"
+
+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 17a2d23c9cda..3bb1319d1545 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:rdn2 = "edk2-firmware-rdn2.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 a70de61d78e9..c537c352f78b 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 = "(^$)"
+#
+# RDN2 KMACHINE
+#
+COMPATIBLE_MACHINE:rdn2 = "rdn2"
+KBUILD_DEFCONFIG:rdn2 = "defconfig"
+KCONFIG_MODE:rdn2 = "--alldefconfig"
+KCONF_BSP_AUDIT_LEVEL:rdn2 = "0"
+
#
# RDV1 KMACHINE
#
diff --git a/meta-arm/recipes-devtools/fvp/fvp-rdn2.bb b/meta-arm/recipes-devtools/fvp/fvp-rdn2.bb
new file mode 100644
index 000000000000..73848bfbc4cf
--- /dev/null
+++ b/meta-arm/recipes-devtools/fvp/fvp-rdn2.bb
@@ -0,0 +1,20 @@
+require fvp-ecosystem.inc
+
+MODEL = "RD-N2"
+MODEL_CODE = "FVP_RD_N2"
+PV = "11.25.23"
+
+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] = "ae3a3e85ae307dffcc1221d0f30efbb6bc22b61fd508305b984f294407659bdd"
+SRC_URI[fvp-x86_64.sha256sum] = "89c6d5a784d0b76168fb187e366de35f7de5aa7583a148b206b2aee2bc486da2"
+
+# 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)
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 6/6] arm-bsp/rdv2: add support
2026-03-31 13:06 [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
` (3 preceding siblings ...)
2026-03-31 13:07 ` [PATCH 5/6] arm-bsp/rdn2: " Jon Mason
@ 2026-03-31 13:07 ` Jon Mason
2026-03-31 18:42 ` [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
5 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2026-03-31 13:07 UTC (permalink / raw)
To: meta-arm
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)
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 1/6] CI: use core-image-base for faster boot
2026-03-31 13:06 [PATCH 1/6] CI: use core-image-base for faster boot Jon Mason
` (4 preceding siblings ...)
2026-03-31 13:07 ` [PATCH 6/6] arm-bsp/rdv2: " Jon Mason
@ 2026-03-31 18:42 ` Jon Mason
5 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2026-03-31 18:42 UTC (permalink / raw)
To: meta-arm, Jon Mason
On Tue, 31 Mar 2026 09:06:57 -0400, Jon Mason wrote:
>
Applied, thanks!
[1/6] CI: use core-image-base for faster boot
commit: 4379b78bd6a8302e0a55823cb15b62d57678b3f4
[2/6] Revert "arm/execstack: remove, no longer needed"
commit: 4eec974baed18d4321cf9ca37c1da0b7cd624a26
[3/6] arm/fvps: rename rdv3-r1
commit: f86d9c4f227de4419f7147fa9f3a94f258b1c323
[4/6] arm-bsp/rdv1: add support
commit: b5f3f7a6e2062464ab91f48ec81a90b9184d1188
[5/6] arm-bsp/rdn2: add support
commit: f9d0ecbe25341c35b01e1319b3b0a36c033d5f32
[6/6] arm-bsp/rdv2: add support
commit: 43c2bcfed58878613044ee424542cc0067893e1c
Best regards,
--
Jon Mason <jon.mason@arm.com>
^ permalink raw reply [flat|nested] 7+ messages in thread