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 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 | 21 ++ hw/notifier.c | 50 ++++ hw/notifier.h | 16 ++ hw/s390-virtio-bus.c | 7 +- hw/syborg_virtio.c | 2 + hw/vhost.c | 631 ++++++++++++++++++++++++++++++++++++++++++++++++++ hw/vhost.h | 44 ++++ hw/vhost_net.c | 177 ++++++++++++++ hw/vhost_net.h | 20 ++ hw/virtio-net.c | 71 ++++++- hw/virtio-pci.c | 71 ++++++- hw/virtio.c | 55 +++++- hw/virtio.h | 15 +- kvm-all.c | 22 ++ kvm.h | 16 ++ net.c | 8 + net/tap.c | 47 ++++ net/tap.h | 5 + qemu-common.h | 2 + qemu-options.hx | 4 +- 21 files changed, 1279 insertions(+), 8 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