From: Jacob Pan <jacob.jun.pan@linux.intel.com> To: Jason Gunthorpe <jgg@nvidia.com> Cc: iommu@lists.linux-foundation.org, LKML <linux-kernel@vger.kernel.org>, dmaengine@vger.kernel.org, Joerg Roedel <joro@8bytes.org>, David Woodhouse <dwmw2@infradead.org>, Jean-Philippe Brucker <jean-philippe@linaro.com>, Lu Baolu <baolu.lu@linux.intel.com>, Christoph Hellwig <hch@infradead.org>, vkoul@kernel.org, robin.murphy@arm.com, will@kernel.org, Yi Liu <yi.l.liu@intel.com>, Dave Jiang <dave.jiang@intel.com>, "Tian, Kevin" <kevin.tian@intel.com>, Raj Ashok <ashok.raj@intel.com>, Eric Auger <eric.auger@redhat.com>, jacob.jun.pan@linux.intel.com Subject: Re: [PATCH v4 3/6] iommu/vt-d: Implement domain ops for attach_dev_pasid Date: Tue, 24 May 2022 09:12:35 -0700 [thread overview] Message-ID: <20220524091235.6dddfab4@jacob-builder> (raw) In-Reply-To: <20220524135135.GV1343366@nvidia.com> Hi Jason, On Tue, 24 May 2022 10:51:35 -0300, Jason Gunthorpe <jgg@nvidia.com> wrote: > On Wed, May 18, 2022 at 11:21:17AM -0700, Jacob Pan wrote: > > On VT-d platforms with scalable mode enabled, devices issue DMA requests > > with PASID need to attach PASIDs to given IOMMU domains. The attach > > operation involves the following: > > - Programming the PASID into the device's PASID table > > - Tracking device domain and the PASID relationship > > - Managing IOTLB and device TLB invalidations > > > > This patch add attach_dev_pasid functions to the default domain ops > > which is used by DMA and identity domain types. It could be extended to > > support other domain types whenever necessary. > > > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > > drivers/iommu/intel/iommu.c | 72 +++++++++++++++++++++++++++++++++++-- > > 1 file changed, 70 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > > index 1c2c92b657c7..75615c105fdf 100644 > > +++ b/drivers/iommu/intel/iommu.c > > @@ -1556,12 +1556,18 @@ static void __iommu_flush_dev_iotlb(struct > > device_domain_info *info, u64 addr, unsigned int mask) > > { > > u16 sid, qdep; > > + ioasid_t pasid; > > > > if (!info || !info->ats_enabled) > > return; > > > > sid = info->bus << 8 | info->devfn; > > qdep = info->ats_qdep; > > + pasid = iommu_get_pasid_from_domain(info->dev, > > &info->domain->domain); > > No, a simgple domain can be attached to multiple pasids, all need to > be flushed. > Here is device TLB flush, why would I want to flush PASIDs other than my own device attached? At one level up, we do have a list of device to be flushed. list_for_each_entry(info, &domain->devices, link) __iommu_flush_dev_iotlb(info, addr, mask); Note that RID2PASID is not in the pasid_array, its DEVTLB flush also needs special handling in that the device is doing DMA w/o PASID, thus not aware of RID2PASID. > This whole API isn't suitable. > > Jason Thanks, Jacob
WARNING: multiple messages have this Message-ID (diff)
From: Jacob Pan <jacob.jun.pan@linux.intel.com> To: Jason Gunthorpe <jgg@nvidia.com> Cc: vkoul@kernel.org, "Tian, Kevin" <kevin.tian@intel.com>, Dave Jiang <dave.jiang@intel.com>, Raj Ashok <ashok.raj@intel.com>, will@kernel.org, David Woodhouse <dwmw2@infradead.org>, LKML <linux-kernel@vger.kernel.org>, Christoph Hellwig <hch@infradead.org>, iommu@lists.linux-foundation.org, dmaengine@vger.kernel.org, robin.murphy@arm.com, Jean-Philippe Brucker <jean-philippe@linaro.com> Subject: Re: [PATCH v4 3/6] iommu/vt-d: Implement domain ops for attach_dev_pasid Date: Tue, 24 May 2022 09:12:35 -0700 [thread overview] Message-ID: <20220524091235.6dddfab4@jacob-builder> (raw) In-Reply-To: <20220524135135.GV1343366@nvidia.com> Hi Jason, On Tue, 24 May 2022 10:51:35 -0300, Jason Gunthorpe <jgg@nvidia.com> wrote: > On Wed, May 18, 2022 at 11:21:17AM -0700, Jacob Pan wrote: > > On VT-d platforms with scalable mode enabled, devices issue DMA requests > > with PASID need to attach PASIDs to given IOMMU domains. The attach > > operation involves the following: > > - Programming the PASID into the device's PASID table > > - Tracking device domain and the PASID relationship > > - Managing IOTLB and device TLB invalidations > > > > This patch add attach_dev_pasid functions to the default domain ops > > which is used by DMA and identity domain types. It could be extended to > > support other domain types whenever necessary. > > > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > > drivers/iommu/intel/iommu.c | 72 +++++++++++++++++++++++++++++++++++-- > > 1 file changed, 70 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > > index 1c2c92b657c7..75615c105fdf 100644 > > +++ b/drivers/iommu/intel/iommu.c > > @@ -1556,12 +1556,18 @@ static void __iommu_flush_dev_iotlb(struct > > device_domain_info *info, u64 addr, unsigned int mask) > > { > > u16 sid, qdep; > > + ioasid_t pasid; > > > > if (!info || !info->ats_enabled) > > return; > > > > sid = info->bus << 8 | info->devfn; > > qdep = info->ats_qdep; > > + pasid = iommu_get_pasid_from_domain(info->dev, > > &info->domain->domain); > > No, a simgple domain can be attached to multiple pasids, all need to > be flushed. > Here is device TLB flush, why would I want to flush PASIDs other than my own device attached? At one level up, we do have a list of device to be flushed. list_for_each_entry(info, &domain->devices, link) __iommu_flush_dev_iotlb(info, addr, mask); Note that RID2PASID is not in the pasid_array, its DEVTLB flush also needs special handling in that the device is doing DMA w/o PASID, thus not aware of RID2PASID. > This whole API isn't suitable. > > Jason Thanks, Jacob _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2022-05-24 16:09 UTC|newest] Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-18 18:21 [PATCH v4 0/6] Enable PASID for DMA API users Jacob Pan 2022-05-18 18:21 ` Jacob Pan 2022-05-18 18:21 ` [PATCH v4 1/6] iommu: Add a per domain PASID for DMA API Jacob Pan 2022-05-18 18:21 ` Jacob Pan 2022-05-19 6:50 ` Baolu Lu 2022-05-19 6:50 ` Baolu Lu 2022-05-24 13:50 ` Jason Gunthorpe 2022-05-24 13:50 ` Jason Gunthorpe via iommu 2022-05-24 15:17 ` Jacob Pan 2022-05-24 15:17 ` Jacob Pan 2022-05-30 12:22 ` Jason Gunthorpe 2022-05-30 12:22 ` Jason Gunthorpe via iommu 2022-05-31 10:12 ` Tian, Kevin 2022-05-31 10:12 ` Tian, Kevin 2022-05-31 12:45 ` Baolu Lu 2022-05-31 12:45 ` Baolu Lu 2022-05-31 16:03 ` Jason Gunthorpe 2022-05-31 16:03 ` Jason Gunthorpe via iommu 2022-05-31 17:29 ` Jacob Pan 2022-05-31 17:29 ` Jacob Pan 2022-05-31 19:05 ` Jason Gunthorpe 2022-05-31 19:05 ` Jason Gunthorpe via iommu 2022-05-31 20:44 ` Jacob Pan 2022-05-31 20:44 ` Jacob Pan 2022-06-01 1:50 ` Tian, Kevin 2022-06-01 1:50 ` Tian, Kevin 2022-06-01 1:43 ` Tian, Kevin 2022-06-01 1:43 ` Tian, Kevin 2022-06-01 9:37 ` Baolu Lu 2022-06-01 9:37 ` Baolu Lu 2022-06-01 10:05 ` Tian, Kevin 2022-06-01 10:05 ` Tian, Kevin 2022-05-18 18:21 ` [PATCH v4 2/6] iommu: Add a helper to do PASID lookup from domain Jacob Pan 2022-05-18 18:21 ` Jacob Pan 2022-05-19 6:41 ` Baolu Lu 2022-05-19 6:41 ` Baolu Lu 2022-05-19 20:10 ` Jacob Pan 2022-05-19 20:10 ` Jacob Pan 2022-05-19 6:48 ` Christoph Hellwig 2022-05-19 6:48 ` Christoph Hellwig 2022-05-20 15:18 ` Jacob Pan 2022-05-20 15:18 ` Jacob Pan 2022-05-23 7:55 ` Tian, Kevin 2022-05-23 7:55 ` Tian, Kevin 2022-05-23 9:14 ` Tian, Kevin 2022-05-23 9:14 ` Tian, Kevin 2022-05-23 18:01 ` Jacob Pan 2022-05-23 18:01 ` Jacob Pan 2022-05-18 18:21 ` [PATCH v4 3/6] iommu/vt-d: Implement domain ops for attach_dev_pasid Jacob Pan 2022-05-18 18:21 ` Jacob Pan 2022-05-24 13:51 ` Jason Gunthorpe 2022-05-24 13:51 ` Jason Gunthorpe via iommu 2022-05-24 16:12 ` Jacob Pan [this message] 2022-05-24 16:12 ` Jacob Pan 2022-05-24 18:02 ` Jason Gunthorpe 2022-05-24 18:02 ` Jason Gunthorpe via iommu 2022-05-24 20:45 ` Jacob Pan 2022-05-24 20:45 ` Jacob Pan 2022-05-24 21:10 ` Jason Gunthorpe 2022-05-24 21:10 ` Jason Gunthorpe via iommu 2022-05-18 18:21 ` [PATCH v4 4/6] iommu: Add PASID support for DMA mapping API users Jacob Pan 2022-05-18 18:21 ` Jacob Pan 2022-05-23 8:25 ` Tian, Kevin 2022-05-23 8:25 ` Tian, Kevin 2022-05-23 15:23 ` Jacob Pan 2022-05-23 15:23 ` Jacob Pan 2022-05-18 18:21 ` [PATCH v4 5/6] dmaengine: idxd: Use DMA API for in-kernel DMA with PASID Jacob Pan 2022-05-18 18:21 ` Jacob Pan 2022-05-18 18:21 ` [PATCH v4 6/6] iommu/vt-d: Delete unused SVM flag Jacob Pan 2022-05-18 18:21 ` 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=20220524091235.6dddfab4@jacob-builder \ --to=jacob.jun.pan@linux.intel.com \ --cc=ashok.raj@intel.com \ --cc=baolu.lu@linux.intel.com \ --cc=dave.jiang@intel.com \ --cc=dmaengine@vger.kernel.org \ --cc=dwmw2@infradead.org \ --cc=eric.auger@redhat.com \ --cc=hch@infradead.org \ --cc=iommu@lists.linux-foundation.org \ --cc=jean-philippe@linaro.com \ --cc=jgg@nvidia.com \ --cc=joro@8bytes.org \ --cc=kevin.tian@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=robin.murphy@arm.com \ --cc=vkoul@kernel.org \ --cc=will@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: linkBe 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.