| #
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 ...
|
| #
b5deac9a |
| 27-Oct-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "comp_build_macro" into integration
* changes: feat(build): setting CRYPTO_LIB via CRYPTO_SUPPORT feat(build): set CRYPTO_SUPPORT macro per BL feat(build): create defi
Merge changes from topic "comp_build_macro" into integration
* changes: feat(build): setting CRYPTO_LIB via CRYPTO_SUPPORT feat(build): set CRYPTO_SUPPORT macro per BL feat(build): create define macro to be used by BL
show more ...
|
| #
cd92fb24 |
| 28-Jul-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
feat(build): setting CRYPTO_LIB via CRYPTO_SUPPORT
Setting CRYPTO_LIB based on CRYPTO_SUPPORT via the CRYPTO_SUPPORT macro to be called by component-specific makefiles.
Signed-off-by: Lauren Wehrme
feat(build): setting CRYPTO_LIB via CRYPTO_SUPPORT
Setting CRYPTO_LIB based on CRYPTO_SUPPORT via the CRYPTO_SUPPORT macro to be called by component-specific makefiles.
Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com> Change-Id: Ib400e4668c60c24bb4399de6a320b5c16205affb
show more ...
|
| #
6e2fe623 |
| 06-Jun-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
feat(build): set CRYPTO_SUPPORT macro per BL
Moving the setting of CRYPTO_SUPPORT from the main Makefile to individual component makefiles using the new build macro make_defines for each BL-specific
feat(build): set CRYPTO_SUPPORT macro per BL
Moving the setting of CRYPTO_SUPPORT from the main Makefile to individual component makefiles using the new build macro make_defines for each BL-specific CPPFLAGS.
Rework romlib build command to use CRYPTO_LIB to determine mbedtls need instead of CRYPTO_SUPPORT. If CRYPTO_SUPPORT is set for any component, then CRYPTO_LIB will be filled, romlib can use this instead.
Add a convenience makefile macro for setting CRYPTO_SUPPORT from component specific makefiles, have components call the macro based on whether authenication verification (NEED_AUTH) and/or hash calculation (NEED_HASH) is required for the specific boot stage.
Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com> Change-Id: I7e81fede74fb9c04694b022e8eebed460616565c
show more ...
|
| #
7e8b7096 |
| 14-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes Id711e387,I531a2ee1,Ic5b48514,I81f5f663,I6c529c13, ... into integration
* changes: refactor(romlib): absorb WRAPPER_FLAGS into LDFLAGS fix(build): simplify the -target options fe
Merge changes Id711e387,I531a2ee1,Ic5b48514,I81f5f663,I6c529c13, ... into integration
* changes: refactor(romlib): absorb WRAPPER_FLAGS into LDFLAGS fix(build): simplify the -target options feat(build): allow full LTO builds with clang refactor(build): make sorting of sections generic feat(build): use clang as a linker fix(build): correctly detect that an option is missing with ld_option feat(build): pass cflags to the linker when LTO is enabled
show more ...
|
| #
05d22c30 |
| 13-May-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(build): make sorting of sections generic
All BLs define essentially the same sequence for sorting of sections. Make that generic so it applies more easily.
Change-Id: I81f5f6635232bd43d999
refactor(build): make sorting of sections generic
All BLs define essentially the same sequence for sorting of sections. Make that generic so it applies more easily.
Change-Id: I81f5f6635232bd43d999c8054e290a6437c26c71 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
6c2e5bf6 |
| 11-Apr-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(build): use clang as a linker
To support LTO, the gcc binary is used as a compiler, assembler, and linker. Do the same for clang and enable LTO builds with it as a side effect.
This simplifies
feat(build): use clang as a linker
To support LTO, the gcc binary is used as a compiler, assembler, and linker. Do the same for clang and enable LTO builds with it as a side effect.
This simplifies code quite a bit as the gcc/clang different is much smaller. Support for ld/lld (if overriden with LD) is maintained.
This is a good time to convert tabs to spaces to conform to make's expectations on syntax.
Change-Id: I6c529c1393f7e9e8046ed537f871fc3ad91d599a 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 ...
|
| #
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 ...
|
| #
5765e0c9 |
| 07-Oct-2024 |
Mark Dykes <mark.dykes@arm.com> |
Merge "fix(cpus): modify the fix for Cortex-A75 erratum 764081" into integration
|
| #
7f152ea6 |
| 10-Jul-2024 |
Sona Mathew <sonarebecca.mathew@arm.com> |
fix(cpus): modify the fix for Cortex-A75 erratum 764081
Apply the mitigation only for the revision and variant mentioned in the SDEN.
SDEN Documentation: https://developer.arm.com/documentation/SDE
fix(cpus): modify the fix for Cortex-A75 erratum 764081
Apply the mitigation only for the revision and variant mentioned in the SDEN.
SDEN Documentation: https://developer.arm.com/documentation/SDEN859515/latest
Change-Id: Ifda1f4cb32bdec9a9af29397ddc03bf22a7a87fc Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| #
d3604b35 |
| 16-Apr-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "lto-fixes" into integration
* changes: fix(bl1): add missing `__RW_{START,END}__` symbols fix(fvp): don't check MPIDRs with the power controller in BL1 fix(arm): only
Merge changes from topic "lto-fixes" into integration
* changes: fix(bl1): add missing `__RW_{START,END}__` symbols fix(fvp): don't check MPIDRs with the power controller in BL1 fix(arm): only expose `arm_bl2_dyn_cfg_init` to BL2 fix(cm): hide `cm_init_context_by_index` from BL1 fix(bl1): add missing spinlock dependency
show more ...
|
| #
e40b563e |
| 06-Feb-2024 |
Chris Kay <chris.kay@arm.com> |
fix(bl1): add missing spinlock dependency
The spinlock functions from `spinlock.S` are used by `errata_report.c`, which is pulled into BL1. In a normal build it appears that this function call under
fix(bl1): add missing spinlock dependency
The spinlock functions from `spinlock.S` are used by `errata_report.c`, which is pulled into BL1. In a normal build it appears that this function call undergoes dead code elimination so the link error is not reported, but when compiled with LTO enabled the linker reports an undefined reference.
Change-Id: Id22ffa8c0c8d3ca4b4cd46f0f4aefa53907c8de5 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| #
ef685219 |
| 20-Feb-2024 |
Mark Dykes <mark.dykes@arm.com> |
Merge "build: use toolchain identifiers in conditions" into integration
|
| #
60dd8069 |
| 20-Feb-2024 |
Mark Dykes <mark.dykes@arm.com> |
Merge "build: use new toolchain variables for tools" into integration
|
| #
8620bd0b |
| 04-Dec-2023 |
Chris Kay <chris.kay@arm.com> |
build: use toolchain identifiers in conditions
The toolchain refactor change introduces the `${toolchain}-${tool}-id` variables, which provide identifiers for all of the toolchain tools used by the
build: use toolchain identifiers in conditions
The toolchain refactor change introduces the `${toolchain}-${tool}-id` variables, which provide identifiers for all of the toolchain tools used by the build system. This change replaces the various conditions that are in use to identify these tools based on the path with a standard set of comparisons against these new identifier variables.
Change-Id: Ib60e592359fa6e415c19a012e68d660f87436ca7 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| #
ffb77421 |
| 04-Dec-2023 |
Chris Kay <chris.kay@arm.com> |
build: use new toolchain variables for tools
This change migrates the values of `CC`, `CPP`, `AS` and other toolchain variables to the new `$(toolchain)-$(tool)` variables, which were introduced by
build: use new toolchain variables for tools
This change migrates the values of `CC`, `CPP`, `AS` and other toolchain variables to the new `$(toolchain)-$(tool)` variables, which were introduced by the toolchain refactor patch. These variables should be equivalent to the values that they're replacing.
Change-Id: I644fe4ce82ef1894bed129ddb4b6ab94fb04985d Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| #
e29693d9 |
| 11-Sep-2023 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "feat(fvp): capture timestamps in bl stages" into integration
|
| #
ed8f06dd |
| 12-Jul-2023 |
thagon01-arm <Thaddeus.Gonzalez-Serna@arm.com> |
feat(fvp): capture timestamps in bl stages
When ENABLE_RUNTIME_INSTRUMENTATION flag is set timestamps are captured and output to the fvp console at various boot stages using the PMF library (which a
feat(fvp): capture timestamps in bl stages
When ENABLE_RUNTIME_INSTRUMENTATION flag is set timestamps are captured and output to the fvp console at various boot stages using the PMF library (which are based on aarch timers).
Timestamps are captured at entry and exit points for Bl1, Bl2 and, Bl3 respectively.
Change-Id: I7c0c502e5dbf73d711700b2fe0085ca3eb9346d2 Signed-off-by: Thaddeus Serna <Thaddeus.Gonzalez-Serna@arm.com>
show more ...
|
| #
26d67076 |
| 29-Jun-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes from topic "bk/context_refactor" into integration
* changes: refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init feat(pmu): introduce pmuv3 lib/extensions f
Merge changes from topic "bk/context_refactor" into integration
* changes: refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init feat(pmu): introduce pmuv3 lib/extensions folder fix(pmu): make MDCR_EL3.MTPME=1 out of reset refactor(cm): introduce a real manage_extensions_nonsecure()
show more ...
|
| #
83a4dae1 |
| 16-Feb-2023 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init
The FEAT_MTPMU feature disable runs very early after reset. This means, it needs to be written in assembly, since the C ru
refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init
The FEAT_MTPMU feature disable runs very early after reset. This means, it needs to be written in assembly, since the C runtime has not been initialised yet.
However, there is no need for it to be initialised so soon. The PMU state is only relevant after TF-A has relinquished control. The code to do this is also very verbose and difficult to read. Delaying the initialisation allows for it to happen with the rest of the PMU. Align with FEAT_STATE in the process.
BREAKING CHANGE: This patch explicitly breaks the EL2 entry path. It is currently unsupported.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I2aa659d026fbdb75152469f6d19812ece3488c6f
show more ...
|
| #
1d1d93f1 |
| 26-Apr-2023 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "build(bl1): sort sections by alignment by default" into integration
|
| #
ee62ab3f |
| 06-Jan-2023 |
Chris Kay <chris.kay@arm.com> |
build(bl1): sort sections by alignment by default
This change forces LD to sort all input sections by alignment when allocating them within an output section. This is done in some places explicitly
build(bl1): sort sections by alignment by default
This change forces LD to sort all input sections by alignment when allocating them within an output section. This is done in some places explicitly in the linker scripts today, but this makes sure we don't miss any easy targets.
Change-Id: I69d6acea822036a6365a7ea10fa732b5e0387f52 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| #
3cc02562 |
| 13-Feb-2023 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "mixed-rwx" into integration
* changes: build: permit multiple linker scripts build: clarify linker script generation style: normalize linker script code style fix(p
Merge changes from topic "mixed-rwx" into integration
* changes: build: permit multiple linker scripts build: clarify linker script generation style: normalize linker script code style fix(pie): pass `-fpie` to the preprocessor as well
show more ...
|