qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: Auger Eric <eric.auger@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	kevin.tian@intel.com, "Daniel P. Berrangé" <berrange@redhat.com>,
	kenneth-lee-2012@foxmail.com, tnowicki@marvell.com,
	"Michael S. Tsirkin" <mst@redhat.com>,
	quintela@redhat.com, zhangfei.gao@foxmail.com,
	qemu-devel@nongnu.org, peterx@redhat.com, dgilbert@redhat.com,
	bharatb.linux@gmail.com, qemu-arm@nongnu.org,
	"Wangzhou (B)" <wangzhou1@hisilicon.com>,
	"Zhangfei Gao" <zhangfei.gao@gmail.com>,
	eric.auger.pro@gmail.com
Subject: Re: [PATCH v16 00/10] VIRTIO-IOMMU device
Date: Wed, 4 Mar 2020 17:47:17 +0100	[thread overview]
Message-ID: <20200304164717.GF646000@myrica> (raw)
In-Reply-To: <88e3b669-2998-41c0-83f7-de42a72a73e7@redhat.com>

On Wed, Mar 04, 2020 at 09:41:44AM +0100, Auger Eric wrote:
> >>> Could I ask one question?
> >>> To support vSVA and pasid in guest, which direction you recommend,
> >>> virtio-iommu or vSMMU (your nested paging)
> >>>
> >>> Do we still have any obstacles?
> >> you can ask the question but not sure I can answer ;-)
> >>
> >> 1) SMMUv3 2stage implementation is blocked by Will at kernel level.
> >>
> >> Despite this situation I may/can respin as Marvell said they were
> >> interested in this effort.

Do you know if they want vSVA as well or only nested translation?

> >> If you are also interested in (I know you
> >> tested it several times and I am grateful to you for that), please reply
> >> to:
> >> [PATCH v9 00/14] SMMUv3 Nested Stage Setup (IOMMU part)
> >> (https://patchwork.kernel.org/cover/11039871/) and say you are
> >> interested in that work so that maintainers are aware there are
> >> potential users.
> >>
> >> At the moment I have not supported multiple CDs because it introduced
> >> other dependencies.
> >>
> >> 2) virtio-iommu
> >>
> >> So only virtio-iommu dt boot on machvirt is currently supported. For non
> >> DT, Jean respinned his kernel series
> >> "[PATCH v2 0/3] virtio-iommu on x86 and non-devicetree platforms" as you
> >> may know. However non DT integration still is controversial. Michael is
> >> pushing for putting the binding info the PCI config space. Joerg
> >> yesterday challenged this solution and said he would prefer ACPI
> >> integration. ACPI support depends on ACPI spec update & vote anyway.
> >>
> >> To support PASID at virtio-iommu level you also need virtio-iommu API
> >> extensions to be proposed and written + kernel works. So that's a long
> >> road. I will let Jean-Philippe comment on that.

Yeah, let's put that stuff on hold. vSVA with virtio-iommu requires about
the same amount of work in the host kernel as vSMMU, minus the NESTED_MSI
stuff. The device implementation would be simpler, but the guest driver is
difficult (I'd need to extract the CD table code from the SMMU driver
again). And obtaining better performance than vSMMU would then require
upstreaming vhost-iommu. I do have incomplete drafts and prototypes but
I'll put them aside until users (other than hardware validation) show up
and actually need performance or things like unpinned stage-2.

> >> I would just say that Intel is working on nested paging solution with
> >> their emulated intel-iommu. We can help them getting that upstream and
> >> partly benefit from this work.
> >>
> >>> Would you mind give some breakdown.
> >>> Jean mentioned PASID still not supported in QEMU.
> >> Do you mean support of multiple CDs in the emulated SMMU? That's a thing
> >> I could implement quite easily. What is more tricky is how to test it.
> > 
> > Thanks Eric
> > 
> > Discussed with Jean before, here are some obstacles for vSVA via nested paging.
> > Do you think they are still big issues?
> > 
> > Copy "
> > * PASID support in QEMU, I don't think there is anything yet
> > // this is not a big issue as your comments.
> > 
> > * Page response support in VFIO and QEMU. With Eric's series we can
> > inject recoverable faults into the guest, but there is no channel for
> > the guest to RESUME the stall after fixing it.
> I guess this matches a command sent through the SMMUv3 command queue
> (CMD_PRI_RESP) that should be trapped by QEMU and injected to the
> physical SMMU, right?
> 
> I think everybody misses that injection path and that's not specific to
> virtio-iommu. PRS is not currently addressed by in-flight Intel's kernel
> series ([PATCH V9 00/10] Nested Shared Virtual Address (SVA) VT-d
> support) either.
> 
> I think the topic is complex enough to separate the concerns and try to
> move forward in incremental steps hence my efforts to push for simple
> nested use case. Can't you support vSVA without PRS first (I think this
> Intel's strategy too)

Not really, for sharing guest process address spaces you need I/O page
faults. You can test PASID alone without PRI by using auxiliary domains in
the guest, so I'd advise to start with that, but it requires modifications
to the device driver.

> > 
> > * We can't use DVM in nested mode unless the VMID is shared with the
> > CPU. For that we'll need the host SMMU driver to hook into the KVM VMID
> > allocator, just like we do for the ASID allocator. I haven't yet
> > investigated how to do that. It's possible to do vSVA without DVM
> > though, by sending all TLB invalidations through the SMMU command queue.
> > "

Hm we're already mandating DVM for host SVA, so I'd say mandate it for
vSVA as well. We'd avoid a ton of context switches, especially for the zip
accelerator which doesn't require ATC invalidations. The host needs to pin
the VMID allocated by KVM and write it in the endpoint's STE.

Thanks,
Jean

> OK.
> 
> From the above arguments I am not sure there are technical blockers with
> nested paging implementation. For sure there are things that are not
> supported, because I did not address this topic yet.
> 
> If I were to work on this, you did not answer bout the testing feasibility.
> 
> Thanks
> 
> Eric
> > 
> > Thanks
> > 
> 


  reply	other threads:[~2020-03-04 16:48 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-14 13:27 [PATCH v16 00/10] VIRTIO-IOMMU device Eric Auger
2020-02-14 13:27 ` [PATCH v16 01/10] virtio-iommu: Add skeleton Eric Auger
2020-02-14 13:27 ` [PATCH v16 02/10] virtio-iommu: Decode the command payload Eric Auger
2020-02-14 13:27 ` [PATCH v16 03/10] virtio-iommu: Implement attach/detach command Eric Auger
2020-02-14 13:27 ` [PATCH v16 04/10] virtio-iommu: Implement map/unmap Eric Auger
2020-02-14 13:27 ` [PATCH v16 05/10] virtio-iommu: Implement translate Eric Auger
2020-02-14 13:27 ` [PATCH v16 06/10] virtio-iommu: Implement fault reporting Eric Auger
2020-02-14 13:27 ` [PATCH v16 07/10] virtio-iommu: Support migration Eric Auger
2020-02-14 13:27 ` [PATCH v16 08/10] virtio-iommu-pci: Add virtio iommu pci support Eric Auger
2020-02-14 13:27 ` [PATCH v16 09/10] hw/arm/virt: Add the virtio-iommu device tree mappings Eric Auger
2020-02-21 14:25   ` Peter Maydell
2020-02-14 13:27 ` [PATCH v16 10/10] MAINTAINERS: add virtio-iommu related files Eric Auger
2020-02-21 14:26   ` Peter Maydell
2020-02-21 14:27 ` [PATCH v16 00/10] VIRTIO-IOMMU device Peter Maydell
2020-02-23  8:17   ` Michael S. Tsirkin
2020-02-27 11:17 ` Daniel P. Berrangé
2020-02-27 13:49   ` Auger Eric
2020-03-03  3:23     ` Zhangfei Gao
2020-03-03  9:40       ` Auger Eric
2020-03-04  6:08         ` Zhangfei Gao
2020-03-04  8:41           ` Auger Eric
2020-03-04 16:47             ` Jean-Philippe Brucker [this message]
2020-03-05  2:56               ` Tian, Kevin
2020-03-05  7:34                 ` Jean-Philippe Brucker
2020-03-05  7:42                   ` Tian, Kevin

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=20200304164717.GF646000@myrica \
    --to=jean-philippe@linaro.org \
    --cc=berrange@redhat.com \
    --cc=bharatb.linux@gmail.com \
    --cc=dgilbert@redhat.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=eric.auger@redhat.com \
    --cc=kenneth-lee-2012@foxmail.com \
    --cc=kevin.tian@intel.com \
    --cc=mst@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=peterx@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=tnowicki@marvell.com \
    --cc=wangzhou1@hisilicon.com \
    --cc=zhangfei.gao@foxmail.com \
    --cc=zhangfei.gao@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).