| #
fdf3f697 |
| 15-Dec-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpufeat): enable USE_SPINLOCK_CAS to FEAT_STATE_CHECKED" into integration
|
| #
38e580e6 |
| 26-Nov-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpufeat): enable USE_SPINLOCK_CAS to FEAT_STATE_CHECKED
The FEAT_LSE enablement predates the FEAT_STATE framework and has never been converted. Since the introduction of USE_SPINLOCK_CAS we've
feat(cpufeat): enable USE_SPINLOCK_CAS to FEAT_STATE_CHECKED
The FEAT_LSE enablement predates the FEAT_STATE framework and has never been converted. Since the introduction of USE_SPINLOCK_CAS we've gained lots of quality of life features that allow for better feature enablement. This patch converts USE_SPINLOCK_CAS to tri-state and adds it to FEATURE_DETECTION to align with all other features.
Instead of introducing the assembly checking for tri-state, this patch translates all locking routines to C inline assembly and uses the standard C helpers. The main benefit is that this gives greater visibility to the compiler about what the functions are doing and lets it optimise better. Namely, it is able to allocate registers itself and inline the functions when LTO is enabled.
An unsuccessful attempt was made to use the instructions directly and have even flow control in C. This, however, made code very complicated and less efficient in the tight loops of the spinlock.
The last use of ARM_ARCH_AT_LEAST goes away with this change and so this macro is removed. It has now been fully superseded by the FEAT_STATE framework.
This change exposes a limitation - RME_GPT_BITLOCK_BLOCK requires USE_SPINLOCK_CAS. This patch does not address this in any way but makes the relationship explicit.
Change-Id: I580081549aceded2dca3e0f4564ee7510a7e56ae Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
2c746960 |
| 03-May-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I9eba2e34,Iab2a2a2f into integration
* changes: refactor(cpus): replace adr with adr_l refactor(build): introduce adr_l macro
|
| #
31857d4c |
| 22-Feb-2024 |
Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com> |
refactor(build): introduce adr_l macro
Introduce the macro "adr_l," which can handle symbols or labels that exceed the 1MB access range compared to the "adr" instruction.
Change-Id: Iab2a2a2f8a11a5
refactor(build): introduce adr_l macro
Introduce the macro "adr_l," which can handle symbols or labels that exceed the 1MB access range compared to the "adr" instruction.
Change-Id: Iab2a2a2f8a11a5e21e386f1001ba27a8de621132 Signed-off-by: Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com>
show more ...
|
| #
6f802c44 |
| 02-Nov-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "mp/exceptions" into integration
* changes: docs(ras): update RAS documentation docs(el3-runtime): update BL31 exception vector handling fix(el3-runtime): restrict low
Merge changes from topic "mp/exceptions" into integration
* changes: docs(ras): update RAS documentation docs(el3-runtime): update BL31 exception vector handling fix(el3-runtime): restrict lower el EA handlers in FFH mode fix(ras): remove RAS_FFH_SUPPORT and introduce FFH_SUPPORT fix(ras): restrict ENABLE_FEAT_RAS to have only two states feat(ras): use FEAT_IESB for error synchronization feat(el3-runtime): modify vector entry paths
show more ...
|
| #
6597fcf1 |
| 26-Jun-2023 |
Manish Pandey <manish.pandey2@arm.com> |
feat(ras): use FEAT_IESB for error synchronization
For synchronization of errors at exception boundries TF-A uses "esb" instruction with FEAT_RAS or "dsb" and "isb" otherwise. The problem with esb i
feat(ras): use FEAT_IESB for error synchronization
For synchronization of errors at exception boundries TF-A uses "esb" instruction with FEAT_RAS or "dsb" and "isb" otherwise. The problem with esb instruction is, along with synching errors it might also consume the error, which is not ideal in all scenarios. On the other hand we can't use dsb always as its in the hot path.
To solve above mentioned problem the best way is to use FEAT_IESB feature which provides controls to insert an implicit Error synchronization event at exception entry and exception return.
Assumption in TF-A is, if RAS Extension is present then FEAT_IESB will also be present and enabled.
Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: Ie5861eec5da4028a116406bb4d1fea7dac232456
show more ...
|
| #
0cfa06b2 |
| 31-May-2023 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge changes from topic "bk/errata_refactor" into integration
* changes: feat(cpus): wrappers to propagate AArch32 errata info feat(cpus): add a way to automatically report errata feat(cpus):
Merge changes from topic "bk/errata_refactor" into integration
* changes: feat(cpus): wrappers to propagate AArch32 errata info feat(cpus): add a way to automatically report errata feat(cpus): add a concise way to implement AArch64 errata refactor(cpus): convert print_errata_status to C refactor(cpus): rename errata_report.h to errata.h refactor(cpus): move cpu_ops field defines to a header
show more ...
|
| #
007433d8 |
| 25-Jan-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): move cpu_ops field defines to a header
The cpu_macros.S file is loaded with lots of definitions for the cpu_ops structure. However, since they are defined as .equ directives they are
refactor(cpus): move cpu_ops field defines to a header
The cpu_macros.S file is loaded with lots of definitions for the cpu_ops structure. However, since they are defined as .equ directives they are inaccessible for C code. Convert them to #defines, put them into order, refactor them for readability, and extract them to a separate file to make this possible.
This has the benefit of removing some Aarch differences and a lot of duplicate code.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I72861794b6c9131285a9297d5918822ed718b228
show more ...
|
| #
9fa849d3 |
| 12-Apr-2021 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "arch: Enable `FEAT_SB` for supported non-Armv8.5-A platforms" into integration
|
| #
4e04478a |
| 09-Mar-2021 |
Chris Kay <chris.kay@arm.com> |
arch: Enable `FEAT_SB` for supported non-Armv8.5-A platforms
The speculation barrier feature (`FEAT_SB`) was introduced with and made mandatory in the Armv8.5-A extension. It was retroactively made
arch: Enable `FEAT_SB` for supported non-Armv8.5-A platforms
The speculation barrier feature (`FEAT_SB`) was introduced with and made mandatory in the Armv8.5-A extension. It was retroactively made optional in prior extensions, but the checks in our code-base do not reflect that, assuming that it is only available in Armv8.5-A or later.
This change introduces the `ENABLE_FEAT_SB` definition, which derives support for the `sb` instruction in the assembler from the feature flags passed to it. Note that we assume that if this feature is enabled then all the cores in the system support it - enabling speculation barriers for only a subset of the cores is unsupported.
Signed-off-by: Chris Kay <chris.kay@arm.com> Change-Id: I978ed38829385b221b10ba56d49b78f4756e20ea
show more ...
|
| #
8fd41bb9 |
| 12-Mar-2020 |
Mark Dykes <mardyk01@review.trustedfirmware.org> |
Merge "Use Speculation Barrier instruction for v8.5 cores" into integration
|
| #
ccfb5c81 |
| 10-Mar-2020 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Use Speculation Barrier instruction for v8.5 cores
Change-Id: Ie1018bfbae2fe95c699e58648665baa75e862000 Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
|
| #
efe30cb1 |
| 09-Mar-2020 |
Mark Dykes <mardyk01@review.trustedfirmware.org> |
Merge "aarch32: stop speculative execution past exception returns" into integration
|
| #
6bc24382 |
| 26-Feb-2020 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
aarch32: stop speculative execution past exception returns
aarch32 CPUs speculatively execute instructions following a ERET as if it was not a jump instruction. This could lead to cache-based side c
aarch32: stop speculative execution past exception returns
aarch32 CPUs speculatively execute instructions following a ERET as if it was not a jump instruction. This could lead to cache-based side channel vulnerabilities. The software fix is to place barrier instructions following ERET.
The counterpart patch for aarch64 is merged: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=f461fe346b728d0e88142fd7b8f2816415af18bc
Change-Id: I2aa3105bee0b92238f389830b3a3b8650f33af3d Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
show more ...
|
| #
5ba32a76 |
| 21-Feb-2019 |
Antonio Niño Díaz <antonio.ninodiaz@arm.com> |
Merge pull request #1828 from uarif1/master
Introduce Versatile Express FVP platform to arm-trusted-firmware.
|
| #
a5aa25af |
| 12-Dec-2018 |
Usama Arif <usama.arif@arm.com> |
Division functionality for cores that dont have divide hardware.
Cortex a5 doesnt support hardware division such as sdiv and udiv commands. This commit adds a software division function in assembly
Division functionality for cores that dont have divide hardware.
Cortex a5 doesnt support hardware division such as sdiv and udiv commands. This commit adds a software division function in assembly as well as include appropriate files for software divison.
The software division algorithm is a modified version obtained from: http://www.keil.com/support/man/docs/armasm/armasm_dom1359731155623.htm
Change-Id: Ib405a330da5f1cea1e68e07e7b520edeef9e2652 Signed-off-by: Usama Arif <usama.arif@arm.com>
show more ...
|
| #
9a207532 |
| 04-Jan-2019 |
Antonio Niño Díaz <antonio.ninodiaz@arm.com> |
Merge pull request #1726 from antonio-nino-diaz-arm/an/includes
Sanitise includes across codebase
|
| #
09d40e0e |
| 14-Dec-2018 |
Antonio Nino Diaz <antonio.ninodiaz@arm.com> |
Sanitise includes across codebase
Enforce full include path for includes. Deprecate old paths.
The following folders inside include/lib have been left unchanged:
- include/lib/cpus/${ARCH} - inclu
Sanitise includes across codebase
Enforce full include path for includes. Deprecate old paths.
The following folders inside include/lib have been left unchanged:
- include/lib/cpus/${ARCH} - include/lib/el3_runtime/${ARCH}
The reason for this change is that having a global namespace for includes isn't a good idea. It defeats one of the advantages of having folders and it introduces problems that are sometimes subtle (because you may not know the header you are actually including if there are two of them).
For example, this patch had to be created because two headers were called the same way: e0ea0928d5b7 ("Fix gpio includes of mt8173 platform to avoid collision."). More recently, this patch has had similar problems: 46f9b2c3a282 ("drivers: add tzc380 support").
This problem was introduced in commit 4ecca33988b9 ("Move include and source files to logical locations"). At that time, there weren't too many headers so it wasn't a real issue. However, time has shown that this creates problems.
Platforms that want to preserve the way they include headers may add the removed paths to PLAT_INCLUDES, but this is discouraged.
Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8f Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
show more ...
|
| #
f5478ded |
| 17-Dec-2018 |
Antonio Nino Diaz <antonio.ninodiaz@arm.com> |
Reorganize architecture-dependent header files
The architecture dependant header files in include/lib/${ARCH} and include/common/${ARCH} have been moved to /include/arch/${ARCH}.
Change-Id: I96f30f
Reorganize architecture-dependent header files
The architecture dependant header files in include/lib/${ARCH} and include/common/${ARCH} have been moved to /include/arch/${ARCH}.
Change-Id: I96f30fdb80b191a51448ddf11b1d4a0624c03394 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
show more ...
|