Message ID | 20220303115911.20962-5-slp@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enable vhost-user to be used on BSD systems | expand |
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 >
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 =====================
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(+)