Commit c9121262 authored by Bart Van Assche's avatar Bart Van Assche Committed by Jason Gunthorpe
Browse files

RDMA/core: Set DMA parameters correctly

The dma_set_max_seg_size() call in setup_dma_device() does not have any
effect since device->dev.dma_parms is NULL. Fix this by initializing
device->dev.dma_parms first.

Link: https://lore.kernel.org/r/20191025225830.257535-5-bvanassche@acm.org


Fixes: d10bcf94 ("RDMA/umem: Combine contiguous PAGE_SIZE regions in SGEs")
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Reviewed-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent a401fb81
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -1196,9 +1196,21 @@ static void setup_dma_device(struct ib_device *device)
		WARN_ON_ONCE(!parent);
		device->dma_device = parent;
	}
	/* Setup default max segment size for all IB devices */
	dma_set_max_seg_size(device->dma_device, SZ_2G);

	if (!device->dev.dma_parms) {
		if (parent) {
			/*
			 * The caller did not provide DMA parameters, so
			 * 'parent' probably represents a PCI device. The PCI
			 * core sets the maximum segment size to 64
			 * KB. Increase this parameter to 2 GB.
			 */
			device->dev.dma_parms = parent->dma_parms;
			dma_set_max_seg_size(device->dma_device, SZ_2G);
		} else {
			WARN_ON_ONCE(true);
		}
	}
}

/*