Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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;

	/*