| 3c198a97 | 21-Mar-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "fix(rdv3): correctly handle FP regs context saving" into integration |
| 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 ...
|
| ac05182d | 20-Mar-2025 |
Rakshit Goyal <rakshit.goyal@arm.com> |
fix(rdv3): correctly handle FP regs context saving
Commit fe488c3796e01187fb6cffdd27a1bee1a33e0931 added an override to force `CTX_INCLUDE_SVE_REGS` to 0 when `SPD == spmd` and `SPMD_SPM_AT_SEL2 ==
fix(rdv3): correctly handle FP regs context saving
Commit fe488c3796e01187fb6cffdd27a1bee1a33e0931 added an override to force `CTX_INCLUDE_SVE_REGS` to 0 when `SPD == spmd` and `SPMD_SPM_AT_SEL2 == 1`. Since there is an architectural dependency between FP and SVE registers, `CTX_INCLUDE_FPREGS` must also be overridden to 0 when CTX_INCLUDE_SVE_REGS is 0.
Signed-off-by: Rakshit Goyal <rakshit.goyal@arm.com> Change-Id: I1cd834241a2d5a5368ac532a348d8729a701bbcd
show more ...
|
| f801fdc2 | 22-Apr-2024 |
Tushar Khandelwal <tushar.khandelwal@arm.com> |
feat(rmmd): add RMM_MECID_KEY_UPDATE call
With this addition, TF-A now has an SMC call to handle the update of MEC keys associated to MECIDs.
The behavior of this newly added call is empty for now
feat(rmmd): add RMM_MECID_KEY_UPDATE call
With this addition, TF-A now has an SMC call to handle the update of MEC keys associated to MECIDs.
The behavior of this newly added call is empty for now until an implementation for the MPE (Memory Protection Engine) driver is available. Only parameter sanitization has been implemented.
Signed-off-by: Tushar Khandelwal <tushar.khandelwal@arm.com> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com> Change-Id: I2a969310b47e8c6da1817a79be0cd56158c6efc3
show more ...
|
| 7e84f3cf | 15-Mar-2024 |
Tushar Khandelwal <tushar.khandelwal@.com> |
feat(rmmd): add FEAT_MEC support
This patch provides architectural support for further use of Memory Encryption Contexts (MEC) by declaring the necessary registers, bits, masks, helpers and values a
feat(rmmd): add FEAT_MEC support
This patch provides architectural support for further use of Memory Encryption Contexts (MEC) by declaring the necessary registers, bits, masks, helpers and values and modifying the necessary registers to enable FEAT_MEC.
Signed-off-by: Tushar Khandelwal <tushar.khandelwal@arm.com> Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com> Change-Id: I670dbfcef46e131dcbf3a0b927467ebf6f438fa4
show more ...
|
| d153bcf4 | 06-Mar-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(spm_mm): move mm_communication header define to general header" into integration |
| dcd8d7f1 | 13-Dec-2024 |
J-Alves <joao.alves@arm.com> |
feat(fvp): increase cactus-tertiary size
Increase the size of cactus-tertiary partition to match update in manifest. Part of effort to use cactus-tertiary partition in StMM/HOB testing.
Dependent o
feat(fvp): increase cactus-tertiary size
Increase the size of cactus-tertiary partition to match update in manifest. Part of effort to use cactus-tertiary partition in StMM/HOB testing.
Dependent on https://review.trustedfirmware.org/c/TF-A/tf-a-tests/+/35383
Signed-off-by: Kathleen Capella <kathleen.capella@arm.com> Signed-off-by: J-Alves <joao.alves@arm.com> Change-Id: I5b91400848e2cf5d04d1c7442874a7a4b9847399
show more ...
|
| bf9a25f0 | 13-Feb-2025 |
Salman Nabi <salman.nabi@arm.com> |
feat(fvp): set defaults for build commandline
When using ARM_LINUX_KERNEL_AS_BL33, set defaults for the below for increased build time efficiency:
PRELOADED_BL33_BASE=0x80080000 This address suppor
feat(fvp): set defaults for build commandline
When using ARM_LINUX_KERNEL_AS_BL33, set defaults for the below for increased build time efficiency:
PRELOADED_BL33_BASE=0x80080000 This address supports older kernels before v5.7
ARM_PRELOADED_DTB_BASE=0x87F00000 (only in RESET_TO_BL31) 1MiB before the address 0x88000000 in FVP. 1MiB seems enough for the device tree blob (DTB).
Change-Id: I0396b597485e163b43f7c6677c04fcc08db55aa8 Signed-off-by: Salman Nabi <salman.nabi@arm.com>
show more ...
|
| 1c08ff32 | 12-Dec-2024 |
Salman Nabi <salman.nabi@arm.com> |
feat(arm): add initrd props to dtb at build time
Add initrd properties to the device tree blob at build time, giving users the ability to run a linux kernel and successfully boot it to the terminal.
feat(arm): add initrd props to dtb at build time
Add initrd properties to the device tree blob at build time, giving users the ability to run a linux kernel and successfully boot it to the terminal. Users can boot a linux kernel in a normal flow as well as in RESET_TO_BL31. This function is an extension of the build time option "ARM_LINUX_KERNEL_AS_BL33=1".
The build time options INITRD_SIZE or INITRD_PATH will trigger the insertion of initrd properties in to the DTB. If both options are provided then the INITRD_SIZE will take precedence.
The available options are: INITRD_SIZE: Provide the initrd size in dec or hex (hex format must precede with '0x'. Example: INITRD_SIZE=0x1000000
INITRD_PATH: Provide an initrd path for the build time to find its exact size.
INITRD_BASE: A required build time option that sets the initrd base address in hex format. A default value can be set by the platform. Example: INITRD_BASE=0x90000000
Change-Id: Ief8de5f00c453509bcc6e978e0a95d768f1f509c Signed-off-by: Salman Nabi <salman.nabi@arm.com>
show more ...
|
| c7220035 | 03-Feb-2025 |
Manish Pandey <manish.pandey2@arm.com> |
fix(el3-runtime): replace CTX_ESR_EL3 with CTX_DOUBLE_FAULT_ESR
ESR_EL3 value is updated when an exception is taken to EL3 and its value does not change until a new exception is taken to EL3. We nee
fix(el3-runtime): replace CTX_ESR_EL3 with CTX_DOUBLE_FAULT_ESR
ESR_EL3 value is updated when an exception is taken to EL3 and its value does not change until a new exception is taken to EL3. We need to save ESR in context memory only when we expect nested exception in EL3.
The scenarios where we would expect nested EL3 execution are related with FFH_SUPPORT, namely 1.Handling pending async EAs at EL3 boundry - It uses CTX_SAVED_ESR_EL3 to preserve origins esr_el3 2.Double fault handling - Introduce an explicit storage (CTX_DOUBLE_FAULT_ESR) for esr_el3 to take care of DobuleFault.
As the ESR context has been removed, read the register directly instead of its context value in RD platform.
Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: I7720c5f03903f894a77413a235e3cc05c86f9c17
show more ...
|
| 70b5967e | 27-Feb-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "mb/drtm" into integration
* changes: feat(drtm): retrieve DLME image authentication features feat(drtm): log No-Action Event in Event Log for DRTM measurements feat(f
Merge changes from topic "mb/drtm" into integration
* changes: feat(drtm): retrieve DLME image authentication features feat(drtm): log No-Action Event in Event Log for DRTM measurements feat(fvp): add stub function to retrieve DLME image auth features feat(drtm): introduce plat API for DLME authentication features feat(drtm): ensure event types aligns with DRTM specification v1.1 fix(drtm): add missing DLME data regions for min size requirement feat(fvp): add stub platform function to get ACPI table region size feat(drtm): add platform API to retrieve ACPI tables region size
show more ...
|
| fe488c37 | 20-Feb-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(rdv3): handle invalid build combination
`CTX_INCLUDE_SVE_REGS` should not be enabled when building with SPD=spmd and SPMD_SPM_AT_SEL2=1 both been used.
Unfortunately a check at top level makefi
fix(rdv3): handle invalid build combination
`CTX_INCLUDE_SVE_REGS` should not be enabled when building with SPD=spmd and SPMD_SPM_AT_SEL2=1 both been used.
Unfortunately a check at top level makefile ignored this, now its been fixed at top level makefile. Ensure correct combination are handled, otherwise it will lead to build failures.
Change-Id: Ib84fc0096c92d9b3d56366c0e1d77b6d83098221 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| 7c375410 | 27-Feb-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(romlib): add PSA Crypto ROMLIB support" into integration |
| cf1b7fe6 | 18-Feb-2025 |
laurenw <lauren.wehrmeister@arm.com> |
feat(romlib): add PSA Crypto ROMLIB support
Adding PSA Crypto MBedTLS specific jump table to allow use of ROMLIB, to be included when PSA_CRYPTO=1 and enabled.
Signed-off-by: Lauren Wehrmeister <la
feat(romlib): add PSA Crypto ROMLIB support
Adding PSA Crypto MBedTLS specific jump table to allow use of ROMLIB, to be included when PSA_CRYPTO=1 and enabled.
Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com> Change-Id: Iff7f0e3c5cba6b89f1732f6c80d3060498e3675d
show more ...
|
| 98c65165 | 26-Feb-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
chore: rename arcadia to Cortex-A320
Cortex-A320 has been announced, rename arcadia to Cortex-A320.
Ref: https://newsroom.arm.com/blog/introducing-arm-cortex-a320-cpu https://www.arm.com/products/s
chore: rename arcadia to Cortex-A320
Cortex-A320 has been announced, rename arcadia to Cortex-A320.
Ref: https://newsroom.arm.com/blog/introducing-arm-cortex-a320-cpu https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a320
Change-Id: Ifb3743d43dca3d8caaf1e7416715ccca4fdf195f Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| 1733deb4 | 26-Feb-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): add stub function to retrieve DLME image auth features
DLME image authentication features are currently not supported on FVP. This patch introduces a stub function in fvp_drtm_stub.c as a
feat(fvp): add stub function to retrieve DLME image auth features
DLME image authentication features are currently not supported on FVP. This patch introduces a stub function in fvp_drtm_stub.c as a placeholder for retrieving DLME image authentication features.
Change-Id: I6d274834245774c5442d67ee93fcd641f3a9cd1a Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 5d377555 | 24-Feb-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(fvp): add stub platform function to get ACPI table region size
Introduces a stub platform function for FVP to retrieve the ACPI table region size.
Change-Id: Icbf1ae0cb89c393502de2c2f4f66df6b5
feat(fvp): add stub platform function to get ACPI table region size
Introduces a stub platform function for FVP to retrieve the ACPI table region size.
Change-Id: Icbf1ae0cb89c393502de2c2f4f66df6b510e6b81 Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
show more ...
|
| 83ec7e45 | 06-Nov-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
perf(amu): greatly simplify AMU context management
The current code is incredibly resilient to updates to the spec and has worked quite well so far. However, recent implementations expose a weakness
perf(amu): greatly simplify AMU context management
The current code is incredibly resilient to updates to the spec and has worked quite well so far. However, recent implementations expose a weakness in that this is rather slow. A large part of it is written in assembly, making it opaque to the compiler for optimisations. The future proofness requires reading registers that are effectively `volatile`, making it even harder for the compiler, as well as adding lots of implicit barriers, making it hard for the microarchitecutre to optimise as well.
We can make a few assumptions, checked by a few well placed asserts, and remove a lot of this burden. For a start, at the moment there are 4 group 0 counters with static assignments. Contexting them is a trivial affair that doesn't need a loop. Similarly, there can only be up to 16 group 1 counters. Contexting them is a bit harder, but we can do with a single branch with a falling through switch. If/when both of these change, we have a pair of asserts and the feature detection mechanism to guard us against pretending that we support something we don't.
We can drop contexting of the offset registers. They are fully accessible by EL2 and as such are its responsibility to preserve on powerdown.
Another small thing we can do, is pass the core_pos into the hook. The caller already knows which core we're running on, we don't need to call this non-trivial function again.
Finally, knowing this, we don't really need the auxiliary AMUs to be described by the device tree. Linux doesn't care at the moment, and any information we need for EL3 can be neatly placed in a simple array.
All of this, combined with lifting the actual saving out of assembly, reduces the instructions to save the context from 180 to 40, including a lot fewer branches. The code is also much shorter and easier to read.
Also propagate to aarch32 so that the two don't diverge too much.
Change-Id: Ib62e6e9ba5be7fb9fb8965c8eee148d5598a5361 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 2590e819 | 25-Nov-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
perf(mpmm): greatly simplify MPMM enablement
MPMM is a core-specific microarchitectural feature. It has been present in every Arm core since the Cortex-A510 and has been implemented in exactly the s
perf(mpmm): greatly simplify MPMM enablement
MPMM is a core-specific microarchitectural feature. It has been present in every Arm core since the Cortex-A510 and has been implemented in exactly the same way. Despite that, it is enabled more like an architectural feature with a top level enable flag. This utilised the identical implementation.
This duality has left MPMM in an awkward place, where its enablement should be generic, like an architectural feature, but since it is not, it should also be core-specific if it ever changes. One choice to do this has been through the device tree.
This has worked just fine so far, however, recent implementations expose a weakness in that this is rather slow - the device tree has to be read, there's a long call stack of functions with many branches, and system registers are read. In the hot path of PSCI CPU powerdown, this has a significant and measurable impact. Besides it being a rather large amount of code that is difficult to understand.
Since MPMM is a microarchitectural feature, its correct placement is in the reset function. The essence of the current enablement is to write CPUPPMCR_EL3.MPMM_EN if CPUPPMCR_EL3.MPMMPINCTL == 0. Replacing the C enablement with an assembly macro in each CPU's reset function achieves the same effect with just a single close branch and a grand total of 6 instructions (versus the old 2 branches and 32 instructions).
Having done this, the device tree entry becomes redundant. Should a core that doesn't support MPMM arise, this can cleanly be handled in the reset function. As such, the whole ENABLE_MPMM_FCONF and platform hooks mechanisms become obsolete and are removed.
Change-Id: I1d0475b21a1625bb3519f513ba109284f973ffdf Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| a8a5d39d | 24-Feb-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "bk/errata_speed" into integration
* changes: refactor(cpus): declare runtime errata correctly perf(cpus): make reset errata do fewer branches perf(cpus): inline the i
Merge changes from topic "bk/errata_speed" into integration
* changes: refactor(cpus): declare runtime errata correctly perf(cpus): make reset errata do fewer branches perf(cpus): inline the init_cpu_data_ptr function perf(cpus): inline the reset function perf(cpus): inline the cpu_get_rev_var call perf(cpus): inline cpu_rev_var checks refactor(cpus): register DSU errata with the errata framework's wrappers refactor(cpus): convert checker functions to standard helpers refactor(cpus): convert the Cortex-A65 to use the errata framework fix(cpus): declare reset errata correctly
show more ...
|
| 02f0e6e4 | 21-Feb-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "fix(rme): map DEVICE0_BASE as EL3_PAS" into integration |
| b62673c6 | 23-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): register DSU errata with the errata framework's wrappers
The existing DSU errata workarounds hijack the errata framework's inner workings to register with it. However, that is undesi
refactor(cpus): register DSU errata with the errata framework's wrappers
The existing DSU errata workarounds hijack the errata framework's inner workings to register with it. However, that is undesirable as any change to the framework may end up missing these workarounds. So convert the checks and workarounds to macros and have them included with the standard wrappers.
The only problem with this is the is_scu_present_in_dsu weak function. Fortunately, it is only needed for 2 of the errata and only on 3 cores. So drop it, assuming the default behaviour and have the callers handle the exception.
Change-Id: Iefa36325804ea093e938f867b9a6f49a6984b8ae Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 99b2ae26 | 20-Feb-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "jw/gic-lca-support" into integration
* changes: fix(rdn2): add LCA multichip data for RD-N2-Cfg2 fix(rdv3): add LCA multichip data for RD-V3-Cfg2 feat(gic): add suppo
Merge changes from topic "jw/gic-lca-support" into integration
* changes: fix(rdn2): add LCA multichip data for RD-N2-Cfg2 fix(rdv3): add LCA multichip data for RD-V3-Cfg2 feat(gic): add support for local chip addressing
show more ...
|
| b5772480 | 13-Feb-2025 |
AlexeiFedorov <Alexei.Fedorov@arm.com> |
fix(rme): map DEVICE0_BASE as EL3_PAS
To pass SMMUv3 Realm Page 0 address to RMM in Boot Manifest, BL31 needs to read SMMU_ROOT_IDR0 register. BL31 at EL3 runs in Root mode, but CoreSight and periph
fix(rme): map DEVICE0_BASE as EL3_PAS
To pass SMMUv3 Realm Page 0 address to RMM in Boot Manifest, BL31 needs to read SMMU_ROOT_IDR0 register. BL31 at EL3 runs in Root mode, but CoreSight and peripherals at DEVICE0_BASE (0x2000_0000) including SMMUv3 at 0x2B40_0000 are mapped as MT_SECURE which results in RAZ access to all SMMUv3 registers after enabling MMU. This patch changes MT_SECURE mapping to EL3_PAS resulting in MT_SECURE (ENABLE_RME = 0), and MT_ROOT (ENABLE_RME = 1).
Change-Id: I3d9ae7c86e4836dd6722fa64116a14d8c8aed8da Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
show more ...
|
| 26f789db | 13-Feb-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "fix(neoverse-rd): initialize CNTFRQ_EL0 for RESET_TO_BL31" into integration |