| 4ea0ebc2 | 26-Aug-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(arm): handle RMM ep_info during LFA
Update the logic for next image handoff to correctly manage the RMM entry point information when LFA is in progress. This ensures control is passed back into
feat(arm): handle RMM ep_info during LFA
Update the logic for next image handoff to correctly manage the RMM entry point information when LFA is in progress. This ensures control is passed back into RMM during the activation sequence.
This change only affects during LFA run, normal boot behavior is unchanged.
Change-Id: I8f85e9a7e0a7e9dab196c69ecf55abb9e7717982 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| ce78f3cd | 04-Jun-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(lfa): add helper to check LFA prime completion status
Introduce `is_lfa_prime_finished()` to allow callers to query whether the prime operation for a given component has completed. This enables
feat(lfa): add helper to check LFA prime completion status
Introduce `is_lfa_prime_finished()` to allow callers to query whether the prime operation for a given component has completed. This enables external logic to safely determine if activation is ready to proceed.
The helper checks for: - Matching `component_id` in the current activation - Prime status being `PRIME_COMPLETE` - `activation_pending` being true
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: I55dadba639571faacc27de245cf0a9f2493956a5
show more ...
|
| f024c573 | 15-Apr-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(lfa): enable LFA of RMM
Extend the LFA framework to handle the activation of RMM image. This allows RMM to be updated and re-initialized as part of LFA without requiring a system reset.
Signed
feat(lfa): enable LFA of RMM
Extend the LFA framework to handle the activation of RMM image. This allows RMM to be updated and re-initialized as part of LFA without requiring a system reset.
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: I6ca3e21f6fe07ac3ab0bec1656d295129b62b8f5
show more ...
|
| 3151d9fc | 24-Sep-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
chore(lfa): use standard int return type for prime/activate callbacks
Replace `int32_t` with `int` for `component_prime_fn` and `component_activate_fn` typedefs, along with their implementations in
chore(lfa): use standard int return type for prime/activate callbacks
Replace `int32_t` with `int` for `component_prime_fn` and `component_activate_fn` typedefs, along with their implementations in BL31 and RMM LFA services. This aligns with common convention for function return types and avoids unnecessary use of fixed-width types where a native int is sufficient
Change-Id: Id22e93a554260b22e36b59baeac2cbb1b4646727 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 22bbb59f | 15-Apr-2025 |
Andre Przywara <andre.przywara@arm.com> |
feat(rmmd): add warm reset helpers for primary and secondary CPUs
Introduce two helpers to support RMM warm reset, primarily for use during Live Firmware Activation:
- rmmd_primary_warm_reset(): r
feat(rmmd): add warm reset helpers for primary and secondary CPUs
Introduce two helpers to support RMM warm reset, primarily for use during Live Firmware Activation:
- rmmd_primary_warm_reset(): re-runs rmmd_setup() and rmm_init() for the primary CPU. - rmmd_secondary_warm_reset(): reinitializes secondary CPUs using rmmd_cpu_on_finish_handler(), with a spinlock to serialize access.
Change-Id: I885536aa85e395ed69069802112dcdb5063a9c19 Signed-off-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 2b6ae948 | 23-Sep-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "refactor(tc): neaten platform code after TC2 removal" into integration |
| f174704b | 23-Sep-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes I2c7c8da9,I9786ab88,Ia76ba243,Ifec40dee,Ifdd59c09, ... into integration
* changes: fix(cpus): workaround for Cortex-A510 erratum 3704847 fix(cpus): workaround for Cortex-A510 errat
Merge changes I2c7c8da9,I9786ab88,Ia76ba243,Ifec40dee,Ifdd59c09, ... into integration
* changes: fix(cpus): workaround for Cortex-A510 erratum 3704847 fix(cpus): workaround for Cortex-A510 erratum 3672349 fix(cpus): workaround for Cortex-A510 erratum 2420992 fix(cpus): workaround for Cortex-A510 erratum 2218134 fix(cpus): workaround for Cortex-A510 erratum 2169012 fix(cpus): workaround for Cortex-A510 erratum 2008766
show more ...
|
| b3f4945a | 23-Sep-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge "refactor(arm): refine FIP offset handling for BL1 with GPT support" into integration |
| 27f0b734 | 18-Sep-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
refactor(arm): refine FIP offset handling for BL1 with GPT support
Restrict use of PLAT_ARM_FIP_OFFSET_IN_GPT to BL1 when ARM_GPT_SUPPORT is enabled. BL2 can derive the FIP offset from the partition
refactor(arm): refine FIP offset handling for BL1 with GPT support
Restrict use of PLAT_ARM_FIP_OFFSET_IN_GPT to BL1 when ARM_GPT_SUPPORT is enabled. BL2 can derive the FIP offset from the partition table at runtime, so a fixed offset is unnecessary. Also cleaned up the FIP address handling comment for clarity.
Change-Id: I03f003a9307d66d16666eefcff1f45bb010779c9 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 8f152319 | 11-Aug-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(aarch64): do not print EL1 registers on EL3 panic
Lower EL execution should not be able to panic EL3. The main source of potential panic, traps from lower ELs, are now handled gracefully with un
fix(aarch64): do not print EL1 registers on EL3 panic
Lower EL execution should not be able to panic EL3. The main source of potential panic, traps from lower ELs, are now handled gracefully with undefined injection. Almost every other source of panic is something going wrong within TF-A. Regardless, in both cases, ESR_EL3, ELR_EL3, and SPSR_ELR provide the majority of necessary information to debug a panic and printing a lot of lower EL register only clutters the crash dump and makes it difficult to read.
Further, when EL3 panics, the ultimate source of that panic may be EL2 but the crash reporting functionality only prints out EL1 system registers which are going to be quite useless to debug.
Finally, the panic may be happening due to some misconfiguration of other EL3 system registers that have been introduced with a feature.
There are two logical choices: a) extend crash reporting to report all EL1, EL2, and EL3 registers depending on where an error came from, including all features b) only print core EL3 registers and rely on the developer to add extra prints as necessary
We have never strived to achieve a) (as evidenced by EL2 and feature sysregs never having been added), so do b). Only non-EL3 registers that are relevant to EL3's direct execution are kept (like SP_EL0).
Change-Id: Ife2fe86184bca9a4d66f367c516eececc57471da Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 4779becd | 06-Aug-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(el3-runtime): streamline cpu_data assembly offsets using the cpu_ops template
The cpu_data structure, just like cpu_ops, is collection of disparate data that must be accessible from both C
refactor(el3-runtime): streamline cpu_data assembly offsets using the cpu_ops template
The cpu_data structure, just like cpu_ops, is collection of disparate data that must be accessible from both C and assembly. Achieving this is tricky as there is no way to export structure offsets from C directly so they must be manually recreated with `#define`s and asserts. However, the cpu_data structure is quite old and the assembly offsets are a patchwork of additions and extremely difficult to reason with and modify. In fact, certain currently unused builds with ENABLE_RUNTIME_INSTRUMENTATION=1 fail to build.
To untangle this, convert the assembly offsets to the pattern used for the cpu_ops structure. That is, first define the sizes of every member, as generically as possible, and then chain their offsets one after the other. To make sure this is always correct, add a CASSERT for the offset of every member. This makes it easy to modify the structure and fixes the build failures.
Change-Id: I61aeb55e9c494896663a3c719c10e3c072f56349 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 2c730eea | 12-Sep-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix: remove unused cpu_data related macros
There are no uses for CPU_DATA_PSCI_LOCK_OFFSET so it is removed.
PLAT_PCPU_DATA_SIZE is also unused in ST platforms and causes offsets to mismatch when t
fix: remove unused cpu_data related macros
There are no uses for CPU_DATA_PSCI_LOCK_OFFSET so it is removed.
PLAT_PCPU_DATA_SIZE is also unused in ST platforms and causes offsets to mismatch when the linker garbage collects it. It is also removed.
CPU_DATA_PLAT_PCPU_OFFSET is also removed as its only use is in rcar_lock_get() and related macros which are never called since all calls of these macros lack an argument.
Change-Id: I883ab58c56b4082e0e8b19a8d8f6186945bcc58e Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 34a22a02 | 05-Aug-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(el3-runtime): move context security states to context.h
The three security states (S, NS, RL) are architecturally quite consistent - anything that uses them has the same numerical assignmen
refactor(el3-runtime): move context security states to context.h
The three security states (S, NS, RL) are architecturally quite consistent - anything that uses them has the same numerical assignments (0, 1, 2) and they are quite convenient for indexing. However, we're not as consistent in tf-a and this is defined in a few places. Since cpu_data has a dependency on the context management library, use its security state convention in a few more places and take away this responsibility from cpu_data.
Change-Id: Iec73b2be2eef91975554767557de72424d0031f1 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 8de6021b | 22-Sep-2025 |
Ryan Everett <ryan.everett@arm.com> |
refactor(tc): neaten platform code after TC2 removal
Now that TC2 has been removed, the only TC platforms are TC3 and TC4. Therefore, it no longer makes sense to have both tc-base and tc3-4-base dts
refactor(tc): neaten platform code after TC2 removal
Now that TC2 has been removed, the only TC platforms are TC3 and TC4. Therefore, it no longer makes sense to have both tc-base and tc3-4-base dtsi files. This patch combines the two base TC dtsi files, and removes tautological ifdefs in TC platform code.
Change-Id: I011b5fe1f645d6d53276007b11a17bd6cf952ecb Signed-off-by: Ryan Everett <ryan.everett@arm.com>
show more ...
|
| 01b3d394 | 05-Aug-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(el3-runtime): extract cpu_data limitations to top-level constraints
CRASH_REPORTING is checked via an `#error` statement in the header, while EL3_EXCEPTION_HANDLING is carefully carved out
refactor(el3-runtime): extract cpu_data limitations to top-level constraints
CRASH_REPORTING is checked via an `#error` statement in the header, while EL3_EXCEPTION_HANDLING is carefully carved out when not supported. However, both are only used on AArch64 builds and never on AArch32. We can promote both to proper make constraints and keep the cpu_data implementation a little bit simpler.
Change-Id: Ia164e046f953a552dc6e6cf624961a90669eaeeb Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| e0ee3922 | 22-Sep-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(gicv3): avoid incrementing global gicr_frames pointer" into integration |
| 90b186e8 | 22-Sep-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes from topic "ja/ffa_v1_3" into integration
* changes: feat(tc): bump SPMC version to FF-A v1.3 TC platform feat(fvp): bump the SPMC version feat(ff-a): bump SPMD FF-A version |
| 6262a3ec | 20-Sep-2025 |
Rohit Mathew <rohit.mathew@arm.com> |
fix(gicv3): avoid incrementing global gicr_frames pointer
commit 75170704c9119a4947 (refactor(gicv3): clarify redistributor base address usage with USE_GIC_DRIVER=3) introduced changes to walk the r
fix(gicv3): avoid incrementing global gicr_frames pointer
commit 75170704c9119a4947 (refactor(gicv3): clarify redistributor base address usage with USE_GIC_DRIVER=3) introduced changes to walk the redistributor frames by incrementing the global `gicr_frames` pointer. This leaves the pointer advanced after the first miss, so subsequent CPUs do not start from the beginning of the array. Such behaviour is incorrect in the presence of CPU hotplug or out-of-order CPU_ON operations, where each CPU must be able to probe the full set of redistributor frames independently.
Fix this by using a local iterator instead of modifying the global `gicr_frames` pointer, preserving the array state for all CPUs.
While here, fix a typo in a comment and replace the `do…while` loop with a safer `while` loop to avoid probing the zero terminator in case a platform erroneously passes an empty array.
Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> Change-Id: I6d6f73fb172c48f8e50b29ec2232648be3a6a6a0
show more ...
|
| 1c1c9c50 | 19-Sep-2025 |
Varun Wadekar <vwadekar@nvidia.com> |
Merge "docs(tegra): add note that clang is not supported" into integration |
| ea884936 | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 3704847
Cortex-A510 erratum 3704847 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
fix(cpus): workaround for Cortex-A510 erratum 3704847
Cortex-A510 erratum 3704847 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
The workaround is to set bit 9 in CPUACTLR_EL1.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: I2c7c8da9c66471115b5bf8fb5c87d4de46ca265c Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| af1fa796 | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 3672349
Cortex-A510 erratum 3672349 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
fix(cpus): workaround for Cortex-A510 erratum 3672349
Cortex-A510 erratum 3672349 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
The workaround is to clear the WFE_RET_CTRL and WFI_RET_CTRL fields in CPUPWRCTLR_EL1 to disable full retention.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: I9786ab8843a2eab45e650c6af50b6933481527ec Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| 4fb7090e | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 2420992
Cortex-A510 erratum 2420992 is a Cat B erratum that applies only to revisions r1p0 and r1p1, and is fixed in r1p1.
The workaround is to set bit
fix(cpus): workaround for Cortex-A510 erratum 2420992
Cortex-A510 erratum 2420992 is a Cat B erratum that applies only to revisions r1p0 and r1p1, and is fixed in r1p1.
The workaround is to set bit 3 in CPUACTLR3_EL1 which will have no performance impact, but will increase power consumption by 0.3-0.5%.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: Ia76ba2431d76f14c08b95a998806986190d682c3 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| 4592f4ea | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 2218134
Cortex-A510 erratum 2218134 is a Cat B erratum that applies only to revision r1p0 and is fixed in r1p1.
The workaround is to set bit 43 in CPUA
fix(cpus): workaround for Cortex-A510 erratum 2218134
Cortex-A510 erratum 2218134 is a Cat B erratum that applies only to revision r1p0 and is fixed in r1p1.
The workaround is to set bit 43 in CPUACTLR2_EL1 which will correct the instruction fetch stream with no performance impact.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: Ifec40dee2f7e42c56c9ed447b6b1997b170f9453 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| 124ff99f | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 2169012
Cortex-A510 erratum 2169012 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3 and r1p0, and is fixed in r1p1.
This erratum ha
fix(cpus): workaround for Cortex-A510 erratum 2169012
Cortex-A510 erratum 2169012 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3 and r1p0, and is fixed in r1p1.
This erratum has an identical workaround to 1922240 and resolves a similar issue, but that erratum only applies to r0p0 which is not used in any production hardware, so it has been removed.
This workaround has a negligible performance impact.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: Ifdd59c09e84252dc292600630d81d32986fd6c0c Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| d64d4215 | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 2008766
Cortex-A510 erratum 2008766 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
fix(cpus): workaround for Cortex-A510 erratum 2008766
Cortex-A510 erratum 2008766 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
The workaround is to clear the ERXCTLR_EL1.ED bit before power down, which will cause any detected errors during power down to be ignored.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: Id1aa0f2c518a055363c962f9abdb27e1ee8bff18 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|