首页 文章

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

提问于
浏览
4

我正在研究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 回答

  • 5

    前端驱动程序通过写入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” .

相关问题