linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Garry <john.garry@huawei.com>
To: Bart Van Assche <bvanassche@acm.org>,
	<damien.lemoal@opensource.wdc.com>, <joro@8bytes.org>,
	<will@kernel.org>, <jejb@linux.ibm.com>,
	<martin.petersen@oracle.com>, <hch@lst.de>,
	<m.szyprowski@samsung.com>, <robin.murphy@arm.com>
Cc: <linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-ide@vger.kernel.org>, <iommu@lists.linux-foundation.org>,
	<linux-scsi@vger.kernel.org>, <liyihang6@hisilicon.com>,
	<chenxiang66@hisilicon.com>, <thunder.leizhen@huawei.com>
Subject: Re: [PATCH v3 0/4] DMA mapping changes for SCSI core
Date: Wed, 8 Jun 2022 11:14:07 +0100	[thread overview]
Message-ID: <202f1969-41e4-5f9a-3ff6-0009757434f5@huawei.com> (raw)
In-Reply-To: <3e2324dc-2ab1-6a35-46ab-72d970cc466c@acm.org>

On 07/06/2022 23:43, Bart Van Assche wrote:
> On 6/6/22 02:30, John Garry wrote:
>> As reported in [0], DMA mappings whose size exceeds the IOMMU IOVA 
>> caching
>> limit may see a big performance hit.
>>
>> This series introduces a new DMA mapping API, dma_opt_mapping_size(), so
>> that drivers may know this limit when performance is a factor in the
>> mapping.
>>
>> Robin didn't like using dma_max_mapping_size() for this [1].
>>
>> The SCSI core code is modified to use this limit.
>>
>> I also added a patch for libata-scsi as it does not currently honour the
>> shost max_sectors limit.
>>
>> Note: Christoph has previously kindly offered to take this series via the
>>        dma-mapping tree, so I think that we just need an ack from the
>>        IOMMU guys now.
>>
>> [0] 
>> https://lore.kernel.org/linux-iommu/20210129092120.1482-1-thunder.leizhen@huawei.com/ 
>>
>> [1] 
>> https://lore.kernel.org/linux-iommu/f5b78c9c-312e-70ab-ecbb-f14623a4b6e3@arm.com/ 
>>
> 
> Regarding [0], that patch reverts commit 4e89dce72521 ("iommu/iova: 
> Retry from last rb tree node if iova search fails"). Reading the 
> description of that patch, it seems to me that the iova allocator can be 
> improved. Shouldn't the iova allocator be improved such that we don't 
> need this patch series? There are algorithms that handle fragmentation 
> much better than the current iova allocator algorithm, e.g. the 
> https://en.wikipedia.org/wiki/Buddy_memory_allocation algorithm.

Regardless of whether the IOVA allocator can be improved - which it 
probably can be - this series is still useful. That is due to the IOVA 
rcache - that is a cache of pre-allocated IOVAs which can be quickly 
used in the DMA mapping. The rache contains IOVAs up to certain fixed 
size. In this series we limit the DMA mapping length to the rcache size 
upper limit to always bypass the allocator (when we have a cached IOVA 
available) - see alloc_iova_fast().

Even if the IOVA allocator were greatly optimised for speed, there would 
still be an overhead in the alloc and free for those larger IOVAs which 
would outweigh the advantage of having larger DMA mappings. But is there 
even an advantage in very large streaming DMA mappings? Maybe for iotlb 
efficiency. But some say it's better to have the DMA engine start 
processing the data ASAP and not wait for larger lists to be built.

Thanks,
John


      reply	other threads:[~2022-06-08 10:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-06  9:30 [PATCH v3 0/4] DMA mapping changes for SCSI core John Garry
2022-06-06  9:30 ` [PATCH v3 1/4] dma-mapping: Add dma_opt_mapping_size() John Garry
2022-06-08 17:27   ` Bart Van Assche
2022-06-06  9:30 ` [PATCH v3 2/4] dma-iommu: Add iommu_dma_opt_mapping_size() John Garry
2022-06-08 17:26   ` Bart Van Assche
2022-06-08 17:39     ` John Garry
2022-06-14 13:12   ` John Garry
2022-06-23  8:38     ` John Garry
2022-06-06  9:30 ` [PATCH v3 3/4] scsi: core: Cap shost max_sectors according to DMA optimum mapping limits John Garry
2022-06-08 17:33   ` Bart Van Assche
2022-06-08 17:50     ` John Garry
2022-06-08 21:07       ` Bart Van Assche
2022-06-09  8:00         ` John Garry
2022-06-09 17:18           ` Bart Van Assche
2022-06-09 17:54             ` John Garry
2022-06-09 20:34               ` Bart Van Assche
2022-06-10 15:37                 ` John Garry
2022-06-23  8:36                   ` John Garry
2022-06-06  9:30 ` [PATCH v3 4/4] libata-scsi: Cap ata_device->max_sectors according to shost->max_sectors John Garry
2022-06-07 22:43 ` [PATCH v3 0/4] DMA mapping changes for SCSI core Bart Van Assche
2022-06-08 10:14   ` John Garry [this message]

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=202f1969-41e4-5f9a-3ff6-0009757434f5@huawei.com \
    --to=john.garry@huawei.com \
    --cc=bvanassche@acm.org \
    --cc=chenxiang66@hisilicon.com \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jejb@linux.ibm.com \
    --cc=joro@8bytes.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=liyihang6@hisilicon.com \
    --cc=m.szyprowski@samsung.com \
    --cc=martin.petersen@oracle.com \
    --cc=robin.murphy@arm.com \
    --cc=thunder.leizhen@huawei.com \
    --cc=will@kernel.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 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).