From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Christopher Clark <christopher.w.clark@gmail.com>
Cc: Wei Chen <Wei.Chen@arm.com>,
Oleksandr Tyshchenko <olekstysh@gmail.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Alex Benn??e <alex.bennee@linaro.org>,
Kaly Xin <Kaly.Xin@arm.com>,
Stratos Mailing List <stratos-dev@op-lists.linaro.org>,
"virtio-dev@lists.oasis-open.org"
<virtio-dev@lists.oasis-open.org>,
Arnd Bergmann <arnd.bergmann@linaro.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Stefano Stabellini <stefano.stabellini@xilinx.com>,
"stefanha@redhat.com" <stefanha@redhat.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
Carl van Schaik <cvanscha@qti.qualcomm.com>,
"pratikp@quicinc.com" <pratikp@quicinc.com>,
Srivatsa Vaddagiri <vatsa@codeaurora.org>,
Jean-Philippe Brucker <jean-philippe@linaro.org>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>,
Bertrand Marquis <Bertrand.Marquis@arm.com>,
Artem Mygaiev <Artem_Mygaiev@epam.com>,
Julien Grall <julien@xen.org>, Juergen Gross <jgross@suse.com>,
Paul Durrant <paul@xen.org>, Xen Devel <xen-devel@lists.xen.org>,
Rich Persaud <persaur@gmail.com>,
Daniel Smith <dpsmith@apertussolutions.com>,
James McKenzie <james@bromium.com>,
Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: Enabling hypervisor agnosticism for VirtIO backends
Date: Tue, 7 Sep 2021 20:55:01 +0900 [thread overview]
Message-ID: <20210907115501.GC49004@laputa> (raw)
In-Reply-To: <CACMJ4GYY0wkm0vOzJfq8M9dCxPq1ZFwWT8Q73rMjqtrP7if-Zw@mail.gmail.com>
Hi,
I have not covered all your comments below yet.
So just one comment:
On Mon, Sep 06, 2021 at 05:57:43PM -0700, Christopher Clark wrote:
> On Thu, Sep 2, 2021 at 12:19 AM AKASHI Takahiro <takahiro.akashi@linaro.org>
> wrote:
(snip)
> > It appears that, on FE side, at least three hypervisor calls (and data
> > copying) need to be invoked at every request, right?
> >
>
> For a write, counting FE sendv ops:
> 1: the write data payload is sent via the "Argo ring for writes"
> 2: the descriptor is sent via a sync of the available/descriptor ring
> -- is there a third one that I am missing?
In the picture, I can see
a) Data transmitted by Argo sendv
b) Descriptor written after data sendv
c) VirtIO ring sync'd to back-end via separate sendv
Oops, (b) is not a hypervisor call, is it?
(But I guess that you will have to have yet another call for notification
since there is no config register of QueueNotify?)
Thanks,
-Takahiro Akashi
> Christopher
>
>
> >
> > Thanks,
> > -Takahiro Akashi
> >
> >
> > > * Here are the design documents for building VirtIO-over-Argo, to
> > support a
> > > hypervisor-agnostic frontend VirtIO transport driver using Argo.
> > >
> > > The Development Plan to build VirtIO virtual device support over Argo
> > > transport:
> > >
> > https://openxt.atlassian.net/wiki/spaces/DC/pages/1696169985/VirtIO-Argo+Development+Phase+1
> > >
> > > A design for using VirtIO over Argo, describing how VirtIO data
> > structures
> > > and communication is handled over the Argo transport:
> > > https://openxt.atlassian.net/wiki/spaces/DC/pages/1348763698/VirtIO+Argo
> > >
> > > Diagram (from the above document) showing how VirtIO rings are
> > synchronized
> > > between domains without using shared memory:
> > >
> > https://openxt.atlassian.net/46e1c93b-2b87-4cb2-951e-abd4377a1194#media-blob-url=true&id=01f7d0e1-7686-4f0b-88e1-457c1d30df40&collection=contentId-1348763698&contextId=1348763698&mimeType=image%2Fpng&name=device-buffer-access-virtio-argo.png&size=243175&width=1106&height=1241
> > >
> > > Please note that the above design documents show that the existing VirtIO
> > > device drivers, and both vring and virtqueue data structures can be
> > > preserved
> > > while interdomain communication can be performed with no shared memory
> > > required
> > > for most drivers; (the exceptions where further design is required are
> > those
> > > such as virtual framebuffer devices where shared memory regions are
> > > intentionally
> > > added to the communication structure beyond the vrings and virtqueues).
> > >
> > > An analysis of VirtIO and Argo, informing the design:
> > >
> > https://openxt.atlassian.net/wiki/spaces/DC/pages/1333428225/Analysis+of+Argo+as+a+transport+medium+for+VirtIO
> > >
> > > * Argo can be used for a communication path for configuration between the
> > > backend
> > > and the toolstack, avoiding the need for a dependency on XenStore,
> > which
> > > is an
> > > advantage for any hypervisor-agnostic design. It is also amenable to a
> > > notification
> > > mechanism that is not based on Xen event channels.
> > >
> > > * Argo does not use or require shared memory between VMs and provides an
> > > alternative
> > > to the use of foreign shared memory mappings. It avoids some of the
> > > complexities
> > > involved with using grants (eg. XSA-300).
> > >
> > > * Argo supports Mandatory Access Control by the hypervisor, satisfying a
> > > common
> > > certification requirement.
> > >
> > > * The Argo headers are BSD-licensed and the Xen hypervisor implementation
> > > is GPLv2 but
> > > accessible via the hypercall interface. The licensing should not
> > present
> > > an obstacle
> > > to adoption of Argo in guest software or implementation by other
> > > hypervisors.
> > >
> > > * Since the interface that Argo presents to a guest VM is similar to
> > DMA, a
> > > VirtIO-Argo
> > > frontend transport driver should be able to operate with a physical
> > > VirtIO-enabled
> > > smart-NIC if the toolstack and an Argo-aware backend provide support.
> > >
> > > The next Xen Community Call is next week and I would be happy to answer
> > > questions
> > > about Argo and on this topic. I will also be following this thread.
> > >
> > > Christopher
> > > (Argo maintainer, Xen Community)
> > >
> > >
> > --------------------------------------------------------------------------------
> > > [1]
> > > An introduction to Argo:
> > >
> > https://static.sched.com/hosted_files/xensummit19/92/Argo%20and%20HMX%20-%20OpenXT%20-%20Christopher%20Clark%20-%20Xen%20Summit%202019.pdf
> > > https://www.youtube.com/watch?v=cnC0Tg3jqJQ
> > > Xen Wiki page for Argo:
> > >
> > https://wiki.xenproject.org/wiki/Argo:_Hypervisor-Mediated_Exchange_(HMX)_for_Xen
> > >
> > > [2]
> > > OpenXT Linux Argo driver and userspace library:
> > > https://github.com/openxt/linux-xen-argo
> > >
> > > Windows V4V at OpenXT wiki:
> > > https://openxt.atlassian.net/wiki/spaces/DC/pages/14844007/V4V
> > > Windows v4v driver source:
> > > https://github.com/OpenXT/xc-windows/tree/master/xenv4v
> > >
> > > HP/Bromium uXen V4V driver:
> > > https://github.com/uxen-virt/uxen/tree/ascara/windows/uxenv4vlib
> > >
> > > [3]
> > > v2 of the Argo test unikernel for XTF:
> > >
> > https://lists.xenproject.org/archives/html/xen-devel/2021-01/msg02234.html
> > >
> > > [4]
> > > Argo HMX Transport for VirtIO meeting minutes:
> > >
> > https://lists.xenproject.org/archives/html/xen-devel/2021-02/msg01422.html
> > >
> > > VirtIO-Argo Development wiki page:
> > >
> > https://openxt.atlassian.net/wiki/spaces/DC/pages/1696169985/VirtIO-Argo+Development+Phase+1
> > >
> >
> >
next prev parent reply other threads:[~2021-09-07 11:55 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-04 9:04 [virtio-dev] Enabling hypervisor agnosticism for VirtIO backends Alex Bennée
2021-08-04 19:20 ` Stefano Stabellini
2021-08-11 6:27 ` AKASHI Takahiro
2021-08-14 15:37 ` Oleksandr Tyshchenko
2021-08-16 10:04 ` Wei Chen
2021-08-17 8:07 ` AKASHI Takahiro
2021-08-17 8:39 ` Wei Chen
2021-08-18 5:38 ` AKASHI Takahiro
2021-08-18 8:35 ` Wei Chen
2021-08-20 6:41 ` AKASHI Takahiro
2021-08-26 9:40 ` AKASHI Takahiro
2021-08-26 12:10 ` Wei Chen
2021-08-30 19:36 ` Christopher Clark
2021-08-30 19:53 ` [virtio-dev] " Christopher Clark
2021-08-30 19:53 ` Christopher Clark
2021-09-02 7:19 ` AKASHI Takahiro
2021-09-07 0:57 ` [virtio-dev] " Christopher Clark
2021-09-07 0:57 ` Christopher Clark
2021-09-07 11:55 ` AKASHI Takahiro [this message]
2021-09-07 18:09 ` [virtio-dev] " Christopher Clark
2021-09-07 18:09 ` Christopher Clark
2021-09-10 3:12 ` AKASHI Takahiro
2021-08-31 6:18 ` AKASHI Takahiro
2021-09-01 11:12 ` Wei Chen
2021-09-01 12:29 ` AKASHI Takahiro
2021-09-01 16:26 ` Oleksandr Tyshchenko
2021-09-02 1:30 ` Wei Chen
2021-09-02 1:50 ` Wei Chen
[not found] ` <0100017b33e585a5-06d4248e-b1a7-485e-800c-7ead89e5f916-000000@email.amazonses.com>
2021-08-12 7:55 ` [Stratos-dev] " François Ozog
2021-08-13 5:10 ` AKASHI Takahiro
2021-09-01 8:57 ` [virtio-dev] " Alex Bennée
2021-09-01 8:57 ` Alex Bennée
2021-08-17 10:41 ` [virtio-dev] " Stefan Hajnoczi
2021-08-17 10:41 ` Stefan Hajnoczi
2021-08-23 6:25 ` AKASHI Takahiro
2021-08-23 9:58 ` [virtio-dev] " Stefan Hajnoczi
2021-08-23 9:58 ` Stefan Hajnoczi
2021-08-25 10:29 ` AKASHI Takahiro
2021-08-25 15:02 ` [virtio-dev] " Stefan Hajnoczi
2021-08-25 15:02 ` Stefan Hajnoczi
2021-09-01 12:53 ` [virtio-dev] " Alex Bennée
2021-09-01 12:53 ` Alex Bennée
2021-09-02 9:12 ` [virtio-dev] " Stefan Hajnoczi
2021-09-02 9:12 ` Stefan Hajnoczi
2021-09-03 8:06 ` AKASHI Takahiro
2021-09-03 9:28 ` [virtio-dev] " Alex Bennée
2021-09-03 9:28 ` Alex Bennée
2021-09-06 2:23 ` AKASHI Takahiro
2021-09-07 2:41 ` [virtio-dev] Re: [Stratos-dev] " Christopher Clark
2021-09-07 2:41 ` Christopher Clark
2021-09-10 2:50 ` AKASHI Takahiro
2021-09-10 9:35 ` [virtio-dev] " Alex Bennée
2021-09-10 9:35 ` Alex Bennée
2021-09-13 23:51 ` Stefano Stabellini
2021-09-14 6:08 ` [Stratos-dev] " François Ozog
2021-09-14 14:25 ` [virtio-dev] " Alex Bennée
2021-09-14 14:25 ` Alex Bennée
2021-09-14 17:38 ` [Stratos-dev] " Trilok Soni
2021-09-15 3:29 ` Stefano Stabellini
2021-09-15 23:50 ` Trilok Soni
2021-09-16 2:11 ` Stefano Stabellini
2021-08-05 15:48 ` [virtio-dev] " Stefan Hajnoczi
2021-08-19 9:11 ` [virtio-dev] " Matias Ezequiel Vara Larsen
[not found] ` <20210820060558.GB13452@laputa>
2021-08-21 14:08 ` Matias Ezequiel Vara Larsen
[not found] ` <20210823012029.GB40863@laputa>
2021-10-04 11:33 ` Matias Ezequiel Vara Larsen
2021-09-01 8:43 ` Alex Bennée
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=20210907115501.GC49004@laputa \
--to=takahiro.akashi@linaro.org \
--cc=Artem_Mygaiev@epam.com \
--cc=Bertrand.Marquis@arm.com \
--cc=Kaly.Xin@arm.com \
--cc=Oleksandr_Tyshchenko@epam.com \
--cc=Wei.Chen@arm.com \
--cc=alex.bennee@linaro.org \
--cc=andrew.cooper3@citrix.com \
--cc=arnd.bergmann@linaro.org \
--cc=christopher.w.clark@gmail.com \
--cc=cvanscha@qti.qualcomm.com \
--cc=dpsmith@apertussolutions.com \
--cc=james@bromium.com \
--cc=jan.kiszka@siemens.com \
--cc=jean-philippe@linaro.org \
--cc=jgross@suse.com \
--cc=julien@xen.org \
--cc=mathieu.poirier@linaro.org \
--cc=olekstysh@gmail.com \
--cc=paul@xen.org \
--cc=persaur@gmail.com \
--cc=pratikp@quicinc.com \
--cc=sstabellini@kernel.org \
--cc=stefanha@redhat.com \
--cc=stefano.stabellini@xilinx.com \
--cc=stratos-dev@op-lists.linaro.org \
--cc=vatsa@codeaurora.org \
--cc=viresh.kumar@linaro.org \
--cc=virtio-dev@lists.oasis-open.org \
--cc=xen-devel@lists.xen.org \
/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.