All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: "Aviv B.D" <bd.aviv@gmail.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	qemu-devel@nongnu.org, Peter Xu <peterx@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v6 0/3] IOMMU: intel_iommu support map and unmap notifications
Date: Wed, 16 Nov 2016 15:54:56 +0200	[thread overview]
Message-ID: <20161116153420-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20161110124447.1a88ac93@t450s.home>

On Thu, Nov 10, 2016 at 12:44:47PM -0700, Alex Williamson wrote:
> On Thu, 10 Nov 2016 21:20:36 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Thu, Nov 10, 2016 at 09:04:13AM -0700, Alex Williamson wrote:
> > > On Thu, 10 Nov 2016 17:54:35 +0200
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Thu, Nov 10, 2016 at 08:30:21AM -0700, Alex Williamson wrote:  
> > > > > On Thu, 10 Nov 2016 17:14:24 +0200
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Tue, Nov 08, 2016 at 01:04:21PM +0200, Aviv B.D wrote:    
> > > > > > > From: "Aviv Ben-David" <bd.aviv@gmail.com>
> > > > > > > 
> > > > > > > * Advertize Cache Mode capability in iommu cap register. 
> > > > > > >   This capability is controlled by "cache-mode" property of intel-iommu device.
> > > > > > >   To enable this option call QEMU with "-device intel-iommu,cache-mode=true".
> > > > > > > 
> > > > > > > * On page cache invalidation in intel vIOMMU, check if the domain belong to
> > > > > > >   registered notifier, and notify accordingly.      
> > > > > > 
> > > > > > This looks sane I think. Alex, care to comment?
> > > > > > Merging will have to wait until after the release.
> > > > > > Pls remember to re-test and re-ping then.    
> > > > > 
> > > > > I don't think it's suitable for upstream until there's a reasonable
> > > > > replay mechanism    
> > > > 
> > > > Could you pls clarify what do you mean by replay?
> > > > Is this when you attach a device by hotplug to
> > > > a running system?
> > > > 
> > > > If yes this can maybe be addressed by disabling hotplug temporarily.  
> > > 
> > > No, hotplug is not required, moving a device between existing domains
> > > requires replay, ie. actually using it for nested device assignment.  
> > 
> > Good point, that one is a correctness thing. Aviv,
> > could you add this in TODO list in a cover letter pls?
> > 
> > > > > and we straighten out whether it's expected to get
> > > > > multiple notifies and the notif-ee is responsible for filtering
> > > > > them or if the notif-er should do filtering.    
> > > > 
> > > > OK this is a documentation thing.  
> > > 
> > > Well no, it needs to be decided and if necessary implemented.  
> > 
> > Let's assume it's the notif-ee for now. Less is more and all that.
> 
> I think this is opposite of the approach dwg suggested.
>  
> > > > >  Without those, this is
> > > > > effectively just an RFC.    
> > > > 
> > > > It's infrastructure without users so it doesn't break things,
> > > > I'm more interested in seeing whether it's broken in
> > > > some way than whether it's complete.  
> > > 
> > > If it allows use with vfio but doesn't fully implement the complete set
> > > of interfaces, it does break things.  We currently prevent viommu usage
> > > with vfio because it is incomplete.  
> > 
> > Right - that bit is still in as far as I can see.
> 
> Nope, 3/3 changes vtd_iommu_notify_flag_changed() to allow use with
> vfio even though it's still incomplete.  We would at least need
> something like a replay callback for VT-d that triggers an abort if you
> still want to accept it incomplete.  Thanks,
> 
> Alex

IIUC practically things seems to work, right?
So how about disabling by default with a flag for people that want to
experiment with it?
E.g. x-vfio-allow-broken-translations ?

I would like to help this make progress such that 1. Aviv
gets the credit he did so far and 2. more people can join
development and help complete it.

> > > > The patchset spent out of tree too long and I'd like to see
> > > > us make progress towards device assignment working with
> > > > vIOMMU sooner rather than later, so if it's broken I won't
> > > > merge it but if it's incomplete I will.  
> > > 
> > > So long as it's incomplete and still prevents vfio usage, I'm ok with
> > > merging it, but I don't want to enable vfio usage until it's complete.
> > > Thanks,
> > > 
> > > Alex
> > >   
> > > > > > > Currently this patch still doesn't enabling VFIO devices support with vIOMMU 
> > > > > > > present. Current problems:
> > > > > > > * vfio_iommu_map_notify is not aware about memory range belong to specific 
> > > > > > >   VFIOGuestIOMMU.
> > > > > > > * memory_region_iommu_replay hangs QEMU on start up while it itterate over 
> > > > > > >   64bit address space. Commenting out the call to this function enables 
> > > > > > >   workable VFIO device while vIOMMU present.
> > > > > > > * vfio_iommu_map_notify should check if address space range is suitable for 
> > > > > > >   current notifier.
> > > > > > > 
> > > > > > > Changes from v1 to v2:
> > > > > > > * remove assumption that the cache do not clears
> > > > > > > * fix lockup on high load.
> > > > > > > 
> > > > > > > Changes from v2 to v3:
> > > > > > > * remove debug leftovers
> > > > > > > * split to sepearate commits
> > > > > > > * change is_write to flags in vtd_do_iommu_translate, add IOMMU_NO_FAIL 
> > > > > > >   to suppress error propagating to guest.
> > > > > > > 
> > > > > > > Changes from v3 to v4:
> > > > > > > * Add property to intel_iommu device to control the CM capability, 
> > > > > > >   default to False.
> > > > > > > * Use s->iommu_ops.notify_flag_changed to register notifiers.
> > > > > > > 
> > > > > > > Changes from v4 to v4 RESEND:
> > > > > > > * Fix codding style pointed by checkpatch.pl script.
> > > > > > > 
> > > > > > > Changes from v4 to v5:
> > > > > > > * Reduce the number of changes in patch 2 and make flags real bitfield.
> > > > > > > * Revert deleted debug prints.
> > > > > > > * Fix memory leak in patch 3.
> > > > > > > 
> > > > > > > Changes from v5 to v6:
> > > > > > > * fix prototype of iommu_translate function for more IOMMU types.
> > > > > > > * VFIO will be notified only on the difference, without unmap 
> > > > > > >   before change to maps.
> > > > > > > 
> > > > > > > Aviv Ben-David (3):
> > > > > > >   IOMMU: add option to enable VTD_CAP_CM to vIOMMU capility exposoed to
> > > > > > >     guest
> > > > > > >   IOMMU: change iommu_op->translate's is_write to flags, add support to
> > > > > > >     NO_FAIL flag mode
> > > > > > >   IOMMU: enable intel_iommu map and unmap notifiers
> > > > > > > 
> > > > > > >  exec.c                         |   3 +-
> > > > > > >  hw/alpha/typhoon.c             |   2 +-
> > > > > > >  hw/i386/amd_iommu.c            |   4 +-
> > > > > > >  hw/i386/intel_iommu.c          | 160 +++++++++++++++++++++++++++++++++--------
> > > > > > >  hw/i386/intel_iommu_internal.h |   3 +
> > > > > > >  hw/pci-host/apb.c              |   2 +-
> > > > > > >  hw/ppc/spapr_iommu.c           |   2 +-
> > > > > > >  hw/s390x/s390-pci-bus.c        |   2 +-
> > > > > > >  include/exec/memory.h          |   6 +-
> > > > > > >  include/hw/i386/intel_iommu.h  |  11 +++
> > > > > > >  memory.c                       |   3 +-
> > > > > > >  11 files changed, 160 insertions(+), 38 deletions(-)
> > > > > > > 
> > > > > > > -- 
> > > > > > > 1.9.1      
> > > > > >     

  reply	other threads:[~2016-11-16 13:55 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-08 11:04 [Qemu-devel] [PATCH v6 0/3] IOMMU: intel_iommu support map and unmap notifications Aviv B.D
2016-11-08 11:04 ` [Qemu-devel] [PATCH v6 1/3] IOMMU: add option to enable VTD_CAP_CM to vIOMMU capility exposoed to guest Aviv B.D
2016-11-09  7:28   ` Jason Wang
2016-11-09 22:00     ` Michael S. Tsirkin
2016-11-11  2:32       ` Jason Wang
2016-11-11  3:39         ` Michael S. Tsirkin
2016-11-11  4:15           ` Jason Wang
2016-11-21 12:41             ` Aviv B.D.
2016-11-22  3:59               ` Jason Wang
2016-11-21 13:35             ` Michael S. Tsirkin
2016-11-22  4:11               ` Jason Wang
2016-11-22 13:15                 ` Aviv B.D.
2016-11-22 15:13                   ` Michael S. Tsirkin
2016-11-22 15:09                 ` Michael S. Tsirkin
2016-12-01  3:02                   ` Tian, Kevin
2016-11-08 11:04 ` [Qemu-devel] [PATCH v6 2/3] IOMMU: change iommu_op->translate's is_write to flags, add support to NO_FAIL flag mode Aviv B.D
2016-11-08 11:04 ` [Qemu-devel] [PATCH v6 3/3] IOMMU: enable intel_iommu map and unmap notifiers Aviv B.D
2016-11-10 15:13   ` Michael S. Tsirkin
2016-11-10 15:14 ` [Qemu-devel] [PATCH v6 0/3] IOMMU: intel_iommu support map and unmap notifications Michael S. Tsirkin
2016-11-10 15:30   ` Alex Williamson
2016-11-10 15:54     ` Michael S. Tsirkin
2016-11-10 16:04       ` Alex Williamson
2016-11-10 19:20         ` Michael S. Tsirkin
2016-11-10 19:44           ` Alex Williamson
2016-11-16 13:54             ` Michael S. Tsirkin [this message]
2016-11-16 15:34               ` Alex Williamson
2016-11-16 19:50                 ` Aviv B.D.
2016-11-16 19:57                   ` Michael S. Tsirkin
2016-11-21 11:36                     ` Aviv B.D.
2016-11-16 20:03                   ` Alex Williamson
2016-11-16 20:17                     ` Michael S. Tsirkin
2016-11-16 19:20           ` Aviv B.D.

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=20161116153420-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=bd.aviv@gmail.com \
    --cc=jan.kiszka@siemens.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.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.