Commit 7637de31 authored by Christoph Hellwig's avatar Christoph Hellwig

nvme-pci: limit max_hw_sectors based on the DMA max mapping size

When running a NVMe device that is attached to a addressing
challenged PCIe root port that requires bounce buffering, our
request sizes can easily overflow the swiotlb bounce buffer
size.  Limit the maximum I/O size to the limit exposed by
the DMA mapping subsystem.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reported-by: default avatarAtish Patra <Atish.Patra@wdc.com>
Tested-by: default avatarAtish Patra <Atish.Patra@wdc.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
parent bfac8e9f
......@@ -2503,7 +2503,8 @@ static void nvme_reset_work(struct work_struct *work)
* Limit the max command size to prevent iod->sg allocations going
* over a single page.
*/
dev->ctrl.max_hw_sectors = NVME_MAX_KB_SZ << 1;
dev->ctrl.max_hw_sectors = min_t(u32,
NVME_MAX_KB_SZ << 1, dma_max_mapping_size(dev->dev) >> 9);
dev->ctrl.max_segments = NVME_MAX_SEGS;
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment