| 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 ...
|
| 95230492 | 03-Feb-2026 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(gic): init the GIC before the platform with a hook
While GIC setup is generic across platforms, its usage is not. Some platforms won't use it at EL3, while others need to configure interrupts (l
fix(gic): init the GIC before the platform with a hook
While GIC setup is generic across platforms, its usage is not. Some platforms won't use it at EL3, while others need to configure interrupts (like RAS) in the standard platform hooks. To do that, the GIC needs to be set up and ready to use before calling the platform hooks but currently that is only done after. Annoyingly, a handful of platforms need to set their GIC up before initialising it necessitating the platform hooks to be called before GIC init.
This patch resolves this contradiction by moving the general GIC setup calls to before the platform hooks and adding a GIC-specific platform hook just before GIC per CPU init. This way both types of platforms can do their business at the same time.
Change-Id: I361f587ab4603162ee880addb074800cbbb97b49 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 34b723ab | 25-Feb-2026 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "fix(mhu): relax 4-byte align in buffer size" into integration |
| e2504d43 | 16-Feb-2026 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix: remove unused scu driver
Patch 19d6b6b776e2628fadd72b18f342bdedcd7c5b57 removed the A5DS platform which was the only user of this driver. Remove it too as it is now dead code.
Change-Id: Iac73
fix: remove unused scu driver
Patch 19d6b6b776e2628fadd72b18f342bdedcd7c5b57 removed the A5DS platform which was the only user of this driver. Remove it too as it is now dead code.
Change-Id: Iac737e868e3cc15d955ee8b7de2eed2a7d99cff0 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 3c2ce65d | 03-Feb-2026 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(mhu): relax 4-byte align in buffer size
This is a port of patch cee0d3649 from TF-M. It is functionally identical and the original commit message follows:
The MHU wrapper handles the data from
fix(mhu): relax 4-byte align in buffer size
This is a port of patch cee0d3649 from TF-M. It is functionally identical and the original commit message follows:
The MHU wrapper handles the data from and to the driver with a 4-byte alignment. This may not fit the caller, which may need to transfer a buffer or arbitrary size. Add some logic to internally handle the case where the buffer size is not multiple of 4 bytes.
Change-Id: I07210385940f4e2de0728ae9235823e516d224f7 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 479e2648 | 27-Nov-2025 |
Jackson Cooper-Driver <jackson.cooper-driver@arm.com> |
feat(sfcp): add SFCP stack and PSA call
Add SFCP stack from trusted-firmware-m commit 8eb72a3bc5cc. SFCP is the Simple Firmware Communication Protocol, which is a more substantial software stack des
feat(sfcp): add SFCP stack and PSA call
Add SFCP stack from trusted-firmware-m commit 8eb72a3bc5cc. SFCP is the Simple Firmware Communication Protocol, which is a more substantial software stack designed to replace the existing RSE comms (and indeed wider communication between firmware components in the system). It has support for both polling mode and interrupt driver communication handling, and is able to support any underlying transport (this patch adds MHU only). It requires a static routing layout between system components.
This patch adds the link layer (with support for the MHU transport), top-level SFCP API implementation and the implementation of PSA call making use of the SFCP API.
Note that encryption support is not implemented and only the stub encryption implementation is added in this patch. This can be implemented when TF-A needs it.
The sfcp_link_hal.c implementation is the same as that in trusted-firmware-m, and it makes use of the MHU V2 and V3 drivers directly. This is possible as the underlying MHU driver APIs is the same in trusted-firmware-m and trusted-firmware-a.
Change-Id: I2318ea4bdb4e533b8a4a5000040aec0635a83857 Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
show more ...
|
| a6d29969 | 25-Nov-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(gicv5): align IWB_WDOMAINR to the EAC spec
The offset changed from 0x6000 to 0x8000.
Change-Id: I3a95e16c5379e2bb200a1ffaf40e3bae73288c5a Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> |
| 1f866fc9 | 18-Sep-2025 |
Amr Mohamed <amr.mohamed@arm.com> |
feat(dsu): enable PMU registers access at EL1
- Disable trapping of write accesses to DSU cluster PMU registers at EL3 and EL2. - Clear the SPME bit in CLUSTERPMMDCR_EL3 to prohibit PMU event co
feat(dsu): enable PMU registers access at EL1
- Disable trapping of write accesses to DSU cluster PMU registers at EL3 and EL2. - Clear the SPME bit in CLUSTERPMMDCR_EL3 to prohibit PMU event counting in the secure state.
Change-Id: If3eb6e997330ae86f45760e0e862c003861f3d66 Signed-off-by: Amr Mohamed <amr.mohamed@arm.com>
show more ...
|
| 0d65d5a4 | 19-Feb-2025 |
David Hu <david.hu2@arm.com> |
feat(gicv3): add GIC-720AE model id
Add GIC-720AE model id to power up its Redistributor in BL31 GIC initialization. No use case so far for multichip support on GIC-720AE.
Change-Id: Id6ca8144b0c02
feat(gicv3): add GIC-720AE model id
Add GIC-720AE model id to power up its Redistributor in BL31 GIC initialization. No use case so far for multichip support on GIC-720AE.
Change-Id: Id6ca8144b0c02557ba7569a536cece37e4c1fe98 Signed-off-by: David Hu <david.hu2@arm.com> Signed-off-by: Ahmed Azeem <ahmed.azeem@arm.com>
show more ...
|
| b32a1111 | 26-Aug-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "xlnx_misra_fix_gen_gicv3" into integration
* changes: fix(gicv3): typecast operands to match data type fix(gicv3): add missing curly braces fix(gicv3): fix misra viol
Merge changes from topic "xlnx_misra_fix_gen_gicv3" into integration
* changes: fix(gicv3): typecast operands to match data type fix(gicv3): add missing curly braces fix(gicv3): fix misra violation 12.1 fix(gicv3): match function definition and declaration fix(gicv3): typecast operands to match data type
show more ...
|
| eaa454ac | 17-Mar-2025 |
Saivardhan Thatikonda <saivardhan.thatikonda@amd.com> |
fix(gicv3): 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 di
fix(gicv3): 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: Id802961c24a57eea7dd928e2278d015a8747a4c5 Signed-off-by: Saivardhan Thatikonda <saivardhan.thatikonda@amd.com>
show more ...
|
| 6445c834 | 15-Mar-2024 |
Peng Fan <peng.fan@nxp.com> |
feat(scmi): add base protocol agent API
Support protocol attributes and discover agents
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jacky Bai <ping.bai@nxp.com> Change-Id: I3879f703ec61
feat(scmi): add base protocol agent API
Support protocol attributes and discover agents
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jacky Bai <ping.bai@nxp.com> Change-Id: I3879f703ec6160bd794f48e3c41718ecce0ec88a
show more ...
|
| e8a96bfa | 30-Sep-2023 |
Peng Fan <peng.fan@nxp.com> |
feat(scmi): update version to 3.0
Update version to 3.0 to align with latest scmi spec implementation.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Jacky Bai <ping.bai@nxp.com> Change-
feat(scmi): update version to 3.0
Update version to 3.0 to align with latest scmi spec implementation.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Jacky Bai <ping.bai@nxp.com> Change-Id: I845e8863ca6e757b1da6f30833e6ec10e21b0667
show more ...
|
| 3d7caf47 | 24-Apr-2024 |
Maheedhar Bollapalli <maheedharsai.bollapalli@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: I7a2565ce6b8beb71dc9c711327ab72ce825111cc Signed-off-by: Nithin G <nithing@amd.com> Signed-off-by: Maheedhar Bollapalli <maheedharsai.bollapalli@amd.com>
show more ...
|
| d52ff2b3 | 07-May-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(dsu): support power control and autonomous powerdown config
This patch allows platforms to enable certain DSU settings to ensure memory retention and control over cache power requests. We also
feat(dsu): support power control and autonomous powerdown config
This patch allows platforms to enable certain DSU settings to ensure memory retention and control over cache power requests. We also move the driver out of css into drivers/arm. Platforms can configure the CLUSTERPWRCTLR and CLUSTERPWRDN registers [1] to improve power efficiency.
These registers enable finer-grained control of DSU power state transitions, including powerdown and retention.
IMP_CLUSTERPWRCTLR_EL1 provides: - Functional retention: Allows configuration of the duration of inactivity before the DSU uses CLUSTERPACTIVE to request functional retention.
- Cache power request: These bits are output on CLUSTERPACTIVE[19:16] to indicate to the power controller which cache portions must remain powered.
IMP_CLUSTERPWRDN_EL1 includes: - Powerdown: Triggers full cluster powerdown, including control logic.
- Memory retention: Requests memory retention mode, keeping L3 RAM contents while powering off the rest of the DSU.
The DSU-120 TRM [2] provides the full field definitions, which are used as references in the `dsu_driver_data` structure.
References: [1]: https://developer.arm.com/documentation/100453/latest/ [2]: https://developer.arm.com/documentation/102547/0201/?lang=en
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I2eba808b8f2a27797782a333c65dd092b03208fe
show more ...
|
| e2e90fa1 | 13-Feb-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(fvp): add GICv5 support
Factors out GICv3 specific code and replace it with GICv5. This can be selected with FVP_USE_GIC_DRIVER=FVP_GICV5. Specifically, the FCONF logic does not apply to GICv5
feat(fvp): add GICv5 support
Factors out GICv3 specific code and replace it with GICv5. This can be selected with FVP_USE_GIC_DRIVER=FVP_GICV5. Specifically, the FCONF logic does not apply to GICv5 as the bindings are completely different.
This patch does not include a device tree. This will be added at a later date.
Change-Id: Ifd0c7b4e0bc2ea1e53a6779ab4c50c4aec39dafb Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 4db6bf9f | 05-Feb-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(gicv5): probe components
Asserts that the platform configuration is correct. No dynamic discovery so only done in debug builds.
Change-Id: I56763cb422dcaa4a816a619ab4acfc6946427c64 Signed-off-
feat(gicv5): probe components
Asserts that the platform configuration is correct. No dynamic discovery so only done in debug builds.
Change-Id: I56763cb422dcaa4a816a619ab4acfc6946427c64 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 71799209 | 09-Dec-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(gicv5): initialise the IWB
Same idea as the IRS - do IWB initialisation that's only accessible from EL3 when it is the MPPAS. Relies on the platform to provide wire domain assignments and trig
feat(gicv5): initialise the IWB
Same idea as the IRS - do IWB initialisation that's only accessible from EL3 when it is the MPPAS. Relies on the platform to provide wire domain assignments and triggers as well as to map the config frame in device nGnRnE memory. All wires will default to the NS domain and the platform can override this.
Change-Id: I93aec5809aec4328d1cba832c2c6e5891e398e5b Co-developed-by: Sascha Bischoff <sascha.bischoff@arm.com> Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| dfb37a2d | 09-Dec-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(gicv5): initialise the IRS
Do IRS initialisation that's only accessible from the EL3 interrupt domain. Relies on the platform to provide SPI domain assignments and trigger modes as well as to m
feat(gicv5): initialise the IRS
Do IRS initialisation that's only accessible from the EL3 interrupt domain. Relies on the platform to provide SPI domain assignments and trigger modes as well as to map the config frame in device nGnRnE memory. All wires will default to NS and the platform may override this.
Change-Id: Icbd43503753cd76fd3d80ed47eba6926494bc323 Co-developed-by: Sascha Bischoff <sascha.bischoff@arm.com> Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 82b228ba | 09-Dec-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(gicv5): assign interrupt sources to appropriate security states
Assign the PPI interrupts we commonly have in the device tree to the NS domain. This is a short-term solution that allows Linux t
feat(gicv5): assign interrupt sources to appropriate security states
Assign the PPI interrupts we commonly have in the device tree to the NS domain. This is a short-term solution that allows Linux to fully boot. This is expected to be fully replaced with context management when adding world switching support as some of these are expected to be shared between worlds.
Change-Id: I59a7b5a63f878c9a717ef81e977be7133a402f3f Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 13b62814 | 20-Nov-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(gicv5): add a barebones GICv5 driver
This is the absolute minimum that's needed to compile an NS-only build end exit out of EL3. The GIC is not used and/or configured in any way but all the nec
feat(gicv5): add a barebones GICv5 driver
This is the absolute minimum that's needed to compile an NS-only build end exit out of EL3. The GIC is not used and/or configured in any way but all the necessary hooks are populated.
Notably, SCR_EL3.FIQ becomes RES1 as GICv5 behaves in a similar manner to a GICv3 with FIQ set.
Change-Id: Idae52b9df97f4ca2996b2dcd1e5efc45478a43f2 Co-developed-by: Achin Gupta <achin.gupta@arm.com> Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 8cef63d6 | 07-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(gicv5): add support for building with gicv5
The Generic Interrupt Controller v5 (GICv5) is the next generation of Arm interrupt controllers. It is a clean slate design and has native support fo
feat(gicv5): add support for building with gicv5
The Generic Interrupt Controller v5 (GICv5) is the next generation of Arm interrupt controllers. It is a clean slate design and has native support for the latest Armv9 features. As such it is entirely backwards incompatible with GICv3/v4.
This patch adds the necessary boilerplate to select a build with GICv5. The GIC has always had two parts. BL31 deals directly with the CPU interface while platform code is responsible for managing the IRI. In v5 this split is formalised and the CPU interface, FEAT_GCIE, may be implemented on its own. So reflect this split in our code with ENABLE_FEAT_GCIE which only affects BL31 and the GICv5 IRI lies in the generic GIC driver.
No actual functionality yet.
Change-Id: I97a0c3ba708877c213e50e7ef148e3412aa2af90 Co-developed-by: Achin Gupta <achin.gupta@arm.com> 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 ...
|
| 2a36dee8 | 01-Mar-2025 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(tc): port BL2-BL31 interface to firmware handoff framework
Adding support for this framework at the handoff boundary between firmware stage BL2 and BL31 on TC.
Signed-off-by: Jayanth Dodderi C
feat(tc): port BL2-BL31 interface to firmware handoff framework
Adding support for this framework at the handoff boundary between firmware stage BL2 and BL31 on TC.
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: I8e29b859e57a732e53f7532a5869ed4c8665b161
show more ...
|