Here's a patchset with vhost support for upstream qemu, rabed to latest bits.
Note that irqchip/MSI is no longer required for vhost, but you should not expect performance gains from vhost unless in-kernel irqchip is enabled (which is not in upstream qemu now), and unless guest enables MSI. A follow-up patchset against qemu-kvm will add irqchip support. Only virtio-pci is currently supported: I'm interested in supporting syborg/s390 as well, and tried to make APIs generic to make this possible. Also missing is packet socket backend. Cc'd, you did review of these internally, I would be thankful for review/ack upstream. Changes from v2: Addressed style comments Detect mapping changes and abort Unmap ring on cleanup Changes from v1: Addressed style comments Migration fixes. Gracefully fail with non-tap backends. Michael S. Tsirkin (12): tap: add interface to get device fd kvm: add API to set ioeventfd notifier: event notifier implementation virtio: add notifier support virtio: add APIs for queue fields virtio: add set_status callback virtio: move typedef to qemu-common virtio-pci: fill in notifier support vhost: vhost net support tap: add vhost/vhostfd options tap: add API to retrieve vhost net header virtio-net: vhost net support Makefile.target | 3 + configure | 36 +++ hw/notifier.c | 62 +++++ hw/notifier.h | 16 ++ hw/s390-virtio-bus.c | 4 +- hw/syborg_virtio.c | 2 +- hw/vhost.c | 706 ++++++++++++++++++++++++++++++++++++++++++++++++++ hw/vhost.h | 48 ++++ hw/vhost_net.c | 198 ++++++++++++++ hw/vhost_net.h | 19 ++ hw/virtio-net.c | 71 +++++- hw/virtio-pci.c | 67 +++++- hw/virtio.c | 81 ++++++- hw/virtio.h | 28 ++- kvm-all.c | 22 ++ kvm.h | 16 ++ net.c | 8 + net/tap.c | 43 +++ net/tap.h | 5 + qemu-common.h | 2 + qemu-options.hx | 4 +- 21 files changed, 1431 insertions(+), 10 deletions(-) create mode 100644 hw/notifier.c create mode 100644 hw/notifier.h create mode 100644 hw/vhost.c create mode 100644 hw/vhost.h create mode 100644 hw/vhost_net.c create mode 100644 hw/vhost_net.h