Add a section explaining how vhost-user is supported on platforms
other than Linux.
Signed-off-by: Sergio Lopez <slp@redhat.com>
---
docs/interop/vhost-user.rst | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst
index edc3ad84a3..590a626b92 100644
--- a/docs/interop/vhost-user.rst
+++ b/docs/interop/vhost-user.rst
@@ -38,6 +38,24 @@ conventions <backend_conventions>`.
*Master* and *slave* can be either a client (i.e. connecting) or
server (listening) in the socket communication.
+Support for platforms other than Linux
+--------------------------------------
+
+While vhost-user was initially developed targeting Linux, nowadays is
+supported on any platform that provides the following features:
+
+- The ability to share a mapping injected into the guest between
+ multiple processes, so both QEMU and the vhost-user daemon servicing
+ the device can access simultaneously the memory regions containing
+ the virtqueues and the data associated with each request.
+
+- AF_UNIX sockets with SCM_RIGHTS, so QEMU can communicate with the
+ vhost-user daemon and send it file descriptors when needed.
+
+- Either eventfd or pipe/pipe2. On platforms where eventfd is not
+ available, QEMU will automatically fallback to pipe2 or, as a last
+ resort, pipe.
+
Message Specification
=====================
--
2.35.1
On Thu, Mar 03, 2022 at 12:59:11PM +0100, Sergio Lopez wrote: > Add a section explaining how vhost-user is supported on platforms > other than Linux. > > Signed-off-by: Sergio Lopez <slp@redhat.com> > --- > docs/interop/vhost-user.rst | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst > index edc3ad84a3..590a626b92 100644 > --- a/docs/interop/vhost-user.rst > +++ b/docs/interop/vhost-user.rst > @@ -38,6 +38,24 @@ conventions <backend_conventions>`. > *Master* and *slave* can be either a client (i.e. connecting) or > server (listening) in the socket communication. > > +Support for platforms other than Linux > +-------------------------------------- > + > +While vhost-user was initially developed targeting Linux, nowadays is s/is/it is/ > +supported on any platform that provides the following features: > + > +- The ability to share a mapping injected into the guest between > + multiple processes, so both QEMU and the vhost-user daemon servicing > + the device can access simultaneously the memory regions containing > + the virtqueues and the data associated with each request. Please generalize this statement since there are other vhost-user protocol features aside from guest RAM access that involve shared memory: 1. VHOST_USER_SET_LOG_BASE 2. VHOST_USER_SET_INFLIGHT_FD The exact requirement is: The vhost-user protocol relies on shared memory represented by a file descriptor so it can be passed over a UNIX domain socket and then mapped by the other process. > + > +- AF_UNIX sockets with SCM_RIGHTS, so QEMU can communicate with the > + vhost-user daemon and send it file descriptors when needed. > + > +- Either eventfd or pipe/pipe2. On platforms where eventfd is not > + available, QEMU will automatically fallback to pipe2 or, as a last The noun is "fallback", the verb form is "fall back": s/fallback/fall back/ It's worth mentioning that events are sent over pipe fds by writing an 8-byte value. The 8-byte value has no meaning and should not be interpreted.
On Thu, Mar 03, 2022 at 12:59:11PM +0100, Sergio Lopez wrote: > Add a section explaining how vhost-user is supported on platforms > other than Linux. > > Signed-off-by: Sergio Lopez <slp@redhat.com> > --- > docs/interop/vhost-user.rst | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst > index edc3ad84a3..590a626b92 100644 > --- a/docs/interop/vhost-user.rst > +++ b/docs/interop/vhost-user.rst > @@ -38,6 +38,24 @@ conventions <backend_conventions>`. > *Master* and *slave* can be either a client (i.e. connecting) or > server (listening) in the socket communication. > > +Support for platforms other than Linux It's not just Linux - any platform without eventfd. So I think we should have a section explaining that whereever spec says eventfd it can be a pipe if system does not support creating eventfd. > +-------------------------------------- > + > +While vhost-user was initially developed targeting Linux, nowadays is > +supported on any platform that provides the following features: > + > +- The ability to share a mapping injected into the guest between > + multiple processes, so both QEMU and the vhost-user daemon servicing > + the device can access simultaneously the memory regions containing > + the virtqueues and the data associated with each request. > + > +- AF_UNIX sockets with SCM_RIGHTS, so QEMU can communicate with the > + vhost-user daemon and send it file descriptors when needed. > + > +- Either eventfd or pipe/pipe2. On platforms where eventfd is not > + available, QEMU will automatically fallback to pipe2 or, as a last > + resort, pipe. > + > Message Specification > ===================== > > -- > 2.35.1
On Fri, Mar 04, 2022 at 05:35:01AM -0500, Michael S. Tsirkin wrote: > On Thu, Mar 03, 2022 at 12:59:11PM +0100, Sergio Lopez wrote: > > Add a section explaining how vhost-user is supported on platforms > > other than Linux. > > > > Signed-off-by: Sergio Lopez <slp@redhat.com> > > --- > > docs/interop/vhost-user.rst | 18 ++++++++++++++++++ > > 1 file changed, 18 insertions(+) > > > > diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst > > index edc3ad84a3..590a626b92 100644 > > --- a/docs/interop/vhost-user.rst > > +++ b/docs/interop/vhost-user.rst > > @@ -38,6 +38,24 @@ conventions <backend_conventions>`. > > *Master* and *slave* can be either a client (i.e. connecting) or > > server (listening) in the socket communication. > > > > +Support for platforms other than Linux > > > It's not just Linux - any platform without eventfd. > > So I think we should have a section explaining that whereever > spec says eventfd it can be a pipe if system does not > support creating eventfd. I'm confused. This is exactly what this subsection intends to do... Thanks, Sergio. > > +-------------------------------------- > > + > > +While vhost-user was initially developed targeting Linux, nowadays is > > +supported on any platform that provides the following features: > > + > > +- The ability to share a mapping injected into the guest between > > + multiple processes, so both QEMU and the vhost-user daemon servicing > > + the device can access simultaneously the memory regions containing > > + the virtqueues and the data associated with each request. > > + > > +- AF_UNIX sockets with SCM_RIGHTS, so QEMU can communicate with the > > + vhost-user daemon and send it file descriptors when needed. > > + > > +- Either eventfd or pipe/pipe2. On platforms where eventfd is not > > + available, QEMU will automatically fallback to pipe2 or, as a last > > + resort, pipe. > > + > > Message Specification > > ===================== > > > > -- > > 2.35.1 >
© 2016 - 2026 Red Hat, Inc.