All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Liu, Yi L" <yi.l.liu@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: "alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"peterx@redhat.com" <peterx@redhat.com>,
	"Liu, Yi L" <yi.l.liu@intel.com>,
	"Raj, Ashok" <ashok.raj@intel.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"jean-philippe.brucker@arm.com" <jean-philippe.brucker@arm.com>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"Pan, Jacob jun" <jacob.jun.pan@intel.com>,
	"Lan, Tianyu" <tianyu.lan@intel.com>
Subject: Re: [Qemu-devel] [RFC PATCH 09/20] Memory: introduce iommu_ops->record_device
Date: Fri, 19 May 2017 17:35:59 +0800	[thread overview]
Message-ID: <20170519093559.GB10952@sky-dev> (raw)
In-Reply-To: <AADFC41AFE54684AB9EE6CBC0274A5D190CD9CA5@SHSMSX101.ccr.corp.intel.com>

On Fri, May 19, 2017 at 09:07:49AM +0000, Tian, Kevin wrote:
> > From: Liu, Yi L [mailto:yi.l.liu@linux.intel.com]
> > Sent: Friday, May 19, 2017 1:24 PM
> > 
> > Hi Alex,
> > 
> > What's your opinion with Tianyu's question? Is it accepatable
> > to use VFIO API in intel_iommu emulator?
> 
> Did you actually need such translation at all? SID should be
> filled by kernel IOMMU driver based on which device is
> requested with invalidation request, regardless of which 
> guest SID is used in user space. Qemu only needs to know
> which fd corresponds to guest SID, and then initiates an
> invalidation request on that fd?

Kevin,

It actually depends on the svm binding behavior we expect in host
IOMMU driver side. If we want to have the binding per-device, this
translation is needed in Qemu either in VFIO or intel_iommu emulator.
So that the host SID could be used as a device selector when looping
devices in a group.

If we can use VFIO API directly, we also may trigger the svm bind/qi
propagation straightforwardly instead of using notifier.

Thanks,
Yi L
 
> > 
> > Thanks,
> > Yi L
> > On Fri, Apr 28, 2017 at 02:46:16PM +0800, Lan Tianyu wrote:
> > > On 2017年04月26日 18:06, Liu, Yi L wrote:
> > > > With vIOMMU exposed to guest, vIOMMU emulator needs to do
> > translation
> > > > between host and guest. e.g. a device-selective TLB flush, vIOMMU
> > > > emulator needs to replace guest SID with host SID so that to limit
> > > > the invalidation. This patch introduces a new callback
> > > > iommu_ops->record_device() to notify vIOMMU emulator to record
> > necessary
> > > > information about the assigned device.
> > >
> > > This patch is to prepare to translate guest sbdf to host sbdf.
> > >
> > > Alex:
> > > 	Could we add a new vfio API to do such translation? This will be more
> > > straight forward than storing host sbdf in the vIOMMU device model.
> > >
> > > >
> > > > Signed-off-by: Liu, Yi L <yi.l.liu@linux.intel.com>
> > > > ---
> > > >  include/exec/memory.h | 11 +++++++++++
> > > >  memory.c              | 12 ++++++++++++
> > > >  2 files changed, 23 insertions(+)
> > > >
> > > > diff --git a/include/exec/memory.h b/include/exec/memory.h
> > > > index 7bd13ab..49087ef 100644
> > > > --- a/include/exec/memory.h
> > > > +++ b/include/exec/memory.h
> > > > @@ -203,6 +203,8 @@ struct MemoryRegionIOMMUOps {
> > > >                                  IOMMUNotifierFlag new_flags);
> > > >      /* Set this up to provide customized IOMMU replay function */
> > > >      void (*replay)(MemoryRegion *iommu, IOMMUNotifier *notifier);
> > > > +    void (*record_device)(MemoryRegion *iommu,
> > > > +                          void *device_info);
> > > >  };
> > > >
> > > >  typedef struct CoalescedMemoryRange CoalescedMemoryRange;
> > > > @@ -708,6 +710,15 @@ void
> > memory_region_notify_iommu(MemoryRegion *mr,
> > > >  void memory_region_notify_one(IOMMUNotifier *notifier,
> > > >                                IOMMUTLBEntry *entry);
> > > >
> > > > +/*
> > > > + * memory_region_notify_device_record: notify IOMMU to record
> > assign
> > > > + * device.
> > > > + * @mr: the memory region to notify
> > > > + * @ device_info: device information
> > > > + */
> > > > +void memory_region_notify_device_record(MemoryRegion *mr,
> > > > +                                        void *info);
> > > > +
> > > >  /**
> > > >   * memory_region_register_iommu_notifier: register a notifier for
> > changes to
> > > >   * IOMMU translation entries.
> > > > diff --git a/memory.c b/memory.c
> > > > index 0728e62..45ef069 100644
> > > > --- a/memory.c
> > > > +++ b/memory.c
> > > > @@ -1600,6 +1600,18 @@ static void
> > memory_region_update_iommu_notify_flags(MemoryRegion *mr)
> > > >      mr->iommu_notify_flags = flags;
> > > >  }
> > > >
> > > > +void memory_region_notify_device_record(MemoryRegion *mr,
> > > > +                                        void *info)
> > > > +{
> > > > +    assert(memory_region_is_iommu(mr));
> > > > +
> > > > +    if (mr->iommu_ops->record_device) {
> > > > +        mr->iommu_ops->record_device(mr, info);
> > > > +    }
> > > > +
> > > > +    return;
> > > > +}
> > > > +
> > > >  void memory_region_register_iommu_notifier(MemoryRegion *mr,
> > > >                                             IOMMUNotifier *n)
> > > >  {
> > > >
> > >
> > >

  reply	other threads:[~2017-05-19  9:52 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-26 10:06 [RFC PATCH 00/20] Qemu: Extend intel_iommu emulator to support Shared Virtual Memory Liu, Yi L
2017-04-26 10:06 ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 01/20] intel_iommu: add "ecs" option Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 02/20] intel_iommu: exposed extended-context mode to guest Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
     [not found]   ` <1493201210-14357-3-git-send-email-yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-04-27 10:32     ` Peter Xu
2017-04-27 10:32       ` [Qemu-devel] " Peter Xu
2017-04-28  6:00       ` Lan Tianyu
2017-04-28  6:00         ` [Qemu-devel] " Lan Tianyu
     [not found]         ` <a7cd779f-2cd6-3a3f-7e73-e79a49c48961-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-04-28  9:56           ` Liu, Yi L
2017-04-28  9:56             ` [Qemu-devel] " Liu, Yi L
     [not found]       ` <20170427103221.GD1542-QJIicYCqamqhazCxEpVPD9i2O/JbrIOy@public.gmane.org>
2017-04-28  9:55         ` Liu, Yi L
2017-04-28  9:55           ` Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 03/20] intel_iommu: add "svm" option Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
     [not found]   ` <1493201210-14357-4-git-send-email-yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-04-27 10:53     ` Peter Xu
2017-04-27 10:53       ` [Qemu-devel] " Peter Xu
     [not found]       ` <20170427105317.GE1542-QJIicYCqamqhazCxEpVPD9i2O/JbrIOy@public.gmane.org>
2017-05-04 20:28         ` Alex Williamson
2017-05-04 20:28           ` [Qemu-devel] " Alex Williamson
     [not found]           ` <20170504142853.1537028c-1yVPhWWZRC1BDLzU/O5InQ@public.gmane.org>
2017-05-04 20:37             ` Raj, Ashok
2017-05-04 20:37               ` [Qemu-devel] " Raj, Ashok
2017-05-08 10:38         ` Liu, Yi L
2017-05-08 10:38           ` [Qemu-devel] " Liu, Yi L
     [not found]           ` <A2975661238FB949B60364EF0F2C25743906890D-E2R4CRU6q/6iAffOGbnezLfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2017-05-08 11:20             ` Peter Xu
2017-05-08 11:20               ` [Qemu-devel] " Peter Xu
     [not found]               ` <20170508112034.GE2820-QJIicYCqamqhazCxEpVPD9i2O/JbrIOy@public.gmane.org>
2017-05-08  8:15                 ` Liu, Yi L
2017-05-08  8:15                   ` Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 04/20] Memory: modify parameter in IOMMUNotifier func Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 05/20] VFIO: add new IOCTL for svm bind tasks Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 06/20] VFIO: add new notifier for binding PASID table Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 07/20] VFIO: check notifier flag in region_del() Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 08/20] Memory: add notifier flag check in memory_replay() Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 09/20] Memory: introduce iommu_ops->record_device Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
     [not found]   ` <1493201210-14357-10-git-send-email-yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-04-28  6:46     ` Lan Tianyu
2017-04-28  6:46       ` [Qemu-devel] " Lan Tianyu
2017-05-19  5:23       ` Liu, Yi L
2017-05-19  5:23         ` Liu, Yi L
2017-05-19  5:23         ` Liu, Yi L
2017-05-19  9:07         ` Tian, Kevin
2017-05-19  9:07           ` Tian, Kevin
2017-05-19  9:35           ` Liu, Yi L [this message]
2017-04-26 10:06 ` [RFC PATCH 10/20] VFIO: notify vIOMMU emulator when device is assigned Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 11/20] intel_iommu: provide iommu_ops->record_device Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 12/20] Memory: Add func to fire pasidt_bind notifier Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
     [not found]   ` <1493201210-14357-13-git-send-email-yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-04-26 13:50     ` Paolo Bonzini
2017-04-26 13:50       ` [Qemu-devel] " Paolo Bonzini
2017-04-27  2:37       ` Liu, Yi L
2017-04-27  6:14         ` Peter Xu
2017-04-27  6:14           ` Peter Xu
2017-04-27 10:09           ` Peter Xu
     [not found]           ` <20170427061427.GA1542-QJIicYCqamqhazCxEpVPD9i2O/JbrIOy@public.gmane.org>
2017-04-27 10:25             ` Liu, Yi L
2017-04-27 10:25               ` Liu, Yi L
2017-04-27 10:51               ` Peter Xu
2017-04-26 10:06 ` [RFC PATCH 13/20] IOMMU: add pasid_table_info for guest pasid table Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 14/20] intel_iommu: add FOR_EACH_ASSIGN_DEVICE macro Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
     [not found]   ` <1493201210-14357-15-git-send-email-yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-04-28  7:33     ` Lan Tianyu
2017-04-28  7:33       ` [Qemu-devel] " Lan Tianyu
2017-04-26 10:06 ` [RFC PATCH 15/20] intel_iommu: link whole guest pasid table to host Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 16/20] VFIO: Add notifier for propagating IOMMU TLB invalidate Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 17/20] Memory: Add func to fire TLB invalidate notifier Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 18/20] intel_iommu: propagate Extended-IOTLB invalidate to host Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 19/20] intel_iommu: propagate PASID-Cache " Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L
2017-04-26 10:06 ` [RFC PATCH 20/20] intel_iommu: propagate Ext-Device-TLB " Liu, Yi L
2017-04-26 10:06   ` [Qemu-devel] " Liu, Yi L

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=20170519093559.GB10952@sky-dev \
    --to=yi.l.liu@linux.intel.com \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@intel.com \
    --cc=jasowang@redhat.com \
    --cc=jean-philippe.brucker@arm.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=tianyu.lan@intel.com \
    --cc=yi.l.liu@intel.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.