| 7d5e2e83 | 16-Apr-2026 |
Boyan Karatotev <boyan.karatotev@arm.com> |
Merge changes from topic "mb/partition-uuid-lookup" into integration
* changes: feat(arm): prefer GUID-based GPT partition lookup feat(guid-partition): add type+index GPT lookup |
| d63c2960 | 14-Nov-2025 |
Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
feat(gpt): move gpt support under ENABLE_FEAT_RME
Granule Protection Tables (GPT) library support is enabled only when ENABLE_RMM is set (previously this build option was ENABLE_RME). Since RME rela
feat(gpt): move gpt support under ENABLE_FEAT_RME
Granule Protection Tables (GPT) library support is enabled only when ENABLE_RMM is set (previously this build option was ENABLE_RME). Since RME related support is now enabled using feature detection option ENABLE_FEAT_RME, this patch moves GPT support under ENABLE_FEAT_RME.
This change brings in below benefits: - single TF-A build that works for RME and non-RME systems, when build with ENABLE_FEAT_RME=2 (FEAT_STATE_CHECK) - RMM loading is optional on RME systems - SiP calls that leverages RME features to change the PAS of a memory range from non-secure to secure is supported without need to enable Realm PAS or RMM. - FIRME Granule Management Interface (GMI) ABIs that handles FEAT_RME_GPC2/FEAT_RME_GDI can be enabled without need to enable RMM
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> Change-Id: I88d9d4e0491af2b4ae0307c018f2d4a71ee6693f
show more ...
|
| b0ddba24 | 04-Nov-2025 |
Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
feat(rmmd): replace ENABLE_RME with ENABLE_RMM
RME architectural requirements are now handled under the feature detection option ENABLE_FEAT_RME. However, the existing ENABLE_RME build option perfor
feat(rmmd): replace ENABLE_RME with ENABLE_RMM
RME architectural requirements are now handled under the feature detection option ENABLE_FEAT_RME. However, the existing ENABLE_RME build option performs RMM-specific tasks such as GPT setup, loading the RMM, and enabling RMMD support.
Since ENABLE_RME now only controls RMM-related functionality, rename it to ENABLE_RMM to better reflect its purpose and avoid confusion with ENABLE_FEAT_RME.
For backward compatibility, setting the legacy ENABLE_RME=1 (until it is deprecated) will automatically enable both ENABLE_FEAT_RME and ENABLE_RMM.
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> Change-Id: Iac945bdffe5002161bf1161b81a5aa7abec68192
show more ...
|
| dfdbda02 | 06-Dec-2024 |
Andre Przywara <andre.przywara@arm.com> |
feat(rme): split off ENABLE_FEAT_RME
ENABLE_RME currently controls multiple, distinct aspects of RME support, including forcing BL2 to EL3, ROOT world page table setup, GPT initialization, and full
feat(rme): split off ENABLE_FEAT_RME
ENABLE_RME currently controls multiple, distinct aspects of RME support, including forcing BL2 to EL3, ROOT world page table setup, GPT initialization, and full RMM loading and handling.
While full CCA support requires all of these steps, some systems running on FEAT_RME-capable cores do not need or want an RMM. However, such systems still require TF-A page table entries to set the .NSE bit so that TF-A accesses are correctly attributed to the ROOT world, otherwise, enabling the MMU may cause the system to hang.
To address this, a new build option, ENABLE_FEAT_RME, is introduced. It handles only the .NSE PTE setup and ignores the rest of the RME/RMM initialization. ENABLE_FEAT_RME follows the ENABLE_FEAT_* convention and supports values 0–2, with 2 enabling runtime detection.
Full RME functionality remains gated by ENABLE_RME, which now implicitly enables ENABLE_FEAT_RME, allowing TF-A to run safely on FEAT_RME systems without requiring an RMM.
Change-Id: I8391652842ff2e62a73b61829c6250c3805d4a4e Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| d4e87722 | 20-Mar-2026 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(arm): prefer GUID-based GPT partition lookup
Add platform overrideable GUID defaults for FWU metadata and FIP image lookup. Prefer GUID-based lookup with name fallback and clearer error handlin
feat(arm): prefer GUID-based GPT partition lookup
Add platform overrideable GUID defaults for FWU metadata and FIP image lookup. Prefer GUID-based lookup with name fallback and clearer error handling. Use FWU metadata image GUIDs when present to select active FIP partition
Change-Id: I81c87ad9794dc6e29a4b7f9a121eb2d41c9afa37 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| bec6bd01 | 29-Oct-2025 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
feat(fvp): enable discovery of two Secure Partitions for live activation
This patch helps the LFA host to discover the presence of two Secure Partitions for FVP platform that are capable of being li
feat(fvp): enable discovery of two Secure Partitions for live activation
This patch helps the LFA host to discover the presence of two Secure Partitions for FVP platform that are capable of being live activated. Necessary attributes of these two Secure Partitions are defined to allow the LFA agent to report them to the host when the host performs initial discovery of LFA support.
BREAKING CHANGE: Temporarily failing to build
Change-Id: Ibf0405559543cf19aaf45637c11ba5cf2e3a1619 Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
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 ...
|
| 7cc8f165 | 16-Oct-2025 |
Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
fix(arm): build fails on RESET_TO_BL2=1 and ARM_FW_CONFIG_LOAD_ENABLE=1
Use ARM_FW_CONFIG_BASE and ARM_FW_CONFIG_MAX_SIZE instead of platform macros PLAT_FW_CONFIG_BASE and PLAT_FW_CONFIG_MAX_SIZE w
fix(arm): build fails on RESET_TO_BL2=1 and ARM_FW_CONFIG_LOAD_ENABLE=1
Use ARM_FW_CONFIG_BASE and ARM_FW_CONFIG_MAX_SIZE instead of platform macros PLAT_FW_CONFIG_BASE and PLAT_FW_CONFIG_MAX_SIZE when RESET_TO_BL2 and ARM_FW_CONFIG_LOAD_ENABLE are set to 1.
Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> Change-Id: I0848852250eba5a3328e25cbea4fff413f344327
show more ...
|
| d81b3bc1 | 17-Nov-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
feat(fvp): extend image decryption support for FVP
Add encryption IO layer to be stacked above FIP IO layer for optional encryption of the BL31 and BL32 images in case the ENCRYPT_BL31 or ENCRYPT_BL
feat(fvp): extend image decryption support for FVP
Add encryption IO layer to be stacked above FIP IO layer for optional encryption of the BL31 and BL32 images in case the ENCRYPT_BL31 or ENCRYPT_BL32 build flag is set.
Enable decryption support for FVP through setting the DECRYPTION_SUPPORT build flag. "DECRYPTION_SUPPORT = aes_gcm" is set to perform authenticated decryption using AES-GCM algorithm.
Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com> Change-Id: Iebc3b360b4a0dc0d933b816d28015ac551b79405
show more ...
|
| 4249423b | 28-Oct-2025 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(arm): derive RMM bank size from payload" into integration |
| f8a9aa10 | 28-Oct-2025 |
Mark Dykes <mark.dykes@arm.com> |
Merge changes from topic "mb/lfa-rmm-test" into integration
* changes: fix(rmmd): avoid race conditions in CPU finish fix(arm): move lfa componet header to common and fix the helper chore(lfa)
Merge changes from topic "mb/lfa-rmm-test" into integration
* changes: fix(rmmd): avoid race conditions in CPU finish fix(arm): move lfa componet header to common and fix the helper chore(lfa): rename component_id to lfa_component_id
show more ...
|
| 0204bc8c | 22-Oct-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(css): don't require the GICC frame to be defined on GICv3
It's used for GICv2 operation, which won't happen with v3. CSS will always use USE_GIC_DRIVER with the correct version so we can rely on
fix(css): don't require the GICC frame to be defined on GICv3
It's used for GICv2 operation, which won't happen with v3. CSS will always use USE_GIC_DRIVER with the correct version so we can rely on that to skip passing the GICC frame.
Change-Id: I358b99646f98bd7c6ea398bc8d8900cc80ca15bb Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| dbda614c | 22-Oct-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
fix(arm): derive RMM bank size from payload
Compute the RMM bank size as half of the RMM payload size instead of using a hardcoded value. This removes duplication and keeps the bank size automatical
fix(arm): derive RMM bank size from payload
Compute the RMM bank size as half of the RMM payload size instead of using a hardcoded value. This removes duplication and keeps the bank size automatically in sync with payload size changes.
Change-Id: I064390ec50115929bf6248344bf08a19fbc15344 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 716deb86 | 22-Oct-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
fix(arm): move lfa componet header to common and fix the helper
Move the FVP LFA component definitions to include/plat/arm/common/ so they can be shared by all Arm platforms, and update include path
fix(arm): move lfa componet header to common and fix the helper
Move the FVP LFA component definitions to include/plat/arm/common/ so they can be shared by all Arm platforms, and update include paths accordingly.
On FVP, rename the input parameter to lfa_component_id to match the function declaration, and fix callers to pass the component ID (not image_id) to the prime-complete helper.
Change-Id: Ia1485096819d6523c4bee14c602cbde3c6e144ef Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 92c0f3ba | 10-Oct-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "rmm-lfa" into integration
* changes: feat(arm): handle RMM ep_info during LFA feat(lfa): add helper to check LFA prime completion status feat(lfa): enable LFA of RMM
Merge changes from topic "rmm-lfa" into integration
* changes: feat(arm): handle RMM ep_info during LFA feat(lfa): add helper to check LFA prime completion status feat(lfa): enable LFA of RMM chore(lfa): use standard int return type for prime/activate callbacks feat(rmmd): add warm reset helpers for primary and secondary CPUs
show more ...
|
| e8460bd9 | 02-Oct-2025 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(arm): don't override the gic redistributor frames" into integration |
| 36fbcf4d | 17-Sep-2025 |
Ahmed Azeem <ahmed.azeem@arm.com> |
refactor(arm/common): gate coherency behind flag
Introduce a macro guard so platform coherency functions are only compiled when HW_ASSISTED_COHERENCY is 0 (disabled). Many platforms enable HW-assist
refactor(arm/common): gate coherency behind flag
Introduce a macro guard so platform coherency functions are only compiled when HW_ASSISTED_COHERENCY is 0 (disabled). Many platforms enable HW-assisted coherency by default, so compiling empty definitions is unnecessary.
This refactor removes those empty functions for Arm CSS platforms.
Change-Id: I102ead46960e9da2d8b968f60cbfd3e5e5da1096 Signed-off-by: Ahmed Azeem <ahmed.azeem@arm.com>
show more ...
|
| 1d59d686 | 25-Sep-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(arm): don't override the gic redistributor frames
Patch 75170704c made an oversight - it would provide a default value for the gicr_frames variable but would always set to it, regardless of whet
fix(arm): don't override the gic redistributor frames
Patch 75170704c made an oversight - it would provide a default value for the gicr_frames variable but would always set to it, regardless of whether the platform might want to use something different. The thinking was to provide a default and then let each platform override it, however the order was swapped.
To fix this, put the gic_set_gicr_frames() in bl31_platform_setup() rather than arm_bl31_platform_setup(). This way, platforms that use the default can still enjoy it automatically pulled in from common code, platforms that need fully custom gicr_frames can simply set it, and platforms that override bl31_platform_setup() for unrelated reasons only have to redo the call to gic_set_gicr_frames(). This has a tiny benefit over the old approach in that there will never be 2 gicr_frames arrays.
Change-Id: I734737d3bd37ddbb3286abcdd92c88676c68cdc3 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 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 ...
|
| 745c129a | 09-Jul-2024 |
Andre Przywara <andre.przywara@arm.com> |
feat(rmmd): add RMM_RESERVE_MEMORY SMC handler
At the moment any memory required by an R-EL2 manager (RMM) needs to be known at compile time: that sets the size of the .data and .bss segments. Some
feat(rmmd): add RMM_RESERVE_MEMORY SMC handler
At the moment any memory required by an R-EL2 manager (RMM) needs to be known at compile time: that sets the size of the .data and .bss segments. Some resources depend on the particular machine this will be running on, the prime example is TF-RMM's granule array, which needs to know the maximum memory supported beforehand. Other data structures might depend on the number of CPU cores.
To provide more flexibility, but keep the memory footprint as small as possible, let's introduce some memory reservation SMC. Any RMM implementation can ask EL3 for some memory, and would get the physical address of a usable chunk of memory back. This must happen at RMM boot time, so before the RMM concluded the boot phase with the RMM_BOOT_COMPLETE SMC call. Also there is no provision to free memory again, this would not be needed for the use case of sizing platform resources, and avoids the complexity of a full-fledged memory allocator.
Add the new RMM_RESERVE_MEMORY command to the implementation defined RMM-EL3 SMC interface, both in code and documentation. The actual memory reservation is made a platform implementation, but a simple implementation is provided, which is used for the FVP platform already: it will just pick the next matching chunk of memory from the top end of the RMM carveout. This way the memory reservation will grow down from the end of the carveout, in a stack-like fashion, until it reaches the end of the RMM payload, located at the beginning of the carveout. Since secondary cores might also reserve memory at boot time, there is a spinlock to protect the simple allocation algorithm. Other platforms can choose to provide a more sophisticated reservation algorithm, for instance one taking NUMA locality into account.
This patch just provides the call, at this point there is no obligation to use the feature, although future TF-RMM versions would rely on it.
Change-Id: I096ac8870ee38f44e18850779fcae829a43a8fd1 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 30bbc4fa | 14-Aug-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(drtm): remove plat_system_reset()
The name plat_system_reset() has been in use for some time by a mediatek platform (in plat/mediatek/mt8173/plat_pm.c). However, DRTM added a global hook, that i
fix(drtm): remove plat_system_reset()
The name plat_system_reset() has been in use for some time by a mediatek platform (in plat/mediatek/mt8173/plat_pm.c). However, DRTM added a global hook, that is only implemented on FVP, that conflicts with it. This sometimes results in failed builds.
DRTM remediation ends with a platform reset. However, there is currently an error message printed that this is not supported. In this case, the correct thing to do is to panic and as such this hook is not needed.
Further, the correct sequence to reset the system is different and is only fully implemented by psci_system_reset(). This is a portable implementation supported by a wide variety of platform.
So remove plat_system_reset(). Once DRTM remediation properly supports resetting, the psci_system_reset() function should be used to achieve reset correctly and portably.
Change-Id: Ia4e150c51aeec613838464fbb0e1d0542f19ccab Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 75170704 | 29-Jul-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(gicv3): clarify redistributor base address usage with USE_GIC_DRIVER=3
The GICv3 driver has 2 methods of discovering the redistributors: a) via setting gicr_base - done at boot and assumes
refactor(gicv3): clarify redistributor base address usage with USE_GIC_DRIVER=3
The GICv3 driver has 2 methods of discovering the redistributors: a) via setting gicr_base - done at boot and assumes all GICR frames are contiguous. This is the original method.
b) via gicv3_rdistif_probe() - called from platform code and requires gicr_base == 0. It relaxes the requirement for frames to be contiguous, like in a multichip configuration, and defers the discovery to core bringup. This was introduced later.
Configurations possible with option a) are also possible with option b) with only slightly different behaviour. USE_GIC_DRIVER=3 inherited option b) from plat_gicv3_base.c and as such option a) is unusable. However, it is unclear from code how this should be used. Clarify this by requiring platforms initialise with gic_set_gicr_frames() and adding relevant comments.
Also rename plat_arm_override_gicr_frames() to gic_set_gicr_frames() as this is not plat arm specific and a part of the generic GIC driver.
Change-Id: I61d77211f8e65dc54cf9904069b500d26a06b5a5 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 01907f3f | 04-Jul-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
refactor(arm): unify SPSR retrieval logic
Consolidate platform-specific SPSR setup logic into a single arm_get_spsr() function that accepts an image_id to select between BL32 and BL33. This reduces
refactor(arm): unify SPSR retrieval logic
Consolidate platform-specific SPSR setup logic into a single arm_get_spsr() function that accepts an image_id to select between BL32 and BL33. This reduces duplication and simplifies control over SPSR generation for later stages, particularly BL33.
The SPD remains responsible for setting the SPSR for BL32.
Change-Id: Ibbba708d607e7676989f5c7ceffe33d7bb2195f1 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| d771d57a | 26-Mar-2025 |
Yeoreum Yun <yeoreum.yun@arm.com> |
feat(arm): add pseudo CRB area
To support StandaloneMm with fTPM, add pseudo CRB areas used by fTPM. These areas are allocated: - For Normal world localities (0 ~ 3), allocates NS_CRB at ARM_N
feat(arm): add pseudo CRB area
To support StandaloneMm with fTPM, add pseudo CRB areas used by fTPM. These areas are allocated: - For Normal world localities (0 ~ 3), allocates NS_CRB at ARM_NS_DRAM1_BASE as much as 0x4000. - For Secure world locality (4), allocates S_CRB at the end of HEAP as much as 0x1000.
Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com> Change-Id: I71521a7b418fed4aae5a7d1ae5f8228955776b27
show more ...
|
| 78a6c8ff | 07-Jul-2025 |
Yeoreum Yun <yeoreum.yun@arm.com> |
feat(arm): introduce ARM_SPM_NS_MEM_BASE and move NS buffer
PLAT_SP_IMAGE_NS_BUF_BASE in arm_spm_def.h is located in ARM_AP_TZC_DRAM1_BASE. Because of this, to use PLAT_SP_IMAGE_NS_BUF_BASE in norma
feat(arm): introduce ARM_SPM_NS_MEM_BASE and move NS buffer
PLAT_SP_IMAGE_NS_BUF_BASE in arm_spm_def.h is located in ARM_AP_TZC_DRAM1_BASE. Because of this, to use PLAT_SP_IMAGE_NS_BUF_BASE in normal world, the TZC region configuration is required like this:
0: ARM_AP_TZC_DRAM1_BASE to PLAT_SP_IMAGE_NS_BUF_BASE (secure only) 1: PLAT_SP_IMAGE_NS_BUF_BASE to PLAT_SP_IMAGE_NS_BUF_SIZE (ns and secure) 2: PLAT_SP_IMAGE_NS_BASE + PLAT_SP_IMAGE_NS_BUF_SIZE to ARM_AP_TZC_DRAM1_BASE + ARM_EL3_TZC_DRAM1_END (secure only)
To reduce TZC area for PLAT_SP_IMAGE_NS_BUF_BASE Let add ARM_SPM_NS_MEM_BASE where located in (ARM_AP_TZC_DRAM1_BASE) - 1MB as much as 1MB. and locate PLAT_SP_IMAGE_NS_BUF in this area.
So that reduce the TZC region in ARM_TZC_REGIONS_DEF.
Change-Id: Ia6170f5eec893dde2e3bbd85de46788c4bf35292 Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
show more ...
|