From: Alex Williamson <alex.williamson@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>,
kvm@vger.kernel.org, aik@ozlabs.ru, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/4] kvm: Destroy & free KVM devices on release
Date: Wed, 30 Oct 2013 09:56:34 -0600 [thread overview]
Message-ID: <1383148594.4097.184.camel@ul30vt.home> (raw)
In-Reply-To: <527128D7.9070603@redhat.com>
On Wed, 2013-10-30 at 16:42 +0100, Paolo Bonzini wrote:
> Il 30/10/2013 16:33, Gleb Natapov ha scritto:
> > > Hmm, ok. In that case I can drop this patch and I think the rest just
> > > boils down to userspace use of the device. I had been close()'ing the
> > > kvm device fd when all QEMU vfio devices are detached, but I can just as
> > > easily leave it open in case a new device is added later. I'll send out
> > > a new series after doing some more review and testing. Do you have any
> > > comments on the rest of the series? Thanks,
> >
> > If I understand 4/4 correctly if there is VFIO device connected we
> > assume non coherent domain. How hard it would be to do proper checking
> > in this path series?
>
> Yes, that's my understanding as well. Is the performance impact measurable?
I have additional patches to do this, the blocker is that intel-iommu
strips IOMMU_CACHE from the flags I provide if the IOMMU domain as a
whole (ie. all of the hardware units involved in the domain) do not all
support Snoop Control (SC). Thus I can't rely on simply tracking the
hardware capabilities of the domain because some IOMMU PTEs will have
SNP set, others will not. It depends on the state of the IOMMU domain
at the time of the mapping. Therefore the only way to switch back to
coherent from non-coherent is to unmap and remap everything. This is
what legacy KVM device assignment does, but I can't see how that's not
racy wrt inflight DMA.
The patch approach I was taking is:
1) Enable KVM to handle the VM as non-coherent (which is trued, VFIO
never sets IOMMU_CACHE currently due to the above issues).
2) Get QEMU to enable the KVM device, fixing the coherency issue.
3) Fix Intel IOMMU to honor IOMMU_CACHE regardless of hw capabilities
(patch posted).
4) Make VFIO always map w/ IOMMU_CACHE
5) Create VFIO external user interface to query capabilities.
6) Update KVM device to use it.
As to performance, for graphics I can't tell a difference whether
NoSnoop is prevented or KVM does WBINVD. I'm hoping though that we can
consider the mode enabled by this patch as a temporary step in the
process and we'll eventually get to a state where we only emulate WBINVD
when necessary. Correctness trumps performance in the current round.
Thanks,
Alex
next prev parent reply other threads:[~2013-10-30 15:56 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-29 16:13 [PATCH 0/4] KVM-VFIO pseudo device for VFIO coherency Alex Williamson
2013-10-29 16:13 ` [PATCH 1/4] kvm: Destroy & free KVM devices on release Alex Williamson
2013-10-30 10:40 ` Gleb Natapov
2013-10-30 14:30 ` Alex Williamson
2013-10-30 15:33 ` Gleb Natapov
2013-10-30 15:42 ` Paolo Bonzini
2013-10-30 15:44 ` Gleb Natapov
2013-10-30 15:56 ` Alex Williamson [this message]
2013-10-30 16:10 ` Paolo Bonzini
2013-10-30 16:18 ` Gleb Natapov
2013-10-29 16:13 ` [PATCH 2/4] kvm: Add VFIO device Alex Williamson
2013-10-29 16:13 ` [PATCH 3/4] kvm/x86: Convert iommu_flags to iommu_noncoherent Alex Williamson
2013-10-29 16:13 ` [PATCH 4/4] kvm: Create non-coherent DMA registeration Alex Williamson
-- strict thread matches above, loose matches on Subject: below --
2013-10-01 20:15 [PATCH 0/4] KVM noncoherent DMA registration and VFIO pseudo device Alex Williamson
2013-10-01 20:15 ` [PATCH 1/4] kvm: Destroy & free KVM devices on release Alex Williamson
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=1383148594.4097.184.camel@ul30vt.home \
--to=alex.williamson@redhat.com \
--cc=aik@ozlabs.ru \
--cc=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@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