| 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 ...
|
| 962958d3 | 29-Jan-2025 |
Rohit Mathew <rohit.mathew@arm.com> |
feat(per-cpu): introduce framework accessors/definers
Introduce per-cpu framework definers and accessors for allocation and access of per-cpu objects. The accessors support "per_cpu_cur" variants fo
feat(per-cpu): introduce framework accessors/definers
Introduce per-cpu framework definers and accessors for allocation and access of per-cpu objects. The accessors support "per_cpu_cur" variants for access on the calling CPU as well as "per_cpu_by_index" variants for access on any CPU. Additionally, the framework supports NUMA-aware allocation, allowing the per-cpu data to be distributed across different memory nodes. This enables the system to allocate per-cpu data on memory nodes closest to the respective CPU, optimising memory access and performance.
Signed-off-by: Sammit Joshi <sammit.joshi@arm.com> Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> Change-Id: I8361602ff626dcfe9405e7e2a28c5d143aaac574
show more ...
|
| 7256cf0a | 29-Jan-2025 |
Rohit Mathew <rohit.mathew@arm.com> |
feat(per-cpu): introduce linker changes for NUMA aware per-cpu framework
This commit introduces linker changes for NUMA aware per-cpu objects in the BL31 and BL32 images. The per-cpu framework is de
feat(per-cpu): introduce linker changes for NUMA aware per-cpu framework
This commit introduces linker changes for NUMA aware per-cpu objects in the BL31 and BL32 images. The per-cpu framework is designed to minimise cache thrashing, and the linker layout ensures each CPU’s per-cpu data is placed on a separate cache line. This isolation is expected to improve performance when the per-cpu framework is enabled.
Signed-off-by: Sammit Joshi <sammit.joshi@arm.com> Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> Change-Id: Ie4d8b4e444971adbd9dba0446d1ab8cafaca1556
show more ...
|
| 5e827bf0 | 24-Oct-2025 |
Timothy Hayes <timothy.hayes@arm.com> |
feat(cpufeat): introduce FEAT_RME_GDI support
This patch adds a new build flag ENABLE_FEAT_RME_GDI to enable this feature, along with defining various related register fields. At this point, when en
feat(cpufeat): introduce FEAT_RME_GDI support
This patch adds a new build flag ENABLE_FEAT_RME_GDI to enable this feature, along with defining various related register fields. At this point, when enabled, this feature enables the SA and NSP GPI encodings by setting the corresponding bits in GPCCR_EL3.
Change-Id: I54152fbb3d19b176264e5d16acbcc866725dc290 Signed-off-by: John Powell <john.powell@arm.com> Signed-off-by: Timothy Hayes <timothy.hayes@arm.com>
show more ...
|
| 09a4bcb8 | 17-Sep-2025 |
Girish Pathak <girish.pathak@arm.com> |
feat(cpufeat): add support for FEAT_RME_GPC2
This change adds support for FEAT_RME_GPC2 and Non-Secure-Only (NSO) Physical Address Space.
Previously, all non-secure (NS) memory was accessible to th
feat(cpufeat): add support for FEAT_RME_GPC2
This change adds support for FEAT_RME_GPC2 and Non-Secure-Only (NSO) Physical Address Space.
Previously, all non-secure (NS) memory was accessible to the secure world and realm world. With GPC2 and the NSO bit in the GPT, memory can now be restricted to the non-secure world only. This is enabled automatically on supported systems when ENABLE_RME is true.
Change-Id: I9b70c3a23c5ec7d83bd787d0fb3edd55934f1d05 Signed-off-by: John Powell <john.powell@arm.com> Signed-off-by: Girish Pathak <girish.pathak@arm.com>
show more ...
|
| 654ab9e0 | 31-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(psci): fix coverity issue with out-of-bounds read
Avoid OVERRUN on parent indices if accidental return negative value from `get_pwr_lvl_state_idx`, so convert everything to use unsigned int to a
fix(psci): fix coverity issue with out-of-bounds read
Avoid OVERRUN on parent indices if accidental return negative value from `get_pwr_lvl_state_idx`, so convert everything to use unsigned int to avoid Out-of-bounds read (OVERRUN)
Change-Id: Ie6d6fd34db9903e99b29e004fb46908aea8acd46 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| 50313d07 | 03-Nov-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "ck/tf-a/tpip-updates" into integration
* changes: chore(compiler-rt): update compiler-rt to v21.1.4 chore(zlib): update zlib to v1.3.1 chore(libfdt): update libfdt to
Merge changes from topic "ck/tf-a/tpip-updates" into integration
* changes: chore(compiler-rt): update compiler-rt to v21.1.4 chore(zlib): update zlib to v1.3.1 chore(libfdt): update libfdt to v1.7.2
show more ...
|
| 75384389 | 06-Oct-2025 |
Rohit Ner <rohitner@google.com> |
feat(cpus): add support for Neoverse-N2 prefetcher
To get accurate and repeatable L2 cache performance metrics, the L2 region prefetcher must be disabled. This prevents speculative fetches from inte
feat(cpus): add support for Neoverse-N2 prefetcher
To get accurate and repeatable L2 cache performance metrics, the L2 region prefetcher must be disabled. This prevents speculative fetches from interfering with the measurements.
This patch adds a build-time option, NEOVERSE_N2_PREFETCHER_DISABLE, to set the PF_DIS bit (bit 15) in the CPUECTLR_EL1 register for this purpose.
Change-Id: Ie7ab9e84bb29d042d0bb2ec697e0c1e39ad5032e Signed-off-by: Rohit Ner <rohitner@google.com>
show more ...
|
| a873d26f | 22-Oct-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(bl1): use per-world context correctly
Currently, the configuration with BL1 and BL2 at SEL1 will transition via el3_exit which will restore per-world context. However, that context is never writ
fix(bl1): use per-world context correctly
Currently, the configuration with BL1 and BL2 at SEL1 will transition via el3_exit which will restore per-world context. However, that context is never written to and so zeroes end up in registers, which is not necessarily correct.
This patch gets BL1 to call cm_manage_extensions_per_world() whenever BL2 runs in a lower EL. This allows the per-world registers to have the reset values we intend. An accompanying call to cm_manage_extensions_el3() is also added for completeness.
Doing this shows a small deficiency in cptr_el3 - bits TFP and TCPAC change a lot. This patch makes them consistent by always setting TCPAC and TFP to 0 which unconditionally enable access to CPTR_EL2 and FPCR by default as they are always accessible. Other places that manipulate the TFP bit are removed.
A nice side effect of all of this is that we're now in a position to enable and use any architectural extension in BL2.
Change-Id: I070d62bbf8e9d9b472caf7e2c931c303523be308 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| 99800361 | 29-Oct-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge "feat(cpus): add support for venom cpu" into integration |
| a055fddd | 27-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(security): remove CVE_2022_23960 Cortex-X4
Cortex-X4 has ECBHB implemented and is protected against X-Context attacks.
Ref: https://developer.arm.com/documentation/110280/latest/ TRM: https://d
fix(security): remove CVE_2022_23960 Cortex-X4
Cortex-X4 has ECBHB implemented and is protected against X-Context attacks.
Ref: https://developer.arm.com/documentation/110280/latest/ TRM: https://developer.arm.com/documentation/102484/0003/The-Cortex-X4--core/Supported-standards-and-specifications?lang=en
Remove WORKAROUND_CVE_2022_23960 for Cortex-X4 to avoid accidental enabling of this workaround and using loop workaround.
This was accidentally added with commit@8c87becbc64f2e233ac905aa006d5e15a63a9a8b
Change-Id: I23f5fa748377a920340b3c5a6584ccfadeea901a Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| a2e22acf | 27-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(security): remove CVE_2022_23960 Neoverse V3
Neoverse V3 has ECBHB implemented and is protected against X-Context attacks.
Ref: https://developer.arm.com/documentation/110280/latest/ TRM: https
fix(security): remove CVE_2022_23960 Neoverse V3
Neoverse V3 has ECBHB implemented and is protected against X-Context attacks.
Ref: https://developer.arm.com/documentation/110280/latest/ TRM: https://developer.arm.com/documentation/107734/0002/The-Neoverse--V3--core/Supported-standards-and-specifications?lang=en
Remove WORKAROUND_CVE_2022_23960 to avoid accidental enabling of this workaround and using loop workaround.
This was accidentally added with commit@c2a15217c3053117f4d39233002cb1830fa96670
Change-Id: I13b27c04c3da5ec80fa79422b4ef4fee64738caa Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| e22ccf01 | 27-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(security): remove CVE_2022_23960 Cortex-A720
Cortex-A720 has ECBHB implemented and is protected against X-Context attacks.
Ref: https://developer.arm.com/documentation/110280/latest/ TRM: https
fix(security): remove CVE_2022_23960 Cortex-A720
Cortex-A720 has ECBHB implemented and is protected against X-Context attacks.
Ref: https://developer.arm.com/documentation/110280/latest/ TRM: https://developer.arm.com/documentation/102530/0002/The-Cortex-A720--core/Supported-standards-and-specifications?lang=en
Remove WORKAROUND_CVE_2022_23960 for Cortex-A720 to avoid accidental enabling of this workaround and using loop workaround.
This was accidentally added with commit@c2a15217c3053117f4d39233002cb1830fa96670
Change-Id: I3c68b5f5d85ede37a6a039369de8ed2aa9205395 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| d4c50e77 | 14-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
feat(cpus): add support for venom cpu
Add basic CPU library code to support Venom CPU
Change-Id: I84d4cb77b175812811a17e55b4b290585e05d216 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com> |
| ef44101e | 27-Oct-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "feat(cpus): add support for Dionysus cpu library" into integration |