[PATCH wrynose 3/6] arm-bsp:corstone1000: Create a standalone corstone1000-a320-fvp machine

Hugues KAMBA MPIANA <[email protected]> Mon, 18 May 2026 19:51:38 +0100
Newsgroups org.yoctoproject.lists.meta-arm
Message-ID <[email protected]>
From: Alex Chapman <[email protected]>

Add `corstone1000-a320-fvp` as a dedicated machine instead of enabling
the Cortex-A320 variant through a kas overlay on `corstone1000-fvp`.

Move the A320-specific machine features, overrides, FVP executable
selection, and Ethos-U85 configuration into the new machine
configuration. Keep the generic `corstone1000-fvp` machine focused on
the base FVP platform.

Update the A320 kas to use `corstone1000-a320-fvp` directly, and
allow pregenerated SSH host keys for the new virtual machine.

Signed-off-by: Alex Chapman <[email protected]>
Signed-off-by: Hugues KAMBA MPIANA <[email protected]>
---
 .../corstone1000-a320-fvp.yml                 |  7 +++---
 kas/corstone1000-a320-fvp.yml                 | 22 +++++++++++++++++++
 .../conf/machine/corstone1000-a320-fvp.conf   | 17 ++++++++++++++
 .../conf/machine/corstone1000-fvp.conf        |  5 -----
 .../machine/include/corstone1000-a320.inc     |  7 +++---
 .../ssh-pregen-hostkeys_%.bbappend            |  3 ++-
 6 files changed, 48 insertions(+), 13 deletions(-)
 rename kas/corstone1000-a320.yml =3D> ci/corstone1000-a320-fvp.yml (57%)
 create mode 100644 kas/corstone1000-a320-fvp.yml
 create mode 100644 meta-arm-bsp/conf/machine/corstone1000-a320-fvp.conf

diff --git a/kas/corstone1000-a320.yml b/ci/corstone1000-a320-fvp.yml
similarity index 57%
rename from kas/corstone1000-a320.yml
rename to ci/corstone1000-a320-fvp.yml
index b11af510..d522a9dd 100644
--- a/kas/corstone1000-a320.yml
+++ b/ci/corstone1000-a320-fvp.yml
@@ -2,8 +2,7 @@
=20
 header:
   version: 14
+  includes:
+    - ci/corstone1000-fvp.yml
=20
-local_conf_header:
-  a320: |
-    MACHINE_FEATURES +=3D "cortexa320"
-    OVERRIDES .=3D ":cortexa320"
+machine: corstone1000-a320-fvp
diff --git a/kas/corstone1000-a320-fvp.yml b/kas/corstone1000-a320-fvp.ym=
l
new file mode 100644
index 00000000..7c22edfb
--- /dev/null
+++ b/kas/corstone1000-a320-fvp.yml
@@ -0,0 +1,22 @@
+header:
+  version: 14
+  includes:
+    - kas/corstone1000-base.yml
+    - kas/corstone1000-image-configuration.yml
+    - kas/corstone1000-firmware-only.yml
+    - kas/fvp-eula.yml
+
+env:
+  DISPLAY:
+  WAYLAND_DISPLAY:
+  XAUTHORITY:
+
+local_conf_header:
+  testimagefvp: |
+    IMAGE_CLASSES +=3D "fvpboot"
+
+  mass-storage: |
+    # Ensure the Mass Storage device is absent
+    FVP_CONFIG[board.msd_mmc.p_mmc_file] =3D "invalid.dat"
+
+machine: corstone1000-a320-fvp
diff --git a/meta-arm-bsp/conf/machine/corstone1000-a320-fvp.conf b/meta-=
arm-bsp/conf/machine/corstone1000-a320-fvp.conf
new file mode 100644
index 00000000..5baca37a
--- /dev/null
+++ b/meta-arm-bsp/conf/machine/corstone1000-a320-fvp.conf
@@ -0,0 +1,17 @@
+#@TYPE: Machine
+#@NAME: corstone1000-a320-fvp machine
+#@DESCRIPTION: Machine configuration for Corstone1000 64-bit FVP with A3=
20 CPU
+
+require conf/machine/include/corstone1000-a320.inc
+require conf/machine/corstone1000-fvp.conf
+
+# Ethos-U85 FVP configuration
+ETHOSU_NUM_MACS ?=3D "256"
+FVP_CONFIG[host.ethosu.num_macs] =3D "${ETHOSU_NUM_MACS}"
+
+# Reuse FVP recipe overrides
+MACHINEOVERRIDES .=3D ":corstone1000-fvp"
+
+# Override FVP executable provider and executable name.
+FVP_PROVIDER:corstone1000-a320-fvp ??=3D "fvp-corstone1000-a320-native"
+FVP_EXE:corstone1000-a320-fvp =3D "FVP_Corstone-1000-A320"
diff --git a/meta-arm-bsp/conf/machine/corstone1000-fvp.conf b/meta-arm-b=
sp/conf/machine/corstone1000-fvp.conf
index e447b56e..d541782a 100644
--- a/meta-arm-bsp/conf/machine/corstone1000-fvp.conf
+++ b/meta-arm-bsp/conf/machine/corstone1000-fvp.conf
@@ -6,9 +6,6 @@ require conf/machine/include/corstone1000.inc
 require ${@bb.utils.contains('MACHINE_FEATURES', 'corstone1000-extsys', =
\
     'conf/machine/include/corstone1000-extsys.inc', '', d)}
=20
-require ${@bb.utils.contains('MACHINE_FEATURES', 'cortexa320', \
-    'conf/machine/include/corstone1000-a320.inc', '', d)}
-
 TFA_TARGET_PLATFORM =3D "fvp"
=20
 TFM_PLATFORM_IS_FVP =3D "TRUE"
@@ -24,9 +21,7 @@ DEFAULT_TEST_SUITES:append =3D " fvp_boot fvp_devices"
=20
 # FVP Config
 FVP_PROVIDER ?=3D "fvp-corstone1000-native"
-FVP_PROVIDER:cortexa320 ?=3D "fvp-corstone1000-a320-native"
 FVP_EXE ?=3D "FVP_Corstone-1000"
-FVP_EXE:cortexa320 =3D "FVP_Corstone-1000-A320"
 FVP_CONSOLES[default] =3D "host_terminal_0"
 FVP_CONSOLES[tf-a] =3D "host_terminal_1"
 FVP_CONSOLES[se] =3D "secenc_terminal"
diff --git a/meta-arm-bsp/conf/machine/include/corstone1000-a320.inc b/me=
ta-arm-bsp/conf/machine/include/corstone1000-a320.inc
index 69813000..f089afd1 100644
--- a/meta-arm-bsp/conf/machine/include/corstone1000-a320.inc
+++ b/meta-arm-bsp/conf/machine/include/corstone1000-a320.inc
@@ -1,3 +1,4 @@
-ETHOSU_NUM_MACS ?=3D "256"
-
-FVP_CONFIG[host.ethosu.num_macs] =3D "${ETHOSU_NUM_MACS}"
+# Cortex-A320 variant of the Corstone-1000 platform.
+MACHINEOVERRIDES =3D. "corstone1000-a320:"
+MACHINE_FEATURES +=3D "cortexa320"
+OVERRIDES .=3D ":cortexa320"
diff --git a/meta-arm-bsp/recipes-connectivity/ssh-pregen-hostkeys/ssh-pr=
egen-hostkeys_%.bbappend b/meta-arm-bsp/recipes-connectivity/ssh-pregen-h=
ostkeys/ssh-pregen-hostkeys_%.bbappend
index 039a8479..f1c97176 100644
--- a/meta-arm-bsp/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-ho=
stkeys_%.bbappend
+++ b/meta-arm-bsp/recipes-connectivity/ssh-pregen-hostkeys/ssh-pregen-ho=
stkeys_%.bbappend
@@ -1,6 +1,7 @@
 # These machines cannot run in product as they are virtual
 # platforms, so allow ssh-pregen-hostkeys to be used.
=20
-COMPATIBLE_MACHINE:corstone1000-fvp =3D "corstone1000-fvp"
+COMPATIBLE_MACHINE:corstone1000 =3D "corstone1000-fvp"
+COMPATIBLE_MACHINE:corstone1000:cortexa320 =3D "corstone1000-a320-fvp"
 COMPATIBLE_MACHINE:fvp-base =3D "fvp-base"
 COMPATIBLE_MACHINE:sbsa-ref =3D "sbsa-ref"