use*_*142 4 io virtualization kvm qemu
我正在研究virtio如何与qemu和kvm一起工作.我有两个问题.
到目前为止,我理解virtio frond-end驱动程序(在客人中)在vring(virtqueue)和kick qemu中编写IO请求.然后通知qemu,在vring中转换请求并调用系统调用,如打开,写入,读取,关闭等.
Q1.如何在virtio前端驱动程序和qemu之间共享vring?我从http://www.slideshare.net/zenixls2/052-virtio-introduction-17191942获得了一些内存映射的信息.但是,我在源代码中找不到它.请告诉我源代码的位置.
Q2.怎么踢qemu?我无法理解前端车手如何踢qemu?我认为qemu的记忆听众会收到并处理这个问题.但我无法在源代码中找到它.
前端驱动程序通过写入I/O端口(在PCI virtio设备的I/O BAR中;您可以使用lspci找到地址)来启动QEMU.
为了在guest虚拟机和virtio设备之间共享内存,QEMU使用address_space_map和address_space_unmap(或cpu_physical_memory_map和cpu_physical_memory_unmap,而不是取决于QEMU版本)进行"DMA".