| 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 ...
|
| 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 ...
|
| 9dda4082 | 13-Jan-2026 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpufeat): update FEAT_SB's FEAT_STATE_CHECKED status
FEAT_SB is mostly FEAT_STATE_CHECKED enabled but that is not apparent from docs and code's check is sub-optimal. Update docs to make this ap
feat(cpufeat): update FEAT_SB's FEAT_STATE_CHECKED status
FEAT_SB is mostly FEAT_STATE_CHECKED enabled but that is not apparent from docs and code's check is sub-optimal. Update docs to make this apparent and update code to have a proper FEAT_STATE_CHECKED fallback.
Also enable it for FVP so it's tested a bit more.
Change-Id: I1374c4828b235ad16904f6c4ac9e39b9c2596a37 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
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 ...
|
| a760277d | 13-Jan-2026 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "fix(debug): add debug log build option" into integration |
| 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 |
| d0650203 | 12-Dec-2025 |
Jaiprakash Singh <jaiprakashs@marvell.com> |
fix(debug): add debug log build option
When log level set to verbose, xlat prints alot of translation table debug logs.These detail logs keeps on printing for minutes and increase boot time. Also, n
fix(debug): add debug log build option
When log level set to verbose, xlat prints alot of translation table debug logs.These detail logs keeps on printing for minutes and increase boot time. Also, not all users might be interested in the xlat detail logs when verbose is on.
LOG_DEBUG is added to print xlat detail logs only when someone intentionally enables logging.
Change-Id: I3308b49779a692bdce87fb6929c88fdcb713e628 Signed-off-by: Jaiprakash Singh <jaiprakashs@marvell.com>
show more ...
|
| 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 ...
|
| e3ace29c | 08-Jan-2026 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(docs): update sme disconnect on power down
With `ERRATA_SME_POWER_DOWN` enabled we disconnect SME from core to power down the core correctly, we actually don't disable sme.
Change-Id: I42b99bd5
fix(docs): update sme disconnect on power down
With `ERRATA_SME_POWER_DOWN` enabled we disconnect SME from core to power down the core correctly, we actually don't disable sme.
Change-Id: I42b99bd5ef125868f55a2a3ef96c0ac1b054f509 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
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 ...
|
| 265f1483 | 13-Oct-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
feat(measured-boot): enable dynamic hash provisioning
Introduce dynamic hash provisioning for Measured Boot by removing the previous static hash-selection path and allowing platforms to supply algor
feat(measured-boot): enable dynamic hash provisioning
Introduce dynamic hash provisioning for Measured Boot by removing the previous static hash-selection path and allowing platforms to supply algorithm metadata at runtime. Add mboot_find_event_log_metadata() as a common helper for resolving image metadata. Update the Event Log build logic to use MAX_DIGEST_SIZE and MAX_HASH_COUNT, deprecate legacy MBOOT_EL_HASH_ALG, and warn when it is used. Adjust MbedTLS configuration to enable hash algorithms automatically when Measured Boot is enabled.
Change-Id: I704e1a5005f6caad3d51d868bacc53699b6dd64f Signed-off-by: Harrison Mutai <harrison.mutai@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 ...
|
| 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 ...
|
| 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 ...
|
| dfde3494 | 18-Nov-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
docs: update docs w/ min tool version
The minimum Node version was updated to the latest LTS release. Update the docs to reflect this change. While we're at it, clean up remaining references from th
docs: update docs w/ min tool version
The minimum Node version was updated to the latest LTS release. Update the docs to reflect this change. While we're at it, clean up remaining references from the Arm GNU toolchain version update and set the minimum for GNU Make to whatever is provided by Ubuntu 22.04.
Change-Id: I16923c9cf69b34f78f19bc10e3bed72b70ae8132 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
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 ...
|
| 8e67e710 | 30-Oct-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
docs(cpufeat): add a checklist on how to add a feature
Adding features is an arcane job with a long list of things to consider. There is no single place to list these things so someone new to this m
docs(cpufeat): add a checklist on how to add a feature
Adding features is an arcane job with a long list of things to consider. There is no single place to list these things so someone new to this must be guided along, usually at code review. Further, the process changes occasionally so it can be difficult even for an experienced contributor to get right.
So add a checklist along with brief explanations on what to look for so we can make our job nicer.
Change-Id: I09dd0062b742c9fce5a8f86a2067adc941db6899 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| ab471aeb | 29-Oct-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge "fix(security): add clrbhb support" into integration |
| ee87353c | 28-Oct-2025 |
Mark Dykes <mark.dykes@arm.com> |
Merge "refactor(docs): deduplicate PSCI documentation" into integration |
| d6affea1 | 02-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(security): add clrbhb support
TF-A mitigates spectre-bhb(CVE-2022-23960) issue with loop workaround based on - https://developer.arm.com/documentation/110280/latest/
On platforms that support `
fix(security): add clrbhb support
TF-A mitigates spectre-bhb(CVE-2022-23960) issue with loop workaround based on - https://developer.arm.com/documentation/110280/latest/
On platforms that support `clrbhb` instruction it is recommended to use `clrbhb` instruction instead of the loop workaround.
Ref- https://developer.arm.com/documentation/102898/0108/
Change-Id: Ie6e56e96378503456a1617d5e5d51bc64c2e0f0b Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| b5f120b5 | 13-Oct-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(docs): deduplicate PSCI documentation
It is already described in the porting guide and context management sections so it's largely redundant. It also hasn't been updated for a while despite
refactor(docs): deduplicate PSCI documentation
It is already described in the porting guide and context management sections so it's largely redundant. It also hasn't been updated for a while despite lots going on around PSCI so it's clearly not read often. The only part that isn't is that for describing a new secure dispatcher, which belongs in the porting guide.
Change-Id: Icdc53e19565f0785bc8a112e5eb49df1b365c66c Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|