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 labbott@redhat.com Cc: Benjamin Gaignard benjamin.gaignard@linaro.org Cc: Sumit Semwal sumit.semwal@linaro.org Cc: Liam Mark lmark@codeaurora.org Cc: Pratik Patel pratikp@codeaurora.org Cc: Brian Starkey Brian.Starkey@arm.com Cc: Vincent Donnefort Vincent.Donnefort@arm.com Cc: Sudipto Paul Sudipto.Paul@arm.com Cc: Andrew F. Davis afd@ti.com Cc: Christoph Hellwig hch@infradead.org Cc: Chenbo Feng fengc@google.com Cc: Alistair Strachan astrachan@google.com Cc: Hridya Valsaraju hridya@google.com Cc: dri-devel@lists.freedesktop.org Reviewed-by: Benjamin Gaignard benjamin.gaignard@linaro.org Signed-off-by: John Stultz john.stultz@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.starkey@arm.com
Thanks, -Brian