【问题标题】:Confusion about virtio-net-pci and virtio-net in QEMUQEMU中关于virtio-net-pci和virtio-net的混淆
【发布时间】:2021-01-03 14:13:01
【问题描述】:

我对 QEMU 源代码中存在的两个模拟设备 hw/net/virtio-net.c 和 hw/virtio/virtio-net-pci.c 感到有些困惑。 看起来 virio-net-pci.c 是基于 virtio 规范的 NIC 仿真,但我没有得到 hw/net/virtio-net.c 的用途?

除此之外,我看到了hw/net/vhost_net.c 但不明白这是在什么场景下使用的?

【问题讨论】:

标签: linux-device-driver virtualization qemu arm64


【解决方案1】:

从概念上讲,QEMU 实现中的 virtio 设备分为两部分:“传输”和“后端”。 “后端”是执行实际工作的部分(网络、块设备、随机数生成器等); “传输”是来宾接口的部分(PCI,MMIO,s390 CCW ...)。这使我们能够以多种不同的方式提供 virtio 设备,而无需重复代码。

hw/net/virtio-net.c 实现了“网络”后端。 hw/virtio/virtio-pci.c 实现 PCI 传输。 hw/virtio/virtio-net-pci.c 实现了一个 PCI 设备,它为 virtio 网络后端设备提供 PCI 传输(并且是一个相当小的文件,因为它只是将公共传输和公共后端代码粘合在一起)。

hw/net/vhost_net.c 是 the RedHat blog post that KagurazakaKotori gave you a link to 中描述的 vhost-net 支持的实现。您无需使用 vhost-net 即可将 virtio 网络设备传递给来宾——您可以使用任何 QEMU 网络后端。

【讨论】:

  • 感谢您的回答,它有帮助。可以说,当使用普通的virtio-net(没有vhost-net)时,前端(由guest Kernel驱动程序提供)和后端都是由QEMU实现的,并且没有主机的角色?同样在 vhost-net 的情况下,hw/net/virtio-net.c 完全使用,因为后端现在由主机内核驱动程序(vhost-net)提供,前端由 hw/ 实现net/vhost_net.c 和 hw/virtio/virtio-net-pci.c ??
猜你喜欢
  • 2013-10-18
  • 2020-08-17
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多