PCI_EXP_DEVCTL_READRQ是需要模拟的,这里又分为两种情况,对于PCI_EXP_DEVCTL_BCR_FLR和PCI_EXP_DEVCTL_READRQ这种,软件进行了模拟,但是确没有满足虚机的需求,所以在vfio_exp_config_write中会执行对物理设备的操作(这里对物理设备进行了操作,但是却没有直接将config透传,是因为对物理设备操作前还需要进行检查)。
case VFIO_PCI_CONFIG_REGION_INDEX: return vfio_pci_config_rw(vdev, buf, count, ppos, iswrite); case VFIO_PCI_ROM_REGION_INDEX: if (iswrite) return -EINVAL; return vfio_pci_bar_rw(vdev, buf, count, ppos, false); case VFIO_PCI_BAR0_REGION_INDEX ... VFIO_PCI_BAR5_REGION_INDEX:...
这样的话该PCI桥及桥下所有设备都会使用PCIe switch的Source Identifier去定位Context Entry,找到的页表也是同一个,如果将这个PCI桥下的不同设备分给不同虚机,由于会使用同一份页表,这样会产生问题,针对这种情况,当前PCI桥及桥下的所有设备必须分配给同一个虚机,这就是VFIO中组的概念,下面会再讲到。
登录后复制vfio_realize:/* Get a copy of config space */ret= pread(vdev- >vbasedev.fd, vdev- >pdev.config,MIN(pci_config_size(&vdev- >pdev), vdev- >config_size), vdev- >config_offset);if(ret< (int)MIN(pci_config_size(&vdev- >pdev), vdev- >config_size)) {ret=ret<...
注册一个 PCI 设备 让用户态的 PMD 网卡驱动程序得以与 UIO 进行交互 加载IGB_UIO 模块 过了一会,lsmod|grep io也能看到igb-uio模块。 绑定网卡到IGB_UIO模块 选择usertools/dpdk-setup.sh 脚本 24 选项,再输入网卡地址,注意这里要先把网卡down掉否则绑定不上。
为了把独显通到虚拟机里, 显然需要把显卡从宿主上隔离. 把显卡绑到vfio-pci上. 新建文件/etc/modprobe.d/vfio.conf, 写入 options vfio-pci ids=10de:249d,10de:228b 将10de:249d,10de:228b替换为检查分组的输出中中括号内形如xxxx:xxxx内的ID, 用逗号隔开. ...
vfio-pci用于标准的pci设备,如果多个虚拟机想用这个pci设备就开启这个pci设备的sr-iov功能,这个pci设备就变成多个标准的pci设备,每个虚拟机用一个。sr-iov是硬件资源的一种切分方法,不但DMA queue这样的数据面切分,pci config space等控制面也切分,硬件实现过于复杂,GPU和NVME这些设备很难实现控制面的切分,但数据面...
vfio_pci 是的device 驱动的封装,为vfio interface 提供设备的访问能力,例如访问设备的配置空间,bar空间。在内核源码中代码路径为:drivers\vfio \pci\ vfio_pci.c 。pci_bus driver 是物理PCI 设备的驱动。VFIO的中断重映射相关的部分需要有kvm 相关的代码分析,本文没有分析。
(device, VFIO_DEVICE_GET_REGION_INFO, );/* Setup mappings... read/write offsets, mmaps* For PCI devices, config space is a region */}for (i = 0; i < device_info.num_irqs; i++) {struct vfio_irq_info irq = { .argsz = sizeof(irq) };irq.index = i;ioctl(device, VFIO_...
vfiopci和igb网卡相连 无线网卡cnvi和pcie (以防参考资料链接无效,将所有参考文章都附后了,所以非常长;实际操作其实占篇幅比较少) 本文分几个部分: 【硬件环境】 【环境搭建流程】 【问题及解决方案】 【附录 参考资料】 之前提过NFS,(Network File System,网络文件系统)实际上是一种Linux/UNIX文件共享协议,是...