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