目录
1. VFIO 实例化
实例化入口函数为:vfio_realize
vfio_get_group 打开/dev/vfio/$groupid设备并连接到container,创建container并将group添加到container之中
vfio_get_device 得到直通设备的fd
vfio_populate_device 将直通设备的内存区域信息取出来,vfio_region_setup 用直通设备的BAR空间建立VFIO虚拟设备的BAR空间,VFIO_PCI_CONFIG_REGION_INDEX 是PCI配置空间。
vfio_populate_device 获取设备内存恐案件资源后,会进行设备配置空间的处理
pread 复制一份PCI配置空间到vdev->pdev.config,emulated_config_bits有效值,如果设置了位,从vdev->pdev.config读取,没有设置的位,从设备读取
vfio_add_emulated_word 写入配置空间pdev->config和控制数据vdev->emulated_config_bits
vfio_pci_size_rom 处理设备的ROM,为ROM创建一个MemroyRegion并注册为虚拟设备的ROM
vfio_msix_early_setup 处理MSIx中断
注册BAR
根据直通设备的PCI能力为虚拟机设备添加功能
vfio_intx_enable,vfio_register_xxx_notifier 完成中断初始化