硅片勘误和软件解决方法

作者:Will Deacon <will.deacon@arm.com>

日期:2015 年 11 月 27 日

一个不幸的事实是,硬件在生产过程中经常会出现所谓的“勘误”,这可能导致其在特定情况下偏离架构。对于 ARM 生产的硬件,这些勘误大致分为以下几类:

A 类

没有可行解决方法的严重错误。

B 类

具有可接受解决方法的重大或严重错误。

C 类

预计在正常操作下不会发生的次要错误。

有关更多信息,请查阅 infocenter.arm.com 上提供的“软件开发人员勘误表通知”文档之一(需要注册)。

就 Linux 而言,B 类勘误可能需要在操作系统中进行一些特殊处理。例如,避免特定的代码序列,或以特定的方式配置处理器。一种不太常见的情况可能需要采取类似的操作,以便将 A 类勘误降级为 C 类勘误。这些统称为“软件解决方法”,并且仅在少数情况下需要(例如,既需要非安全解决方法 * 并且 * Linux 可以触发这些情况)。

对于可能对未受相关勘误影响的系统产生不利影响的软件解决方法,会在“内核特性”->“通过替代框架进行的 ARM 勘误解决方法”下添加一个 Kconfig 条目。除了 Arm 认为“罕见”的勘误解决方法之外,这些解决方法默认启用,并在检测到受影响的 CPU 时在运行时进行修补。对于侵入性较小的解决方法,没有 Kconfig 选项,并且代码的结构(最好带有注释)确保不会遇到该勘误。

这种方法可能使得确定任意内核源代码树中解决了哪些勘误变得有些麻烦,因此该文件充当 Linux 内核中软件解决方法的注册表,并且将在提交新的解决方法并将其反向移植到稳定内核时进行更新。

实施者

组件

勘误 ID

Kconfig

全志

A64/R18

UNKNOWN1

SUN50I_ERRATUM_UNKNOWN1

Ampere

AmpereOne

AC03_CPU_38

AMPERE_ERRATUM_AC03_CPU_38

Ampere

AmpereOne AC04

AC04_CPU_10

AMPERE_ERRATUM_AC03_CPU_38

Ampere

AmpereOne AC04

AC04_CPU_23

AMPERE_ERRATUM_AC04_CPU_23

ARM

Cortex-A510

#2457168

ARM64_ERRATUM_2457168

ARM

Cortex-A510

#2064142

ARM64_ERRATUM_2064142

ARM

Cortex-A510

#2038923

ARM64_ERRATUM_2038923

ARM

Cortex-A510

#1902691

ARM64_ERRATUM_1902691

ARM

Cortex-A510

#2051678

ARM64_ERRATUM_2051678

ARM

Cortex-A510

#2077057

ARM64_ERRATUM_2077057

ARM

Cortex-A510

#2441009

ARM64_ERRATUM_2441009

ARM

Cortex-A510

#2658417

ARM64_ERRATUM_2658417

ARM

Cortex-A510

#3117295

ARM64_ERRATUM_3117295

ARM

Cortex-A520

#2966298

ARM64_ERRATUM_2966298

ARM

Cortex-A53

#826319

ARM64_ERRATUM_826319

ARM

Cortex-A53

#827319

ARM64_ERRATUM_827319

ARM

Cortex-A53

#824069

ARM64_ERRATUM_824069

ARM

Cortex-A53

#819472

ARM64_ERRATUM_819472

ARM

Cortex-A53

#845719

ARM64_ERRATUM_845719

ARM

Cortex-A53

#843419

ARM64_ERRATUM_843419

ARM

Cortex-A55

#1024718

ARM64_ERRATUM_1024718

ARM

Cortex-A55

#1530923

ARM64_ERRATUM_1530923

ARM

Cortex-A55

#2441007

ARM64_ERRATUM_2441007

ARM

Cortex-A57

#832075

ARM64_ERRATUM_832075

ARM

Cortex-A57

#852523

N/A

ARM

Cortex-A57

#834220

ARM64_ERRATUM_834220

ARM

Cortex-A57

#1319537

ARM64_ERRATUM_1319367

ARM

Cortex-A57

#1742098

ARM64_ERRATUM_1742098

ARM

Cortex-A72

#853709

N/A

ARM

Cortex-A72

#1319367

ARM64_ERRATUM_1319367

ARM

Cortex-A72

#1655431

ARM64_ERRATUM_1742098

ARM

Cortex-A73

#858921

ARM64_ERRATUM_858921

ARM

Cortex-A76

#1188873,1418040

ARM64_ERRATUM_1418040

ARM

Cortex-A76

#1165522

ARM64_ERRATUM_1165522

ARM

Cortex-A76

#1286807

ARM64_ERRATUM_1286807

ARM

Cortex-A76

#1463225

ARM64_ERRATUM_1463225

ARM

Cortex-A76

#1490853

N/A

ARM

Cortex-A76

#3324349

ARM64_ERRATUM_3194386

ARM

Cortex-A77

#1491015

N/A

ARM

Cortex-A77

#1508412

ARM64_ERRATUM_1508412

ARM

Cortex-A77

#3324348

ARM64_ERRATUM_3194386

ARM

Cortex-A78

#3324344

ARM64_ERRATUM_3194386

ARM

Cortex-A78C

#3324346,3324347

ARM64_ERRATUM_3194386

ARM

Cortex-A710

#2119858

ARM64_ERRATUM_2119858

ARM

Cortex-A710

#2054223

ARM64_ERRATUM_2054223

ARM

Cortex-A710

#2224489

ARM64_ERRATUM_2224489

ARM

Cortex-A710

#3324338

ARM64_ERRATUM_3194386

ARM

Cortex-A715

#2645198

ARM64_ERRATUM_2645198

ARM

Cortex-A715

#3456084

ARM64_ERRATUM_3194386

ARM

Cortex-A720

#3456091

ARM64_ERRATUM_3194386

ARM

Cortex-A725

#3456106

ARM64_ERRATUM_3194386

ARM

Cortex-X1

#1502854

N/A

ARM

Cortex-X1

#3324344

ARM64_ERRATUM_3194386

ARM

Cortex-X1C

#3324346

ARM64_ERRATUM_3194386

ARM

Cortex-X2

#2119858

ARM64_ERRATUM_2119858

ARM

Cortex-X2

#2224489

ARM64_ERRATUM_2224489

ARM

Cortex-X2

#3324338

ARM64_ERRATUM_3194386

ARM

Cortex-X3

#3324335

ARM64_ERRATUM_3194386

ARM

Cortex-X4

#3194386

ARM64_ERRATUM_3194386

ARM

Cortex-X925

#3324334

ARM64_ERRATUM_3194386

ARM

Neoverse-N1

#1188873,1418040

ARM64_ERRATUM_1418040

ARM

Neoverse-N1

#1349291

N/A

ARM

Neoverse-N1

#1490853

N/A

ARM

Neoverse-N1

#1542419

ARM64_ERRATUM_1542419

ARM

Neoverse-N1

#3324349

ARM64_ERRATUM_3194386

ARM

Neoverse-N2

#2139208

ARM64_ERRATUM_2139208

ARM

Neoverse-N2

#2067961

ARM64_ERRATUM_2067961

ARM

Neoverse-N2

#2253138

ARM64_ERRATUM_2253138

ARM

Neoverse-N2

#3324339

ARM64_ERRATUM_3194386

ARM

Neoverse-N3

#3456111

ARM64_ERRATUM_3194386

ARM

Neoverse-V1

#1619801

N/A

ARM

Neoverse-V1

#3324341

ARM64_ERRATUM_3194386

ARM

Neoverse-V2

#3324336

ARM64_ERRATUM_3194386

ARM

Neoverse-V3

#3312417

ARM64_ERRATUM_3194386

ARM

MMU-500

#841119,826419 #562869,1047329

ARM_SMMU_MMU_500_CPRE_ERRATA

ARM

MMU-600

#1076982,1209401

N/A

ARM

MMU-700

#2268618,2812531

N/A

ARM

GIC-700

#2941627

ARM64_ERRATUM_2941627

博通

Brahma-B53

N/A

ARM64_ERRATUM_845719

博通

Brahma-B53

N/A

ARM64_ERRATUM_843419

Cavium

ThunderX ITS

#22375,24313

CAVIUM_ERRATUM_22375

Cavium

ThunderX ITS

#23144

CAVIUM_ERRATUM_23144

Cavium

ThunderX GICv3

#23154,38545

CAVIUM_ERRATUM_23154

Cavium

ThunderX GICv3

#38539

N/A

Cavium

ThunderX Core

#27456

CAVIUM_ERRATUM_27456

Cavium

ThunderX Core

#30115

CAVIUM_ERRATUM_30115

Cavium

ThunderX SMMUv2

#27704

N/A

Cavium

ThunderX2 SMMUv3

#74

N/A

Cavium

ThunderX2 SMMUv3

#126

N/A

Cavium

ThunderX2 Core

#219

CAVIUM_TX2_ERRATUM_219

Marvell

ARM-MMU-500

#582743

N/A

NVIDIA

Carmel Core

N/A

NVIDIA_CARMEL_CNP_ERRATUM

NVIDIA

T241 GICv3/4.x

T241-FABRIC-4

N/A

飞思卡尔/NXP

LS2080A/LS1043A

A-008585

FSL_ERRATUM_A008585

海思

Hip0{5,6,7}

#161010101

HISILICON_ERRATUM_161010101

海思

Hip0{6,7}

#161010701

N/A

海思

Hip0{6,7}

#161010803

N/A

海思

Hip07

#161600802

HISILICON_ERRATUM_161600802

海思

Hip08 SMMU PMCG

#162001800

N/A

海思

Hip{08,09,09A,10 ,10C,11} SMMU PMCG

#162001900

N/A

海思

Hip09

#162100801

HISILICON_ERRATUM_162100801

高通技术

Kryo/Falkor v1

E1003

QCOM_FALKOR_ERRATUM_1003

高通技术

Kryo/Falkor v1

E1009

QCOM_FALKOR_ERRATUM_1009

高通技术

QDF2400 ITS

E0065

QCOM_QDF2400_ERRATUM_0065

高通技术

Falkor v{1,2}

E1041

QCOM_FALKOR_ERRATUM_1041

高通技术

Kryo4xx Gold

N/A

ARM64_ERRATUM_1463225

高通技术

Kryo4xx Gold

N/A

ARM64_ERRATUM_1418040

高通技术

Kryo4xx Silver

N/A

ARM64_ERRATUM_1530923

高通技术

Kryo4xx Silver

N/A

ARM64_ERRATUM_1024718

高通技术

Kryo4xx Gold

N/A

ARM64_ERRATUM_1286807

瑞芯微

RK3588

#3588001

ROCKCHIP_ERRATUM_3588001

瑞芯微

RK3568

#3568002

ROCKCHIP_ERRATUM_3568002

富士通

A64FX

E#010001

FUJITSU_ERRATUM_010001

ASR

ASR8601

#8601001

N/A

微软

Azure Cobalt 100

#2139208

ARM64_ERRATUM_2139208

微软

Azure Cobalt 100

#2067961

ARM64_ERRATUM_2067961

微软

Azure Cobalt 100

#2253138

ARM64_ERRATUM_2253138

微软

Azure Cobalt 100

#3324339

ARM64_ERRATUM_3194386