| bd141810 | 15-Dec-2025 |
Jackson Cooper-Driver <jackson.cooper-driver@arm.com> |
fix(rse): remove host ROTPK support and test
Remove support for the retrieving a host ROTPK from the RSE, as the RSE no longer has host ROTPKs provisioned by default. Also remove the TC test which v
fix(rse): remove host ROTPK support and test
Remove support for the retrieving a host ROTPK from the RSE, as the RSE no longer has host ROTPKs provisioned by default. Also remove the TC test which verified this feature.
BREAKING CHANGE: platforms can no longer retrieve the host ROTPK from the RSE as these are no longer provisioned.
Change-Id: I2c852855e53c36e77f639f17f4c181290d95ccff Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com>
show more ...
|
| 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 ...
|
| 650bfcbd | 11-Dec-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cpufeat): always provide pauth context helper
We need to be able to work on the structure with or without pauth. Arrange the getter so that it can compile even if it wouldn't be functional.
Cha
fix(cpufeat): always provide pauth context helper
We need to be able to work on the structure with or without pauth. Arrange the getter so that it can compile even if it wouldn't be functional.
Change-Id: I563680fc76f4e08d3e77e01ed7525d09c7c617ab Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 7fe0cd3c | 10-Dec-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "fix(cm): remove set_aapcs_args functions" into integration |
| 252b2ff8 | 27-Nov-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cm): remove set_aapcs_args functions
These functions were added as wrappers on context but were never used, mainly because we sometimes only have a reference to the gpregs sub-struct. Remove the
fix(cm): remove set_aapcs_args functions
These functions were added as wrappers on context but were never used, mainly because we sometimes only have a reference to the gpregs sub-struct. Remove them to reduce clutter.
Change-Id: If10dade6ea9cc90384344cf0149482574cf0e116 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| c130f923 | 14-Nov-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(security): add CVE-2024-7881 mitigation to C1-Ultra CPU
This patch mitigates Cat B erratum 3651221 [2] / CVE-2024-7881 [1] for C1-Ultra CPU. This CVE applies to r0p0 and is fixed in r1p0 [2].
T
fix(security): add CVE-2024-7881 mitigation to C1-Ultra CPU
This patch mitigates Cat B erratum 3651221 [2] / CVE-2024-7881 [1] for C1-Ultra CPU. This CVE applies to r0p0 and is fixed in r1p0 [2].
This CVE can be mitigated by disabling the affected prefetcher setting CPUACTLR6_EL1[41].
[1] https://developer.arm.com/documentation/110326/latest/ [2] https://developer.arm.com/documentation/111077/latest/
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I7815d6fc9af812c38b1c05881c850b8209d6ad7c
show more ...
|
| 83ad6bae | 14-Nov-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
fix(security): add CVE-2024-7881 mitigation to C1-Premium CPU
This patch mitigates Cat B erratum 3651221 [2] / CVE-2024-7881 [1] for C1-Premium CPU. This CVE applies to r0p0 and is fixed in r1p0 [2]
fix(security): add CVE-2024-7881 mitigation to C1-Premium CPU
This patch mitigates Cat B erratum 3651221 [2] / CVE-2024-7881 [1] for C1-Premium CPU. This CVE applies to r0p0 and is fixed in r1p0 [2].
This CVE can be mitigated by disabling the affected prefetcher setting CPUACTLR6_EL1[41].
[1] https://developer.arm.com/documentation/110326/latest/ [2] https://developer.arm.com/documentation/111078/latest/
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I70b50700bc1618e0f8f4121efc9fe89e2742ed74
show more ...
|
| 2bd15121 | 04-Dec-2025 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "xl/a725-errata" into integration
* changes: fix(cpus): workaround for Cortex-A725 erratum 3456106 fix(cpus): workaround for Cortex-A725 erratum 3711914 fix(cpus): wor
Merge changes from topic "xl/a725-errata" into integration
* changes: fix(cpus): workaround for Cortex-A725 erratum 3456106 fix(cpus): workaround for Cortex-A725 erratum 3711914 fix(cpus): workaround for Cortex-A725 erratum 2936490 fix(cpus): workaround for Cortex-A725 erratum 2874943
show more ...
|
| ba7716bb | 10-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A725 erratum 3711914
Cortex-A725 erratum 3711914 is a Cat B erratum that applies to revisions r0p0 and r0p1 and it is fixed in r0p2.
This erratum can be avoided by
fix(cpus): workaround for Cortex-A725 erratum 3711914
Cortex-A725 erratum 3711914 is a Cat B erratum that applies to revisions r0p0 and r0p1 and it is fixed in r0p2.
This erratum can be avoided by inserting a DMB LD after each DSB ST instruction.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2832921/latest/
Change-Id: If3b9d3a0f495b3a172d3e6e5ca7afa8c30aeb4ea Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| d9a21d3c | 10-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A725 erratum 2936490
Cortex-A725 erratum 2936490 is a Cat B erratum that applies to revisions in r0p0, and is fixed in r0p1.
This erratum can be avoided by setting
fix(cpus): workaround for Cortex-A725 erratum 2936490
Cortex-A725 erratum 2936490 is a Cat B erratum that applies to revisions in r0p0, and is fixed in r0p1.
This erratum can be avoided by setting CPUACTLR2_EL1[37] to 1. Setting this bit is expected to have a negligible performance impact.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2832921/latest/
Change-Id: I9833f8831ba3735a94763791a65be11b95c00bdb Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| 74d75753 | 10-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A725 erratum 2874943
Cortex-A725 erratum 2874943 is a Cat B erratum that applies to revision r0p0 when FEAT_SPE is enabled, it is fixed in r0p1.
This erratum can be
fix(cpus): workaround for Cortex-A725 erratum 2874943
Cortex-A725 erratum 2874943 is a Cat B erratum that applies to revision r0p0 when FEAT_SPE is enabled, it is fixed in r0p1.
This erratum can be avoided by setting bits[58:57] to 0b11 in CPUACTLR_EL1.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2832921/latest/
Change-Id: I686bbde8756d52afee92097ec05b97138b550025 Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| d428b422 | 05-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A76AE erratum 1969401
Cortex-A76AE erratum 1969401 is a Cat B erratum that applies to r0p0 and r1p0, it is fixed in r1p1.
This erratum can be avoided by inserting a
fix(cpus): workaround for Cortex-A76AE erratum 1969401
Cortex-A76AE erratum 1969401 is a Cat B erratum that applies to r0p0 and r1p0, it is fixed in r1p1.
This erratum can be avoided by inserting a DMB ST before acquire atomic instructions without release semantics.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1277541/1700/?lang=en
Change-Id: I893452450d430833e6c5a8e33a1e37b708218576 Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| 16de9fae | 05-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A76AE erratum 1931435
Cortex-A76AE erratum 1931435 is a Cat B erratum that applies to r0p0 and r1p0, it is fixed in r1p1.
This erratum can be avoided by setting CPU
fix(cpus): workaround for Cortex-A76AE erratum 1931435
Cortex-A76AE erratum 1931435 is a Cat B erratum that applies to r0p0 and r1p0, it is fixed in r1p1.
This erratum can be avoided by setting CPUACTLR_EL1[13] to 1. This bit delays instruction fetch after branch misprediction. This workaround will have a small impact on performance.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1277541/1700/?lang=en
Change-Id: I1baba8752f5f2e2ab5c873030e1f00cbb8cf1e60 Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| 46f364fa | 05-Nov-2025 |
Xialin Liu <xialin.liu@arm.com> |
fix(cpus): workaround for Cortex-A76AE erratum 1931427
Cortex-A76AE erratum 1931427 is a Cat B erratum that applies to r0p0 and r1p0, it is fixed in r1p1.
This erratum can be avoided by setting CPU
fix(cpus): workaround for Cortex-A76AE erratum 1931427
Cortex-A76AE erratum 1931427 is a Cat B erratum that applies to r0p0 and r1p0, it is fixed in r1p1.
This erratum can be avoided by setting CPUACTLR2_EL1[2] to 1. The bit to force Atomic Store operations to write-back memory to be performed in the L1 data cache.
SDEN documentation: https://developer.arm.com/documentation/SDEN-1277541/1700/?lang=en
Change-Id: I31566838f894372e5627abda8b0bea1505f11f5d Signed-off-by: Xialin Liu <xialin.liu@arm.com>
show more ...
|
| 02b22a5a | 01-Dec-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "tc-lsc-25-cpu-libs" into integration
* changes: feat(cpus): add support for LSC25 E-core CPU feat(cpus): add support for LSC25 P-core CPU |
| 17511817 | 01-Dec-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "fix(gpt): remove unused `gpt_disable` function" into integration |
| 764e2bd9 | 24-Nov-2025 |
Ludovic Mermod <ludovic.mermod@arm.com> |
fix(gpt): remove unused `gpt_disable` function
After GPT protections are enabled, there are no scenarios where they need to be disabled, similarly to how TZC-400 protections are not disabled after b
fix(gpt): remove unused `gpt_disable` function
After GPT protections are enabled, there are no scenarios where they need to be disabled, similarly to how TZC-400 protections are not disabled after being setup.
Change-Id: I7eae3147130c7a6c3b7b3e9c10e8e7229f32505d Signed-off-by: Ludovic Mermod <ludovic.mermod@arm.com>
show more ...
|
| 0ee188d0 | 28-Oct-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(psci): get the cpu_ops before exiting coherency
It is possible for the cpu_data structure to be cached somewhere in the cache hierarchy. When HW_ASSISTED_COHERENCY == 0 we flush the core's priva
fix(psci): get the cpu_ops before exiting coherency
It is possible for the cpu_data structure to be cached somewhere in the cache hierarchy. When HW_ASSISTED_COHERENCY == 0 we flush the core's private caches (usually the L1). However, the destination might be shared caches (eg DSU L2 cache) so when we subsequently dereference the cpu_data pointer we could get a stale value.
So dereference it prior to disabling the caches to avoid this scenario and do all accesses from a coherent view of memory.
Change-Id: If118ca8c0436dd04d6ad0d57073d69305a7f41cb Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| f7ccf126 | 14-Nov-2025 |
Chris Kay <chris.kay@arm.com> |
fix(per-cpu): remove redundant casts
The casts replaced in this change were redundant; they were initially added after some consideration of pointer provenance, but in these particular cases loss of
fix(per-cpu): remove redundant casts
The casts replaced in this change were redundant; they were initially added after some consideration of pointer provenance, but in these particular cases loss of provenance is deliberate.
Change-Id: I9971fd47155b4ec395b2d8d7991c215d0c6a06d3 Signed-off-by: Chris Kay <chris.kay@arm.com>
show more ...
|
| bff6e602 | 04-Mar-2025 |
Ryan Everett <ryan.everett@arm.com> |
feat(cpus): add support for LSC25 E-core CPU
Add basic CPU library code to support the Large Screen Compute 2025 E-core CPU.
Change-Id: Ibda2e8441d3a3e35941448b483d07e17db2ef234 Signed-off-by: Ryan
feat(cpus): add support for LSC25 E-core CPU
Add basic CPU library code to support the Large Screen Compute 2025 E-core CPU.
Change-Id: Ibda2e8441d3a3e35941448b483d07e17db2ef234 Signed-off-by: Ryan Everett <ryan.everett@arm.com> Signed-off-by: Aditya Deshpande <aditya.deshpande@arm.com>
show more ...
|
| e1fbad0b | 04-Mar-2025 |
Ryan Everett <ryan.everett@arm.com> |
feat(cpus): add support for LSC25 P-core CPU
Add basic CPU library code to support the Large Screen Compute 2025 P-core CPU.
Change-Id: Icfd2fdbaed577e64cb2db028416a6eca5ba2cfcf Signed-off-by: Ryan
feat(cpus): add support for LSC25 P-core CPU
Add basic CPU library code to support the Large Screen Compute 2025 P-core CPU.
Change-Id: Icfd2fdbaed577e64cb2db028416a6eca5ba2cfcf Signed-off-by: Ryan Everett <ryan.everett@arm.com> Signed-off-by: Aditya Deshpande <aditya.deshpande@arm.com>
show more ...
|
| e655b00d | 10-Nov-2025 |
Mark Dykes <mark.dykes@arm.com> |
Merge changes from topic "gr/cov_fixes" into integration
* changes: fix(libc): fix coverity overflowed constant fix(libc): fix coverity overflowed constant fix(psci): fix coverity issue with o
Merge changes from topic "gr/cov_fixes" into integration
* changes: fix(libc): fix coverity overflowed constant fix(libc): fix coverity overflowed constant fix(psci): fix coverity issue with out-of-bounds read fix(fvp): fix coverity issue unsigned_compare
show more ...
|
| f396aec8 | 09-Sep-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
feat(cpufeat): add support for FEAT_IDTE3
This patch adds support for FEAT_IDTE3, which introduces support for handling the trapping of Group 3 and Group 5 (only GMID_EL1) registers to EL3 (unless t
feat(cpufeat): add support for FEAT_IDTE3
This patch adds support for FEAT_IDTE3, which introduces support for handling the trapping of Group 3 and Group 5 (only GMID_EL1) registers to EL3 (unless trapped to EL2). IDTE3 allows EL3 to modify the view of ID registers for lower ELs, and this capability is used to disable fields of ID registers tied to disabled features.
The ID registers are initially read as-is and stored in context. Then, based on the feature enablement status for each world, if a particular feature is disabled, its corresponding field in the cached ID register is set to Res0. When lower ELs attempt to read an ID register, the cached ID register value is returned. This allows EL3 to prevent lower ELs from accessing feature-specific system registers that are disabled in EL3, even though the hardware implements them.
The emulated ID register values are stored primarily in per-world context, except for certain debug-related ID registers such as ID_AA64DFR0_EL1 and ID_AA64DFR1_EL1, which are stored in the cpu_data and are unique to each PE. This is done to support feature asymmetry that is commonly seen in debug features.
FEAT_IDTE3 traps all Group 3 ID registers in the range op0 == 3, op1 == 0, CRn == 0, CRm == {2–7}, op2 == {0–7} and the Group 5 GMID_EL1 register. However, only a handful of ID registers contain fields used to detect features enabled in EL3. Hence, we only cache those ID registers, while the rest are transparently returned as is to the lower EL.
This patch updates the CREATE_FEATURE_FUNCS macro to generate update_feat_xyz_idreg_field() functions that disable ID register fields on a per-feature basis. The enabled_worlds scope is used to disable ID register fields for security states where the feature is not enabled.
This EXPERIMENTAL feature is controlled by the ENABLE_FEAT_IDTE3 build flag and is currently disabled by default.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I5f998eeab81bb48c7595addc5595313a9ebb96d5
show more ...
|
| 98859b99 | 29-Jan-2025 |
Sammit Joshi <sammit.joshi@arm.com> |
feat(per-cpu): integrate per-cpu framework into BL31/BL32
Integrate per-cpu support into BL31/BL32 by extending the following areas:
Zero-initialization: Treats per-cpu sections like .bss and clear
feat(per-cpu): integrate per-cpu framework into BL31/BL32
Integrate per-cpu support into BL31/BL32 by extending the following areas:
Zero-initialization: Treats per-cpu sections like .bss and clears them during early C runtime initialization. For platforms that enable NUMA_AWARE_PER_CPU, invokes a platform hook to zero-initialize node-specific per-cpu regions.
Cache maintenance: Extends the BL31 exit path to clean dcache lines covering the per-cpu region, ensuring data written by the primary core is visible to secondary cores.
tpidr_el3 setup: Initializes tpidr_el3 with the base address of the current CPU’s per-cpu section. This allows per-cpu framework to resolve local cpu accesses efficiently.
The percpu_data object is currently stored in tpidr_el3. Since the per-cpu framework will use tpidr_el3 for this-cpu access, percpu_data must be migrated to avoid conflict. This commit moves percpu_data to the per-cpu framework.
Signed-off-by: Sammit Joshi <sammit.joshi@arm.com> Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> Change-Id: Iff0c2e1f8c0ebd25c4bb0b09bfe15dd4fbe20561
show more ...
|