[RDMA]Asynchronous Event and Errors

IB协议中经常会提到Asychronous,它表示事件或错误不与特定的消息传输相关联。本文主要介绍Asynchronous Event与Asynchronous Error的相关内容。

1 Registering a Handler

software执行Set Asychronous Event Handler verb以注册一个处理程序,以便在HCA遇到Asynchronous Event 或 Asynchronous Error 时调用该程序。

每当HCA遇到Asynchronous Event 或 Asynchronous Error 时,它会警告其设备驱动程序(通常通过中断),传递给驱动程序的参数是:

  • HCA句柄。
  • 事件记录。包含指示资源类型和RID(Record ID)的信息,以及发生事件。

驱动程序依次调用异步事件处理程序,并将HCA句柄与事件记录传递给它 。

注册后,所有后续的异步错误将调用错误处理程序,在注册错误处理程序之前发生的异步错误将会丢失。每个HCA只能注册一个错误处理程序,后续调用Set Asychronous Event Handler verb将导致先前的处理程序地址被新的覆盖。

2 Affiliated Asychronous Events

“Affiliated”表示事件与特定的QP或EEC相关联。“Event”表示它并不是错误,而是software可能会发现有用的事件,因此相关的QP与EEC的状态保持不变。当前定义的关联异步事件有:

  • Path Migrated。连接被迁移到备用路径。
  • Communication Established。表明当QP或EEC仍处于RTR状态,第一个请求包已经到达QP或EEC的RQ Logic,这会自动将QP或EEC的状态从RTR转换为RTS状态,目标QP或EEC的句柄在事件记录中返回。此事件可能对HCA的CM有用。
  • SQ Drained。表明指定QP的SQ已经完成了software命令QP或EEC从RTS状态转换到SQD状态时正在进行的所有未完成消息的传输。对于RC、RD,该事件表明QP或EEC的SQ Logic已经接收到与发送到目标QP或EEC的所有消息请求包相关的所有响应。此事件通知software,现在可以安全的执行Modify QPModify EEC verb以修改QP或EEC的操作特征,并将其转换为完全可操作的RTS状态。

如果RC或UD HCA支持SRQ,配置了SRQ Limit Event生成机制并且到达了SRQ Limit,则CI生成SRQ Limit Reached Affiliated Asychronous Event。当SRQ WQE的数量小于SRQ Limit时,达到SRQ Limit。如果HCA支持UC QP连接SRQ,则CI应报告SRQ Limit Reached Affiliated Asychronous Event,当事件产生时,CI应将SRQ Limit重置为0。

如果RC或UD HCA支持SRQ,CI应在一个处于Error状态的QP上生成一个Last WQE Reached Affiliated Asynchronous Event(最后一个WQE到达关联异步事件),并且在以下情况与SRQ相关联,为最后一个WQE生成CQE,或者QP处于Error状态,并且RQ上没有更多的WQE。

如果RC或UD HCA支持SRQ,,CI在同一个QP上出现Local Work Queue Catastrophic Error后,CI不会在同一个QP上生成Last WQE Reached Affiliated Asynchronous Event

如果HCA支持UC QP连接SRQ, CI应在一个处于Error状态的QP上生成一个Last WQE Reached Affiliated Asynchronous Event(最后一个WQE到达关联异步事件),并且在以下情况与SRQ相关联,为最后一个WQE生成CQE,或者QP处于Error状态,并且RQ上没有更多的WQE。如果HCA遇到Local Work Queue Catastrophic Error,并且没有发生Last WQE Reached Affiliated Asynchronous Event,则消费者必须销毁所有QP和SRQ,以回收与该QP相关的所有WQE。

3 Affiliated Asynchronous Errors

“Affiliated”表示因为事件与特定的SQ、RQ、CQ或EEC相关联。“Error”是因为它是一个错误,但是HCA无法在COE中报告错误。受影响的OP或EEC转移到Error状态。目前定义的错误类型有:

  • CQ Error。当HCA试图将COE写入CQ时发生错误。如果与CQ相关的任何SQ或RQ随后试图将CQE发布到该CQ,则会导致报告此错误,CQE不能再发布到CQ,并且不能保证在错误发生可成功恢复时CQ中已经存在的CQE。可能的原因包括CQ溢出或CQ保护错误。
  • Local Work Queue Catastrophic Error。访问或处理SQ或RQ上的WQE时发生的错误会阻止报告完成情况。当与引起CQ错误的并CQ相关联的SQ或RQ仍试图使用该CQ时,会生成此错误。
  • Invalid Request Local  Work Queue Error。传输层在响应端检测到传输OpCode violation,可能是Unsupported or Reserved OpCode,或Out of Sequence OpCode。对于RC服务,传输层在响应端检测到传输OpCode violation,CI将生成一个Invalid Request Local  Work Queue Error,响应方的关联QP处于Error状态。
  • Local Access Violation Work Queue Error。传输层在响应方检测到请求访问冲突。可能的原因:Atomic未对齐、过多的RDMA Read或Atomic请求、R_Key violation、没有立即数据的长度错误。对于RC服务,传输层在响应端检测到请求访问冲突,CI将生成Local Access Violation Work Queue Error,响应方的相关QP处于Error状态。
  • Local EEC Catastrophic Error。访问或处理EEC时的错误会阻止将CQE成功发布到RD QP CQ。
  • Path Migration Request Error。未接受到该QP或EEC的传入路径迁移请求。
  • SRQ Catastrophic Error。在处理或访问SRQ时发生错误,导致WQE无法从SRQ中退役并且无法报告接收完成情况。如果HCA支持SRQ,CI将生成SRQ Catastrophic Error,CI应将SRQ置于Error状态。资源未准备好以外的错误阻止HCA从SRQ中退出WQE,或QP试图从SRQ解除WQE,但关联的SRQ已置于Error状态。
  • XRC Domain Violation。响应方RQ检测到XRC Domain与XRC SRQ Domain不匹配。
  • Invalid XRCETH。响应方检测到XRC SRQ不存在,或不在正确状态,或wire protocol violation。

4 Unaffiliated Asychronous Event

  • Port Active。链接激活时发出。如果支持Port Active事件,则CI将在链路声明为Active时生成Port Active事件。当与HCA端口关联的链接从不可用状态转换为可用状态时,生成Port Active事件。
  • Client Reregistration Event。当SM请求客户端注册时产生。如果CI指示端口支持客户端注册,则当SMA接收到来自SM的请求时,CI将生成一个Client Reregistration Event。
  • Port Change Event。端口属性改变时产生。如果支持可选的Port Change Event,那么当下面列出的任何端口属性发生更改时,CI将生成Port Change Event。该事件将伴随着一组标志,指示哪些端口属性发生了更改。

5 Unaffiliated Asychronous Errors。

“unaffiliated”表示错误不与特定的QP或EEC相关联。如何处理错误由错误类型定义:

  • Local Catastrophic Error。该错误不能与任何资源关联,HCA和/或其驱动程序的行为是不确定的。
  • Port Error。当链路不可用时该错误被报告。当与HCA端口关联的链路从可用状态转变为不可用状态时产生。

        —Unavailable states:Down、Initialize、Armed。

        —Available states:Active、ActDefer。

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值