Release notes - Lumex-1
Contents
Release tag
The manifest tag for this release is Lumex-1
.
Platform Support
This software release is tested on Lumex Reference Design Fixed Virtual Platform (FVP) version 11.29.51
.
Components
This software release provides the following key features:
Board Support Package (BSP) build supporting Android, Buildroot and Debian distros;
Trusted firmware-A for secure boot;
U-Boot bootloader;
Hafnium for S-EL2 Secure Partition Manager core;
OP-TEE for Trusted Execution Environment (TEE) in Buildroot;
Trusted Services (Crypto and Internal Trusted Storage) in Buildroot;
Trusty for Trusted Execution Environment (TEE) with FF-A messaging in Android;
System Control Processor (SCP) firmware for programming the interconnect, power control, and so on;
Runtime Security Engine (RSE) - previously known as Runtime Security SubSystem (RSS) - firmware for providing hardware RoT;
TensorFlow Lite Machine Learning;
Full-HD (1920x1080-60fps) resolution support for use with the FVP model.
Hardware Features
This software release provides the following high-level hardware features:
Arm® SI 1 System Interconnect with Memory Tagging Unit (MTU) support driver in SCP firmware;
Arm® CoreLink™ GIC-700 Generic Interrupt Controller in Trusted Firmware-A;
Arm® Mali™-D71 Display Processor and virtual encoder support for display on Linux;
MHUv3 Driver for SCP and Application Processor (AP) communication;
UARTs, Timers, Flash, Clock drivers, CCSM (Clock Control State Machine);
PL180 MMC;
DynamIQ Shared Unit (DSU) with 10 cores (2x Arm C1-Ultra + 4x Arm C1-Pro + 2x Arm C1-Nano + 2x CME2 cores configuration);
Cortex®-M55-based Runtime Security Engine (RSE);
Cortex®-M85-based System Control Processor (SCP).
Software Features
This software release provides the following key features:
Buildroot distribution support;
Debian 12 (aka Bookworm);
Android 15 and Android 14 support; only minimal test is done on Android 14.
Android Common Kernel 6.6.46 (in Buildroot, Debian and Android 15) and 6.1.25 (in Android 14);
Android Kernel is built with Bazel (instead of Make) which is referred to Kleaf;
Android Software rendering with DRM Hardware Composer offloading composition to Mali D71 DPU;
Android supports 16k pages;
Android Dynamic Performance Framework support;
Hardware Graphics Composer 3 Ranchu is used for Software Rendering (implementation is tweaked);
KVM default mode of operation is set to
protected
by default, thus effectively enabling pKVM on the system. This is a nVHE based mode with kernel running at EL1;Microdroid based pVM support in Android;
ADB connection from host machine to protected VM Microdroid;
DPU support for S1 and S2 translation squashed with SMMU-700;
Maximum Power Mitigation Mechanism (MPMM) support;
Support for Memory System Resource Partitioning and Monitoring (MPAM) (see link);
Support for Energy Aware Scheduling (EAS) (more info available at link);
Trusted Firmware-A v2.12;
Hafnium v2.12;
OP-TEE 4.5.0;
Trusty with FF-A messaging - FF-A v1.0;
Tower Interconnect PMU’s enabled for profiling;
Support for secure boot based on Trusted Boot Board Requirements (TBBR) specification (see link);
System Control Processor (SCP) firmware v2.14;
Runtime Security Engine (RSE) firmware v2.2.0;
U-Boot bootloader v2025.04;
Power management features: cpufreq and cpuidle;
System Control and Management Interface (SCMI) support;
Virtio to mount the android image in the host machine as a storage device in the FVP;
Verified U-Boot for authenticating fit image (containing kernel + ramdisk) during Buildroot boot;
Android Verified Boot (AVB) for authenticating boot and system image during Android boot;
Hafnium as Secure Partition Manager (SPM) at S-EL2;
OP-TEE as Secure Partition at S-EL1, managed by S-EL2 SPMC (Hafnium);
Arm FF-A driver and FF-A Transport support for OP-TEE driver in Android Common Kernel;
OP-TEE Support in Buildroot distribution. This includes OP-TEE client and OP-TEE test suite;
Trusted Services (Crypto and Internal Trusted Storage) running at S-EL0;
Trusted Services test suite added to Buildroot distribution;
PAC/BTI is enabled in Hafnium, OP-TEE and Trusted Services;
Tracing support, based on ETE and TRBE v1.1 in TF-A, kernel and
simpleperf
andperf
. Traces can be captured withsimpleperf
,perf
andperfetto
;Enabled FEAT_RNG_TRAP and SMCCC TRNG;
DICE Protection Environment (DPE) support.
Rotational scheduler(only supported with kernel-6.1)
Security Bulletin released with the fix for SCP firmware vulnerability - https://developer.arm.com/Arm%20Security%20Center/SCP-Firmware%20Vulnerability
Secure Firmware Update through Secure Trusted Services app;
Tools Support
This software release extends docker support to Debian distro (making it supported to all Lumex build variants).
Optimizations
U-Boot boot time optimization
To speed up the boot process, you can interrupt the auto-boot process:
When the terminal displays
Hit any key to stop autoboot: X
, pressENTER
.At the resulting command prompt, type
boot
and pressENTER
. This continues the boot process. Although the configured delay is 1-3 seconds, it takes considerably longer (approximately 15 seconds) because of the time difference between the CPU frequency and the FVP operating frequency.
Limitations
Development Host OS Support
Hardware rendering is supported on Android 15 only, with the Immortalis-Drage GPU (based on DDK source code).
Known issues
Ray tracing is currently not supported by the GPU DDK (hardware rendering);
The Kernel Selftest sanity test reports a failure for the
check_ksm_options
test as illustrated on the following excerpt. This is expected as the KSM driver is not part of the Lumex-1 kernel.(...) # selftests: arm64: check_ksm_options not ok 3 selftests: arm64: check_ksm_options # exit=1 (...)
When running the EAS for LISA, the test
TwoBigThreeSmall:test_task_placement
may fail with an output similar to the following:(...) TwoBigThreeSmall[board=tc]:test_task_placement UUID=17fc2798916b4b1f9dae399c20dd3e63 FAILED energy threshold: 2472495.7617728077 bogo-joules estimated energy: 2699550.767562539 bogo-joules noisiest task: comm: sshd duration (abs): 0.00029410398565232754 s duration (rel): 0.029381488120311203 % pid: 175 (...)
For Android builds which use the TAP network interface, the default browser available in Android (
webview_shell
) is not able to open HTTPS URLs. You can work around this limitation by getting the ARM64 specific Android Application Package (APK) package for other browsers (for example, Mozilla Firefox), installing it using Android Debug Bridge (ADB), and using it to browse HTTPS URLs;The Android PAUTH sanity test may sometimes report inconsistent failing test results (this behaviour is currently under investigation). If experiencing this situation, repeat the test a few times to validate the feature;
TensorFlow application (
benchmark_model
) needs to download extra dependencies during the build process, which may lead to a failure because of network related issues. If experiencing this issue, try to rebuild TensorFlow application alone a few times with./run_docker.sh ./build-ml-app.sh clean build deploy
to finish the build.The Lumex FVP model running Android may report a crash if the TensorFlow application
benchmark_model
is interrupted during execution. To prevent this situation, please wait until the TensorFlow application has finished executing.When running the GPU GLES Integration tests, one of the tests belonging to the
gles3_api_integration
set may fail with output similar to the following:(...) ======================================================= UTF: Running gles3_api_integration ======================================================= (...) Initializing: S:{gles3_api_integration} T:{afrc_sample [0x0006]} D:{0} System time: Fri Apr 5 15:54:57 2024 Running: S:{gles3_api_integration} T:{afrc_sample [0x0006]} D:{0} Fail: S:{gles3_api_integration} T:{afrc_sample [0x0006]} F:{ [0x00]} D:{294} - file!=((void*)0) fail [0x0!=0x0] (<unknown>) Terminating: S:{gles3_api_integration} T:{afrc_sample [0x0006]} D:{0} (...) ======================================================= UTF: Result Details ======================================================= (...) Info: S:{gles3_api_integration} T:{afrc_render [0x0005]} F:{ [0x00]} D:{9000} - ------------------------------------------------------- Fail: S:{gles3_api_integration} T:{afrc_sample [0x0006]} F:{ [0x00]} D:{294} - file!=((void*)0) fail [0x0!=0x0] (<unknown>) (...)
When running the GPU EGL Integration tests, some tests may fail, resulting in output similar to the following:
(...) ======================================================= UTF: Result Details ======================================================= (...) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{11441} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{21467} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{31473} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{41673} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{51919} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{62043} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{72164} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_depth_readback_valid_swap [0x0015]} F:{ [0x00]} D:{82463} - Fail check_res != 0 fail (<unknown>) (...) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{11605} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{21859} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{32137} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{42144} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{52193} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{62272} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{72636} - Fail check_res != 0 fail (<unknown>) Fail: S:{egl_surface_suite} T:{surface_color_readback_valid_msaa_swap [0x0017]} F:{ [0x00]} D:{82977} - Fail check_res != 0 fail (<unknown>) (...) Fail: S:{egl_image_suite} T:{afbc_bch_external_image_test [0x0008]} F:{ [0x00]} D:{135} - file!=((void*)0) fail [0x0!=0x0] (<unknown>) Fail: S:{egl_image_suite} T:{afbc_usm_external_image_test [0x0009]} F:{ [0x00]} D:{343} - file!=((void*)0) fail [0x0!=0x0] (<unknown>) (...) Fail: S:{egl_damage_suite} T:{partial_update_entire_surface_with_buffer_age_zero [0x0002]} F:{ [0x00]} D:{30687} - check_res==1 fail [0==1] (<unknown>) (...) Fail: S:{egl_damage_suite} T:{partial_update_glReadPixel_in_damage_region_between_drawcalls_ms [0x0007]} F:{ [0x00]} D:{6764} - data_out==ref_color_out fail [00==0xff @ item 0] (<unknown>) (...) Fail: S:{egl_damage_suite} T:{partial_update_prerotate_fullscreen [0x000e]} F:{ [0x00]} D:{68555} - check_res==1 fail [0==1] (<unknown>) (...) Fail: S:{egl_damage_suite} T:{partial_update_set_region_after_drawcall [0x0016]} F:{ [0x00]} D:{38224} - check_res==1 fail [0==1] (<unknown>) (...) ======================================================= UTF: Result Summary ======================================================= 22 assertions Fail 200 tests considered 165 tests passed 27 tests skipped 0 tests expected to fail 8 tests failed 6 suites considered 3 suites did not pass Run time 70m 7s ======================================================= (...)
When running the GPU Vulkan Integration tests, the test
vulkan_wsi_external_memory_dma_buf_32k_image
fails and aborts execution as shown in the following output. The exact cause is currently under investigation. To work around this error and prevent the GPU Integration test failing, run the tests individually.(...) 02-20 21:26:32.471 3197 3197 I mali_test: [INSTANCE EXTENSION] [12] 'VK_EXT_debug_report' version 10 02-20 21:26:32.471 3197 3197 I mali_test: [INSTANCE EXTENSION] [13] 'VK_EXT_debug_utils' version 2 02-20 21:26:32.471 3197 3197 I mali_test: [DEVICE QUEUE] count 1 02-20 21:26:32.471 3197 3197 I mali_test: [DEVICE QUEUE] [0] flags = 0xc07, count = 2, timestamp valid bits = 64 02-20 21:26:32.474 3197 3197 I mali_test: Testing format R8G8B8A8, linear case. 02-20 21:26:32.484 3197 3197 I mali_test: DRM format modifier 0: 02-20 21:26:32.484 3197 3197 I mali_test: type = LINEAR 02-20 22:03:21.584 3197 3199 I mali_test: UTF not progressing. 02-20 22:23:21.584 3197 3199 I mali_test: UTF not progressing. 02-20 22:43:21.585 3197 3199 I mali_test: UTF not progressing after 3 checks. Aborting (...)
The CPU hotplug works well with Buildroot and Debian distributions. However, in Android, CPU hotplug operations cause the system to hang. The issue is due to the integration of Hafnium and Trusty OS in the system and the PSCI CPU ON and OFF APIs are not yet supported in this case.
ML app sanity test is returning an error. This is a placeholder, either needs elaboration or needs to be removed if the issue is addressed.
pKVM: The IOMMU model assumes EL3/SCP handles dependencies between SMMU and endpoint power ordering. With coarse_demand, the GPU can wake before SMMU-700, touching powered-down SMMU registers and causing page faults/soft resets. Workaround: set the GPU power mode to always_on to avoid the bad wake-up ordering.
Support
For support email: support@arm.com.
Copyright (c) 2022-2025, Arm Limited. All rights reserved.