| 4b6e4e61 | 20-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "mp/simd_ctxt_mgmt" into integration
* changes: feat(fvp): allow SIMD context to be put in TZC DRAM docs(simd): introduce CTX_INCLUDE_SVE_REGS build flag feat(fvp): ad
Merge changes from topic "mp/simd_ctxt_mgmt" into integration
* changes: feat(fvp): allow SIMD context to be put in TZC DRAM docs(simd): introduce CTX_INCLUDE_SVE_REGS build flag feat(fvp): add Cactus partition manifest for EL3 SPMC chore(simd): remove unused macros and utilities for FP feat(el3-spmc): support simd context management upon world switch feat(trusty): switch to simd_ctx_save/restore apis feat(pncd): switch to simd_ctx_save/restore apis feat(spm-mm): switch to simd_ctx_save/restore APIs feat(simd): add rules to rationalize simd ctxt mgmt feat(simd): introduce simd context helper APIs feat(simd): add routines to save, restore sve state feat(simd): add sve state to simd ctxt struct feat(simd): add data struct for simd ctxt management
show more ...
|
| 308ebfa1 | 17-Jun-2024 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
feat(simd): introduce simd context helper APIs
This patch adds the common API to save and restore FP and SVE. When SVE is enabled we save and restore SVE which automatically covers FP. If FP is enab
feat(simd): introduce simd context helper APIs
This patch adds the common API to save and restore FP and SVE. When SVE is enabled we save and restore SVE which automatically covers FP. If FP is enabled while SVE is not, then we save and restore FP only.
The patch uses simd_ctx_t to save and restore both FP and SVE which means developers need not use fp or sve routines directly. Once all the calls to fpregs_context_* are replaced with simd_ctx_*, we can remove fp_regs_t data structure and macros (taken care in a following patch).
simd_ctx_t is currently allocated in section of its own. This will go into BSS section by default but platform will have option of relocating it to a different section by overriding in plat.ld.S.
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com> Signed-off-by: Okash Khawaja <okash@google.com> Change-Id: I090f8b8fa3862e527b6c40385249adc69256bf24
show more ...
|
| 42422622 | 17-Jun-2024 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
feat(simd): add sve state to simd ctxt struct
This patch extends the simd data structure to hold the SVE state. A new build flag CTX_INCLUDE_SVE_REGS is introduced in this patch to enable SVE contex
feat(simd): add sve state to simd ctxt struct
This patch extends the simd data structure to hold the SVE state. A new build flag CTX_INCLUDE_SVE_REGS is introduced in this patch to enable SVE context management.
Necessary precautions are taken such as ensuring the field offsets are not changed and necessary padding is added for alignment reasons.
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com> Signed-off-by: Okash Khawaja <okash@google.com> Change-Id: I54f5222c7d8c68638105003f68caa511d347cd60
show more ...
|
| 2d4f264b | 17-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "romlib-fixes" into integration
* changes: fix(romlib): wrap indirectly included functions fix(arm): remove duplicate jumptable entry |
| d95d56bd | 22-Jul-2024 |
Jimmy Brisson <jimmy.brisson@arm.com> |
fix(romlib): wrap indirectly included functions
The problem that this resolves is a bit involved; the following must be met at the same time for some function <to_be_wrapped>:
* to_be_wrapped must
fix(romlib): wrap indirectly included functions
The problem that this resolves is a bit involved; the following must be met at the same time for some function <to_be_wrapped>:
* to_be_wrapped must be specified as part of the romlib * to_be_wrapped must _not_ be referenced by any translation unit in TF-A * to_be_wrapped must be referenced by a translation unit in a dependent library, mbedtls for example.
Under these circumstances, to_be_wrapped will not be wrapped, and will instead reference its original definition while simultaneously residing in romlib.
This is a side effect of two issues with romlib prior to this patch:
1 to_be_wrapped is expected to wrap by duplicating its definition. This causes any condition that links against both the base and wrapper functions to be a link error (duplicate symbol definition). 2 to_be_wrapped is in its own translation unit This causes the wrappers to be used by TF-A in an as needed.
The duplicate function definitions can be worked around using the linker's `--wrap` flag, which redirects all references to a symbol to resolve to `__wrap_<symbol>` and the original symbol to be available as `__real_<symbol>`. Most of the changes handle creating this arguments and passing them to the linker.
Further, once you use the linker's wrap, you will encounter another issue: if TF-A does not use a function, its wrapper is not present. This causes link issues when a library and not TF-A uses the wrapper. Note that this issue would have been resolved previously by ignoring the wrapper and using the base definition.
This further issue is worked around by concatenating the assembly for all of the wrappers into a single translation unit. It's possible to work around this issue in a few other ways, including reordering the libraries passed to the linker to place libwrapper.a last or grouping the libraries so that symbols from later libraries may be resolved with prior libraries.
I chose the translation unit concatenation approach as it revealed that a jumptable has duplicate symbols within it.
Change-Id: Ie57b5ae69bde2fc8705bdc7a93fae3ddb5341ed9 Signed-off-by: Jimmy Brisson <jimmy.brisson@arm.com>
show more ...
|
| ba65e2d1 | 21-Jun-2024 |
Andre Przywara <andre.przywara@arm.com> |
fix(mte): improve ENABLE_FEAT_MTE deprecation warning
ENABLE_FEAT_MTE was deprecated in commit c282384dbb45 ("refactor(mte): remove mte, mte_perm"), but the check in the build system is only coverin
fix(mte): improve ENABLE_FEAT_MTE deprecation warning
ENABLE_FEAT_MTE was deprecated in commit c282384dbb45 ("refactor(mte): remove mte, mte_perm"), but the check in the build system is only covering the "ENABLE_FEAT_MTE=1" case. Fix the check to cover every mentioning of ENABLE_FEAT_MTE.
Change-Id: Ia663f50016455f93ecfdac8aeaba34d9059600ea Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 93b7b752 | 29-Jul-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "build(amu): restrict counters (RAZ)" into integration |
| 0195bac1 | 29-Jul-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "build: consolidate directory creation rules" into integration |
| f4dd18c2 | 04-Jun-2024 |
Chris Kay <chris.kay@arm.com> |
build: consolidate directory creation rules
This commit streamlines directory creation by introducing a single pattern rule to automatically make directories for which there is a dependency.
We cur
build: consolidate directory creation rules
This commit streamlines directory creation by introducing a single pattern rule to automatically make directories for which there is a dependency.
We currently use several macros to generate rules to create directories upon dependence, which is a significant amount of code and a lot of redundancy. The rule introduced by this change represents a catch-all: any rule dependency on a path ending in a forward slash is automatically created.
Now, rules can rely on an unordered dependency (`|`) on `$$(@D)/` which, when secondary expansion is enabled, expands to the directory of the target being built, e.g.:
build/main.o: main.c | $$(@D)/ # automatically creates `build/`
Change-Id: I7e554efa2ac850e779bb302fd9c7fbb239886c9f Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 33e6aaac | 06-Jun-2024 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(fgt2): add support for FEAT_FGT2
This patch disables trapping to EL3 when the FEAT_FGT2 specific trap registers are accessed by setting the SCR_EL3.FGTEn2 bit
Signed-off-by: Arvind Ram Prakash
feat(fgt2): add support for FEAT_FGT2
This patch disables trapping to EL3 when the FEAT_FGT2 specific trap registers are accessed by setting the SCR_EL3.FGTEn2 bit
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I6d2b614affb9067b2bc3d7bf0ae7d169d031592a
show more ...
|
| 83271d5a | 22-May-2024 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(debugv8p9): add support for FEAT_Debugv8p9
This patch enables FEAT_Debugv8p9 and prevents EL1/0 from trapping to EL3 when accessing MDSELR_EL1 register by setting the MDCR_EL3.EBWE bit.
Signed
feat(debugv8p9): add support for FEAT_Debugv8p9
This patch enables FEAT_Debugv8p9 and prevents EL1/0 from trapping to EL3 when accessing MDSELR_EL1 register by setting the MDCR_EL3.EBWE bit.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I3613af1dd8cb8c0d3c33dc959f170846c0b9695a
show more ...
|
| 7c4e1eea | 02-May-2024 |
Chris Kay <chris.kay@arm.com> |
build: unify verbosity handling
This change introduces a few helper variables for dealing with verbose and silent build modes: `silent`, `verbose`, `q` and `s`.
The `silent` and `verbose` variables
build: unify verbosity handling
This change introduces a few helper variables for dealing with verbose and silent build modes: `silent`, `verbose`, `q` and `s`.
The `silent` and `verbose` variables are boolean values determining whether the build system has been configured to run silently or verbosely respectively (i.e. with `--silent` or `V=1`).
These two modes cannot be used together - if `silent` is truthy then `verbose` is always falsy. As such:
make --silent V=1
... results in a silent build.
In addition to these boolean variables, we also introduce two new variables - `s` and `q` - for use in rule recipes to conditionally suppress the output of commands.
When building silently, `s` expands to a value which disables the command that follows, and `q` expands to a value which supppresses echoing of the command:
$(s)echo 'This command is neither echoed nor executed' $(q)echo 'This command is executed but not echoed'
When building verbosely, `s` expands to a value which disables the command that follows, and `q` expands to nothing:
$(s)echo 'This command is neither echoed nor executed' $(q)echo 'This command is executed and echoed'
In all other cases, both `s` and `q` expand to a value which suppresses echoing of the command that follows:
$(s)echo 'This command is executed but not echoed' $(q)echo 'This command is executed but not echoed'
The `s` variable is predominantly useful for `echo` commands, where you always want to suppress echoing of the command itself, whilst `q` is more useful for all other commands.
Change-Id: I8d8ff6ed714d3cb401946c52955887ed7dca602b Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 0dfa3dea | 29-May-2024 |
Chris Kay <chris.kay@arm.com> |
build: add facilities for interpreting boolean values
This is another small addition to the build system utlities to make it easier to determine the truthiness of an arbitrary value.
This change ad
build: add facilities for interpreting boolean values
This is another small addition to the build system utlities to make it easier to determine the truthiness of an arbitrary value.
This change adds the `bool` function, which takes a value and determines whether the value is "truthy". We consider a value to be truthy if it is NOT one of: "0", "n", "no", "f" or "false" (all case-insensitive).
If the value is truthy then it is returned as-is. Otherwise, no value is returned.
Change-Id: I19347f4c3ae00a6b448514a28cc2d9d06f683f25 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 3af4eb50 | 29-May-2024 |
Chris Kay <chris.kay@arm.com> |
build: add string casing facilities to utilities
This is a small modification to two existing functions in the build system: `uppercase` and `lowercase`.
These functions have been moved to the comm
build: add string casing facilities to utilities
This is a small modification to two existing functions in the build system: `uppercase` and `lowercase`.
These functions have been moved to the common utilities makefile, and use the `tr` tool to simplify their implementation. Behaviour is, for virtually all use-cases, identical.
Change-Id: I0e459d92e454087e4188b2fa5968244e5db89906 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| df52e260 | 29-May-2024 |
Chris Kay <chris.kay@arm.com> |
fix(build): fix incorrectly-escaped armlink preprocessor definitions
Preprocessor definitions that are passed to armlink are currently not correctly escaped, resulting in the shell trying to parse t
fix(build): fix incorrectly-escaped armlink preprocessor definitions
Preprocessor definitions that are passed to armlink are currently not correctly escaped, resulting in the shell trying to parse the parentheses contained in some of the preprocessor definitions:
``` LD build/tegra/t210/release/bl31/bl31.elf /bin/sh: 1: Syntax error: "(" unexpected ```
This change ensures that these preprocessor definitions are adequately escaped for the shell.
Change-Id: I9d2c60fa60c0aa00770417a68f900e9fb84b4669 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 261edb6a | 28-May-2024 |
Soby Mathew <soby.mathew@arm.com> |
Merge changes I710d1780,Ia9a59bde into integration
* changes: feat(gpt): configure memory size protected by bitlock feat(gpt): add support for large GPT mappings |
| d766084f | 13-May-2024 |
AlexeiFedorov <Alexei.Fedorov@arm.com> |
feat(gpt): configure memory size protected by bitlock
This patch adds support in GPT library for configuration of the memory block size protected by one bit of 'bitlock' structure. Build option 'RME
feat(gpt): configure memory size protected by bitlock
This patch adds support in GPT library for configuration of the memory block size protected by one bit of 'bitlock' structure. Build option 'RME_GPT_BITLOCK_BLOCK' defines the number of 512MB blocks covered by each bit. This numeric parameter must be a power of 2 and can take the values from 0 to 512. Setting this value to 0 chooses a single spinlock for all GPT L1 table entries. The default value is set to 1 which corresponds to 512MB per bit.
Change-Id: I710d178072894a3ef40daebea701f74d19e8a3d7 Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
show more ...
|
| e01c7126 | 15-May-2024 |
Chris Kay <chris.kay@arm.com> |
build: allow shell commands in `CC` and friends
When we added support for paths with spaces in the `CC`, `LD`, `AR`, etc. variables in a previous patch, we explicitly broke support for compiler laun
build: allow shell commands in `CC` and friends
When we added support for paths with spaces in the `CC`, `LD`, `AR`, etc. variables in a previous patch, we explicitly broke support for compiler launchers like `ccache`, which is usually used by prepending it to `CC`, e.g. `CC='ccache gcc'`. This patch modifies the toolchain detection logic to avoid sanitizing the toolchain variables for the shell unless we are confident that they represent a path to the program (i.e. that `which $(CC)` resolves to something).
Change-Id: I942d09cfc462d50ed07c5d22434b0275c22d1522 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 291e7182 | 14-May-2024 |
Chris Kay <chris.kay@arm.com> |
build: skip toolchain detection for some targets
Most developers run the `clean`, `checkpatch` and other similar targets without specifying any other additional build options. When combined with a f
build: skip toolchain detection for some targets
Most developers run the `clean`, `checkpatch` and other similar targets without specifying any other additional build options. When combined with a flow where the developer passes `CROSS_COMPILE` or `CC` explicitly, and where the default-configured tools are not on the PATH, these targets will warn about unrecognized toolchain tools.
This change is a workaround for this whereby the toolchain makefile is not expanded unless a target *not* named `*clean`, `check*` `doc` or `*tool` has been specified.
Change-Id: I2f2a275964b65253df07c2207043217b14f615fe Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| ec0088bb | 13-Mar-2024 |
AlexeiFedorov <Alexei.Fedorov@arm.com> |
feat(gpt): add support for large GPT mappings
This patch adds support for large GPT mappings using Contiguous descriptors. The maximum size of supported contiguous block in MB is defined in RME_GPT_
feat(gpt): add support for large GPT mappings
This patch adds support for large GPT mappings using Contiguous descriptors. The maximum size of supported contiguous block in MB is defined in RME_GPT_MAX_BLOCK build parameter and takes values 0, 2, 32 and 512 and by default set to 2 in make_helpers/defaults.mk. Setting RME_GPT_MAX_BLOCK value to 0 disables use of Contiguous descriptors. Function gpt_tlbi_by_pa_ll() and its declaration are removed from lib/aarch64/misc_helpers.S and include/arch/aarch64/arch_helpers.h, because the GPT library now uses tlbirpalos_xxx() functions.
Change-Id: Ia9a59bde1741c5666b4ca1de9324e6dfd6f734eb Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
show more ...
|
| 14c27f82 | 03-Apr-2024 |
Juan Pablo Conde <juanpablo.conde@arm.com> |
build(amu): restrict counters (RAZ)
The use of AMU counters at the highest implemented exception level can expose information about them to lower exception levels, such as specific behavior happenin
build(amu): restrict counters (RAZ)
The use of AMU counters at the highest implemented exception level can expose information about them to lower exception levels, such as specific behavior happening in the CPU (e.g.: MPMM gear shifting in TC2). In order to prevent this, read accesses to AMU counters are restricted by default, so they are RAZ (read-as-zero) from lower exception levels from now on.
Change-Id: I660b0928bea3fe09436ad53b0bb43c3067523178 Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com>
show more ...
|
| f99a69c3 | 21-Dec-2023 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(dsu): save/restore DSU PMU register
Adds driver support to preserve DSU PMU register values over a DSU power cycle. This driver needs to be enabled by the platforms that support DSU and also ne
feat(dsu): save/restore DSU PMU register
Adds driver support to preserve DSU PMU register values over a DSU power cycle. This driver needs to be enabled by the platforms that support DSU and also need it's PMU registers to be preserved
Change-Id: I7fc68a3d7d99ee369379aa5cd114fffc763fc0d2 Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com>
show more ...
|
| a97e1f97 | 08-May-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "early_console" into integration
* changes: feat(stm32mp2): use early traces feat(st-bsec): use early traces refactor(st): replace STM32MP_EARLY_CONSOLE with EARLY_CON
Merge changes from topic "early_console" into integration
* changes: feat(stm32mp2): use early traces feat(st-bsec): use early traces refactor(st): replace STM32MP_EARLY_CONSOLE with EARLY_CONSOLE feat(console): introduce EARLY_CONSOLE feat(bl32): create an sp_min_setup function
show more ...
|
| 3d6c7e59 | 16-Apr-2024 |
Chris Kay <chris.kay@arm.com> |
build: improve diagnostics for unrecognized toolchain tools
Up until recently the build system accepted an arbitrary value for `AS` and, unbeknownst to anybody, was simply not making use of it. Rece
build: improve diagnostics for unrecognized toolchain tools
Up until recently the build system accepted an arbitrary value for `AS` and, unbeknownst to anybody, was simply not making use of it. Recent feedback has revealed that a number of contributors have `AS` explicitly configured to use the GNU assembler, which is not a supported assembler, and this breakage has yielded some cryptic error messages, e.g.:
aarch64-none-elf-as: unrecognized option '-x'
This change introduces human-readable diagnostics to help developers with diagnosing unsupported toolchain tools:
The configured AArch64 assembler could not be identified and may not be supported:
aarch64-none-elf-as
The default AArch64 assembler is:
aarch64-none-elf-gcc
The following tools are supported:
- Arm® Compiler for Embedded `armclang` - LLVM Clang (`clang`) - GNU GCC (`gcc`)
The build system will treat this assembler as GNU GCC (`gcc`).
Change-Id: I316036c83be2d45ee83a88846cf65c6ce7ae3c26 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| 7b453526 | 08-Mar-2024 |
Chris Kay <chris.kay@arm.com> |
build: separate preprocessing from DTB compilation
This is a small change to separate preprocessing of device tree sources into their own build step as opposed to combining them. The impact of this
build: separate preprocessing from DTB compilation
This is a small change to separate preprocessing of device tree sources into their own build step as opposed to combining them. The impact of this is more on separation of concerns than anything tangible, but it's helpful to avoid doing more than necessary in a build rule.
Change-Id: I770291bd9d9f627c93e82556a40f753bf27eef93 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|