| #
f4595e6e |
| 06-May-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(build): put crttool in the build directory
Same as fiptool. Move all artefacts to the platform build directory and convert to the standard build macro to make things more generic. Leave a symli
feat(build): put crttool in the build directory
Same as fiptool. Move all artefacts to the platform build directory and convert to the standard build macro to make things more generic. Leave a symlink for the final binary in case someone depends on it.
Change-Id: I82ef846a95474ba385377032fb185e548827bf5c Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
96fbe884 |
| 02-May-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(build): put enctool in the build directory
Same as fiptool. Move all artefacts to the platform build directory and convert to the standard build macro to make things more generic. Only differen
feat(build): put enctool in the build directory
Same as fiptool. Move all artefacts to the platform build directory and convert to the standard build macro to make things more generic. Only difference is that there is no symlink as the tool is only used internally and is not exported.
Change-Id: I7570f13505ed9c5d91b3582d9981177df4d5d04c Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
cbd6cec3 |
| 02-May-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(build): put fiptool in the build directory
For some reason, tools are not built in the build directory, but rather in the source directory, regardless of what BUILD_BASE might say. This is espe
feat(build): put fiptool in the build directory
For some reason, tools are not built in the build directory, but rather in the source directory, regardless of what BUILD_BASE might say. This is especially annoying when trying to have a few builds going at the same time (like in a CI). For example, run A may check if a file X exists. Seeing that it does not, it will start building the file. At the same time, run B may also check if file X exists but before A has written it, starting a build again. Then it is possible for A to use the file it believes to have built right at the moment B begins writing to it (and truncating it beforehand). This results in gcc failing to read a fail and a failed build. The more parallel runs there are, the more likely this is to happen, and this is virtually guaranteed to happen with just a handful onwards.
So move fiptool and all of its build artefacts to the build directory. Since there are platform differences between the various fiptool incarnations, this goes in the plat build rather than a more top-level location.
This patch adds the build macro MAKE_TOOL to do this generically for any kind of tool since the other tools suffer from the same shortfall. This macro takes care to use unique names for every type of argument that building a tool might need. The fiptool makefile and platform add-ons are updated accordingly.
This should have never been allowed in the first place, but downstream scripts almost certainly depend on this behaviour now. So add a symlink in the place of the old fiptool so these continue working. With any luck, this will be removed in the future.
Change-Id: I3d4d87dab0f53deab5b43fbc6652146f0e4e7e81 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
adb219f0 |
| 07-Jul-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes I9bc7b609,Ie56dc965,Ic57d46bf,I3f2ab549,I3ad715fa, ... into integration
* changes: refactor(build): initialise `arch-features` closer to where it is needed refactor(build): define
Merge changes I9bc7b609,Ie56dc965,Ic57d46bf,I3f2ab549,I3ad715fa, ... into integration
* changes: refactor(build): initialise `arch-features` closer to where it is needed refactor(build): define the W and DEBUG flags in the standard way refactor(build): put the cross referencing of options together fix: use LDLIBS instead of LDFLAGS for library search paths fix(build): remove redundant variables fix(intel): fix variable may be used uninitialized error
show more ...
|
| #
0772fc7e |
| 11-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(build): initialise `arch-features` closer to where it is needed
Change-Id: I9bc7b609e7cb5aa42528ba151b5a30c386de0792 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
|
| #
ee580c2d |
| 11-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(build): define the W and DEBUG flags in the standard way
We have the assert_boolean section where DEBUG belongs and W should have an initial value (of 0) and only be allowed to be a number.
refactor(build): define the W and DEBUG flags in the standard way
We have the assert_boolean section where DEBUG belongs and W should have an initial value (of 0) and only be allowed to be a number.
Change-Id: Ie56dc9659f32c8a202f4506bc27e8bbf84c0f73f Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
b14987cf |
| 09-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(build): put the cross referencing of options together
We have an immense number of incompatible options and several places to check them, making things hard to follow and leading to some du
refactor(build): put the cross referencing of options together
We have an immense number of incompatible options and several places to check them, making things hard to follow and leading to some duplication. Previous attempts at reordering helped in the short term but things have slowly deteriorated again.
Tackle this by introducing a single file to do all cross referencing of all options. This should remove any ambiguity as to where these go.
No functional change besides relative ordering in the top-level Makefile.
Change-Id: Ic57d46bf602bd34d3af45a05e4ac8ca0dfcd1f7b Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
711f42b2 |
| 20-Jun-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes from topic "mb/lfa-core-work" into integration
* changes: docs(maintainers): add myself as code owner for LFA service docs(lfa): update porting guide with LFA platform APIs feat(
Merge changes from topic "mb/lfa-core-work" into integration
* changes: docs(maintainers): add myself as code owner for LFA service docs(lfa): update porting guide with LFA platform APIs feat(lfa): add LFA holding pen logic feat(lfa): add initial implementation for LFA_ACTIVATE feat(lfa): add initial implementation for LFA_PRIME feat(fvp): implement platform API for load and auth image feat(lfa): implement LFA_CANCEL SMC feat(fvp): implement platform API for LFA cancel operation feat(lfa): implement LFA_GET_INVENTORY SMC feat(fvp): implement platform API for LFA activation pending check feat(lfa): implement LFA_GET_INFO SMC and integrate LFA build feat(fvp): initialize LFA component activators in platform layer feat(rmm): add placeholder activator callbacks for LFA feat(bl31): add placeholder activator implementation for LFA feat(lfa): add activation handler interface for component activation feat(fvp): implement LFA get components API feat(lfa): create LFA SMC handler template
show more ...
|
| #
cf48f49f |
| 15-Apr-2025 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
feat(lfa): create LFA SMC handler template
As per the specification v1.0[1], added all Live Firmware Activation (LFA) SMCs, including their Function IDs (FIDs) and associated error codes. A dummy ha
feat(lfa): create LFA SMC handler template
As per the specification v1.0[1], added all Live Firmware Activation (LFA) SMCs, including their Function IDs (FIDs) and associated error codes. A dummy handler function has been created as a template. Subsequent patches will implement the handling of these SMCs.
[1]: https://developer.arm.com/documentation/den0147/latest/
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: I5d6500dcff35aa4a438cd5f97f349cd57406ddce
show more ...
|
| #
d8fdff38 |
| 19-Jun-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "map-summary" into integration
* changes: feat(memmap): add summary command to memory map script refactor(memmap)!: change behavioural flags to commands refactor(memma
Merge changes from topic "map-summary" into integration
* changes: feat(memmap): add summary command to memory map script refactor(memmap)!: change behavioural flags to commands refactor(memmap): fix typing-related issues refactor(memmap): create common image parser interface refactor(memmap): represent image symbols with key-value map refactor(memmap): factor memory regions into their own structure refactor(memmap): apply additional type hints refactor(memmap): check ELF object type rather than flag refactor(memmap): remove unused functionality fix(memmap): ensure terminal width is respected style(memmap): format with Ruff
show more ...
|
| #
d154fe2b |
| 13-Jun-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I2af839ae,Ifd0c7b4e,I56763cb4,I93aec580,Icbd43503, ... into integration
* changes: docs(fvp): add GICv5 build instructions and limitations feat(fvp): add GICv5 support feat(gicv5
Merge changes I2af839ae,Ifd0c7b4e,I56763cb4,I93aec580,Icbd43503, ... into integration
* changes: docs(fvp): add GICv5 build instructions and limitations feat(fvp): add GICv5 support feat(gicv5): probe components feat(gicv5): initialise the IWB feat(gicv5): initialise the IRS feat(gicv5): assign interrupt sources to appropriate security states feat(gicv5): add a barebones GICv5 driver feat(gicv5): add support for building with gicv5
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 ...
|
| #
8daebefe |
| 15-Apr-2025 |
Chris Kay <chris.kay@arm.com> |
refactor(memmap)!: change behavioural flags to commands
This change factors out the following memory map tool flags into independent commands:
- `--footprint` (becomes `memory footprint`) - `--tree
refactor(memmap)!: change behavioural flags to commands
This change factors out the following memory map tool flags into independent commands:
- `--footprint` (becomes `memory footprint`) - `--tree` (becomes `memory tree`) - `--symbol` (becomes `memory symbol`)
So, for example, where previously you would generate the memory footprint of a build with:
memory --tree
You would now instead use:
memory footprint
Any flags specific to a command (e.g. `--depth` for `tree`) must be specified after the command, e.g.
memory tree --depth 1
... instead of:
memory --depth 1 tree
BREAKING-CHANGE: The image memory map visualization tool now uses commands, rather than arguments, to determine the behaviour of the script. See the commit message for further details.
Change-Id: I11d54d1f6276b8447bdfb8496544ab80399459ac Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| #
cbab37c9 |
| 09-Jun-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(build): remove SUPPORT_STACK_MEMTAG" into integration
|
| #
6bf7c6ad |
| 14-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(build): remove SUPPORT_STACK_MEMTAG
This flag enables the memtag sanitizer in clang. However, for this to work, other generic and platform-specific logic is required that was never implemented.
fix(build): remove SUPPORT_STACK_MEMTAG
This flag enables the memtag sanitizer in clang. However, for this to work, other generic and platform-specific logic is required that was never implemented. So in effect, the feature is half-baked and at best a simple test (of which we have plenty in tftf) or a NOP at worst.
So remove the option to simplify code a little.
Change-Id: Iab4150871c89545d813c5ae14be67bf6459d051a Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
6a468973 |
| 09-Jun-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "build(poetry): wrap docs build in poetry" into integration
|
| #
c61c9a31 |
| 15-May-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
build(poetry): wrap docs build in poetry
Simplify building documentation by wrapping the Sphinx command inside a Poetry environment. Previously, the developer had to manually activate Poetry and in
build(poetry): wrap docs build in poetry
Simplify building documentation by wrapping the Sphinx command inside a Poetry environment. Previously, the developer had to manually activate Poetry and install the docs group. This change makes the process consistent with other build targets and reduces user error. Falls back gracefully if Poetry is not installed.
Change-Id: I1dfea58314253773bec5e2c70d27e2216e3143d9 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| #
c1735145 |
| 22-May-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "docs(changelog): changelog for v2.13 release" into integration
|
| #
97a6de9e |
| 07-May-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
docs(changelog): changelog for v2.13 release
Generated this change-log using below command: npm run release -- --skip.commit --skip.tag --release-as 2.13.0
Change-Id: Ibb0623f04c641b65a03deaffd50a5
docs(changelog): changelog for v2.13 release
Generated this change-log using below command: npm run release -- --skip.commit --skip.tag --release-as 2.13.0
Change-Id: Ibb0623f04c641b65a03deaffd50a5a8b65637419 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
10534543 |
| 28-Apr-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "fix_pmuv3p9_test" into integration
* changes: fix(smccc): properly set RAS feature bit fix(trng): allow FEAT_RNG_TRAP in dynamic fashion feat(smccc): add FEAT_TWED to
Merge changes from topic "fix_pmuv3p9_test" into integration
* changes: fix(smccc): properly set RAS feature bit fix(trng): allow FEAT_RNG_TRAP in dynamic fashion feat(smccc): add FEAT_TWED to ARCH_FEATURE_AVAILABILITY feat(cpufeat): add support for PMUv3p9
show more ...
|
| #
9e0c318d |
| 28-Apr-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "feat(cpufeat): add support for FEAT_PAUTH_LR" into integration
|
| #
025b1b81 |
| 11-Mar-2025 |
John Powell <john.powell@arm.com> |
feat(cpufeat): add support for FEAT_PAUTH_LR
This patch enables FEAT_PAUTH_LR at EL3 on systems that support it when the new ENABLE_FEAT_PAUTH_LR flag is set.
Currently, PAUTH_LR is only supported
feat(cpufeat): add support for FEAT_PAUTH_LR
This patch enables FEAT_PAUTH_LR at EL3 on systems that support it when the new ENABLE_FEAT_PAUTH_LR flag is set.
Currently, PAUTH_LR is only supported by arm clang compiler and not GCC.
Change-Id: I7db1e34b661ed95cad75850b62878ac5d98466ea Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
139a5d05 |
| 18-Apr-2025 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge changes I86959e67,I0b0d1d36,I5b5267f4,I056c8710,I3474aa97 into integration
* changes: chore: fix preprocessor checks refactor: convert arm platforms to use the generic GIC driver refacto
Merge changes I86959e67,I0b0d1d36,I5b5267f4,I056c8710,I3474aa97 into integration
* changes: chore: fix preprocessor checks refactor: convert arm platforms to use the generic GIC driver refactor(gic): promote most of the GIC driver to common code refactor: make arm_gicv2.c and arm_gicv3.c common refactor(fvp): use more arm generic code for gicv3
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 ...
|
| #
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 ...
|