| 8a131571 | 09-Apr-2025 |
Saivardhan Thatikonda <saivardhan.thatikonda@amd.com> |
fix(arm): typecast operands to match data type
This corrects the MISRA violation C2012-10.3: The value of an expression shall not be assigned to an object with a narrower essential type or of a diff
fix(arm): typecast operands to match data type
This corrects the MISRA violation C2012-10.3: The value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category. The condition is explicitly checked against 0U, appending 'U' and typecasting for unsigned comparison.
Change-Id: I04089721d124a2701e10d3f6e0ed8f82e3f6e0b3 Signed-off-by: Saivardhan Thatikonda <saivardhan.thatikonda@amd.com>
show more ...
|
| 1e8b5354 | 29-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(build): use a standard rule to run the preprocessor
There are a few, functionally identical, ways to call the preprocessor on a non-C file, depending on the file. They differ in subtle, not
refactor(build): use a standard rule to run the preprocessor
There are a few, functionally identical, ways to call the preprocessor on a non-C file, depending on the file. They differ in subtle, not entirely correct, ways - one is missing a dependency to the makefiles, another generates its .d inline, and the prints are different. That has resulted in platforms reimplementing this functionality, making the build brittle - a change to the overall build system doesn't propagate. So add a MAKE_PRE macro that will make a rule with all the bells and whistles to run the preprocessor on an arbitrary file.
This patch converts the arm platforms' cot_descriptors DTS rules. The files are renamed to fit with the build rule and all extra flags are dropped. Those flags are only necessary for building BL2 c files, which will be passed to the output C file. Only the DTS flags are needed for the preprocessing step, which will be passed automatically.
Change-Id: I3c1cc0ecf93b87d828f868214928c1bc9bcb5758 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 500927ef | 29-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(build): remove redundant variables
The PLAT_BL_* family of variables were intended as the platform interface to the build system. Unfortunately, only PLAT_BL_COMMON_SOURCES has caught on and the
fix(build): remove redundant variables
The PLAT_BL_* family of variables were intended as the platform interface to the build system. Unfortunately, only PLAT_BL_COMMON_SOURCES has caught on and the rest remain totally unused. As there is no ongoing effort to change that, those flags are only noise in the makefiles. Remove them to simplify.
Change-Id: I3ad715fa7859a28cf92d3897421f7b88cdea23cc Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 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 ...
|
| fbab861f | 27-May-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "feat(smcc): introduce a new vendor_el3 service for ACS SMC handler" into integration |
| 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 ...
|
| 142ee34e | 30-Apr-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
feat(auth): introducing auth.mk
Introducing authentication specific makefile auth.mk to include common auth source files.
Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com> Change-Id: I
feat(auth): introducing auth.mk
Introducing authentication specific makefile auth.mk to include common auth source files.
Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com> Change-Id: Ifb07c48861fe415d82cb7390c3a5f6e60ba699d9
show more ...
|
| a852fa1d | 21-Feb-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
feat(arm): support boot info handoff and event log
Add support for processing boot arguments via Firmware Handoff on Arm platforms. Update platform hooks to pass boot info to BL31 and BL32 stages.
feat(arm): support boot info handoff and event log
Add support for processing boot arguments via Firmware Handoff on Arm platforms. Update platform hooks to pass boot info to BL31 and BL32 stages.
Enable parsing and dumping of an event log from the transfer list when MEASURED_BOOT is enabled. This allows measured boot testing in the secure world.
Also update BL32 sources to include event log support when TSPD and measured boot are both enabled.
Change-Id: Ia310696d0e6cfe93d756bfb075e9fda08342c0a1 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
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 ...
|
| b30d9043 | 13-Dec-2024 |
Harrison Mutai <harrison.mutai@arm.com> |
feat(arm): port event log to firmware handoff
Support handing off the event log to both the secure and non-secure worlds using the firmware handoff framework. This also needs us to increase the maxi
feat(arm): port event log to firmware handoff
Support handing off the event log to both the secure and non-secure worlds using the firmware handoff framework. This also needs us to increase the maximum allocation for TB-FW configuration to accommodate trusted boot entries.
Change-Id: I9f622b10c3cec2a9ab069f7848b00b1b635bd029 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| 92aa7b42 | 04-Feb-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
chore: fix preprocessor checks
We can also drop the preprocessor check from plat_gic_init - it was introduced because the tsp needed to call this function on gicv2 but not gicv3 and this was the cle
chore: fix preprocessor checks
We can also drop the preprocessor check from plat_gic_init - it was introduced because the tsp needed to call this function on gicv2 but not gicv3 and this was the cleanest way to filter this out. Now that we have the generic driver, the caller has all the tools to cater for this. Callers have been converted so this is redundant.
Also, the FVP observes different behaviour on debug and release builds in regards to the contents of plat_params_from_bl2. Make this explicit so that release builds with ENABLE_ASSERTIONS=1 are possible.
Change-Id: I86959e67460d0c25c558f33c08e6233a8b6eeb7f Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| c5c54e20 | 07-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor: convert arm platforms to use the generic GIC driver
This reduces the code the platforms have to carry and makes their build rules a bit simpler.
The main benefit is that plat_my_core_pos(
refactor: convert arm platforms to use the generic GIC driver
This reduces the code the platforms have to carry and makes their build rules a bit simpler.
The main benefit is that plat_my_core_pos() no longer needs to be called within the driver, helping with performance a bit.
Change-Id: I0b0d1d36d20d67c41c8c9dc14ade11bda6d4a6af Signed-off-by: Boyan Karatotev <boyan.karatotev@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 ...
|
| cb331826 | 12-Dec-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(fvp): use more arm generic code for gicv3
The arm generic implementation for the GIC is quite comprehensive and the fvp's requirements don't diverge too much. Despite that, they completely
refactor(fvp): use more arm generic code for gicv3
The arm generic implementation for the GIC is quite comprehensive and the fvp's requirements don't diverge too much. Despite that, they completely override a lot of code that is effectively reused. Use the generic implementation instead to make it easier to follow and override as little code as possible.
Change-Id: I3474aa970d7fbb91d75c0be6a255bc0da734f860 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| ee656609 | 16-Apr-2025 |
André Przywara <andre.przywara@arm.com> |
Merge changes Id942c20c,Idd286bea,I8917a26e,Iec8c3477,If3c25dcd, ... into integration
* changes: feat(cpufeat): enable FEAT_PAuth to FEAT_STATE_CHECKED perf(cpufeat): centralise PAuth key saving
Merge changes Id942c20c,Idd286bea,I8917a26e,Iec8c3477,If3c25dcd, ... into integration
* changes: feat(cpufeat): enable FEAT_PAuth to FEAT_STATE_CHECKED perf(cpufeat): centralise PAuth key saving refactor(cpufeat): convert FEAT_PAuth setup to C refactor(cpufeat): prepare FEAT_PAuth for FEATURE_DETECTION chore(cpufeat): remove PAuth presence checks feat(cpufeat): enable FEAT_BTI to FEAT_STATE_CHECKED
show more ...
|
| 8d9f5f25 | 02-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpufeat): enable FEAT_PAuth to FEAT_STATE_CHECKED
FEAT_PAuth is the second to last feature to be a boolean choice - it's either unconditionally compiled in and must be present in hardware or it
feat(cpufeat): enable FEAT_PAuth to FEAT_STATE_CHECKED
FEAT_PAuth is the second to last feature to be a boolean choice - it's either unconditionally compiled in and must be present in hardware or it's not compiled in. FEAT_PAuth is architected to be backwards compatible - a subset of the branch guarding instructions (pacia/autia) execute as NOPs when PAuth is not present. That subset is used with `-mbranch-protection=standard` and -march pre-8.3. This patch adds the necessary logic to also check accesses of the non-backward compatible registers and allow a fully checked implementation.
Note that a checked support requires -march to be pre 8.3, as otherwise the compiler will include branch protection instructions that are not NOPs without PAuth (eg retaa) which cannot be checked.
Change-Id: Id942c20cae9d15d25b3d72b8161333642574ddaa Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
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 |
| 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 ...
|
| 23302d4a | 08-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(xlat): remove xlat_mpu
The only platform to use this is fvp_r. As this platform is now gone, so is the need for this library. Support for it never went out of "experimental" so it does not appea
fix(xlat): remove xlat_mpu
The only platform to use this is fvp_r. As this platform is now gone, so is the need for this library. Support for it never went out of "experimental" so it does not appear to be finished.
Change-Id: I76499b92ca4368651330f17dc80803991158cc36 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 307a5333 | 03-Apr-2025 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
fix(arm): resolve misra rule R11.6 violation
Fixed below MISRA violation: - MISRA violation: MC3R1.R11.6: - A cast shall not be performed between a pointer to void and an arithmetic data type.
fix(arm): resolve misra rule R11.6 violation
Fixed below MISRA violation: - MISRA violation: MC3R1.R11.6: - A cast shall not be performed between a pointer to void and an arithmetic data type. (i.e cast from integer to void*) - Fix: - cast via portable and misra compliant type "uintptr_t" and use 0U instead of NULL for comparisons.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: Ie3a7561d9a254027c5364485a1d72fc1320dfcad
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 ...
|
| 4c5ccbf4 | 01-Mar-2025 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(arm): add support for Transfer List creation
This patch introduces Firmware Handoff support for Arm based platforms listed under Firmware_Handoff specification. [https://firmwarehandoff.github.
feat(arm): add support for Transfer List creation
This patch introduces Firmware Handoff support for Arm based platforms listed under Firmware_Handoff specification. [https://firmwarehandoff.github.io/firmware_handoff/main/transfer_list.html]
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: Ie3f30ffe38f809db907b663a8dbf1e48944ec690
show more ...
|
| 89213498 | 13-Mar-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
refactor(arm): simplify early platform setup functions
Refactor `arm_sp_min_early_platform_setup` to accept generic `u_register_r` values to support receiving firmware handoff boot arguments in comm
refactor(arm): simplify early platform setup functions
Refactor `arm_sp_min_early_platform_setup` to accept generic `u_register_r` values to support receiving firmware handoff boot arguments in common code. This has the added benefit of simplifying the interface into common early platform setup.
Change-Id: Idfc3d41f94f2bf3a3a0c7ca39f6b9b0013836e3a Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| 2948d1f8 | 23-Dec-2024 |
Harrison Mutai <harrison.mutai@arm.com> |
fix(arm): reinit secure and non-secure tls
Initializing the transfer list using `transfer_list_ensure` allows reuse of an already initialized transfer list. While this is beneficial when receiving a
fix(arm): reinit secure and non-secure tls
Initializing the transfer list using `transfer_list_ensure` allows reuse of an already initialized transfer list. While this is beneficial when receiving a transfer list and ensuring one exists, it causes issues during a system RESET if the old content of SRAM is not cleared.
To prevent this, at least one step in the reset path must zero intialise the transfer list memory. Unless a previous stage explicitly provides a transfer list via boot arguments, a fresh transfer list should be created.
This change ensures that BL1 and BL31 properly reinitialize the transfer lists, preserving correctness for secure and non-secure handoffs in TF-A.
Change-Id: I3bfaa9e76df932a637031d645e4a22d857a094a5 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|