2018-01-30 21:10:53

by Skidanov, Alexey

[permalink] [raw]
Subject: [PATCH v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap

dma_buf_vmap and dma_buf_vunmap allow drivers to access buffers, created by ion.

Signed-off-by: Alexey Skidanov <[email protected]>
---
Changes in v1:
- Added changelog text


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

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)
--
2.7.4



2018-01-30 22:05:00

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap

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


2018-01-30 23:27:00

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap

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

2018-01-31 00:49:38

by Skidanov, Alexey

[permalink] [raw]
Subject: Re: [PATCH v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap



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

2018-01-31 08:38:36

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap

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


2018-01-31 08:54:21

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2] staging: android: ion: Add implementation of dma_buf_vmap and dma_buf_vunmap

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