Skip to content

Commit 757fe33

Browse files
committed
arm64: errata: Expand speculative SSBS workaround once more
JIRA: https://issues.redhat.com/browse/RHEL-108306 commit 081eb79 Author: Mark Rutland <mark.rutland@arm.com> Date: Mon Sep 30 12:17:05 2024 +0100 arm64: errata: Expand speculative SSBS workaround once more A number of Arm Ltd CPUs suffer from errata whereby an MSR to the SSBS special-purpose register does not affect subsequent speculative instructions, permitting speculative store bypassing for a window of time. We worked around this for a number of CPUs in commits: * 7187bb7 ("arm64: errata: Add workaround for Arm errata 3194386 and 3312417") * 75b3c43 ("arm64: errata: Expand speculative SSBS workaround") * 145502cac7ea70b5 ("arm64: errata: Expand speculative SSBS workaround (again)") Since then, a (hopefully final) batch of updates have been published, with two more affected CPUs. For the affected CPUs the existing mitigation is sufficient, as described in their respective Software Developer Errata Notice (SDEN) documents: * Cortex-A715 (MP148) SDEN v15.0, erratum 3456084 https://developer.arm.com/documentation/SDEN-2148827/1500/ * Neoverse-N3 (MP195) SDEN v5.0, erratum 3456111 https://developer.arm.com/documentation/SDEN-3050973/0500/ Enable the existing mitigation by adding the relevant MIDRs to erratum_spec_ssbs_list, and update silicon-errata.rst and the Kconfig text accordingly. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: James Morse <james.morse@arm.com> Cc: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20240930111705.3352047-3-mark.rutland@arm.com Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Jeremy Linton <jlinton@redhat.com>
1 parent 01893f5 commit 757fe33

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

Documentation/arm64/silicon-errata.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ stable kernels.
158158
+----------------+-----------------+-----------------+-----------------------------+
159159
| ARM | Cortex-A715 | #2645198 | ARM64_ERRATUM_2645198 |
160160
+----------------+-----------------+-----------------+-----------------------------+
161+
| ARM | Cortex-A715 | #3456084 | ARM64_ERRATUM_3194386 |
162+
+----------------+-----------------+-----------------+-----------------------------+
161163
| ARM | Cortex-A720 | #3456091 | ARM64_ERRATUM_3194386 |
162164
+----------------+-----------------+-----------------+-----------------------------+
163165
| ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 |
@@ -198,6 +200,8 @@ stable kernels.
198200
+----------------+-----------------+-----------------+-----------------------------+
199201
| ARM | Neoverse-N2 | #3324339 | ARM64_ERRATUM_3194386 |
200202
+----------------+-----------------+-----------------+-----------------------------+
203+
| ARM | Neoverse-N3 | #3456111 | ARM64_ERRATUM_3194386 |
204+
+----------------+-----------------+-----------------+-----------------------------+
201205
| ARM | Neoverse-V1 | #1619801 | N/A |
202206
+----------------+-----------------+-----------------+-----------------------------+
203207
| ARM | Neoverse-V1 | #3324341 | ARM64_ERRATUM_3194386 |

arch/arm64/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,6 +1069,7 @@ config ARM64_ERRATUM_3194386
10691069
* ARM Cortex-A78C erratum 3324346
10701070
* ARM Cortex-A78C erratum 3324347
10711071
* ARM Cortex-A710 erratam 3324338
1072+
* ARM Cortex-A715 errartum 3456084
10721073
* ARM Cortex-A720 erratum 3456091
10731074
* ARM Cortex-A725 erratum 3456106
10741075
* ARM Cortex-X1 erratum 3324344
@@ -1079,6 +1080,7 @@ config ARM64_ERRATUM_3194386
10791080
* ARM Cortex-X925 erratum 3324334
10801081
* ARM Neoverse-N1 erratum 3324349
10811082
* ARM Neoverse N2 erratum 3324339
1083+
* ARM Neoverse-N3 erratum 3456111
10821084
* ARM Neoverse-V1 erratum 3324341
10831085
* ARM Neoverse V2 erratum 3324336
10841086
* ARM Neoverse-V3 erratum 3312417

arch/arm64/kernel/cpu_errata.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
439439
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
440440
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
441441
MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
442+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A715),
442443
MIDR_ALL_VERSIONS(MIDR_CORTEX_A720),
443444
MIDR_ALL_VERSIONS(MIDR_CORTEX_A725),
444445
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
@@ -449,6 +450,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
449450
MIDR_ALL_VERSIONS(MIDR_CORTEX_X925),
450451
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
451452
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
453+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N3),
452454
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
453455
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
454456
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),

0 commit comments

Comments
 (0)