From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Felipe Franciosi <felipe@nutanix.com>
Cc: "Walker, Benjamin" <benjamin.walker@intel.com>,
"John G Johnson" <john.g.johnson@oracle.com>,
"Jag Raman" <jag.raman@oracle.com>,
"Harris, James R" <james.r.harris@intel.com>,
"Swapnil Ingle" <swapnil.ingle@nutanix.com>,
"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>,
"Stefan Hajnoczi" <stefanha@gmail.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
"Raphael Norwitz" <raphael.norwitz@nutanix.com>,
"Kirti Wankhede" <kwankhede@nvidia.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Kanth Ghatraju" <Kanth.Ghatraju@oracle.com>,
"Thanos Makatos" <thanos.makatos@nutanix.com>,
"Zhang, Tina" <tina.zhang@intel.com>,
"Liu, Changpeng" <changpeng.liu@intel.com>,
"dgilbert@redhat.com" <dgilbert@redhat.com>
Subject: Re: RFC: use VFIO over a UNIX domain socket to implement device offloading
Date: Fri, 1 May 2020 16:28:25 +0100 [thread overview]
Message-ID: <20200501152825.GA3356@redhat.com> (raw)
In-Reply-To: <F64E2C4A-ED0D-43AE-8A34-C6693DDFF93A@nutanix.com>
On Fri, May 01, 2020 at 03:01:01PM +0000, Felipe Franciosi wrote:
> Hi,
>
> > On Apr 30, 2020, at 4:20 PM, Thanos Makatos <thanos.makatos@nutanix.com> wrote:
> >
> >>>> More importantly, considering:
> >>>> a) Marc-André's comments about data alignment etc., and
> >>>> b) the possibility to run the server on another guest or host,
> >>>> we won't be able to use native VFIO types. If we do want to support that
> >>>> then
> >>>> we'll have to redefine all data formats, similar to
> >>>> https://urldefense.proofpoint.com/v2/url?u=https-
> >>>> 3A__github.com_qemu_qemu_blob_master_docs_interop_vhost-
> >>>>
> >> 2Duser.rst&d=DwIFAw&c=s883GpUCOChKOHiocYtGcg&r=XTpYsh5Ps2zJvtw6
> >>>>
> >> ogtti46atk736SI4vgsJiUKIyDE&m=lJC7YeMMsAaVsr99tmTYncQdjEfOXiJQkRkJ
> >>>> W7NMgRg&s=1d_kB7VWQ-
> >> 8d4t6Ikga5KSVwws4vwiVMvTyWVaS6PRU&e= .
> >>>>
> >>>> So the protocol will be more like an enhanced version of the Vhost-user
> >>>> protocol
> >>>> than VFIO. I'm fine with either direction (VFIO vs. enhanced Vhost-user),
> >>>> so we need to decide before proceeding as the request format is
> >>>> substantially
> >>>> different.
> >>>
> >>> Regarding the ability to use the protocol on non-AF_UNIX sockets, we can
> >>> support this future use case without unnecessarily complicating the
> >> protocol by
> >>> defining the C structs and stating that data alignment and endianness for
> >> the
> >>> non AF_UNIX case must be the one used by GCC on a x86_64 bit machine,
> >> or can
> >>> be overridden as required.
> >>
> >> Defining it to be x86_64 semantics is effectively saying "we're not going
> >> to do anything and it is up to other arch maintainers to fix the inevitable
> >> portability problems that arise".
> >
> > Pretty much.
> >
> >> Since this is a new protocol should we take the opportunity to model it
> >> explicitly in some common standard RPC protocol language. This would have
> >> the benefit of allowing implementors to use off the shelf APIs for their
> >> wire protocol marshalling, and eliminate questions about endianness and
> >> alignment across architectures.
> >
> > The problem is that we haven't defined the scope very well. My initial impression
> > was that we should use the existing VFIO structs and constants, however that's
> > impossible if we're to support non AF_UNIX. We need consensus on this, we're
> > open to ideas how to do this.
>
> Thanos has a point.
>
> From https://wiki.qemu.org/Features/MultiProcessQEMU, which I believe
> was written by Stefan, I read:
>
> > Inventing a new device emulation protocol from scratch has many
> > disadvantages. VFIO could be used as the protocol to avoid reinventing
> > the wheel ...
>
> At the same time, this appears to be incompatible with the (new?)
> requirement of supporting device emulation which may run in non-VFIO
> compliant OSs or even across OSs (ie. via TCP or similar).
To be clear, I don't have any opinion on whether we need to support
cross-OS/TCP or not.
I'm merely saying that if we do decide to support cross-OS/TCP, then
I think we need a more explicitly modelled protocol, instead of relying
on serialization of C structs.
There could be benefits to an explicitly modelled protocol, even for
local only usage, if we want to more easily support non-C languages
doing serialization, but again I don't have a strong opinion on whether
that's neccessary to worry about or not.
So I guess largely the question boils down to setting the scope of
what we want to be able to achieve in terms of RPC endpoints.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2020-05-01 15:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-26 9:47 RFC: use VFIO over a UNIX domain socket to implement device offloading Thanos Makatos
2020-03-27 10:37 ` Thanos Makatos
2020-04-01 9:17 ` Stefan Hajnoczi
2020-04-01 15:49 ` Thanos Makatos
2020-04-01 16:58 ` Marc-André Lureau
2020-04-02 10:19 ` Stefan Hajnoczi
2020-04-02 10:46 ` Daniel P. Berrangé
2020-04-03 12:03 ` Stefan Hajnoczi
2020-04-20 11:05 ` Thanos Makatos
2020-04-22 15:29 ` Stefan Hajnoczi
2020-04-27 10:58 ` Thanos Makatos
2020-04-30 11:23 ` Thanos Makatos
2020-04-30 11:40 ` Daniel P. Berrangé
2020-04-30 15:20 ` Thanos Makatos
2020-05-01 15:01 ` Felipe Franciosi
2020-05-01 15:28 ` Daniel P. Berrangé [this message]
2020-05-04 9:45 ` Stefan Hajnoczi
2020-05-04 17:49 ` John G Johnson
2020-05-11 14:37 ` Stefan Hajnoczi
2020-05-14 16:32 ` John G Johnson
2020-05-14 19:20 ` Alex Williamson
2020-05-21 0:45 ` John G Johnson
2020-06-02 15:06 ` Alex Williamson
2020-06-10 6:25 ` John G Johnson
2020-06-15 10:49 ` Stefan Hajnoczi
2020-06-18 21:38 ` John G Johnson
2020-06-23 12:27 ` Stefan Hajnoczi
2020-06-26 3:54 ` John G Johnson
2020-06-26 13:30 ` Stefan Hajnoczi
2020-07-02 6:23 ` John G Johnson
2020-07-15 10:15 ` Stefan Hajnoczi
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=20200501152825.GA3356@redhat.com \
--to=berrange@redhat.com \
--cc=Kanth.Ghatraju@oracle.com \
--cc=alex.williamson@redhat.com \
--cc=benjamin.walker@intel.com \
--cc=changpeng.liu@intel.com \
--cc=dgilbert@redhat.com \
--cc=elena.ufimtseva@oracle.com \
--cc=felipe@nutanix.com \
--cc=jag.raman@oracle.com \
--cc=james.r.harris@intel.com \
--cc=john.g.johnson@oracle.com \
--cc=konrad.wilk@oracle.com \
--cc=kwankhede@nvidia.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=raphael.norwitz@nutanix.com \
--cc=stefanha@gmail.com \
--cc=stefanha@redhat.com \
--cc=swapnil.ingle@nutanix.com \
--cc=thanos.makatos@nutanix.com \
--cc=tina.zhang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.