From: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: Alex Williamson
<alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Yi L <yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Raj Ashok <ashok.raj-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
Rafael Wysocki
<rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
Subject: Re: [PATCH v4 04/22] iommu/vt-d: add bind_pasid_table function
Date: Fri, 20 Apr 2018 16:22:59 -0700 [thread overview]
Message-ID: <20180420162259.2d29659a@jacob-builder> (raw)
In-Reply-To: <20180417131047.0a9c310f-DGNDKt5SQtizQB+pC5nmwQ@public.gmane.org>
On Tue, 17 Apr 2018 13:10:47 -0600
Alex Williamson <alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> wrote:
> On Mon, 16 Apr 2018 14:48:53 -0700
> Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> wrote:
>
> > Add Intel VT-d ops to the generic iommu_bind_pasid_table API
> > functions.
> >
> > The primary use case is for direct assignment of SVM capable
> > device. Originated from emulated IOMMU in the guest, the request
> > goes through many layers (e.g. VFIO). Upon calling host IOMMU
> > driver, caller passes guest PASID table pointer (GPA) and size.
> >
> > Device context table entry is modified by Intel IOMMU specific
> > bind_pasid_table function. This will turn on nesting mode and
> > matching translation type.
> >
> > The unbind operation restores default context mapping.
> >
> > Signed-off-by: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> > Signed-off-by: Liu, Yi L <yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> > Signed-off-by: Ashok Raj <ashok.raj-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> > ---
> > drivers/iommu/intel-iommu.c | 119
> > ++++++++++++++++++++++++++++++++++++++++++
> > include/linux/dma_remapping.h | 1 + 2 files changed, 120
> > insertions(+)
> >
> > diff --git a/drivers/iommu/intel-iommu.c
> > b/drivers/iommu/intel-iommu.c index a0f81a4..d8058be 100644
> > --- a/drivers/iommu/intel-iommu.c
> > +++ b/drivers/iommu/intel-iommu.c
> > @@ -2409,6 +2409,7 @@ static struct dmar_domain
> > *dmar_insert_one_dev_info(struct intel_iommu *iommu,
> > info->ats_supported = info->pasid_supported = info->pri_supported =
> > 0; info->ats_enabled = info->pasid_enabled = info->pri_enabled = 0;
> > info->ats_qdep = 0;
> > + info->pasid_table_bound = 0;
> > info->dev = dev;
> > info->domain = domain;
> > info->iommu = iommu;
> > @@ -5132,6 +5133,7 @@ static void
> > intel_iommu_put_resv_regions(struct device *dev,
> > #ifdef CONFIG_INTEL_IOMMU_SVM
> > #define MAX_NR_PASID_BITS (20)
> > +#define MIN_NR_PASID_BITS (5)
> > static inline unsigned long intel_iommu_get_pts(struct intel_iommu
> > *iommu) {
> > /*
> > @@ -5258,6 +5260,119 @@ struct intel_iommu
> > *intel_svm_device_to_iommu(struct device *dev)
> > return iommu;
> > }
> > +
> > +static int intel_iommu_bind_pasid_table(struct iommu_domain
> > *domain,
> > + struct device *dev, struct pasid_table_config
> > *pasidt_binfo) +{
>
> Never validates pasidt_binfo->{version,bytes}
>
good catch, will do.
> > + struct intel_iommu *iommu;
> > + struct context_entry *context;
> > + struct dmar_domain *dmar_domain = to_dmar_domain(domain);
> > + struct device_domain_info *info;
> > + struct pci_dev *pdev;
> > + u8 bus, devfn, host_table_pasid_bits;
> > + u16 did, sid;
> > + int ret = 0;
> > + unsigned long flags;
> > + u64 ctx_lo;
> > +
> > + iommu = device_to_iommu(dev, &bus, &devfn);
> > + if (!iommu)
> > + return -ENODEV;
> > + /* VT-d spec section 9.4 says pasid table size is encoded
> > as 2^(x+5) */
> > + host_table_pasid_bits = intel_iommu_get_pts(iommu) +
> > MIN_NR_PASID_BITS;
> > + if (!pasidt_binfo || pasidt_binfo->pasid_bits >
> > host_table_pasid_bits ||
> > + pasidt_binfo->pasid_bits < MIN_NR_PASID_BITS) {
> > + pr_err("Invalid gPASID bits %d, host range %d -
> > %d\n",
> > + pasidt_binfo->pasid_bits,
> > + MIN_NR_PASID_BITS, host_table_pasid_bits);
> > + return -ERANGE;
> > + }
> > + if (!ecap_nest(iommu->ecap)) {
> > + dev_err(dev, "Cannot bind PASID table, no nested
> > translation\n");
> > + ret = -EINVAL;
> > + goto out;
> > + }
>
> Gratuitous use of pr_err, some of these look user reachable, for
> instance can vfio know in advance the supported widths or can the user
> trigger that pr_err at will?
Yes, the current IOMMU sysfs for vt-d does show the content of
capability registers so user could know in advance whether the nested
mode is supported. But I think we are in need of some generic interface
to enumerate IOMMU features. Here I am trying to prepare for the worst.
Are you concerned about security if user can trigger that error at
will? Sorry I didn't get the point.
> Some of these errno values are also
> maybe not as descriptive as they could be. For instance if the iommu
> doesn't support nesting, that's not a calling argument error, that's
> an unsupported device error, right?
>
your are right, that is not invalid argument. You mean use ENODEV?
> > + pdev = to_pci_dev(dev);
> > + sid = PCI_DEVID(bus, devfn);
> > + info = dev->archdata.iommu;
> > +
> > + if (!info) {
> > + dev_err(dev, "Invalid device domain info\n");
> > + ret = -EINVAL;
> > + goto out;
> > + }
> > + if (info->pasid_table_bound) {
> > + dev_err(dev, "Device PASID table already bound\n");
> > + ret = -EBUSY;
> > + goto out;
> > + }
> > + if (!info->pasid_enabled) {
> > + ret = pci_enable_pasid(pdev, info->pasid_supported
> > & ~1);
> > + if (ret) {
> > + dev_err(dev, "Failed to enable PASID\n");
> > + goto out;
> > + }
> > + }
> > + spin_lock_irqsave(&iommu->lock, flags);
> > + context = iommu_context_addr(iommu, bus, devfn, 0);
> > + if (!context_present(context)) {
> > + dev_err(dev, "Context not present\n");
> > + ret = -EINVAL;
> > + goto out_unlock;
> > + }
> > +
> > + /* Anticipate guest to use SVM and owns the first level,
> > so we turn
> > + * nested mode on
> > + */
> > + ctx_lo = context[0].lo;
> > + ctx_lo |= CONTEXT_NESTE | CONTEXT_PRS | CONTEXT_PASIDE;
> > + ctx_lo &= ~CONTEXT_TT_MASK;
> > + ctx_lo |= CONTEXT_TT_DEV_IOTLB << 2;
> > + context[0].lo = ctx_lo;
> > +
> > + /* Assign guest PASID table pointer and size order */
> > + ctx_lo = (pasidt_binfo->base_ptr & VTD_PAGE_MASK) |
> > + (pasidt_binfo->pasid_bits - MIN_NR_PASID_BITS);
>
> Where does this IOMMU API interface define that base_ptr is 4K
> aligned or the format of the PASID table? Are these all standardized
> or do they vary by host IOMMU? If they're standards, maybe we could
> note that and the spec which defines them when we declare base_ptr.
> If they're IOMMU specific then I don't understand how we'll match a
> user provided PASID table to the requirements and format of the host
> IOMMU. Thanks,
>
follow up in the other thread with Jean.
Thanks for the review.
Jacob
> Alex
>
> > + context[1].lo = ctx_lo;
> > + /* make sure context entry is updated before flushing */
> > + wmb();
> > + did = dmar_domain->iommu_did[iommu->seq_id];
> > + iommu->flush.flush_context(iommu, did,
> > + (((u16)bus) << 8) | devfn,
> > + DMA_CCMD_MASK_NOBIT,
> > + DMA_CCMD_DEVICE_INVL);
> > + iommu->flush.flush_iotlb(iommu, did, 0, 0,
> > DMA_TLB_DSI_FLUSH);
> > + info->pasid_table_bound = 1;
> > +out_unlock:
> > + spin_unlock_irqrestore(&iommu->lock, flags);
> > +out:
> > + return ret;
> > +}
> > +
> > +static void intel_iommu_unbind_pasid_table(struct iommu_domain
> > *domain,
> > + struct device *dev)
> > +{
> > + struct intel_iommu *iommu;
> > + struct dmar_domain *dmar_domain = to_dmar_domain(domain);
> > + struct device_domain_info *info;
> > + u8 bus, devfn;
> > +
> > + info = dev->archdata.iommu;
> > + if (!info) {
> > + dev_err(dev, "Invalid device domain info\n");
> > + return;
> > + }
> > + iommu = device_to_iommu(dev, &bus, &devfn);
> > + if (!iommu) {
> > + dev_err(dev, "No IOMMU for device to unbind PASID
> > table\n");
> > + return;
> > + }
> > +
> > + domain_context_clear(iommu, dev);
> > +
> > + domain_context_mapping_one(dmar_domain, iommu, bus, devfn);
> > + info->pasid_table_bound = 0;
> > +}
> > #endif /* CONFIG_INTEL_IOMMU_SVM */
> >
> > const struct iommu_ops intel_iommu_ops = {
> > @@ -5266,6 +5381,10 @@ const struct iommu_ops intel_iommu_ops = {
> > .domain_free = intel_iommu_domain_free,
> > .attach_dev = intel_iommu_attach_device,
> > .detach_dev = intel_iommu_detach_device,
> > +#ifdef CONFIG_INTEL_IOMMU_SVM
> > + .bind_pasid_table = intel_iommu_bind_pasid_table,
> > + .unbind_pasid_table =
> > intel_iommu_unbind_pasid_table, +#endif
> > .map = intel_iommu_map,
> > .unmap = intel_iommu_unmap,
> > .map_sg = default_iommu_map_sg,
> > diff --git a/include/linux/dma_remapping.h
> > b/include/linux/dma_remapping.h index 21b3e7d..db290b2 100644
> > --- a/include/linux/dma_remapping.h
> > +++ b/include/linux/dma_remapping.h
> > @@ -28,6 +28,7 @@
> >
> > #define CONTEXT_DINVE (1ULL << 8)
> > #define CONTEXT_PRS (1ULL << 9)
> > +#define CONTEXT_NESTE (1ULL << 10)
> > #define CONTEXT_PASIDE (1ULL << 11)
> >
> > struct intel_iommu;
>
[Jacob Pan]
WARNING: multiple messages have this Message-ID (diff)
From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: iommu@lists.linux-foundation.org,
LKML <linux-kernel@vger.kernel.org>,
Joerg Roedel <joro@8bytes.org>,
David Woodhouse <dwmw2@infradead.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jean-Philippe Brucker <jean-philippe.brucker@arm.com>,
Rafael Wysocki <rafael.j.wysocki@intel.com>,
"Liu, Yi L" <yi.l.liu@intel.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
Raj Ashok <ashok.raj@intel.com>,
Jean Delvare <khali@linux-fr.org>,
"Christoph Hellwig" <hch@infradead.org>,
"Lu Baolu" <baolu.lu@linux.intel.com>,
Yi L <yi.l.liu@linux.intel.com>,
jacob.jun.pan@linux.intel.com
Subject: Re: [PATCH v4 04/22] iommu/vt-d: add bind_pasid_table function
Date: Fri, 20 Apr 2018 16:22:59 -0700 [thread overview]
Message-ID: <20180420162259.2d29659a@jacob-builder> (raw)
In-Reply-To: <20180417131047.0a9c310f@w520.home>
On Tue, 17 Apr 2018 13:10:47 -0600
Alex Williamson <alex.williamson@redhat.com> wrote:
> On Mon, 16 Apr 2018 14:48:53 -0700
> Jacob Pan <jacob.jun.pan@linux.intel.com> wrote:
>
> > Add Intel VT-d ops to the generic iommu_bind_pasid_table API
> > functions.
> >
> > The primary use case is for direct assignment of SVM capable
> > device. Originated from emulated IOMMU in the guest, the request
> > goes through many layers (e.g. VFIO). Upon calling host IOMMU
> > driver, caller passes guest PASID table pointer (GPA) and size.
> >
> > Device context table entry is modified by Intel IOMMU specific
> > bind_pasid_table function. This will turn on nesting mode and
> > matching translation type.
> >
> > The unbind operation restores default context mapping.
> >
> > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
> > Signed-off-by: Liu, Yi L <yi.l.liu@linux.intel.com>
> > Signed-off-by: Ashok Raj <ashok.raj@intel.com>
> > ---
> > drivers/iommu/intel-iommu.c | 119
> > ++++++++++++++++++++++++++++++++++++++++++
> > include/linux/dma_remapping.h | 1 + 2 files changed, 120
> > insertions(+)
> >
> > diff --git a/drivers/iommu/intel-iommu.c
> > b/drivers/iommu/intel-iommu.c index a0f81a4..d8058be 100644
> > --- a/drivers/iommu/intel-iommu.c
> > +++ b/drivers/iommu/intel-iommu.c
> > @@ -2409,6 +2409,7 @@ static struct dmar_domain
> > *dmar_insert_one_dev_info(struct intel_iommu *iommu,
> > info->ats_supported = info->pasid_supported = info->pri_supported =
> > 0; info->ats_enabled = info->pasid_enabled = info->pri_enabled = 0;
> > info->ats_qdep = 0;
> > + info->pasid_table_bound = 0;
> > info->dev = dev;
> > info->domain = domain;
> > info->iommu = iommu;
> > @@ -5132,6 +5133,7 @@ static void
> > intel_iommu_put_resv_regions(struct device *dev,
> > #ifdef CONFIG_INTEL_IOMMU_SVM
> > #define MAX_NR_PASID_BITS (20)
> > +#define MIN_NR_PASID_BITS (5)
> > static inline unsigned long intel_iommu_get_pts(struct intel_iommu
> > *iommu) {
> > /*
> > @@ -5258,6 +5260,119 @@ struct intel_iommu
> > *intel_svm_device_to_iommu(struct device *dev)
> > return iommu;
> > }
> > +
> > +static int intel_iommu_bind_pasid_table(struct iommu_domain
> > *domain,
> > + struct device *dev, struct pasid_table_config
> > *pasidt_binfo) +{
>
> Never validates pasidt_binfo->{version,bytes}
>
good catch, will do.
> > + struct intel_iommu *iommu;
> > + struct context_entry *context;
> > + struct dmar_domain *dmar_domain = to_dmar_domain(domain);
> > + struct device_domain_info *info;
> > + struct pci_dev *pdev;
> > + u8 bus, devfn, host_table_pasid_bits;
> > + u16 did, sid;
> > + int ret = 0;
> > + unsigned long flags;
> > + u64 ctx_lo;
> > +
> > + iommu = device_to_iommu(dev, &bus, &devfn);
> > + if (!iommu)
> > + return -ENODEV;
> > + /* VT-d spec section 9.4 says pasid table size is encoded
> > as 2^(x+5) */
> > + host_table_pasid_bits = intel_iommu_get_pts(iommu) +
> > MIN_NR_PASID_BITS;
> > + if (!pasidt_binfo || pasidt_binfo->pasid_bits >
> > host_table_pasid_bits ||
> > + pasidt_binfo->pasid_bits < MIN_NR_PASID_BITS) {
> > + pr_err("Invalid gPASID bits %d, host range %d -
> > %d\n",
> > + pasidt_binfo->pasid_bits,
> > + MIN_NR_PASID_BITS, host_table_pasid_bits);
> > + return -ERANGE;
> > + }
> > + if (!ecap_nest(iommu->ecap)) {
> > + dev_err(dev, "Cannot bind PASID table, no nested
> > translation\n");
> > + ret = -EINVAL;
> > + goto out;
> > + }
>
> Gratuitous use of pr_err, some of these look user reachable, for
> instance can vfio know in advance the supported widths or can the user
> trigger that pr_err at will?
Yes, the current IOMMU sysfs for vt-d does show the content of
capability registers so user could know in advance whether the nested
mode is supported. But I think we are in need of some generic interface
to enumerate IOMMU features. Here I am trying to prepare for the worst.
Are you concerned about security if user can trigger that error at
will? Sorry I didn't get the point.
> Some of these errno values are also
> maybe not as descriptive as they could be. For instance if the iommu
> doesn't support nesting, that's not a calling argument error, that's
> an unsupported device error, right?
>
your are right, that is not invalid argument. You mean use ENODEV?
> > + pdev = to_pci_dev(dev);
> > + sid = PCI_DEVID(bus, devfn);
> > + info = dev->archdata.iommu;
> > +
> > + if (!info) {
> > + dev_err(dev, "Invalid device domain info\n");
> > + ret = -EINVAL;
> > + goto out;
> > + }
> > + if (info->pasid_table_bound) {
> > + dev_err(dev, "Device PASID table already bound\n");
> > + ret = -EBUSY;
> > + goto out;
> > + }
> > + if (!info->pasid_enabled) {
> > + ret = pci_enable_pasid(pdev, info->pasid_supported
> > & ~1);
> > + if (ret) {
> > + dev_err(dev, "Failed to enable PASID\n");
> > + goto out;
> > + }
> > + }
> > + spin_lock_irqsave(&iommu->lock, flags);
> > + context = iommu_context_addr(iommu, bus, devfn, 0);
> > + if (!context_present(context)) {
> > + dev_err(dev, "Context not present\n");
> > + ret = -EINVAL;
> > + goto out_unlock;
> > + }
> > +
> > + /* Anticipate guest to use SVM and owns the first level,
> > so we turn
> > + * nested mode on
> > + */
> > + ctx_lo = context[0].lo;
> > + ctx_lo |= CONTEXT_NESTE | CONTEXT_PRS | CONTEXT_PASIDE;
> > + ctx_lo &= ~CONTEXT_TT_MASK;
> > + ctx_lo |= CONTEXT_TT_DEV_IOTLB << 2;
> > + context[0].lo = ctx_lo;
> > +
> > + /* Assign guest PASID table pointer and size order */
> > + ctx_lo = (pasidt_binfo->base_ptr & VTD_PAGE_MASK) |
> > + (pasidt_binfo->pasid_bits - MIN_NR_PASID_BITS);
>
> Where does this IOMMU API interface define that base_ptr is 4K
> aligned or the format of the PASID table? Are these all standardized
> or do they vary by host IOMMU? If they're standards, maybe we could
> note that and the spec which defines them when we declare base_ptr.
> If they're IOMMU specific then I don't understand how we'll match a
> user provided PASID table to the requirements and format of the host
> IOMMU. Thanks,
>
follow up in the other thread with Jean.
Thanks for the review.
Jacob
> Alex
>
> > + context[1].lo = ctx_lo;
> > + /* make sure context entry is updated before flushing */
> > + wmb();
> > + did = dmar_domain->iommu_did[iommu->seq_id];
> > + iommu->flush.flush_context(iommu, did,
> > + (((u16)bus) << 8) | devfn,
> > + DMA_CCMD_MASK_NOBIT,
> > + DMA_CCMD_DEVICE_INVL);
> > + iommu->flush.flush_iotlb(iommu, did, 0, 0,
> > DMA_TLB_DSI_FLUSH);
> > + info->pasid_table_bound = 1;
> > +out_unlock:
> > + spin_unlock_irqrestore(&iommu->lock, flags);
> > +out:
> > + return ret;
> > +}
> > +
> > +static void intel_iommu_unbind_pasid_table(struct iommu_domain
> > *domain,
> > + struct device *dev)
> > +{
> > + struct intel_iommu *iommu;
> > + struct dmar_domain *dmar_domain = to_dmar_domain(domain);
> > + struct device_domain_info *info;
> > + u8 bus, devfn;
> > +
> > + info = dev->archdata.iommu;
> > + if (!info) {
> > + dev_err(dev, "Invalid device domain info\n");
> > + return;
> > + }
> > + iommu = device_to_iommu(dev, &bus, &devfn);
> > + if (!iommu) {
> > + dev_err(dev, "No IOMMU for device to unbind PASID
> > table\n");
> > + return;
> > + }
> > +
> > + domain_context_clear(iommu, dev);
> > +
> > + domain_context_mapping_one(dmar_domain, iommu, bus, devfn);
> > + info->pasid_table_bound = 0;
> > +}
> > #endif /* CONFIG_INTEL_IOMMU_SVM */
> >
> > const struct iommu_ops intel_iommu_ops = {
> > @@ -5266,6 +5381,10 @@ const struct iommu_ops intel_iommu_ops = {
> > .domain_free = intel_iommu_domain_free,
> > .attach_dev = intel_iommu_attach_device,
> > .detach_dev = intel_iommu_detach_device,
> > +#ifdef CONFIG_INTEL_IOMMU_SVM
> > + .bind_pasid_table = intel_iommu_bind_pasid_table,
> > + .unbind_pasid_table =
> > intel_iommu_unbind_pasid_table, +#endif
> > .map = intel_iommu_map,
> > .unmap = intel_iommu_unmap,
> > .map_sg = default_iommu_map_sg,
> > diff --git a/include/linux/dma_remapping.h
> > b/include/linux/dma_remapping.h index 21b3e7d..db290b2 100644
> > --- a/include/linux/dma_remapping.h
> > +++ b/include/linux/dma_remapping.h
> > @@ -28,6 +28,7 @@
> >
> > #define CONTEXT_DINVE (1ULL << 8)
> > #define CONTEXT_PRS (1ULL << 9)
> > +#define CONTEXT_NESTE (1ULL << 10)
> > #define CONTEXT_PASIDE (1ULL << 11)
> >
> > struct intel_iommu;
>
[Jacob Pan]
next prev parent reply other threads:[~2018-04-20 23:22 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-16 21:48 [PATCH v4 00/22] IOMMU and VT-d driver support for Shared Virtual Address (SVA) Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 09/22] iommu/vt-d: add svm/sva invalidate function Jacob Pan
2018-04-16 21:48 ` Jacob Pan
[not found] ` <1523915351-54415-10-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-17 19:10 ` Alex Williamson
2018-04-17 19:10 ` Alex Williamson
[not found] ` <20180417131045.7635a63d-DGNDKt5SQtizQB+pC5nmwQ@public.gmane.org>
2018-04-20 22:36 ` Jacob Pan
2018-04-20 22:36 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 10/22] iommu: introduce device fault data Jacob Pan
2018-04-16 21:48 ` Jacob Pan
[not found] ` <1523915351-54415-11-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-23 10:11 ` Jean-Philippe Brucker
2018-04-23 10:11 ` Jean-Philippe Brucker
[not found] ` <20180423101140.GA38106-U/l+663ovUtSq9BJjBFyUp/QNRX+jHPU@public.gmane.org>
2018-04-23 11:54 ` Jacob Pan
2018-04-23 11:54 ` Jacob Pan
2018-05-20 8:17 ` Liu, Yi L
[not found] ` <A2975661238FB949B60364EF0F2C257439BF3E05-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-05-21 23:16 ` Jacob Pan
2018-05-21 23:16 ` Jacob Pan
[not found] ` <1523915351-54415-1-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-16 21:48 ` [PATCH v4 01/22] iommu: introduce bind_pasid_table API function Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 02/22] iommu/vt-d: move device_domain_info to header Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 03/22] iommu/vt-d: add a flag for pasid table bound status Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 04/22] iommu/vt-d: add bind_pasid_table function Jacob Pan
2018-04-16 21:48 ` Jacob Pan
[not found] ` <1523915351-54415-5-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-17 19:10 ` Alex Williamson
2018-04-17 19:10 ` Alex Williamson
[not found] ` <20180417131047.0a9c310f-DGNDKt5SQtizQB+pC5nmwQ@public.gmane.org>
2018-04-20 18:25 ` Jean-Philippe Brucker
2018-04-20 18:25 ` Jean-Philippe Brucker
[not found] ` <AM4PR0802MB2369F739C91B630CA99B3D3BA3B40-Gx+wUQKpQCVHkdfAM7dXeUdOKmgb957onBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2018-04-20 23:42 ` Jacob Pan
2018-04-20 23:42 ` Jacob Pan
2018-05-29 20:09 ` Alex Williamson
2018-05-29 20:09 ` Alex Williamson
[not found] ` <20180529140915.1f174689-DGNDKt5SQtizQB+pC5nmwQ@public.gmane.org>
2018-05-30 1:41 ` Tian, Kevin
2018-05-30 1:41 ` Tian, Kevin
[not found] ` <AADFC41AFE54684AB9EE6CBC0274A5D1911E59C4-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-05-30 3:17 ` Alex Williamson
2018-05-30 3:17 ` Alex Williamson
[not found] ` <20180529211746.74f1dd23-DGNDKt5SQtizQB+pC5nmwQ@public.gmane.org>
2018-05-30 3:45 ` Tian, Kevin
2018-05-30 3:45 ` Tian, Kevin
[not found] ` <AADFC41AFE54684AB9EE6CBC0274A5D1911E5F06-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2018-05-30 11:53 ` Jean-Philippe Brucker
2018-05-30 11:53 ` Jean-Philippe Brucker
[not found] ` <a07a0a0a-ebdd-c81a-7ed6-cff19e6078d7-5wv7dgnIgG8@public.gmane.org>
2018-05-30 19:52 ` Jacob Pan
2018-05-30 19:52 ` Jacob Pan
2018-05-31 9:09 ` Jean-Philippe Brucker
2018-05-31 9:09 ` Jean-Philippe Brucker
2018-06-05 17:32 ` Jacob Pan
2018-06-06 11:20 ` Jean-Philippe Brucker
2018-06-06 11:20 ` Jean-Philippe Brucker
2018-06-06 21:22 ` Jacob Pan
2018-06-07 13:21 ` Jean-Philippe Brucker
2018-04-20 23:22 ` Jacob Pan [this message]
2018-04-20 23:22 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 05/22] iommu: introduce iommu invalidate API function Jacob Pan
2018-04-16 21:48 ` Jacob Pan
[not found] ` <1523915351-54415-6-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-20 18:19 ` Jean-Philippe Brucker
2018-04-20 18:19 ` Jean-Philippe Brucker
[not found] ` <20180420181951.GA50099-U/l+663ovUtSq9BJjBFyUp/QNRX+jHPU@public.gmane.org>
2018-04-23 20:43 ` Jacob Pan
2018-04-23 20:43 ` Jacob Pan
2018-04-27 18:07 ` Jean-Philippe Brucker
2018-04-27 18:07 ` Jean-Philippe Brucker
[not found] ` <72ee47c4-55fa-4ff1-d94e-cc26203e3eda-5wv7dgnIgG8@public.gmane.org>
2018-04-28 2:41 ` Tian, Kevin
2018-04-28 2:41 ` Tian, Kevin
2018-05-01 22:58 ` Jacob Pan
2018-05-01 22:58 ` Jacob Pan
2018-05-02 9:31 ` Jean-Philippe Brucker
2018-05-02 9:31 ` Jean-Philippe Brucker
[not found] ` <b12bcd35-9472-83ed-a26f-e5be3794e2d2-5wv7dgnIgG8@public.gmane.org>
2018-05-04 4:46 ` Jacob Pan
2018-05-04 4:46 ` Jacob Pan
2018-05-04 18:07 ` Jacob Pan
2018-05-04 18:07 ` Jacob Pan
2018-05-08 10:35 ` Jean-Philippe Brucker
2018-05-08 10:35 ` Jean-Philippe Brucker
[not found] ` <ef462e73-01e3-d581-cf91-3e012a337c61-5wv7dgnIgG8@public.gmane.org>
2018-05-09 12:55 ` Jacob Pan
2018-05-09 12:55 ` Jacob Pan
2018-05-05 22:19 ` Jerry Snitselaar
2018-05-05 22:19 ` Jerry Snitselaar
2018-05-07 15:41 ` Jacob Pan
2018-05-07 15:41 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 06/22] iommu/vt-d: add definitions for PFSID Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 07/22] iommu/vt-d: fix dev iotlb pfsid use Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:48 ` [PATCH v4 08/22] iommu/vt-d: support flushing more translation cache types Jacob Pan
2018-04-16 21:48 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 11/22] driver core: add per device iommu param Jacob Pan
2018-04-16 21:49 ` Jacob Pan
[not found] ` <1523915351-54415-12-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-23 10:26 ` Greg Kroah-Hartman
2018-04-23 10:26 ` Greg Kroah-Hartman
2018-04-16 21:49 ` [PATCH v4 12/22] iommu: introduce device fault report API Jacob Pan
2018-04-16 21:49 ` Jacob Pan
[not found] ` <1523915351-54415-13-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-23 11:30 ` Jean-Philippe Brucker
2018-04-23 11:30 ` Jean-Philippe Brucker
[not found] ` <20180423113013.GB38106-U/l+663ovUtSq9BJjBFyUp/QNRX+jHPU@public.gmane.org>
2018-04-24 18:29 ` Jacob Pan
2018-04-24 18:29 ` Jacob Pan
2018-04-30 16:53 ` Jean-Philippe Brucker
2018-04-30 16:53 ` Jean-Philippe Brucker
2018-04-30 18:54 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 13/22] iommu: introduce page response function Jacob Pan
2018-04-16 21:49 ` Jacob Pan
[not found] ` <1523915351-54415-14-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-23 11:47 ` Jean-Philippe Brucker
2018-04-23 11:47 ` Jean-Philippe Brucker
[not found] ` <AM4PR0802MB23698019B80CCE6B083D1448A3890-Gx+wUQKpQCVHkdfAM7dXeUdOKmgb957onBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2018-04-23 12:16 ` Jacob Pan
2018-04-23 12:16 ` Jacob Pan
2018-04-23 15:50 ` Jean-Philippe Brucker
2018-04-23 15:50 ` Jean-Philippe Brucker
2018-04-16 21:49 ` [PATCH v4 14/22] iommu: handle page response timeout Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-23 15:36 ` Jean-Philippe Brucker
[not found] ` <20180423153622.GC38106-U/l+663ovUtSq9BJjBFyUp/QNRX+jHPU@public.gmane.org>
2018-04-25 15:37 ` Jacob Pan
2018-04-25 15:37 ` Jacob Pan
2018-04-30 10:58 ` Jean-Philippe Brucker
2018-04-30 10:58 ` Jean-Philippe Brucker
[not found] ` <e98a1385-9e55-c021-4e89-7d07701f4b84-5wv7dgnIgG8@public.gmane.org>
2018-04-30 17:54 ` Jacob Pan
2018-04-30 17:54 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 15/22] iommu/config: add build dependency for dmar Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 16/22] iommu/vt-d: report non-recoverable faults to device Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 17/22] iommu/intel-svm: report device page request Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 18/22] iommu/intel-svm: replace dev ops with fault report API Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 19/22] iommu/intel-svm: do not flush iotlb for viommu Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 20/22] iommu/vt-d: add intel iommu page response function Jacob Pan
2018-04-16 21:49 ` Jacob Pan
2018-04-16 21:49 ` [PATCH v4 21/22] trace/iommu: add sva trace events Jacob Pan
2018-04-16 21:49 ` [PATCH v4 22/22] iommu: use sva invalidate and device fault trace event Jacob Pan
-- strict thread matches above, loose matches on Subject: below --
2018-03-23 3:11 [PATCH v4 00/22] IOMMU and VT-d driver support for Shared Virtual Address (SVA) Jacob Pan
[not found] ` <1521774734-48433-1-git-send-email-jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-03-23 3:11 ` [PATCH v4 04/22] iommu/vt-d: add bind_pasid_table function Jacob Pan
2018-03-23 3:11 ` 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=20180420162259.2d29659a@jacob-builder \
--to=jacob.jun.pan-vuqaysv1563yd54fqh9/ca@public.gmane.org \
--cc=alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=ashok.raj-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=yi.l.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.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.