| #
c1e5f0cf |
| 24-Jul-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "fix(cpus): check minor revision before applying runtime errata" into integration
|
| #
645917ab |
| 23-Jul-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cpus): check minor revision before applying runtime errata
Patch db9ee83432 removed cpu_rev checking for runtime errata within cpu functions with the argument that if we're in the cpu file, we'v
fix(cpus): check minor revision before applying runtime errata
Patch db9ee83432 removed cpu_rev checking for runtime errata within cpu functions with the argument that if we're in the cpu file, we've already check the MIDR and matched against the CPU. However, that also removes the revision check which being in the cpu file does not guarantee. Reintroduce the MIDR checking so that the revision check happens and errata can be skipped if they don't apply.
Change-Id: I46b2ba8b524a073e02b4b5de641ae97795bc176b Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
1eb8983f |
| 31-Mar-2025 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge "fix(cpus): remove errata setting PF_MODE to conservative" into integration
|
| #
ac9f4b4d |
| 25-Mar-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(cpus): remove errata setting PF_MODE to conservative
The erratum titled “Disabling of data prefetcher with outstanding prefetch TLB miss might cause a deadlock” should not be handled within TF-A
fix(cpus): remove errata setting PF_MODE to conservative
The erratum titled “Disabling of data prefetcher with outstanding prefetch TLB miss might cause a deadlock” should not be handled within TF-A. The current workaround attempts to follow option 2 but misapplies it. Specifically, it statically sets PF_MODE to conservative, which is not the recommended approach. According to the erratum documentation, PF_MODE should be configured in conservative mode only when we disable data prefetcher however this is not done in TF-A and thus the workaround is not needed in TF-A.
The static setting of PF_MODE in TF-A does not correctly address the erratum and may introduce unnecessary performance degradation on platforms that adopt it without fully understanding its implications.
To prevent incorrect or unintended use, the current implementation of this erratum workaround should be removed from TF-A and not adopted by platforms.
List of Impacted CPU's with Errata Numbers and reference to SDEN -
Cortex-A78 - 2132060 - https://developer.arm.com/documentation/SDEN1401784/latest Cortex-A78C - 2132064 - https://developer.arm.com/documentation/SDEN-2004089/latest Cortex-A710 - 2058056 - https://developer.arm.com/documentation/SDEN-1775101/latest Cortex-X2 - 2058056 - https://developer.arm.com/documentation/SDEN-1775100/latest Cortex-X3 - 2070301 - https://developer.arm.com/documentation/SDEN2055130/latest Neoverse-N2 - 2138953 - https://developer.arm.com/documentation/SDEN-1982442/latest Neoverse-V1 - 2108267 - https://developer.arm.com/documentation/SDEN-1401781/latest Neoverse-V2 - 2331132 - https://developer.arm.com/documentation/SDEN-2332927/latest
Change-Id: Icf4048508ae070b2df073cc46c63be058b2779df Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
4a871b56 |
| 21-Mar-2025 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "ar/cvereorder" into integration
* changes: chore(cpus): rearrange the errata and cve order in Neoverse-N2 chore(cpus): rearrange cve in order in Cortex-X1 chore(cpus)
Merge changes from topic "ar/cvereorder" into integration
* changes: chore(cpus): rearrange the errata and cve order in Neoverse-N2 chore(cpus): rearrange cve in order in Cortex-X1 chore(cpus): fix cve order in Neoverse-V1 chore(cpus): fix cve order in Cortex-X2 chore(cpus): fix cve order in Cortex-A78C chore(cpus): fix cve order in Cortex-A78_AE chore(cpus): fix cve order in Cortex-A78 chore(cpus): fix cve order in Cortex-A77
show more ...
|
| #
97b1023b |
| 19-Mar-2025 |
Arvind Ram Prakash <arvind.ramprakash@arm.com> |
chore(cpus): fix cve order in Cortex-A78C
This patch rearranges CVE-2024-5660 apply order in Cortex-A78C.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I326be1da279bd34df
chore(cpus): fix cve order in Cortex-A78C
This patch rearranges CVE-2024-5660 apply order in Cortex-A78C.
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com> Change-Id: I326be1da279bd34df8667f7e957fb4a2c6913ab9
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 ...
|
| #
08bbe245 |
| 18-Dec-2024 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "sm/fix_erratum" into integration
* changes: fix(cpus): workaround for CVE-2024-5660 for Cortex-X925 fix(cpus): workaround for CVE-2024-5660 for Cortex-X2 fix(cpus): w
Merge changes from topic "sm/fix_erratum" into integration
* changes: fix(cpus): workaround for CVE-2024-5660 for Cortex-X925 fix(cpus): workaround for CVE-2024-5660 for Cortex-X2 fix(cpus): workaround for CVE-2024-5660 for Cortex-A77 fix(cpus): workaround for CVE-2024-5660 for Neoverse-V1 fix(cpus): workaround for CVE-2024-5660 for Cortex-A78_AE fix(cpus): workaround for CVE-2024-5660 for Cortex-A78C fix(cpus): workaround for CVE-2024-5660 for Cortex-A78 fix(cpus): workaround for CVE-2024-5660 for Cortex-X1 fix(cpus): workaround for CVE-2024-5660 for Neoverse-N2 fix(cpus): workaround for CVE-2024-5660 for Cortex-A710 fix(cpus): workaround for CVE-2024-5660 for Neoverse-V2 fix(cpus): workaround for CVE-2024-5660 for Cortex-X3 fix(cpus): workaround for CVE-2024-5660 for Neoverse-V3 fix(cpus): workaround for CVE-2024-5660 for Cortex-X4
show more ...
|
| #
46a4cadb |
| 23-May-2024 |
Sona Mathew <sonarebecca.mathew@arm.com> |
fix(cpus): workaround for CVE-2024-5660 for Cortex-A78C
Implements mitigation for CVE-2024-5660 that affects Cortex-A78C revisions r0p0, r0p1, r0p2. The workaround is to disable the hardware page ag
fix(cpus): workaround for CVE-2024-5660 for Cortex-A78C
Implements mitigation for CVE-2024-5660 that affects Cortex-A78C revisions r0p0, r0p1, r0p2. The workaround is to disable the hardware page aggregation at EL3 by setting CPUECTLR_EL1[46] = 1'b1.
Public Documentation: https://developer.arm.com/Arm%20Security%20Center/Arm%20CPU%20Vulnerability%20CVE-2024-5660
Change-Id: Ieb8d7b122320d16bf8987a43dc683ca41227beb5 Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| #
034b9197 |
| 21-Oct-2024 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge "chore(cpus): optimise runtime errata applications" into integration
|
| #
db9ee834 |
| 26-Sep-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
chore(cpus): optimise runtime errata applications
The errata framework has a helper to invoke workarounds, complete with a cpu rev_var check. We can use that directly instead of the apply_cpu_pwr_dw
chore(cpus): optimise runtime errata applications
The errata framework has a helper to invoke workarounds, complete with a cpu rev_var check. We can use that directly instead of the apply_cpu_pwr_dwn_errata to save on some code, as well as an extra branch. It's also more readable.
Also, apply_erratum invocation in cpu files don't need to check the rev_var as that was already done by the cpu_ops dispatcher for us to end up in the file.
Finally, X2 erratum 2768515 only applies in the powerdown sequence, i.e. at runtime. It doesn't achieve anything at reset, so we can label it accordingly.
Change-Id: I02f9dd7d0619feb54c870938ea186be5e3a6ca7b Signed-off-by: Boyan Karatotev <boyan.karatotev@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 ...
|
| #
3f024595 |
| 23-Jan-2024 |
Lauren Wehrmeister <lauren.wehrmeister@arm.com> |
Merge changes from topic "errata" into integration
* changes: fix(cpus): workaround for Cortex-A78C erratum 2683027 fix(cpus): workaround for Cortex-X3 erratum 2266875 fix(cpus): workaround fo
Merge changes from topic "errata" into integration
* changes: fix(cpus): workaround for Cortex-A78C erratum 2683027 fix(cpus): workaround for Cortex-X3 erratum 2266875 fix(cpus): workaround for Cortex-X3 erratum 2302506
show more ...
|
| #
68cac6a0 |
| 20-Dec-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(cpus): workaround for Cortex-A78C erratum 2683027
Cortex-A78C erratum 2683027 is a cat B erratum that applies to revisions r0p1 - r0p2 and is still open. The workaround is to execute a specific
fix(cpus): workaround for Cortex-A78C erratum 2683027
Cortex-A78C erratum 2683027 is a cat B erratum that applies to revisions r0p1 - r0p2 and is still open. The workaround is to execute a specific code sequence in EL3 during reset.
SDEN can be found here: https://developer.arm.com/documentation/SDEN-2004089/latest
Change-Id: I2bf9e675f48b62b4cd203100f7df40f4846aafa8 Signed-off-by: Bipin Ravi <bipin.ravi@arm.com>
show more ...
|
| #
5305809a |
| 27-Nov-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "sm/errata" into integration
* changes: fix(cpus): workaround for Cortex-A78C erratum 2743232 fix(cpus): workaround for Neoverse V1 erratum 2348377 fix(cpus): workarou
Merge changes from topic "sm/errata" into integration
* changes: fix(cpus): workaround for Cortex-A78C erratum 2743232 fix(cpus): workaround for Neoverse V1 erratum 2348377 fix(cpus): workaround for Cortex-X3 erratum 2779509
show more ...
|
| #
81d4094d |
| 14-Nov-2023 |
Sona Mathew <sonarebecca.mathew@arm.com> |
fix(cpus): workaround for Cortex-A78C erratum 2743232
Cortex-A78C erratum 2743232 is a Cat B erratum that applies to revisions r0p1 and r0p2 and is still open. The workaround is to set CPUACTLR5_EL1
fix(cpus): workaround for Cortex-A78C erratum 2743232
Cortex-A78C erratum 2743232 is a Cat B erratum that applies to revisions r0p1 and r0p2 and is still open. The workaround is to set CPUACTLR5_EL1[56:55] to 2'b01.
SDEN Documentation: https://developer.arm.com/documentation/SDEN-2004089/latest
Change-Id: Ic62579c2dd69b7a8cbbeaa936f45b2cc9436439a Signed-off-by: Sona Mathew <sonarebecca.mathew@arm.com>
show more ...
|
| #
fc22bcf8 |
| 03-Aug-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
Merge changes from topic "gr/errata_refactor" into integration
* changes: refactor(cpus): convert the Cortex-A55 to use cpu helpers refactor(cpus): convert the Cortex-A55 to use the errata frame
Merge changes from topic "gr/errata_refactor" into integration
* changes: refactor(cpus): convert the Cortex-A55 to use cpu helpers refactor(cpus): convert the Cortex-A55 to use the errata framework refactor(cpus): convert the Cortex-A76AE to use cpu helpers refactor(cpus): convert the Cortex-A76AE to use the errata framework refactor(cpus): convert the Cortex-A78 to use cpu helpers refactor(cpus): convert the Cortex-A78 to use the errata framework refactor(cpus): reorder Cortex-A78 errata by ascending order refactor(cpus): convert the Cortex-A78C to use cpu helpers refactor(cpus): convert the Cortex-A78C to use the errata framework refactor(cpus): reorder Cortex-A78C errata by ascending order refactor(cpus): convert the Cortex-X1 to use cpu helpers refactor(cpus): convert the Cortex-X1 to use the errata framework refactor(cpus): reorder Cortex-X1 errata by ascending order refactor(cpus): use cpu errata wrappers Cortex-A12 aarch32 cpu refactor(cpus): use cpu errata wrappers Cortex-A7 and A9 aarch32 cpus
show more ...
|
| #
cc0fc552 |
| 15-Jun-2023 |
Govindraj Raja <govindraj.raja@arm.com> |
refactor(cpus): convert the Cortex-A78C to use cpu helpers
Signed-off-by: Govindraj Raja <govindraj.raja@arm.com> Change-Id: I6ef39641a9534e48db27ccd63b6190570dbfe760
|
| #
3c8de370 |
| 15-Jun-2023 |
Govindraj Raja <govindraj.raja@arm.com> |
refactor(cpus): convert the Cortex-A78C to use the errata framework
Testing: - Manual comparison of disassembly with and without conversion. - Using the test script in gerrit - 19136
refactor(cpus): convert the Cortex-A78C to use the errata framework
Testing: - Manual comparison of disassembly with and without conversion. - Using the test script in gerrit - 19136 - Building with errata and stepping through from ArmDS and running tftf.
Change-Id: Ib361cdfa43fc1c88d97e346d41b1cbf211c045d9 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
1c857218 |
| 15-Jun-2023 |
Govindraj Raja <govindraj.raja@arm.com> |
refactor(cpus): reorder Cortex-A78C errata by ascending order
Change-Id: Id5cf37e22ddbd5baffcd80e2fc5c76f4cdc2ed9f Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
|
| #
ea2c04d0 |
| 22-Mar-2023 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge changes from topic "errata" into integration
* changes: fix(cpus): workaround for Cortex-A78C erratum 1827440 fix(cpus): workaround for Cortex-A78C erratum 1827430
|
| #
b01a59eb |
| 14-Mar-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(cpus): workaround for Cortex-A78C erratum 1827440
Cortex-A78C erratum 1827440 is a Cat B erratum that applies to revision r0p0 and is fixed in r0p1.
The workaround is to set CPUACTLR2_EL1[2], w
fix(cpus): workaround for Cortex-A78C erratum 1827440
Cortex-A78C erratum 1827440 is a Cat B erratum that applies to revision r0p0 and is fixed in r0p1.
The workaround is to set CPUACTLR2_EL1[2], which forces atomic store operations to write-back memory to be performed in the L1 data cache.
SDEN documentation: https://developer.arm.com/documentation/SDEN1707916/latest
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: I41d8ef48f70216ec66bf2b0f4f03ea8d8c261ee7
show more ...
|
| #
672eb21e |
| 14-Mar-2023 |
Bipin Ravi <bipin.ravi@arm.com> |
fix(cpus): workaround for Cortex-A78C erratum 1827430
Cortex-A78C erratum 1827430 is a Cat B erratum that applies to revision r0p0 and is fixed in r0p1.
The workaround is to set the CPUECTLR_EL1[53
fix(cpus): workaround for Cortex-A78C erratum 1827430
Cortex-A78C erratum 1827430 is a Cat B erratum that applies to revision r0p0 and is fixed in r0p1.
The workaround is to set the CPUECTLR_EL1[53] to 1, which disables allocation of splintered pages in the L2 TLB.
SDEN documentation: https://developer.arm.com/documentation/SDEN1707916/latest
Signed-off-by: Bipin Ravi <bipin.ravi@arm.com> Change-Id: Ie68771bdd3bddeff54d06b6a456dad4a7fc27426
show more ...
|