有多个 Leaf Error Aggregator(叶节点错误聚合器)位于不同位置。这些聚合器用于记录错误,并将错误传输到中央错误聚合器。每个叶节点错误聚合器都包含错误状态寄存器和错误掩码寄存器。错误掩码是使能掩码。错误状态寄存器始终都会记录错误,与使能掩码值无关。仅当启用错误掩码时,叶节点错误聚合器才会将错误传输至中央错误聚合器。
中央错误聚合器会将所有错误聚合在一起。发生任何错误时,如果在错误中断寄存器 QDMA_GLBL_ERR_INT (0B04) 中,err_int_arm
位已置位,那么中央错误聚合器就会生成 Error Interrupt(错误中断)。当中断引擎提取错误中断时,err_int_arm
位由软件置位,并由硬件清零。错误中断适用于所有错误,包括 H2C 错误和 C2H 错误。软件必须对该 err_int_arm
位进行置位,才能再次生成中断。
错误中断仅支持直接中断。寄存器 QDMA_GLBL_ERR_INT bit[23] en_coal
必须始终编程为 0(直接中断)。
错误中断会从错误中断寄存器 QDMA_GLBL_ERR_INT 获取矢量。对于直接中断,该矢量是 MSI-X 表的中断矢量索引。
错误中断的进程如下。
- 读取错误中断寄存器 QDMA_C2H_GLBL_INT (0B04) 以获取功能和矢量编号。
- 传出 PCIe MSI-X 报文。
下图显示了错误中断寄存器模块框图。
图 1. 错误中断处理