矽片勘誤和軟體解決方法

作者: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