【100】SR-IOV cap中Supported Page Sizes (RO)和System Page Size (RW)

SR-IOV的介绍见:【88】SR-IOV-优快云博客   

SR-IOV cap中的Supported Page Sizes (RO)和System Page Size (RW)字段

    SR-IOV cap中定义了Supported Page Sizes (RO)和System Page Size (RW)两个字段,offset 如下:

   Supported Page Sizes (RO)字段

    其中Supported Page Sizes (RO)定义了PF支持的page size。该reg的每1bit代表一种page size,PF必须支持的是4-KB, 8-KB, 64-KB, 256-KB, 1-MB, 4-MB,其他的page size是可选的。也就是说bit0/1/4/6/8/10(0x553)是必须要支持的。

System Page size(RW)字段

System Page size字段定义system用来map VF的memory address的page size。主要有以下规定:

(1)软件必须使用support page sizes字段中的一个page size来设置system page size。如果使用了support page size不支持的bit设置了system page size,则结果是未定义的。

(2)如果system page size字段是0,则结果是未定义的

(3)如果system page size的多个bit被置1,则结果是未定义的

(4)当system page size被设置后,VF对应的PF需要按照system page size边界对齐

(5)VF BARn也应该按照system page size边界对齐

(6)当写system page size字段是,VF enable必须是0,否则将会出现未知结果

(7)system page size默认值是1(4KB)

 LINUX如何使用Supported Page Sizes (RO)和System Page Size (RW)字段

    在sriov_init函数中先读取了Supported Page Sizes字段并且赋值给变量pgze,然后把运算后(运算方式如下)把pgsz写入System Page Size寄存器:

	pci_read_config_dword(dev, pos + PCI_SRIOV_SUP_PGSIZE, &pgsz);
	i = PAGE_SHIFT > 12 ? PAGE_SHIFT - 12 : 0;//系统页的位移
	pgsz &= ~((1 << i) - 1);//确保pgsz只保留大于或等于系统页大小的页大小设置
	if (!pgsz)
		return -EIO;

	pgsz &= ~(pgsz - 1);//找到Supported Page Size支持的最小的size
	pci_write_config_dword(dev, pos + PCI_SRIOV_SYS_PGSIZE, pgsz);

往 System Page Size reg写的pgsz需要同时满足下面两个要求:

(1)pgsz一定是大于或者等于当前系统的page size的

(2)pgsz是Supported Page Size支持的最小的size

比如:

(1)系统page size 是4K,那么PAGE_SHIFT是12,如果Supported Page Size 是0x553(4K/8K/64K/256K/1M/4M),那么就往System Page Size reg写0x1,对应bit0为1,芯片要求使用4K对齐。

(2)系统page size 是128K,那么PAGE_SHIFT是17,如果Supported Page Size 是0x553(支持4K/8K/64K/256K/1M/4M),那么就往System Page Size reg写0x40,对应bit6为1,芯片要求使用256K对齐。

(3)系统page size 是128K,PAGE_SHIFT是17,如果Supported Page Size 是0x573(支持4K/8K/64K/128K/256K/1M/4M),那么就往System Page Size reg写0x20,对应bit5为1,芯片要求使用128K对齐

NV A100的Supported Page Sizes (RO)和System Page Size (RW)字段

https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/a100/pdf/PB-10577-001_v02.pdf

NV A100 每个VF BAR0的size是 256KB。支持20VF,Supported Page Size: 00000573,比spec规定的必须支持的page size多了128K对齐的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linjiasen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值