处理异常事件 - 4.0 简体中文

QDMA Subsystem for PCI Express v4.0 产品指南 (PG302)

Document ID
PG302
Release Date
2022-05-20
Version
4.0 简体中文

无效队列上的 C2H 完成

当 QDMA 在队列上接收到完成,并且此队列中具有无效上下文(以 C2H CMPT 上下文中的 Valid 位表示),那么此完成将被静默丢弃。

完整环上的 C2H 完成

完成环中的完成条目的最大数量比完成环中条目总数少 2。C2H 完成上下文中含有 PIDX 和 CIDX。这样即可支持 QDMA 计算完成环中的完成数。当 QDMA 在已满的队列上接收到完成时,QDMA 可采取以下操作:

  • 使该队列的 C2H 完成上下文失效。
  • 标记含错误的 C2H 完成上下文。
  • 丢弃此完成。
  • 发送标记为错误的“Status Descriptor”(状态描述符),前提是启用此操作。
  • 如果启用且并非未完成,则发送中断。
  • 发送含错误的标记响应。
  • 将错误记录到 C2H 错误状态寄存器中。

含描述符错误的 C2H 完成

当 QDMA C2H 引擎遇到描述符错误时,在 C2H 完成引擎的上下文中会采取以下操作:

  • 使该队列的 C2H 完成上下文失效。
  • 标记含错误的 C2H 完成上下文。
  • 将完成传出至完成环。它会被标记为错误。
  • 如果启用且未完成,则发送含错误标记的状态描述符。
  • 如果启用且并非未完成,则发送中断。请注意,完成引擎只能发送未完成的中断和/或状态描述符。这样做的意义是,如果遇到描述符错误时,中断恰好未完成,那么就不会向软件发送队列中断。尽管如此,如果软件未对错误加以掩码,那么仍会记录错误,且仍会发送错误中断
  • 发送含错误的标记响应。

含无效 CIDX 的 C2H 完成

C2H 完成引擎具有相应逻辑用于检测 CIDX 更新中的 CIDX 值是否指向完成环中的空位置。检测到此类错误时,C2H 完成引擎会执行以下操作:

  • 使完成上下文失效。
  • 标记含错误的完成上下文。
  • 将错误记录到 C2H 错误状态寄存器中。

端口 ID 不匹配

CMPT 上下文指定相应端口,基于此端口的 CMPT 应适用于该 CMPT 队列。如果传入 CMPT 中的 port_id 与 CMPT 上下文中的 port_id 不同,那么 CMPT 引擎会将传入 CMPT 作为错误定向的 CMPT 来处理并将其丢弃。它还会记录错误。请注意,发生 port_id 错误匹配时,CMPT 队列不会失效。