virtio前端驱动程序如何与qemu共享vring(或virtqueue)?

时间:2013-12-11 01:25:48

标签: io virtualization qemu kvm

我正在研究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的记忆听众会收到并处理这个问题。     但我在源代码中找不到它。

1 个答案:

答案 0 :(得分:5)

前端驱动程序通过写入I / O端口启动QEMU(在PCI virtio设备的I / O BAR中;您可以使用lspci找到该地址)。

要在guest虚拟机和virtio设备之间共享内存,QEMU会使用address_space_map和address_space_unmap(或cpu_physical_memory_map和cpu_physical_memory_unmap,而不是取决于QEMU版本)执行“DMA”。