用QEMU模拟PCIe设备的时候,一般最多可以在系统中配置31个PCIe设备。比如,我们有这样
的QEMU启动参数配置:
1 | qemu-system-aarch64 \ |
上面的配置中,我们使用了host上的两个82599网卡的vf: 0002:81:10.0, 0002:81:20.0,
把它们直通到了guest上,可以看到这两个vf在guest上会直接连到pci bus 0上。按照同样
的方法,我们可以给一个虚拟机继续增加网口。但是这样的方式增加最多只能到31个vf[1]
这是因为PCIe中规定一条总线下最多只能接32个设备。
为了在一个虚拟机上接入更多的设备,我们可以接入一个PCIe switch,在switch的下游
端口上再接需要的PCIe设备。比如,我有可以如下启动一个QEMU虚拟机:
1 | qemu-system-aarch64 \ |
上面的命令行参数可以搭建一个如下图所示的PCIe switch
1 | pcie.0 bus |
[1] Fix me: 为什么是31个不是32个?
[2] qemu/docs/pcie.txt