From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tomasz Stanislawski <t.stanislaws@samsung.com>
Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
airlied@redhat.com, m.szyprowski@samsung.com,
kyungmin.park@samsung.com, sumit.semwal@ti.com,
daeinki@gmail.com, daniel.vetter@ffwll.ch, robdclark@gmail.com,
pawel@osciak.com, linaro-mm-sig@lists.linaro.org,
hverkuil@xs4all.nl, remi@remlab.net, subashrp@gmail.com,
mchehab@redhat.com, zhangfei.gao@gmail.com,
s.nawrocki@samsung.com, k.debski@samsung.com
Subject: Re: [PATCHv10 23/26] v4l: vb2-dma-contig: align buffer size to PAGE_SIZE
Date: Tue, 16 Oct 2012 14:22:04 +0200 [thread overview]
Message-ID: <5977627.RglZjG67sF@avalon> (raw)
In-Reply-To: <5077D3C2.7010207@samsung.com>
Hi Tomasz,
On Friday 12 October 2012 10:24:34 Tomasz Stanislawski wrote:
> On 10/11/2012 11:31 PM, Laurent Pinchart wrote:
> > On Wednesday 10 October 2012 16:46:42 Tomasz Stanislawski wrote:
> >> Most operations on DMA and DMABUF framework need page
> >> aligned buffers.
> >
> > The comment is a bit misleading, the buffer is already page-aligned
> > (unless I'm mistaken dma_alloc_coherent() returns a page-aligned buffer)
> > but its size isn't a multiple of the page size.
>
> Ok. I will update the commit message that only buffer size is going to be
> page aligned.
>
> > Do we really need a page size multiple ? Isn't it enough to make the size
> > a multiple of the cache line size ?
>
> Frankly, I strongly oppose forcing a size of a DMA buffer to be rounded up.
>
> However, I discovered a problem while testing mmap() interface in dma-buf.
> The test in dma_buf_mmap() will fail if the size is not a multiple of 4k.
>
> Maybe the value from dma-buf.c:456 should be changed from:
>
> dmabuf->size >> PAGE_SHIFT
>
> to
>
> PAGE_ALIGN(dmabuf->size) >> PAGE_SHIFT
>
> However, I preferred to avoid any changes outside of the media tree hoping
> that the patchset gets merged. Rounding the buffer size to a page size was
> quick workaround for the issue with DMABUF mmap().
After some more thoughts I'm not sure whether this patch does the right thing.
We have two sizes that we neeed to care about, the user usable buffer size and
the allocated memory size.
When a user of a buffer requests buffer allocation with an explicit or
implicit size we might need to allocate a larger buffer to fulfill usage
requirements. We can thus end up with an allocated memory size larger than
what the user requested. Such usage requirements include
- DMA and CPU access: when accessing the buffer both through DMA and directly
by the CPU cache management comes into play, and the buffer address and size
then need to be aligned to a cache line size boundary.
- Mapping to userspace: we can only map complete pages to userspace, the
buffer address and size need to be aligned to a page size boundary to make
sure that we won't leak unrelated data to userspace.
As the cache line size is smaller than a page fulfilling the second
requirement always fulfills the first. There might be other requirements that
escape my mind right now.
As we don't precisely know at allocation time how the buffer will be used (for
instance whether it will eventually be mapped to userspace or not), we have
two options:
- Align the buffer size to a page size boundary unconditionally.
- Let the user handle that requirement by specifying an allocation size
aligned to a page size boundary.
Given the complexity associated with the second solution and the very small,
if not inexistent, expected memory gain (when using the DMA allocation APIs we
always get complete pages anyway, so there would be no gain in not aligning
the allocation size to a page size boundary), I think the first solution
should be preferred.
This leaves us with two questions related to buffer size: what size (between
the requested size and the actually allocated size) do we report back to the
user (in the v4l2_buffer length field for instance), and what size do we
report to the dma-buf core (and thus to the other subsystems and other buffer
users) ?
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2012-10-16 12:21 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-10 14:46 [PATCHv10 00/26] Integration of videobuf2 with DMABUF Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 01/26] v4l: Add DMABUF as a memory type Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 02/26] Documentation: media: description of DMABUF importing in V4L2 Tomasz Stanislawski
2012-10-15 7:53 ` Hans Verkuil
2012-10-10 14:46 ` [PATCHv10 03/26] v4l: vb2: add support for shared buffer (dma_buf) Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 04/26] v4l: vb: remove warnings about MEMORY_DMABUF Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 05/26] v4l: vb2-dma-contig: shorten vb2_dma_contig prefix to vb2_dc Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 06/26] v4l: vb2-dma-contig: remove reference of alloc_ctx from a buffer Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 07/26] v4l: vb2-dma-contig: reorder functions Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 08/26] v4l: vb2-dma-contig: add support for scatterlist in userptr mode Tomasz Stanislawski
2012-10-26 16:24 ` Pawel Osciak
2012-10-30 6:43 ` Marek Szyprowski
2012-10-10 14:46 ` [PATCHv10 09/26] v4l: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 10/26] v4l: vb2-dma-contig: add prepare/finish to dma-contig allocator Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 11/26] v4l: vb2-dma-contig: add support for dma_buf importing Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 12/26] v4l: vb2-vmalloc: add support for dmabuf importing Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 13/26] v4l: vivi: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 14/26] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 15/26] v4l: s5p-fimc: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 16/26] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 17/26] Documentation: media: description of DMABUF exporting in V4L2 Tomasz Stanislawski
2012-10-15 7:59 ` Hans Verkuil
2012-10-10 14:46 ` [PATCHv10 18/26] v4l: add buffer exporting via dmabuf Tomasz Stanislawski
2012-10-15 8:01 ` Hans Verkuil
2012-10-10 14:46 ` [PATCHv10 19/26] v4l: vb2: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 20/26] v4l: vb2-dma-contig: add support for DMABUF exporting Tomasz Stanislawski
2012-10-11 21:46 ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 21/26] v4l: vb2-dma-contig: add reference counting for a device from allocator context Tomasz Stanislawski
2012-10-11 21:49 ` Laurent Pinchart
2012-10-12 6:28 ` Tomasz Stanislawski
2012-10-12 9:32 ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 22/26] v4l: vb2-dma-contig: fail if user ptr buffer is not correctly aligned Tomasz Stanislawski
2012-10-11 21:36 ` Laurent Pinchart
2012-10-12 7:44 ` Tomasz Stanislawski
2012-10-12 7:58 ` Hans Verkuil
2012-10-12 9:34 ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 23/26] v4l: vb2-dma-contig: align buffer size to PAGE_SIZE Tomasz Stanislawski
2012-10-11 21:31 ` Laurent Pinchart
2012-10-12 8:24 ` Tomasz Stanislawski
2012-10-16 12:22 ` Laurent Pinchart [this message]
2012-10-10 14:46 ` [PATCHv10 24/26] v4l: s5p-fimc: support for dmabuf exporting Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 25/26] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 26/26] v4l: s5p-mfc: " Tomasz Stanislawski
2012-11-08 12:05 ` [PATCH 27/26] v4l: vb2: Set data_offset to 0 for single-plane buffers Laurent Pinchart
2012-11-08 12:13 ` Marek Szyprowski
2012-11-08 12:19 ` Laurent Pinchart
2012-11-08 15:28 ` Tomasz Stanislawski
2012-11-08 16:36 ` Laurent Pinchart
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=5977627.RglZjG67sF@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=airlied@redhat.com \
--cc=daeinki@gmail.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=hverkuil@xs4all.nl \
--cc=k.debski@samsung.com \
--cc=kyungmin.park@samsung.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=robdclark@gmail.com \
--cc=s.nawrocki@samsung.com \
--cc=subashrp@gmail.com \
--cc=sumit.semwal@ti.com \
--cc=t.stanislaws@samsung.com \
--cc=zhangfei.gao@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).