PCI规范学习笔记(2)

那天和一个朋友讨论了一下MSI/MSIX方面的问题,下面是对讨论内容的整理:

1.MSI-X Table和PBA结构太大,MSIX Capability又只能放到配置空间64-255这个区域,所以只能把Table和PBA放到设备内存空间了。MSIX Capability存着BAR的编号和偏移量来从配置空间索引Table和PBA。

2.
MSI capability里“消息地址”字段在PCI规范里没有格式定义,这是因为PCI规范需要支持多种平台。在x86上和在SPARC上,消息地址的定义是不同的。

3. x86上MSI”消息地址“(64或32位)在Intel 系统编程卷里定义,
Solaris是用本地APIC的基地址0xfee00000按位或8位目标处理器ID再或1位RH(取值0),或1位DM(取值0),得到的地址就是设备发中断用的内存地址。

4. x86上MSI“消息数据”(16位)的定义比较简单, Solaris使用边缘触发方式,投递模式是固定,最后低8位是中断向量地址。 关于“消息地址”和“消息数据”,Solaris请参考apic_pci_msi_enable_vector

5. 需要注意的是,MSI“消息数据"的低3位是要根据MSI控制寄存器的Multiple Message Enable位来由设备动态修改的,所以一个”消息数据“寄存器可以被最多32个向量共用。

6. MSI capability里支持最多32个向量,但由于这32个向量共享一个“消息地址”。而在x86上,这个"消息地址"用来决定发送到哪一个CPU的本地APIC,所以32个向量只能绑定在同一个CPU了。

7. MSIX capability指向了Table和PBA表在哪一个BAR对应的内存空间里。Table里包含了“消息地址”和”消息数据“, x86下格式和MSI的完全一样。PBA指示了是否有待处理的中断消息。

8.
一 个设备理论上最多分配32个MSI中断, 向量数大于1时,需要分配连续相邻的向量,这是MSI capability里”消息数据“和”Multiple Message Enable“的定义决定的。Solaris可参考apic_alloc_msi_vectors的实现。

9.
一个设备理论上最多可以分配2K个MSIX中断, 而且每个中断向量可以是不连续的, 因为Table的大小是11位二进制表示的, 其中每个表项都有独立的”消息地址“和“消息数据”。Solaris可参考apic_alloc_msix_vectors。

10. 因为每个向量对应独立的“消息地址”和“消息数据”, MSIX可以让一个设备多至2K个中断独立的绑定在不同的CPU上,CPU足够多的时候它们互相不影响,所以Intel的SRIOV 1/10G卡的VF都只支持MSIX而不是MSI。

OBJECTIVE OF THE SPECIFICATION.................................................................................... 21 DOCUMENT ORGANIZATION ................................................................................................ 21 DOCUMENTATION CONVENTIONS...................................................................................... 22 TERMS AND ACRONYMS........................................................................................................ 23 REFERENCE DOCUMENTS...................................................................................................... 29 1. INTRODUCTION ................................................................................................................ 31 1.1. A THIRD GENERATION I/O INTERCONNECT ................................................................... 31 1.2. PCI EXPRESS LINK......................................................................................................... 33 1.3. PCI EXPRESS FABRIC TOPOLOGY .................................................................................. 35 1.3.1. Root Complex........................................................................................................ 35 1.3.2. Endpoints .............................................................................................................. 36 1.3.3. Switch.................................................................................................................... 39 1.3.4. Root Complex Event Collector.............................................................................. 40 1.3.5. PCI Express to PCI/PCI-X Bridge........................................................................ 40 1.4. PCI EXPRESS FABRIC TOPOLOGY CONFIGURATION....................................................... 40 1.5. PCI EXPRESS LAYERING OVERVIEW.............................................................................. 41 1.5.1. Transaction Layer................................................................................................. 42 1.5.2. Data Link Layer .................................................................................................... 42 1.5.3. Physical Layer ...................................................................................................... 43 1.5.4. Layer Functions and Services............................................................................... 43 2. TRANSACTION LAYER SPECIFICATION ..................................................................... 47 2.1. TRANSACTION LAYER OVERVIEW.................................................................................. 47 2.1.1. Address Spaces, Transaction Types, and Usage................................................... 48 2.1.2. Packet Format Overview ...................................................................................... 50 2.2. TRANSACTION LAYER PROTOCOL - PACKET DEFINITION............................................... 51 2.2.1. Common Packet Header Fields ............................................................................ 51 2.2.2. TLPs with Data Payloads - Rules ......................................................................... 54 2.2.3. TLP Digest Rules .................................................................................................. 56 2.2.4. Routing and Addressing Rules .............................................................................. 56 2.2.5. First/Last DW Byte Enables Rules........................................................................ 59 2.2.6. Transaction Descriptor......................................................................................... 61 2.2.7. Memory, I/O, and Configuration Request Rules................................................... 66 2.2.8. Message Request Rules......................................................................................... 69 2.2.9. Completion Rules.................................................................................................. 80 2.3. HANDLING OF RECEIVED TLPS...................................................................................... 82 2.3.1. Request Handling Rules........................................................................................ 85
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值