298 lines · plain
1=======================================2Silicon Errata and Software Workarounds3=======================================4 5Author: Will Deacon <will.deacon@arm.com>6 7Date : 27 November 20158 9It is an unfortunate fact of life that hardware is often produced with10so-called "errata", which can cause it to deviate from the architecture11under specific circumstances. For hardware produced by ARM, these12errata 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 acceptable17 workaround.18 Category C A minor error that is not expected to occur under normal19 operation.20 ========== ========================================================21 22For more information, consult one of the "Software Developers Errata23Notice" documents available on infocenter.arm.com (registration24required).25 26As far as Linux is concerned, Category B errata may require some special27treatment in the operating system. For example, avoiding a particular28sequence of code, or configuring the processor in a particular way. A29less common situation may require similar actions in order to declassify30a Category A erratum into a Category C erratum. These are collectively31known as "software workarounds" and are only required in the minority of32cases (e.g. those cases that both require a non-secure workaround *and*33can be triggered by Linux).34 35For software workarounds that may adversely impact systems unaffected by36the erratum in question, a Kconfig entry is added under "Kernel37Features" -> "ARM errata workarounds via the alternatives framework".38With the exception of workarounds for errata deemed "rare" by Arm, these39are enabled by default and patched in at runtime when an affected CPU is40detected. For less-intrusive workarounds, a Kconfig option is not41available and the code is structured (preferably with a comment) in such42a way that the erratum will not be hit.43 44This approach can make it slightly onerous to determine exactly which45errata are worked around in an arbitrary kernel source tree, so this46file acts as a registry of software workarounds in the Linux Kernel and47will be updated when new workarounds are committed and backported to48stable 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+----------------+-----------------+-----------------+-----------------------------+298