All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Jiang <dave.jiang@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>,
	Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: "Tian, Kevin" <kevin.tian@intel.com>,
	Tony Luck <tony.luck@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 4/4] dmaengine: idxd: Use DMA API for in-kernel DMA with PASID
Date: Wed, 8 Dec 2021 17:12:23 -0700	[thread overview]
Message-ID: <5fec4e7e-be37-193b-b4ab-dd1bbdb589d1@intel.com> (raw)
In-Reply-To: <20211208233936.GI6385@nvidia.com>


On 12/8/2021 4:39 PM, Jason Gunthorpe wrote:
> On Wed, Dec 08, 2021 at 01:59:45PM -0800, Jacob Pan wrote:
>> Hi Jason,
>>
>> On Wed, 8 Dec 2021 16:30:22 -0400, Jason Gunthorpe <jgg@nvidia.com> wrote:
>>
>>> On Wed, Dec 08, 2021 at 11:55:16AM -0800, Jacob Pan wrote:
>>>> Hi Jason,
>>>>
>>>> On Wed, 8 Dec 2021 09:13:58 -0400, Jason Gunthorpe <jgg@nvidia.com>
>>>> wrote:
>>>>>> This patch utilizes iommu_enable_pasid_dma() to enable DSA to
>>>>>> perform DMA requests with PASID under the same mapping managed by
>>>>>> DMA mapping API. In addition, SVA-related bits for kernel DMA are
>>>>>> removed. As a result, DSA users shall use DMA mapping API to obtain
>>>>>> DMA handles instead of using kernel virtual addresses.
>>>>> Er, shouldn't this be adding dma_map/etc type calls?
>>>>>
>>>>> You can't really say a driver is using the DMA API without actually
>>>>> calling the DMA API..
>>>> The IDXD driver is not aware of addressing mode, it is up to the user of
>>>> dmaengine API to prepare the buffer mappings. Here we only set up the
>>>> PASID such that it can be picked up during DMA work submission. I
>>>> tested with /drivers/dma/dmatest.c which does dma_map_page(),
>>>> map_single etc. also tested with other pieces under development.
>>> Ignoring the work, doesn't IDXD prepare the DMA queues itself, don't
>>> those need the DMA API?
>>>
>> Do you mean wq completion record address? It is already using DMA API.
>> 	wq->compls = dma_alloc_coherent(dev, wq->compls_size,
>> &wq->compls_addr, GFP_KERNEL);
>> 	desc->compl_dma = wq->compls_addr + idxd->data->compl_size * i;
> I would have expected something on the queue submission side too?

DSA is different than typical DMA devices in the past. Instead of a 
software descriptor ring where the device DMA to fetch the descriptors 
after the software ringing a doorbell or writing a head index, the 
descriptors are submitted directly to the device via a CPU instruction 
(i.e. MOVDIR64B or ENQCMD(S)). The CPU takes the KVA of the 64B 
descriptor and writes to the device atomically. No DMA mapping is 
necessary in this case.


>
>>> the same thing, they do not use the same IOVA's. Did you test this
>>> with bypass mode off?
>> Yes with dmatest. IOVA is the default, I separated out the SATC patch which
>> will put internal accelerators in bypass mode. It can also be verified by
>> iommu debugfs dump of DMA PASID (2) and PASID 0 (RIDPASID) are pointing to
>> he same default domain. e.g
> Well, OK then..
>
> 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: Dave Jiang <dave.jiang@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>,
	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>,
	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 4/4] dmaengine: idxd: Use DMA API for in-kernel DMA with PASID
Date: Wed, 8 Dec 2021 17:12:23 -0700	[thread overview]
Message-ID: <5fec4e7e-be37-193b-b4ab-dd1bbdb589d1@intel.com> (raw)
In-Reply-To: <20211208233936.GI6385@nvidia.com>


On 12/8/2021 4:39 PM, Jason Gunthorpe wrote:
> On Wed, Dec 08, 2021 at 01:59:45PM -0800, Jacob Pan wrote:
>> Hi Jason,
>>
>> On Wed, 8 Dec 2021 16:30:22 -0400, Jason Gunthorpe <jgg@nvidia.com> wrote:
>>
>>> On Wed, Dec 08, 2021 at 11:55:16AM -0800, Jacob Pan wrote:
>>>> Hi Jason,
>>>>
>>>> On Wed, 8 Dec 2021 09:13:58 -0400, Jason Gunthorpe <jgg@nvidia.com>
>>>> wrote:
>>>>>> This patch utilizes iommu_enable_pasid_dma() to enable DSA to
>>>>>> perform DMA requests with PASID under the same mapping managed by
>>>>>> DMA mapping API. In addition, SVA-related bits for kernel DMA are
>>>>>> removed. As a result, DSA users shall use DMA mapping API to obtain
>>>>>> DMA handles instead of using kernel virtual addresses.
>>>>> Er, shouldn't this be adding dma_map/etc type calls?
>>>>>
>>>>> You can't really say a driver is using the DMA API without actually
>>>>> calling the DMA API..
>>>> The IDXD driver is not aware of addressing mode, it is up to the user of
>>>> dmaengine API to prepare the buffer mappings. Here we only set up the
>>>> PASID such that it can be picked up during DMA work submission. I
>>>> tested with /drivers/dma/dmatest.c which does dma_map_page(),
>>>> map_single etc. also tested with other pieces under development.
>>> Ignoring the work, doesn't IDXD prepare the DMA queues itself, don't
>>> those need the DMA API?
>>>
>> Do you mean wq completion record address? It is already using DMA API.
>> 	wq->compls = dma_alloc_coherent(dev, wq->compls_size,
>> &wq->compls_addr, GFP_KERNEL);
>> 	desc->compl_dma = wq->compls_addr + idxd->data->compl_size * i;
> I would have expected something on the queue submission side too?

DSA is different than typical DMA devices in the past. Instead of a 
software descriptor ring where the device DMA to fetch the descriptors 
after the software ringing a doorbell or writing a head index, the 
descriptors are submitted directly to the device via a CPU instruction 
(i.e. MOVDIR64B or ENQCMD(S)). The CPU takes the KVA of the 64B 
descriptor and writes to the device atomically. No DMA mapping is 
necessary in this case.


>
>>> the same thing, they do not use the same IOVA's. Did you test this
>>> with bypass mode off?
>> Yes with dmatest. IOVA is the default, I separated out the SATC patch which
>> will put internal accelerators in bypass mode. It can also be verified by
>> iommu debugfs dump of DMA PASID (2) and PASID 0 (RIDPASID) are pointing to
>> he same default domain. e.g
> Well, OK then..
>
> Jason

  reply	other threads:[~2021-12-09  0:12 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 [this message]
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 ` [PATCH 0/4] Enable PASID for DMA API users Jason Gunthorpe via iommu
2021-12-08 13:10   ` 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=5fec4e7e-be37-193b-b4ab-dd1bbdb589d1@intel.com \
    --to=dave.jiang@intel.com \
    --cc=21cnbao@gmail.com \
    --cc=ashok.raj@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@infradead.org \
    --cc=iommu@lists.linux-foundation.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.