Release notes - Lumex-1

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 and perf. Traces can be captured with simpleperf , perf and perfetto;

  • 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:

  1. When the terminal displays Hit any key to stop autoboot: X, press ENTER.

  2. At the resulting command prompt, type boot and press ENTER. 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

  1. Hardware rendering is supported on Android 15 only, with the Immortalis-Drage GPU (based on DDK source code).

Known issues

  1. Ray tracing is currently not supported by the GPU DDK (hardware rendering);

  2. 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
    (...)
    
  3. 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
    (...)
    
  4. 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;

  5. 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;

  6. 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.

  7. 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.

  8. 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>)
    (...)
    
  9. 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
    =======================================================
    (...)
    
  10. 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
    (...)
    
  11. 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.

  12. 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.

  13. 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.