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

virtio前端驱动程序如何与qemu共享vring(或virtqueue)?,io,virtualization,qemu,kvm,Io,Virtualization,Qemu,Kvm,我正在研究virtio如何与qemu和kvm一起工作。 我有两个问题 到目前为止,我了解了virtio前端驱动程序(在来宾中)在vring(virtqueue)中编写IO请求和kick qemu。 然后通知qemu,在vring中转换请求并调用系统调用,如打开、写入、读取、关闭等 问题1。如何在virtio前端驱动程序和qemu之间共享vring?我得到了一些使用内存映射的信息。但是,我在源代码中找不到它。请让我知道它在源代码中的位置 问题2。如何踢qemu? 我无法理解前端车手是如何踢qemu

我正在研究virtio如何与qemu和kvm一起工作。 我有两个问题

到目前为止,我了解了virtio前端驱动程序(在来宾中)在vring(virtqueue)中编写IO请求和kick qemu。 然后通知qemu,在vring中转换请求并调用系统调用,如打开、写入、读取、关闭等

问题1。如何在virtio前端驱动程序和qemu之间共享vring?我得到了一些使用内存映射的信息。但是,我在源代码中找不到它。请让我知道它在源代码中的位置

问题2。如何踢qemu? 我无法理解前端车手是如何踢qemu的? 我认为qemu的记忆听众接受并处理了踢腿。
但是我在源代码中找不到它。

前端驱动程序通过写入i/O端口(在PCI虚拟设备的i/O栏中;您可以通过lspci找到地址)来启动QEMU

为了在来宾和virtio设备之间共享内存,QEMU使用地址空间映射和地址空间映射(或者cpu物理内存映射和cpu物理内存映射,具体取决于QEMU版本)进行“DMA”