| #
d7ab1fe4 |
| 18-Dec-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "ssbs_errata_catchup" into integration
* changes: fix(cpus): workaround for Cortex-A720AE erratum 3456103 fix(cpus): workaround for Cortex-A720 erratum 3456091 fix(cpu
Merge changes from topic "ssbs_errata_catchup" into integration
* changes: fix(cpus): workaround for Cortex-A720AE erratum 3456103 fix(cpus): workaround for Cortex-A720 erratum 3456091 fix(cpus): workaround for Cortex-A715 erratum 3456084 fix(cpus): workaround for Cortex-X2 erratum 3324338 fix(cpus): workaround for Cortex-A710 erratum 3324338
show more ...
|
| #
af1f23a9 |
| 17-Dec-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 3456084
Cortex-A715 erratum 3456084 is a Cat B erratum that applies to revisions r0p0, r1p0, r1p1, r1p2 and r1p3, and is still open.
This errata can be
fix(cpus): workaround for Cortex-A715 erratum 3456084
Cortex-A715 erratum 3456084 is a Cat B erratum that applies to revisions r0p0, r1p0, r1p1, r1p2 and r1p3, and is still open.
This errata can be avoided by adding a speculation barrier instruction following writes to the SSBS register to ensure the new value of PSTATE.SSBS affects the subsequent instructions in the execution stream under speculation.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2148827
Change-Id: Ie3f2b46051539cdebc151c46f80045a7156e0386 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
4384b5b9 |
| 05-Nov-2025 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes Iad149a2c,Idcd2a07d,Id9429831 into integration
* changes: fix(cpus): workaround for Cortex-A715 erratum 3711916 fix(cpus): workaround for Cortex-A715 erratum 2376701 fix(cpus): w
Merge changes Iad149a2c,Idcd2a07d,Id9429831 into integration
* changes: fix(cpus): workaround for Cortex-A715 erratum 3711916 fix(cpus): workaround for Cortex-A715 erratum 2376701 fix(cpus): workaround for Cortex-A715 erratum 2409570
show more ...
|
| #
5c5b9e3e |
| 06-Oct-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 3711916
Cortex-A715 erratum 3711916 is a Cat B erratum that applies to revisions r0p0, r1p0, r1p1, r1p2 and r1p3, and is still open.
SDEN documentation
fix(cpus): workaround for Cortex-A715 erratum 3711916
Cortex-A715 erratum 3711916 is a Cat B erratum that applies to revisions r0p0, r1p0, r1p1, r1p2 and r1p3, and is still open.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2148827
Change-Id: Iad149a2c02a804b3f4f0f2f5b89e866675cb4093 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
4fca3ee4 |
| 06-Oct-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 2376701
Cortex-A715 erratum 2376701 is a Cat B erratum that applies to revisions r0p0 and r1p0, and is fixed in r1p1.
This workaround is not expected t
fix(cpus): workaround for Cortex-A715 erratum 2376701
Cortex-A715 erratum 2376701 is a Cat B erratum that applies to revisions r0p0 and r1p0, and is fixed in r1p1.
This workaround is not expected to have a significant performance impact.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2148827
Change-Id: Idcd2a07d269d55534dc5faa59c454d37426f2cfa Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
d6e941e2 |
| 06-Oct-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 2409570
Cortex-A715 erratum 2409570 is a Cat B erratum that applies to revisions r0p0 and r1p0, and is fixed in r1p1.
This workaround could have a sign
fix(cpus): workaround for Cortex-A715 erratum 2409570
Cortex-A715 erratum 2409570 is a Cat B erratum that applies to revisions r0p0 and r1p0, and is fixed in r1p1.
This workaround could have a significant performance impact for software that relies heavily on using store-release instructions.
This workaround only applies to r1p0, r0p0 has a different workaround but is not used in production hardware so has not been implemented.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2148827
Change-Id: Id9429831525b842779d7b7e60f103c93be4acd67 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
a7da8171 |
| 14-Oct-2025 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "gr/spectre_bhb_updates" into integration
* changes: fix(security): fix Neoverse V2 CVE-2022-23960 fix(security): fix Cortex-X3 CVE-2022-23960 fix(security): fix Corte
Merge changes from topic "gr/spectre_bhb_updates" into integration
* changes: fix(security): fix Neoverse V2 CVE-2022-23960 fix(security): fix Cortex-X3 CVE-2022-23960 fix(security): fix Cortex-A715 CVE-2022-23960 fix(security): fix spectre bhb loop count for Cortex-A720
show more ...
|
| #
ad0e8487 |
| 16-Sep-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(security): fix Cortex-A715 CVE-2022-23960
Apply CVE-2022-23960 mitigation to Cortex-A715, revision r1p0 and earlier only. Ref - https://developer.arm.com/documentation/110280/latest/
Change-Id:
fix(security): fix Cortex-A715 CVE-2022-23960
Apply CVE-2022-23960 mitigation to Cortex-A715, revision r1p0 and earlier only. Ref - https://developer.arm.com/documentation/110280/latest/
Change-Id: Ib6b704733e474824772cb27bd048b1e179d90da9 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
d7cacc58 |
| 17-Mar-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge "fix(cpus): workaround for Cortex-A715 erratum 2804830" into integration
|
| #
fcf2ab71 |
| 11-Feb-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 2804830
Cortex-A715 erratum 2804830 applies to r0p0, r1p0, r1p1 and r1p2, and is fixed in r1p3.
Under some conditions, writes of a 64B-aligned, 64B gra
fix(cpus): workaround for Cortex-A715 erratum 2804830
Cortex-A715 erratum 2804830 applies to r0p0, r1p0, r1p1 and r1p2, and is fixed in r1p3.
Under some conditions, writes of a 64B-aligned, 64B granule of memory might cause data corruption without this workaround. See SDEN for details.
Since this workaround disables write streaming, it is expected to have a significant performance impact for code that is heavily reliant on write streaming, such as memcpy or memset.
SDEN: https://developer.arm.com/documentation/SDEN-2148827/latest/
Change-Id: Ia12f6c7de7c92f6ea4aec3057b228b828d48724c Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
2e0354f5 |
| 25-Feb-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes I3d950e72,Id315a8fe,Ib62e6e9b,I1d0475b2 into integration
* changes: perf(cm): drop ZCR_EL3 saving and some ISBs and replace them with root context perf(psci): get PMF timestamps wi
Merge changes I3d950e72,Id315a8fe,Ib62e6e9b,I1d0475b2 into integration
* changes: perf(cm): drop ZCR_EL3 saving and some ISBs and replace them with root context perf(psci): get PMF timestamps with no cache flushes if possible perf(amu): greatly simplify AMU context management perf(mpmm): greatly simplify MPMM enablement
show more ...
|
| #
2590e819 |
| 25-Nov-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
perf(mpmm): greatly simplify MPMM enablement
MPMM is a core-specific microarchitectural feature. It has been present in every Arm core since the Cortex-A510 and has been implemented in exactly the s
perf(mpmm): greatly simplify MPMM enablement
MPMM is a core-specific microarchitectural feature. It has been present in every Arm core since the Cortex-A510 and has been implemented in exactly the same way. Despite that, it is enabled more like an architectural feature with a top level enable flag. This utilised the identical implementation.
This duality has left MPMM in an awkward place, where its enablement should be generic, like an architectural feature, but since it is not, it should also be core-specific if it ever changes. One choice to do this has been through the device tree.
This has worked just fine so far, however, recent implementations expose a weakness in that this is rather slow - the device tree has to be read, there's a long call stack of functions with many branches, and system registers are read. In the hot path of PSCI CPU powerdown, this has a significant and measurable impact. Besides it being a rather large amount of code that is difficult to understand.
Since MPMM is a microarchitectural feature, its correct placement is in the reset function. The essence of the current enablement is to write CPUPPMCR_EL3.MPMM_EN if CPUPPMCR_EL3.MPMMPINCTL == 0. Replacing the C enablement with an assembly macro in each CPU's reset function achieves the same effect with just a single close branch and a grand total of 6 instructions (versus the old 2 branches and 32 instructions).
Having done this, the device tree entry becomes redundant. Should a core that doesn't support MPMM arise, this can cleanly be handled in the reset function. As such, the whole ENABLE_MPMM_FCONF and platform hooks mechanisms become obsolete and are removed.
Change-Id: I1d0475b21a1625bb3519f513ba109284f973ffdf 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 ...
|
| #
89dba82d |
| 22-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
perf(cpus): make reset errata do fewer branches
Errata application is painful for performance. For a start, it's done when the core has just come out of reset, which means branch predictors and cach
perf(cpus): make reset errata do fewer branches
Errata application is painful for performance. For a start, it's done when the core has just come out of reset, which means branch predictors and caches will be empty so a branch to a workaround function must be fetched from memory and that round trip is very slow. Then it also runs with the I-cache off, which means that the loop to iterate over the workarounds must also be fetched from memory on each iteration.
We can remove both branches. First, we can simply apply every erratum directly instead of defining a workaround function and jumping to it. Currently, no errata that need to be applied at both reset and runtime, with the same workaround function, exist. If the need arose in future, this should be achievable with a reset + runtime wrapper combo.
Then, we can construct a function that applies each erratum linearly instead of looping over the list. If this function is part of the reset function, then the only "far" branches at reset will be for the checker functions. Importantly, this mitigates the slowdown even when an erratum is disabled.
The result is ~50% speedup on N1SDP and ~20% on AArch64 Juno on wakeup from PSCI calls that end in powerdown. This is roughly back to the baseline of v2.9, before the errata framework regressed on performance (or a little better). It is important to note that there are other slowdowns since then that remain unknown.
Change-Id: Ie4d5288a331b11fd648e5c4a0b652b74160b07b9 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
bfecea00 |
| 03-Feb-2025 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge changes from topic "gr/errata_ICH_VMCR_EL2" into integration
* changes: fix(cpus): workaround for Neoverse-V3 erratum 3701767 fix(cpus): workaround for Neoverse-N3 erratum 3699563 fix(cp
Merge changes from topic "gr/errata_ICH_VMCR_EL2" into integration
* changes: fix(cpus): workaround for Neoverse-V3 erratum 3701767 fix(cpus): workaround for Neoverse-N3 erratum 3699563 fix(cpus): workaround for Neoverse-N2 erratum 3701773 fix(cpus): workaround for Cortex-X925 erratum 3701747 fix(cpus): workaround for Cortex-X4 erratum 3701758 fix(cpus): workaround for Cortex-X3 erratum 3701769 fix(cpus): workaround for Cortex-X2 erratum 3701772 fix(cpus): workaround for Cortex-A725 erratum 3699564 fix(cpus): workaround for Cortex-A720-AE erratum 3699562 fix(cpus): workaround for Cortex-A720 erratum 3699561 fix(cpus): workaround for Cortex-A715 erratum 3699560 fix(cpus): workaround for Cortex-A710 erratum 3701772 fix(cpus): workaround for accessing ICH_VMCR_EL2 chore(cpus): fix incorrect header macro
show more ...
|
| #
26437afd |
| 21-Jan-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 3699560
Cortex-A715 erratum 3699560 that applies to all revisions <= r1p3 and is still Open.
The workaround is for EL3 software that performs context s
fix(cpus): workaround for Cortex-A715 erratum 3699560
Cortex-A715 erratum 3699560 that applies to all revisions <= r1p3 and is still Open.
The workaround is for EL3 software that performs context save/restore on a change of Security state to use a value of SCR_EL3.NS when accessing ICH_VMCR_EL2 that reflects the Security state that owns the data being saved or restored.
SDEN documentation: https://developer.arm.com/documentation/SDEN-2148827/latest/
Change-Id: I183aa921b4b6f715d64eb6b70809de2566017d31 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
cc4f3838 |
| 27-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "clean-up-errata-compatibility" into integration
* changes: refactor(cpus): remove cpu specific errata funcs refactor(cpus): directly invoke errata reporter
|
| #
3fb52e41 |
| 14-May-2024 |
Ryan Everett <ryan.everett@arm.com> |
refactor(cpus): remove cpu specific errata funcs
Errata printing is done directly via generic_errata_report. This commit removes the unused \_cpu\()_errata_report functions for all cores, and remove
refactor(cpus): remove cpu specific errata funcs
Errata printing is done directly via generic_errata_report. This commit removes the unused \_cpu\()_errata_report functions for all cores, and removes errata_func from cpu_ops.
Change-Id: I04fefbde5f0ff63b1f1cd17c864557a14070d68c Signed-off-by: Ryan Everett <ryan.everett@arm.com>
show more ...
|
| #
8acdb13a |
| 23-Apr-2024 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge "fix(cpus): workaround for Cortex-A715 erratum 2728106" into integration
|
| #
10134e35 |
| 10-Apr-2024 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 2728106
Cortex-A715 erratum 2728106 is a Cat B(rare) erratum that is present in revision r0p0, r1p0 and r1p1. It is fixed in r1p2.
The workaround is to
fix(cpus): workaround for Cortex-A715 erratum 2728106
Cortex-A715 erratum 2728106 is a Cat B(rare) erratum that is present in revision r0p0, r1p0 and r1p1. It is fixed in r1p2.
The workaround is to execute an implementation specific sequence in the CPU.
SDEN documentation: https://developer.arm.com/documentation/SDEN2148827/latest
Change-Id: Ic825f9942e7eb13893fdbb44a2090b897758cbc4 Signed-off-by: Bipin Ravi <bipin.ravi@arm.com>
show more ...
|
| #
e7419780 |
| 26-Mar-2024 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "fix(cpus): workaround for Cortex-A715 erratum 2413290" into integration
|
| #
bd2f7d32 |
| 20-Mar-2024 |
Sona Mathew <sonarebecca.mathew@arm.com> |
fix(cpus): workaround for Cortex-A715 erratum 2413290
Erratum 2413290 is a Cat B erratum that is present only in revision r0p1 and is fixed in r1p1.
The initial implementation did not consider that
fix(cpus): workaround for Cortex-A715 erratum 2413290
Erratum 2413290 is a Cat B erratum that is present only in revision r0p1 and is fixed in r1p1.
The initial implementation did not consider that this fix is to be applied only when SPE (Statistical Profiling Extension) is implemented and enabled. This patch applies the fix by adding a check for ENABLE_SPE_FOR_NS.
Change-Id: I87b2175b89d6fb168c77e6ab233c90ca056791a1 Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| #
f36faa71 |
| 12-Mar-2024 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge "fix(cpus): fix a defect in Cortex-A715 erratum 2561034" into integration
|
| #
8dad296d |
| 12-Mar-2024 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "fix(cpus): workaround for Cortex-A715 erratum 2413290" into integration
|
| #
57ab6d89 |
| 11-Mar-2024 |
Bipin Ravi <biprav01@u203721.austin.arm.com> |
fix(cpus): fix a defect in Cortex-A715 erratum 2561034
Cortex-A715 erratum 2561034 mitigation needs to be applied during reset. This patch fixes the current macro usage from runtime to reset for bot
fix(cpus): fix a defect in Cortex-A715 erratum 2561034
Cortex-A715 erratum 2561034 mitigation needs to be applied during reset. This patch fixes the current macro usage from runtime to reset for both start and end macros.
Change-Id: I4f115bbb27c57f16cada2a7eb314af8380f93cb4 Signed-off-by: Bipin Ravi <biprav01@u203721.austin.arm.com>
show more ...
|