xref: /OK3568_Linux_fs/kernel/Documentation/arm64/silicon-errata.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun=======================================
2*4882a593SmuzhiyunSilicon Errata and Software Workarounds
3*4882a593Smuzhiyun=======================================
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunAuthor: Will Deacon <will.deacon@arm.com>
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunDate  : 27 November 2015
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunIt is an unfortunate fact of life that hardware is often produced with
10*4882a593Smuzhiyunso-called "errata", which can cause it to deviate from the architecture
11*4882a593Smuzhiyununder specific circumstances.  For hardware produced by ARM, these
12*4882a593Smuzhiyunerrata are broadly classified into the following categories:
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun  ==========  ========================================================
15*4882a593Smuzhiyun  Category A  A critical error without a viable workaround.
16*4882a593Smuzhiyun  Category B  A significant or critical error with an acceptable
17*4882a593Smuzhiyun              workaround.
18*4882a593Smuzhiyun  Category C  A minor error that is not expected to occur under normal
19*4882a593Smuzhiyun              operation.
20*4882a593Smuzhiyun  ==========  ========================================================
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunFor more information, consult one of the "Software Developers Errata
23*4882a593SmuzhiyunNotice" documents available on infocenter.arm.com (registration
24*4882a593Smuzhiyunrequired).
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunAs far as Linux is concerned, Category B errata may require some special
27*4882a593Smuzhiyuntreatment in the operating system. For example, avoiding a particular
28*4882a593Smuzhiyunsequence of code, or configuring the processor in a particular way. A
29*4882a593Smuzhiyunless common situation may require similar actions in order to declassify
30*4882a593Smuzhiyuna Category A erratum into a Category C erratum. These are collectively
31*4882a593Smuzhiyunknown as "software workarounds" and are only required in the minority of
32*4882a593Smuzhiyuncases (e.g. those cases that both require a non-secure workaround *and*
33*4882a593Smuzhiyuncan be triggered by Linux).
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunFor software workarounds that may adversely impact systems unaffected by
36*4882a593Smuzhiyunthe erratum in question, a Kconfig entry is added under "Kernel
37*4882a593SmuzhiyunFeatures" -> "ARM errata workarounds via the alternatives framework".
38*4882a593SmuzhiyunThese are enabled by default and patched in at runtime when an affected
39*4882a593SmuzhiyunCPU is detected. For less-intrusive workarounds, a Kconfig option is not
40*4882a593Smuzhiyunavailable and the code is structured (preferably with a comment) in such
41*4882a593Smuzhiyuna way that the erratum will not be hit.
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunThis approach can make it slightly onerous to determine exactly which
44*4882a593Smuzhiyunerrata are worked around in an arbitrary kernel source tree, so this
45*4882a593Smuzhiyunfile acts as a registry of software workarounds in the Linux Kernel and
46*4882a593Smuzhiyunwill be updated when new workarounds are committed and backported to
47*4882a593Smuzhiyunstable kernels.
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
50*4882a593Smuzhiyun| Implementor    | Component       | Erratum ID      | Kconfig                     |
51*4882a593Smuzhiyun+================+=================+=================+=============================+
52*4882a593Smuzhiyun| Allwinner      | A64/R18         | UNKNOWN1        | SUN50I_ERRATUM_UNKNOWN1     |
53*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
54*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
55*4882a593Smuzhiyun| ARM            | Cortex-A53      | #826319         | ARM64_ERRATUM_826319        |
56*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
57*4882a593Smuzhiyun| ARM            | Cortex-A53      | #827319         | ARM64_ERRATUM_827319        |
58*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
59*4882a593Smuzhiyun| ARM            | Cortex-A53      | #824069         | ARM64_ERRATUM_824069        |
60*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
61*4882a593Smuzhiyun| ARM            | Cortex-A53      | #819472         | ARM64_ERRATUM_819472        |
62*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
63*4882a593Smuzhiyun| ARM            | Cortex-A53      | #845719         | ARM64_ERRATUM_845719        |
64*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
65*4882a593Smuzhiyun| ARM            | Cortex-A53      | #843419         | ARM64_ERRATUM_843419        |
66*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
67*4882a593Smuzhiyun| ARM            | Cortex-A55      | #1024718        | ARM64_ERRATUM_1024718       |
68*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
69*4882a593Smuzhiyun| ARM            | Cortex-A55      | #1530923        | ARM64_ERRATUM_1530923       |
70*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
71*4882a593Smuzhiyun| ARM            | Cortex-A57      | #832075         | ARM64_ERRATUM_832075        |
72*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
73*4882a593Smuzhiyun| ARM            | Cortex-A57      | #852523         | N/A                         |
74*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
75*4882a593Smuzhiyun| ARM            | Cortex-A57      | #834220         | ARM64_ERRATUM_834220        |
76*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
77*4882a593Smuzhiyun| ARM            | Cortex-A57      | #1319537        | ARM64_ERRATUM_1319367       |
78*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
79*4882a593Smuzhiyun| ARM            | Cortex-A57      | #1742098        | ARM64_ERRATUM_1742098       |
80*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
81*4882a593Smuzhiyun| ARM            | Cortex-A72      | #853709         | N/A                         |
82*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
83*4882a593Smuzhiyun| ARM            | Cortex-A72      | #1319367        | ARM64_ERRATUM_1319367       |
84*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
85*4882a593Smuzhiyun| ARM            | Cortex-A72      | #1655431        | ARM64_ERRATUM_1742098       |
86*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
87*4882a593Smuzhiyun| ARM            | Cortex-A73      | #858921         | ARM64_ERRATUM_858921        |
88*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
89*4882a593Smuzhiyun| ARM            | Cortex-A76      | #1188873,1418040| ARM64_ERRATUM_1418040       |
90*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
91*4882a593Smuzhiyun| ARM            | Cortex-A76      | #1165522        | ARM64_ERRATUM_1165522       |
92*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
93*4882a593Smuzhiyun| ARM            | Cortex-A76      | #1286807        | ARM64_ERRATUM_1286807       |
94*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
95*4882a593Smuzhiyun| ARM            | Cortex-A76      | #1463225        | ARM64_ERRATUM_1463225       |
96*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
97*4882a593Smuzhiyun| ARM            | Cortex-A77      | #1508412        | ARM64_ERRATUM_1508412       |
98*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
99*4882a593Smuzhiyun| ARM            | Cortex-A510     | #2051678        | ARM64_ERRATUM_2051678       |
100*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
101*4882a593Smuzhiyun| ARM            | Cortex-A510     | #2457168        | ARM64_ERRATUM_2457168       |
102*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
103*4882a593Smuzhiyun| ARM            | Cortex-A710     | #2054223        | ARM64_ERRATUM_2054223       |
104*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
105*4882a593Smuzhiyun| ARM            | Neoverse-N1     | #1188873,1418040| ARM64_ERRATUM_1418040       |
106*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
107*4882a593Smuzhiyun| ARM            | Neoverse-N1     | #1349291        | N/A                         |
108*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
109*4882a593Smuzhiyun| ARM            | Neoverse-N1     | #1542419        | ARM64_ERRATUM_1542419       |
110*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
111*4882a593Smuzhiyun| ARM            | Neoverse-N2     | #2067961        | ARM64_ERRATUM_2067961       |
112*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
113*4882a593Smuzhiyun| ARM            | MMU-500         | #841119,826419  | N/A                         |
114*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
115*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
116*4882a593Smuzhiyun| Broadcom       | Brahma-B53      | N/A             | ARM64_ERRATUM_845719        |
117*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
118*4882a593Smuzhiyun| Broadcom       | Brahma-B53      | N/A             | ARM64_ERRATUM_843419        |
119*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
120*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
121*4882a593Smuzhiyun| Cavium         | ThunderX ITS    | #22375,24313    | CAVIUM_ERRATUM_22375        |
122*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
123*4882a593Smuzhiyun| Cavium         | ThunderX ITS    | #23144          | CAVIUM_ERRATUM_23144        |
124*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
125*4882a593Smuzhiyun| Cavium         | ThunderX GICv3  | #23154          | CAVIUM_ERRATUM_23154        |
126*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
127*4882a593Smuzhiyun| Cavium         | ThunderX GICv3  | #38539          | N/A                         |
128*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
129*4882a593Smuzhiyun| Cavium         | ThunderX Core   | #27456          | CAVIUM_ERRATUM_27456        |
130*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
131*4882a593Smuzhiyun| Cavium         | ThunderX Core   | #30115          | CAVIUM_ERRATUM_30115        |
132*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
133*4882a593Smuzhiyun| Cavium         | ThunderX SMMUv2 | #27704          | N/A                         |
134*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
135*4882a593Smuzhiyun| Cavium         | ThunderX2 SMMUv3| #74             | N/A                         |
136*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
137*4882a593Smuzhiyun| Cavium         | ThunderX2 SMMUv3| #126            | N/A                         |
138*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
139*4882a593Smuzhiyun| Cavium         | ThunderX2 Core  | #219            | CAVIUM_TX2_ERRATUM_219      |
140*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
141*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
142*4882a593Smuzhiyun| Marvell        | ARM-MMU-500     | #582743         | N/A                         |
143*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
144*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
145*4882a593Smuzhiyun| Freescale/NXP  | LS2080A/LS1043A | A-008585        | FSL_ERRATUM_A008585         |
146*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
147*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
148*4882a593Smuzhiyun| Hisilicon      | Hip0{5,6,7}     | #161010101      | HISILICON_ERRATUM_161010101 |
149*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
150*4882a593Smuzhiyun| Hisilicon      | Hip0{6,7}       | #161010701      | N/A                         |
151*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
152*4882a593Smuzhiyun| Hisilicon      | Hip0{6,7}       | #161010803      | N/A                         |
153*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
154*4882a593Smuzhiyun| Hisilicon      | Hip07           | #161600802      | HISILICON_ERRATUM_161600802 |
155*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
156*4882a593Smuzhiyun| Hisilicon      | Hip08 SMMU PMCG | #162001800      | N/A                         |
157*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
158*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
159*4882a593Smuzhiyun| Qualcomm Tech. | Kryo/Falkor v1  | E1003           | QCOM_FALKOR_ERRATUM_1003    |
160*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
161*4882a593Smuzhiyun| Qualcomm Tech. | Kryo/Falkor v1  | E1009           | QCOM_FALKOR_ERRATUM_1009    |
162*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
163*4882a593Smuzhiyun| Qualcomm Tech. | QDF2400 ITS     | E0065           | QCOM_QDF2400_ERRATUM_0065   |
164*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
165*4882a593Smuzhiyun| Qualcomm Tech. | Falkor v{1,2}   | E1041           | QCOM_FALKOR_ERRATUM_1041    |
166*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
167*4882a593Smuzhiyun| Qualcomm Tech. | Kryo4xx Gold    | N/A             | ARM64_ERRATUM_1463225       |
168*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
169*4882a593Smuzhiyun| Qualcomm Tech. | Kryo4xx Gold    | N/A             | ARM64_ERRATUM_1418040       |
170*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
171*4882a593Smuzhiyun| Qualcomm Tech. | Kryo4xx Silver  | N/A             | ARM64_ERRATUM_1530923       |
172*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
173*4882a593Smuzhiyun| Qualcomm Tech. | Kryo4xx Silver  | N/A             | ARM64_ERRATUM_1024718       |
174*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
175*4882a593Smuzhiyun| Qualcomm Tech. | Kryo4xx Gold    | N/A             | ARM64_ERRATUM_1286807       |
176*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
179*4882a593Smuzhiyun| Fujitsu        | A64FX           | E#010001        | FUJITSU_ERRATUM_010001      |
180*4882a593Smuzhiyun+----------------+-----------------+-----------------+-----------------------------+
181