关键问题
P-Tile/H-Tile Avalon®流英特尔® FPGA IP(适用于 PCI Express*)和 P-Tile/H-Tile Avalon®内存映射英特尔® FPGA IP PCI Express* 实施可选的备用路由 ID 解释 (ARI) 功能时,启用多功能或单根 I/O 虚拟化 (SR-IOV) 功能。ARI 功能包括一个称为下一个函数的字段,可帮助主机 BIOS 执行枚举过程。启用 ARI 时,P-Tile 或 H-tile 的物理功能 (PF) 数量不到 8,而下一个函数不正确地显示 PF 1 的值。
因此,如果启用 AER,端点中的以下错误状态可能会被设置为,因为根端口会向未存在的 PF 发出配置请求,指出不正确的下一个功能编号:
- 检测到可纠正错误(设备状态寄存器)
- 不受支持的请求检测(设备状态寄存器)
- 建议非严重错误状态(可纠正错误状态寄存器)
- 不受支持的请求错误状态(无法纠正的错误状态寄存器)
- 仅在建议非严重错误掩码位设置为"0"(可纠正错误掩码寄存器)时才设置
如果 AER 通过设置以下比特启用了以下比特,则将将一条ERR_COR消息发送到根端口:
- 建议非严重错误掩码设置为"0"(可纠正错误掩码寄存器)
- 可纠正的错误报告启用设置为"1"(设备控制寄存器)
- 不受支持的请求报告启用设置为"1"(设备控制寄存器)
在根端口中,如果收到无法支持的请求状态完成,则会设置以下位
- 接收主 Abort(次要状态寄存器)
此外,在根端口中,如果收到ERR_COR,并且启用了 AER,则会设置以下位
- ERR_COR接收(根错误状态寄存器)
对于适用于 PCI Express* 的 P-Tile/H-Tile Avalon®流传输英特尔® FPGA IP和面向 PCI Express* 的 P-Tile/H-Tile Avalon®内存映射英特尔® FPGA IP,软件可以忽略每次枚举时检测到的错误。如果枚举后,在端点中设置以下错误状态位,则软件可以忽略它们:
- 检测到可纠正错误(设备状态寄存器)
- 不受支持的请求检测(设备状态寄存器)
- 建议非严重错误状态(可纠正错误状态寄存器)
- 不受支持的请求错误状态(无法纠正的错误状态寄存器)
- 前提是建议非严重错误掩码位(可纠正错误口罩寄存器)设置为"0"
为了简单起用,可以按照以下顺序完成变通办法。
- 枚举完成后,清除以下所有 PCIe 端点功能的错误寄存器(所有位,无与伦比)
- 设备状态寄存器
- 可纠正错误状态寄存器
- 无法纠正的错误状态寄存器
- 对于与上述 PCIe 端点功能相关的 PCIe 根端口,请清除下面的错误寄存器(所有位数)。
- 次级状态寄存器
- 根错误状态寄存器
- 对于每个 PCI 枚举过程,重复步骤 1 和步骤 2。
如果针对正在执行的错误的运行时分组,则可以检查比特"检测到可纠正错误"、"不受支持的请求检测"、"建议非严重错误状态"和"不受支持的请求错误状态",以使此问题与其他可靠性错误区分开来。如果仅设置这些 4 位,我们可以假设端点上的错误与 PCI Express* 的 P-Tile/H-Tile Avalon®流传输英特尔® FPGA IP或 P-Tile/H-Tile Avalon®内存映射英特尔® FPGA IP有关 PCI Express* 的问题,也应继续清除步骤 1 和步骤 2 中列出的错误状态位。
对于 P-Tile,用户逻辑可以使用配置拦截接口 (CII) 在根端口发布配置读取时,正确宣传 ARI 的下一个功能编号。