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