| d64d4215 | 29-Aug-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A510 erratum 2008766
Cortex-A510 erratum 2008766 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
fix(cpus): workaround for Cortex-A510 erratum 2008766
Cortex-A510 erratum 2008766 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2, r0p3, r1p0, r1p1, r1p2 and r1p3, and is still open.
The workaround is to clear the ERXCTLR_EL1.ED bit before power down, which will cause any detected errors during power down to be ignored.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1873361/latest/
Change-Id: Id1aa0f2c518a055363c962f9abdb27e1ee8bff18 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| 2e1dff2d | 19-Sep-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
fix(tc): fix c1_pro power down abandon
Following merge of [1] and [2] the fix to power down abandon for Arm C1-Pro core got lost. Restore it.
[1] https://review.trustedfirmware.org/c/TF-A/trusted-f
fix(tc): fix c1_pro power down abandon
Following merge of [1] and [2] the fix to power down abandon for Arm C1-Pro core got lost. Restore it.
[1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/43191 [2] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/42920
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com> Change-Id: I7da12e5ffc61248922adaf629eb52a5283993188
show more ...
|
| ccf67965 | 21-Aug-2025 |
Sumit Garg <sumit.garg@oss.qualcomm.com> |
fix(cm): deprecate use of NS_TIMER_SWITCH
On AArch64, secure world has it's own EL3 physical timer registers accessible to secure EL1 in absence of S-EL2. With S-EL2 there is virtualized view availa
fix(cm): deprecate use of NS_TIMER_SWITCH
On AArch64, secure world has it's own EL3 physical timer registers accessible to secure EL1 in absence of S-EL2. With S-EL2 there is virtualized view available for EL1 timer registers. So it is unreasonable for secure world to use non-secure EL1 physical timer registers. Moreover, the non-secure operating system (Linux in our case) relies heavily on these EL1 physical timer registers for scheduling decisions. If NS_TIMER_SWITCH is enabled, it simply breaks the preemption model of the non-secure world by disabling non-secure timer interrupts leading to RCU stalls being observed on long running secure world tasks.
The only arch timer register which will benefit from context management is cntkctl_el1: Counter-timer Kernel Control Register. This enables the secure and non-secure worlds to independently control accesses to EL0 for counter-timer registers. This is something that OP-TEE uses to enable ftrace feature for Trusted Applications and SPM_MM uses for EL0 access as well.
Lets enable context management of cntkctl_el1 by default and deprecate conditional context management of non-secure EL1 physical timer registers for whom there isn't any upstream user. With that deprecate this NS_TIMER_SWITCH build option which just adds confusion for the platform maintainers. It will be eventually dropped following deprecation policy of TF-A.
Reported-by: Stauffer Thomas MTANA <thomas.stauffer@mt.com> Reported-by: Andrew Davis <afd@ti.com> Change-Id: Ifb3a919dc0bf8c05c38895352de5fe94b4f4387e Signed-off-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
show more ...
|
| 7dae0451 | 04-Sep-2025 |
Min Yao Ng <minyao.ng@arm.com> |
chore(tc): align core names to Arm Lumex
Adopt core names aligned to Arm Lumex [1]
Nevis => C1-Nano Gelas => C1-Pro Travis => C1-Ultra Alto => C1-Premium
C1-Pro TRM: https://developer.arm.com/docu
chore(tc): align core names to Arm Lumex
Adopt core names aligned to Arm Lumex [1]
Nevis => C1-Nano Gelas => C1-Pro Travis => C1-Ultra Alto => C1-Premium
C1-Pro TRM: https://developer.arm.com/documentation/107771/0102/ C1-Ultra TRM: https://developer.arm.com/documentation/108014/0100/ C1-Premium TRM: https://developer.arm.com/documentation/109416/0100/ C1-Nano TRM: https://developer.arm.com/documentation/107753/0001/
[1]: https://www.arm.com/product-filter?families=c1%20cpus https://www.arm.com/products/mobile/compute-subsystems/lumex
Signed-off-by: Min Yao Ng <minyao.ng@arm.com> Signed-off-by: Olivier Deprez <olivier.deprez@arm.com> Change-Id: Id4b487ef6a6fd1b00b75b09c5d06d81bce50a15d Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| 661e8b9d | 18-Sep-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "feat(cpus): add pabandon support to Nevis" into integration |
| 6588ce0a | 18-Sep-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpus): add pabandon support to Nevis
Nevis' TRM says that a powerdown attempt may be abandoned for a handful of reasons. Add support for handling this.
It also says that if the SME2 engine is
feat(cpus): add pabandon support to Nevis
Nevis' TRM says that a powerdown attempt may be abandoned for a handful of reasons. Add support for handling this.
It also says that if the SME2 engine is not properly disconnected, then a powerdown request will be rejected. Require ERRATA_SME_POWER_DOWN be set to avoid this.
Just like Gelas/Travis, the 11.28 model doesn't reset the bit, so a workaround is necessary.
Change-Id: I0d5de1b0e772f6b4d656e841fb4bcf8fd859f293 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 6dacf15c | 18-Sep-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpus): fix external LLC presence bit in Neoverse N3" into integration |
| 3077e437 | 18-Sep-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(cpufeat): configure CPTR_EL2.ZEN and CPTR_EL2.TZ to match Linux" into integration |
| ff90ce41 | 26-Aug-2025 |
Younghyun Park <younghyunpark@google.com> |
feat(cpus): fix external LLC presence bit in Neoverse N3
Unlike Neoverse N2, Neoverse N3 incorporates the External LLC presence bit in CPUECTLR2_EL1.SW_EXT_LLC. In addition, the default value is ext
feat(cpus): fix external LLC presence bit in Neoverse N3
Unlike Neoverse N2, Neoverse N3 incorporates the External LLC presence bit in CPUECTLR2_EL1.SW_EXT_LLC. In addition, the default value is external LLC in Neoverse N3, so the bit will be cleared when NEOVERSE_Nx_EXTERNAL_LLC is not enabled.
Change-Id: I1182aba5423e74748efd2571cc3817634ada748d Signed-off-by: Younghyun Park <younghyunpark@google.com>
show more ...
|
| b67e9846 | 13-May-2025 |
Harrison Mutai <harrison.mutai@arm.com> |
build(measured-boot)!: move to ext event log lib
Removes in-tree Event Log library implementation and updates all references to use the external submodule. Updates include paths, Makefile macros, an
build(measured-boot)!: move to ext event log lib
Removes in-tree Event Log library implementation and updates all references to use the external submodule. Updates include paths, Makefile macros, and platform integration logic to link with lib as a static library.
If you cloned TF-A without the `--recurse-submodules` flag, you can ensure that this submodule is present by running:
git submodule update --init --recursive
BREAKING-CHANGE: LibEventLog is now included in TF-A as a submodule. Please run `git submodule update --init --recursive` if you encounter issues after migrating to the latest version of TF-A.
Change-Id: I723f493033c178759a45ea04118e7cc295dc2438 Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| c0ef365b | 17-Sep-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "fix(debugfs): set debugfs smc start to vendor EL3" into integration |
| 02ba6dd3 | 16-Sep-2025 |
Yann Gautier <yann.gautier@st.com> |
Merge changes from topic "sbsa2" into integration
* changes: feat(qemu): skip paged image info feat(optee): check paged image size feat(qemu-sbsa): support s-el2 and s-el1 spmc |
| dfdb73f7 | 16-Sep-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "bk/no_blx_setup" into integration
* changes: fix: replace stray BL2_AT_EL3 with RESET_TO_BL2 refactor(aarch64): move BL31 specific setup out of the PSCI entrypoint re
Merge changes from topic "bk/no_blx_setup" into integration
* changes: fix: replace stray BL2_AT_EL3 with RESET_TO_BL2 refactor(aarch64): move BL31 specific setup out of the PSCI entrypoint refactor: unify blx_setup() and blx_main() fix(bl2): unify the BL2 EL3 and RME entrypoints
show more ...
|
| c9e91b24 | 15-Jul-2025 |
Jens Wiklander <jens.wiklander@linaro.org> |
feat(optee): check paged image size
The base and size of the paged image is passed in arg1 and arg2. If the image size is 0 it's unnecessary to pass an unused image base, so check the size before up
feat(optee): check paged image size
The base and size of the paged image is passed in arg1 and arg2. If the image size is 0 it's unnecessary to pass an unused image base, so check the size before updating arg1 and arg2.
Change-Id: Iebf621cc1a86a99d9128ddfbc327285cf8cf771c Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 7f471c59 | 01-Sep-2025 |
Marek Vasut <marek.vasut+renesas@mailbox.org> |
fix(cpufeat): configure CPTR_EL2.ZEN and CPTR_EL2.TZ to match Linux
Linux Documentation/arch/arm64/booting.rst states that: " For CPUs with the Scalable Vector Extension (FEAT_SVE) present: ... -
fix(cpufeat): configure CPTR_EL2.ZEN and CPTR_EL2.TZ to match Linux
Linux Documentation/arch/arm64/booting.rst states that: " For CPUs with the Scalable Vector Extension (FEAT_SVE) present: ... - If the kernel is entered at EL1 and EL2 is present: - CPTR_EL2.TZ (bit 8) must be initialised to 0b0. - CPTR_EL2.ZEN (bits 17:16) must be initialised to 0b11. " Without these settings, Linux kernel hangs on boot when trying to use SVE. Adjust the register settings to match Linux kernel expectations.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Change-Id: I9a72810dd902b08f9c61f157cc31e603aad2f73a
show more ...
|
| 360460a1 | 01-Sep-2025 |
Andre Przywara <andre.przywara@arm.com> |
fix(cpus): use correct Makefile indentation for CVE-2018-3639 check
Makefiles need to use spaces for indentation when using make syntax, tabs are reserved for (shell) recipes.
Replace tabs with spa
fix(cpus): use correct Makefile indentation for CVE-2018-3639 check
Makefiles need to use spaces for indentation when using make syntax, tabs are reserved for (shell) recipes.
Replace tabs with spaces on the WORKAROUND_CVE_2018_3639 check, to fix the error report when WORKAROUND_CVE_2018_3639 is disabled: lib/cpus/cpu-ops.mk:1147: *** recipe commences before first target. Stop.
Also this revealed that DYNAMIC_WORKAROUND_CVE_2018_3639 was not initialised, so it always triggered that condition. Set it to 0, to allow disabling WORKAROUND_CVE_2018_3639 on the command line.
Use the opportunity to also convert some unrelated tab to spaces, in a line continuation.
Change-Id: Ieb56af33a11c40b6753738669eee929c264261cf Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 63900851 | 11-Sep-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(aarch64): move BL31 specific setup out of the PSCI entrypoint
We've charged the PSCI entrypoint with doing BL31 specific things like setting up the EL3 context and doing feature detection.
refactor(aarch64): move BL31 specific setup out of the PSCI entrypoint
We've charged the PSCI entrypoint with doing BL31 specific things like setting up the EL3 context and doing feature detection. Well, this is irrelevant for sp_min and not really appropriate for PSCI. So move it to the bl31_warmboot() function to reflect this correctly and bring the feature detection a bit earlier, hopefully spotting more errors.
This allows for a pair of minor cleanups - we can pass the core_pos to psci_warmboot_entrypoint() without having to refetch it, and we can put the pauth enablement in cm_manage_extensions_el3() along with all others. The call of that function is kept after the MMU is turned on so that we have nicer (coherent) access to cpu_data.
Change-Id: Id031cfa0e1d8fe98919a14f9db73eb5bc9e00f67 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| d158d425 | 13-Aug-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor: unify blx_setup() and blx_main()
All BLs have a bl_setup() for things that need to happen early, a fall back into assembly and then bl_main() for the main functionality. This was necessary
refactor: unify blx_setup() and blx_main()
All BLs have a bl_setup() for things that need to happen early, a fall back into assembly and then bl_main() for the main functionality. This was necessary in order to fiddle with PAuth related things that tend to break C calls. Since then PAuth's enablement has seen a lot of refactoring and this is now worked around cleanly so the distinction can be removed. The only tradeoff is that this requires pauth to not be used for the top-level main function.
There are two main benefits to doing this: First, code is easier to understand as it's all together and the entrypoint is smaller. Second, the compiler gets to see more of the code and apply optimisations (importantly LTO).
Change-Id: Iddb93551115a2048988017547eb7b8db441dbd37 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 4db17f4e | 09-Sep-2025 |
Slava Andrianov <slava.andrianov@arm.com> |
fix(debugfs): set debugfs smc start to vendor EL3
The smc calls for debugfs were moved from the sip service to the vendor specific EL3 service [1], so the debugfs smc call handler needs to be update
fix(debugfs): set debugfs smc start to vendor EL3
The smc calls for debugfs were moved from the sip service to the vendor specific EL3 service [1], so the debugfs smc call handler needs to be updated to reflect this change so that it does not view debugfs smc calls to be invalid.
[1]: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/26917
Change-Id: Ic24e3b7ab4c8a37b888aaf11060da0bc8abe072d Signed-off-by: Slava Andrianov <slava.andrianov@arm.com>
show more ...
|
| cd08e788 | 11-Sep-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "fix(xlat): typecast expressions to match data type" into integration |
| 98a2af68 | 12-Feb-2025 |
Saivardhan Thatikonda <saivardhan.thatikonda@amd.com> |
fix(xlat): add missing curly braces
This corrects the MISRA violation C2012-15.6: The body of an iteration-statement or a selection-statement shall be a compound-statement.Enclosed statement body wi
fix(xlat): add missing curly braces
This corrects the MISRA violation C2012-15.6: The body of an iteration-statement or a selection-statement shall be a compound-statement.Enclosed statement body within the curly braces.
Change-Id: I4e429a51fec577728f7552d4aad9a546c6cbaefb Signed-off-by: Saivardhan Thatikonda <saivardhan.thatikonda@amd.com>
show more ...
|
| 3a9a7038 | 10-Sep-2025 |
Yann Gautier <yann.gautier@st.com> |
Merge "fix(smccc): resolve caller world confusion" into integration |
| 19e4312c | 02-Sep-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "feat(cpufeat): enable FEAT_MPAM_PE_BW_CTRL support" into integration |
| 9bc1e599 | 02-Sep-2025 |
AlexeiFedorov <Alexei.Fedorov@arm.com> |
fix(gpt): fix fill_l1_cont_desc() function
GPT library function fill_l1_cont_desc() writes contiguous descriptors and is called in a loop by fill_l1_tbl() which fills out GPI entries in in a single
fix(gpt): fix fill_l1_cont_desc() function
GPT library function fill_l1_cont_desc() writes contiguous descriptors and is called in a loop by fill_l1_tbl() which fills out GPI entries in in a single L1 table. The loop terminates when the address of the first granule in range 'first' exceeds address of the last granule (inclusive) 'last'. This patch fixes the issue when fill_l1_cont_desc() was iterating through all matching contiguous block sizes 512, 32 and 2MB in a loop and filling consecutive smaller descriptors instead of filling a single one with a maximum size. This resulted for memory region 0x80000000 of size 1.5GB (3*512MB)to be filled with 2 512MB, 8 32MB and 128 2MB contiguous descriptors instead of 3 512MB descriptors with build option RME_GPT_MAX_BLOCK=512. This patch also removes unused definition of ARM_PAS_GPI_ANY macro in fvp_pas_def.h.
Change-Id: I9fcff512af306a57d17dee0bade74d2f3f79b5e9 Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
show more ...
|
| aabab09e | 01-Sep-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes Id38d6f1b,I5fcfe8dd,I7f3b50e5 into integration
* changes: fix(cpus): inform the compiler that struct cpu_ops is aligned refactor(el3-runtime): move the initialisation of the cpu_op
Merge changes Id38d6f1b,I5fcfe8dd,I7f3b50e5 into integration
* changes: fix(cpus): inform the compiler that struct cpu_ops is aligned refactor(el3-runtime): move the initialisation of the cpu_ops_ptr to C fix(aarch32): make get_cpu_ops_ptr() PCS compliant
show more ...
|