用于 PCI Express* 的 英特尔® FPGA R-tile Avalon® Streaming IP用户指南

ID 683501
日期 6/26/2023
Public
文档目录

4.3.3.3. MSI-X

R-Tile IP for PCIe提供Configuration Intercept Interface。用户软逻辑可以通过监控该接口来获得MSI-X Enable和MSI-X function mask相关信息。用户应用程序需要在BAR指向的存储空间中实现用于所有PF和VF的MSI-X表。作为Application Layer的一部分。

您可以从Configuration Intercept Interface部分获得有关MSI-X的更多详细信息,请参阅Registers(寄存器)章节中的MSI-X Register部分。

MSI-X是一个可选功能,它允许用户应用程序支持大量向量,并且这些向量中的每一个都具有独立报文数据和地址。

支持MSI-X时,您需要指定MSI-X table和PBA的大小和位置(BAR和偏移)。MSI-X最多可以支持2048/每函数(function)而MSI最多只能支持32个向量/每函数(function)。

使能MSI-X并且函数未被屏蔽时,允许函数发送MSI-X报文。应用程序使用Configuration Intercept Interface访问该信息。

注: 仅Ports 0和1支持MSI-X

当应用程序需要生成MSI-X时,就会使用MSI-X Table (地址和数据)的内容并通过 Avalon® -ST接口生成Memory Write。

在参数编辑器中打开PCI Express/PCI Capabilities选项卡下MSI-X选项卡中的Enable MSI-X选项使能MSI-X中断。如果开启了Enable MSI-X选项,您应该在BAR指向的内存空间处实现MSI-X table结构,作为Application Layer的一部分。

MSI-X Capability Structure包含关于MSI-X Table和PBA Structure的信息。例如,它包含指向MSI-X Table和PBA Structure的指针,表示function的BAR中地址的偏移。MSI-X Capability Structure内的Message Control寄存器还包含MSI-X Enable位,Function Mask位和MSI-X Table的大小。

MSI-X中断是标准Memory Writes,因此适用Memory Write顺序规则。

示例:

表 65.  MSI-X配置
MSI-X向量 MSI-X Upper Address(高地址) MSI-X Lower Address(低地址) MSI-X数据
0 0x00000001 0xAAAA0000 0x00000001
1 0x00000001 0xBBBB0000 0x00000002
2 0x00000001 0xCCCC0000 0x00000003
表 66.  PBA表
PBA表 PBA Entries
Offset 0 0x0

如果应用程序需要生成MSI-X中断(vector 1),它将会读取MSI-X Table信息,通过 Avalon® -ST接口生成MWR TLP,并且以与生成MSI类似的方式置位对应的PBA位(bit[1])。

生成的TLP会被发送到地址0x00000001_BBBB0000,数据会是0x00000002。发送MSI-X后,该应用程序可清零相关的PBA位。