xref: /linux/Documentation/arch/arm64/silicon-errata.rst (revision 03f76ddff5b04a808ae16c06418460151e2fdd4b)
1=======================================
2Silicon Errata and Software Workarounds
3=======================================
4
5Author: Will Deacon <will.deacon@arm.com>
6
7Date  : 27 November 2015
8
9It is an unfortunate fact of life that hardware is often produced with
10so-called "errata", which can cause it to deviate from the architecture
11under specific circumstances.  For hardware produced by ARM, these
12errata are broadly classified into the following categories:
13
14  ==========  ========================================================
15  Category A  A critical error without a viable workaround.
16  Category B  A significant or critical error with an acceptable
17              workaround.
18  Category C  A minor error that is not expected to occur under normal
19              operation.
20  ==========  ========================================================
21
22For more information, consult one of the "Software Developers Errata
23Notice" documents available on infocenter.arm.com (registration
24required).
25
26As far as Linux is concerned, Category B errata may require some special
27treatment in the operating system. For example, avoiding a particular
28sequence of code, or configuring the processor in a particular way. A
29less common situation may require similar actions in order to declassify
30a Category A erratum into a Category C erratum. These are collectively
31known as "software workarounds" and are only required in the minority of
32cases (e.g. those cases that both require a non-secure workaround *and*
33can be triggered by Linux).
34
35For software workarounds that may adversely impact systems unaffected by
36the erratum in question, a Kconfig entry is added under "Kernel
37Features" -> "ARM errata workarounds via the alternatives framework".
38With the exception of workarounds for errata deemed "rare" by Arm, these
39are enabled by default and patched in at runtime when an affected CPU is
40detected. For less-intrusive workarounds, a Kconfig option is not
41available and the code is structured (preferably with a comment) in such
42a way that the erratum will not be hit.
43
44This approach can make it slightly onerous to determine exactly which
45errata are worked around in an arbitrary kernel source tree, so this
46file acts as a registry of software workarounds in the Linux Kernel and
47will be updated when new workarounds are committed and backported to
48stable kernels.
49
50+----------------+-----------------+-----------------+-----------------------------+
51| Implementor    | Component       | Erratum ID      | Kconfig                     |
52+================+=================+=================+=============================+
53| Allwinner      | A64/R18         | UNKNOWN1        | SUN50I_ERRATUM_UNKNOWN1     |
54+----------------+-----------------+-----------------+-----------------------------+
55+----------------+-----------------+-----------------+-----------------------------+
56| Ampere         | AmpereOne       | AC03_CPU_38     | AMPERE_ERRATUM_AC03_CPU_38  |
57+----------------+-----------------+-----------------+-----------------------------+
58| Ampere         | AmpereOne AC04  | AC04_CPU_10     | AMPERE_ERRATUM_AC03_CPU_38  |
59+----------------+-----------------+-----------------+-----------------------------+
60| Ampere         | AmpereOne AC04  | AC04_CPU_23     | AMPERE_ERRATUM_AC04_CPU_23  |
61+----------------+-----------------+-----------------+-----------------------------+
62+----------------+-----------------+-----------------+-----------------------------+
63| ARM            | Cortex-A510     | #2457168        | ARM64_ERRATUM_2457168       |
64+----------------+-----------------+-----------------+-----------------------------+
65| ARM            | Cortex-A510     | #2064142        | ARM64_ERRATUM_2064142       |
66+----------------+-----------------+-----------------+-----------------------------+
67| ARM            | Cortex-A510     | #2038923        | ARM64_ERRATUM_2038923       |
68+----------------+-----------------+-----------------+-----------------------------+
69| ARM            | Cortex-A510     | #1902691        | ARM64_ERRATUM_1902691       |
70+----------------+-----------------+-----------------+-----------------------------+
71| ARM            | Cortex-A510     | #2051678        | ARM64_ERRATUM_2051678       |
72+----------------+-----------------+-----------------+-----------------------------+
73| ARM            | Cortex-A510     | #2077057        | ARM64_ERRATUM_2077057       |
74+----------------+-----------------+-----------------+-----------------------------+
75| ARM            | Cortex-A510     | #2441009        | ARM64_ERRATUM_2441009       |
76+----------------+-----------------+-----------------+-----------------------------+
77| ARM            | Cortex-A510     | #2658417        | ARM64_ERRATUM_2658417       |
78+----------------+-----------------+-----------------+-----------------------------+
79| ARM            | Cortex-A510     | #3117295        | ARM64_ERRATUM_3117295       |
80+----------------+-----------------+-----------------+-----------------------------+
81| ARM            | Cortex-A520     | #2966298        | ARM64_ERRATUM_2966298       |
82+----------------+-----------------+-----------------+-----------------------------+
83| ARM            | Cortex-A53      | #826319         | ARM64_ERRATUM_826319        |
84+----------------+-----------------+-----------------+-----------------------------+
85| ARM            | Cortex-A53      | #827319         | ARM64_ERRATUM_827319        |
86+----------------+-----------------+-----------------+-----------------------------+
87| ARM            | Cortex-A53      | #824069         | ARM64_ERRATUM_824069        |
88+----------------+-----------------+-----------------+-----------------------------+
89| ARM            | Cortex-A53      | #819472         | ARM64_ERRATUM_819472        |
90+----------------+-----------------+-----------------+-----------------------------+
91| ARM            | Cortex-A53      | #845719         | ARM64_ERRATUM_845719        |
92+----------------+-----------------+-----------------+-----------------------------+
93| ARM            | Cortex-A53      | #843419         | ARM64_ERRATUM_843419        |
94+----------------+-----------------+-----------------+-----------------------------+
95| ARM            | Cortex-A55      | #1024718        | ARM64_ERRATUM_1024718       |
96+----------------+-----------------+-----------------+-----------------------------+
97| ARM            | Cortex-A55      | #1530923        | ARM64_ERRATUM_1530923       |
98+----------------+-----------------+-----------------+-----------------------------+
99| ARM            | Cortex-A55      | #2441007        | ARM64_ERRATUM_2441007       |
100+----------------+-----------------+-----------------+-----------------------------+
101| ARM            | Cortex-A57      | #832075         | ARM64_ERRATUM_832075        |
102+----------------+-----------------+-----------------+-----------------------------+
103| ARM            | Cortex-A57      | #852523         | N/A                         |
104+----------------+-----------------+-----------------+-----------------------------+
105| ARM            | Cortex-A57      | #834220         | ARM64_ERRATUM_834220        |
106+----------------+-----------------+-----------------+-----------------------------+
107| ARM            | Cortex-A57      | #1319537        | ARM64_ERRATUM_1319367       |
108+----------------+-----------------+-----------------+-----------------------------+
109| ARM            | Cortex-A57      | #1742098        | ARM64_ERRATUM_1742098       |
110+----------------+-----------------+-----------------+-----------------------------+
111| ARM            | Cortex-A72      | #853709         | N/A                         |
112+----------------+-----------------+-----------------+-----------------------------+
113| ARM            | Cortex-A72      | #1319367        | ARM64_ERRATUM_1319367       |
114+----------------+-----------------+-----------------+-----------------------------+
115| ARM            | Cortex-A72      | #1655431        | ARM64_ERRATUM_1742098       |
116+----------------+-----------------+-----------------+-----------------------------+
117| ARM            | Cortex-A73      | #858921         | ARM64_ERRATUM_858921        |
118+----------------+-----------------+-----------------+-----------------------------+
119| ARM            | Cortex-A76      | #1188873,1418040| ARM64_ERRATUM_1418040       |
120+----------------+-----------------+-----------------+-----------------------------+
121| ARM            | Cortex-A76      | #1165522        | ARM64_ERRATUM_1165522       |
122+----------------+-----------------+-----------------+-----------------------------+
123| ARM            | Cortex-A76      | #1286807        | ARM64_ERRATUM_1286807       |
124+----------------+-----------------+-----------------+-----------------------------+
125| ARM            | Cortex-A76      | #1463225        | ARM64_ERRATUM_1463225       |
126+----------------+-----------------+-----------------+-----------------------------+
127| ARM            | Cortex-A76      | #1490853        | N/A                         |
128+----------------+-----------------+-----------------+-----------------------------+
129| ARM            | Cortex-A76      | #3324349        | ARM64_ERRATUM_3194386       |
130+----------------+-----------------+-----------------+-----------------------------+
131| ARM            | Cortex-A77      | #1491015        | N/A                         |
132+----------------+-----------------+-----------------+-----------------------------+
133| ARM            | Cortex-A77      | #1508412        | ARM64_ERRATUM_1508412       |
134+----------------+-----------------+-----------------+-----------------------------+
135| ARM            | Cortex-A77      | #3324348        | ARM64_ERRATUM_3194386       |
136+----------------+-----------------+-----------------+-----------------------------+
137| ARM            | Cortex-A78      | #3324344        | ARM64_ERRATUM_3194386       |
138+----------------+-----------------+-----------------+-----------------------------+
139| ARM            | Cortex-A78C     | #3324346,3324347| ARM64_ERRATUM_3194386       |
140+----------------+-----------------+-----------------+-----------------------------+
141| ARM            | Cortex-A710     | #2119858        | ARM64_ERRATUM_2119858       |
142+----------------+-----------------+-----------------+-----------------------------+
143| ARM            | Cortex-A710     | #2054223        | ARM64_ERRATUM_2054223       |
144+----------------+-----------------+-----------------+-----------------------------+
145| ARM            | Cortex-A710     | #2224489        | ARM64_ERRATUM_2224489       |
146+----------------+-----------------+-----------------+-----------------------------+
147| ARM            | Cortex-A710     | #3324338        | ARM64_ERRATUM_3194386       |
148+----------------+-----------------+-----------------+-----------------------------+
149| ARM            | Cortex-A715     | #2645198        | ARM64_ERRATUM_2645198       |
150+----------------+-----------------+-----------------+-----------------------------+
151| ARM            | Cortex-A715     | #3456084        | ARM64_ERRATUM_3194386       |
152+----------------+-----------------+-----------------+-----------------------------+
153| ARM            | Cortex-A720     | #3456091        | ARM64_ERRATUM_3194386       |
154+----------------+-----------------+-----------------+-----------------------------+
155| ARM            | Cortex-A725     | #3456106        | ARM64_ERRATUM_3194386       |
156+----------------+-----------------+-----------------+-----------------------------+
157| ARM            | Cortex-X1       | #1502854        | N/A                         |
158+----------------+-----------------+-----------------+-----------------------------+
159| ARM            | Cortex-X1       | #3324344        | ARM64_ERRATUM_3194386       |
160+----------------+-----------------+-----------------+-----------------------------+
161| ARM            | Cortex-X1C      | #3324346        | ARM64_ERRATUM_3194386       |
162+----------------+-----------------+-----------------+-----------------------------+
163| ARM            | Cortex-X2       | #2119858        | ARM64_ERRATUM_2119858       |
164+----------------+-----------------+-----------------+-----------------------------+
165| ARM            | Cortex-X2       | #2224489        | ARM64_ERRATUM_2224489       |
166+----------------+-----------------+-----------------+-----------------------------+
167| ARM            | Cortex-X2       | #3324338        | ARM64_ERRATUM_3194386       |
168+----------------+-----------------+-----------------+-----------------------------+
169| ARM            | Cortex-X3       | #3324335        | ARM64_ERRATUM_3194386       |
170+----------------+-----------------+-----------------+-----------------------------+
171| ARM            | Cortex-X4       | #3194386        | ARM64_ERRATUM_3194386       |
172+----------------+-----------------+-----------------+-----------------------------+
173| ARM            | Cortex-X925     | #3324334        | ARM64_ERRATUM_3194386       |
174+----------------+-----------------+-----------------+-----------------------------+
175| ARM            | Neoverse-N1     | #1188873,1418040| ARM64_ERRATUM_1418040       |
176+----------------+-----------------+-----------------+-----------------------------+
177| ARM            | Neoverse-N1     | #1349291        | N/A                         |
178+----------------+-----------------+-----------------+-----------------------------+
179| ARM            | Neoverse-N1     | #1490853        | N/A                         |
180+----------------+-----------------+-----------------+-----------------------------+
181| ARM            | Neoverse-N1     | #1542419        | ARM64_ERRATUM_1542419       |
182+----------------+-----------------+-----------------+-----------------------------+
183| ARM            | Neoverse-N1     | #3324349        | ARM64_ERRATUM_3194386       |
184+----------------+-----------------+-----------------+-----------------------------+
185| ARM            | Neoverse-N2     | #2139208        | ARM64_ERRATUM_2139208       |
186+----------------+-----------------+-----------------+-----------------------------+
187| ARM            | Neoverse-N2     | #2067961        | ARM64_ERRATUM_2067961       |
188+----------------+-----------------+-----------------+-----------------------------+
189| ARM            | Neoverse-N2     | #2253138        | ARM64_ERRATUM_2253138       |
190+----------------+-----------------+-----------------+-----------------------------+
191| ARM            | Neoverse-N2     | #3324339        | ARM64_ERRATUM_3194386       |
192+----------------+-----------------+-----------------+-----------------------------+
193| ARM            | Neoverse-N3     | #3456111        | ARM64_ERRATUM_3194386       |
194+----------------+-----------------+-----------------+-----------------------------+
195| ARM            | Neoverse-V1     | #1619801        | N/A                         |
196+----------------+-----------------+-----------------+-----------------------------+
197| ARM            | Neoverse-V1     | #3324341        | ARM64_ERRATUM_3194386       |
198+----------------+-----------------+-----------------+-----------------------------+
199| ARM            | Neoverse-V2     | #3324336        | ARM64_ERRATUM_3194386       |
200+----------------+-----------------+-----------------+-----------------------------+
201| ARM            | Neoverse-V3     | #3312417        | ARM64_ERRATUM_3194386       |
202+----------------+-----------------+-----------------+-----------------------------+
203| ARM            | Neoverse-V3AE   | #3312417        | ARM64_ERRATUM_3194386       |
204+----------------+-----------------+-----------------+-----------------------------+
205| ARM            | MMU-500         | #841119,826419  | ARM_SMMU_MMU_500_CPRE_ERRATA|
206|                |                 | #562869,1047329 |                             |
207+----------------+-----------------+-----------------+-----------------------------+
208| ARM            | MMU-600         | #1076982,1209401| N/A                         |
209+----------------+-----------------+-----------------+-----------------------------+
210| ARM            | MMU-700         | #2268618,2812531| N/A                         |
211+----------------+-----------------+-----------------+-----------------------------+
212+----------------+-----------------+-----------------+-----------------------------+
213| ARM            | GIC-700         | #2941627        | ARM64_ERRATUM_2941627       |
214+----------------+-----------------+-----------------+-----------------------------+
215+----------------+-----------------+-----------------+-----------------------------+
216| Broadcom       | Brahma-B53      | N/A             | ARM64_ERRATUM_845719        |
217+----------------+-----------------+-----------------+-----------------------------+
218| Broadcom       | Brahma-B53      | N/A             | ARM64_ERRATUM_843419        |
219+----------------+-----------------+-----------------+-----------------------------+
220+----------------+-----------------+-----------------+-----------------------------+
221| Cavium         | ThunderX ITS    | #22375,24313    | CAVIUM_ERRATUM_22375        |
222+----------------+-----------------+-----------------+-----------------------------+
223| Cavium         | ThunderX ITS    | #23144          | CAVIUM_ERRATUM_23144        |
224+----------------+-----------------+-----------------+-----------------------------+
225| Cavium         | ThunderX GICv3  | #23154,38545    | CAVIUM_ERRATUM_23154        |
226+----------------+-----------------+-----------------+-----------------------------+
227| Cavium         | ThunderX GICv3  | #38539          | N/A                         |
228+----------------+-----------------+-----------------+-----------------------------+
229| Cavium         | ThunderX Core   | #27456          | CAVIUM_ERRATUM_27456        |
230+----------------+-----------------+-----------------+-----------------------------+
231| Cavium         | ThunderX Core   | #30115          | CAVIUM_ERRATUM_30115        |
232+----------------+-----------------+-----------------+-----------------------------+
233| Cavium         | ThunderX SMMUv2 | #27704          | N/A                         |
234+----------------+-----------------+-----------------+-----------------------------+
235| Cavium         | ThunderX2 SMMUv3| #74             | N/A                         |
236+----------------+-----------------+-----------------+-----------------------------+
237| Cavium         | ThunderX2 SMMUv3| #126            | N/A                         |
238+----------------+-----------------+-----------------+-----------------------------+
239| Cavium         | ThunderX2 Core  | #219            | CAVIUM_TX2_ERRATUM_219      |
240+----------------+-----------------+-----------------+-----------------------------+
241+----------------+-----------------+-----------------+-----------------------------+
242| Marvell        | ARM-MMU-500     | #582743         | N/A                         |
243+----------------+-----------------+-----------------+-----------------------------+
244+----------------+-----------------+-----------------+-----------------------------+
245| NVIDIA         | Carmel Core     | N/A             | NVIDIA_CARMEL_CNP_ERRATUM   |
246+----------------+-----------------+-----------------+-----------------------------+
247| NVIDIA         | T241 GICv3/4.x  | T241-FABRIC-4   | N/A                         |
248+----------------+-----------------+-----------------+-----------------------------+
249+----------------+-----------------+-----------------+-----------------------------+
250| Freescale/NXP  | LS2080A/LS1043A | A-008585        | FSL_ERRATUM_A008585         |
251+----------------+-----------------+-----------------+-----------------------------+
252+----------------+-----------------+-----------------+-----------------------------+
253| Hisilicon      | Hip0{5,6,7}     | #161010101      | HISILICON_ERRATUM_161010101 |
254+----------------+-----------------+-----------------+-----------------------------+
255| Hisilicon      | Hip0{6,7}       | #161010701      | N/A                         |
256+----------------+-----------------+-----------------+-----------------------------+
257| Hisilicon      | Hip0{6,7}       | #161010803      | N/A                         |
258+----------------+-----------------+-----------------+-----------------------------+
259| Hisilicon      | Hip07           | #161600802      | HISILICON_ERRATUM_161600802 |
260+----------------+-----------------+-----------------+-----------------------------+
261| Hisilicon      | Hip08 SMMU PMCG | #162001800      | N/A                         |
262+----------------+-----------------+-----------------+-----------------------------+
263| Hisilicon      | Hip{08,09,09A,10| #162001900      | N/A                         |
264|                | ,10C,11}        |                 |                             |
265|                | SMMU PMCG       |                 |                             |
266+----------------+-----------------+-----------------+-----------------------------+
267| Hisilicon      | Hip09           | #162100801      | HISILICON_ERRATUM_162100801 |
268+----------------+-----------------+-----------------+-----------------------------+
269+----------------+-----------------+-----------------+-----------------------------+
270| Qualcomm Tech. | Kryo/Falkor v1  | E1003           | QCOM_FALKOR_ERRATUM_1003    |
271+----------------+-----------------+-----------------+-----------------------------+
272| Qualcomm Tech. | Kryo/Falkor v1  | E1009           | QCOM_FALKOR_ERRATUM_1009    |
273+----------------+-----------------+-----------------+-----------------------------+
274| Qualcomm Tech. | QDF2400 ITS     | E0065           | QCOM_QDF2400_ERRATUM_0065   |
275+----------------+-----------------+-----------------+-----------------------------+
276| Qualcomm Tech. | Falkor v{1,2}   | E1041           | QCOM_FALKOR_ERRATUM_1041    |
277+----------------+-----------------+-----------------+-----------------------------+
278| Qualcomm Tech. | Kryo4xx Gold    | N/A             | ARM64_ERRATUM_1463225       |
279+----------------+-----------------+-----------------+-----------------------------+
280| Qualcomm Tech. | Kryo4xx Gold    | N/A             | ARM64_ERRATUM_1418040       |
281+----------------+-----------------+-----------------+-----------------------------+
282| Qualcomm Tech. | Kryo4xx Silver  | N/A             | ARM64_ERRATUM_1530923       |
283+----------------+-----------------+-----------------+-----------------------------+
284| Qualcomm Tech. | Kryo4xx Silver  | N/A             | ARM64_ERRATUM_1024718       |
285+----------------+-----------------+-----------------+-----------------------------+
286| Qualcomm Tech. | Kryo4xx Gold    | N/A             | ARM64_ERRATUM_1286807       |
287+----------------+-----------------+-----------------+-----------------------------+
288+----------------+-----------------+-----------------+-----------------------------+
289| Rockchip       | RK3588          | #3588001        | ROCKCHIP_ERRATUM_3588001    |
290+----------------+-----------------+-----------------+-----------------------------+
291| Rockchip       | RK3568          | #3568002        | ROCKCHIP_ERRATUM_3568002    |
292+----------------+-----------------+-----------------+-----------------------------+
293+----------------+-----------------+-----------------+-----------------------------+
294| Fujitsu        | A64FX           | E#010001        | FUJITSU_ERRATUM_010001      |
295+----------------+-----------------+-----------------+-----------------------------+
296+----------------+-----------------+-----------------+-----------------------------+
297| ASR            | ASR8601         | #8601001        | N/A                         |
298+----------------+-----------------+-----------------+-----------------------------+
299+----------------+-----------------+-----------------+-----------------------------+
300| Microsoft      | Azure Cobalt 100| #2139208        | ARM64_ERRATUM_2139208       |
301+----------------+-----------------+-----------------+-----------------------------+
302| Microsoft      | Azure Cobalt 100| #2067961        | ARM64_ERRATUM_2067961       |
303+----------------+-----------------+-----------------+-----------------------------+
304| Microsoft      | Azure Cobalt 100| #2253138        | ARM64_ERRATUM_2253138       |
305+----------------+-----------------+-----------------+-----------------------------+
306| Microsoft      | Azure Cobalt 100| #3324339        | ARM64_ERRATUM_3194386       |
307+----------------+-----------------+-----------------+-----------------------------+
308