仅对英特尔可见 — GUID: qhj1612983646553
Ixiasoft
仅对英特尔可见 — GUID: qhj1612983646553
Ixiasoft
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访问该信息。
当应用程序需要生成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顺序规则。
示例:
MSI-X向量 | MSI-X Upper Address(高地址) | MSI-X Lower Address(低地址) | MSI-X数据 |
---|---|---|---|
0 | 0x00000001 | 0xAAAA0000 | 0x00000001 |
1 | 0x00000001 | 0xBBBB0000 | 0x00000002 |
2 | 0x00000001 | 0xCCCC0000 | 0x00000003 |
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位。