Hi John, On Fri, Sep 06, 2019 at 06:47:09PM +0000, John Stultz wrote: > Add generic helper dmabuf ops for dma heaps, so we can reduce > the amount of duplicative code for the exported dmabufs. > > This code is an evolution of the Android ION implementation, so > thanks to its original authors and maintainters: > Rebecca Schultz Zavin, Colin Cross, Laura Abbott, and others! > > Cc: Laura Abbott <labb...@redhat.com> > Cc: Benjamin Gaignard <benjamin.gaign...@linaro.org> > Cc: Sumit Semwal <sumit.sem...@linaro.org> > Cc: Liam Mark <lm...@codeaurora.org> > Cc: Pratik Patel <prat...@codeaurora.org> > Cc: Brian Starkey <brian.star...@arm.com> > Cc: Vincent Donnefort <vincent.donnef...@arm.com> > Cc: Sudipto Paul <sudipto.p...@arm.com> > Cc: Andrew F. Davis <a...@ti.com> > Cc: Christoph Hellwig <h...@infradead.org> > Cc: Chenbo Feng <fe...@google.com> > Cc: Alistair Strachan <astrac...@google.com> > Cc: Hridya Valsaraju <hri...@google.com> > Cc: dri-devel@lists.freedesktop.org > Reviewed-by: Benjamin Gaignard <benjamin.gaign...@linaro.org> > Signed-off-by: John Stultz <john.stu...@linaro.org>
Two minor things below. > --- > v2: > * Removed cache management performance hack that I had > accidentally folded in. > * Removed stats code that was in helpers > * Lots of checkpatch cleanups > v3: > * Uninline INIT_HEAP_HELPER_BUFFER (suggested by Christoph) > * Switch to WARN on buffer destroy failure (suggested by Brian) > * buffer->kmap_cnt decrementing cleanup (suggested by Christoph) > * Extra buffer->vaddr checking in dma_heap_dma_buf_kmap > (suggested by Brian) > * Switch to_helper_buffer from macro to inline function > (suggested by Benjamin) > * Rename kmap->vmap (folded in from Andrew) > * Use vmap for vmapping - not begin_cpu_access (folded in from > Andrew) > * Drop kmap for now, as its optional (folded in from Andrew) > * Fold dma_heap_map_user into the single caller (foled in from > Andrew) > * Folded in patch from Andrew to track page list per heap not > sglist, which simplifies the tracking logic > v4: > * Moved dma-heap.h change out to previous patch > v6: > * Minor cleanups and typo fixes suggested by Brian > v7: > * Removed stray ; > * Make init_heap_helper_buffer lowercase, as suggested by Christoph > * Add dmabuf export helper to reduce boilerplate code > v8: > * Remove unused private_flags value > * Condense dma_heap_buffer and heap_helper_buffer (suggested by > Christoph) > * Fix indentation by using shorter argument names (suggested by > Christoph) > * Add flush_kernel_vmap_range/invalidate_kernel_vmap_range calls > (suggested by Christoph) > * Checkpatch whitespace fixups > --- ... > + > +static void *dma_heap_buffer_vmap_get(struct heap_helper_buffer *buffer) > +{ > + void *vaddr; > + > + if (buffer->vmap_cnt) { > + buffer->vmap_cnt++; > + return buffer->vaddr; > + } > + vaddr = dma_heap_map_kernel(buffer); > + if (WARN_ONCE(!vaddr, > + "heap->ops->map_kernel should return ERR_PTR on error")) Looks like the message is out-of-date here. ... > + > +/** > + * struct heap_helper_buffer - helper buffer metadata > + * @heap: back pointer to the heap the buffer came from > + * @dmabuf: backing dma-buf for this buffer > + * @size: size of the buffer > + * @flags: buffer specific flags > + * @priv_virt pointer to heap specific private value > + * @lock mutext to protect the data in this structure > + * @vmap_cnt count of vmap references on the buffer > + * @vaddr vmap'ed virtual address > + * @pagecount number of pages in the buffer > + * @pages list of page pointers > + * @attachment list of device attachments s/attachment/attachments/ With those fixed, feel free to add: Reviewed-by: Brian Starkey <brian.star...@arm.com> Thanks, -Brian