nvme-rdma: default MR page size to 4k
PATCH 1/1 nvme-rdma: default MR page size to 4k
Due to various page sizes in the system (IOMMU/device/kernel), we set the fabrics controller page size to 4k and block layer boundaries accordinglly. In architectures that uses different kernel page size we'll have a mismatch to the MR page size that may cause a mapping error. Update the MR page size to correspond to the core ctrl settings.
Signed-off-by Max Gurtovoy <maxg at mellanox.com>
--- drivers/nvme/host/rdma.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
drivers/nvme/host/rdma.c +6 -2
@@ -920,7 +920,11 @@ static int nvme_rdma_map_sg_fr(struct nvme_rdma_queue *queue,struct nvme_keyed_sgl_desc *sg = &c->common.dptr.ksgl;int nr; - nr =ib_map_mr_sg (req->mr, req->sg_table.sgl, count,NULL ,PAGE_SIZE ); +/* +* Align the MR to a 4K page size to match the ctrl page size and +* the block virtual boundary. +*/ + nr =ib_map_mr_sg (req->mr, req->sg_table.sgl, count,NULL ,SZ_4K );if (nr < count) {if (nr <0 )return nr;
@@ -1583,7 +1587,7 @@ static int nvme_rdma_configure_admin_queue(struct nvme_rdma_ctrl *ctrl) goto out_cleanup_queue; ctrl->ctrl.max_hw_sectors = - (ctrl->max_fr_pages -1 ) << (PAGE_SHIFT -9 ); + (ctrl->max_fr_pages -1 ) << (ilog2 (SZ_4K ) -9 ); error =nvme_init_identify (&ctrl->ctrl);if (error)
Signature · 1 line
1.7.1
Christoph Hellwig
maintainerPATCH 1/1 nvme-rdma: default MR page size to 4k
Looks fine,
Reviewed-by Christoph Hellwig <hch at lst.de>
Sagi Grimberg
maintainerPATCH 1/1 nvme-rdma: default MR page size to 4k
In reply to Max GurtovoyReviewed-by Sagi Grimberg <sagi at grimberg.me>
PATCH 1/1 nvme-rdma: default MR page size to 4k
In reply to Max GurtovoyThanks,
applied to the nvme-4.13 branch.