configs/arm_fvp_ebbr: bump Linux, U-Boot, OP-TEE, TF-A and FVP

- Bump Linux kernel to 6.18.
- Bump U-Boot to 2025.10. Add the dependency on GNU TLS. Refresh the
  config fragment: add smc & poweroff commands, add ESRT and dummy
  capsule update, add SMCCC features discovery.
- Bump OP-TEE to 4.8.0. Add the dependency on python-cryptography. Lock
  optee-client version to be the same as optee-os. Add a patch to output
  logs to the same UART as all the other components and increase log
  level. Remove the unnecessary dependency on dtc.
- Bump TF-A to v2.14.0.
- Bump FVP to 11.30_27. Disable terminal 1, now that all the logs go to
  a single terminal. Enable virtio network. Rate limit the simulation
  by default, for convenience at U-Boot and GRUB countdown, and for more
  realistic delays inside the simulation.
- Switch to Bootlin pre-built toolchain.
- Add more modules to GRUB, to have more commands available: efi
  commands, plus reboot & halt.
- Add eudev to probe Linux modules during boot, for LCD support.
- Configure eth0 with DHCP automatically during boot.
- Refresh the documentation.

This configuration has been tested on an x86 and on an AArch64 machine.

The firmware and FVP of this configuration have also been tested
successfully with other OSes: Debian Live, openSUSE Tumbleweed, Yocto,
OpenWrt, Buildroot AArch64 EFI and FreeBSD.

Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Vincent Stehlé
2025-12-08 13:19:16 +01:00
committed by Julien Olivain
parent e77ee474de
commit 2bb8ea3ff1
10 changed files with 115 additions and 25 deletions

View File

@@ -1,6 +1,10 @@
# Arm A-Profile Base RevC AEM FVP config
bp.secure_memory=1
bp.terminal_1.start_telnet=0
bp.ve_sysregs.exit_on_shutdown=1
bp.virtio_net.enabled=1
bp.virtio_net.hostbridge.userNetworking=1
bp.vis.rate_limit-enable=1
cache_state_modelled=0
cluster0.NUM_CORES=4
cluster0.cpu0.enable_crc32=1

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 c0f23ccc71c49989e9ad238acf334473c17b7c88f79a20c829c3d443e3794a22 arm-trusted-firmware-v2.11-git4.tar.gz
sha256 a899100d9d92ceb1290fd4d61f5dd3b8af6b0e937cebc3c711cb514ac5acfaed arm-trusted-firmware-v2.14.0-git4.tar.gz

View File

@@ -1,2 +1,2 @@
# From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
sha256 524858852f5869a9ef17de8b1e6e7faf05bcb2c462bc96b3c24dbf82ede373cf linux-6.10.12.tar.xz
# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
sha256 9106a4605da9e31ff17659d958782b815f9591ab308d03b0ee21aad6c7dced4b linux-6.18.tar.xz

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 464b3bf5bc4a61830357dbf81a0e5b89414d3bca1c2a752570cb0e40d2f1e637 optee-client-4.8.0.tar.gz

View File

@@ -0,0 +1,34 @@
From 1debd0c8bd46255f8c22b128ec16586ef9154869 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= <vincent.stehle@arm.com>
Date: Tue, 2 Dec 2025 15:53:23 +0100
Subject: [PATCH] plat-vexpress: redirect console to uart0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For consistency with TF-A, U-Boot and Linux.
Upstream: Not applicable. Buildroot specific.
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
---
core/arch/arm/plat-vexpress/platform_config.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/arch/arm/plat-vexpress/platform_config.h b/core/arch/arm/plat-vexpress/platform_config.h
index 9231f3048..76c7fdb36 100644
--- a/core/arch/arm/plat-vexpress/platform_config.h
+++ b/core/arch/arm/plat-vexpress/platform_config.h
@@ -23,8 +23,8 @@
#define IT_UART1 38
-#define CONSOLE_UART_BASE UART1_BASE
-#define IT_CONSOLE_UART IT_UART1
+#define CONSOLE_UART_BASE UART0_BASE
+#undef IT_CONSOLE_UART
#elif defined(PLATFORM_FLAVOR_juno)
--
2.51.0

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 5222cd553f5edb69ae4ec7cb99b2bfec2c47a47c0be1865b49744701918e8b4d optee-os-4.8.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2
sha256 b4f032848e56cc8f213ad59f9132c084dbbb632bc29176d024e58220e0efdf4a u-boot-2025.10.tar.bz2

View File

@@ -2,7 +2,7 @@ Introduction
============
The arm_fvp_ebbr_defconfig is meant to illustrate some aspects of the Arm EBBR
specification[1] and the Arm SystemReady IR[2] compliance program.
specification[1] and the Arm SystemReady Devicetree band[2].
It allows building an AArch64 U-Boot based firmware implementing the subset of
UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to run
on the Arm A-Profile Base RevC AEM FVP.
@@ -26,8 +26,8 @@ Running on the FVP
Download the FVP from one of the following sources, corresponding to your host
computer:
- https://developer.arm.com/-/cdn-downloads/permalink/Fixed-Virtual-Platforms/FM-11.27/FVP_Base_RevC-2xAEMvA_11.27_19_Linux64.tgz
- https://developer.arm.com/-/cdn-downloads/permalink/Fixed-Virtual-Platforms/FM-11.27/FVP_Base_RevC-2xAEMvA_11.27_19_Linux64_armv8l.tgz
- https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_RevC-2xAEMvA_11.30_27_Linux64.tgz
- https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_RevC-2xAEMvA_11.30_27_Linux64_armv8l.tgz
The FVP will be located under one of the corresponding folders:
@@ -53,21 +53,58 @@ supporting the EBBR specification.
To run another OS on simulation using a live or pre-installed image, use the
same FVP command line as for the generated OS but adapt the OS image path in the
virtioblockdevice stanza.
The image generated by the aarch64_efi_defconfig or the Arm ACS-IR images[3] are
examples of pre-installed OS images.
Linux distributions such as Debian, Fedora, openSUSE or Ubuntu provide a
pre-installed OS image.
The image generated by the aarch64_efi_defconfig or the Arm ACS Devicetree
images[3] are examples of pre-installed OS images.
Linux distributions such as Debian, Fedora, openSUSE or Ubuntu, or FreeBSD
provide live or pre-installed OS image.
Firmware details
================
Noteworthy firmware features:
- TF-A, OP-TEE & U-Boot
- UEFI, with EFI variables stored on disk in the ESP
- Support for ethernet, RTC and LCD
Architecture diagram:
Non-Secure : Secure
:
+---------------------------+ :
EL0 | Busybox | :
+---------------------------+ : +--------+
EL1 | Linux | : | OP-TEE | S-EL1
+---------------------------+ : +--------+
EL2 | U-Boot, GRUB, Linux (kvm) | :
+---------------------------+ :
...................................:
+----------------------------------------+
| TF-A | EL3
+----------------------------------------+
Boot flow:
TF-A -+-> OP-TEE
`-> U-Boot -> GRUB -> Linux -> Busybox
TF-A BL1 loads the fit image with the remaining pieces of TF-A, OP-TEE and
U-Boot.
OP-TEE boots, calls back TF-A to go to normal world.
U-Boot loads GRUB with UEFI, boots Linux at EL2.
In this configuration, the Devicetree is static and fully contained in TF-A.
Miscellaneous
=============
This configuration is inspired by the arm_foundationv8_defconfig, the
qemu_aarch64_virt_defconfig and the Arm SystemReady IR IoT Integration, Test,
and Certification Guide[4].
qemu_aarch64_virt_defconfig and the Arm SystemReady Devicetree Band Integration
and Testing Guide[4].
Firmware update, MMC and network are currently not supported.
Firmware update, GOP, MMC and RNG are currently not supported.
[1]: https://github.com/ARM-software/ebbr
[2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR
[3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images
[4]: https://developer.arm.com/documentation/DUI1101/latest/
[1] https://github.com/ARM-software/ebbr
[2] https://www.arm.com/architecture/system-architectures/systemready-compliance-program/systemready-devicetree-band
[3] https://github.com/ARM-software/arm-systemready/tree/main/SystemReady-devicetree-band/prebuilt_images
[4] https://developer.arm.com/documentation/DUI1101/latest/

View File

@@ -1,4 +1,4 @@
# CONFIG_USE_BOOTCOMMAND is not set
CONFIG_ARM_SMCCC_FEATURES=y
CONFIG_BOOTCOMMAND="bootflow scan -lb"
CONFIG_BOOTMETH_DISTRO=y
CONFIG_BOOTM_EFI=y
@@ -17,8 +17,10 @@ CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y
CONFIG_CMD_GETTIME=y
CONFIG_CMD_GPT=y
CONFIG_CMD_NVEDIT_EFI=y
CONFIG_CMD_POWEROFF=y
CONFIG_CMD_RNG=y
CONFIG_CMD_RTC=y
CONFIG_CMD_SMC=y
CONFIG_CMD_TIME=y
CONFIG_DM_RNG=y
CONFIG_DM_RTC=y
@@ -29,6 +31,7 @@ CONFIG_EFI_LOADER=y
CONFIG_EFI_LOADER_HII=y
CONFIG_EFI_MM_COMM_TEE=y
CONFIG_EFI_PARTITION=y
CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
CONFIG_EFI_SECURE_BOOT=y
CONFIG_EFI_SET_TIME=y
CONFIG_EFI_UNICODE_CAPITALIZATION=y

View File

@@ -1,12 +1,16 @@
BR2_aarch64=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_10=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
BR2_GLOBAL_PATCH_DIR="board/arm/fvp-ebbr/patches"
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_SYSTEM_DHCP="eth0"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arm/fvp-ebbr/post-image.sh support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/arm/fvp-ebbr/genimage.cfg"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.10.12"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18"
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_PYTHON3=y
@@ -17,7 +21,7 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="200M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.11"
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.14.0"
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="fvp"
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH="board/arm/fvp-ebbr/fvp-ebbr.dts"
BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
@@ -26,17 +30,21 @@ BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y
BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="ARM_TSP_RAM_LOCATION=tdram FVP_DT_PREFIX=fvp-ebbr"
BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y
BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot efi_gop efifwsetup efinet efitextmode ext2 fat halt help linux lsefi lsefimmap lsefisystab minicmd normal part_gpt part_msdos reboot squash4"
BR2_TARGET_OPTEE_OS=y
BR2_TARGET_OPTEE_OS_NEEDS_DTC=y
BR2_TARGET_OPTEE_OS_CUSTOM_VERSION=y
BR2_TARGET_OPTEE_OS_CUSTOM_VERSION_VALUE="4.8.0"
BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY=y
BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-fvp"
BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES="CFG_ARM_GICV3=y"
BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES="CFG_ARM_GICV3=y CFG_TEE_CORE_LOG_LEVEL=2 CFG_TEE_TA_LOG_LEVEL=2"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07"
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2025.10"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="vexpress_fvp"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/arm/fvp-ebbr/u-boot.fragment"
BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
BR2_TARGET_UBOOT_NEEDS_GNUTLS=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y