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