1. 配置VF BAR的机制
VF不支持I/O space。
System Page Szie字段由PF所使用,表示用什么页面大小映射VF的PCIe地址,每个VF BAR定义的内存空间孔径要和该字段对齐。因此,改变系统页大小可能会影响VF BAR内存空间孔径尺寸。
本文定义的SR-IOV扩展功能是PCIe总线的一项扩展功能,必须在支持SR-IOV的每个物理功能单元(PF)中实现。该功能用于描述和控制物理功能单元的SR-IOV能力。对于多功能设备,每个支持SR-IOV的物理功能单元都应提供本节定义的功能结构。该功能结构可存在于任何采用类型0配置空间头的函数中,但不得出现在采用类型1配置空间头的函数中。
VF BAR0, VF BAR1, ... VF BAR5(24h...38h)
定义基地址寄存器BAR,读取方式是将所有位写入1并按照7.5.1.2.1节所述的方式读回BAR的内容。
VF的BAR[n]空间是通过PF的SR_IOV Capability中的每个VF_BAR[n]来分配的,和VF Configuration Space的BAR无关。
上述的VF_BAR[n]行为上是和常规的BAR是一样的,但是PF的VF_BAR的地址空间分配之后,代表的含义与PF自己的BAR不同。VF_BAR对应的是PF关联的每个VF的BAR空间。VF1的BAR空间完全与PF的VF_BAR地址空间相同,也就是PF的VF_BAR[0-5]空间刚好就是对应第一个VF的BAR[0-5]。后续的VFn空间则一次在VF1的BAR[n]后一次排列,且大小相同。如下图所示。