edpc
1. DPC 配置 (DPC_CAP_CONTROL_OFF, B+0x4)
- DPC_DL_ACTIVE_ERR_COR--0b--禁用。通常不需要在链路激活时产生 ERR_COR 消息。
- DPC_DPC_SW_TRIGGER--0b--初始化时保持为 0。仅在需要手动触发 DPC 错误注入验证时写 1。
- POISON_TLP_EGR_BLOCK_EN--1b--开启。阻断带毒(Poisoned)报文向下游传播,防止错误扩散。
- DPC_DPC_ERR_COR_EN--1b--开启。当 DPC 被触发时,向系统发送一条 ERR_COR 消息作为通知。
- DPC_DPC_INT_EN--1b--开启。启用 DPC 中断,使固件/驱动能接收到 DPC 事件通知。
- DPC_DPC_CPL_CNTRL--1b--设置为 UR (Unsupported Request)。当 DPC 触发导致链路断开时,根端口自动向 CPU 返回 UR 状态。这能防止 CPU 因等待 PIO 响应而发生 Completion Timeout (CTO)。
- DPC_DPC_TRIG_EN--
10b触发策略:
-
01b:检测到非屏蔽非致命或致命错误时触发。-
10b:仅在致命错误 (ERR_FATAL) 时触发(推荐,更稳定)。
2. eDPC (RP PIO) 配置
如果 DPC_RP_EXT_DPC 为 1,需配置以下寄存器 :
-
DPC_RP_PIO_MASK_OFF(B+0x10):设置0x00000000,取消所有屏蔽 -
DPC_RP_PIO_SEVERITY_OFF(B+0x14):设置严重程度。将MEM_CTO(位18)、IO_CTO(位10)、CFG_CTO(位2) 设为 Fatal (1b)。这样当设备挂死导致读写超时时,能直接触发 DPC -
DPC_RP_PIO_SYSERROR_OFF(B+0x18):设置0x00000000,防止配置PIO 错误应上报为系统错误。
误注入方案
-
读-改-写:读取
DPC_CAP_CONTROL_OFF(B+0x4) 的值。 -
置位:将 位 22 (
DPC_DPC_SW_TRIGGER) 置为1。 -
写回:将修改后的值写回寄存器。
2. eDPC / RP PIO 错误注入 (针对 Root Port PIO)
-
PIO 读写超时/非法响应:
-
通过 CPU 对一个不存在的下游设备地址空间进行读操作(PIO Read)。
-
预期结果:
DPC RP PIO Status Register记录错误,固件能够从DPC RP PIO Header Log中读取导致故障的报文信息。
-

浙公网安备 33010602011771号