From: Alex Williamson <alex.williamson@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: David Gibson <dgibson@redhat.com>,
Jason Wang <jasowang@redhat.com>,
mst@redhat.com, qemu-devel@nongnu.org, pbonzini@redhat.com,
cornelia.huck@de.ibm.com, wexu@redhat.com, vkaplans@redhat.com
Subject: Re: [Qemu-devel] [PATCH for 2.8 10/11] Revert "intel_iommu: Throw hw_error on notify_started"
Date: Fri, 2 Sep 2016 09:13:01 -0600 [thread overview]
Message-ID: <20160902091301.30662d7a@t450s.home> (raw)
In-Reply-To: <20160902093100.GD18496@pxdev.xzpeter.org>
On Fri, 2 Sep 2016 17:31:00 +0800
Peter Xu <peterx@redhat.com> wrote:
> On Fri, Sep 02, 2016 at 05:00:28PM +1000, David Gibson wrote:
> > On Fri, 2 Sep 2016 14:18:47 +0800
> > Peter Xu <peterx@redhat.com> wrote:
> >
> > > On Fri, Sep 02, 2016 at 02:15:57PM +0800, Peter Xu wrote:
> > > > > No, implement the full notifier, and a listener which only wants the
> > > > > invalidates can just ignore callbacks which add new mappings.
> > > > >
> > > > > As I said, you'll need this to get VFIO working with vIOMMU which
> > > > > someone is bound to want soon enough anyway.
> > > >
> > > > But for vhost cases, we do not need CM bit enabled. That might be the
> > > > difference?
> > > >
> > > > I think we need to have vhost working even without CM bit. Device
> > > > IOTLB should be able to achieve that.
> > >
> > > The problem is that, IMHO we should be very careful on enabling CM
> > > bit. After enabling it, system might get slower (though I haven't
> > > tried it yet), or even very slow? So maybe we will only enable it when
> > > really needed (e.g., to do device passthrough and build the shadow
> > > table).
> >
> > Um.. what's the CM bit and what does it have to do with anything?
>
> It's used to trace guest IO address space mapping changes.
>
> Pasted from VT-d spec chap 6.1:
>
> The Caching Mode (CM) field in Capability Register indicates if
> the hardware implementation caches not-present or erroneous
> translation-structure entries. When the CM field is reported as
> Set, any software updates to any remapping structures (including
> updates to not-present entries or present entries whose
> programming resulted in translation faults) requires explicit
> invalidation of the caches.
>
> Hardware implementations of this architecture must support
> operation corresponding to CM=0. Operation corresponding to CM=1
> may be supported by software implementations (emulation) of this
> architecture for efficient virtualization of remapping hardware.
> Software managing remapping hardware should be written to handle
> both caching modes.
>
> Software implementations virtualizing the remapping architecture
> (such as a VMM emulating remapping hardware to an operating system
> running within a guest partition) may report CM=1 to efficiently
> virtualize the hardware. Software virtualization typically
> requires the guest remapping structures to be shadowed in the
> host. Reporting the Caching Mode as Set for the virtual hardware
> requires the guest software to explicitly issue invalidation
> operations on the virtual hardware for any/all updates to the
> guest remapping structures. The virtualizing software may trap
> these guest invalidation operations to keep the shadow translation
> structures consistent to guest translation structure
> modifications, without resorting to other less efficient
> techniques (such as write-protecting the guest translation
> structures through the processor’s paging facility).
>
> Currently it is not supported for Intel vIOMMUs.
Maybe memory_region_register_iommu_notifier() could take an
IOMMUAccessFlags argument (filter) that is passed to the notify_started
callback. If a notifier client only cares about IOMMU_NONE
(invalidations), intel-iommu could allow it, regardless of the CM
setting (though I'm dubious whether this is complete in the generic
case or really only for device iotlbs). If a client requires IOMMU_RW
then intel-iommu would currently bomb-out like it does now, or once
that gets fixed it would bomb if CM=0. Ideally intel-iommu would
be fully functional, but somehow it was allowed into the tree
with this massive gap in support for QEMU iommu interfaces. Thanks,
Alex
next prev parent reply other threads:[~2016-09-02 15:13 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-30 3:06 [Qemu-devel] [PATCH for 2.8 00/11] virtio/vhost DMAR support Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 01/11] linux-headers: update to 4.8-rc4 Jason Wang
2016-09-05 1:24 ` Wei Xu
2016-09-05 1:26 ` Michael S. Tsirkin
2016-09-06 6:28 ` Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 02/11] virtio: convert to use DMA api Jason Wang
2016-08-30 7:31 ` Cornelia Huck
2016-08-30 10:02 ` Michael S. Tsirkin
2016-08-30 10:21 ` Michael S. Tsirkin
2016-08-30 11:11 ` [Qemu-devel] qom and debug (was: [PATCH for 2.8 02/11] virtio: convert to use DMA api) Cornelia Huck
2016-08-30 11:15 ` Michael S. Tsirkin
2016-08-30 11:37 ` [Qemu-devel] qom and debug Cornelia Huck
2016-08-30 11:57 ` Michael S. Tsirkin
2016-08-31 2:47 ` [Qemu-devel] [PATCH for 2.8 02/11] virtio: convert to use DMA api Jason Wang
2016-09-05 2:26 ` Wei Xu
2016-09-06 6:30 ` Jason Wang
2016-09-05 2:33 ` Michael S. Tsirkin
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 03/11] intel_iommu: name vtd address space with devfn Jason Wang
2016-09-05 6:56 ` Wei Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 04/11] intel_iommu: allocate new key when creating new address space Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 05/11] exec: introduce address_space_get_iotlb_entry() Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 06/11] intel_iommu: support device iotlb descriptor Jason Wang
2016-08-30 13:16 ` Peter Xu
2016-08-31 2:54 ` Jason Wang
2016-09-01 1:26 ` Peter Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 07/11] virtio-pci: address space translation service (ATS) support Jason Wang
2016-08-30 13:21 ` Peter Xu
2016-08-31 2:55 ` Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 08/11] acpi: add ATSR for q35 Jason Wang
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 09/11] memory: handle alias for iommu notifier Jason Wang
2016-08-30 13:28 ` Peter Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 10/11] Revert "intel_iommu: Throw hw_error on notify_started" Jason Wang
2016-08-30 3:37 ` Alex Williamson
2016-08-31 2:45 ` Jason Wang
2016-09-01 2:29 ` Peter Xu
2016-09-01 2:43 ` Alex Williamson
2016-09-01 3:58 ` Peter Xu
2016-09-02 4:15 ` David Gibson
2016-09-02 5:37 ` Peter Xu
2016-09-02 6:10 ` David Gibson
2016-09-02 6:15 ` Peter Xu
2016-09-02 6:18 ` Peter Xu
2016-09-02 7:00 ` David Gibson
2016-09-02 9:31 ` Peter Xu
2016-09-02 15:13 ` Alex Williamson [this message]
2016-09-05 6:28 ` Peter Xu
2016-08-30 3:06 ` [Qemu-devel] [PATCH for 2.8 11/11] vhost_net: device IOTLB support Jason Wang
2016-09-01 3:34 ` Peter Xu
2016-09-01 7:36 ` Jason Wang
2016-09-02 5:47 ` Peter Xu
2016-08-30 3:25 ` [Qemu-devel] [PATCH for 2.8 00/11] virtio/vhost DMAR support no-reply
2016-08-30 3:29 ` no-reply
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=20160902091301.30662d7a@t450s.home \
--to=alex.williamson@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=dgibson@redhat.com \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=vkaplans@redhat.com \
--cc=wexu@redhat.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).