PPU XID定义

更新时间:
复制为 MD 格式

1. 简介

本文将为您介绍什么是Xid消息,旨在帮助系统管理员、开发人员和FAE理解这些消息背后的含义,以帮助分析和解决PPU相关的问题。

1.1 什么是Xid消息

Xid消息是来自PTG驱动程序的错误报告,打印到操作系统的内核日志或事件日志中。Xid消息指示发生了一般的PPU错误,最常见的原因是驱动程序对PPU编程不正确或发送到PPU的命令损坏。这些消息可能表示硬件问题、PTG软件问题或用户应用程序问题。

这些消息提供诊断信息,用户和PTG都可以使用这些信息来帮助调试上报的问题。

每个消息的含义在不同的驱动程序版本中是一致的。

1.2 如何使用Xid消息

Xid消息旨在用作调试指南。因为许多问题可能有多个可能的根本原因,所以仅从Xid值来理解每个问题并不总是可行的。

例如,Xid Error可能表示用户程序试图访问无效内存。但是,理论上,由于PCIE或帧缓冲区(“Frame Buffer[FB]”)问题导致的内存损坏可能会损坏任何驱动像硬件下发的命令,从而导致可以产生几乎任何错误。通常,以下列出的Xid分类应作为进一步调查每个问题的起点。

以下手册为调试PPU问题提供了额外的指导,包括解释Xid的建议,并为处理常见Xid的后续步骤提供了指导。

2. 处理Xid Error

2.1 查看Xid Error消息

2.1 分析Xid Error

下表列出了针对遇到的各种问题建议采取的措施。

问题

建议措施

Suspected User Programming Issues

运行调试工具。
请参阅memcheck工具和ppu-gdb文档。

Suspected Hardware Problems

请联系硬件供应商。他们可以运行其硬件诊断过程。

Suspected Driver Problems

PTG提交错误报告,包括ppu-bug-report.sh命令的输出结果。
有关收集附加信息以提供给PTG以及常见Xid原因故障排除的指导,请参阅该文档。

3. Xid Error列表

下表列出了Xid Error以及每个错误的潜在原因。

XID

CLIENT_ID

EVENT_ID

故障

原因

****

****

硬件错误

驱动错误

用户程序错误

系统内存损坏

总线错误

散热问题

FB损坏

384

CP=1

128

invalid command

X

X

X

X

385

129

preempt_fail

X

641

CHUB=2

129

invalid_pa

X

X

642

130

ecc_error

X

X

643

131

invalid_page

X

X

X

644

132

tlb_xnack

X

X

896

GD=3

128

fatal_error

X

X

X

1153

L1=4

129

invalid_pa

X

X

1154

130

ecc_error

X

X

1155

131

invalid_page

X

X

X

1156

132

tlb_xnack

X

X

1664

MMU=6

128

invalid_page

X

X

1665

129

ecc_error_page

X

X

1666

130

invalid_va

X

X

1667

131

invalid_pa

X

X

1920

TLBV=7

128

xnack

X

X

X

1921

129

invalid_page

X

X

1922

130

ecc_error_page

X

X

1923

131

invalid_pa

X

X

2713

PHUB=10

153

err_icn_inst_inv_vppuid

X

2712

152

err_icn_cmd_inv_vppuid

X

2711

151

err_remote_store_rsp

X

2710

150

err_tlbp_c2ceg_invpa

X

2709

149

err_tlbp_c2cig_invpa

X

2707

147

err_icn_fence_invpa

X

2706

146

err_icn_fence_ecc

X

X

2705

145

err_tlbp_dmafs_invp_xnack

X

2704

144

fatal_icn_inst_nopath

X

2703

143

err_fb_req_to

X

2702

142

err_icn_req_to

X

2701

141

err_icn_local_fence_inv_pa

X

2700

140

err_icn_local_fence_ecc

X

X

2698

138

fatal_icn_rt_nopath

X

2699

139

err_icn_inv_cmd

X

X

X

2697

137

err_icn_inv_pa

X

X

2696

136

err_icn_ecc_data

X

X

2695

135

err_icn_dst_invpa

X

2694

134

err_icn_dst_mem

X

2693

133

err_tlbp_c2cig_xnack

X

2692

132

err_tlbp_c2cig_invalid_page

X

2691

131

err_tlbp_c2ceg_xnack

X

2690

130

err_tlbp_c2ceg_invalid_page

X

2689

129

err_tlbp_phub_xnack

X

2688

128

err_tlbp_phub_invalid_page

X

2944

REGFAB=11

128

illegal register access

X

2945

129

read resigster timeout

X

2946

130

vf accessed during live migration

X

2947

131

driver programming error

X

2948

132

accessed reserved reg address

X

4224

SWITCH=16

128

rt_nopath

X

4225

129

rt_lppath

X

4226

130

rx_port_en

X

4227

131

bm_overflow

X

4480

PRC=17

128

icn_c2c_tx

X

X

4481

129

ppuid_disc_fail

X

X

4996

HBM=19

132

PS0 1bit ecc error count over set threshold

X

X

X

4997

133

PS0 2-bit uncorrected ECC error detected

X

X

X

5004

140

PS1 1bit ecc error count over set threshold

X

X

X

5005

141

PS1 2-bit uncorrected ECC error detected

X

X

X

5008

144

AC parity error detected

X

X

X

8576

VCP=33

128

invalid command

X

X

X

X

8833

VHUB=34

129

vhub ECC error detected

X

X

8834

130

vhub invalid PA address

X

X

8835

131

vhub atomic error

X

X

9088

VSYNC=35

128

vsync ip abnormal

X

16257

KERNEL=63

129

device lost

X

X

16256

128

kill overtime

X

X

16258

130

launch abort

X

X

4. 常见XID Error

本节提供了有关一些常见Xid Error的更多信息。

4.1 XID 384:8576: CP/VCP: Invalid CMD Error

收到该事件表明驱动程序代码故障。通常这可能是用户态驱动(umd)或者有小概率是内核态驱动(kmd)向硬件发送了非法命令。在某些情况下,它也可能是由系统内存不稳定引起的。

当记录到此事件时,PTG建议如下:

  1. 使用ppudbgppu-smi进行复位操作。

  2. 如果上述1.未纠正错误,重新启动将解决此问题。

4.2 XID 9088: VSYNC: vsync ip abnormal

该事件由视频 IP异常中断触发。通常有两个原因:

  1. 超时中断:视频 IP无法在指定时间内完成解码/编码/后处理,IP将触发超时中断和内部复位。

  2. 错误比特流:输入比特流有错误,视频解码会触发错误比特流中断,但会完成解码(尽量使错误隐藏起来)。

4.3 XID 4224: ICN-SWITCH: routine no path

当路由表中dst ppu条目的所有位都为0或 MinLink=0 时,会触发该事件。

4.4 XID 4225: ICN-SWITCH: routine loop path

dst ppu等于src ppu时会触发该事件,这意味着:

  • 路由表出错

  • local DMA copy 命令发送到了 ICN ring。

4.5 XID 4226: ICN-SWITCH: rx_port_en

rx_data有效但rx_port_en0时会触发该事件,这将丢弃数据包。

4.6 XID 2712, 2713: ICN-PHUB: err_icn_inst[cmd]_inv_vppuid

只有当vppuid无效(即 > 136)时才会触发该事件,可通过instruction levelcmd level触发。

  • 2712:通过cmd level触发。

  • 2713:通过instruction level触发。

4.7 XID 2695, 2697: ICN-PHUB: Invalid PA

只有当pa超出范围时才会触发该事件,这可能在icn命令read/write/fence访问fabric期间从src/dst ppu发生。

  • 2695:发生于dst ppu。

  • 2697:发生于src ppu。

4.8 XID 2688, 2689, 2690, 2691, 2692, 2693: ICN-PHUB:

只有当页表 attribute验证失败时才会触发该事件。

4.9 XID 2699: ICN-PHUB: Invalid Command

icn ring收到无效的cmd时会触发该事件,可能是FB错误或驱动程序问题。

4.10 XID 2698, 2704: ICN-PHUB: routine table no path

例程表禁用时会触发该事件。

  • 2698:通过cmd level触发。

  • 2704:通过instruction level触发。

4.11 XID 2702, 2703: ICN-PHUB: request timeout

禁用与MAC DB的物理链接时,会触发该事件。

  • 2702:通过cmd level触发。

  • 2703:通过instruction level触发。

4.12 XID 2705: ICN-PHUB: tlbp dmafs xnack

DMA fence没有页表项pte或检测到非法的物理地址pa时会触发该事件,在这种情况下,tlbp将返回xnack。

4.13 XID 2707: ICN-PHUB: icn fence invalid pa

对于icn-fence命令,从远端PPU上的Fabric返回非法pa错误时会触发该事件。

4.14 XID 2701: ICN-PHUB: icn local fence invalid pa

local fence地址超出本地hbm范围或具有意外的ppuid时,会触发该事件。

4.15 XID 2709, 2710: ICN-PHUB: tlbp c2cig[c2ceg] invalid pa

该事件在以下情况下触发:

  1. TLBP-C2CEG[C2CIG]转换后的物理地址中携带的ppuid不等于src vppuid。

  2. TLBP-C2CEG[C2CIG]转换后的pte中携带的system bit1。

4.16 XID 4480: ICN-PRC: icn c2c tx

当接收方没有响应请求时将触发该事件(重试4次后失败,默认重试8次,可配置)。

TxPPUPRC检测到此错误并引发异常。

4.17 XID 4481: ICN-PRC: ppuid discovery fail

ppuid发现超时且未收到响应时,将触发该事件。

PPUID发现Tx/Rx超时并失败。CFG_ppuidCFG_ppuid_vld必须先由SW设置。切换CFG_ppuid_disc_en以再次触发发现数据包。这是在内核模式驱动程序加载期间完成的,如果尝试了几次但仍然发现失败,报告错误,硬件团队将对其进行诊断。

4.18 XID 4997, 5005: HBM: UECC

当发生2位不可校正ECC时将触发该事件,请注意,这同样会导致其他source模块报告ECC错误:如 642、1154、1665、1922...,但带有额外的错误信息。

4.19 XID 4996, 5004: HBM: CECC counter overflow

对于可纠正的ECC(1bit),通常它已经被硬件纠正了,没有数据损坏,我们不会通过Xid报告这些信息。但是当发生太多1bit ECC时,一定是设备出了问题,需要做额外的硬件检测,在这种情况下,我们很可能会从ps0/ps1收到这2Xid。

4.20 XID 16256: KERNEL: Kill over time

进程kill失败主要是由于任务依赖关系不正确造成的。当收到此id时,需要进行设备复位(使用ppu-smi/ppudbg)。

4.21 XID 16258: KERNEL: Launch abort

进程kill的过程当中驱动检测到多个进程上往硬件提交的任务间依赖有死锁的可能性,一般由ICN相关使用导致。内核驱动会主动让死锁关联进程对应的任务停止,并报该Xid。

  • 当仅收到此id时,只需重新拉起业务进程即可。

  • 若收到此id后,并伴随有收到XID 16256,则按照Kill over time的处理流程,进行设备复位(使用ppu-smi/ppudbg)。

4.22 其他XID

该事件仅在硬件错误发生时触发,需要硬件团队调查问题。

4.23 XID修复策略

类型

修复策略

XID

Invalid CMD

设备复位 (ppu-smi -r)

3842699、8576

Kill 超时失败

设备复位 (ppu-smi -r)

16256

ICN Link错误

热重启 (os reboot)

4480、4481、4224、4225、4226、4227、2711、2702、2703

ECC

策略1:退出所有用户进程,重新拉起业务即可(部分显存被屏蔽,用户可使用显存量变小)
策略2:如多次发生UECC,推荐做一次设备复位或热重启

642、1154、1665、1922、2706、2700、2696、4997、5005

掉卡

冷重启 (BMC下电重启)

16257

其它

当前业务中断,无需修复,重新拉起业务即可

4.24 V1.0版本之前的软件栈

如果用户仍在使用不支持XID的版本, 可以使用dmesg | grep <below keywords>来查看是否发生了相应的错误。

  1. 关于ECC errors,用户可以grep以下关键字:

  • HBM PS0 2bit uncorrected ECC error detected

  • HBM PS1 2bit uncorrected ECC error detected

  1. 关于ICN errors,用户可以grep以下关键字:

  • SWITCH IH RT_NOPATH

  • SWITCH IH RT_LPPATH

  • SWITCH IH RX_PORT_EN

  • SWITCH IH BM_OVERFLOW

  • PRC EXCEPTION ICN_C2C_TX

  • PRC EXCEPTION PPUID_DISC_FAIL

  • PHUB_C2CDMA ERR REMOTE_STORE_RSP

  • PHUB_C2CDMA ERR TLBP_C2CEG_INVPA

  • PHUB_C2CDMA ERR ICN_FENCE_INVPA

  • PHUB_C2CDMA ERR TLBP_DMAFS_INVP_XNACK

  • PHUB_C2CDMA FATAL ICN_INST_NOPATH

  • PHUB_C2CDMA ERR FB_REQ_TO

  • PHUB_C2CDMA ERR ICN_REQ_TO

  • PHUB_C2CDMA ERR ICN_LOCAL_FENCE_INVPA

  • PHUB_C2CDMA FATAL ICN_RT_NOPATH

  • PHUB_C2CDMA ERR ICN_INV_CMD

  • PHUB_C2CDMA ERR ICN_INV_PA

  • PHUB_C2CDMA ERR ICN_DST_INVPA

  • PHUB_C2CDMA ERR ICN_DST_MEM

  • PHUB_C2CDMA ERR TLBP_C2CIG_XNACK

  • PHUB_C2CDMA ERR TLBP_C2CIG_INVALID_PAGE

  • PHUB_C2CDMA ERR TLBP_C2CEG_XNACK

  • PHUB_C2CDMA ERR TLBP_C2CEG_INVALID_PAGE

  • PHUB_C2CDMA ERR TLBP_PHUB_XNACK

  • PHUB_C2CDMA ERR TLBP_PHUB_INVALID_PAGE

  1. 关于设备丢失

  • 无,用户可以快速使用 lspci -d:6001 -vvv检查是否有0xff判定。

image.png