From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: Andriy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: iommu@lists.linux-foundation.org,
LKML <linux-kernel@vger.kernel.org>,
Joerg Roedel <joro@8bytes.org>,
David Woodhouse <dwmw2@infradead.org>,
Alex Williamson <alex.williamson@redhat.com>,
Jean-Philippe Brucker <jean-philippe.brucker@arm.com>,
Yi Liu <yi.l.liu@intel.com>, "Tian, Kevin" <kevin.tian@intel.com>,
Raj Ashok <ashok.raj@intel.com>,
Christoph Hellwig <hch@infradead.org>,
Lu Baolu <baolu.lu@linux.intel.com>,
jacob.jun.pan@linux.intel.com
Subject: Re: [PATCH 00/18] Shared virtual address IOMMU and VT-d support
Date: Tue, 9 Apr 2019 09:33:04 -0700 [thread overview]
Message-ID: <20190409093304.459c0bfd@jacob-builder> (raw)
In-Reply-To: <20190409095623.GB9224@smile.fi.intel.com>
On Tue, 9 Apr 2019 12:56:23 +0300
Andriy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> On Mon, Apr 08, 2019 at 04:59:15PM -0700, Jacob Pan wrote:
> > Shared virtual address (SVA), a.k.a, Shared virtual memory (SVM) on
> > Intel platforms allow address space sharing between device DMA and
> > applications. SVA can reduce programming complexity and enhance
> > security. This series is intended to enable SVA virtualization,
> > i.e. shared guest application address space and physical device DMA
> > address. Only IOMMU portion of the changes are included in this
> > series. Additional support is needed in VFIO and QEMU (will be
> > submitted separately) to complete this functionality.
> >
> > To make incremental changes and reduce the size of each patchset.
> > This series does not inlcude support for page request services.
> >
> > In VT-d implementation, PASID table is per device and maintained in
> > the host. Guest PASID table is shadowed in VMM where virtual IOMMU
> > is emulated.
>
> This seems missed the comments I gave you internally.
>
I didn't include that since the code you commented on is from Jean and
I don't have a strong opinion on either way. I thought I explained that.
Sorry for the miscommunication.
Thanks for your review,
Jacob
> >
> > .-------------. .---------------------------.
> > | vIOMMU | | Guest process CR3, FL only|
> > | | '---------------------------'
> > .----------------/
> > | PASID Entry |--- PASID cache flush -
> > '-------------' |
> > | | V
> > | | CR3 in GPA
> > '-------------'
> > Guest
> > ------| Shadow |--------------------------|--------
> > v v v
> > Host
> > .-------------. .----------------------.
> > | pIOMMU | | Bind FL for GVA-GPA |
> > | | '----------------------'
> > .----------------/ |
> > | PASID Entry | V (Nested xlate)
> > '----------------\.------------------------------.
> > | | |SL for GPA-HPA, default domain|
> > | | '------------------------------'
> > '-------------'
> > Where:
> > - FL = First level/stage one page tables
> > - SL = Second level/stage two page tables
> >
> >
> > This work is based on collaboration with other developers on the
> > IOMMU mailing list. Notably,
> >
> > [1] [PATCH v6 00/22] SMMUv3 Nested Stage Setup by Eric Auger
> > https://lkml.org/lkml/2019/3/17/124
> >
> > [2] [RFC PATCH 2/6] drivers core: Add I/O ASID allocator by
> > Jean-Philippe Brucker
> > https://www.spinics.net/lists/iommu/msg30639.html
> >
> > [3] [RFC PATCH 0/5] iommu: APIs for paravirtual PASID allocation by
> > Lu Baolu https://lkml.org/lkml/2018/11/12/1921
> >
> > There are roughly three parts:
> > 1. Generic PASID allocator [1] with extension to support custom
> > allocator 2. IOMMU cache invalidation passdown from guest to host
> > 3. Guest PASID bind for nested translation
> >
> > All generic IOMMU APIs are reused from [1], which has a v7 just
> > published with no real impact to the patches used here. It is worth
> > noting that unlike sMMU nested stage setup, where PASID table is
> > owned by the guest, VT-d PASID table is owned by the host,
> > individual PASIDs are bound instead of the PASID table.
> >
> >
> > Jacob Pan (15):
> > ioasid: Add custom IOASID allocator
> > ioasid: Convert ioasid_idr to XArray
> > driver core: add per device iommu param
> > iommu: introduce device fault data
> > iommu: introduce device fault report API
> > iommu: Introduce attach/detach_pasid_table API
> > iommu/vt-d: Add custom allocator for IOASID
> > iommu/vt-d: Replace Intel specific PASID allocator with IOASID
> > iommu: Add guest PASID bind function
> > iommu/vt-d: Move domain helper to header
> > iommu/vt-d: Add nested translation support
> > iommu/vt-d: Add bind guest PASID support
> > iommu: add max num of cache and granu types
> > iommu/vt-d: Support flushing more translation cache types
> > iommu/vt-d: Add svm/sva invalidate function
> >
> > Jean-Philippe Brucker (1):
> > drivers core: Add I/O ASID allocator
> >
> > Liu, Yi L (1):
> > iommu: Introduce cache_invalidate API
> >
> > Lu Baolu (1):
> > iommu/vt-d: Enlightened PASID allocation
> >
> > drivers/base/Kconfig | 7 ++
> > drivers/base/Makefile | 1 +
> > drivers/base/ioasid.c | 211
> > +++++++++++++++++++++++++++++++++++++ drivers/iommu/Kconfig
> > | 1 + drivers/iommu/dmar.c | 48 +++++++++
> > drivers/iommu/intel-iommu.c | 219
> > ++++++++++++++++++++++++++++++++++++-- drivers/iommu/intel-pasid.c
> > | 191 +++++++++++++++++++++++++++++-----
> > drivers/iommu/intel-pasid.h | 24 ++++- drivers/iommu/intel-svm.c
> > | 217 +++++++++++++++++++++++++++++++++++---
> > drivers/iommu/iommu.c | 207
> > +++++++++++++++++++++++++++++++++++- include/linux/device.h
> > | 3 + include/linux/intel-iommu.h | 40 +++++--
> > include/linux/intel-svm.h | 7 ++ include/linux/ioasid.h |
> > 66 ++++++++++++ include/linux/iommu.h | 127
> > +++++++++++++++++++++++ include/uapi/linux/iommu.h | 248
> > ++++++++++++++++++++++++++++++++++++++++++++ 16 files changed, 1559
> > insertions(+), 58 deletions(-) create mode 100644
> > drivers/base/ioasid.c create mode 100644 include/linux/ioasid.h
> > create mode 100644 include/uapi/linux/iommu.h
> >
> > --
> > 2.7.4
> >
>
[Jacob Pan]
next prev parent reply other threads:[~2019-04-09 16:31 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-08 23:59 [PATCH 00/18] Shared virtual address IOMMU and VT-d support Jacob Pan
2019-04-08 23:59 ` [PATCH 01/18] drivers core: Add I/O ASID allocator Jacob Pan
2019-04-09 10:00 ` Andriy Shevchenko
2019-04-09 10:04 ` Christoph Hellwig
2019-04-09 10:30 ` Andriy Shevchenko
2019-04-09 14:53 ` Paul E. McKenney
2019-04-09 15:21 ` Andriy Shevchenko
2019-04-09 22:08 ` Paul E. McKenney
2019-04-08 23:59 ` [PATCH 02/18] ioasid: Add custom IOASID allocator Jacob Pan
2019-04-15 18:53 ` Alex Williamson
2019-04-15 22:45 ` Jacob Pan
2019-04-08 23:59 ` [PATCH 03/18] ioasid: Convert ioasid_idr to XArray Jacob Pan
2019-04-08 23:59 ` [PATCH 04/18] driver core: add per device iommu param Jacob Pan
2019-04-08 23:59 ` [PATCH 05/18] iommu: introduce device fault data Jacob Pan
2019-04-09 10:03 ` Andriy Shevchenko
2019-04-09 16:44 ` Jacob Pan
2019-04-08 23:59 ` [PATCH 06/18] iommu: introduce device fault report API Jacob Pan
2019-04-08 23:59 ` [PATCH 07/18] iommu: Introduce attach/detach_pasid_table API Jacob Pan
2019-04-08 23:59 ` [PATCH 08/18] iommu: Introduce cache_invalidate API Jacob Pan
2019-04-09 10:07 ` Andriy Shevchenko
2019-04-09 16:43 ` Jacob Pan
2019-04-09 17:37 ` Andriy Shevchenko
2019-04-10 21:21 ` Jacob Pan
2019-04-11 10:02 ` Andriy Shevchenko
2019-04-08 23:59 ` [PATCH 09/18] iommu/vt-d: Enlightened PASID allocation Jacob Pan
2019-04-09 10:08 ` Andriy Shevchenko
2019-04-09 16:34 ` Jacob Pan
2019-04-08 23:59 ` [PATCH 10/18] iommu/vt-d: Add custom allocator for IOASID Jacob Pan
2019-04-15 20:37 ` Alex Williamson
2019-04-15 23:10 ` Jacob Pan
2019-04-18 15:36 ` Jean-Philippe Brucker
2019-04-19 4:29 ` Jacob Pan
2019-04-23 10:53 ` Jean-Philippe Brucker
2019-04-16 15:30 ` Jacob Pan
2019-04-08 23:59 ` [PATCH 11/18] iommu/vt-d: Replace Intel specific PASID allocator with IOASID Jacob Pan
2019-04-08 23:59 ` [PATCH 12/18] iommu: Add guest PASID bind function Jacob Pan
2019-04-08 23:59 ` [PATCH 13/18] iommu/vt-d: Move domain helper to header Jacob Pan
2019-04-08 23:59 ` [PATCH 14/18] iommu/vt-d: Add nested translation support Jacob Pan
2019-04-08 23:59 ` [PATCH 15/18] iommu/vt-d: Add bind guest PASID support Jacob Pan
2019-04-09 14:52 ` Andriy Shevchenko
2019-04-08 23:59 ` [PATCH 16/18] iommu: add max num of cache and granu types Jacob Pan
2019-04-09 14:53 ` Andriy Shevchenko
2019-04-08 23:59 ` [PATCH 17/18] iommu/vt-d: Support flushing more translation cache types Jacob Pan
2019-04-08 23:59 ` [PATCH 18/18] iommu/vt-d: Add svm/sva invalidate function Jacob Pan
2019-04-09 14:57 ` Andriy Shevchenko
2019-04-09 17:43 ` Jacob Pan
2019-04-09 9:56 ` [PATCH 00/18] Shared virtual address IOMMU and VT-d support Andriy Shevchenko
2019-04-09 16:33 ` Jacob Pan [this message]
2019-04-15 17:25 ` Jacob Pan
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=20190409093304.459c0bfd@jacob-builder \
--to=jacob.jun.pan@linux.intel.com \
--cc=alex.williamson@redhat.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=ashok.raj@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=hch@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=jean-philippe.brucker@arm.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--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 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).