| b3bcfd12 | 14-Aug-2025 |
Andre Przywara <andre.przywara@arm.com> |
feat(cpufeat): enable FEAT_PFAR support
Implement support for FEAT_PFAR, which introduces the PFAR_ELx system register, recording the faulting physical address for some aborts. Those system register
feat(cpufeat): enable FEAT_PFAR support
Implement support for FEAT_PFAR, which introduces the PFAR_ELx system register, recording the faulting physical address for some aborts. Those system registers are trapped by the SCR_EL3.PFARen bit, so set the bit for the non-secure world context to allow OSes to use the feature.
This is controlled by the ENABLE_FEAT_PFAR build flag, which follows the usual semantics of 2 meaning the feature being runtime detected. Let the default for this flag be 0, but set it to 2 for the FVP.
Change-Id: I5c9ae750417e75792f693732df3869e02b6e4319 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| aa05796e | 15-Oct-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): enable FEAT_AIE support" into integration |
| cc2523bb | 14-Aug-2025 |
Andre Przywara <andre.przywara@arm.com> |
feat(cpufeat): enable FEAT_AIE support
Implement support for FEAT_AIE, which introduces the AMAIR2_ELx and MAIR2_ELx system registers, extending the memory attributes described by {A}MAIR_ELx. Those
feat(cpufeat): enable FEAT_AIE support
Implement support for FEAT_AIE, which introduces the AMAIR2_ELx and MAIR2_ELx system registers, extending the memory attributes described by {A}MAIR_ELx. Those system registers are trapped by the SCR_EL3.AIEn bit, so set the bit for the non-secure world context to allow OSes to use the feature.
This is controlled by the ENABLE_FEAT_AIE build flag, which follows the usual semantics of 2 meaning the feature being runtime detected. Let the default for this flag be 0, but set it to 2 for the FVP.
Change-Id: Iba2011719013a89f9cb3a4317bde18254f45cd25 Signed-off-by: Andre Przywara <andre.przywara@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 ...
|
| 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 ...
|
| 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 |
| dd87b735 | 28-Aug-2025 |
J-Alves <joao.alves@arm.com> |
feat(ff-a): bump SPMD FF-A version
The Hafnium SPM version bumped to FF-A v1.3, alongside the TF-A SPMD. EL3 SPMC was kept under the v1.2 version with its own set of FFA_VERSION_SPMC_MAJOR/MINOR mac
feat(ff-a): bump SPMD FF-A version
The Hafnium SPM version bumped to FF-A v1.3, alongside the TF-A SPMD. EL3 SPMC was kept under the v1.2 version with its own set of FFA_VERSION_SPMC_MAJOR/MINOR macros.
Signed-off-by: J-Alves <joao.alves@arm.com> Change-Id: I0494738b9978ad72b3316a24d7811096c53f952b
show more ...
|
| 24804eeb | 15-Sep-2025 |
Soby Mathew <soby.mathew@arm.com> |
Merge changes I32c5be5d,I15a652a0 into integration
* changes: fix(qemu): add reason parameter to MEC update refactor(rmmd): modify MEC update call to meet FIRME |
| 00e62ff9 | 03-Sep-2025 |
Juan Pablo Conde <juanpablo.conde@arm.com> |
refactor(rmmd): modify MEC update call to meet FIRME
Previous version of MEC refresh call was not compliant with FIRME [1]. This patch modifies the call so it is compliant with the specification.
[
refactor(rmmd): modify MEC update call to meet FIRME
Previous version of MEC refresh call was not compliant with FIRME [1]. This patch modifies the call so it is compliant with the specification.
[1] https://developer.arm.com/documentation/den0149/1-0alp0/
Change-Id: I15a652a021561edca16e79d127e6f08975cf1361 Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com>
show more ...
|
| b3dcd505 | 06-Feb-2025 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
feat(spmd): support for FFA_ABORT invocation from SWd
SPMC can propagate abort handling to SPMD when an SP specifies suitable abort action in its manifest. SPMD panics upon receiving FFA_ABORT from
feat(spmd): support for FFA_ABORT invocation from SWd
SPMC can propagate abort handling to SPMD when an SP specifies suitable abort action in its manifest. SPMD panics upon receiving FFA_ABORT from SPMC.
Change-Id: I3b573fdfc203c3446b1d629f579e333162d5ff72 Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
show more ...
|
| 9b446a2d | 08-Sep-2025 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "feat(spmd): add FFA_NS_RES_INFO_GET ABI" into integration |
| ffbe8600 | 08-Sep-2025 |
Yann Gautier <yann.gautier@st.com> |
Merge "feat(el3-spmc): parse and report VM availability messages" into integration |
| 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 ...
|
| ce299f95 | 08-Feb-2025 |
Andrei Homescu <ahomescu@google.com> |
feat(el3-spmc): parse and report VM availability messages
Parse vm-availability-messages from the SP manifest and report them with FFA_PARTITION_INFO_GET.
Change-Id: I3494959527644795a1a729ff3cb505
feat(el3-spmc): parse and report VM availability messages
Parse vm-availability-messages from the SP manifest and report them with FFA_PARTITION_INFO_GET.
Change-Id: I3494959527644795a1a729ff3cb505aab1ba9e8c Signed-off-by: Andrei Homescu <ahomescu@google.com>
show more ...
|
| a357d157 | 28-Aug-2025 |
Sona Mathew <SonaRebecca.Mathew@arm.com> |
feat(smccc): enable support for FEAT_MEC
Add SCR_EL3.FEAT_MEC bit to the SMCCC_ARCH_FEATURE_AVAILABILITY bitmask to allow RMM to query MEC support.
Change-Id: I2c2130fc4d61eb1a14124931c88e323c82be7
feat(smccc): enable support for FEAT_MEC
Add SCR_EL3.FEAT_MEC bit to the SMCCC_ARCH_FEATURE_AVAILABILITY bitmask to allow RMM to query MEC support.
Change-Id: I2c2130fc4d61eb1a14124931c88e323c82be7924 Signed-off-by: Sona Mathew <SonaRebecca.Mathew@arm.com>
show more ...
|
| 08f9ba5b | 02-Apr-2025 |
J-Alves <joao.alves@arm.com> |
feat(spmd): add FFA_NS_RES_INFO_GET ABI
Call should be forwarded to the SPMC from the NWd, but not the other way around.
Signed-off-by: J-Alves <joao.alves@arm.com> Change-Id: Ic0951ffc6610c31f94fe
feat(spmd): add FFA_NS_RES_INFO_GET ABI
Call should be forwarded to the SPMC from the NWd, but not the other way around.
Signed-off-by: J-Alves <joao.alves@arm.com> Change-Id: Ic0951ffc6610c31f94fec5fd38f07a8081f35d94
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 ...
|
| 985b6a6b | 17-Jul-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cm): disable SPE/TRBE correctly
SPE and TRBE are unusual features. They have multi-bit enables whose function is not immediately apparent and disabling them is not straightforward.
While attemp
fix(cm): disable SPE/TRBE correctly
SPE and TRBE are unusual features. They have multi-bit enables whose function is not immediately apparent and disabling them is not straightforward.
While attempting to figure this out, the disables were made a mess of. Patch fc7dca72b began changing the owning security state of SPE and TRBE. This was first used in patch 79c0c7fac0 with calls to spe_disable() and trbe_disbale(). However, patch 13f4a2525 reverted the security state ownership, making the spe_disable() and trbe_disable() redundant and their comments incorrect - the DoS protection is achieved by the psb/tsb barriers on context switch, introduces separately in f80887337 and 73d98e375.
Those patches got the behaviour full circle to what it was in fc7dca72b so the disables can be fully removed for clarity.
However, the original method for disabling these features is not fully correct - letting the "disabled" state be all zeroes made the features seem enabled for secure world but they would trap. That is not a problem while secure world doesn't use them, but could lead to some confusing debugging in the future. NS and Realm worlds were not affected. This patch fully establishes the pattern for SPE and TRBE's enablement, documents it, and implements it such.
The description comments in the features boil down to 2 rules. There is a third rule possible: 3. To enable TRBE/SPE for world X with a dirty buffer: * world X owns the buffer * trapping enabled This is not listed as it would not work correctly with SMCCC_ARCH_FEATURE_AVAILABILITY which relies on trapping to be disabled to report correctly. If that is ever implemented, the SMCCC implementation should be considered too.
Change-Id: I5588a3d5fc074c2445470954d8c3b172bec77d43 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 847c1115 | 19-May-2025 |
Sona Mathew <SonaRebecca.Mathew@arm.com> |
feat(smccc): clear scr_el3.nse in smccc_arch_feature_availability
Clear the SCR_EL3.NSE bit from the bitmask used in SMCCC_ARCH_FEATURE_AVAILABILITY for RME.
This bit is set when FEAT_RME=1, and if
feat(smccc): clear scr_el3.nse in smccc_arch_feature_availability
Clear the SCR_EL3.NSE bit from the bitmask used in SMCCC_ARCH_FEATURE_AVAILABILITY for RME.
This bit is set when FEAT_RME=1, and if not excluded, it leads to an assertion failure due to unexpected bits being detected.
Change-Id: I399f63adc4814c4404705985b0816783e4626dda Signed-off-by: Sona Mathew <SonaRebecca.Mathew@arm.com>
show more ...
|
| bb9fc8c0 | 05-Feb-2025 |
Jay Monkman <jmonkman@google.com> |
fix(el3-spmc): fixed x8-x17 register handling for FFA 1.2
Changed spmd_smc_switch_state to return all 18 registers for 64 bit calls, and set x8-17 to zero if necessary.
BREAKING CHANGE: Zeroes or f
fix(el3-spmc): fixed x8-x17 register handling for FFA 1.2
Changed spmd_smc_switch_state to return all 18 registers for 64 bit calls, and set x8-17 to zero if necessary.
BREAKING CHANGE: Zeroes or forwards a different set of registers, depending on the FF-A version of the source and destination. E.g. a call from a v1.1 caller to a v1.2 destination will zero out the extended registers, which is different from the old behavior of forwarding everything to EL2 SPMC, but only x0-x7 to the EL3 SPMC.
Change-Id: Ic31755af0fbb117b0ed74565fba9decebab353c4 Signed-off-by: Jay Monkman <jmonkman@google.com> Signed-off-by: Andrei Homescu <ahomescu@google.com>
show more ...
|
| 96546b5c | 02-Dec-2024 |
Manish Pandey <manish.pandey2@arm.com> |
feat(smccc): introduce TPM Start SMC
To support TPM start method compatible with pre-FFA configuration (to support SPM_MM) introduce an SMC FID el3 vendor specific range. This SMC is forwarded to SP
feat(smccc): introduce TPM Start SMC
To support TPM start method compatible with pre-FFA configuration (to support SPM_MM) introduce an SMC FID el3 vendor specific range. This SMC is forwarded to SPM_MM module which converts into a MM_COMMUNICATE to interact with Secure partition.
TPM Start method is mentioned in TCG ACPI spec section 3.3.1 https://trustedcomputinggroup.org/wp-content/uploads/TCG-ACPI-Specification-Version-1.4-Revision-15_pub.pdf
As this patch introduces a new sub service, increment minor version of Vendor EL3 service.
Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: I61698018e6bc33c9b389ac905fe158810af21bfa
show more ...
|
| ff7daec6 | 15-Apr-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(lfa): add LFA holding pen logic
Add LFA holding logic to be used by the LFA activate SMC call to manage CPU rendezvous. All CPUs are expected to invoke the LFA activate call for the rendezvous,
feat(lfa): add LFA holding pen logic
Add LFA holding logic to be used by the LFA activate SMC call to manage CPU rendezvous. All CPUs are expected to invoke the LFA activate call for the rendezvous, until then, they will remain on a holding lock. When the final CPU calls LFA activate, it will release the holding lock after completing the activation process on that CPU, allowing the activation process on secondary CPUs to proceed.
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: Iff9e40dd87420245fe5844e286d0685c1f0db289
show more ...
|
| 07de22d2 | 16-May-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(lfa): add initial implementation for LFA_ACTIVATE
This patch introduces the overall handling of the LFA_ACTIVATE call, including input validation and invocation flow. While this covers the core
feat(lfa): add initial implementation for LFA_ACTIVATE
This patch introduces the overall handling of the LFA_ACTIVATE call, including input validation and invocation flow. While this covers the core implementation, per-component-specific handling will be developed in a separate patch. The respective component callbacks are invoked as part of this logic.
Change-Id: Ie9d4584fc0c0abc9a9faffed62165b4461efed3a Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 67fa182f | 15-Apr-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(lfa): add initial implementation for LFA_PRIME
This patch introduces the overall handling of the LFA_PRIME call, including input validation and invocation flow. While this covers the core imple
feat(lfa): add initial implementation for LFA_PRIME
This patch introduces the overall handling of the LFA_PRIME call, including input validation and invocation flow. While this covers the core implementation, per-component-specific handling will be developed in a separate patch. The respective component callbacks are invoked as part of this logic.
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: Ie13d15d0a060ae5f9704991245d2a65c7d846047
show more ...
|