On 08/06/2022 18:33, Bart Van Assche wrote:
On 6/6/22 02:30, John Garry wrote:
+ if (dma_dev->dma_mask) {
+ shost->max_sectors = min_t(unsigned int, shost->max_sectors,
+ dma_opt_mapping_size(dma_dev) >> SECTOR_SHIFT);
+ }
Since IOVA_RANGE_CACHE_MAX_SIZE = 6 this limits max_sectors to 2**6 *
PAGE_SIZE or 256 KiB if the page size is 4 KiB.
It's actually 128K for 4K page size, as any IOVA size is roundup to
power-of-2 when testing if we may cache it, which means anything >128K
would roundup to 256K and cannot be cached.
I think that's too
small. Some (SRP) storage arrays require much larger transfers to
achieve optimal performance.
Have you tried this achieve this optimal performance with an IOMMU enabled?
Please note that this limit only applies if we have an IOMMU enabled for
the scsi host dma device. Otherwise we are limited by dma direct or
swiotlb max mapping size, as before.
Thanks,
John