Skip to content

Commit 9196d9b

Browse files
bmastbergenPlaidCat
authored andcommitted
arm64: errata: Mitigate TLBI errata on various Arm CPUs
cve CVE-2025-10263 commit-author Mark Rutland <mark.rutland@arm.com> commit - commit-source-sha cfd391e commit-source arm64 upstream-diff silicon-errata.rst at different path (Documentation/arm64/ vs Documentation/arch/arm64/) and required manual conflict resolution due to condensed table formatting and missing entries in our branch. Content is identical. A number of CPUs developed by Arm suffer from errata whereby a broadcast TLBI;DSB sequence may complete before the global observation of writes which are translated by an affected TLB entry. These errata ONLY affect the completion of memory accesses which have been translated by an invalidated TLB entry, and these errata DO NOT affect the actual invalidation of TLB entries. TLB entries are removed correctly. This issue has been assigned CVE ID CVE-2025-10263. To mitigate this issue, Arm recommends that software follows any affected TLBI;DSB sequence with an additional TLBI;DSB, which will ensure that all memory write effects affected by the first TLBI have been globally observed. The additional TLBI can use any operation that is broadcast to affected CPUs, and the additional DSB can use any option that is sufficient to complete the additional TLBI. The ARM64_WORKAROUND_REPEAT_TLBI workaround is sufficient to mitigate the issue. Enable this workaround for affected CPUs, and update the silicon errata documentation accordingly. Note that due to the manner in which Arm develops IP and tracks errata, some CPUs share a common erratum number. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Signed-off-by: Will Deacon <will@kernel.org> (cherry picked from commit cfd391e) Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
1 parent a17a045 commit 9196d9b

3 files changed

Lines changed: 113 additions & 5 deletions

File tree

Documentation/arm64/silicon-errata.rst

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,25 +128,35 @@ stable kernels.
128128
+----------------+-----------------+-----------------+-----------------------------+
129129
| ARM | Cortex-A76 | #3324349 | ARM64_ERRATUM_3194386 |
130130
+----------------+-----------------+-----------------+-----------------------------+
131+
| ARM | Cortex-A76 | #4193800 | ARM64_ERRATUM_4118414 |
132+
+----------------+-----------------+-----------------+-----------------------------+
133+
| ARM | Cortex-A76AE | #4193801 | ARM64_ERRATUM_4118414 |
134+
+----------------+-----------------+-----------------+-----------------------------+
131135
| ARM | Cortex-A77 | #1491015 | N/A |
132136
+----------------+-----------------+-----------------+-----------------------------+
133137
| ARM | Cortex-A77 | #1508412 | ARM64_ERRATUM_1508412 |
134138
+----------------+-----------------+-----------------+-----------------------------+
135-
<<<<<<< HEAD:Documentation/arm64/silicon-errata.rst
139+
| ARM | Cortex-A77 | #4193798 | ARM64_ERRATUM_4118414 |
140+
+----------------+-----------------+-----------------+-----------------------------+
141+
| ARM | Cortex-A78 | #4193791 | ARM64_ERRATUM_4118414 |
142+
+----------------+-----------------+-----------------+-----------------------------+
143+
| ARM | Cortex-A78AE | #4193793 | ARM64_ERRATUM_4118414 |
144+
+----------------+-----------------+-----------------+-----------------------------+
145+
| ARM | Cortex-A78C | #4193794 | ARM64_ERRATUM_4118414 |
146+
+----------------+-----------------+-----------------+-----------------------------+
136147
| ARM | Cortex-A510 | #2051678 | ARM64_ERRATUM_2051678 |
137148
+----------------+-----------------+-----------------+-----------------------------+
138149
| ARM | Cortex-A510 | #2077057 | ARM64_ERRATUM_2077057 |
139150
+----------------+-----------------+-----------------+-----------------------------+
140151
| ARM | Cortex-A510 | #2441009 | ARM64_ERRATUM_2441009 |
141152
+----------------+-----------------+-----------------+-----------------------------+
142153
| ARM | Cortex-A510 | #2658417 | ARM64_ERRATUM_2658417 |
143-
=======
154+
+----------------+-----------------+-----------------+-----------------------------+
144155
| ARM | Cortex-A77 | #3324348 | ARM64_ERRATUM_3194386 |
145156
+----------------+-----------------+-----------------+-----------------------------+
146157
| ARM | Cortex-A78 | #3324344 | ARM64_ERRATUM_3194386 |
147158
+----------------+-----------------+-----------------+-----------------------------+
148159
| ARM | Cortex-A78C | #3324346,3324347| ARM64_ERRATUM_3194386 |
149-
>>>>>>> adeec61a4723 (arm64: errata: Expand speculative SSBS workaround (again)):Documentation/arch/arm64/silicon-errata.rst
150160
+----------------+-----------------+-----------------+-----------------------------+
151161
| ARM | Cortex-A710 | #2119858 | ARM64_ERRATUM_2119858 |
152162
+----------------+-----------------+-----------------+-----------------------------+
@@ -156,6 +166,8 @@ stable kernels.
156166
+----------------+-----------------+-----------------+-----------------------------+
157167
| ARM | Cortex-A710 | #3324338 | ARM64_ERRATUM_3194386 |
158168
+----------------+-----------------+-----------------+-----------------------------+
169+
| ARM | Cortex-A710 | #4193788 | ARM64_ERRATUM_4118414 |
170+
+----------------+-----------------+-----------------+-----------------------------+
159171
| ARM | Cortex-A715 | #2645198 | ARM64_ERRATUM_2645198 |
160172
+----------------+-----------------+-----------------+-----------------------------+
161173
| ARM | Cortex-A715 | #3456084 | ARM64_ERRATUM_3194386 |
@@ -170,18 +182,30 @@ stable kernels.
170182
+----------------+-----------------+-----------------+-----------------------------+
171183
| ARM | Cortex-X1C | #3324346 | ARM64_ERRATUM_3194386 |
172184
+----------------+-----------------+-----------------+-----------------------------+
185+
| ARM | Cortex-X1 | #4193791 | ARM64_ERRATUM_4118414 |
186+
+----------------+-----------------+-----------------+-----------------------------+
187+
| ARM | Cortex-X1C | #4193792 | ARM64_ERRATUM_4118414 |
188+
+----------------+-----------------+-----------------+-----------------------------+
173189
| ARM | Cortex-X2 | #2119858 | ARM64_ERRATUM_2119858 |
174190
+----------------+-----------------+-----------------+-----------------------------+
175191
| ARM | Cortex-X2 | #2224489 | ARM64_ERRATUM_2224489 |
176192
+----------------+-----------------+-----------------+-----------------------------+
177193
| ARM | Cortex-X2 | #3324338 | ARM64_ERRATUM_3194386 |
178194
+----------------+-----------------+-----------------+-----------------------------+
195+
| ARM | Cortex-X2 | #4193788 | ARM64_ERRATUM_4118414 |
196+
+----------------+-----------------+-----------------+-----------------------------+
179197
| ARM | Cortex-X3 | #3324335 | ARM64_ERRATUM_3194386 |
180198
+----------------+-----------------+-----------------+-----------------------------+
199+
| ARM | Cortex-X3 | #4193786 | ARM64_ERRATUM_4118414 |
200+
+----------------+-----------------+-----------------+-----------------------------+
181201
| ARM | Cortex-X4 | #3194386 | ARM64_ERRATUM_3194386 |
182202
+----------------+-----------------+-----------------+-----------------------------+
203+
| ARM | Cortex-X4 | #4118414 | ARM64_ERRATUM_4118414 |
204+
+----------------+-----------------+-----------------+-----------------------------+
183205
| ARM | Cortex-X925 | #3324334 | ARM64_ERRATUM_3194386 |
184206
+----------------+-----------------+-----------------+-----------------------------+
207+
| ARM | Cortex-X925 | #4193781 | ARM64_ERRATUM_4118414 |
208+
+----------------+-----------------+-----------------+-----------------------------+
185209
| ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 |
186210
+----------------+-----------------+-----------------+-----------------------------+
187211
| ARM | Neoverse-N1 | #1349291 | N/A |
@@ -192,6 +216,8 @@ stable kernels.
192216
+----------------+-----------------+-----------------+-----------------------------+
193217
| ARM | Neoverse-N1 | #3324349 | ARM64_ERRATUM_3194386 |
194218
+----------------+-----------------+-----------------+-----------------------------+
219+
| ARM | Neoverse-N1 | #4193800 | ARM64_ERRATUM_4118414 |
220+
+----------------+-----------------+-----------------+-----------------------------+
195221
| ARM | Neoverse-N2 | #2139208 | ARM64_ERRATUM_2139208 |
196222
+----------------+-----------------+-----------------+-----------------------------+
197223
| ARM | Neoverse-N2 | #2067961 | ARM64_ERRATUM_2067961 |
@@ -206,13 +232,31 @@ stable kernels.
206232
+----------------+-----------------+-----------------+-----------------------------+
207233
| ARM | Neoverse-V1 | #3324341 | ARM64_ERRATUM_3194386 |
208234
+----------------+-----------------+-----------------+-----------------------------+
235+
| ARM | Neoverse-N2 | #4193789 | ARM64_ERRATUM_4118414 |
236+
+----------------+-----------------+-----------------+-----------------------------+
209237
| ARM | Neoverse-V2 | #3324336 | ARM64_ERRATUM_3194386 |
210238
+----------------+-----------------+-----------------+-----------------------------+
239+
| ARM | Neoverse-V2 | #4193787 | ARM64_ERRATUM_4118414 |
240+
+----------------+-----------------+-----------------+-----------------------------+
211241
| ARM | Neoverse-V3 | #3312417 | ARM64_ERRATUM_3194386 |
212242
+----------------+-----------------+-----------------+-----------------------------+
213243
| ARM | MMU-500 | #841119,826419 | ARM_SMMU_MMU_500_CPRE_ERRATA|
214244
| | | #562869,1047329 | |
215245
+----------------+-----------------+-----------------+-----------------------------+
246+
| ARM | Neoverse-V3 | #4193784 | ARM64_ERRATUM_4118414 |
247+
+----------------+-----------------+-----------------+-----------------------------+
248+
| ARM | Neoverse-V3AE | #4193784 | ARM64_ERRATUM_4118414 |
249+
+----------------+-----------------+-----------------+-----------------------------+
250+
| ARM | Neoverse-V1 | #1619801 | N/A |
251+
+----------------+-----------------+-----------------+-----------------------------+
252+
| ARM | Neoverse-V1 | #4193790 | ARM64_ERRATUM_4118414 |
253+
+----------------+-----------------+-----------------+-----------------------------+
254+
| ARM | C1-Premium | #4193780 | ARM64_ERRATUM_4118414 |
255+
+----------------+-----------------+-----------------+-----------------------------+
256+
| ARM | C1-Ultra | #4193780 | ARM64_ERRATUM_4118414 |
257+
+----------------+-----------------+-----------------+-----------------------------+
258+
| ARM | MMU-500 | #841119,826419 | N/A |
259+
+----------------+-----------------+-----------------+-----------------------------+
216260
| ARM | MMU-600 | #1076982,1209401| N/A |
217261
+----------------+-----------------+-----------------+-----------------------------+
218262
| ARM | MMU-700 | #2268618,2812531| N/A |

arch/arm64/Kconfig

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,6 +1119,42 @@ config ARM64_ERRATUM_3194386
11191119

11201120
If unsure, say Y.
11211121

1122+
config ARM64_ERRATUM_4118414
1123+
bool "Cortex-*/Neoverse-*/C1-*: Completion of affected memory accesses might not be guaranteed by completion of a TLBI"
1124+
default y
1125+
select ARM64_WORKAROUND_REPEAT_TLBI
1126+
help
1127+
This option adds a workaround for the following errata:
1128+
1129+
* ARM C1-Premium erratum 4193780
1130+
* ARM C1-Ultra erratum 4193780
1131+
* ARM Cortex-A76 erratum 4193800
1132+
* ARM Cortex-A76AE erratum 4193801
1133+
* ARM Cortex-A77 erratum 4193798
1134+
* ARM Cortex-A78 erratum 4193791
1135+
* ARM Cortex-A78AE erratum 4193793
1136+
* ARM Cortex-A78C erratum 4193794
1137+
* ARM Cortex-A710 erratum 4193788
1138+
* ARM Cortex-X1 erratum 4193791
1139+
* ARM Cortex-X1C erratum 4193792
1140+
* ARM Cortex-X2 erratum 4193788
1141+
* ARM Cortex-X3 erratum 4193786
1142+
* ARM Cortex-X4 erratum 4118414
1143+
* ARM Cortex-X925 erratum 4193781
1144+
* ARM Neoverse-N1 erratum 4193800
1145+
* ARM Neoverse-N2 erratum 4193789
1146+
* ARM Neoverse-V1 erratum 4193790
1147+
* ARM Neoverse-V2 erratum 4193787
1148+
* ARM Neoverse-V3 erratum 4193784
1149+
* ARM Neoverse-V3AE erratum 4193784
1150+
1151+
On affected cores, some memory accesses might not be completed by
1152+
broadcast TLB invalidation.
1153+
1154+
This issue is also known as CVE-2025-10263.
1155+
1156+
If unsure, say Y.
1157+
11221158
config CAVIUM_ERRATUM_22375
11231159
bool "Cavium erratum 22375, 24313"
11241160
default y

arch/arm64/kernel/cpu_errata.c

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,35 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
225225
ERRATA_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1),
226226
},
227227
#endif
228-
{},
228+
#ifdef CONFIG_ARM64_ERRATUM_4118414
229+
{
230+
ERRATA_MIDR_RANGE_LIST(((const struct midr_range[]) {
231+
MIDR_ALL_VERSIONS(MIDR_C1_PREMIUM),
232+
MIDR_ALL_VERSIONS(MIDR_C1_ULTRA),
233+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A76),
234+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A76AE),
235+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A77),
236+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
237+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78AE),
238+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
239+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
240+
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
241+
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1C),
242+
MIDR_ALL_VERSIONS(MIDR_CORTEX_X2),
243+
MIDR_ALL_VERSIONS(MIDR_CORTEX_X3),
244+
MIDR_ALL_VERSIONS(MIDR_CORTEX_X4),
245+
MIDR_ALL_VERSIONS(MIDR_CORTEX_X925),
246+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
247+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
248+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
249+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
250+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),
251+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3AE),
252+
{}
253+
})),
254+
},
255+
#endif
256+
{}
229257
};
230258
#endif
231259

@@ -560,7 +588,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
560588
#endif
561589
#ifdef CONFIG_ARM64_WORKAROUND_REPEAT_TLBI
562590
{
563-
.desc = "Qualcomm erratum 1009, or ARM erratum 1286807, 2441009",
591+
.desc = "Broken broadcast TLBI completion",
564592
.capability = ARM64_WORKAROUND_REPEAT_TLBI,
565593
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
566594
.matches = cpucap_multi_entry_cap_matches,

0 commit comments

Comments
 (0)