From: Tomasz Stanislawski <t.stanislaws@samsung.com>
To: linux-media@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org, airlied@redhat.com,
m.szyprowski@samsung.com, kyungmin.park@samsung.com,
laurent.pinchart@ideasonboard.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, g.liakhovetski@gmx.de,
Sumit Semwal <sumit.semwal@linaro.org>
Subject: Re: [PATCHv7 01/15] v4l: Add DMABUF as a memory type
Date: Mon, 18 Jun 2012 13:14:16 +0200 [thread overview]
Message-ID: <4FDF0D88.2040801@samsung.com> (raw)
In-Reply-To: <1339681069-8483-2-git-send-email-t.stanislaws@samsung.com>
Hi everyone,
The automatic build system informed me that
there is a shameful error in this patch.
The declarations of fd fields in v4l2_plane32 and
v4l2_buffer32 are missing. It breaks build process
for 64-bit architectures. I am deeply sorry for
posting a patch without testing it enough.
The build-break will be fixed in the next version of
the patchset.
Regards,
Tomasz Stanislawski
On 06/14/2012 03:37 PM, Tomasz Stanislawski wrote:
> From: Sumit Semwal <sumit.semwal@ti.com>
>
> Adds DMABUF memory type to v4l framework. Also adds the related file
> descriptor in v4l2_plane and v4l2_buffer.
>
> Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com>
> [original work in the PoC for buffer sharing]
> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
> Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/media/video/v4l2-compat-ioctl32.c | 16 ++++++++++++++++
> drivers/media/video/v4l2-ioctl.c | 1 +
> include/linux/videodev2.h | 7 +++++++
> 3 files changed, 24 insertions(+)
>
> diff --git a/drivers/media/video/v4l2-compat-ioctl32.c b/drivers/media/video/v4l2-compat-ioctl32.c
> index 5327ad3..d33ab18 100644
> --- a/drivers/media/video/v4l2-compat-ioctl32.c
> +++ b/drivers/media/video/v4l2-compat-ioctl32.c
> @@ -348,6 +348,9 @@ static int get_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
> up_pln = compat_ptr(p);
> if (put_user((unsigned long)up_pln, &up->m.userptr))
> return -EFAULT;
> + } else if (memory == V4L2_MEMORY_DMABUF) {
> + if (copy_in_user(&up->m.fd, &up32->m.fd, sizeof(int)))
> + return -EFAULT;
> } else {
> if (copy_in_user(&up->m.mem_offset, &up32->m.mem_offset,
> sizeof(__u32)))
> @@ -371,6 +374,11 @@ static int put_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
> if (copy_in_user(&up32->m.mem_offset, &up->m.mem_offset,
> sizeof(__u32)))
> return -EFAULT;
> + /* For DMABUF, driver might've set up the fd, so copy it back. */
> + if (memory == V4L2_MEMORY_DMABUF)
> + if (copy_in_user(&up32->m.fd, &up->m.fd,
> + sizeof(int)))
> + return -EFAULT;
>
> return 0;
> }
> @@ -454,6 +462,10 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
> if (get_user(kp->m.offset, &up->m.offset))
> return -EFAULT;
> break;
> + case V4L2_MEMORY_DMABUF:
> + if (get_user(kp->m.fd, &up->m.fd))
> + return -EFAULT;
> + break;
> }
> }
>
> @@ -518,6 +530,10 @@ static int put_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
> if (put_user(kp->m.offset, &up->m.offset))
> return -EFAULT;
> break;
> + case V4L2_MEMORY_DMABUF:
> + if (put_user(kp->m.fd, &up->m.fd))
> + return -EFAULT;
> + break;
> }
> }
>
> diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
> index 91be4e8..31fc2ad 100644
> --- a/drivers/media/video/v4l2-ioctl.c
> +++ b/drivers/media/video/v4l2-ioctl.c
> @@ -175,6 +175,7 @@ static const char *v4l2_memory_names[] = {
> [V4L2_MEMORY_MMAP] = "mmap",
> [V4L2_MEMORY_USERPTR] = "userptr",
> [V4L2_MEMORY_OVERLAY] = "overlay",
> + [V4L2_MEMORY_DMABUF] = "dmabuf",
> };
>
> #define prt_names(a, arr) ((((a) >= 0) && ((a) < ARRAY_SIZE(arr))) ? \
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index 370d111..51b20f4 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -185,6 +185,7 @@ enum v4l2_memory {
> V4L2_MEMORY_MMAP = 1,
> V4L2_MEMORY_USERPTR = 2,
> V4L2_MEMORY_OVERLAY = 3,
> + V4L2_MEMORY_DMABUF = 4,
> };
>
> /* see also http://vektor.theorem.ca/graphics/ycbcr/ */
> @@ -591,6 +592,8 @@ struct v4l2_requestbuffers {
> * should be passed to mmap() called on the video node)
> * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer
> * pointing to this plane
> + * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file
> + * descriptor associated with this plane
> * @data_offset: offset in the plane to the start of data; usually 0,
> * unless there is a header in front of the data
> *
> @@ -605,6 +608,7 @@ struct v4l2_plane {
> union {
> __u32 mem_offset;
> unsigned long userptr;
> + int fd;
> } m;
> __u32 data_offset;
> __u32 reserved[11];
> @@ -629,6 +633,8 @@ struct v4l2_plane {
> * (or a "cookie" that should be passed to mmap() as offset)
> * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;
> * a userspace pointer pointing to this buffer
> + * @fd: for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF;
> + * a userspace file descriptor associated with this buffer
> * @planes: for multiplanar buffers; userspace pointer to the array of plane
> * info structs for this buffer
> * @length: size in bytes of the buffer (NOT its payload) for single-plane
> @@ -655,6 +661,7 @@ struct v4l2_buffer {
> __u32 offset;
> unsigned long userptr;
> struct v4l2_plane *planes;
> + int fd;
> } m;
> __u32 length;
> __u32 input;
next prev parent reply other threads:[~2012-06-18 11:14 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-14 13:37 [PATCHv7 00/15] Integration of videobuf2 with dmabuf Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 01/15] v4l: Add DMABUF as a memory type Tomasz Stanislawski
2012-06-18 11:14 ` Tomasz Stanislawski [this message]
2012-06-14 13:37 ` [PATCHv7 02/15] Documentation: media: description of DMABUF importing in V4L2 Tomasz Stanislawski
2012-06-19 19:56 ` Laurent Pinchart
2012-06-14 13:37 ` [PATCHv7 03/15] v4l: vb2: add support for shared buffer (dma_buf) Tomasz Stanislawski
2012-06-20 6:12 ` Dima Zavin
2012-06-25 17:03 ` Dima Zavin
2012-06-26 8:40 ` Tomasz Stanislawski
2012-06-26 9:11 ` Laurent Pinchart
2012-06-26 9:40 ` Hans Verkuil
2012-06-26 20:53 ` Dima Zavin
2012-06-27 20:40 ` Laurent Pinchart
2012-08-02 16:31 ` Tomasz Stanislawski
2012-08-02 16:31 ` Tomasz Stanislawski
2012-08-15 1:13 ` Laurent Pinchart
2012-06-26 20:44 ` Dima Zavin
2012-06-14 13:37 ` [PATCHv7 04/15] v4l: vb: remove warnings about MEMORY_DMABUF Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 05/15] v4l: vb2-dma-contig: Shorten vb2_dma_contig prefix to vb2_dc Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 06/15] v4l: vb2-dma-contig: remove reference of alloc_ctx from a buffer Tomasz Stanislawski
2012-06-19 21:00 ` Laurent Pinchart
2012-06-20 11:51 ` Tomasz Stanislawski
2012-06-20 13:02 ` Laurent Pinchart
2012-06-14 13:37 ` [PATCHv7 07/15] v4l: vb2-dma-contig: Reorder functions Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 08/15] v4l: vb2-dma-contig: add support for scatterlist in userptr mode Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 09/15] v4l: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 10/15] v4l: vb2-dma-contig: add prepare/finish to dma-contig allocator Tomasz Stanislawski
2012-06-19 20:07 ` Laurent Pinchart
2012-06-14 13:37 ` [PATCHv7 11/15] v4l: vb2-dma-contig: add support for dma_buf importing Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 12/15] v4l: vb2-vmalloc: add support for dmabuf importing Tomasz Stanislawski
2012-06-19 20:30 ` Laurent Pinchart
2012-06-14 13:37 ` [PATCHv7 13/15] v4l: vivi: " Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 14/15] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-06-14 13:37 ` [PATCHv7 15/15] v4l: s5p-fimc: " Tomasz Stanislawski
2012-06-19 21:16 ` [PATCHv7 00/15] Integration of videobuf2 with dmabuf Laurent Pinchart
2012-07-31 6:23 ` Hans Verkuil
2012-07-31 6:34 ` Hans Verkuil
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=4FDF0D88.2040801@samsung.com \
--to=t.stanislaws@samsung.com \
--cc=airlied@redhat.com \
--cc=daeinki@gmail.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=g.liakhovetski@gmx.de \
--cc=hverkuil@xs4all.nl \
--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=robdclark@gmail.com \
--cc=subashrp@gmail.com \
--cc=sumit.semwal@linaro.org \
--cc=sumit.semwal@ti.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.