From: Jason Gunthorpe via iommu <iommu@lists.linux-foundation.org>
To: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: "Tian, Kevin" <kevin.tian@intel.com>,
Tony Luck <tony.luck@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Raj Ashok <ashok.raj@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Kumar, Sanjay K" <sanjay.k.kumar@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
Christoph Hellwig <hch@infradead.org>,
iommu@lists.linux-foundation.org,
Jacob Pan <jacob.jun.pan@intel.com>,
Barry Song <21cnbao@gmail.com>,
Dan Williams <dan.j.williams@intel.com>,
Jean-Philippe Brucker <jean-philippe@linaro.com>,
"Zanussi, Tom" <tom.zanussi@intel.com>
Subject: Re: [PATCH 0/4] Enable PASID for DMA API users
Date: Wed, 8 Dec 2021 09:10:38 -0400 [thread overview]
Message-ID: <20211208131038.GQ6385@nvidia.com> (raw)
In-Reply-To: <1638884834-83028-1-git-send-email-jacob.jun.pan@linux.intel.com>
On Tue, Dec 07, 2021 at 05:47:10AM -0800, Jacob Pan wrote:
> Modern accelerators such as Intel's Data Streaming Accelerator (DSA) can
> perform DMA requests with PASID, which is a finer granularity than the
> device's requester ID(RID). In fact, work submissions on DSA shared work
> queues require PASID.
Lets use plain langauge please:
DSA HW cannot do DMA from its RID, so always requires a PASID, even
for kernel controlled DMA.
To allow it to use the DMA API we must associate a PASID with the
iommu_domain that the DMA API is already using for the device's RID.
This way DMA tagged with the PASID will be treated exactly the same as
DMA originating from the RID.
> DMA mapping API is the de facto standard for in-kernel DMA. However, it
> operates on a per device/RID basis which is not PASID-aware.
>
> This patch introduces the following driver facing API that enables DMA API
> PASID usage: ioasid_t iommu_enable_pasid_dma(struct device *dev);
This is the wrong API, IMHO
It should be more like
int iommu_get_dma_api_pasid(struct device *dev, ioasid_t *pasid);
void iommu_destroy_dma_api_pasid(struct device *dev);
> A PASID field is added to struct device for the purposes of storing kernel
> DMA PASID and flushing device IOTLBs. A separate use case in interrupt
And this really should not be touching the struct device at all.
At worst the PASID should be stored in the iommu_group.
> message store (IMS) also hinted adding a PASID field to struct device.
> https://lore.kernel.org/all/87pmx73tfw.ffs@nanos.tec.linutronix.de/
> IMS virtualization and DMA API does not overlap.
This is under debate, I'm skeptical it will happen considering the new
direction for this work.
> Once enabled, device drivers can continue to use DMA APIs as-is. There is
> no difference in terms of mapping in dma_handle between without PASID and
> with PASID. The DMA mapping performed by IOMMU will be identical for both
> requests with and without PASID (legacy), let it be IOVA or PA in case of
> pass-through.
In other words all this does is connect the PASID to the normal
DMA-API owned iommu_domain.
Jason
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: iommu@lists.linux-foundation.org,
LKML <linux-kernel@vger.kernel.org>,
Joerg Roedel <joro@8bytes.org>,
Christoph Hellwig <hch@infradead.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jean-Philippe Brucker <jean-philippe@linaro.com>,
Jacob Pan <jacob.jun.pan@intel.com>,
Lu Baolu <baolu.lu@linux.intel.com>,
Raj Ashok <ashok.raj@intel.com>,
"Kumar, Sanjay K" <sanjay.k.kumar@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Tony Luck <tony.luck@intel.com>, Yi Liu <yi.l.liu@intel.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
Barry Song <21cnbao@gmail.com>,
"Zanussi, Tom" <tom.zanussi@intel.com>,
Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH 0/4] Enable PASID for DMA API users
Date: Wed, 8 Dec 2021 09:10:38 -0400 [thread overview]
Message-ID: <20211208131038.GQ6385@nvidia.com> (raw)
In-Reply-To: <1638884834-83028-1-git-send-email-jacob.jun.pan@linux.intel.com>
On Tue, Dec 07, 2021 at 05:47:10AM -0800, Jacob Pan wrote:
> Modern accelerators such as Intel's Data Streaming Accelerator (DSA) can
> perform DMA requests with PASID, which is a finer granularity than the
> device's requester ID(RID). In fact, work submissions on DSA shared work
> queues require PASID.
Lets use plain langauge please:
DSA HW cannot do DMA from its RID, so always requires a PASID, even
for kernel controlled DMA.
To allow it to use the DMA API we must associate a PASID with the
iommu_domain that the DMA API is already using for the device's RID.
This way DMA tagged with the PASID will be treated exactly the same as
DMA originating from the RID.
> DMA mapping API is the de facto standard for in-kernel DMA. However, it
> operates on a per device/RID basis which is not PASID-aware.
>
> This patch introduces the following driver facing API that enables DMA API
> PASID usage: ioasid_t iommu_enable_pasid_dma(struct device *dev);
This is the wrong API, IMHO
It should be more like
int iommu_get_dma_api_pasid(struct device *dev, ioasid_t *pasid);
void iommu_destroy_dma_api_pasid(struct device *dev);
> A PASID field is added to struct device for the purposes of storing kernel
> DMA PASID and flushing device IOTLBs. A separate use case in interrupt
And this really should not be touching the struct device at all.
At worst the PASID should be stored in the iommu_group.
> message store (IMS) also hinted adding a PASID field to struct device.
> https://lore.kernel.org/all/87pmx73tfw.ffs@nanos.tec.linutronix.de/
> IMS virtualization and DMA API does not overlap.
This is under debate, I'm skeptical it will happen considering the new
direction for this work.
> Once enabled, device drivers can continue to use DMA APIs as-is. There is
> no difference in terms of mapping in dma_handle between without PASID and
> with PASID. The DMA mapping performed by IOMMU will be identical for both
> requests with and without PASID (legacy), let it be IOVA or PA in case of
> pass-through.
In other words all this does is connect the PASID to the normal
DMA-API owned iommu_domain.
Jason
next prev parent reply other threads:[~2021-12-08 13:10 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-07 13:47 [PATCH 0/4] Enable PASID for DMA API users Jacob Pan
2021-12-07 13:47 ` Jacob Pan
2021-12-07 13:47 ` [PATCH 1/4] ioasid: Reserve a global PASID for in-kernel DMA Jacob Pan
2021-12-07 13:47 ` Jacob Pan
2021-12-09 11:03 ` Jean-Philippe Brucker
2021-12-09 11:03 ` Jean-Philippe Brucker
2021-12-09 18:14 ` Jacob Pan
2021-12-09 18:14 ` Jacob Pan
2021-12-10 9:06 ` Jean-Philippe Brucker
2021-12-10 9:06 ` Jean-Philippe Brucker
2021-12-10 12:31 ` Jason Gunthorpe via iommu
2021-12-10 12:31 ` Jason Gunthorpe
2021-12-10 18:05 ` Jacob Pan
2021-12-10 18:05 ` Jacob Pan
2021-12-11 8:39 ` Tian, Kevin
2021-12-11 8:39 ` Tian, Kevin
2021-12-12 23:34 ` Jason Gunthorpe via iommu
2021-12-12 23:34 ` Jason Gunthorpe
2021-12-07 13:47 ` [PATCH 2/4] iommu: Add PASID support for DMA mapping API users Jacob Pan
2021-12-07 13:47 ` Jacob Pan
2021-12-08 2:31 ` Lu Baolu
2021-12-08 2:31 ` Lu Baolu
2021-12-08 18:49 ` Jacob Pan
2021-12-08 18:49 ` Jacob Pan
2021-12-09 1:56 ` Tian, Kevin
2021-12-09 1:56 ` Tian, Kevin
2021-12-09 2:21 ` Lu Baolu
2021-12-09 2:21 ` Lu Baolu
2021-12-09 16:32 ` Jacob Pan
2021-12-09 16:32 ` Jacob Pan
2021-12-09 16:57 ` Raj, Ashok
2021-12-09 16:57 ` Raj, Ashok
2021-12-09 17:34 ` Jacob Pan
2021-12-09 17:34 ` Jacob Pan
2021-12-07 13:47 ` [PATCH 3/4] iommu/vt-d: Support PASID DMA for in-kernel usage Jacob Pan
2021-12-07 13:47 ` Jacob Pan
2021-12-08 13:22 ` Jason Gunthorpe via iommu
2021-12-08 13:22 ` Jason Gunthorpe
2021-12-08 19:16 ` Jacob Pan
2021-12-08 19:16 ` Jacob Pan
2021-12-09 2:32 ` Lu Baolu
2021-12-09 2:32 ` Lu Baolu
2021-12-09 23:21 ` Jacob Pan
2021-12-09 23:21 ` Jacob Pan
2021-12-09 23:41 ` Jason Gunthorpe via iommu
2021-12-09 23:41 ` Jason Gunthorpe
2021-12-10 6:46 ` Lu Baolu
2021-12-10 6:46 ` Lu Baolu
2021-12-10 17:50 ` Jacob Pan
2021-12-10 17:50 ` Jacob Pan
2021-12-10 17:48 ` Jason Gunthorpe via iommu
2021-12-10 17:48 ` Jason Gunthorpe
2021-12-10 18:18 ` Jacob Pan
2021-12-10 18:18 ` Jacob Pan
2021-12-10 18:53 ` Jason Gunthorpe via iommu
2021-12-10 18:53 ` Jason Gunthorpe
2021-12-07 13:47 ` [PATCH 4/4] dmaengine: idxd: Use DMA API for in-kernel DMA with PASID Jacob Pan
2021-12-07 13:47 ` Jacob Pan
2021-12-07 23:27 ` Dave Jiang
2021-12-07 23:27 ` Dave Jiang
2021-12-08 4:56 ` Vinod Koul
2021-12-08 4:56 ` Vinod Koul
2021-12-08 17:36 ` Jacob Pan
2021-12-08 17:36 ` Jacob Pan
2021-12-08 13:13 ` Jason Gunthorpe via iommu
2021-12-08 13:13 ` Jason Gunthorpe
2021-12-08 15:35 ` Dave Jiang
2021-12-08 15:35 ` Dave Jiang
2021-12-08 17:51 ` Jason Gunthorpe via iommu
2021-12-08 17:51 ` Jason Gunthorpe
2021-12-09 1:48 ` Tian, Kevin
2021-12-09 1:48 ` Tian, Kevin
2021-12-09 19:18 ` Jacob Pan
2021-12-09 19:18 ` Jacob Pan
2021-12-08 19:55 ` Jacob Pan
2021-12-08 19:55 ` Jacob Pan
2021-12-08 20:30 ` Jason Gunthorpe via iommu
2021-12-08 20:30 ` Jason Gunthorpe
2021-12-08 21:59 ` Jacob Pan
2021-12-08 21:59 ` Jacob Pan
2021-12-08 23:39 ` Jason Gunthorpe via iommu
2021-12-08 23:39 ` Jason Gunthorpe
2021-12-09 0:12 ` Dave Jiang
2021-12-09 0:12 ` Dave Jiang
2021-12-09 2:06 ` Tian, Kevin
2021-12-09 2:06 ` Tian, Kevin
2021-12-08 18:37 ` kernel test robot
2021-12-08 18:37 ` kernel test robot
2021-12-08 18:37 ` kernel test robot
2021-12-08 13:10 ` Jason Gunthorpe via iommu [this message]
2021-12-08 13:10 ` [PATCH 0/4] Enable PASID for DMA API users Jason Gunthorpe
2021-12-08 18:15 ` Jacob Pan
2021-12-08 18:15 ` 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=20211208131038.GQ6385@nvidia.com \
--to=iommu@lists.linux-foundation.org \
--cc=21cnbao@gmail.com \
--cc=ashok.raj@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=jacob.jun.pan@intel.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=jean-philippe@linaro.com \
--cc=jgg@nvidia.com \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sanjay.k.kumar@intel.com \
--cc=tom.zanussi@intel.com \
--cc=tony.luck@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.