From e1aba437452f7d9d329171de3e6a596753cc8bfc Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Thu, 19 Nov 2020 02:51:41 -0500 Subject: [PATCH] nvme: hide the 2MiB memory check in env API spdk_vtophys() already checks that, so we don't need to check it in the NVMe driver again. Change-Id: I74288ae8cab80e1be34583475fa02a3ae13e090c Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5166 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki --- lib/nvme/nvme_pcie.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index b789ffe30..92710a1ce 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -2037,7 +2037,7 @@ nvme_pcie_qpair_build_hw_sgl_request(struct spdk_nvme_qpair *qpair, struct nvme_ { int rc; void *virt_addr; - uint64_t phys_addr; + uint64_t phys_addr, mapping_length; uint32_t remaining_transfer_len, remaining_user_sge_len, length; struct spdk_nvme_sgl_descriptor *sgl; uint32_t nseg = 0; @@ -2109,12 +2109,13 @@ nvme_pcie_qpair_build_hw_sgl_request(struct spdk_nvme_qpair *qpair, struct nvme_ goto exit; } - phys_addr = spdk_vtophys(virt_addr, NULL); + mapping_length = remaining_user_sge_len; + phys_addr = spdk_vtophys(virt_addr, &mapping_length); if (phys_addr == SPDK_VTOPHYS_ERROR) { goto exit; } - length = spdk_min(remaining_user_sge_len, VALUE_2MB - _2MB_OFFSET(virt_addr)); + length = spdk_min(remaining_user_sge_len, mapping_length); remaining_user_sge_len -= length; virt_addr += length;