All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: "Stefan Hajnoczi" <stefanha@gmail.com>,
	"Nikos Dragazis" <ndragazis@arrikto.com>,
	"Jan Kiszka" <jan.kiszka@siemens.com>,
	"John G. Johnson" <john.g.johnson@oracle.com>,
	"Andra-Irina Paraschiv" <andraprs@amazon.com>,
	kvm <kvm@vger.kernel.org>, "Michael S. Tsirkin" <mst@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Maxime Coquelin" <maxime.coquelin@redhat.com>,
	"Alexander Graf" <graf@amazon.com>,
	"Thanos Makatos" <thanos.makatos@nutanix.com>,
	"Jag Raman" <jag.raman@oracle.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Jean-Philippe Brucker" <jean-philippe@linaro.org>,
	"Eric Auger" <eric.auger@redhat.com>
Subject: Re: Inter-VM device emulation (call on Mon 20th July 2020)
Date: Mon, 27 Jul 2020 11:30:24 +0100	[thread overview]
Message-ID: <87h7tt45dr.fsf@linaro.org> (raw)
In-Reply-To: <20200727101403.GF380177@stefanha-x1.localdomain>


Stefan Hajnoczi <stefanha@redhat.com> writes:

> On Tue, Jul 21, 2020 at 11:49:04AM +0100, Alex Bennée wrote:
>> Stefan Hajnoczi <stefanha@gmail.com> writes:
>> > 2. Alexander Graf's idea for a new Linux driver that provides an
>> > enforcing software IOMMU. This would be a character device driver that
>> > is mmapped by the device emulation process (either vhost-user-style on
>> > the host or another VMM for inter-VM device emulation). The Driver VMM
>> > can program mappings into the device and the page tables in the device
>> > emulation process will be updated. This way the Driver VMM can share
>> > memory specific regions of guest RAM with the device emulation process
>> > and revoke those mappings later.
>> 
>> I'm wondering if there is enough plumbing on the guest side so a guest
>> can use the virtio-iommu to mark out exactly which bits of memory the
>> virtual device can have access to? At a minimum the virtqueues need to
>> be accessible and for larger transfers maybe a bounce buffer. However
>> for speed you want as wide as possible mapping but no more. It would be
>> nice for example if a block device could load data directly into the
>> guests block cache (zero-copy) but without getting a view of the kernels
>> internal data structures.
>
> Maybe Jean-Philippe or Eric can answer that?
>
>> Another thing that came across in the call was quite a lot of
>> assumptions about QEMU and Linux w.r.t virtio. While our project will
>> likely have Linux as a guest OS we are looking specifically at enabling
>> virtio for Type-1 hypervisors like Xen and the various safety certified
>> proprietary ones. It is unlikely that QEMU would be used as the VMM for
>> these deployments. We want to work out what sort of common facilities
>> hypervisors need to support to enable virtio so the daemons can be
>> re-usable and maybe setup with a minimal shim for the particular
>> hypervisor in question.
>
> The vhost-user protocol together with the backend program conventions
> define the wire protocol and command-line interface (see
> docs/interop/vhost-user.rst).
>
> vhost-user is already used by other VMMs today. For example,
> cloud-hypervisor implements vhost-user.

Ohh that's a new one for me. I see it is a KVM only project but it's
nice to see another VMM using the common rust-vmm backend. There is
interest in using rust-vmm to implement VMMs for type-1 hypervisors but
we need to work out if there are two many type-2 concepts backed into
the lower level rust crates.

> I'm sure there is room for improvement, but it seems like an incremental
> step given that vhost-user already tries to cater for this scenario.
>
> Are there any specific gaps you have identified?

Aside from the desire to limit the shared memory footprint between the
backend daemon and a guest not yet.

I suspect the eventfd mechanism might just end up being simulated by the
VMM as a result of whatever comes from the type-1 interface indicating a
doorbell has been rung. It is after all just a FD you consume numbers
over right?

Not all setups will have an equivalent of a Dom0 "master" guest to do
orchestration. Highly embedded are likely to have fixed domains created
as the firmware/hypervisor start up.

>
> Stefan


-- 
Alex Bennée

WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: "John G. Johnson" <john.g.johnson@oracle.com>,
	"Jag Raman" <jag.raman@oracle.com>,
	"Andra-Irina Paraschiv" <andraprs@amazon.com>,
	kvm <kvm@vger.kernel.org>, "Michael S. Tsirkin" <mst@redhat.com>,
	"Stefan Hajnoczi" <stefanha@gmail.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Jean-Philippe Brucker" <jean-philippe@linaro.org>,
	"Maxime Coquelin" <maxime.coquelin@redhat.com>,
	"Alexander Graf" <graf@amazon.com>,
	"Eric Auger" <eric.auger@redhat.com>,
	"Jan Kiszka" <jan.kiszka@siemens.com>,
	"Thanos Makatos" <thanos.makatos@nutanix.com>,
	"Nikos Dragazis" <ndragazis@arrikto.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: Inter-VM device emulation (call on Mon 20th July 2020)
Date: Mon, 27 Jul 2020 11:30:24 +0100	[thread overview]
Message-ID: <87h7tt45dr.fsf@linaro.org> (raw)
In-Reply-To: <20200727101403.GF380177@stefanha-x1.localdomain>


Stefan Hajnoczi <stefanha@redhat.com> writes:

> On Tue, Jul 21, 2020 at 11:49:04AM +0100, Alex Bennée wrote:
>> Stefan Hajnoczi <stefanha@gmail.com> writes:
>> > 2. Alexander Graf's idea for a new Linux driver that provides an
>> > enforcing software IOMMU. This would be a character device driver that
>> > is mmapped by the device emulation process (either vhost-user-style on
>> > the host or another VMM for inter-VM device emulation). The Driver VMM
>> > can program mappings into the device and the page tables in the device
>> > emulation process will be updated. This way the Driver VMM can share
>> > memory specific regions of guest RAM with the device emulation process
>> > and revoke those mappings later.
>> 
>> I'm wondering if there is enough plumbing on the guest side so a guest
>> can use the virtio-iommu to mark out exactly which bits of memory the
>> virtual device can have access to? At a minimum the virtqueues need to
>> be accessible and for larger transfers maybe a bounce buffer. However
>> for speed you want as wide as possible mapping but no more. It would be
>> nice for example if a block device could load data directly into the
>> guests block cache (zero-copy) but without getting a view of the kernels
>> internal data structures.
>
> Maybe Jean-Philippe or Eric can answer that?
>
>> Another thing that came across in the call was quite a lot of
>> assumptions about QEMU and Linux w.r.t virtio. While our project will
>> likely have Linux as a guest OS we are looking specifically at enabling
>> virtio for Type-1 hypervisors like Xen and the various safety certified
>> proprietary ones. It is unlikely that QEMU would be used as the VMM for
>> these deployments. We want to work out what sort of common facilities
>> hypervisors need to support to enable virtio so the daemons can be
>> re-usable and maybe setup with a minimal shim for the particular
>> hypervisor in question.
>
> The vhost-user protocol together with the backend program conventions
> define the wire protocol and command-line interface (see
> docs/interop/vhost-user.rst).
>
> vhost-user is already used by other VMMs today. For example,
> cloud-hypervisor implements vhost-user.

Ohh that's a new one for me. I see it is a KVM only project but it's
nice to see another VMM using the common rust-vmm backend. There is
interest in using rust-vmm to implement VMMs for type-1 hypervisors but
we need to work out if there are two many type-2 concepts backed into
the lower level rust crates.

> I'm sure there is room for improvement, but it seems like an incremental
> step given that vhost-user already tries to cater for this scenario.
>
> Are there any specific gaps you have identified?

Aside from the desire to limit the shared memory footprint between the
backend daemon and a guest not yet.

I suspect the eventfd mechanism might just end up being simulated by the
VMM as a result of whatever comes from the type-1 interface indicating a
doorbell has been rung. It is after all just a FD you consume numbers
over right?

Not all setups will have an equivalent of a Dom0 "master" guest to do
orchestration. Highly embedded are likely to have fixed domains created
as the firmware/hypervisor start up.

>
> Stefan


-- 
Alex Bennée


  reply	other threads:[~2020-07-27 10:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <86d42090-f042-06a1-efba-d46d449df280@arrikto.com>
2020-07-15 11:23 ` Inter-VM device emulation (call on Mon 20th July 2020) Stefan Hajnoczi
2020-07-15 11:23   ` Stefan Hajnoczi
2020-07-15 11:28   ` Jan Kiszka
2020-07-15 11:28     ` Jan Kiszka
2020-07-15 15:38     ` Stefan Hajnoczi
2020-07-15 15:38       ` Stefan Hajnoczi
2020-07-15 16:44       ` Alex Bennée
2020-07-15 16:44         ` Alex Bennée
2020-07-17  8:58         ` Nikos Dragazis
2020-07-17 17:10           ` Stefan Hajnoczi
2020-07-17 17:10             ` Stefan Hajnoczi
2020-07-15 16:20   ` Thanos Makatos
2020-07-15 16:20     ` Thanos Makatos
2020-07-20 17:11   ` Stefan Hajnoczi
2020-07-20 17:11     ` Stefan Hajnoczi
2020-07-21 10:49     ` Alex Bennée
2020-07-21 10:49       ` Alex Bennée
2020-07-21 19:08       ` Jan Kiszka
2020-07-21 19:08         ` Jan Kiszka
2020-07-27 10:14       ` Stefan Hajnoczi
2020-07-27 10:14         ` Stefan Hajnoczi
2020-07-27 10:30         ` Alex Bennée [this message]
2020-07-27 10:30           ` Alex Bennée
2020-07-27 11:37           ` Michael S. Tsirkin
2020-07-27 11:37             ` Michael S. Tsirkin
2020-07-27 12:22             ` Alex Bennée
2020-07-27 12:22               ` Alex Bennée
2020-07-27 11:52         ` Jean-Philippe Brucker
2020-07-27 11:52           ` Jean-Philippe Brucker

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=87h7tt45dr.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=andraprs@amazon.com \
    --cc=eric.auger@redhat.com \
    --cc=graf@amazon.com \
    --cc=jag.raman@oracle.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jean-philippe@linaro.org \
    --cc=john.g.johnson@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=maxime.coquelin@redhat.com \
    --cc=mst@redhat.com \
    --cc=ndragazis@arrikto.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=stefanha@redhat.com \
    --cc=thanos.makatos@nutanix.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.