PCIe 系列SR-IOV导航:
【PCIe 5.0 - 100】SR-IOV【1】
【PCIe 5.0 - 101】SR-IOV【2】
【PCIe 5.0 - 102】SR-IOV【3】
【PCIe 5.0 - 103】SR-IOV 【4】
文章目录
- 9.3.4 PF/VF Configuration Space Header
- 9.3.4.1 PF/VF Type 0 Configuration Space Header
- 9.3.4.1.1 Vendor ID Register Changes (Offset 00h)
- 9.3.4.1.2 Device ID Register Changes (Offset 02h)
- 9.3.4.1.3 Command Register Changes (Offset 04h)
- 9.3.4.1.4 Status Register Changes (Offset 06h)
- 9.3.4.1.5 Revision ID Register Changes (Offset 08h)
- 9.3.4.1.6 Class Code Register Changes (Offset 09h)
- 9.3.4.1.7 Cache Line Size Register Changes (Offset 0Ch)
- 9.3.4.1.8 Latency Timer Register Changes (Offset 0Dh)
- 9.3.4.1.9 Header Type Register Changes (Offset 0Eh)
- 9.3.4.1.10 BIST Register Changes (Offset 0Fh)
- 9.3.4.1.11 Base Address Registers Register Changes (Offset 10h, 14h, … 24h)
- 9.3.4.1.12 Cardbus CIS Pointer Register Changes (Offset 28h)
- 9.3.4.1.13 Subsystem Vendor ID Register Changes (Offset 2Ch)
- 9.3.4.1.14 Subsystem ID Register Changes (Offset 2Eh)
- 9.3.4.1.15 Expansion ROM Base Address Register Register Changes (Offset 30h)
- 9.3.4.1.16 Capabilities Pointer Register Changes (Offset 34h)
- 9.3.4.1.17 Interrupt Line Register Changes (Offset 3Ch)
- 9.3.4.1.18 Interrupt Pin Register Changes (Offset 3Dh)
- 9.3.4.1.19 Min_Gnt Register/Max_Lat Register Changes (Offset 3Eh/3Fh)
- 9.3.5 PCI Express Capability Changes
- 9.3.5.1 PCI Express Capabilities Register Changes (Offset 00h)
- 9.3.5.2 PCI Express Capabilities Register Changes (Offset 02h)
- 9.3.5.3 Device Capabilities Register Changes (Offset 04h)
- 9.3.5.4 Device Control Register Changes (Offset 08h)
- 9.3.5.5 Device Status Register Changes (Offset 0Ah)
- 9.3.5.6 Link Capabilities Register Changes (Offset 0Ch)
- 9.3.5.7 Link Control Register Changes (Offset 10h)
- 9.3.5.8 Link Status Register Changes (Offset 12h)
- 9.3.5.9 Device Capabilities 2 Register Changes (Offset 24h)
- 9.3.5.10 Device Control 2 Register Changes (Offset 28h)
- 9.3.5.11 Device Status 2 Register Changes (Offset 2Ah)
- 9.3.5.12 Link Capabilities 2 Register Changes (Offset 2Ch)
- 9.3.5.13 Link Control 2 Register Changes (Offset 30h)
- 9.3.5.14 Link Status 2 Register Changes (Offset 32h)
- 9.3.6 PCI Standard Capabilities
9.3.4 PF/VF Configuration Space Header
本节定义了对 PF 和 VF 配置空间字段的要求。
本章中列出的寄存器定义建立了现有 PCI-SIG 规范和支持PCIe SR-IOV设备的PF/VF之间的映射。
9.3.4.1 PF/VF Type 0 Configuration Space Header
图 9-20详细说明了 PCI Express Type 0 Configuration Space Header的寄存器字段分配。
Error Reporting字段在第 9.4 节中有更详细的描述
9.3.4.1.1 Vendor ID Register Changes (Offset 00h)
此只读寄存器标识设备的制造商。
所有VF中的该字段在读取时都返回FFFFh。 VI软件应从关联的PF返回Vendor ID值作为VF的Vendor ID值。
9.3.4.1.2 Device ID Register Changes (Offset 02h)
此只读寄存器标识特定设备。
所有VF中的该字段在读取时都返回 FFFFh。VI软件应从关联的PF中返回VF Device ID(9.3.3.11 )值作为 VF 的Device ID。
为Device ID和Vendor ID返回FFFFh可以让某些旧版软件忽略VFs。
9.3.4.1.3 Command Register Changes (Offset 04h)
PF 和 VF 功能在PCIe 5.0 base 7.5.1.1.3 节中定义,除非表9-13中另有说明。 对于标记为RsvdP的VF 字段,PF设置也适用于VF。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
0 | I/O Space Enable - VF不适用,且必须硬连线到0b | Base | 0b |
1 | Memory Space Enable - VF不适用,且必须硬连线到0b。VF Memory Space由VF Control寄存器中的VF MSE位来控制 | Base | 0b |
2 | Bus Master Enable- 其Bus Master Enable Set的 VF事务不得被其Bus Master Enable Cleared的 VF事务阻止。 | Base | Base |
6 | Parity Error Response | Base | RsvdP |
8 | SERR# Enable | Base | RsvdP |
10 | Interrupt Disable- VF不适用 | Base | 0b |
9.3.4.1.4 Status Register Changes (Offset 06h)
PF 和 VF 功能在第 7.5.1.1.4 节中定义,除非表 9-14 中另有说明。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
3 | Interrupt Status - VF不适用 | Base | 0b |
9.3.4.1.5 Revision ID Register Changes (Offset 08h)
该寄存器指定设备特定的版本id。
VF 中报告的值可能与 PF 中报告的值不同。
9.3.4.1.6 Class Code Register Changes (Offset 09h)
Class Code寄存器是 RO,用于识别设备的通用功能,在某些情况下,用于识别特定的寄存器级编程接口。 PF 和关联的 VF 中的字段在读取时必须返回相同的值。
9.3.4.1.7 Cache Line Size Register Changes (Offset 0Ch)
该字段由 PCI Express 设备实现为用于传统兼容性目的的RW字段,但对任何 PCI Express 设备行为没有影响。 PF继续将此字段实现为 RW。 对于VF,此字段为 RO 零。
9.3.4.1.8 Latency Timer Register Changes (Offset 0Dh)
这个字段不适用于PCIe,寄存器是RO 0。
9.3.4.1.9 Header Type Register Changes (Offset 0Eh)
该字节标识预定义header的第二部分的布局(从配置空间中的10h 开始)以及设备是否包含多个Functions。 该寄存器中的第 7 位用于标识Multi-Function Device设备。 对于 SR-IOV 设备,该寄存器中的第 7 位仅在有多个Functions时Set。 VF 不影响bit 7 的值。bit 6 到 0 标识预定义header的第二部分的布局。 对于 VF,该寄存器必须为 RO 0。
9.3.4.1.10 BIST Register Changes (Offset 0Fh)
VF 不应支持 BIST,并且必须将此字段定义为 RO 零。
如果在设备的任何 PF 中打开 VF Enable,则软件不得在与该设备关联的任何Function中调用 BIST。
9.3.4.1.11 Base Address Registers Register Changes (Offset 10h, 14h, … 24h)
对VF而言,这些寄存器的值都是RO 0。
9.3.4.1.12 Cardbus CIS Pointer Register Changes (Offset 28h)
VF不使用这个寄存器并且应该是RO 0。
9.3.4.1.13 Subsystem Vendor ID Register Changes (Offset 2Ch)
此只读字段标识subsystem的制造商。 PF 和关联的 VF 中的字段在读取时必须返回相同的值。
9.3.4.1.14 Subsystem ID Register Changes (Offset 2Eh)
此只读字段标识特定subsystem。 Device 的 PF 和 VF 值可能不同。
9.3.4.1.15 Expansion ROM Base Address Register Register Changes (Offset 30h)
PF中可以实现Expansion ROM Base Address Register,Expansion ROM Base Address Register在VF中是RO 0。VI 可以通过仿真为VF提供对Expansion ROM Base Address Register的访问。
PF 不允许实现扩展 ROM 地址解码器共享
9.3.4.1.16 Capabilities Pointer Register Changes (Offset 34h)
这个同PCIe 5.0 base中的7.5.1.1.11Capabilities Pointer (Offset 34h)没有区别
9.3.4.1.17 Interrupt Line Register Changes (Offset 3Ch)
寄存器不适用于VF,必须是 RO 0。
9.3.4.1.18 Interrupt Pin Register Changes (Offset 3Dh)
寄存器不适用于VF,必须是 RO 0。
9.3.4.1.19 Min_Gnt Register/Max_Lat Register Changes (Offset 3Eh/3Fh)
这些寄存器不适用于 PCIe。 它们必须是 RO 0。
9.3.5 PCI Express Capability Changes
PCI Express Capability(7.5.3 节)用于识别PCI Express设备并指示对PCI Express功能的支持。
图 7-21详细说明了PCI Express Capability中寄存器字段的分配。 需要PF和VF来实现此功能,但须遵守下文所述的例外情况和附加要求。
9.3.5.1 PCI Express Capabilities Register Changes (Offset 00h)
PCI Express Capabilities Register在第 7.5.3.2 节中描述,其中描述的功能适用于 PF 和 VF。
9.3.5.2 PCI Express Capabilities Register Changes (Offset 02h)
PCI Express Capabilities寄存器标识 PCI Express 设备类型和相关功能。
PF 和 VF 功能在第 7.5.3.2 节中定义。
9.3.5.3 Device Capabilities Register Changes (Offset 04h)
Device Capabilities Register标识PCI Express设备特定的capabilities。 图 7-24 详细说明 Device Capabilities Register 中寄存器字段的分配; 表 9-15 提供了相应的bit定义。
除非在表 9-15 中注明,PF 和 VF 功能在第 7.5.3.3 节中定义。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
4:3 | Phantom Functions Supported - 设置 VF Enable 时,不允许此 PF 和关联的 VF 使用 Phantom Function 编号,并且该字段在读取时必须返回 00b。 | Base | 00b |
25:18 | Captured Slot Power Limit Value | Base | 没定义 |
27:26 | Captured Slot Power Limit Scale | Base | 没定义 |
28 | Function Level Reset Capability,PF和VF需要 | 1b | 1b |
9.3.5.4 Device Control Register Changes (Offset 08h)
Device Control Register控制PCI Express设备特定参数。图7-25详细说明Device Control寄存器中寄存器字段的分配;表9-16提供了相应的位定义。
PF和VF功能在7.5.3.4节中定义,除非在表9-16中注明。对于标记为RsvdP的VF字段,PF设置适用于VF。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
0 | Correctable Error Reporting Enable | Base | RsvdP |
1 | Non-Fatal Error Reporting Enable | Base | RsvdP |
2 | Fatal Error Reporting Enable | Base | RsvdP |
3 | Unsupported Request Reporting Enable | Base | RsvdP |
4 | Enable Relaxed Ordering | Base | RsvdP |
7:5 | Max_Payload_Size | Base | RsvdP |
8 | Extended Tag Field Enable | Base | RsvdP |
9 | Phantom Functions Enable | Base | RsvdP |
10 | Aux Power PM Enable | Base | RsvdP |
11 | Enable No Snoop | Base | RsvdP |
14:12 | Max_Read_Request_Size | Base | RsvdP |
15 | Initiate Function Level Reset - PFs和VFs需要。 注意:在 PF 中设置 Initiate Function Level Reset 会重置 VF Enable,这意味着在 FLR 完成后 VF 不再存在。 | Base | RsvdP |
9.3.5.5 Device Status Register Changes (Offset 0Ah)
Device Status寄存器提供有关 PCI Express 设备特定参数的信息。 图 7-26 详细说明 Device Status 寄存器中寄存器字段的分配; 表 9-17 提供了相应的位定义。
PF 和 VF 功能在第 7.5.3.5 节中定义,除非表 9-17 中另有说明。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
4 | AUX Power Detected | Base | 0b |
6 | Emergency Power Reduction Detected | Base | 0b |
9.3.5.6 Link Capabilities Register Changes (Offset 0Ch)
Link Capabilities寄存器标识 PCI Express Link 特定的capabilities。 PCIe 5.0 base中图 7-27 详细说明了Link Capabilities寄存器中寄存器字段的分配。
PF 和 VF 功能在7.5.3.6 节中定义。
9.3.5.7 Link Control Register Changes (Offset 10h)
Link Control Register控制 PCI Express 链路的特定参数。 图 7-28 详细说明了Link Control register中寄存器字段的分配。
PF 和 VF 功能在7.5.3.7 节中定义,除非表 9-18 中另有说明。 对于标记为 RsvdP 的 VF 字段,PF 设置适用于 VF。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
1:0 | Active State Power Management (ASPM) Control | Base | RsvdP |
3 | Read Completion Boundary (RCB) ,VF必须硬连线到0 | Base | RsvdP |
6 | Common Clock Configuration | Base | RsvdP |
7 | Extended Synch | Base | RsvdP |
8 | Enable Clock Power Management | Base | RsvdP |
9 | Hardware Autonomous Width Disable | Base | RsvdP |
9.3.5.8 Link Status Register Changes (Offset 12h)
Link Status Register提供有关 PCI Express 链路特定参数的信息。 图 7-29 详细说明了Link Status Register中寄存器字段的分配。
PF 功能在第 7.5.3.8 节中定义。 对于 VF,此寄存器中的所有字段都是 RsvdZ,PF 设置适用于 VF。
9.3.5.9 Device Capabilities 2 Register Changes (Offset 24h)
PF 和 VF 功能在7.5.3.15 节中定义,表 9-19 中注明的除外。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
3:0 | Completion Timeout Ranges Supported VF 值必须与 PF 值相同。 | Base | Base |
4 | Completion Timeout Disable Supported VF 值必须与 PF 值相同。 | Base | Base |
6 | AtomicOp Routing Supported 不适用于Endpoint。 | RsvdP | RsvdP |
7 | 32-bit AtomicOp Completer Supported VF 值必须与 PF 值相同。 | Base | Base |
8 | 64-bit AtomicOp Completer Supported VF 值必须与 PF 值相同。 | Base | Base |
9 | 128-bit CAS Completer Supported VF 值必须与 PF 值相同。 | Base | Base |
16 | 10-Bit Tag Completer Supported VF 值必须与 PF 值相同。 | Base | Base |
17 | 10-Bit Tag Requester Supported VF 值必须等于 SR-IOV Capabilities寄存器中 VF 10-Bit Tag Requester Supported位的值 | Base | Base |
25:24 | Emergency Power Reduction Supported VF 值必须与 PF 值相同。 | Base | Base |
26 | Emergency Power Reduction Initialization Required VF 值必须与 PF 值相同。 | Base | Base |
9.3.5.10 Device Control 2 Register Changes (Offset 28h)
PF 和 VF 功能在第 7.5.3.16 节中定义,表 9-20 中注明的除外。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
3:0 | Completion Timeout Value PF 值适用于所有关联的 VF。 | Base | RsvdP |
4 | Completion Timeout Disable PF 值适用于所有关联的 VF。 | Base | RsvdP |
6 | AtomicOp Requester Enable PF 值适用于所有关联的 VF。 | Base | RsvdP |
8 | IDO Request Enable PF 值适用于所有关联的 VF。 | Base | RsvdP |
9 | IDO Completion Enable PF 值适用于所有关联的 VF。 | Base | RsvdP |
11 | Emergency Power Reduction Request 该位仅存在于与Upstream Port关联的一个Function中。 该Function不能是 VF。 | Base | RsvdP |
12 | 10-Bit Tag Requester Enable SR-IOV Control寄存器中的VF 10-Bit Tag Requester Enable位中的值适用于所有关联的 VF。 | Base | RsvdP |
9.3.5.11 Device Status 2 Register Changes (Offset 2Ah)
PF 和 VF 功能在PCIe 5.0 Base 7.5.3.17 节中定义。
9.3.5.12 Link Capabilities 2 Register Changes (Offset 2Ch)
PF 和 VF 功能在PCIe 5.0 Base 7.5.3.18 节中定义。
9.3.5.13 Link Control 2 Register Changes (Offset 30h)
PF 和 VF 功能在PCIe 5.0 Base 7.5.3.19 节中定义。
9.3.5.14 Link Status 2 Register Changes (Offset 32h)
PF 和 VF 功能在第 7.5.3.20 节中定义,除非表9-21中另有说明。标记为RsvdZ的VF字段使用关联PF的值。
Bit Location | PF and VF Register Differences From Base | PF属性 | VF属性 |
---|---|---|---|
0 | Completion Timeout Value PF 值适用于所有关联的 VF。 | Base | RsvdP |
9.3.6 PCI Standard Capabilities
PCI Standard Capabilities的 SR-IOV 使用在表 9-22 中进行了描述。 标记为 n/a 的项目不适用于 PF 或 VF。
Capability ID | Description | PF属性 | VF属性 |
---|---|---|---|
00h | Null Capability | Base | Base |
01h | PCI Power Management Interface | Base | 可选 |
02h | AGP | n/a | n/a |
03h | VPD | Base | 可选 |
04h | Slot Identification | n/a | n/a |
05h | MSI | Base | 见9.5.1.1节 |
06h | CompactPCI Hot Swap | n/a | n/a |
07h | PCI-X | n/a | n/a |
08h | HyperTransport | n/a | n/a |
09h | Vendor-specific Base | Base | Base |
0Ah | Debug Port | Base | Base |
0Bh | CompactPCI Central Resource Control | n/a | n/a |
0Ch | PCI Hot Plug | Base | n/a |
0Dh | PCI Bridge Subsystem ID | n/a | n/a |
0Eh | AGP 8x ID | n/a | n/a |
0Fh | Secure Device ID | n/a | n/a |
10h | PCI Express | Base | 见9.3.5 |
11h | MSI-X | 见9.5.1.2和9.5.1.3 | 见9.5.1.2和9.5.1.3 |
12h | Serial ATA Data/Index Configuration | Base | n/a |
13h | Advanced Features | n/a | n/a |
14h | Enhanced Allocation | Base | 禁止实现 |
15h | Flattening Portal Bridge (FPB) | n/a | n/a |
9.3.6.1 VPD Capability
VPD 功能在 PCI 中是可选的。 它在 SR-IOV 中仍然是可选的。
实现VPD Capability 的 VF 和 PF 必须通过 VPD Capability 确保 VF 和/或 PF 之间不会出现“数据泄漏(data leakage)”。