From bedbef8ad3e75a304af6361af235302bcc61d06b Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Tue, 14 May 2024 06:39:01 +0000 Subject: [PATCH] 修改内核路径 --- kernel/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c | 22 ++++++++-------------- 1 files changed, 8 insertions(+), 14 deletions(-) diff --git a/kernel/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c b/kernel/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c index fb0c5c0..ba43ad0 100644 --- a/kernel/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c +++ b/kernel/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c @@ -182,26 +182,20 @@ int pvrdma_page_dir_insert_umem(struct pvrdma_page_dir *pdir, struct ib_umem *umem, u64 offset) { + struct ib_block_iter biter; u64 i = offset; - int j, entry; - int ret = 0, len = 0; - struct scatterlist *sg; + int ret = 0; if (offset >= pdir->npages) return -EINVAL; - for_each_sg(umem->sg_head.sgl, sg, umem->nmap, entry) { - len = sg_dma_len(sg) >> PAGE_SHIFT; - for (j = 0; j < len; j++) { - dma_addr_t addr = sg_dma_address(sg) + - (j << umem->page_shift); + rdma_umem_for_each_dma_block (umem, &biter, PAGE_SIZE) { + ret = pvrdma_page_dir_insert_dma( + pdir, i, rdma_block_iter_dma_address(&biter)); + if (ret) + goto exit; - ret = pvrdma_page_dir_insert_dma(pdir, i, addr); - if (ret) - goto exit; - - i++; - } + i++; } exit: -- Gitblit v1.6.2