[v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap
diff mbox series

Message ID 1517344753-29021-1-git-send-email-alexey.skidanov@intel.com
State New, archived
Headers show
Series
  • [v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap
Related show

Commit Message

Skidanov, Alexey Jan. 30, 2018, 8:39 p.m. UTC
dma_buf_vmap and dma_buf_vunmap allow drivers to access buffers, created by ion.

Signed-off-by: Alexey Skidanov <alexey.skidanov@intel.com>
---
Changes in v1:
 - Added changelog text 


 drivers/staging/android/ion/ion.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Dan Carpenter Jan. 30, 2018, 8:47 p.m. UTC | #1
Are you working against linux-next?  The get_maintainer.pl script should
have told you to CC a bunch of other Android maintainers as well.

regards,
dan carpenter
Greg KH Jan. 30, 2018, 10:15 p.m. UTC | #2
On Tue, Jan 30, 2018 at 10:39:13PM +0200, Alexey Skidanov wrote:
> dma_buf_vmap and dma_buf_vunmap allow drivers to access buffers, created by ion.

But why would anyone ever want to do that?  What is wrong with the
existing interfaces that drivers use to access buffers created by ion?

What code uses this new interface?

We need a bit more information please.

thanks,

greg k-h
Skidanov, Alexey Jan. 30, 2018, 11:44 p.m. UTC | #3
On 01/31/2018 12:15 AM, Greg KH wrote:
> On Tue, Jan 30, 2018 at 10:39:13PM +0200, Alexey Skidanov wrote:
>> dma_buf_vmap and dma_buf_vunmap allow drivers to access buffers, created by ion.
> But why would anyone ever want to do that?  What is wrong with the
> existing interfaces that drivers use to access buffers created by ion?
Any driver, sharing the buffers, created by ion, through dma-buf, may 
get back the
sgtable describing the buffer for device DMA  and may call dma_buf_vmap 
to get back
the kernel virtual address of the buffer to get access to it. Currently, 
the second
option is missing. Actually, the buffer already mapped by ion 
implementation.
> What code uses this new interface?
This is not the new interface. this is the missing implementation of the 
last two ops:
struct dma_buf_ops {
   int (* attach) (struct dma_buf *, struct device *, struct 
dma_buf_attachment *);
   void (* detach) (struct dma_buf *, struct dma_buf_attachment *);
   struct sg_table * (* map_dma_buf) (struct dma_buf_attachment *, enum 
dma_data_direction);
   void (* unmap_dma_buf) (struct dma_buf_attachment *,struct sg_table 
*, enum dma_data_direction);
   void (* release) (struct dma_buf *);
   int (* begin_cpu_access) (struct dma_buf *, enum dma_data_direction);
   int (* end_cpu_access) (struct dma_buf *, enum dma_data_direction);
   void *(* map_atomic) (struct dma_buf *, unsigned long);
   void (* unmap_atomic) (struct dma_buf *, unsigned long, void *);
   void *(* map) (struct dma_buf *, unsigned long);
   void (* unmap) (struct dma_buf *, unsigned long, void *);
   int (* mmap) (struct dma_buf *, struct vm_area_struct *vma);
   void *(* vmap) (struct dma_buf *);
   void (* vunmap) (struct dma_buf *, void *vaddr);
};
>
> We need a bit more information please.
>
> thanks,
>
> greg k-h
Thanks,
Alexey
Dan Carpenter Jan. 31, 2018, 7:58 a.m. UTC | #4
The point is that you have to send a v3 patch which includes that
information.  And please CC all the android folk as well.

regards,
dan carpenter
Greg KH Jan. 31, 2018, 8:38 a.m. UTC | #5
On Wed, Jan 31, 2018 at 01:44:47AM +0200, alexey wrote:
> 
> 
> On 01/31/2018 12:15 AM, Greg KH wrote:
> > On Tue, Jan 30, 2018 at 10:39:13PM +0200, Alexey Skidanov wrote:
> > > dma_buf_vmap and dma_buf_vunmap allow drivers to access buffers, created by ion.
> > But why would anyone ever want to do that?  What is wrong with the
> > existing interfaces that drivers use to access buffers created by ion?
> Any driver, sharing the buffers, created by ion, through dma-buf, may get
> back the
> sgtable describing the buffer for device DMA  and may call dma_buf_vmap to
> get back
> the kernel virtual address of the buffer to get access to it. Currently, the
> second
> option is missing. Actually, the buffer already mapped by ion
> implementation.

Very odd formatting :(

Anyway, as Dan said, this needs to be put in the changelog text itself.

I know Intel has documentation and training for how to submit patches to
the kernel properly.  Please use that resource and get your patch
submission reviewed by someone from the Linux kernel team at Intel
before resending this.  Don't force the community to help you learn this
when you have people whose job it is to help out with this at your
company :)

thanks,

greg k-h

Patch
diff mbox series

diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
index f480885..4f1dc7f 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -327,6 +327,17 @@  static void ion_dma_buf_kunmap(struct dma_buf *dmabuf, unsigned long offset,
 {
 }
 
+static void *ion_dma_buf_vmap(struct dma_buf *dmabuf)
+{
+	struct ion_buffer *buffer = dmabuf->priv;
+
+	return buffer->vaddr;
+}
+
+static void ion_dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr)
+{
+}
+
 static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
 					enum dma_data_direction direction)
 {
@@ -388,6 +399,8 @@  static const struct dma_buf_ops dma_buf_ops = {
 	.unmap_atomic = ion_dma_buf_kunmap,
 	.map = ion_dma_buf_kmap,
 	.unmap = ion_dma_buf_kunmap,
+	.vmap = ion_dma_buf_vmap,
+	.vunmap = ion_dma_buf_vunmap
 };
 
 int ion_alloc(size_t len, unsigned int heap_id_mask, unsigned int flags)