PPU XID定义
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 | 运行调试工具。 |
Suspected Hardware Problems | 请联系硬件供应商。他们可以运行其硬件诊断过程。 |
Suspected Driver Problems | 向PTG提交错误报告,包括ppu-bug-report.sh命令的输出结果。 |
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建议如下:
使用
ppudbg或ppu-smi进行复位操作。如果上述1.未纠正错误,重新启动将解决此问题。
4.2 XID 9088: VSYNC: vsync ip abnormal
该事件由视频 IP异常中断触发。通常有两个原因:
超时中断:视频 IP无法在指定时间内完成解码/编码/后处理,IP将触发超时中断和内部复位。
错误比特流:输入比特流有错误,视频解码会触发错误比特流中断,但会完成解码(尽量使错误隐藏起来)。
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_en为0时会触发该事件,这将丢弃数据包。
4.6 XID 2712, 2713: ICN-PHUB: err_icn_inst[cmd]_inv_vppuid
只有当vppuid无效(即 > 136)时才会触发该事件,可通过instruction level或cmd 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
该事件在以下情况下触发:
TLBP-C2CEG[C2CIG]转换后的物理地址中携带的ppuid不等于src vppuid。
TLBP-C2CEG[C2CIG]转换后的pte中携带的system bit为1。
4.16 XID 4480: ICN-PRC: icn c2c tx
当接收方没有响应请求时将触发该事件(重试4次后失败,默认重试8次,可配置)。
TxPPU的PRC检测到此错误并引发异常。
4.17 XID 4481: ICN-PRC: ppuid discovery fail
当ppuid发现超时且未收到响应时,将触发该事件。
PPUID发现Tx/Rx超时并失败。CFG_ppuid和CFG_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收到这2个Xid。
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) | 384、2699、8576 |
Kill 超时失败 | 设备复位 (ppu-smi -r) | 16256 |
ICN Link错误 | 热重启 (os reboot) | 4480、4481、4224、4225、4226、4227、2711、2702、2703 |
ECC | 策略1:退出所有用户进程,重新拉起业务即可(部分显存被屏蔽,用户可使用显存量变小) | 642、1154、1665、1922、2706、2700、2696、4997、5005 |
掉卡 | 冷重启 (BMC下电重启) | 16257 |
其它 | 当前业务中断,无需修复,重新拉起业务即可 |
4.24 V1.0版本之前的软件栈
如果用户仍在使用不支持XID的版本, 可以使用dmesg | grep <below keywords>来查看是否发生了相应的错误。
关于ECC errors,用户可以grep以下关键字:
HBM PS0 2bit uncorrected ECC error detectedHBM PS1 2bit uncorrected ECC error detected
关于ICN errors,用户可以grep以下关键字:
SWITCH IH RT_NOPATHSWITCH IH RT_LPPATHSWITCH IH RX_PORT_ENSWITCH IH BM_OVERFLOWPRC EXCEPTION ICN_C2C_TXPRC EXCEPTION PPUID_DISC_FAILPHUB_C2CDMA ERR REMOTE_STORE_RSPPHUB_C2CDMA ERR TLBP_C2CEG_INVPAPHUB_C2CDMA ERR ICN_FENCE_INVPAPHUB_C2CDMA ERR TLBP_DMAFS_INVP_XNACKPHUB_C2CDMA FATAL ICN_INST_NOPATHPHUB_C2CDMA ERR FB_REQ_TOPHUB_C2CDMA ERR ICN_REQ_TOPHUB_C2CDMA ERR ICN_LOCAL_FENCE_INVPAPHUB_C2CDMA FATAL ICN_RT_NOPATHPHUB_C2CDMA ERR ICN_INV_CMDPHUB_C2CDMA ERR ICN_INV_PAPHUB_C2CDMA ERR ICN_DST_INVPAPHUB_C2CDMA ERR ICN_DST_MEMPHUB_C2CDMA ERR TLBP_C2CIG_XNACKPHUB_C2CDMA ERR TLBP_C2CIG_INVALID_PAGEPHUB_C2CDMA ERR TLBP_C2CEG_XNACKPHUB_C2CDMA ERR TLBP_C2CEG_INVALID_PAGEPHUB_C2CDMA ERR TLBP_PHUB_XNACKPHUB_C2CDMA ERR TLBP_PHUB_INVALID_PAGE
关于设备丢失
无,用户可以快速使用
lspci -d:6001 -vvv检查是否有0xff判定。
