| #
6acdf7b7 |
| 29-Jan-2026 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topics "qemu-sve", "xl/simd-hash" into integration
* changes: feat(qemu): disable fpregs traps for QEMU in BL31 feat(crypto): enable the runtime instrumentation for crypto ext
Merge changes from topics "qemu-sve", "xl/simd-hash" into integration
* changes: feat(qemu): disable fpregs traps for QEMU in BL31 feat(crypto): enable the runtime instrumentation for crypto extension feat(crypto): enable access to SIMD crypto in BL1 and BL2 feat(crypto): enable floating point register traps in EL3 feat(crypto): build flag for SIMD crypto extensions for v8+ platform refactor(build): add a default filter list for lib cflags
show more ...
|
| #
925db12f |
| 28-Jan-2026 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "fix(cpus): workaround for Cortex-A65AE erratum 1638571" into integration
|
| #
7096d2bc |
| 28-Jan-2026 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A65AE erratum 1638571
Cortex-A65AE erratum 1638571 is a Cat B erratum that applies to revisions r0p0, r1p0, r1p1, and is still open.
This erratum can be avoided by
fix(cpus): workaround for Cortex-A65AE erratum 1638571
Cortex-A65AE erratum 1638571 is a Cat B erratum that applies to revisions r0p0, r1p0, r1p1, and is still open.
This erratum can be avoided by disable stage1 page table walk for lower Els (EL1 and EL0) in EL3, so 'AT' speculative fetch at any point produces either the correct result or failure without TLB allocation.
SDEN documentation: https://developer.arm.com/documentation/SDEN1344564/latest
Change-Id: I861230de94a105fd52f9c8ef7e7551a2633c065b Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| #
e8cc9706 |
| 15-Oct-2025 |
Xialin Liu <xialin.liu@arm.com> |
feat(crypto): build flag for SIMD crypto extensions for v8+ platform
Add new build flags ENABLE_FEAT_CRYPTO to enable SIMD crypto extension for hash256 in bootflow authentication process and ENABLE_
feat(crypto): build flag for SIMD crypto extensions for v8+ platform
Add new build flags ENABLE_FEAT_CRYPTO to enable SIMD crypto extension for hash256 in bootflow authentication process and ENABLE_FEAT_CRYPTO_SHA3 to enable SIMD crypto extension for sha384 and sha512 in bootflow authentication process for Arm platform greater than v8.0.
Change-Id: I6e52feb318136910d34cafd89319bf94f90e16fc Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| #
23e15fad |
| 27-Jan-2026 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I8d332dbe,I9d30b6f9,I2fd7eece,Ibcd65f39,I86cc5e97 into integration
* changes: feat(bl2): support RESET_TO_BL2 and ENABLE_RME fix(build): fix BL2_CPPFLAGS when ENABLE_RME is set f
Merge changes I8d332dbe,I9d30b6f9,I2fd7eece,Ibcd65f39,I86cc5e97 into integration
* changes: feat(bl2): support RESET_TO_BL2 and ENABLE_RME fix(build): fix BL2_CPPFLAGS when ENABLE_RME is set fix(fvp): increase resident text size of BL2 fix(arm): support FCONF when TRANSFER_LIST and RESET_BL2 is set fix(arm): update next image's ep info with the FW config address
show more ...
|
| #
8c824273 |
| 20-Oct-2025 |
Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
feat(bl2): support RESET_TO_BL2 and ENABLE_RME
When RSE is used as the root of trust along with CPU that supports RME there is a need to enable both RESET_TO_BL2 and ENABLE_RME.
In current bl2_main
feat(bl2): support RESET_TO_BL2 and ENABLE_RME
When RSE is used as the root of trust along with CPU that supports RME there is a need to enable both RESET_TO_BL2 and ENABLE_RME.
In current bl2_main there are two different code paths for RESET_BL2, one handles BL2 running in EL1 and other for BL2 running in EL3.
When RME is enabled, BL2 always runs at EL3 but the current flow calls bl2_early_platform_setup2, bl2_plat_arch_setup instead of bl2_el3_early_platform_setup, bl2_el3_plat_arch_setup. Adding RME, TRANSFER_LIST, ROMLIB support in bl2_el3_* helpers makes arm_bl2_el3_setup.c almost identical to arm_bl2_setup.c.
This patch removes bl2_el3_plat helpers and related files. Now different combinations of RESET_TO_BL2, ENABLE_RME are handled in common bl2_setup routines in arm_bl2_setup.c. This helps to have common place to support new features and build flags for BL2 irrespective of which EL the BL2 runs.
BREAKING-CHANGE: This patch also changes all existing platform files and functions that use format bl2_el3_* to bl2_plat helpers. If any platform or out-of-tree platforms that need to support running BL2 in EL1 or EL3 must now handle it in bl2_early_platform_setup2 and bl2_plat_arch_setup.
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> Change-Id: I8d332dbe2de1db3b69319496c8d04626cdcf4140
show more ...
|
| #
a806cc5a |
| 22-Jan-2026 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes I2485d583,I1374c482,I07e29dbb,I949e6486 into integration
* changes: feat(qemu): enable ENABLE_FEAT_RAS and ENABLE_FEAT_SB feat(cpufeat): update FEAT_SB's FEAT_STATE_CHECKED status
Merge changes I2485d583,I1374c482,I07e29dbb,I949e6486 into integration
* changes: feat(qemu): enable ENABLE_FEAT_RAS and ENABLE_FEAT_SB feat(cpufeat): update FEAT_SB's FEAT_STATE_CHECKED status feat(cpufeat): advertise support for FEAT_RASv2 feat(cpufeat): enable FEAT_RAS for FEAT_STATE_CHECKED again
show more ...
|
| #
553c24c3 |
| 07-Jul-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpufeat): enable FEAT_RAS for FEAT_STATE_CHECKED again
FEAT_RAS was originally converted to FEAT_STATE_CHECKED in 6503ff291. However, the ability to use it was removed with 970a4a8d8 by simply
feat(cpufeat): enable FEAT_RAS for FEAT_STATE_CHECKED again
FEAT_RAS was originally converted to FEAT_STATE_CHECKED in 6503ff291. However, the ability to use it was removed with 970a4a8d8 by simply saying it impacts execution at EL3. That's true, but FEAT_STATE_CHECKED can still be allowed by being a bit clever about it.
First, the remainder of common code can be converted to use the is_feat_ras_supported() helper instead of the `#if FEATURE` pattern. There are no corner cases to consider there. The feature is either present (and appropriate action must be taken) or the feature is not (so we can skip RAS code).
A conscious choice is taken to check the RAS code in synchronize_errors despite it being in a hot path. Any fixed platform that seeks to be performant should be setting features to 0 or 1. Then, the SCTLR_EL3.IESB bit is always set if ENABLE_FEAT_RAS != 0 since we expect FEAT_IESB to be present if FEAT_RAS is (despite the architecture not guaranteeing it). If FEAT_RAS isn't present then we don't particularly care about the status of FEAT_IESB.
Second, platforms that don't set ENABLE_FEAT_RAS must continue to work. This is true out of the box with the is_feat_xyz_supported() helpers, as they make sure to fully disable code within them.
Third, platforms that do set ENABLE_FEAT_RAS=1 must continue to work. This is also true out of the box and no logical change is undertaken in common code.
Finally, ENABLE_FEAT_RAS is set to 2 on FVP. Having RAS implies that the whole handling machinery will be built-in and registered as appropriate. However, when RAS is built-in but not present in hardware, these registrations can still happen, they will only never be invoked at runtime.
Change-Id: I949e648601dc0951ef9c2b217f34136b6ea4b3dc Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
585088eb |
| 13-Jan-2026 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "morello_upstream" into integration
* changes: feat(morello): add capability load/store/track support to MMU feat(morello): add Morello capability enablement changes
|
| #
27bc1386 |
| 02-Oct-2020 |
Manoj Kumar <manoj.kumar3@arm.com> |
feat(morello): add Morello capability enablement changes
This patch adds a build macro ENABLE_FEAT_MORELLO which when set will compile BL31 firmware with changes required to boot capability aware so
feat(morello): add Morello capability enablement changes
This patch adds a build macro ENABLE_FEAT_MORELLO which when set will compile BL31 firmware with changes required to boot capability aware software.
It also adds helper function in c and assmbly to check if morello hardware is present and if morello capability is enabled or not.
CE field, bits [23:20] in ID_AA64PFR1_EL1 defines whether morello architecture is present or not, 0b0000 indicates that it is absent and 0b0001 indicates that it is present. While whether capabilities are enabled or not is decided at runtime with ENABLE_FEAT_MORELLO build option.
Reference: https://developer.arm.com/documentation/ddi0606/latest/
Signed-off-by: Manoj Kumar <manoj.kumar3@arm.com> Signed-off-by: Varshit Pandya <varshit.pandya@arm.com> Change-Id: Ib16877acbfcb72c4bd8c08e97e44edc0a3e46089
show more ...
|
| #
fdf3f697 |
| 15-Dec-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): enable USE_SPINLOCK_CAS to FEAT_STATE_CHECKED" into integration
|
| #
38e580e6 |
| 26-Nov-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpufeat): enable USE_SPINLOCK_CAS to FEAT_STATE_CHECKED
The FEAT_LSE enablement predates the FEAT_STATE framework and has never been converted. Since the introduction of USE_SPINLOCK_CAS we've
feat(cpufeat): enable USE_SPINLOCK_CAS to FEAT_STATE_CHECKED
The FEAT_LSE enablement predates the FEAT_STATE framework and has never been converted. Since the introduction of USE_SPINLOCK_CAS we've gained lots of quality of life features that allow for better feature enablement. This patch converts USE_SPINLOCK_CAS to tri-state and adds it to FEATURE_DETECTION to align with all other features.
Instead of introducing the assembly checking for tri-state, this patch translates all locking routines to C inline assembly and uses the standard C helpers. The main benefit is that this gives greater visibility to the compiler about what the functions are doing and lets it optimise better. Namely, it is able to allocate registers itself and inline the functions when LTO is enabled.
An unsuccessful attempt was made to use the instructions directly and have even flow control in C. This, however, made code very complicated and less efficient in the tight loops of the spinlock.
The last use of ARM_ARCH_AT_LEAST goes away with this change and so this macro is removed. It has now been fully superseded by the FEAT_STATE framework.
This change exposes a limitation - RME_GPT_BITLOCK_BLOCK requires USE_SPINLOCK_CAS. This patch does not address this in any way but makes the relationship explicit.
Change-Id: I580081549aceded2dca3e0f4564ee7510a7e56ae Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
fd2fb5b7 |
| 04-Dec-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "ar/feat_uinj" into integration
* changes: feat(cpufeat): add support for FEAT_UINJ feat(cpufeat): enable mandatory Armv9.4–Armv9.6 features by default fix(cpufeat): u
Merge changes from topic "ar/feat_uinj" into integration
* changes: feat(cpufeat): add support for FEAT_UINJ feat(cpufeat): enable mandatory Armv9.4–Armv9.6 features by default fix(cpufeat): update feature names and comments fix(cpufeat): simplify AArch32 feature disablement
show more ...
|
| #
2ba920f4 |
| 04-Dec-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "xl/a65-errata" into integration
* changes: fix(cpus): workaround for Cortex-A65 erratum 1541130 fix(cpus): workaround for Cortex-A65 erratum 1227419 fix(cpus): workar
Merge changes from topic "xl/a65-errata" into integration
* changes: fix(cpus): workaround for Cortex-A65 erratum 1541130 fix(cpus): workaround for Cortex-A65 erratum 1227419 fix(cpus): workaround for Cortex-A65 erratum 1179935
show more ...
|
| #
8177e1ef |
| 05-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A65 erratum 1541130
Cortex-A65 erratum 1541130 is a Cat B erratum that applies to r0p0, r1p0, r1p1, r1p2 revisions of the CPU and is still open.
This erratum can be
fix(cpus): workaround for Cortex-A65 erratum 1541130
Cortex-A65 erratum 1541130 is a Cat B erratum that applies to r0p0, r1p0, r1p1, r1p2 revisions of the CPU and is still open.
This erratum can be avoided by disable stage1 page table walk for lower Els (EL1 and EL0) in EL3, so 'AT' speculative fetch at any point produces either the correct result or failure without TLB allocation.
SDEN documentation: https://developer.arm.com/documentation/SDEN1065159/latest/
Change-Id: I72498f60f8449193ed4b5b2a9e7a08530e786ec3 Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| #
4286d16f |
| 26-Nov-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(cpufeat): add support for FEAT_UINJ
FEAT_UINJ allows higher ELs to inject Undefined Instruction exceptions into lower ELs by setting SPSR_ELx.UINJ, which updates PSTATE.UINJ on exception return
feat(cpufeat): add support for FEAT_UINJ
FEAT_UINJ allows higher ELs to inject Undefined Instruction exceptions into lower ELs by setting SPSR_ELx.UINJ, which updates PSTATE.UINJ on exception return. When PSTATE.UINJ is set, instruction execution at the lower EL raises an Undefined Instruction exception (EC=0b000000).
This patch introduces support for FEAT_UINJ by updating the inject_undef64() to use hardware undef injection if supported.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I48ad56a58eaab7859d508cfa8dfe81130b873b6b
show more ...
|
| #
0e6ddc1d |
| 27-Nov-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "feat(build): enable link-time optimization by default" into integration
|
| #
fa28b3af |
| 17-Apr-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(build): enable link-time optimization by default
Enable LTO by default for all platforms and compilers. LTO performs optimisation at link-time rather than at compilation time, and allows optimi
feat(build): enable link-time optimization by default
Enable LTO by default for all platforms and compilers. LTO performs optimisation at link-time rather than at compilation time, and allows optimisations to be made across compilation unit boundaries (i.e. C files). This is especially useful in areas with lots of closely related compilation units that operate on the same data structures (eg PSCI and context management).
The only drawback is that LTO makes conditions ripe for the build to heavily mangle all functions, making debugging a nightmare. So only enable for release builds.
Note this will make object files unintepretable by objdump. Use lto-dump instead.
BREAKING-CHANGE: LTO has been enabled by default, which may cause unpredictable issues for platforms where the linker scripts have not been designed with LTO in mind. Please report any issues to the [mailing list](mailto:tf-a@lists.trustedfirmware.org).
Change-Id: Ia472aff1a23366d918abded7a1c5da695f2c4787 Co-authored-by: Chris Kay <chris.kay@arm.com> Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
1d5aa939 |
| 24-Nov-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "docs(changelog): changelog for v2.14 release" into integration
|
| #
1c26b186 |
| 20-Nov-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
docs(changelog): changelog for v2.14 release
Generated this change-log using below command: npm run release -- --skip.commit --skip.tag --release-as 2.14.0
Signed-off-by: Arvind Ram Prakash <arvind
docs(changelog): changelog for v2.14 release
Generated this change-log using below command: npm run release -- --skip.commit --skip.tag --release-as 2.14.0
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I3745f4506de123e3a4ff1e3ca6d5992f3b5c174a
show more ...
|
| #
ef397720 |
| 10-Nov-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "ar/idte3" into integration
* changes: feat(cpufeat): add support for FEAT_IDTE3 feat(cpufeat): include enabled security state scope feat(cpufeat): add ID register def
Merge changes from topic "ar/idte3" into integration
* changes: feat(cpufeat): add support for FEAT_IDTE3 feat(cpufeat): include enabled security state scope feat(cpufeat): add ID register defines and read helpers
show more ...
|
| #
f396aec8 |
| 09-Sep-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(cpufeat): add support for FEAT_IDTE3
This patch adds support for FEAT_IDTE3, which introduces support for handling the trapping of Group 3 and Group 5 (only GMID_EL1) registers to EL3 (unless t
feat(cpufeat): add support for FEAT_IDTE3
This patch adds support for FEAT_IDTE3, which introduces support for handling the trapping of Group 3 and Group 5 (only GMID_EL1) registers to EL3 (unless trapped to EL2). IDTE3 allows EL3 to modify the view of ID registers for lower ELs, and this capability is used to disable fields of ID registers tied to disabled features.
The ID registers are initially read as-is and stored in context. Then, based on the feature enablement status for each world, if a particular feature is disabled, its corresponding field in the cached ID register is set to Res0. When lower ELs attempt to read an ID register, the cached ID register value is returned. This allows EL3 to prevent lower ELs from accessing feature-specific system registers that are disabled in EL3, even though the hardware implements them.
The emulated ID register values are stored primarily in per-world context, except for certain debug-related ID registers such as ID_AA64DFR0_EL1 and ID_AA64DFR1_EL1, which are stored in the cpu_data and are unique to each PE. This is done to support feature asymmetry that is commonly seen in debug features.
FEAT_IDTE3 traps all Group 3 ID registers in the range op0 == 3, op1 == 0, CRn == 0, CRm == {2–7}, op2 == {0–7} and the Group 5 GMID_EL1 register. However, only a handful of ID registers contain fields used to detect features enabled in EL3. Hence, we only cache those ID registers, while the rest are transparently returned as is to the lower EL.
This patch updates the CREATE_FEATURE_FUNCS macro to generate update_feat_xyz_idreg_field() functions that disable ID register fields on a per-feature basis. The enabled_worlds scope is used to disable ID register fields for security states where the feature is not enabled.
This EXPERIMENTAL feature is controlled by the ENABLE_FEAT_IDTE3 build flag and is currently disabled by default.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I5f998eeab81bb48c7595addc5595313a9ebb96d5
show more ...
|
| #
7303319b |
| 08-Nov-2025 |
Chris Kay <chris.kay@arm.com> |
Merge changes from topic "NUMA_AWARE_PER_CPU" into integration
* changes: docs(maintainers): add per-cpu framework into maintainers.rst feat(per-cpu): add documentation for per-cpu framework f
Merge changes from topic "NUMA_AWARE_PER_CPU" into integration
* changes: docs(maintainers): add per-cpu framework into maintainers.rst feat(per-cpu): add documentation for per-cpu framework feat(rdv3): enable numa aware per-cpu for RD-V3-Cfg2 feat(per-cpu): migrate amu_ctx to per-cpu framework feat(per-cpu): migrate spm_core_context to per-cpu framework feat(per-cpu): migrate psci_ns_context to per-cpu framework feat(per-cpu): migrate psci_cpu_pd_nodes to per-cpu framework feat(per-cpu): migrate rmm_context to per-cpu framework feat(per-cpu): integrate per-cpu framework into BL31/BL32 feat(per-cpu): introduce framework accessors/definers feat(per-cpu): introduce linker changes for NUMA aware per-cpu framework docs(changelog): add scope for per-cpu framework
show more ...
|
| #
0570c848 |
| 07-Nov-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "fix(rmm): enable SMCCC_ARCH_FEATURE_AVAILABILITY for RMM" into integration
|
| #
7256cf0a |
| 29-Jan-2025 |
Rohit Mathew <rohit.mathew@arm.com> |
feat(per-cpu): introduce linker changes for NUMA aware per-cpu framework
This commit introduces linker changes for NUMA aware per-cpu objects in the BL31 and BL32 images. The per-cpu framework is de
feat(per-cpu): introduce linker changes for NUMA aware per-cpu framework
This commit introduces linker changes for NUMA aware per-cpu objects in the BL31 and BL32 images. The per-cpu framework is designed to minimise cache thrashing, and the linker layout ensures each CPU’s per-cpu data is placed on a separate cache line. This isolation is expected to improve performance when the per-cpu framework is enabled.
Signed-off-by: Sammit Joshi <sammit.joshi@arm.com> Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> Change-Id: Ie4d8b4e444971adbd9dba0446d1ab8cafaca1556
show more ...
|