| 291e493d | 04-Jul-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
feat(common): add support for kernel DT handoff convention
TF-A currently supports multiple DT handoff conventions:
1. Firmware Handoff (FH): DT passed in x0, with x1–x3 carrying additional data
feat(common): add support for kernel DT handoff convention
TF-A currently supports multiple DT handoff conventions:
1. Firmware Handoff (FH): DT passed in x0, with x1–x3 carrying additional data. 2. Kernel-compatible handoff (ARM_LINUX_KERNEL_AS_BL33): DT passed in x0, x1–x3 zeroed. 3. Legacy TF-A convention: DT passed in x1, with x0 used for MPIDR or NT_FW_CONFIG.
After discussions with folks in EDK2 and U-Boot, it's clear that there is no strict requirement for placing the DT in x1. Both projects support x0 for Arm platforms. To standardize behavior and support firmware handoff migration, this patch introduces USE_KERNEL_DT_CONVENTION as a configurable build flag. When enabled, the DT will be passed in x0 for BL33.
This aligns TF-A’s behavior with Linux boot expectations and simplifies integration across bootloaders.
Change-Id: I6bd7154fe07cb2e16e25c058f7cf862f9ae007e7 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 ...
|
| cb4ee3e4 | 11-Jul-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(smccc): add SoC name support to SMCCC_ARCH_SOC_ID
This patch adds support for getting the SoC name string using the SMCCC_ARCH_SOC_ID interface. The SoC name query was introduced in SMCCC versi
feat(smccc): add SoC name support to SMCCC_ARCH_SOC_ID
This patch adds support for getting the SoC name string using the SMCCC_ARCH_SOC_ID interface. The SoC name query was introduced in SMCCC version 1.6. It is available only through SMC64 calls.
A new function ID, SMCCC_GET_SOC_NAME, is added. It returns the SoC name as a null-terminated ASCII string, spread across registers X1 to X17 in little endian order. The total length is 136 bytes, including the null byte. Any space after the null terminator is filled with zeros.
A platform hook plat_get_soc_name() is added to return the SoC name. A weak default version is also provided that returns SMC_ARCH_CALL_NOT_SUPPORTED for platforms that do not support this feature.
The name should follow the SMCCC rule that it must not expose any information that is not already reported by the SoC version and revision calls.
Reference: https://developer.arm.com/documentation/den0028/latest/
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: Idc69997c509bcbfb1cecb38ed1003b29627ade4b
show more ...
|
| d90bb650 | 23-Jun-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "build(handoff)!: switch to LibTL submodule" into integration |
| b5d0740e | 13-May-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
build(handoff)!: switch to LibTL submodule
Removes in-tree Transfer List implementation and updates all references to use the external LibTL submodule. Updates include paths, Makefile macros, and pl
build(handoff)!: switch to LibTL submodule
Removes in-tree Transfer List implementation and updates all references to use the external LibTL submodule. Updates include paths, Makefile macros, and platform integration logic to link with LibTL as a static library.
If you cloned TF-A without the `--recurse-submodules` flag, you can ensure that this submodule is present by running:
git submodule update --init --recursive
BREAKING-CHANGE: LibTL is now included in TF-A as a submodule. Please run `git submodule update --init --recursive` if you encounter issues after migrating to the latest version of TF-A.
Change-Id: I1fa31f7b730066c27985d968698e553b00b07c38 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| a7fbcccd | 02-Jun-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): implement platform API for load and auth image
Introduce and implement a stub implementation of `plat_lfa_load_auth_image()` for the FVP platform. For AEM FVP, no actual image loading or
feat(fvp): implement platform API for load and auth image
Introduce and implement a stub implementation of `plat_lfa_load_auth_image()` for the FVP platform. For AEM FVP, no actual image loading or authentication is required as of now, as images are assumed to be pre-loaded and authenticated.
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: I82e51f5d18db6d5b9c61f9081b451619d761abe8
show more ...
|
| b4cbf508 | 01-Jun-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): implement platform API for LFA cancel operation
Introduce and implement a stub implementation of `plat_lfa_cancel()` for the FVP platform. This function will later be expanded to handle c
feat(fvp): implement platform API for LFA cancel operation
Introduce and implement a stub implementation of `plat_lfa_cancel()` for the FVP platform. This function will later be expanded to handle component-specific LFA cancellation logic.
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: I9690b011313bbe0fd458cbe47f32445f8d2d79fa
show more ...
|
| 357079c7 | 01-Jun-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): implement platform API for LFA activation pending check
Introduce and implement `is_plat_lfa_activation_pending()' API for the FVP platform. Currently, only the RMM component is marked as
feat(fvp): implement platform API for LFA activation pending check
Introduce and implement `is_plat_lfa_activation_pending()' API for the FVP platform. Currently, only the RMM component is marked as pending.
Change-Id: I6cc84c65ba5fe1b47cc65cbeeb349aac9235533a Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| b100e91d | 30-May-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): initialize LFA component activators in platform layer
Update the FVP platform's LFA component table to populate the 'activator' and 'activation_pending' by introducing fields in plat_lfa_
feat(fvp): initialize LFA component activators in platform layer
Update the FVP platform's LFA component table to populate the 'activator' and 'activation_pending' by introducing fields in plat_lfa_component_info_t. - 'activator': function pointers for component-specific activation logic - 'activation_pending': tracks whether the component's activation is pending
Set the activator function pointers for supported components: - BL31 via get_bl31_activator() - RMM (if RME is enabled) via get_rmm_activator()
This allows the LFA service to invoke component-specific prime and activate callbacks through platform-registered hooks.
Change-Id: Ifd997a8b8cab209c25aabb2e9d4eab59e909ea4d Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 3bb52661 | 30-May-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): implement LFA get components API
Introduce platform-specific implementation of `plat_lfa_get_components()` for the Arm FVP platform. This function returns LFA component metadata, includin
feat(fvp): implement LFA get components API
Introduce platform-specific implementation of `plat_lfa_get_components()` for the Arm FVP platform. This function returns LFA component metadata, including component ID, UUID for each supported firmware image and number of components.
Change-Id: I9e7cbce5865becf3e4babcb770bc5eb3b69a0be8 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| f69f5512 | 30-Apr-2025 |
Nandan J <Nandan.J@arm.com> |
feat(smcc): introduce a new vendor_el3 service for ACS SMC handler
In preparation to add support for the Architecture Compliance Suite SMC services, reserve a SMC ID and introduce a handler function
feat(smcc): introduce a new vendor_el3 service for ACS SMC handler
In preparation to add support for the Architecture Compliance Suite SMC services, reserve a SMC ID and introduce a handler function. Currently, an empty placeholder function is added and future support will be introduced for the handler support.
More info on System ACS, please refer below link, https://developer.arm.com/Architectures/Architectural%20Compliance%20Suite
Signed-off-by: Nandan J <Nandan.J@arm.com> Change-Id: Ib13ccae9d3829e3dcd1cd33c4a7f27efe1436d03
show more ...
|
| 9018b7b8 | 21-Mar-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
fix(arm): update tsp_early_platform_setup prototype
The prototype for tsp_early_platform_setup has been redefined. Update the platform implementation to match the new function signature and ensure c
fix(arm): update tsp_early_platform_setup prototype
The prototype for tsp_early_platform_setup has been redefined. Update the platform implementation to match the new function signature and ensure compatibility with the updated TSP interface. Also, update the prototype for arm_tsp_early_platform_setup to make use of these arguments in common code.
Change-Id: I3831776be58d6ebf672890d0f30bbbd1780976f7 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| 5d893410 | 07-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(gic): promote most of the GIC driver to common code
More often than not, Arm based systems include some revision of a GIC. There are two ways of adding support for them in platform code - c
refactor(gic): promote most of the GIC driver to common code
More often than not, Arm based systems include some revision of a GIC. There are two ways of adding support for them in platform code - calling the top-level helpers from plat/arm/common/arm_gicvX.c or by using the driver directly. Both of these methods allow for a high degree of customisation - most functions are defined to be weak and there are no calls to any of them in generic code.
As it turns out, requirements around those GICs are largely the same. Platforms that use arm_gicvX.c use the helpers identically among each other. Platforms that use the driver directly tend to end up with calls that look a lot like the arm_gicvX.c helpers and the weakness of the functions are never exercised.
All of this results in a lot of code duplication to do what is essentially the same thing. Even though it's not a lot of code, when multiplied among many platforms it becomes significant and makes refactoring it quite difficult. It's also bug prone since the steps are a little convoluted and things are likely to work even with subtle errors (see 50009f61177421118f42d6a000611ba0e613d54b).
So promote as much of the GIC to be called from common code. Do the setup in bl31_main() and have every PSCI method do the state management directly instead of delegating it to the platform hooks. We can base this implementation on arm_gicvX.c since they already offer logical names and have worked quite well so far with minimal changes.
The main benefit of doing this is reduced code duplication. If we assume that, outside of some platform setup, GIC management is identical, then a platform can add support by telling the build system, regardless of GIC revision. The other benefit is performance - BL31 and PSCI already know the core_pos and they can pass it as an argument instead of having to call plat_my_core_pos(). Now, the only platform specific GIC actions necessary are the saving and restoring of context on entering and exiting a power domain. The PSCI library does not keep track of this so it is unable perform it itself. The routines themselves are also provided.
For compatibility all of this is hidden behind a build flag. Platforms are encouraged to adopt this driver, but it would not be practical to convert and validate every GIC based platform.
This patch renames the functions in question to follow the gic_<function>() convention. This allows the names to be version agnostic.
Finally, drop the weak definitions - they are unused, likely to remain so, and can be added back if the need arises.
Change-Id: I5b5267f4b72f633fb1096400ec8e4b208694135f Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| ec56d595 | 15-Apr-2025 |
Soby Mathew <soby.mathew@arm.com> |
Merge changes from topic "sm/rpkm" into integration
* changes: docs(rmmd): document the EL3-RMM IDE KM Interface feat(trp): test el3-rmm ide km interface feat(rmmd): el3-rmm ide key management
Merge changes from topic "sm/rpkm" into integration
* changes: docs(rmmd): document the EL3-RMM IDE KM Interface feat(trp): test el3-rmm ide km interface feat(rmmd): el3-rmm ide key management interface
show more ...
|
| 2b478258 | 14-Apr-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "hm/handoff-aarch32" into integration
* changes: feat(fvp): support AArch32 booting with handoff feat(arm): support AArch32 booting with handoff |
| 2132c707 | 14-Mar-2025 |
Sona Mathew <sonarebecca.mathew@arm.com> |
feat(rmmd): el3-rmm ide key management interface
Patch introduces the EL3-RMM SMC Interface for Root Port Key management as per RFC discussed here: https://github.com/TF-RMM/tf-rmm/wiki/RFC:-EL3-RMM
feat(rmmd): el3-rmm ide key management interface
Patch introduces the EL3-RMM SMC Interface for Root Port Key management as per RFC discussed here: https://github.com/TF-RMM/tf-rmm/wiki/RFC:-EL3-RMM-IDE-KM-Interface
Three IDE Key management smc calls have been added: - RMM_IDE_KEY_PROG() - RMM_IDE_KEY_SET_GO() - RMM_IDE_KEY_SET_STOP() - RMM_IDE_KM_PULL_RESPONSE()
Due to the absence of root port support in FVP, we are currently adding placeholders in this patch for the platform APIs to return success irrespective of the arguments being passed by the caller(Realms). The SMCs are guarded by `RMMD_ENABLE_IDE_KEY_PROG` build flag and is disabled by default. We expect that once the SMCs are stabilized, this build flag will not be required anymore.
Change-Id: I9411eb7787dac2a207bd14710d251503bd9626ce Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| abdb953b | 16-Dec-2024 |
Harrison Mutai <harrison.mutai@arm.com> |
feat(arm): support AArch32 booting with handoff
Configre SP-MIN to receive information via the firmare handoff framework. In BL1 and BL2, select the 32-bit variants of the SRAM layout and entry poin
feat(arm): support AArch32 booting with handoff
Configre SP-MIN to receive information via the firmare handoff framework. In BL1 and BL2, select the 32-bit variants of the SRAM layout and entry point info to enable booting in aarch32 mode. In SP-MIN process expected data directly from the transfer list in secure memory.
Change-Id: If0417cdd4c47b772332eb6fd4b71ef0ea474f0fa Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| 96e46f58 | 03-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(platforms): remove platform_core_pos_helper()
Its last user was removed some time ago so it is no longer necessary.
Change-Id: I28264367abd2902ed0d3f207f686538a82a44eba Signed-off-by: Boyan Kar
fix(platforms): remove platform_core_pos_helper()
Its last user was removed some time ago so it is no longer necessary.
Change-Id: I28264367abd2902ed0d3f207f686538a82a44eba Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 2cadf21b | 12-Mar-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(plat): remove fvp_r
The platform has not been maintained for some years and is generally broken. Remove it to avoid confusion.
Change-Id: I93d832d51e114689ec79969af5d96071a03f4a88 Signed-off-by
fix(plat): remove fvp_r
The platform has not been maintained for some years and is generally broken. Remove it to avoid confusion.
Change-Id: I93d832d51e114689ec79969af5d96071a03f4a88 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| b6e6e2e6 | 20-Mar-2025 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
refactor(arm): simplify early platform setup function in BL31
Refactor `arm_bl31_early_platform_setup` to accept generic u_register_t values, enabling support for firmware handoff boot arguments in
refactor(arm): simplify early platform setup function in BL31
Refactor `arm_bl31_early_platform_setup` to accept generic u_register_t values, enabling support for firmware handoff boot arguments in common code. This simplifies the interface for early platform setup.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: Iff20300d2372e1a9825827ddccbd1b3bc6751e40
show more ...
|
| 8187b95e | 13-Mar-2025 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
refactor(arm): simplify early platform setup function in BL2
Refactor `arm_bl2_early_platform_setup` to accept generic u_register_t values, enabling support for firmware handoff boot arguments in co
refactor(arm): simplify early platform setup function in BL2
Refactor `arm_bl2_early_platform_setup` to accept generic u_register_t values, enabling support for firmware handoff boot arguments in common code. This simplifies the interface for early platform setup.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: Ie0dbe4d32bbef22bd185fdafe50091a2ea5f550f
show more ...
|
| ca3f2eee | 26-Mar-2025 |
Soby Mathew <soby.mathew@arm.com> |
Merge "feat(rmmd): verify FEAT_MEC present before calling plat hoook" into integration |
| 609ada96 | 24-Mar-2025 |
Juan Pablo Conde <juanpablo.conde@arm.com> |
feat(rmmd): verify FEAT_MEC present before calling plat hoook
Some platforms do not support FEAT_MEC. Hence, they do not provide an interface to update the update of the key corresponding to a MECID
feat(rmmd): verify FEAT_MEC present before calling plat hoook
Some platforms do not support FEAT_MEC. Hence, they do not provide an interface to update the update of the key corresponding to a MECID.
This patch adds a condition in order to verify FEAT_MEC is present before calling the corresponding platform hook, thus preventing it from being called when the platform does not support the feature.
Change-Id: Ib1eb9e42f475e27ec31529569e888b93b207148c Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com>
show more ...
|
| 518b278b | 24-Mar-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "hm/handoff-aarch32" into integration
* changes: refactor(arm): simplify early platform setup functions feat(bl32): enable r3 usage for boot args feat(handoff): add li
Merge changes from topic "hm/handoff-aarch32" into integration
* changes: refactor(arm): simplify early platform setup functions feat(bl32): enable r3 usage for boot args feat(handoff): add lib to sp-min sources feat(handoff): add 32-bit variant of SRAM layout feat(handoff): add 32-bit variant of ep info fix(aarch32): avoid using r12 to store boot params fix(arm): reinit secure and non-secure tls refactor(handoff): downgrade error messages
show more ...
|