> -----Original Message-----
> From: Jason Gunthorpe <j...@ziepe.ca>
> Sent: Tuesday, October 27, 2020 1:00 PM
> To: Xiong, Jianxin <jianxin.xi...@intel.com>
> Cc: linux-r...@vger.kernel.org; dri-devel@lists.freedesktop.org; Doug Ledford 
> <dledf...@redhat.com>; Leon Romanovsky
> <l...@kernel.org>; Sumit Semwal <sumit.sem...@linaro.org>; Christian Koenig 
> <christian.koe...@amd.com>; Vetter, Daniel
> <daniel.vet...@intel.com>
> Subject: Re: [PATCH v6 1/4] RDMA/umem: Support importing dma-buf as user 
> memory region
> 
> On Fri, Oct 23, 2020 at 09:39:58AM -0700, Jianxin Xiong wrote:
> > +/*
> > + * Generate a new dma sg list from a sub range of an existing dma sg list.
> > + * Both the input and output have their entries page aligned.
> > + */
> > +static int ib_umem_dmabuf_sgt_slice(struct sg_table *sgt, u64 offset,
> > +                               u64 length, struct sg_table *new_sgt) {
> > +   struct scatterlist *sg, *new_sg;
> > +   u64 start, end, off, addr, len;
> > +   unsigned int new_nents;
> > +   int err;
> > +   int i;
> > +
> > +   start = ALIGN_DOWN(offset, PAGE_SIZE);
> > +   end = ALIGN(offset + length, PAGE_SIZE);
> > +
> > +   offset = start;
> > +   length = end - start;
> > +   new_nents = 0;
> > +   for_each_sgtable_dma_sg(sgt, sg, i) {
> > +           len = sg_dma_len(sg);
> > +           off = min(len, offset);
> > +           len -= off;
> > +           len = min(len, length);
> > +           if (len)
> > +                   new_nents++;
> > +           length -= len;
> > +           offset -= off;
> > +   }
> > +
> > +   err = sg_alloc_table(new_sgt, new_nents, GFP_KERNEL);
> > +   if (err)
> > +           return err;
> 
> I would really rather not allocate an entirely new table just to take a slice 
> of an existing SGT. Ideally the expoter API from DMA buf would
> prepare the SGL slice properly instead of always giving a whole buffer.
> 
> Alternatively making some small edit to rdma_umem_for_each_dma_block() and 
> ib_umem_find_best_pgsz() would let it slice the SGL at
> runtime
> 
> You need to rebase on top of this series:
> 
> https://patchwork.kernel.org/project/linux-rdma/list/?series=370437
> 
> Which makes mlx5 use those new APIs
> 
> Jason

Thanks. Will rebase and work on the runtime slicing.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to