QEMU模拟出VIRTIO SCSI设备后,在虚拟机中呈现SCSI设备和PCIE设备。而在虚拟机中,PCIE设备与VIRTIO PCI驱动匹配触发virtio_pci_probe()注册生成virtio设备,而virtio设备与虚拟机中的virtio驱动匹配触发对应probe函数最终注册对应的驱动。
这里VIRTIO-BLK/VIRTIO-SCSI/VIRTIO-NET过程都类似,只是virtio驱动根据不同virtio设备作匹配。
VIRTIO PCI驱动与VIRTIO-BLK代码分析中一样(见“VIRTIO-BLK代码分析(2)VIRTIO驱动分析”中PCI驱动部分),这里不作重复分析。
这里分析 VIRTIO SCSI驱动,该驱动为标准的SCSI驱动,它最终会注册SCSI控制器,并扫描连接的SCSI设备。详细见“SCSI代码分析(5)SCSI驱动编程模式”。