How to resolve an issue in swiotlb environment?
Yoshihiro Shimoda
yoshihiro.shimoda.uh at renesas.com
Wed Jun 12 08:52:21 UTC 2019
Hi Christoph,
> From: Christoph Hellwig, Sent: Wednesday, June 12, 2019 4:31 PM
>
> First things first:
>
> Yoshihiro, can you try this git branch? The new bits are just the three
> patches at the end, but they sit on top of a few patches already sent
> out to the list, so a branch is probably either:
>
> git://git.infradead.org/users/hch/misc.git scsi-virt-boundary-fixes
Thank you for the patches!
Unfortunately, the three patches could not resolve this issue.
However, it's a hint to me, and then I found the root cause:
- slave_configure() in drivers/usb/storage/scsiglue.c calls
blk_queue_max_hw_sectors() with 2048 sectors (1 MiB) when USB_SPEED_SUPER or more.
-- So that, even if your patches (also I fixed it a little [1]) could not resolve
the issue because the max_sectors is overwritten by above code.
So, I think we should fix the slave_configure() by using dma_max_mapping_size().
What do you think? If so, I can make such a patch.
[1]
In the "scsi: take the DMA max mapping size into account" patch,
+ shost->max_sectors = min_t(unsigned int, shost->max_sectors,
+ dma_max_mapping_size(dev) << SECTOR_SHIFT);
it should be:
+ dma_max_mapping_size(dev) >> SECTOR_SHIFT);
But, if we fix the slave_configure(), we don't need this patch, IIUC.
Best regards,
Yoshihiro Shimoda
More information about the iommu
mailing list