All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Laura Abbott <labbott@redhat.com>
Cc: Sumit Semwal <sumit.semwal@linaro.org>,
	Riley Andrews <riandrews@android.com>,
	arve@android.com, romlem@google.com, devel@driverdev.osuosl.org,
	linux-kernel@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Brian Starkey <brian.starkey@arm.com>,
	Daniel Vetter <daniel.vetter@intel.com>,
	Mark Brown <broonie@kernel.org>,
	Benjamin Gaignard <benjamin.gaignard@linaro.org>,
	linux-mm@kvack.org
Subject: Re: [RFC PATCH 06/12] staging: android: ion: Remove crufty cache support
Date: Fri, 3 Mar 2017 10:56:54 +0100	[thread overview]
Message-ID: <20170303095654.zbcqkcojo3vf6y4y@phenom.ffwll.local> (raw)
In-Reply-To: <1488491084-17252-7-git-send-email-labbott@redhat.com>

On Thu, Mar 02, 2017 at 01:44:38PM -0800, Laura Abbott wrote:
> 
> 
> Now that we call dma_map in the dma_buf API callbacks there is no need
> to use the existing cache APIs. Remove the sync ioctl and the existing
> bad dma_sync calls. Explicit caching can be handled with the dma_buf
> sync API.
> 
> Signed-off-by: Laura Abbott <labbott@redhat.com>
> ---
>  drivers/staging/android/ion/ion-ioctl.c         |  5 ----
>  drivers/staging/android/ion/ion.c               | 40 -------------------------
>  drivers/staging/android/ion/ion_carveout_heap.c |  6 ----
>  drivers/staging/android/ion/ion_chunk_heap.c    |  6 ----
>  drivers/staging/android/ion/ion_page_pool.c     |  3 --
>  drivers/staging/android/ion/ion_system_heap.c   |  5 ----
>  6 files changed, 65 deletions(-)
> 
> diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
> index 5b2e93f..f820d77 100644
> --- a/drivers/staging/android/ion/ion-ioctl.c
> +++ b/drivers/staging/android/ion/ion-ioctl.c
> @@ -146,11 +146,6 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
>  			data.handle.handle = handle->id;
>  		break;
>  	}
> -	case ION_IOC_SYNC:
> -	{
> -		ret = ion_sync_for_device(client, data.fd.fd);
> -		break;
> -	}

You missed the case ION_IOC_SYNC: in compat_ion.c.

While at it: Should we also remove the entire custom_ioctl infrastructure?
It's entirely unused afaict, and for a pure buffer allocator I don't see
any need to have custom ioctl.

More code to remove potentially:
- The entire compat ioctl stuff - would be an abi break, but I guess if we
  pick the 32bit abi and clean up the uapi headers we'll be mostly fine.
  would allow us to remove compat_ion.c entirely.

- ION_IOC_IMPORT: With this ion is purely an allocator, so not sure we
  still need to be able to import anything. All the cache flushing/mapping
  is done through dma-buf ops/ioctls.


With the case in compat_ion.c also removed, this patch is:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

>  	case ION_IOC_CUSTOM:
>  	{
>  		if (!dev->custom_ioctl)
> diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
> index 8eef1d7..c3c316f 100644
> --- a/drivers/staging/android/ion/ion.c
> +++ b/drivers/staging/android/ion/ion.c
> @@ -815,22 +815,6 @@ static void ion_unmap_dma_buf(struct dma_buf_attachment *attachment,
>  	free_duped_table(table);
>  }
>  
> -void ion_pages_sync_for_device(struct device *dev, struct page *page,
> -			       size_t size, enum dma_data_direction dir)
> -{
> -	struct scatterlist sg;
> -
> -	sg_init_table(&sg, 1);
> -	sg_set_page(&sg, page, size, 0);
> -	/*
> -	 * This is not correct - sg_dma_address needs a dma_addr_t that is valid
> -	 * for the targeted device, but this works on the currently targeted
> -	 * hardware.
> -	 */
> -	sg_dma_address(&sg) = page_to_phys(page);
> -	dma_sync_sg_for_device(dev, &sg, 1, dir);
> -}
> -
>  static int ion_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
>  {
>  	struct ion_buffer *buffer = dmabuf->priv;
> @@ -1042,30 +1026,6 @@ struct ion_handle *ion_import_dma_buf_fd(struct ion_client *client, int fd)
>  }
>  EXPORT_SYMBOL(ion_import_dma_buf_fd);
>  
> -int ion_sync_for_device(struct ion_client *client, int fd)
> -{
> -	struct dma_buf *dmabuf;
> -	struct ion_buffer *buffer;
> -
> -	dmabuf = dma_buf_get(fd);
> -	if (IS_ERR(dmabuf))
> -		return PTR_ERR(dmabuf);
> -
> -	/* if this memory came from ion */
> -	if (dmabuf->ops != &dma_buf_ops) {
> -		pr_err("%s: can not sync dmabuf from another exporter\n",
> -		       __func__);
> -		dma_buf_put(dmabuf);
> -		return -EINVAL;
> -	}
> -	buffer = dmabuf->priv;
> -
> -	dma_sync_sg_for_device(NULL, buffer->sg_table->sgl,
> -			       buffer->sg_table->nents, DMA_BIDIRECTIONAL);
> -	dma_buf_put(dmabuf);
> -	return 0;
> -}
> -
>  int ion_query_heaps(struct ion_client *client, struct ion_heap_query *query)
>  {
>  	struct ion_device *dev = client->dev;
> diff --git a/drivers/staging/android/ion/ion_carveout_heap.c b/drivers/staging/android/ion/ion_carveout_heap.c
> index 9bf8e98..e0e360f 100644
> --- a/drivers/staging/android/ion/ion_carveout_heap.c
> +++ b/drivers/staging/android/ion/ion_carveout_heap.c
> @@ -100,10 +100,6 @@ static void ion_carveout_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	ion_carveout_free(heap, paddr, buffer->size);
>  	sg_free_table(table);
>  	kfree(table);
> @@ -128,8 +124,6 @@ struct ion_heap *ion_carveout_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_chunk_heap.c b/drivers/staging/android/ion/ion_chunk_heap.c
> index 8c41889..46e13f6 100644
> --- a/drivers/staging/android/ion/ion_chunk_heap.c
> +++ b/drivers/staging/android/ion/ion_chunk_heap.c
> @@ -101,10 +101,6 @@ static void ion_chunk_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	for_each_sg(table->sgl, sg, table->nents, i) {
>  		gen_pool_free(chunk_heap->pool, page_to_phys(sg_page(sg)),
>  			      sg->length);
> @@ -132,8 +128,6 @@ struct ion_heap *ion_chunk_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_page_pool.c b/drivers/staging/android/ion/ion_page_pool.c
> index aea89c1..532eda7 100644
> --- a/drivers/staging/android/ion/ion_page_pool.c
> +++ b/drivers/staging/android/ion/ion_page_pool.c
> @@ -30,9 +30,6 @@ static void *ion_page_pool_alloc_pages(struct ion_page_pool *pool)
>  
>  	if (!page)
>  		return NULL;
> -	if (!pool->cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << pool->order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
> index 6cb2fe7..a33331b 100644
> --- a/drivers/staging/android/ion/ion_system_heap.c
> +++ b/drivers/staging/android/ion/ion_system_heap.c
> @@ -75,9 +75,6 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,
>  
>  	page = ion_page_pool_alloc(pool);
>  
> -	if (cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> @@ -401,8 +398,6 @@ static int ion_system_contig_heap_allocate(struct ion_heap *heap,
>  
>  	buffer->sg_table = table;
>  
> -	ion_pages_sync_for_device(NULL, page, len, DMA_BIDIRECTIONAL);
> -
>  	return 0;
>  
>  free_table:
> -- 
> 2.7.4
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Laura Abbott <labbott@redhat.com>
Cc: Sumit Semwal <sumit.semwal@linaro.org>,
	Riley Andrews <riandrews@android.com>,
	arve@android.com, romlem@google.com, devel@driverdev.osuosl.org,
	linux-kernel@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Brian Starkey <brian.starkey@arm.com>,
	Daniel Vetter <daniel.vetter@intel.com>,
	Mark Brown <broonie@kernel.org>,
	Benjamin Gaignard <benjamin.gaignard@linaro.org>,
	linux-mm@kvack.org
Subject: Re: [RFC PATCH 06/12] staging: android: ion: Remove crufty cache support
Date: Fri, 3 Mar 2017 10:56:54 +0100	[thread overview]
Message-ID: <20170303095654.zbcqkcojo3vf6y4y@phenom.ffwll.local> (raw)
In-Reply-To: <1488491084-17252-7-git-send-email-labbott@redhat.com>

On Thu, Mar 02, 2017 at 01:44:38PM -0800, Laura Abbott wrote:
> 
> 
> Now that we call dma_map in the dma_buf API callbacks there is no need
> to use the existing cache APIs. Remove the sync ioctl and the existing
> bad dma_sync calls. Explicit caching can be handled with the dma_buf
> sync API.
> 
> Signed-off-by: Laura Abbott <labbott@redhat.com>
> ---
>  drivers/staging/android/ion/ion-ioctl.c         |  5 ----
>  drivers/staging/android/ion/ion.c               | 40 -------------------------
>  drivers/staging/android/ion/ion_carveout_heap.c |  6 ----
>  drivers/staging/android/ion/ion_chunk_heap.c    |  6 ----
>  drivers/staging/android/ion/ion_page_pool.c     |  3 --
>  drivers/staging/android/ion/ion_system_heap.c   |  5 ----
>  6 files changed, 65 deletions(-)
> 
> diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
> index 5b2e93f..f820d77 100644
> --- a/drivers/staging/android/ion/ion-ioctl.c
> +++ b/drivers/staging/android/ion/ion-ioctl.c
> @@ -146,11 +146,6 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
>  			data.handle.handle = handle->id;
>  		break;
>  	}
> -	case ION_IOC_SYNC:
> -	{
> -		ret = ion_sync_for_device(client, data.fd.fd);
> -		break;
> -	}

You missed the case ION_IOC_SYNC: in compat_ion.c.

While at it: Should we also remove the entire custom_ioctl infrastructure?
It's entirely unused afaict, and for a pure buffer allocator I don't see
any need to have custom ioctl.

More code to remove potentially:
- The entire compat ioctl stuff - would be an abi break, but I guess if we
  pick the 32bit abi and clean up the uapi headers we'll be mostly fine.
  would allow us to remove compat_ion.c entirely.

- ION_IOC_IMPORT: With this ion is purely an allocator, so not sure we
  still need to be able to import anything. All the cache flushing/mapping
  is done through dma-buf ops/ioctls.


With the case in compat_ion.c also removed, this patch is:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

>  	case ION_IOC_CUSTOM:
>  	{
>  		if (!dev->custom_ioctl)
> diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
> index 8eef1d7..c3c316f 100644
> --- a/drivers/staging/android/ion/ion.c
> +++ b/drivers/staging/android/ion/ion.c
> @@ -815,22 +815,6 @@ static void ion_unmap_dma_buf(struct dma_buf_attachment *attachment,
>  	free_duped_table(table);
>  }
>  
> -void ion_pages_sync_for_device(struct device *dev, struct page *page,
> -			       size_t size, enum dma_data_direction dir)
> -{
> -	struct scatterlist sg;
> -
> -	sg_init_table(&sg, 1);
> -	sg_set_page(&sg, page, size, 0);
> -	/*
> -	 * This is not correct - sg_dma_address needs a dma_addr_t that is valid
> -	 * for the targeted device, but this works on the currently targeted
> -	 * hardware.
> -	 */
> -	sg_dma_address(&sg) = page_to_phys(page);
> -	dma_sync_sg_for_device(dev, &sg, 1, dir);
> -}
> -
>  static int ion_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
>  {
>  	struct ion_buffer *buffer = dmabuf->priv;
> @@ -1042,30 +1026,6 @@ struct ion_handle *ion_import_dma_buf_fd(struct ion_client *client, int fd)
>  }
>  EXPORT_SYMBOL(ion_import_dma_buf_fd);
>  
> -int ion_sync_for_device(struct ion_client *client, int fd)
> -{
> -	struct dma_buf *dmabuf;
> -	struct ion_buffer *buffer;
> -
> -	dmabuf = dma_buf_get(fd);
> -	if (IS_ERR(dmabuf))
> -		return PTR_ERR(dmabuf);
> -
> -	/* if this memory came from ion */
> -	if (dmabuf->ops != &dma_buf_ops) {
> -		pr_err("%s: can not sync dmabuf from another exporter\n",
> -		       __func__);
> -		dma_buf_put(dmabuf);
> -		return -EINVAL;
> -	}
> -	buffer = dmabuf->priv;
> -
> -	dma_sync_sg_for_device(NULL, buffer->sg_table->sgl,
> -			       buffer->sg_table->nents, DMA_BIDIRECTIONAL);
> -	dma_buf_put(dmabuf);
> -	return 0;
> -}
> -
>  int ion_query_heaps(struct ion_client *client, struct ion_heap_query *query)
>  {
>  	struct ion_device *dev = client->dev;
> diff --git a/drivers/staging/android/ion/ion_carveout_heap.c b/drivers/staging/android/ion/ion_carveout_heap.c
> index 9bf8e98..e0e360f 100644
> --- a/drivers/staging/android/ion/ion_carveout_heap.c
> +++ b/drivers/staging/android/ion/ion_carveout_heap.c
> @@ -100,10 +100,6 @@ static void ion_carveout_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	ion_carveout_free(heap, paddr, buffer->size);
>  	sg_free_table(table);
>  	kfree(table);
> @@ -128,8 +124,6 @@ struct ion_heap *ion_carveout_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_chunk_heap.c b/drivers/staging/android/ion/ion_chunk_heap.c
> index 8c41889..46e13f6 100644
> --- a/drivers/staging/android/ion/ion_chunk_heap.c
> +++ b/drivers/staging/android/ion/ion_chunk_heap.c
> @@ -101,10 +101,6 @@ static void ion_chunk_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	for_each_sg(table->sgl, sg, table->nents, i) {
>  		gen_pool_free(chunk_heap->pool, page_to_phys(sg_page(sg)),
>  			      sg->length);
> @@ -132,8 +128,6 @@ struct ion_heap *ion_chunk_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_page_pool.c b/drivers/staging/android/ion/ion_page_pool.c
> index aea89c1..532eda7 100644
> --- a/drivers/staging/android/ion/ion_page_pool.c
> +++ b/drivers/staging/android/ion/ion_page_pool.c
> @@ -30,9 +30,6 @@ static void *ion_page_pool_alloc_pages(struct ion_page_pool *pool)
>  
>  	if (!page)
>  		return NULL;
> -	if (!pool->cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << pool->order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
> index 6cb2fe7..a33331b 100644
> --- a/drivers/staging/android/ion/ion_system_heap.c
> +++ b/drivers/staging/android/ion/ion_system_heap.c
> @@ -75,9 +75,6 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,
>  
>  	page = ion_page_pool_alloc(pool);
>  
> -	if (cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> @@ -401,8 +398,6 @@ static int ion_system_contig_heap_allocate(struct ion_heap *heap,
>  
>  	buffer->sg_table = table;
>  
> -	ion_pages_sync_for_device(NULL, page, len, DMA_BIDIRECTIONAL);
> -
>  	return 0;
>  
>  free_table:
> -- 
> 2.7.4
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: daniel@ffwll.ch (Daniel Vetter)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 06/12] staging: android: ion: Remove crufty cache support
Date: Fri, 3 Mar 2017 10:56:54 +0100	[thread overview]
Message-ID: <20170303095654.zbcqkcojo3vf6y4y@phenom.ffwll.local> (raw)
In-Reply-To: <1488491084-17252-7-git-send-email-labbott@redhat.com>

On Thu, Mar 02, 2017 at 01:44:38PM -0800, Laura Abbott wrote:
> 
> 
> Now that we call dma_map in the dma_buf API callbacks there is no need
> to use the existing cache APIs. Remove the sync ioctl and the existing
> bad dma_sync calls. Explicit caching can be handled with the dma_buf
> sync API.
> 
> Signed-off-by: Laura Abbott <labbott@redhat.com>
> ---
>  drivers/staging/android/ion/ion-ioctl.c         |  5 ----
>  drivers/staging/android/ion/ion.c               | 40 -------------------------
>  drivers/staging/android/ion/ion_carveout_heap.c |  6 ----
>  drivers/staging/android/ion/ion_chunk_heap.c    |  6 ----
>  drivers/staging/android/ion/ion_page_pool.c     |  3 --
>  drivers/staging/android/ion/ion_system_heap.c   |  5 ----
>  6 files changed, 65 deletions(-)
> 
> diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
> index 5b2e93f..f820d77 100644
> --- a/drivers/staging/android/ion/ion-ioctl.c
> +++ b/drivers/staging/android/ion/ion-ioctl.c
> @@ -146,11 +146,6 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
>  			data.handle.handle = handle->id;
>  		break;
>  	}
> -	case ION_IOC_SYNC:
> -	{
> -		ret = ion_sync_for_device(client, data.fd.fd);
> -		break;
> -	}

You missed the case ION_IOC_SYNC: in compat_ion.c.

While at it: Should we also remove the entire custom_ioctl infrastructure?
It's entirely unused afaict, and for a pure buffer allocator I don't see
any need to have custom ioctl.

More code to remove potentially:
- The entire compat ioctl stuff - would be an abi break, but I guess if we
  pick the 32bit abi and clean up the uapi headers we'll be mostly fine.
  would allow us to remove compat_ion.c entirely.

- ION_IOC_IMPORT: With this ion is purely an allocator, so not sure we
  still need to be able to import anything. All the cache flushing/mapping
  is done through dma-buf ops/ioctls.


With the case in compat_ion.c also removed, this patch is:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

>  	case ION_IOC_CUSTOM:
>  	{
>  		if (!dev->custom_ioctl)
> diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
> index 8eef1d7..c3c316f 100644
> --- a/drivers/staging/android/ion/ion.c
> +++ b/drivers/staging/android/ion/ion.c
> @@ -815,22 +815,6 @@ static void ion_unmap_dma_buf(struct dma_buf_attachment *attachment,
>  	free_duped_table(table);
>  }
>  
> -void ion_pages_sync_for_device(struct device *dev, struct page *page,
> -			       size_t size, enum dma_data_direction dir)
> -{
> -	struct scatterlist sg;
> -
> -	sg_init_table(&sg, 1);
> -	sg_set_page(&sg, page, size, 0);
> -	/*
> -	 * This is not correct - sg_dma_address needs a dma_addr_t that is valid
> -	 * for the targeted device, but this works on the currently targeted
> -	 * hardware.
> -	 */
> -	sg_dma_address(&sg) = page_to_phys(page);
> -	dma_sync_sg_for_device(dev, &sg, 1, dir);
> -}
> -
>  static int ion_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
>  {
>  	struct ion_buffer *buffer = dmabuf->priv;
> @@ -1042,30 +1026,6 @@ struct ion_handle *ion_import_dma_buf_fd(struct ion_client *client, int fd)
>  }
>  EXPORT_SYMBOL(ion_import_dma_buf_fd);
>  
> -int ion_sync_for_device(struct ion_client *client, int fd)
> -{
> -	struct dma_buf *dmabuf;
> -	struct ion_buffer *buffer;
> -
> -	dmabuf = dma_buf_get(fd);
> -	if (IS_ERR(dmabuf))
> -		return PTR_ERR(dmabuf);
> -
> -	/* if this memory came from ion */
> -	if (dmabuf->ops != &dma_buf_ops) {
> -		pr_err("%s: can not sync dmabuf from another exporter\n",
> -		       __func__);
> -		dma_buf_put(dmabuf);
> -		return -EINVAL;
> -	}
> -	buffer = dmabuf->priv;
> -
> -	dma_sync_sg_for_device(NULL, buffer->sg_table->sgl,
> -			       buffer->sg_table->nents, DMA_BIDIRECTIONAL);
> -	dma_buf_put(dmabuf);
> -	return 0;
> -}
> -
>  int ion_query_heaps(struct ion_client *client, struct ion_heap_query *query)
>  {
>  	struct ion_device *dev = client->dev;
> diff --git a/drivers/staging/android/ion/ion_carveout_heap.c b/drivers/staging/android/ion/ion_carveout_heap.c
> index 9bf8e98..e0e360f 100644
> --- a/drivers/staging/android/ion/ion_carveout_heap.c
> +++ b/drivers/staging/android/ion/ion_carveout_heap.c
> @@ -100,10 +100,6 @@ static void ion_carveout_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	ion_carveout_free(heap, paddr, buffer->size);
>  	sg_free_table(table);
>  	kfree(table);
> @@ -128,8 +124,6 @@ struct ion_heap *ion_carveout_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_chunk_heap.c b/drivers/staging/android/ion/ion_chunk_heap.c
> index 8c41889..46e13f6 100644
> --- a/drivers/staging/android/ion/ion_chunk_heap.c
> +++ b/drivers/staging/android/ion/ion_chunk_heap.c
> @@ -101,10 +101,6 @@ static void ion_chunk_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	for_each_sg(table->sgl, sg, table->nents, i) {
>  		gen_pool_free(chunk_heap->pool, page_to_phys(sg_page(sg)),
>  			      sg->length);
> @@ -132,8 +128,6 @@ struct ion_heap *ion_chunk_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_page_pool.c b/drivers/staging/android/ion/ion_page_pool.c
> index aea89c1..532eda7 100644
> --- a/drivers/staging/android/ion/ion_page_pool.c
> +++ b/drivers/staging/android/ion/ion_page_pool.c
> @@ -30,9 +30,6 @@ static void *ion_page_pool_alloc_pages(struct ion_page_pool *pool)
>  
>  	if (!page)
>  		return NULL;
> -	if (!pool->cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << pool->order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
> index 6cb2fe7..a33331b 100644
> --- a/drivers/staging/android/ion/ion_system_heap.c
> +++ b/drivers/staging/android/ion/ion_system_heap.c
> @@ -75,9 +75,6 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,
>  
>  	page = ion_page_pool_alloc(pool);
>  
> -	if (cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> @@ -401,8 +398,6 @@ static int ion_system_contig_heap_allocate(struct ion_heap *heap,
>  
>  	buffer->sg_table = table;
>  
> -	ion_pages_sync_for_device(NULL, page, len, DMA_BIDIRECTIONAL);
> -
>  	return 0;
>  
>  free_table:
> -- 
> 2.7.4
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo at kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email at kvack.org </a>

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Laura Abbott <labbott@redhat.com>
Cc: devel@driverdev.osuosl.org, romlem@google.com,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	arve@android.com, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
	linux-mm@kvack.org, Riley Andrews <riandrews@android.com>,
	Mark Brown <broonie@kernel.org>,
	Daniel Vetter <daniel.vetter@intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org
Subject: Re: [RFC PATCH 06/12] staging: android: ion: Remove crufty cache support
Date: Fri, 3 Mar 2017 10:56:54 +0100	[thread overview]
Message-ID: <20170303095654.zbcqkcojo3vf6y4y@phenom.ffwll.local> (raw)
In-Reply-To: <1488491084-17252-7-git-send-email-labbott@redhat.com>

On Thu, Mar 02, 2017 at 01:44:38PM -0800, Laura Abbott wrote:
> 
> 
> Now that we call dma_map in the dma_buf API callbacks there is no need
> to use the existing cache APIs. Remove the sync ioctl and the existing
> bad dma_sync calls. Explicit caching can be handled with the dma_buf
> sync API.
> 
> Signed-off-by: Laura Abbott <labbott@redhat.com>
> ---
>  drivers/staging/android/ion/ion-ioctl.c         |  5 ----
>  drivers/staging/android/ion/ion.c               | 40 -------------------------
>  drivers/staging/android/ion/ion_carveout_heap.c |  6 ----
>  drivers/staging/android/ion/ion_chunk_heap.c    |  6 ----
>  drivers/staging/android/ion/ion_page_pool.c     |  3 --
>  drivers/staging/android/ion/ion_system_heap.c   |  5 ----
>  6 files changed, 65 deletions(-)
> 
> diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
> index 5b2e93f..f820d77 100644
> --- a/drivers/staging/android/ion/ion-ioctl.c
> +++ b/drivers/staging/android/ion/ion-ioctl.c
> @@ -146,11 +146,6 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
>  			data.handle.handle = handle->id;
>  		break;
>  	}
> -	case ION_IOC_SYNC:
> -	{
> -		ret = ion_sync_for_device(client, data.fd.fd);
> -		break;
> -	}

You missed the case ION_IOC_SYNC: in compat_ion.c.

While at it: Should we also remove the entire custom_ioctl infrastructure?
It's entirely unused afaict, and for a pure buffer allocator I don't see
any need to have custom ioctl.

More code to remove potentially:
- The entire compat ioctl stuff - would be an abi break, but I guess if we
  pick the 32bit abi and clean up the uapi headers we'll be mostly fine.
  would allow us to remove compat_ion.c entirely.

- ION_IOC_IMPORT: With this ion is purely an allocator, so not sure we
  still need to be able to import anything. All the cache flushing/mapping
  is done through dma-buf ops/ioctls.


With the case in compat_ion.c also removed, this patch is:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

>  	case ION_IOC_CUSTOM:
>  	{
>  		if (!dev->custom_ioctl)
> diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
> index 8eef1d7..c3c316f 100644
> --- a/drivers/staging/android/ion/ion.c
> +++ b/drivers/staging/android/ion/ion.c
> @@ -815,22 +815,6 @@ static void ion_unmap_dma_buf(struct dma_buf_attachment *attachment,
>  	free_duped_table(table);
>  }
>  
> -void ion_pages_sync_for_device(struct device *dev, struct page *page,
> -			       size_t size, enum dma_data_direction dir)
> -{
> -	struct scatterlist sg;
> -
> -	sg_init_table(&sg, 1);
> -	sg_set_page(&sg, page, size, 0);
> -	/*
> -	 * This is not correct - sg_dma_address needs a dma_addr_t that is valid
> -	 * for the targeted device, but this works on the currently targeted
> -	 * hardware.
> -	 */
> -	sg_dma_address(&sg) = page_to_phys(page);
> -	dma_sync_sg_for_device(dev, &sg, 1, dir);
> -}
> -
>  static int ion_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
>  {
>  	struct ion_buffer *buffer = dmabuf->priv;
> @@ -1042,30 +1026,6 @@ struct ion_handle *ion_import_dma_buf_fd(struct ion_client *client, int fd)
>  }
>  EXPORT_SYMBOL(ion_import_dma_buf_fd);
>  
> -int ion_sync_for_device(struct ion_client *client, int fd)
> -{
> -	struct dma_buf *dmabuf;
> -	struct ion_buffer *buffer;
> -
> -	dmabuf = dma_buf_get(fd);
> -	if (IS_ERR(dmabuf))
> -		return PTR_ERR(dmabuf);
> -
> -	/* if this memory came from ion */
> -	if (dmabuf->ops != &dma_buf_ops) {
> -		pr_err("%s: can not sync dmabuf from another exporter\n",
> -		       __func__);
> -		dma_buf_put(dmabuf);
> -		return -EINVAL;
> -	}
> -	buffer = dmabuf->priv;
> -
> -	dma_sync_sg_for_device(NULL, buffer->sg_table->sgl,
> -			       buffer->sg_table->nents, DMA_BIDIRECTIONAL);
> -	dma_buf_put(dmabuf);
> -	return 0;
> -}
> -
>  int ion_query_heaps(struct ion_client *client, struct ion_heap_query *query)
>  {
>  	struct ion_device *dev = client->dev;
> diff --git a/drivers/staging/android/ion/ion_carveout_heap.c b/drivers/staging/android/ion/ion_carveout_heap.c
> index 9bf8e98..e0e360f 100644
> --- a/drivers/staging/android/ion/ion_carveout_heap.c
> +++ b/drivers/staging/android/ion/ion_carveout_heap.c
> @@ -100,10 +100,6 @@ static void ion_carveout_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	ion_carveout_free(heap, paddr, buffer->size);
>  	sg_free_table(table);
>  	kfree(table);
> @@ -128,8 +124,6 @@ struct ion_heap *ion_carveout_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_chunk_heap.c b/drivers/staging/android/ion/ion_chunk_heap.c
> index 8c41889..46e13f6 100644
> --- a/drivers/staging/android/ion/ion_chunk_heap.c
> +++ b/drivers/staging/android/ion/ion_chunk_heap.c
> @@ -101,10 +101,6 @@ static void ion_chunk_heap_free(struct ion_buffer *buffer)
>  
>  	ion_heap_buffer_zero(buffer);
>  
> -	if (ion_buffer_cached(buffer))
> -		dma_sync_sg_for_device(NULL, table->sgl, table->nents,
> -				       DMA_BIDIRECTIONAL);
> -
>  	for_each_sg(table->sgl, sg, table->nents, i) {
>  		gen_pool_free(chunk_heap->pool, page_to_phys(sg_page(sg)),
>  			      sg->length);
> @@ -132,8 +128,6 @@ struct ion_heap *ion_chunk_heap_create(struct ion_platform_heap *heap_data)
>  	page = pfn_to_page(PFN_DOWN(heap_data->base));
>  	size = heap_data->size;
>  
> -	ion_pages_sync_for_device(NULL, page, size, DMA_BIDIRECTIONAL);
> -
>  	ret = ion_heap_pages_zero(page, size, pgprot_writecombine(PAGE_KERNEL));
>  	if (ret)
>  		return ERR_PTR(ret);
> diff --git a/drivers/staging/android/ion/ion_page_pool.c b/drivers/staging/android/ion/ion_page_pool.c
> index aea89c1..532eda7 100644
> --- a/drivers/staging/android/ion/ion_page_pool.c
> +++ b/drivers/staging/android/ion/ion_page_pool.c
> @@ -30,9 +30,6 @@ static void *ion_page_pool_alloc_pages(struct ion_page_pool *pool)
>  
>  	if (!page)
>  		return NULL;
> -	if (!pool->cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << pool->order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
> index 6cb2fe7..a33331b 100644
> --- a/drivers/staging/android/ion/ion_system_heap.c
> +++ b/drivers/staging/android/ion/ion_system_heap.c
> @@ -75,9 +75,6 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,
>  
>  	page = ion_page_pool_alloc(pool);
>  
> -	if (cached)
> -		ion_pages_sync_for_device(NULL, page, PAGE_SIZE << order,
> -					  DMA_BIDIRECTIONAL);
>  	return page;
>  }
>  
> @@ -401,8 +398,6 @@ static int ion_system_contig_heap_allocate(struct ion_heap *heap,
>  
>  	buffer->sg_table = table;
>  
> -	ion_pages_sync_for_device(NULL, page, len, DMA_BIDIRECTIONAL);
> -
>  	return 0;
>  
>  free_table:
> -- 
> 2.7.4
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2017-03-03  9:58 UTC|newest]

Thread overview: 256+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-02 21:44 [RFC PATCH 00/12] Ion cleanup in preparation for moving out of staging Laura Abbott
2017-03-02 21:44 ` Laura Abbott
2017-03-02 21:44 ` Laura Abbott
2017-03-02 21:44 ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 01/12] staging: android: ion: Remove dmap_cnt Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 02/12] staging: android: ion: Remove alignment from allocation field Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 03/12] staging: android: ion: Duplicate sg_table Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03  8:18   ` Hillf Danton
2017-03-03  8:18     ` Hillf Danton
2017-03-03  8:18     ` Hillf Danton
2017-03-03 18:41     ` Laura Abbott
2017-03-03 18:41       ` Laura Abbott
2017-03-03 18:41       ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 04/12] staging: android: ion: Call dma_map_sg for syncing and mapping Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03 11:04   ` Dan Carpenter
2017-03-03 11:04     ` Dan Carpenter
2017-03-03 11:04     ` Dan Carpenter
2017-03-03 11:04     ` Dan Carpenter
2017-03-03 11:58     ` Eric Engestrom
2017-03-03 11:58       ` Eric Engestrom
2017-03-03 11:58       ` Eric Engestrom
2017-03-03 16:37   ` Laurent Pinchart
2017-03-03 16:37     ` Laurent Pinchart
2017-03-03 16:37     ` Laurent Pinchart
2017-03-03 16:37     ` Laurent Pinchart
2017-03-03 18:40     ` Laura Abbott
2017-03-03 18:40       ` Laura Abbott
2017-03-03 18:40       ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 05/12] staging: android: ion: Remove page faulting support Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 06/12] staging: android: ion: Remove crufty cache support Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03  9:56   ` Daniel Vetter [this message]
2017-03-03  9:56     ` Daniel Vetter
2017-03-03  9:56     ` Daniel Vetter
2017-03-03  9:56     ` Daniel Vetter
2017-03-03 16:39     ` Laurent Pinchart
2017-03-03 16:39       ` Laurent Pinchart
2017-03-03 16:39       ` Laurent Pinchart
2017-03-03 16:39       ` Laurent Pinchart
2017-03-03 18:46       ` Laura Abbott
2017-03-03 18:46         ` Laura Abbott
2017-03-03 18:46         ` Laura Abbott
2017-03-03 18:46         ` Laura Abbott
2017-03-06 10:29         ` Daniel Vetter
2017-03-06 10:29           ` Daniel Vetter
2017-03-06 10:29           ` Daniel Vetter
2017-03-06 10:29           ` Daniel Vetter
2017-03-06 17:00           ` Emil Velikov
2017-03-06 17:00             ` Emil Velikov
2017-03-06 17:00             ` Emil Velikov
2017-03-06 19:20             ` Laura Abbott
2017-03-06 19:20               ` Laura Abbott
2017-03-06 19:20               ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 07/12] staging: android: ion: Remove old platform support Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03 10:31   ` Daniel Vetter
2017-03-03 10:31     ` Daniel Vetter
2017-03-03 10:31     ` Daniel Vetter
2017-03-03 10:31     ` Daniel Vetter
2017-03-02 21:44 ` [RFC PATCH 08/12] cma: Store a name in the cma structure Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-10  8:53   ` Sumit Semwal
2017-03-10  8:53     ` Sumit Semwal
2017-03-10  8:53     ` Sumit Semwal
2017-03-17 18:02     ` Laura Abbott
2017-03-17 18:02       ` Laura Abbott
2017-03-17 18:02       ` Laura Abbott
2017-03-17 18:02       ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 09/12] cma: Introduce cma_for_each_area Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 10/12] staging: android: ion: Use CMA APIs directly Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03 16:41   ` Laurent Pinchart
2017-03-03 16:41     ` Laurent Pinchart
2017-03-03 16:41     ` Laurent Pinchart
2017-03-03 16:41     ` Laurent Pinchart
2017-03-03 18:50     ` Laura Abbott
2017-03-03 18:50       ` Laura Abbott
2017-03-03 18:50       ` Laura Abbott
2017-03-06 10:32       ` Daniel Vetter
2017-03-06 10:32         ` Daniel Vetter
2017-03-06 10:32         ` Daniel Vetter
2017-03-06 13:43         ` Laurent Pinchart
2017-03-06 13:43           ` Laurent Pinchart
2017-03-06 13:43           ` Laurent Pinchart
2017-03-06 13:43           ` Laurent Pinchart
2017-03-06 15:52           ` Daniel Vetter
2017-03-06 15:52             ` Daniel Vetter
2017-03-06 15:52             ` Daniel Vetter
2017-03-06 19:14             ` Laura Abbott
2017-03-06 19:14               ` Laura Abbott
2017-03-06 19:14               ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 11/12] staging: android: ion: Make Ion heaps selectable Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03 10:33   ` Daniel Vetter
2017-03-03 10:33     ` Daniel Vetter
2017-03-03 10:33     ` Daniel Vetter
2017-03-03 10:33     ` Daniel Vetter
2017-03-03 19:10     ` Laura Abbott
2017-03-03 19:10       ` Laura Abbott
2017-03-03 19:10       ` Laura Abbott
2017-03-02 21:44 ` [RFC PATCH 12/12] staging; android: ion: Enumerate all available heaps Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-02 21:44   ` Laura Abbott
2017-03-03 10:39   ` Daniel Vetter
2017-03-03 10:39     ` Daniel Vetter
2017-03-03 10:39     ` Daniel Vetter
2017-03-03 10:39     ` Daniel Vetter
2017-03-03 10:04 ` [RFC PATCH 00/12] Ion cleanup in preparation for moving out of staging Daniel Vetter
2017-03-03 10:04   ` Daniel Vetter
2017-03-03 10:04   ` Daniel Vetter
2017-03-03 10:27   ` Daniel Vetter
2017-03-03 10:27     ` Daniel Vetter
2017-03-03 10:27     ` Daniel Vetter
2017-03-03 10:27     ` Daniel Vetter
2017-03-03 12:54     ` Benjamin Gaignard
2017-03-03 12:54       ` Benjamin Gaignard
2017-03-03 12:54       ` Benjamin Gaignard
2017-03-03 16:45   ` Laurent Pinchart
2017-03-03 16:45     ` Laurent Pinchart
2017-03-03 16:45     ` Laurent Pinchart
2017-03-03 16:45     ` Laurent Pinchart
2017-03-03 19:16     ` Laura Abbott
2017-03-03 19:16       ` Laura Abbott
2017-03-03 19:16       ` Laura Abbott
2017-03-06 10:38     ` Daniel Vetter
2017-03-06 10:38       ` Daniel Vetter
2017-03-06 10:38       ` Daniel Vetter
2017-03-06 15:02       ` Laurent Pinchart
2017-03-06 15:02         ` Laurent Pinchart
2017-03-06 15:02         ` Laurent Pinchart
2017-03-06 16:01         ` Daniel Vetter
2017-03-06 16:01           ` Daniel Vetter
2017-03-06 16:01           ` Daniel Vetter
2017-03-03 13:29 ` Michal Hocko
2017-03-03 13:29   ` Michal Hocko
2017-03-03 13:29   ` Michal Hocko
2017-03-03 17:37   ` Laura Abbott
2017-03-03 17:37     ` Laura Abbott
2017-03-03 17:37     ` Laura Abbott
2017-03-03 17:37     ` Laura Abbott
2017-03-06  7:42     ` Michal Hocko
2017-03-06  7:42       ` Michal Hocko
2017-03-06  7:42       ` Michal Hocko
2017-03-06 10:40       ` Daniel Vetter
2017-03-06 10:40         ` Daniel Vetter
2017-03-06 10:40         ` Daniel Vetter
2017-03-06 10:58         ` Mark Brown
2017-03-06 10:58           ` Mark Brown
2017-03-06 10:58           ` Mark Brown
2017-03-06 16:04           ` Daniel Vetter
2017-03-06 16:04             ` Daniel Vetter
2017-03-06 16:04             ` Daniel Vetter
2017-03-06 16:04             ` Daniel Vetter
2017-03-09 10:00             ` Benjamin Gaignard
2017-03-09 10:00               ` Benjamin Gaignard
2017-03-09 10:00               ` Benjamin Gaignard
2017-03-09 10:00               ` Benjamin Gaignard
2017-03-09 17:38               ` Laura Abbott
2017-03-09 17:38                 ` Laura Abbott
2017-03-09 17:38                 ` Laura Abbott
2017-03-09 17:38                 ` Laura Abbott
2017-03-10 10:31                 ` Brian Starkey
2017-03-10 10:31                   ` Brian Starkey
2017-03-10 10:31                   ` Brian Starkey
2017-03-10 11:46                   ` Robin Murphy
2017-03-10 11:46                     ` Robin Murphy
2017-03-10 11:46                     ` Robin Murphy
2017-03-10 14:27                     ` Brian Starkey
2017-03-10 14:27                       ` Brian Starkey
2017-03-10 14:27                       ` Brian Starkey
2017-03-10 14:27                       ` Brian Starkey
2017-03-10 16:46                       ` Laura Abbott
2017-03-10 16:46                         ` Laura Abbott
2017-03-10 16:46                         ` Laura Abbott
2017-03-10 16:46                         ` Laura Abbott
2017-03-10 12:40                   ` Daniel Vetter
2017-03-10 12:40                     ` Daniel Vetter
2017-03-10 12:40                     ` Daniel Vetter
2017-03-10 13:56                     ` Rob Clark
2017-03-10 13:56                       ` Rob Clark
2017-03-10 13:56                       ` Rob Clark
2017-03-12 13:34                 ` Benjamin Gaignard
2017-03-12 13:34                   ` Benjamin Gaignard
2017-03-12 13:34                   ` Benjamin Gaignard
2017-03-12 13:34                   ` Benjamin Gaignard
2017-03-12 19:05                   ` Daniel Vetter
2017-03-12 19:05                     ` Daniel Vetter
2017-03-12 19:05                     ` Daniel Vetter
2017-03-12 19:05                     ` Daniel Vetter
2017-03-13 21:09                     ` Laura Abbott
2017-03-13 21:09                       ` Laura Abbott
2017-03-13 21:09                       ` Laura Abbott
2017-03-13 21:09                       ` Laura Abbott
2017-03-13 21:29                       ` Rob Clark
2017-03-13 21:29                         ` Rob Clark
2017-03-13 21:29                         ` Rob Clark
2017-03-13 21:29                         ` Rob Clark
2017-03-13 21:59                         ` Laura Abbott
2017-03-13 21:59                           ` Laura Abbott
2017-03-13 21:59                           ` Laura Abbott
2017-03-14 14:47                       ` Benjamin Gaignard
2017-03-14 14:47                         ` Benjamin Gaignard
2017-03-14 14:47                         ` Benjamin Gaignard
2017-03-14 14:47                         ` Benjamin Gaignard
2017-03-14 19:45                         ` Laura Abbott
2017-03-14 19:45                           ` Laura Abbott
2017-03-14 19:45                           ` Laura Abbott
2017-03-14 20:28                         ` Nicolas Dufresne
2017-03-14 20:28                           ` Nicolas Dufresne
2017-03-14 20:28                           ` Nicolas Dufresne
2017-03-13 10:54                   ` Brian Starkey
2017-03-13 10:54                     ` Brian Starkey
2017-03-13 10:54                     ` Brian Starkey
2017-03-13 10:54                     ` Brian Starkey
2017-03-13 13:21                     ` Mark Brown
2017-03-13 13:21                       ` Mark Brown
2017-03-13 13:21                       ` Mark Brown
2017-03-13 21:45                       ` Laura Abbott
2017-03-13 21:45                         ` Laura Abbott
2017-03-13 21:45                         ` Laura Abbott
2017-03-13 21:45                         ` Laura Abbott
2017-03-13 21:29                     ` Laura Abbott
2017-03-13 21:29                       ` Laura Abbott
2017-03-13 21:29                       ` Laura Abbott
2017-03-06 13:34         ` Michal Hocko
2017-03-06 13:34           ` Michal Hocko
2017-03-06 13:34           ` Michal Hocko
2017-03-03 16:25 ` Laurent Pinchart
2017-03-03 16:25   ` Laurent Pinchart
2017-03-03 16:25   ` Laurent Pinchart
2017-03-03 19:14   ` Laura Abbott
2017-03-03 19:14     ` Laura Abbott
2017-03-03 19:14     ` Laura Abbott
2017-03-03 19:14     ` Laura Abbott

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170303095654.zbcqkcojo3vf6y4y@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=arve@android.com \
    --cc=benjamin.gaignard@linaro.org \
    --cc=brian.starkey@arm.com \
    --cc=broonie@kernel.org \
    --cc=daniel.vetter@intel.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=labbott@redhat.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=riandrews@android.com \
    --cc=romlem@google.com \
    --cc=sumit.semwal@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.