From: Tomasz Stanislawski <t.stanislaws@samsung.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: pawel@osciak.com, mchehab@redhat.com, daniel.vetter@ffwll.ch,
dri-devel@lists.freedesktop.org, subashrp@gmail.com,
linaro-mm-sig@lists.linaro.org, kyungmin.park@samsung.com,
Andrzej Pietrasiewicz <andrzej.p@samsung.com>,
airlied@redhat.com, remi@remlab.net, linux-media@vger.kernel.org,
m.szyprowski@samsung.com
Subject: Re: [PATCH v4 08/14] v4l: vb2-dma-contig: add support for scatterlist in userptr mode
Date: Fri, 20 Apr 2012 10:52:53 +0200 [thread overview]
Message-ID: <4F9123E5.6040602@samsung.com> (raw)
In-Reply-To: <6297844.L9YCZPPyju@avalon>
Hi Laurent,
On 04/17/2012 02:43 AM, Laurent Pinchart wrote:
> Hi Tomasz,
>
> Thanks for the patch.
>
> On Friday 13 April 2012 17:47:50 Tomasz Stanislawski wrote:
>> From: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
>>
>> This patch introduces usage of dma_map_sg to map memory behind
>> a userspace pointer to a device as dma-contiguous mapping.
>>
>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> [bugfixing]
>> Signed-off-by: Kamil Debski <k.debski@samsung.com>
>> [bugfixing]
>> Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com>
>> [add sglist subroutines/code refactoring]
>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>> ---
>> drivers/media/video/videobuf2-dma-contig.c | 287 +++++++++++++++++++++++--
>> 1 files changed, 270 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/media/video/videobuf2-dma-contig.c
>> b/drivers/media/video/videobuf2-dma-contig.c index 476e536..3a1e314 100644
>> --- a/drivers/media/video/videobuf2-dma-contig.c
>> +++ b/drivers/media/video/videobuf2-dma-contig.c
>
> [snip]
>
I found out that the function below may be useful for DMABUF
exporters and importers. I found that its code in
'[PATCH 1/4] [RFC] drm/exynos: DMABUF: Added support for exporting non-contig buffers'
by Prathyush K.
Therefore I posted a patch on linux-media:
'[PATCH] scatterlist: add sg_alloc_table_by_pages function'.
For now I will keep the function below (with your fixes). If
the patch above gets merged then the function will be removed.
Regards,
Tomasz Stanislawski
>> +static struct sg_table *vb2_dc_pages_to_sgt(struct page **pages,
>> + unsigned int n_pages, unsigned long offset, unsigned long size)
>> +{
>> + struct sg_table *sgt;
>> + unsigned int chunks;
>> + unsigned int i;
>> + unsigned int cur_page;
>> + int ret;
>> + struct scatterlist *s;
>> + unsigned int offset_end = n_pages * PAGE_SIZE - size;
>
> Shouldn't offset_end be equal to n_page * PAGE_SIZE - size - offset ?
>
>> + sgt = kzalloc(sizeof *sgt, GFP_KERNEL);
>> + if (!sgt)
>> + return ERR_PTR(-ENOMEM);
>> +
>> + /* compute number of chunks */
>> + chunks = 1;
>> + for (i = 1; i < n_pages; ++i)
>> + if (pages[i] != pages[i - 1] + 1)
>> + ++chunks;
>> +
>> + ret = sg_alloc_table(sgt, chunks, GFP_KERNEL);
>> + if (ret) {
>> + kfree(sgt);
>> + return ERR_PTR(-ENOMEM);
>> + }
>> +
>> + /* merging chunks and putting them into the scatterlist */
>> + cur_page = 0;
>> + for_each_sg(sgt->sgl, s, sgt->orig_nents, i) {
>> + size_t size = PAGE_SIZE;
>
> This will shadow the size parameter, it's a bit confusing. You could rename it
> chunk_size.
>
>> + unsigned int j;
>> +
>> + for (j = cur_page + 1; j < n_pages; ++j) {
>> + if (pages[j] != pages[j - 1] + 1)
>> + break;
>> + size += PAGE_SIZE;
>> + }
>
>> + /* cut offset if chunk starts at the first page */
>> + if (cur_page == 0)
>> + size -= offset;
>> + /* cut offset_end if chunk ends at the last page */
>> + if (j == n_pages)
>> + size -= offset_end;
>> +
>> + sg_set_page(s, pages[cur_page], size, offset);
>> + offset = 0;
>
> What about just
>
> chunk_size -= offset;
> sg_set_page(s, pages[cur_page], min(size, chunk_size), offset);
> size -= chunk_size;
> offset = 0;
>
> You could then remove the offset_end calculation above.
>
>> + cur_page = j;
>> + }
>> +
>> + return sgt;
>> +}
>
next prev parent reply other threads:[~2012-04-20 8:52 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-13 15:47 [PATCH v4 00/14] Integration of videobuf2 with dmabuf Tomasz Stanislawski
2012-04-13 15:47 ` [PATCH v4 01/14] v4l: Add DMABUF as a memory type Tomasz Stanislawski
2012-04-17 0:57 ` Laurent Pinchart
2012-04-13 15:47 ` [PATCH v4 02/14] Documentation: media: description of DMABUF importing in V4L2 Tomasz Stanislawski
2012-04-16 23:25 ` Laurent Pinchart
2012-04-19 14:32 ` Tomasz Stanislawski
2012-04-19 20:36 ` Mauro Carvalho Chehab
2012-04-19 20:37 ` Mauro Carvalho Chehab
2012-04-20 8:41 ` Tomasz Stanislawski
2012-04-20 10:56 ` Rémi Denis-Courmont
2012-04-20 10:56 ` Rémi Denis-Courmont
2012-04-20 12:25 ` Tomasz Stanislawski
2012-04-20 13:03 ` Rémi Denis-Courmont
2012-04-20 13:03 ` Rémi Denis-Courmont
2012-04-21 17:10 ` Laurent Pinchart
2012-04-20 14:48 ` Mauro Carvalho Chehab
2012-04-20 13:36 ` Mauro Carvalho Chehab
2012-04-23 7:50 ` Marek Szyprowski
2012-04-23 14:00 ` Mauro Carvalho Chehab
2012-04-13 15:47 ` [PATCH v4 03/14] v4l: vb2: add support for shared buffer (dma_buf) Tomasz Stanislawski
2012-04-17 0:57 ` Laurent Pinchart
2012-04-13 15:47 ` [PATCH v4 04/14] v4l: vb: remove warnings about MEMORY_DMABUF Tomasz Stanislawski
2012-04-17 0:57 ` Laurent Pinchart
2012-04-13 15:47 ` [PATCH v4 05/14] v4l: vb2-dma-contig: Shorten vb2_dma_contig prefix to vb2_dc Tomasz Stanislawski
2012-04-13 15:47 ` [PATCH v4 06/14] v4l: vb2-dma-contig: Remove unneeded allocation context structure Tomasz Stanislawski
2012-04-17 0:57 ` Laurent Pinchart
2012-04-13 15:47 ` [PATCH v4 07/14] v4l: vb2-dma-contig: Reorder functions Tomasz Stanislawski
2012-04-13 15:47 ` [PATCH v4 08/14] v4l: vb2-dma-contig: add support for scatterlist in userptr mode Tomasz Stanislawski
2012-04-17 0:43 ` Laurent Pinchart
2012-04-17 0:43 ` Laurent Pinchart
2012-04-20 8:52 ` Tomasz Stanislawski [this message]
2012-04-13 15:47 ` [PATCH v4 09/14] v4l: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-04-17 0:57 ` Laurent Pinchart
2012-04-13 15:47 ` [PATCH v4 10/14] v4l: vb2-dma-contig: add prepare/finish to dma-contig allocator Tomasz Stanislawski
2012-04-13 15:47 ` [PATCH v4 11/14] v4l: vb2-dma-contig: add support for dma_buf importing Tomasz Stanislawski
2012-04-17 0:57 ` Laurent Pinchart
2012-04-17 0:57 ` Laurent Pinchart
2012-04-19 11:38 ` Tomasz Stanislawski
2012-04-13 15:47 ` [PATCH v4 12/14] v4l: vb2-dma-contig: change map/unmap behaviour for importers Tomasz Stanislawski
2012-04-17 1:03 ` Laurent Pinchart
2012-04-13 15:47 ` [PATCH v4 13/14] v4l: s5p-tv: mixer: support for dmabuf importing Tomasz Stanislawski
2012-04-13 15:47 ` [PATCH v4 14/14] v4l: fimc: " Tomasz Stanislawski
2012-04-20 12:56 ` Sylwester Nawrocki
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=4F9123E5.6040602@samsung.com \
--to=t.stanislaws@samsung.com \
--cc=airlied@redhat.com \
--cc=andrzej.p@samsung.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=kyungmin.park@samsung.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-media@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mchehab@redhat.com \
--cc=pawel@osciak.com \
--cc=remi@remlab.net \
--cc=subashrp@gmail.com \
/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.