xref: /arm-trusted-firmware/docs/design/cpu-specific-build-macros.rst (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700SchasingluluArm CPU Specific Build Macros
2*91f16700Schasinglulu=============================
3*91f16700Schasinglulu
4*91f16700SchasingluluThis document describes the various build options present in the CPU specific
5*91f16700Schasingluluoperations framework to enable errata workarounds and to enable optimizations
6*91f16700Schasinglulufor a specific CPU on a platform.
7*91f16700Schasinglulu
8*91f16700SchasingluluSecurity Vulnerability Workarounds
9*91f16700Schasinglulu----------------------------------
10*91f16700Schasinglulu
11*91f16700SchasingluluTF-A exports a series of build flags which control which security
12*91f16700Schasingluluvulnerability workarounds should be applied at runtime.
13*91f16700Schasinglulu
14*91f16700Schasinglulu-  ``WORKAROUND_CVE_2017_5715``: Enables the security workaround for
15*91f16700Schasinglulu   `CVE-2017-5715`_. This flag can be set to 0 by the platform if none
16*91f16700Schasinglulu   of the PEs in the system need the workaround. Setting this flag to 0 provides
17*91f16700Schasinglulu   no performance benefit for non-affected platforms, it just helps to comply
18*91f16700Schasinglulu   with the recommendation in the spec regarding workaround discovery.
19*91f16700Schasinglulu   Defaults to 1.
20*91f16700Schasinglulu
21*91f16700Schasinglulu-  ``WORKAROUND_CVE_2018_3639``: Enables the security workaround for
22*91f16700Schasinglulu   `CVE-2018-3639`_. Defaults to 1. The TF-A project recommends to keep
23*91f16700Schasinglulu   the default value of 1 even on platforms that are unaffected by
24*91f16700Schasinglulu   CVE-2018-3639, in order to comply with the recommendation in the spec
25*91f16700Schasinglulu   regarding workaround discovery.
26*91f16700Schasinglulu
27*91f16700Schasinglulu-  ``DYNAMIC_WORKAROUND_CVE_2018_3639``: Enables dynamic mitigation for
28*91f16700Schasinglulu   `CVE-2018-3639`_. This build option should be set to 1 if the target
29*91f16700Schasinglulu   platform contains at least 1 CPU that requires dynamic mitigation.
30*91f16700Schasinglulu   Defaults to 0.
31*91f16700Schasinglulu
32*91f16700Schasinglulu-  ``WORKAROUND_CVE_2022_23960``: Enables mitigation for `CVE-2022-23960`_.
33*91f16700Schasinglulu   This build option should be set to 1 if the target platform contains at
34*91f16700Schasinglulu   least 1 CPU that requires this mitigation. Defaults to 1.
35*91f16700Schasinglulu
36*91f16700Schasinglulu.. _arm_cpu_macros_errata_workarounds:
37*91f16700Schasinglulu
38*91f16700SchasingluluCPU Errata Workarounds
39*91f16700Schasinglulu----------------------
40*91f16700Schasinglulu
41*91f16700SchasingluluTF-A exports a series of build flags which control the errata workarounds that
42*91f16700Schasingluluare applied to each CPU by the reset handler. The errata details can be found
43*91f16700Schasingluluin the CPU specific errata documents published by Arm:
44*91f16700Schasinglulu
45*91f16700Schasinglulu-  `Cortex-A53 MPCore Software Developers Errata Notice`_
46*91f16700Schasinglulu-  `Cortex-A57 MPCore Software Developers Errata Notice`_
47*91f16700Schasinglulu-  `Cortex-A72 MPCore Software Developers Errata Notice`_
48*91f16700Schasinglulu
49*91f16700SchasingluluThe errata workarounds are implemented for a particular revision or a set of
50*91f16700Schasingluluprocessor revisions. This is checked by the reset handler at runtime. Each
51*91f16700Schasingluluerrata workaround is identified by its ``ID`` as specified in the processor's
52*91f16700Schasingluluerrata notice document. The format of the define used to enable/disable the
53*91f16700Schasingluluerrata workaround is ``ERRATA_<Processor name>_<ID>``, where the ``Processor name``
54*91f16700Schasingluluis for example ``A57`` for the ``Cortex_A57`` CPU.
55*91f16700Schasinglulu
56*91f16700SchasingluluRefer to :ref:`firmware_design_cpu_errata_implementation` for information on how to
57*91f16700Schasingluluwrite errata workaround functions.
58*91f16700Schasinglulu
59*91f16700SchasingluluAll workarounds are disabled by default. The platform is responsible for
60*91f16700Schasingluluenabling these workarounds according to its requirement by defining the
61*91f16700Schasingluluerrata workaround build flags in the platform specific makefile. In case
62*91f16700Schasingluluthese workarounds are enabled for the wrong CPU revision then the errata
63*91f16700Schasingluluworkaround is not applied. In the DEBUG build, this is indicated by
64*91f16700Schasingluluprinting a warning to the crash console.
65*91f16700Schasinglulu
66*91f16700SchasingluluIn the current implementation, a platform which has more than 1 variant
67*91f16700Schasingluluwith different revisions of a processor has no runtime mechanism available
68*91f16700Schasinglulufor it to specify which errata workarounds should be enabled or not.
69*91f16700Schasinglulu
70*91f16700SchasingluluThe value of the build flags is 0 by default, that is, disabled. A value of 1
71*91f16700Schasingluluwill enable it.
72*91f16700Schasinglulu
73*91f16700SchasingluluFor Cortex-A9, the following errata build flags are defined :
74*91f16700Schasinglulu
75*91f16700Schasinglulu-  ``ERRATA_A9_794073``: This applies errata 794073 workaround to Cortex-A9
76*91f16700Schasinglulu   CPU. This needs to be enabled for all revisions of the CPU.
77*91f16700Schasinglulu
78*91f16700SchasingluluFor Cortex-A15, the following errata build flags are defined :
79*91f16700Schasinglulu
80*91f16700Schasinglulu-  ``ERRATA_A15_816470``: This applies errata 816470 workaround to Cortex-A15
81*91f16700Schasinglulu   CPU. This needs to be enabled only for revision >= r3p0 of the CPU.
82*91f16700Schasinglulu
83*91f16700Schasinglulu-  ``ERRATA_A15_827671``: This applies errata 827671 workaround to Cortex-A15
84*91f16700Schasinglulu   CPU. This needs to be enabled only for revision >= r3p0 of the CPU.
85*91f16700Schasinglulu
86*91f16700SchasingluluFor Cortex-A17, the following errata build flags are defined :
87*91f16700Schasinglulu
88*91f16700Schasinglulu-  ``ERRATA_A17_852421``: This applies errata 852421 workaround to Cortex-A17
89*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p2 of the CPU.
90*91f16700Schasinglulu
91*91f16700Schasinglulu-  ``ERRATA_A17_852423``: This applies errata 852423 workaround to Cortex-A17
92*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p2 of the CPU.
93*91f16700Schasinglulu
94*91f16700SchasingluluFor Cortex-A35, the following errata build flags are defined :
95*91f16700Schasinglulu
96*91f16700Schasinglulu-  ``ERRATA_A35_855472``: This applies errata 855472 workaround to Cortex-A35
97*91f16700Schasinglulu   CPUs. This needs to be enabled only for revision r0p0 of Cortex-A35.
98*91f16700Schasinglulu
99*91f16700SchasingluluFor Cortex-A53, the following errata build flags are defined :
100*91f16700Schasinglulu
101*91f16700Schasinglulu-  ``ERRATA_A53_819472``: This applies errata 819472 workaround to all
102*91f16700Schasinglulu   CPUs. This needs to be enabled only for revision <= r0p1 of Cortex-A53.
103*91f16700Schasinglulu
104*91f16700Schasinglulu-  ``ERRATA_A53_824069``: This applies errata 824069 workaround to all
105*91f16700Schasinglulu   CPUs. This needs to be enabled only for revision <= r0p2 of Cortex-A53.
106*91f16700Schasinglulu
107*91f16700Schasinglulu-  ``ERRATA_A53_826319``: This applies errata 826319 workaround to Cortex-A53
108*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p2 of the CPU.
109*91f16700Schasinglulu
110*91f16700Schasinglulu-  ``ERRATA_A53_827319``: This applies errata 827319 workaround to all
111*91f16700Schasinglulu   CPUs. This needs to be enabled only for revision <= r0p2 of Cortex-A53.
112*91f16700Schasinglulu
113*91f16700Schasinglulu-  ``ERRATA_A53_835769``: This applies erratum 835769 workaround at compile and
114*91f16700Schasinglulu   link time to Cortex-A53 CPU. This needs to be enabled for some variants of
115*91f16700Schasinglulu   revision <= r0p4. This workaround can lead the linker to create ``*.stub``
116*91f16700Schasinglulu   sections.
117*91f16700Schasinglulu
118*91f16700Schasinglulu-  ``ERRATA_A53_836870``: This applies errata 836870 workaround to Cortex-A53
119*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p3 of the CPU. From
120*91f16700Schasinglulu   r0p4 and onwards, this errata is enabled by default in hardware. Identical to
121*91f16700Schasinglulu   ``A53_DISABLE_NON_TEMPORAL_HINT``.
122*91f16700Schasinglulu
123*91f16700Schasinglulu-  ``ERRATA_A53_843419``: This applies erratum 843419 workaround at link time
124*91f16700Schasinglulu   to Cortex-A53 CPU.  This needs to be enabled for some variants of revision
125*91f16700Schasinglulu   <= r0p4. This workaround can lead the linker to emit ``*.stub`` sections
126*91f16700Schasinglulu   which are 4kB aligned.
127*91f16700Schasinglulu
128*91f16700Schasinglulu-  ``ERRATA_A53_855873``: This applies errata 855873 workaround to Cortex-A53
129*91f16700Schasinglulu   CPUs. Though the erratum is present in every revision of the CPU,
130*91f16700Schasinglulu   this workaround is only applied to CPUs from r0p3 onwards, which feature
131*91f16700Schasinglulu   a chicken bit in CPUACTLR_EL1 to enable a hardware workaround.
132*91f16700Schasinglulu   Earlier revisions of the CPU have other errata which require the same
133*91f16700Schasinglulu   workaround in software, so they should be covered anyway.
134*91f16700Schasinglulu
135*91f16700Schasinglulu-  ``ERRATA_A53_1530924``: This applies errata 1530924 workaround to all
136*91f16700Schasinglulu   revisions of Cortex-A53 CPU.
137*91f16700Schasinglulu
138*91f16700SchasingluluFor Cortex-A55, the following errata build flags are defined :
139*91f16700Schasinglulu
140*91f16700Schasinglulu-  ``ERRATA_A55_768277``: This applies errata 768277 workaround to Cortex-A55
141*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
142*91f16700Schasinglulu
143*91f16700Schasinglulu-  ``ERRATA_A55_778703``: This applies errata 778703 workaround to Cortex-A55
144*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
145*91f16700Schasinglulu
146*91f16700Schasinglulu-  ``ERRATA_A55_798797``: This applies errata 798797 workaround to Cortex-A55
147*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
148*91f16700Schasinglulu
149*91f16700Schasinglulu-  ``ERRATA_A55_846532``: This applies errata 846532 workaround to Cortex-A55
150*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p1 of the CPU.
151*91f16700Schasinglulu
152*91f16700Schasinglulu-  ``ERRATA_A55_903758``: This applies errata 903758 workaround to Cortex-A55
153*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p1 of the CPU.
154*91f16700Schasinglulu
155*91f16700Schasinglulu-  ``ERRATA_A55_1221012``: This applies errata 1221012 workaround to Cortex-A55
156*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
157*91f16700Schasinglulu
158*91f16700Schasinglulu-  ``ERRATA_A55_1530923``: This applies errata 1530923 workaround to all
159*91f16700Schasinglulu   revisions of Cortex-A55 CPU.
160*91f16700Schasinglulu
161*91f16700SchasingluluFor Cortex-A57, the following errata build flags are defined :
162*91f16700Schasinglulu
163*91f16700Schasinglulu-  ``ERRATA_A57_806969``: This applies errata 806969 workaround to Cortex-A57
164*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
165*91f16700Schasinglulu
166*91f16700Schasinglulu-  ``ERRATA_A57_813419``: This applies errata 813419 workaround to Cortex-A57
167*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
168*91f16700Schasinglulu
169*91f16700Schasinglulu-  ``ERRATA_A57_813420``: This applies errata 813420 workaround to Cortex-A57
170*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
171*91f16700Schasinglulu
172*91f16700Schasinglulu-  ``ERRATA_A57_814670``: This applies errata 814670 workaround to Cortex-A57
173*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
174*91f16700Schasinglulu
175*91f16700Schasinglulu-  ``ERRATA_A57_817169``: This applies errata 817169 workaround to Cortex-A57
176*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p1 of the CPU.
177*91f16700Schasinglulu
178*91f16700Schasinglulu-  ``ERRATA_A57_826974``: This applies errata 826974 workaround to Cortex-A57
179*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p1 of the CPU.
180*91f16700Schasinglulu
181*91f16700Schasinglulu-  ``ERRATA_A57_826977``: This applies errata 826977 workaround to Cortex-A57
182*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p1 of the CPU.
183*91f16700Schasinglulu
184*91f16700Schasinglulu-  ``ERRATA_A57_828024``: This applies errata 828024 workaround to Cortex-A57
185*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p1 of the CPU.
186*91f16700Schasinglulu
187*91f16700Schasinglulu-  ``ERRATA_A57_829520``: This applies errata 829520 workaround to Cortex-A57
188*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p2 of the CPU.
189*91f16700Schasinglulu
190*91f16700Schasinglulu-  ``ERRATA_A57_833471``: This applies errata 833471 workaround to Cortex-A57
191*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p2 of the CPU.
192*91f16700Schasinglulu
193*91f16700Schasinglulu-  ``ERRATA_A57_859972``: This applies errata 859972 workaround to Cortex-A57
194*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p3 of the CPU.
195*91f16700Schasinglulu
196*91f16700Schasinglulu-  ``ERRATA_A57_1319537``: This applies errata 1319537 workaround to all
197*91f16700Schasinglulu   revisions of Cortex-A57 CPU.
198*91f16700Schasinglulu
199*91f16700SchasingluluFor Cortex-A72, the following errata build flags are defined :
200*91f16700Schasinglulu
201*91f16700Schasinglulu-  ``ERRATA_A72_859971``: This applies errata 859971 workaround to Cortex-A72
202*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p3 of the CPU.
203*91f16700Schasinglulu
204*91f16700Schasinglulu-  ``ERRATA_A72_1319367``: This applies errata 1319367 workaround to all
205*91f16700Schasinglulu   revisions of Cortex-A72 CPU.
206*91f16700Schasinglulu
207*91f16700SchasingluluFor Cortex-A73, the following errata build flags are defined :
208*91f16700Schasinglulu
209*91f16700Schasinglulu-  ``ERRATA_A73_852427``: This applies errata 852427 workaround to Cortex-A73
210*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
211*91f16700Schasinglulu
212*91f16700Schasinglulu-  ``ERRATA_A73_855423``: This applies errata 855423 workaround to Cortex-A73
213*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r0p1 of the CPU.
214*91f16700Schasinglulu
215*91f16700SchasingluluFor Cortex-A75, the following errata build flags are defined :
216*91f16700Schasinglulu
217*91f16700Schasinglulu-  ``ERRATA_A75_764081``: This applies errata 764081 workaround to Cortex-A75
218*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 of the CPU.
219*91f16700Schasinglulu
220*91f16700Schasinglulu-  ``ERRATA_A75_790748``: This applies errata 790748 workaround to Cortex-A75
221*91f16700Schasinglulu    CPU. This needs to be enabled only for revision r0p0 of the CPU.
222*91f16700Schasinglulu
223*91f16700SchasingluluFor Cortex-A76, the following errata build flags are defined :
224*91f16700Schasinglulu
225*91f16700Schasinglulu-  ``ERRATA_A76_1073348``: This applies errata 1073348 workaround to Cortex-A76
226*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
227*91f16700Schasinglulu
228*91f16700Schasinglulu-  ``ERRATA_A76_1130799``: This applies errata 1130799 workaround to Cortex-A76
229*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r2p0 of the CPU.
230*91f16700Schasinglulu
231*91f16700Schasinglulu-  ``ERRATA_A76_1220197``: This applies errata 1220197 workaround to Cortex-A76
232*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r2p0 of the CPU.
233*91f16700Schasinglulu
234*91f16700Schasinglulu-  ``ERRATA_A76_1257314``: This applies errata 1257314 workaround to Cortex-A76
235*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
236*91f16700Schasinglulu
237*91f16700Schasinglulu-  ``ERRATA_A76_1262606``: This applies errata 1262606 workaround to Cortex-A76
238*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
239*91f16700Schasinglulu
240*91f16700Schasinglulu-  ``ERRATA_A76_1262888``: This applies errata 1262888 workaround to Cortex-A76
241*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
242*91f16700Schasinglulu
243*91f16700Schasinglulu-  ``ERRATA_A76_1275112``: This applies errata 1275112 workaround to Cortex-A76
244*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
245*91f16700Schasinglulu
246*91f16700Schasinglulu-  ``ERRATA_A76_1791580``: This applies errata 1791580 workaround to Cortex-A76
247*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r4p0 of the CPU.
248*91f16700Schasinglulu
249*91f16700Schasinglulu-  ``ERRATA_A76_1165522``: This applies errata 1165522 workaround to all
250*91f16700Schasinglulu   revisions of Cortex-A76 CPU. This errata is fixed in r3p0 but due to
251*91f16700Schasinglulu   limitation of errata framework this errata is applied to all revisions
252*91f16700Schasinglulu   of Cortex-A76 CPU.
253*91f16700Schasinglulu
254*91f16700Schasinglulu-  ``ERRATA_A76_1868343``: This applies errata 1868343 workaround to Cortex-A76
255*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r4p0 of the CPU.
256*91f16700Schasinglulu
257*91f16700Schasinglulu-  ``ERRATA_A76_1946160``: This applies errata 1946160 workaround to Cortex-A76
258*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r3p0 - r4p1 of the CPU.
259*91f16700Schasinglulu
260*91f16700Schasinglulu-  ``ERRATA_A76_2743102``: This applies errata 2743102 workaround to Cortex-A76
261*91f16700Schasinglulu   CPU. This needs to be enabled for all revisions <= r4p1 of the CPU and is
262*91f16700Schasinglulu   still open.
263*91f16700Schasinglulu
264*91f16700SchasingluluFor Cortex-A77, the following errata build flags are defined :
265*91f16700Schasinglulu
266*91f16700Schasinglulu-  ``ERRATA_A77_1508412``: This applies errata 1508412 workaround to Cortex-A77
267*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
268*91f16700Schasinglulu
269*91f16700Schasinglulu-  ``ERRATA_A77_1925769``: This applies errata 1925769 workaround to Cortex-A77
270*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p1 of the CPU.
271*91f16700Schasinglulu
272*91f16700Schasinglulu-  ``ERRATA_A77_1946167``: This applies errata 1946167 workaround to Cortex-A77
273*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p1 of the CPU.
274*91f16700Schasinglulu
275*91f16700Schasinglulu-  ``ERRATA_A77_1791578``: This applies errata 1791578 workaround to Cortex-A77
276*91f16700Schasinglulu   CPU. This needs to be enabled for r0p0, r1p0, and r1p1, it is still open.
277*91f16700Schasinglulu
278*91f16700Schasinglulu-  ``ERRATA_A77_2356587``: This applies errata 2356587 workaround to Cortex-A77
279*91f16700Schasinglulu   CPU. This needs to be enabled for r0p0, r1p0, and r1p1, it is still open.
280*91f16700Schasinglulu
281*91f16700Schasinglulu -  ``ERRATA_A77_1800714``: This applies errata 1800714 workaround to Cortex-A77
282*91f16700Schasinglulu    CPU. This needs to be enabled for revisions <= r1p1 of the CPU.
283*91f16700Schasinglulu
284*91f16700Schasinglulu -  ``ERRATA_A77_2743100``: This applies errata 2743100 workaround to Cortex-A77
285*91f16700Schasinglulu    CPU. This needs to be enabled for r0p0, r1p0, and r1p1, it is still open.
286*91f16700Schasinglulu
287*91f16700SchasingluluFor Cortex-A78, the following errata build flags are defined :
288*91f16700Schasinglulu
289*91f16700Schasinglulu-  ``ERRATA_A78_1688305``: This applies errata 1688305 workaround to Cortex-A78
290*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 - r1p0 of the CPU.
291*91f16700Schasinglulu
292*91f16700Schasinglulu-  ``ERRATA_A78_1941498``: This applies errata 1941498 workaround to Cortex-A78
293*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, and r1p1 of the CPU.
294*91f16700Schasinglulu
295*91f16700Schasinglulu-  ``ERRATA_A78_1951500``: This applies errata 1951500 workaround to Cortex-A78
296*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r1p0 and r1p1, r0p0 has the same
297*91f16700Schasinglulu   issue but there is no workaround for that revision.
298*91f16700Schasinglulu
299*91f16700Schasinglulu-  ``ERRATA_A78_1821534``: This applies errata 1821534 workaround to Cortex-A78
300*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0 and r1p0.
301*91f16700Schasinglulu
302*91f16700Schasinglulu-  ``ERRATA_A78_1952683``: This applies errata 1952683 workaround to Cortex-A78
303*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0, it is fixed in r1p0.
304*91f16700Schasinglulu
305*91f16700Schasinglulu-  ``ERRATA_A78_2132060``: This applies errata 2132060 workaround to Cortex-A78
306*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, and r1p2. It
307*91f16700Schasinglulu   is still open.
308*91f16700Schasinglulu
309*91f16700Schasinglulu-  ``ERRATA_A78_2242635``: This applies errata 2242635 workaround to Cortex-A78
310*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r1p0, r1p1, and r1p2. The issue
311*91f16700Schasinglulu   is present in r0p0 but there is no workaround. It is still open.
312*91f16700Schasinglulu
313*91f16700Schasinglulu-  ``ERRATA_A78_2376745``: This applies errata 2376745 workaround to Cortex-A78
314*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, and r1p2, and
315*91f16700Schasinglulu   it is still open.
316*91f16700Schasinglulu
317*91f16700Schasinglulu-  ``ERRATA_A78_2395406``: This applies errata 2395406 workaround to Cortex-A78
318*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, and r1p2, and
319*91f16700Schasinglulu   it is still open.
320*91f16700Schasinglulu
321*91f16700Schasinglulu- ``ERRATA_A78_2712571``: This applies erratum 2712571 workaround to Cortex-A78
322*91f16700Schasinglulu   CPU, this erratum affects system configurations that do not use an ARM
323*91f16700Schasinglulu   interconnect IP. This needs to be enabled for revisions r0p0, r1p0, r1p1
324*91f16700Schasinglulu   and r1p2 and it is still open.
325*91f16700Schasinglulu
326*91f16700Schasinglulu-  ``ERRATA_A78_2742426``: This applies erratum 2742426 workaround to Cortex-A78
327*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1 and r1p2 and
328*91f16700Schasinglulu   it is still open.
329*91f16700Schasinglulu
330*91f16700Schasinglulu-  ``ERRATA_A78_2772019``: This applies errata 2772019 workaround to Cortex-A78
331*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, and r1p2, and
332*91f16700Schasinglulu   it is still open.
333*91f16700Schasinglulu
334*91f16700Schasinglulu-  ``ERRATA_A78_2779479``: This applies erratum 2779479 workaround to Cortex-A78
335*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1 and r1p2 and
336*91f16700Schasinglulu   it is still open.
337*91f16700Schasinglulu
338*91f16700SchasingluluFor Cortex-A78AE, the following errata build flags are defined :
339*91f16700Schasinglulu
340*91f16700Schasinglulu- ``ERRATA_A78_AE_1941500`` : This applies errata 1941500 workaround to
341*91f16700Schasinglulu   Cortex-A78AE CPU. This needs to be enabled for revisions r0p0 and r0p1.
342*91f16700Schasinglulu   This erratum is still open.
343*91f16700Schasinglulu
344*91f16700Schasinglulu- ``ERRATA_A78_AE_1951502`` : This applies errata 1951502 workaround to
345*91f16700Schasinglulu  Cortex-A78AE CPU. This needs to be enabled for revisions r0p0 and r0p1. This
346*91f16700Schasinglulu  erratum is still open.
347*91f16700Schasinglulu
348*91f16700Schasinglulu- ``ERRATA_A78_AE_2376748`` : This applies errata 2376748 workaround to
349*91f16700Schasinglulu  Cortex-A78AE CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2.
350*91f16700Schasinglulu  This erratum is still open.
351*91f16700Schasinglulu
352*91f16700Schasinglulu- ``ERRATA_A78_AE_2395408`` : This applies errata 2395408 workaround to
353*91f16700Schasinglulu  Cortex-A78AE CPU. This needs to be enabled for revisions r0p0 and r0p1. This
354*91f16700Schasinglulu  erratum is still open.
355*91f16700Schasinglulu
356*91f16700Schasinglulu- ``ERRATA_A78_AE_2712574`` : This applies erratum 2712574 workaround to
357*91f16700Schasinglulu  Cortex-A78AE CPU. This erratum affects system configurations that do not use
358*91f16700Schasinglulu  an ARM interconnect IP. This needs to be enabled for revisions r0p0, r0p1 and
359*91f16700Schasinglulu  r0p2. This erratum is still open.
360*91f16700Schasinglulu
361*91f16700SchasingluluFor Cortex-A78C, the following errata build flags are defined :
362*91f16700Schasinglulu
363*91f16700Schasinglulu- ``ERRATA_A78C_1827430`` : This applies errata 1827430 workaround to
364*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revision r0p0. The erratum is
365*91f16700Schasinglulu  fixed in r0p1.
366*91f16700Schasinglulu
367*91f16700Schasinglulu- ``ERRATA_A78C_1827440`` : This applies errata 1827440 workaround to
368*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revision r0p0. The erratum is
369*91f16700Schasinglulu  fixed in r0p1.
370*91f16700Schasinglulu
371*91f16700Schasinglulu- ``ERRATA_A78C_2132064`` : This applies errata 2132064 workaround to
372*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revisions r0p1, r0p2 and
373*91f16700Schasinglulu  it is still open.
374*91f16700Schasinglulu
375*91f16700Schasinglulu- ``ERRATA_A78C_2242638`` : This applies errata 2242638 workaround to
376*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revisions r0p1, r0p2 and
377*91f16700Schasinglulu  it is still open.
378*91f16700Schasinglulu
379*91f16700Schasinglulu- ``ERRATA_A78C_2376749`` : This applies errata 2376749 workaround to
380*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revisions r0p1 and r0p2. This
381*91f16700Schasinglulu  erratum is still open.
382*91f16700Schasinglulu
383*91f16700Schasinglulu- ``ERRATA_A78C_2395411`` : This applies errata 2395411 workaround to
384*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revisions r0p1 and r0p2. This
385*91f16700Schasinglulu  erratum is still open.
386*91f16700Schasinglulu
387*91f16700Schasinglulu- ``ERRATA_A78C_2712575`` : This applies erratum 2712575 workaround to
388*91f16700Schasinglulu  Cortex-A78C CPU, this erratum affects system configurations that do not use
389*91f16700Schasinglulu  an ARM interconnect IP. This needs to be enabled for revisions r0p1 and r0p2
390*91f16700Schasinglulu  and is still open.
391*91f16700Schasinglulu
392*91f16700Schasinglulu- ``ERRATA_A78C_2772121`` : This applies errata 2772121 workaround to
393*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2.
394*91f16700Schasinglulu  This erratum is still open.
395*91f16700Schasinglulu
396*91f16700Schasinglulu- ``ERRATA_A78C_2779484`` : This applies errata 2779484 workaround to
397*91f16700Schasinglulu  Cortex-A78C CPU. This needs to be enabled for revisions r0p1 and r0p2.
398*91f16700Schasinglulu  This erratum is still open.
399*91f16700Schasinglulu
400*91f16700SchasingluluFor Cortex-X1 CPU, the following errata build flags are defined:
401*91f16700Schasinglulu
402*91f16700Schasinglulu- ``ERRATA_X1_1821534`` : This applies errata 1821534 workaround to Cortex-X1
403*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
404*91f16700Schasinglulu
405*91f16700Schasinglulu- ``ERRATA_X1_1688305`` : This applies errata 1688305 workaround to Cortex-X1
406*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
407*91f16700Schasinglulu
408*91f16700Schasinglulu- ``ERRATA_X1_1827429`` : This applies errata 1827429 workaround to Cortex-X1
409*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r1p0 of the CPU.
410*91f16700Schasinglulu
411*91f16700SchasingluluFor Neoverse N1, the following errata build flags are defined :
412*91f16700Schasinglulu
413*91f16700Schasinglulu-  ``ERRATA_N1_1073348``: This applies errata 1073348 workaround to Neoverse-N1
414*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r0p0 and r1p0 of the CPU.
415*91f16700Schasinglulu
416*91f16700Schasinglulu-  ``ERRATA_N1_1130799``: This applies errata 1130799 workaround to Neoverse-N1
417*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r2p0 of the CPU.
418*91f16700Schasinglulu
419*91f16700Schasinglulu-  ``ERRATA_N1_1165347``: This applies errata 1165347 workaround to Neoverse-N1
420*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r2p0 of the CPU.
421*91f16700Schasinglulu
422*91f16700Schasinglulu-  ``ERRATA_N1_1207823``: This applies errata 1207823 workaround to Neoverse-N1
423*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r2p0 of the CPU.
424*91f16700Schasinglulu
425*91f16700Schasinglulu-  ``ERRATA_N1_1220197``: This applies errata 1220197 workaround to Neoverse-N1
426*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r2p0 of the CPU.
427*91f16700Schasinglulu
428*91f16700Schasinglulu-  ``ERRATA_N1_1257314``: This applies errata 1257314 workaround to Neoverse-N1
429*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
430*91f16700Schasinglulu
431*91f16700Schasinglulu-  ``ERRATA_N1_1262606``: This applies errata 1262606 workaround to Neoverse-N1
432*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
433*91f16700Schasinglulu
434*91f16700Schasinglulu-  ``ERRATA_N1_1262888``: This applies errata 1262888 workaround to Neoverse-N1
435*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
436*91f16700Schasinglulu
437*91f16700Schasinglulu-  ``ERRATA_N1_1275112``: This applies errata 1275112 workaround to Neoverse-N1
438*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
439*91f16700Schasinglulu
440*91f16700Schasinglulu-  ``ERRATA_N1_1315703``: This applies errata 1315703 workaround to Neoverse-N1
441*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
442*91f16700Schasinglulu
443*91f16700Schasinglulu-  ``ERRATA_N1_1542419``: This applies errata 1542419 workaround to Neoverse-N1
444*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r3p0 - r4p0 of the CPU.
445*91f16700Schasinglulu
446*91f16700Schasinglulu-  ``ERRATA_N1_1868343``: This applies errata 1868343 workaround to Neoverse-N1
447*91f16700Schasinglulu   CPU. This needs to be enabled only for revision <= r4p0 of the CPU.
448*91f16700Schasinglulu
449*91f16700Schasinglulu-  ``ERRATA_N1_1946160``: This applies errata 1946160 workaround to Neoverse-N1
450*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r3p0, r3p1, r4p0, and r4p1, for
451*91f16700Schasinglulu   revisions r0p0, r1p0, and r2p0 there is no workaround.
452*91f16700Schasinglulu
453*91f16700Schasinglulu-  ``ERRATA_N1_2743102``: This applies errata 2743102 workaround to Neoverse-N1
454*91f16700Schasinglulu   CPU. This needs to be enabled for all revisions <= r4p1 of the CPU and is
455*91f16700Schasinglulu   still open.
456*91f16700Schasinglulu
457*91f16700SchasingluluFor Neoverse V1, the following errata build flags are defined :
458*91f16700Schasinglulu
459*91f16700Schasinglulu-  ``ERRATA_V1_1618635``: This applies errata 1618635 workaround to Neoverse-V1
460*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU, it is fixed in
461*91f16700Schasinglulu   r1p0.
462*91f16700Schasinglulu
463*91f16700Schasinglulu-  ``ERRATA_V1_1774420``: This applies errata 1774420 workaround to Neoverse-V1
464*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r0p0 and r1p0, it is fixed
465*91f16700Schasinglulu   in r1p1.
466*91f16700Schasinglulu
467*91f16700Schasinglulu-  ``ERRATA_V1_1791573``: This applies errata 1791573 workaround to Neoverse-V1
468*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r0p0 and r1p0, it is fixed
469*91f16700Schasinglulu   in r1p1.
470*91f16700Schasinglulu
471*91f16700Schasinglulu-  ``ERRATA_V1_1852267``: This applies errata 1852267 workaround to Neoverse-V1
472*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r0p0 and r1p0, it is fixed
473*91f16700Schasinglulu   in r1p1.
474*91f16700Schasinglulu
475*91f16700Schasinglulu-  ``ERRATA_V1_1925756``: This applies errata 1925756 workaround to Neoverse-V1
476*91f16700Schasinglulu   CPU. This needs to be enabled for r0p0, r1p0, and r1p1, it is still open.
477*91f16700Schasinglulu
478*91f16700Schasinglulu-  ``ERRATA_V1_1940577``: This applies errata 1940577 workaround to Neoverse-V1
479*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r1p0 and r1p1 of the
480*91f16700Schasinglulu   CPU.
481*91f16700Schasinglulu
482*91f16700Schasinglulu-  ``ERRATA_V1_1966096``: This applies errata 1966096 workaround to Neoverse-V1
483*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r1p0 and r1p1 of the CPU, the
484*91f16700Schasinglulu   issue is present in r0p0 as well but there is no workaround for that
485*91f16700Schasinglulu   revision.  It is still open.
486*91f16700Schasinglulu
487*91f16700Schasinglulu-  ``ERRATA_V1_2139242``: This applies errata 2139242 workaround to Neoverse-V1
488*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, and r1p1 of the
489*91f16700Schasinglulu   CPU.  It is still open.
490*91f16700Schasinglulu
491*91f16700Schasinglulu-  ``ERRATA_V1_2108267``: This applies errata 2108267 workaround to Neoverse-V1
492*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, and r1p1 of the CPU.
493*91f16700Schasinglulu   It is still open.
494*91f16700Schasinglulu
495*91f16700Schasinglulu-  ``ERRATA_V1_2216392``: This applies errata 2216392 workaround to Neoverse-V1
496*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r1p0 and r1p1 of the CPU, the
497*91f16700Schasinglulu   issue is present in r0p0 as well but there is no workaround for that
498*91f16700Schasinglulu   revision.  It is still open.
499*91f16700Schasinglulu
500*91f16700Schasinglulu-  ``ERRATA_V1_2294912``: This applies errata 2294912 workaround to Neoverse-V1
501*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, and r1p1 and r1p2 of
502*91f16700Schasinglulu   the CPU.
503*91f16700Schasinglulu
504*91f16700Schasinglulu-  ``ERRATA_V1_2372203``: This applies errata 2372203 workaround to Neoverse-V1
505*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0 and r1p1 of the CPU.
506*91f16700Schasinglulu   It is still open.
507*91f16700Schasinglulu
508*91f16700Schasinglulu- ``ERRATA_V1_2701953``: This applies erratum 2701953 workaround to Neoverse-V1
509*91f16700Schasinglulu   CPU, this erratum affects system configurations that do not use an ARM
510*91f16700Schasinglulu   interconnect IP. This needs to be enabled for revisions r0p0, r1p0 and r1p1.
511*91f16700Schasinglulu   It has been fixed in r1p2.
512*91f16700Schasinglulu
513*91f16700Schasinglulu-  ``ERRATA_V1_2743093``: This applies errata 2743093 workaround to Neoverse-V1
514*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1 and r1p2 of the
515*91f16700Schasinglulu   CPU. It is still open.
516*91f16700Schasinglulu
517*91f16700Schasinglulu-  ``ERRATA_V1_2743233``: This applies erratum 2743233 workaround to Neoverse-V1
518*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, and r1p2 of the
519*91f16700Schasinglulu   CPU. It is still open.
520*91f16700Schasinglulu
521*91f16700Schasinglulu-  ``ERRATA_V1_2779461``: This applies erratum 2779461 workaround to Neoverse-V1
522*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, r1p2 of the
523*91f16700Schasinglulu   CPU. It is still open.
524*91f16700Schasinglulu
525*91f16700SchasingluluFor Neoverse V2, the following errata build flags are defined :
526*91f16700Schasinglulu
527*91f16700Schasinglulu-  ``ERRATA_V2_2331132``: This applies errata 2331132 workaround to Neoverse-V2
528*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2. It is still
529*91f16700Schasinglulu   open.
530*91f16700Schasinglulu
531*91f16700Schasinglulu-  ``ERRATA_V2_2719103``: This applies errata 2719103 workaround to Neoverse-V2
532*91f16700Schasinglulu   CPU, this affects system configurations that do not use and ARM interconnect
533*91f16700Schasinglulu   IP. This needs to be enabled for revisions r0p0 and r0p1. It has been fixed
534*91f16700Schasinglulu   in r0p2.
535*91f16700Schasinglulu
536*91f16700Schasinglulu-  ``ERRATA_V2_2719105``: This applies errata 2719105 workaround to Neoverse-V2
537*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0 and r0p1. It is fixed in
538*91f16700Schasinglulu   r0p2.
539*91f16700Schasinglulu
540*91f16700Schasinglulu-  ``ERRATA_V2_2743011``: This applies errata 2743011 workaround to Neoverse-V2
541*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0 and r0p1. It is fixed in
542*91f16700Schasinglulu   r0p2.
543*91f16700Schasinglulu
544*91f16700Schasinglulu-  ``ERRATA_V2_2779510``: This applies errata 2779510 workaround to Neoverse-V2
545*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0 and r0p1. It is fixed in
546*91f16700Schasinglulu   r0p2.
547*91f16700Schasinglulu
548*91f16700Schasinglulu-  ``ERRATA_V2_2801372``: This applies errata 2801372 workaround to Neoverse-V2
549*91f16700Schasinglulu   CPU, this affects all configurations. This needs to be enabled for revisions
550*91f16700Schasinglulu   r0p0 and r0p1. It has been fixed in r0p2.
551*91f16700Schasinglulu
552*91f16700SchasingluluFor Cortex-A710, the following errata build flags are defined :
553*91f16700Schasinglulu
554*91f16700Schasinglulu-  ``ERRATA_A710_1987031``: This applies errata 1987031 workaround to
555*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled only for revisions r0p0, r1p0 and
556*91f16700Schasinglulu   r2p0 of the CPU. It is still open.
557*91f16700Schasinglulu
558*91f16700Schasinglulu-  ``ERRATA_A710_2081180``: This applies errata 2081180 workaround to
559*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled only for revisions r0p0, r1p0 and
560*91f16700Schasinglulu   r2p0 of the CPU. It is still open.
561*91f16700Schasinglulu
562*91f16700Schasinglulu-  ``ERRATA_A710_2055002``: This applies errata 2055002 workaround to
563*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r1p0, r2p0 of the CPU
564*91f16700Schasinglulu   and is still open.
565*91f16700Schasinglulu
566*91f16700Schasinglulu-  ``ERRATA_A710_2017096``: This applies errata 2017096 workaround to
567*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
568*91f16700Schasinglulu   of the CPU and is still open.
569*91f16700Schasinglulu
570*91f16700Schasinglulu-  ``ERRATA_A710_2083908``: This applies errata 2083908 workaround to
571*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revision r2p0 of the CPU and
572*91f16700Schasinglulu   is still open.
573*91f16700Schasinglulu
574*91f16700Schasinglulu-  ``ERRATA_A710_2058056``: This applies errata 2058056 workaround to
575*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
576*91f16700Schasinglulu   and r2p1 of the CPU and is still open.
577*91f16700Schasinglulu
578*91f16700Schasinglulu-  ``ERRATA_A710_2267065``: This applies errata 2267065 workaround to
579*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
580*91f16700Schasinglulu   of the CPU and is fixed in r2p1.
581*91f16700Schasinglulu
582*91f16700Schasinglulu-  ``ERRATA_A710_2136059``: This applies errata 2136059 workaround to
583*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
584*91f16700Schasinglulu   of the CPU and is fixed in r2p1.
585*91f16700Schasinglulu
586*91f16700Schasinglulu-  ``ERRATA_A710_2147715``: This applies errata 2147715 workaround to
587*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revision r2p0 of the CPU
588*91f16700Schasinglulu   and is fixed in r2p1.
589*91f16700Schasinglulu
590*91f16700Schasinglulu-  ``ERRATA_A710_2216384``: This applies errata 2216384 workaround to
591*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
592*91f16700Schasinglulu   of the CPU and is fixed in r2p1.
593*91f16700Schasinglulu
594*91f16700Schasinglulu-  ``ERRATA_A710_2282622``: This applies errata 2282622 workaround to
595*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and
596*91f16700Schasinglulu   r2p1 of the CPU and is still open.
597*91f16700Schasinglulu
598*91f16700Schasinglulu- ``ERRATA_A710_2291219``: This applies errata 2291219 workaround to
599*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
600*91f16700Schasinglulu   of the CPU and is fixed in r2p1.
601*91f16700Schasinglulu
602*91f16700Schasinglulu-  ``ERRATA_A710_2008768``: This applies errata 2008768 workaround to
603*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
604*91f16700Schasinglulu   of the CPU and is fixed in r2p1.
605*91f16700Schasinglulu
606*91f16700Schasinglulu-  ``ERRATA_A710_2371105``: This applies errata 2371105 workaround to
607*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0
608*91f16700Schasinglulu   of the CPU and is fixed in r2p1.
609*91f16700Schasinglulu
610*91f16700Schasinglulu-  ``ERRATA_A710_2701952``: This applies erratum 2701952 workaround to Cortex-A710
611*91f16700Schasinglulu   CPU, and applies to system configurations that do not use and ARM
612*91f16700Schasinglulu   interconnect IP. This needs to be enabled for r0p0, r1p0, r2p0 and r2p1 and
613*91f16700Schasinglulu   is still open.
614*91f16700Schasinglulu
615*91f16700Schasinglulu-  ``ERRATA_A710_2742423``: This applies errata 2742423 workaround to
616*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and
617*91f16700Schasinglulu   r2p1 of the CPU and is still open.
618*91f16700Schasinglulu
619*91f16700Schasinglulu-  ``ERRATA_A710_2768515``: This applies errata 2768515 workaround to
620*91f16700Schasinglulu   Cortex-A710 CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and
621*91f16700Schasinglulu   r2p1 of the CPU and is still open.
622*91f16700Schasinglulu
623*91f16700SchasingluluFor Neoverse N2, the following errata build flags are defined :
624*91f16700Schasinglulu
625*91f16700Schasinglulu-  ``ERRATA_N2_2002655``: This applies errata 2002655 workaround to Neoverse-N2
626*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
627*91f16700Schasinglulu
628*91f16700Schasinglulu-  ``ERRATA_N2_2009478``: This applies errata 2009478 workaround to Neoverse-N2
629*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
630*91f16700Schasinglulu
631*91f16700Schasinglulu-  ``ERRATA_N2_2067956``: This applies errata 2067956 workaround to Neoverse-N2
632*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
633*91f16700Schasinglulu
634*91f16700Schasinglulu-  ``ERRATA_N2_2025414``: This applies errata 2025414 workaround to Neoverse-N2
635*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
636*91f16700Schasinglulu
637*91f16700Schasinglulu-  ``ERRATA_N2_2189731``: This applies errata 2189731 workaround to Neoverse-N2
638*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
639*91f16700Schasinglulu
640*91f16700Schasinglulu-  ``ERRATA_N2_2138956``: This applies errata 2138956 workaround to Neoverse-N2
641*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
642*91f16700Schasinglulu
643*91f16700Schasinglulu-  ``ERRATA_N2_2138953``: This applies errata 2138953 workaround to Neoverse-N2
644*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2, r0p3 and is still open.
645*91f16700Schasinglulu
646*91f16700Schasinglulu-  ``ERRATA_N2_2242415``: This applies errata 2242415 workaround to Neoverse-N2
647*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
648*91f16700Schasinglulu
649*91f16700Schasinglulu-  ``ERRATA_N2_2138958``: This applies errata 2138958 workaround to Neoverse-N2
650*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
651*91f16700Schasinglulu
652*91f16700Schasinglulu-  ``ERRATA_N2_2242400``: This applies errata 2242400 workaround to Neoverse-N2
653*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
654*91f16700Schasinglulu
655*91f16700Schasinglulu-  ``ERRATA_N2_2280757``: This applies errata 2280757 workaround to Neoverse-N2
656*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1.
657*91f16700Schasinglulu
658*91f16700Schasinglulu-  ``ERRATA_N2_2326639``: This applies errata 2326639 workaround to Neoverse-N2
659*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU, it is fixed in
660*91f16700Schasinglulu   r0p1.
661*91f16700Schasinglulu
662*91f16700Schasinglulu-  ``ERRATA_N2_2340933``: This applies errata 2340933 workaround to Neoverse-N2
663*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU, it is fixed in
664*91f16700Schasinglulu   r0p1.
665*91f16700Schasinglulu
666*91f16700Schasinglulu-  ``ERRATA_N2_2346952``: This applies errata 2346952 workaround to Neoverse-N2
667*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2 of the CPU,
668*91f16700Schasinglulu   it is fixed in r0p3.
669*91f16700Schasinglulu
670*91f16700Schasinglulu-  ``ERRATA_N2_2376738``: This applies errata 2376738 workaround to Neoverse-N2
671*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0, r0p1, r0p2, r0p3 and is still open.
672*91f16700Schasinglulu
673*91f16700Schasinglulu-  ``ERRATA_N2_2388450``: This applies errata 2388450 workaround to Neoverse-N2
674*91f16700Schasinglulu   CPU. This needs to be enabled for revision r0p0 of the CPU, it is fixed in
675*91f16700Schasinglulu   r0p1.
676*91f16700Schasinglulu
677*91f16700Schasinglulu-  ``ERRATA_N2_2743014``: This applies errata 2743014 workaround to Neoverse-N2
678*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2. It is fixed
679*91f16700Schasinglulu   in r0p3.
680*91f16700Schasinglulu
681*91f16700Schasinglulu-  ``ERRATA_N2_2743089``: This applies errata 2743089 workaround to Neoverse-N2
682*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2. It is fixed
683*91f16700Schasinglulu   in r0p3.
684*91f16700Schasinglulu
685*91f16700Schasinglulu- ``ERRATA_N2_2728475``: This applies erratum 2728475 workaround to Neoverse-N2
686*91f16700Schasinglulu   CPU, this erratum affects system configurations that do not use and ARM
687*91f16700Schasinglulu   interconnect IP. This needs to be enabled for revisions r0p0, r0p1 and r0p2.
688*91f16700Schasinglulu   It is fixed in r0p3.
689*91f16700Schasinglulu
690*91f16700Schasinglulu-  ``ERRATA_N2_2779511``: This applies errata 2779511 workaround to Neoverse-N2
691*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r0p1 and r0p2. It is fixed
692*91f16700Schasinglulu   in r0p3.
693*91f16700Schasinglulu
694*91f16700SchasingluluFor Cortex-X2, the following errata build flags are defined :
695*91f16700Schasinglulu
696*91f16700Schasinglulu-  ``ERRATA_X2_2002765``: This applies errata 2002765 workaround to Cortex-X2
697*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, and r2p0 of the CPU,
698*91f16700Schasinglulu   it is still open.
699*91f16700Schasinglulu
700*91f16700Schasinglulu-  ``ERRATA_X2_2058056``: This applies errata 2058056 workaround to Cortex-X2
701*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and r2p1 of the CPU,
702*91f16700Schasinglulu   it is still open.
703*91f16700Schasinglulu
704*91f16700Schasinglulu-  ``ERRATA_X2_2083908``: This applies errata 2083908 workaround to Cortex-X2
705*91f16700Schasinglulu   CPU. This needs to be enabled for revision r2p0 of the CPU, it is still open.
706*91f16700Schasinglulu
707*91f16700Schasinglulu-  ``ERRATA_X2_2017096``: This applies errata 2017096 workaround to Cortex-X2
708*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r0p0, r1p0 and r2p0 of the
709*91f16700Schasinglulu   CPU, it is fixed in r2p1.
710*91f16700Schasinglulu
711*91f16700Schasinglulu-  ``ERRATA_X2_2081180``: This applies errata 2081180 workaround to Cortex-X2
712*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r0p0, r1p0 and r2p0 of the
713*91f16700Schasinglulu   CPU, it is fixed in r2p1.
714*91f16700Schasinglulu
715*91f16700Schasinglulu-  ``ERRATA_X2_2216384``: This applies errata 2216384 workaround to Cortex-X2
716*91f16700Schasinglulu   CPU. This needs to be enabled only for revisions r0p0, r1p0 and r2p0 of the
717*91f16700Schasinglulu   CPU, it is fixed in r2p1.
718*91f16700Schasinglulu
719*91f16700Schasinglulu-  ``ERRATA_X2_2147715``: This applies errata 2147715 workaround to Cortex-X2
720*91f16700Schasinglulu   CPU. This needs to be enabled only for revision r2p0 of the CPU, it is fixed
721*91f16700Schasinglulu   in r2p1.
722*91f16700Schasinglulu
723*91f16700Schasinglulu-  ``ERRATA_X2_2282622``: This applies errata 2282622 workaround to Cortex-X2
724*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and r2p1 of the
725*91f16700Schasinglulu   CPU and is still open.
726*91f16700Schasinglulu
727*91f16700Schasinglulu-  ``ERRATA_X2_2371105``: This applies errata 2371105 workaround to Cortex-X2
728*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0 and r2p0 of the CPU
729*91f16700Schasinglulu   and is fixed in r2p1.
730*91f16700Schasinglulu
731*91f16700Schasinglulu- ``ERRATA_X2_2701952``: This applies erratum 2701952 workaround to Cortex-X2
732*91f16700Schasinglulu   CPU and affects system configurations that do not use an ARM interconnect IP.
733*91f16700Schasinglulu   This needs to be enabled for revisions r0p0, r1p0, r2p0 and r2p1 and is
734*91f16700Schasinglulu   still open.
735*91f16700Schasinglulu
736*91f16700Schasinglulu-  ``ERRATA_X2_2742423``: This applies errata 2742423 workaround to Cortex-X2
737*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and r2p1 of the
738*91f16700Schasinglulu   CPU and is still open.
739*91f16700Schasinglulu
740*91f16700Schasinglulu-  ``ERRATA_X2_2768515``: This applies errata 2768515 workaround to Cortex-X2
741*91f16700Schasinglulu   CPU. This needs to be enabled for revisions r0p0, r1p0, r2p0 and r2p1 of the
742*91f16700Schasinglulu   CPU and is still open.
743*91f16700Schasinglulu
744*91f16700SchasingluluFor Cortex-X3, the following errata build flags are defined :
745*91f16700Schasinglulu
746*91f16700Schasinglulu- ``ERRATA_X3_2070301``: This applies errata 2070301 workaround to the Cortex-X3
747*91f16700Schasinglulu  CPU. This needs to be enabled only for revisions r0p0, r1p0, r1p1 and r1p2 of
748*91f16700Schasinglulu  the CPU and is still open.
749*91f16700Schasinglulu
750*91f16700Schasinglulu- ``ERRATA_X3_2313909``: This applies errata 2313909 workaround to
751*91f16700Schasinglulu  Cortex-X3 CPU. This needs to be enabled only for revisions r0p0 and r1p0
752*91f16700Schasinglulu  of the CPU, it is fixed in r1p1.
753*91f16700Schasinglulu
754*91f16700Schasinglulu- ``ERRATA_X3_2615812``: This applies errata 2615812 workaround to Cortex-X3
755*91f16700Schasinglulu  CPU. This needs to be enabled only for revisions r0p0, r1p0 and r1p1 of the
756*91f16700Schasinglulu  CPU, it is still open.
757*91f16700Schasinglulu
758*91f16700Schasinglulu- ``ERRATA_X3_2742421``: This applies errata 2742421 workaround to
759*91f16700Schasinglulu  Cortex-X3 CPU. This needs to be enabled only for revisions r0p0, r1p0 and
760*91f16700Schasinglulu  r1p1. It is fixed in r1p2.
761*91f16700Schasinglulu
762*91f16700SchasingluluFor Cortex-A510, the following errata build flags are defined :
763*91f16700Schasinglulu
764*91f16700Schasinglulu-  ``ERRATA_A510_1922240``: This applies errata 1922240 workaround to
765*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled only for revision r0p0, it is
766*91f16700Schasinglulu   fixed in r0p1.
767*91f16700Schasinglulu
768*91f16700Schasinglulu-  ``ERRATA_A510_2288014``: This applies errata 2288014 workaround to
769*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled only for revisions r0p0, r0p1,
770*91f16700Schasinglulu   r0p2, r0p3 and r1p0, it is fixed in r1p1.
771*91f16700Schasinglulu
772*91f16700Schasinglulu-  ``ERRATA_A510_2042739``: This applies errata 2042739 workaround to
773*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled only for revisions r0p0, r0p1 and
774*91f16700Schasinglulu   r0p2, it is fixed in r0p3.
775*91f16700Schasinglulu
776*91f16700Schasinglulu-  ``ERRATA_A510_2041909``: This applies errata 2041909 workaround to
777*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled only for revision r0p2 and is fixed
778*91f16700Schasinglulu   in r0p3. The issue is also present in r0p0 and r0p1 but there is no
779*91f16700Schasinglulu   workaround for those revisions.
780*91f16700Schasinglulu
781*91f16700Schasinglulu-  ``ERRATA_A510_2080326``: This applies errata 2080326 workaround to
782*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled only for revision r0p2 and is
783*91f16700Schasinglulu   fixed in r0p3. This issue is also present in r0p0 and r0p1 but there is no
784*91f16700Schasinglulu   workaround for those revisions.
785*91f16700Schasinglulu
786*91f16700Schasinglulu-  ``ERRATA_A510_2250311``: This applies errata 2250311 workaround to
787*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2,
788*91f16700Schasinglulu   r0p3 and r1p0, it is fixed in r1p1. This workaround disables MPMM even if
789*91f16700Schasinglulu   ENABLE_MPMM=1.
790*91f16700Schasinglulu
791*91f16700Schasinglulu-  ``ERRATA_A510_2218950``: This applies errata 2218950 workaround to
792*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2,
793*91f16700Schasinglulu   r0p3 and r1p0, it is fixed in r1p1.
794*91f16700Schasinglulu
795*91f16700Schasinglulu-  ``ERRATA_A510_2172148``: This applies errata 2172148 workaround to
796*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2,
797*91f16700Schasinglulu   r0p3 and r1p0, it is fixed in r1p1.
798*91f16700Schasinglulu
799*91f16700Schasinglulu-  ``ERRATA_A510_2347730``: This applies errata 2347730 workaround to
800*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2,
801*91f16700Schasinglulu   r0p3, r1p0 and r1p1. It is fixed in r1p2.
802*91f16700Schasinglulu
803*91f16700Schasinglulu-  ``ERRATA_A510_2371937``: This applies errata 2371937 workaround to
804*91f16700Schasinglulu   Cortex-A510 CPU. This needs to applied for revisions r0p0, r0p1, r0p2,
805*91f16700Schasinglulu   r0p3, r1p0, r1p1, and is fixed in r1p2.
806*91f16700Schasinglulu
807*91f16700Schasinglulu-  ``ERRATA_A510_2666669``: This applies errata 2666669 workaround to
808*91f16700Schasinglulu   Cortex-A510 CPU. This needs to applied for revisions r0p0, r0p1, r0p2,
809*91f16700Schasinglulu   r0p3, r1p0, r1p1. It is fixed in r1p2.
810*91f16700Schasinglulu
811*91f16700Schasinglulu-  ``ERRATA_A510_2684597``: This applies erratum 2684597 workaround to
812*91f16700Schasinglulu   Cortex-A510 CPU. This needs to be applied to revision r0p0, r0p1, r0p2,
813*91f16700Schasinglulu   r0p3, r1p0, r1p1 and r1p2. It is fixed in r1p3.
814*91f16700Schasinglulu
815*91f16700SchasingluluFor Cortex-A715, the following errata build flags are defined :
816*91f16700Schasinglulu
817*91f16700Schasinglulu-  ``ERRATA_A715_2701951``: This applies erratum 2701951 workaround to Cortex-A715
818*91f16700Schasinglulu   CPU and affects system configurations that do not use an ARM interconnect
819*91f16700Schasinglulu   IP. This needs to be applied to revisions r0p0, r1p0 and r1p1. It is fixed
820*91f16700Schasinglulu   in r1p2.
821*91f16700Schasinglulu
822*91f16700SchasingluluDSU Errata Workarounds
823*91f16700Schasinglulu----------------------
824*91f16700Schasinglulu
825*91f16700SchasingluluSimilar to CPU errata, TF-A also implements workarounds for DSU (DynamIQ
826*91f16700SchasingluluShared Unit) errata. The DSU errata details can be found in the respective Arm
827*91f16700Schasingluludocumentation:
828*91f16700Schasinglulu
829*91f16700Schasinglulu- `Arm DSU Software Developers Errata Notice`_.
830*91f16700Schasinglulu
831*91f16700SchasingluluEach erratum is identified by an ``ID``, as defined in the DSU errata notice
832*91f16700Schasingluludocument. Thus, the build flags which enable/disable the errata workarounds
833*91f16700Schasingluluhave the format ``ERRATA_DSU_<ID>``. The implementation and application logic
834*91f16700Schasingluluof DSU errata workarounds are similar to `CPU errata workarounds`_.
835*91f16700Schasinglulu
836*91f16700SchasingluluFor DSU errata, the following build flags are defined:
837*91f16700Schasinglulu
838*91f16700Schasinglulu-  ``ERRATA_DSU_798953``: This applies errata 798953 workaround for the
839*91f16700Schasinglulu   affected DSU configurations. This errata applies only for those DSUs that
840*91f16700Schasinglulu   revision is r0p0 (on r0p1 it is fixed). However, please note that this
841*91f16700Schasinglulu   workaround results in increased DSU power consumption on idle.
842*91f16700Schasinglulu
843*91f16700Schasinglulu-  ``ERRATA_DSU_936184``: This applies errata 936184 workaround for the
844*91f16700Schasinglulu   affected DSU configurations. This errata applies only for those DSUs that
845*91f16700Schasinglulu   contain the ACP interface **and** the DSU revision is older than r2p0 (on
846*91f16700Schasinglulu   r2p0 it is fixed). However, please note that this workaround results in
847*91f16700Schasinglulu   increased DSU power consumption on idle.
848*91f16700Schasinglulu
849*91f16700Schasinglulu-  ``ERRATA_DSU_2313941``: This applies errata 2313941 workaround for the
850*91f16700Schasinglulu   affected DSU configurations. This errata applies for those DSUs with
851*91f16700Schasinglulu   revisions r0p0, r1p0, r2p0, r2p1, r3p0, r3p1 and is still open. However,
852*91f16700Schasinglulu   please note that this workaround results in increased DSU power consumption
853*91f16700Schasinglulu   on idle.
854*91f16700Schasinglulu
855*91f16700SchasingluluCPU Specific optimizations
856*91f16700Schasinglulu--------------------------
857*91f16700Schasinglulu
858*91f16700SchasingluluThis section describes some of the optimizations allowed by the CPU micro
859*91f16700Schasingluluarchitecture that can be enabled by the platform as desired.
860*91f16700Schasinglulu
861*91f16700Schasinglulu-  ``SKIP_A57_L1_FLUSH_PWR_DWN``: This flag enables an optimization in the
862*91f16700Schasinglulu   Cortex-A57 cluster power down sequence by not flushing the Level 1 data
863*91f16700Schasinglulu   cache. The L1 data cache and the L2 unified cache are inclusive. A flush
864*91f16700Schasinglulu   of the L2 by set/way flushes any dirty lines from the L1 as well. This
865*91f16700Schasinglulu   is a known safe deviation from the Cortex-A57 TRM defined power down
866*91f16700Schasinglulu   sequence. Each Cortex-A57 based platform must make its own decision on
867*91f16700Schasinglulu   whether to use the optimization.
868*91f16700Schasinglulu
869*91f16700Schasinglulu-  ``A53_DISABLE_NON_TEMPORAL_HINT``: This flag disables the cache non-temporal
870*91f16700Schasinglulu   hint. The LDNP/STNP instructions as implemented on Cortex-A53 do not behave
871*91f16700Schasinglulu   in a way most programmers expect, and will most probably result in a
872*91f16700Schasinglulu   significant speed degradation to any code that employs them. The Armv8-A
873*91f16700Schasinglulu   architecture (see Arm DDI 0487A.h, section D3.4.3) allows cores to ignore
874*91f16700Schasinglulu   the non-temporal hint and treat LDNP/STNP as LDP/STP instead. Enabling this
875*91f16700Schasinglulu   flag enforces this behaviour. This needs to be enabled only for revisions
876*91f16700Schasinglulu   <= r0p3 of the CPU and is enabled by default.
877*91f16700Schasinglulu
878*91f16700Schasinglulu-  ``A57_DISABLE_NON_TEMPORAL_HINT``: This flag has the same behaviour as
879*91f16700Schasinglulu   ``A53_DISABLE_NON_TEMPORAL_HINT`` but for Cortex-A57. This needs to be
880*91f16700Schasinglulu   enabled only for revisions <= r1p2 of the CPU and is enabled by default,
881*91f16700Schasinglulu   as recommended in section "4.7 Non-Temporal Loads/Stores" of the
882*91f16700Schasinglulu   `Cortex-A57 Software Optimization Guide`_.
883*91f16700Schasinglulu
884*91f16700Schasinglulu- ''A57_ENABLE_NON_CACHEABLE_LOAD_FWD'': This flag enables non-cacheable
885*91f16700Schasinglulu   streaming enhancement feature for Cortex-A57 CPUs. Platforms can set
886*91f16700Schasinglulu   this bit only if their memory system meets the requirement that cache
887*91f16700Schasinglulu   line fill requests from the Cortex-A57 processor are atomic. Each
888*91f16700Schasinglulu   Cortex-A57 based platform must make its own decision on whether to use
889*91f16700Schasinglulu   the optimization. This flag is disabled by default.
890*91f16700Schasinglulu
891*91f16700Schasinglulu-  ``NEOVERSE_Nx_EXTERNAL_LLC``: This flag indicates that an external last
892*91f16700Schasinglulu   level cache(LLC) is present in the system, and that the DataSource field
893*91f16700Schasinglulu   on the master CHI interface indicates when data is returned from the LLC.
894*91f16700Schasinglulu   This is used to control how the LL_CACHE* PMU events count.
895*91f16700Schasinglulu   Default value is 0 (Disabled).
896*91f16700Schasinglulu
897*91f16700SchasingluluGIC Errata Workarounds
898*91f16700Schasinglulu----------------------
899*91f16700Schasinglulu-  ``GIC600_ERRATA_WA_2384374``: This flag applies part 2 of errata 2384374
900*91f16700Schasinglulu   workaround for the affected GIC600 and GIC600-AE implementations. It applies
901*91f16700Schasinglulu   to implementations of GIC600 and GIC600-AE with revisions less than or equal
902*91f16700Schasinglulu   to r1p6 and r0p2 respectively. If the platform sets GICV3_SUPPORT_GIC600,
903*91f16700Schasinglulu   then this flag is enabled; otherwise, it is 0 (Disabled).
904*91f16700Schasinglulu
905*91f16700Schasinglulu--------------
906*91f16700Schasinglulu
907*91f16700Schasinglulu*Copyright (c) 2014-2023, Arm Limited and Contributors. All rights reserved.*
908*91f16700Schasinglulu
909*91f16700Schasinglulu.. _CVE-2017-5715: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5715
910*91f16700Schasinglulu.. _CVE-2018-3639: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-3639
911*91f16700Schasinglulu.. _CVE-2022-23960: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-23960
912*91f16700Schasinglulu.. _Cortex-A53 MPCore Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm048406/index.html
913*91f16700Schasinglulu.. _Cortex-A57 MPCore Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm049219/index.html
914*91f16700Schasinglulu.. _Cortex-A72 MPCore Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm012079/index.html
915*91f16700Schasinglulu.. _Cortex-A57 Software Optimization Guide: http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimization_Guide_external.pdf
916*91f16700Schasinglulu.. _Arm DSU Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm138168/index.html
917