hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/vmw_pvrdma/pvrdma_misc.c
....@@ -182,26 +182,20 @@
182182 int pvrdma_page_dir_insert_umem(struct pvrdma_page_dir *pdir,
183183 struct ib_umem *umem, u64 offset)
184184 {
185
+ struct ib_block_iter biter;
185186 u64 i = offset;
186
- int j, entry;
187
- int ret = 0, len = 0;
188
- struct scatterlist *sg;
187
+ int ret = 0;
189188
190189 if (offset >= pdir->npages)
191190 return -EINVAL;
192191
193
- for_each_sg(umem->sg_head.sgl, sg, umem->nmap, entry) {
194
- len = sg_dma_len(sg) >> PAGE_SHIFT;
195
- for (j = 0; j < len; j++) {
196
- dma_addr_t addr = sg_dma_address(sg) +
197
- (j << umem->page_shift);
192
+ rdma_umem_for_each_dma_block (umem, &biter, PAGE_SIZE) {
193
+ ret = pvrdma_page_dir_insert_dma(
194
+ pdir, i, rdma_block_iter_dma_address(&biter));
195
+ if (ret)
196
+ goto exit;
198197
199
- ret = pvrdma_page_dir_insert_dma(pdir, i, addr);
200
- if (ret)
201
- goto exit;
202
-
203
- i++;
204
- }
198
+ i++;
205199 }
206200
207201 exit: