qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Marc-André Lureau" <marcandre.lureau@redhat.com>
To: qemu-devel@nongnu.org
Cc: felipe@nutanix.com, victork@redhat.com, mst@redhat.com,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [Qemu-devel] [PATCH v2 0/6] Start a contrib/libvhost-user
Date: Tue, 18 Oct 2016 12:23:59 +0300	[thread overview]
Message-ID: <20161018092405.21829-1-marcandre.lureau@redhat.com> (raw)

Hi

vhost-user & virtio have tricky corners and evolve regularly. There
isn't a reference code that would help you get started either. And the
backends duplicate most of the effort.

Furthermore, due to usage of ancillary data, shared memory, eventfd,
atomics, it is not so simple to implement in other languages than C
either. Having a library doing the low-level parts could eventually
help to reach other languages (this guided some decisions, such as
being able to override message handling)

I found it would help me to experiment with new usages of
libvhost-user (with other devices than network for example) if qemu
would provide such "reference" library. vhost-user-bridge was the most
complete attempt at implementing vhost-user slave in qemu, but it
lacked some abstraction and efficient handling of the virt queues.

I propose to provide such library based on virtio.c implementation and
vhost-user-bridge socket handling. It is not meant to be complete, or
solve all use cases (best efficiency, or multi-threading support are
not a goal for this first implementation). My hope is that at some
point the library would be complete and stable enough that it could
become a standalone project, that could cover most use cases. For now
it makes more sense to propose it in qemu/contrib as an internal
library where API could evolve.

Comments welcome!

v2:
- add documentation
- updated to follow latest virtio queue qemu implementation
- rename add_watch() to set_watch()
- various fixes from Felipe Franciosi

rfc->v1:
- add vu_gpa_to_va()
- fix indirect descriptors handling
- fix notification
- more error handling
- disable debugging

Marc-André Lureau (6):
  tests/vhost-user-bridge: remove false comment
  tests/vhost-user-bridge: remove unnecessary dispatcher_remove
  tests/vhost-user-bridge: indicate peer disconnected
  tests/vhost-user-bridge: do not accept more than one connection
  contrib: add libvhost-user
  tests/vhost-user-bridge: use contrib/libvhost-user

 contrib/libvhost-user/libvhost-user.c | 1499 +++++++++++++++++++++++++++++++++
 tests/vhost-user-bridge.c             | 1183 +++++---------------------
 Makefile                              |    1 +
 Makefile.objs                         |    2 +-
 contrib/libvhost-user/Makefile.objs   |    1 +
 tests/Makefile.include                |    2 +-
 contrib/libvhost-user/libvhost-user.h |  435 ++++++++++
 7 files changed, 2167 insertions(+), 956 deletions(-)
 create mode 100644 contrib/libvhost-user/libvhost-user.c
 create mode 100644 contrib/libvhost-user/Makefile.objs
 create mode 100644 contrib/libvhost-user/libvhost-user.h

-- 
2.10.0

             reply	other threads:[~2016-10-18  9:24 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-18  9:23 Marc-André Lureau [this message]
2016-10-18  9:24 ` [Qemu-devel] [PATCH v2 1/6] tests/vhost-user-bridge: remove false comment Marc-André Lureau
2016-10-18  9:24 ` [Qemu-devel] [PATCH v2 2/6] tests/vhost-user-bridge: remove unnecessary dispatcher_remove Marc-André Lureau
2016-10-18  9:24 ` [Qemu-devel] [PATCH v2 3/6] tests/vhost-user-bridge: indicate peer disconnected Marc-André Lureau
2016-10-18  9:24 ` [Qemu-devel] [PATCH v2 4/6] tests/vhost-user-bridge: do not accept more than one connection Marc-André Lureau
2016-10-18  9:24 ` [Qemu-devel] [PATCH v2 5/6] contrib: add libvhost-user Marc-André Lureau
2016-10-18 14:13   ` Felipe Franciosi
2016-10-18 14:43   ` Felipe Franciosi
2016-10-18 15:25     ` Marc-André Lureau
2016-10-18 16:21       ` Felipe Franciosi
2016-10-27 22:11         ` Michael S. Tsirkin
2016-10-27 22:17           ` Felipe Franciosi
2016-10-18  9:24 ` [Qemu-devel] [PATCH v2 6/6] tests/vhost-user-bridge: use contrib/libvhost-user Marc-André Lureau
2016-10-18 13:29   ` Eric Blake
2016-11-15 19:20 ` [Qemu-devel] [PATCH v2 0/6] Start a contrib/libvhost-user Michael S. Tsirkin
  -- strict thread matches above, loose matches on Subject: below --
2016-10-18  9:23 Marc-André Lureau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161018092405.21829-1-marcandre.lureau@redhat.com \
    --to=marcandre.lureau@redhat.com \
    --cc=felipe@nutanix.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=victork@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).