| #
f105a7db |
| 18-Dec-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
Merge changes from topic "ssbs_errata_catchup" into integration
* changes: fix(cpus): workaround for Neoverse-N3 erratum 3456111 fix(cpus): workaround for Neoverse-N2 erratum 3324339 fix(cpus)
Merge changes from topic "ssbs_errata_catchup" into integration
* changes: fix(cpus): workaround for Neoverse-N3 erratum 3456111 fix(cpus): workaround for Neoverse-N2 erratum 3324339 fix(cpus): workaround for Neoverse-N1 erratum 3324349
show more ...
|
| #
a6b7ed50 |
| 18-Dec-2025 |
John Powell <john.powell@arm.com> |
fix(cpus): workaround for Neoverse-N2 erratum 3324339
Neoverse-N2 erratum 3324339 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2 and r0p3 and is still open.
This errata can be avoide
fix(cpus): workaround for Neoverse-N2 erratum 3324339
Neoverse-N2 erratum 3324339 is a Cat B erratum that applies to revisions r0p0, r0p1, r0p2 and r0p3 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-1982442
Change-Id: I6b023279816005cfa459bc6947f60b1a3c0f2380 Signed-off-by: John Powell <john.powell@arm.com>
show more ...
|
| #
cc152a38 |
| 31-Oct-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "feat(cpus): add support for Neoverse-N2 prefetcher" into integration
|
| #
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 ...
|
| #
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 ...
|
| #
216d437c |
| 19-Mar-2025 |
Sona Mathew <sonarebecca.mathew@arm.com> |
chore(cpus): rearrange the errata and cve order in Neoverse-N2
Patch sorts the errata IDs in ascending order and the CVE's in ascending order based on the year and index for CPU Neoverse N2.
Change
chore(cpus): rearrange the errata and cve order in Neoverse-N2
Patch sorts the errata IDs in ascending order and the CVE's in ascending order based on the year and index for CPU Neoverse N2.
Change-Id: Ieb4a8ab0030ea4e83efdef86a0ff1e2990b3e0dd Signed-off-by: Sona Mathew <sonarebecca.mathew@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 ...
|
| #
b62673c6 |
| 23-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): register DSU errata with the errata framework's wrappers
The existing DSU errata workarounds hijack the errata framework's inner workings to register with it. However, that is undesi
refactor(cpus): register DSU errata with the errata framework's wrappers
The existing DSU errata workarounds hijack the errata framework's inner workings to register with it. However, that is undesirable as any change to the framework may end up missing these workarounds. So convert the checks and workarounds to macros and have them included with the standard wrappers.
The only problem with this is the is_scu_present_in_dsu weak function. Fortunately, it is only needed for 2 of the errata and only on 3 cores. So drop it, assuming the default behaviour and have the callers handle the exception.
Change-Id: Iefa36325804ea093e938f867b9a6f49a6984b8ae Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
5cba510e |
| 20-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cpus): declare reset errata correctly
The errata in this patch are declared as runtime, but are never called explicitly. This means that they are never called! Convert them to reset errata so th
fix(cpus): declare reset errata correctly
The errata in this patch are declared as runtime, but are never called explicitly. This means that they are never called! Convert them to reset errata so that they are called at reset. Their SDENs entries have been checked and confirm that this is how they should be implemented.
Also, drop the the MIDR check on the a57 erratum as it's not needed - the erratum is already called from a cpu-specific function.
Change-Id: I22c3043ab454ce94b3c122c856e5804bc2ebb18b Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
fcb80d7d |
| 11-Feb-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I765a7fa0,Ic33f0b6d,I8d1a88c7,I381f96be,I698fa849, ... into integration
* changes: fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset chore(docs): drop the "wfi" from `pwr_
Merge changes I765a7fa0,Ic33f0b6d,I8d1a88c7,I381f96be,I698fa849, ... into integration
* changes: fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset chore(docs): drop the "wfi" from `pwr_domain_pwr_down_wfi` chore(psci): drop skip_wfi variable feat(arm): convert arm platforms to expect a wakeup fix(cpus): avoid SME related loss of context on powerdown feat(psci): allow cores to wake up from powerdown refactor: panic after calling psci_power_down_wfi() refactor(cpus): undo errata mitigations feat(cpus): add sysreg_bit_toggle
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 ...
|
| #
adea6e52 |
| 22-Jan-2025 |
Govindraj Raja <govindraj.raja@arm.com> |
fix(cpus): workaround for Neoverse-N2 erratum 3701773
Neoverse-N2 erratum 3701773 that applies to r0p0, r0p1, r0p2 and r0p3 is still Open.
The workaround is for EL3 software that performs context s
fix(cpus): workaround for Neoverse-N2 erratum 3701773
Neoverse-N2 erratum 3701773 that applies to r0p0, r0p1, r0p2 and r0p3 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-1982442/latest/
Change-Id: If95bd67363228c8083724b31f630636fb27f3b61 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
|
| #
cc94e71b |
| 26-Sep-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
refactor(cpus): undo errata mitigations
The workarounds introduced in the three patches starting at 888eafa00b99aa06b4ff688407336811a7ff439a assumed that any powerdown request will be (forced to be)
refactor(cpus): undo errata mitigations
The workarounds introduced in the three patches starting at 888eafa00b99aa06b4ff688407336811a7ff439a assumed that any powerdown request will be (forced to be) terminal. This assumption can no longer be the case for new CPUs so there is a need to revisit these older cores. Since we may wake up, we now need to respect the workaround's recommendation that the workaround needs to be reverted on wakeup. So do exactly that.
Introduce a new helper to toggle bits in assembly. This allows us to call the workaround twice, with the first call setting the workaround and second undoing it. This is also used for gelas' an travis' powerdown routines. This is so the same function can be called again
Also fix the condition in the cpu helper macro as it was subtly wrong
Change-Id: Iff9e5251dc9d8670d085d88c070f78991955e7c3 Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
bb801857 |
| 21-Jan-2025 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(cpus): add sysreg_bit_toggle
Introduce a new helper to toggle bits in assembly. This allows us to call the workaround twice, with the first call setting the workaround and second undoing it. Th
feat(cpus): add sysreg_bit_toggle
Introduce a new helper to toggle bits in assembly. This allows us to call the workaround twice, with the first call setting the workaround and second undoing it. This allows the (errata) workaround functions to be used to both apply and undo the mitigation.
This is applied to functions where the undo part will be required in follow-up patches.
Change-Id: I058bad58f5949b2d5fe058101410e33b6be1b8ba 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 ...
|
| #
26e0ff9d |
| 21-May-2024 |
Sona Mathew <sonarebecca.mathew@arm.com> |
fix(cpus): workaround for CVE-2024-5660 for Neoverse-N2
Implements mitigation for CVE-2024-5660 that affects Neoverse-N2 revisions r0p0, r0p1, r0p2, r0p3. The workaround is to disable the hardware p
fix(cpus): workaround for CVE-2024-5660 for Neoverse-N2
Implements mitigation for CVE-2024-5660 that affects Neoverse-N2 revisions r0p0, r0p1, r0p2, r0p3. The workaround is to disable the hardware page aggregation at EL3 by setting CPUECTLR_EL1[46] = 1'b1. This patch implements the erratum mitigation for Neoverse-N2.
Public Documentation: https://developer.arm.com/Arm%20Security%20Center/Arm%20CPU%20Vulnerability%20CVE-2024-5660
Change-Id: I2b9dea78771cc159586a03ff563c0ec79591ea64 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 ...
|