Messages in this thread | | | From | Long Li <> | Subject | RE: [PATCH rdma-next v1 1/1] RDMA/mana_ib: Fix bug in creation of dma regions | Date | Thu, 8 Feb 2024 18:42:51 +0000 |
| |
> > /* Hardware requires dma region to align to chosen page size */ > - page_sz = ib_umem_find_best_pgsz(umem, PAGE_SZ_BM, 0); > + page_sz = ib_umem_find_best_pgsz(umem, PAGE_SZ_BM, virt); > if (!page_sz) { > ibdev_dbg(&dev->ib_dev, "failed to find page size.\n"); > return -ENOMEM; > }
How about doing: page_sz = ib_umem_find_best_pgsz(umem, PAGE_SZ_BM, force_zero_offset ? 0 : virt);
Will this work? This can get rid of the following while loop.
> + > + if (force_zero_offset) { > + while (ib_umem_dma_offset(umem, page_sz) && page_sz > > PAGE_SIZE) > + page_sz /= 2; > + if (ib_umem_dma_offset(umem, page_sz) != 0) { > + ibdev_dbg(&dev->ib_dev, "failed to find page size to > force zero offset.\n"); > + return -ENOMEM; > + } > + } > +
| |