Received: by 10.223.185.116 with SMTP id b49csp754479wrg; Tue, 20 Feb 2018 07:21:50 -0800 (PST) X-Google-Smtp-Source: AH8x225a/dwj8Yz7jQ/EqkXCVcRQ54ggUpz/Am1WZ4nAe/8vJo6hiWv0HUlrk2ZK7tyn1bOpDmli X-Received: by 10.101.90.203 with SMTP id d11mr15186282pgt.366.1519140109891; Tue, 20 Feb 2018 07:21:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519140109; cv=none; d=google.com; s=arc-20160816; b=h+moPNrw1PB3kT060TYOuo9meAlRXOXA7UUL/TKevuoiceFggiWl50XmNmWb6lTuIp Ia3bEke0XDLkAIsInYnStOsdCo1MveHiPDUqGzL5h2NwCwWrD6X/UCm/9rTc1/lBz/0T VupJsaG/XzWGxOXLbUi2D6ZH6+AdAuDyMEzkF3kiZQK/lpYyneR8Jjn3E86XnwCIGcNo tNGnmSKLMA7vL2qaqAXeD5epXcAfsGDppmym3GLvhYvNDO51d0o4IoHgPouoJmhoPF4u bUqJfuVFY5GdWBM25e4JNEuAD6jdTpIDLX1w9mo9VG0JJwi6sSw6Ez3LUADOdGDapOSU SlfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=2/hg0pLmZO7EDjDWTHe/NXZt9wCI0efeRaeeQ+R7ELU=; b=0nqAD09ilwqBh4W9KNc/9FjhRlxj5C69xaIaN0/YDK/NJAFdFlML56Q47tjhvmzO21 bvLXUmiKXJJ1tapD1NrmGuqYE2loSioQVHvm7ceT13WBMWGzahny6Bm/uc/tr4Hdu+8e XzhZpWgq6goNFsPpTgof5hL/cy98yj9der1c4JHWTdleh8fJf38CXaz2L8bA04LMAQFR YTIgZZImP3dy64asDaguHrrDZweilz/Laba3E4x3F6E5mHGak+79PF8Yy7N1Iu4cI9ox a6/t5vyxMCjgXqbleUlu0Poj2rQdyVBSHgMBUh8IBki0zHybwvEaIuXJpqyBH2YPW8Ae /z1Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v24si3940080pff.274.2018.02.20.07.21.35; Tue, 20 Feb 2018 07:21:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752375AbeBTPVA (ORCPT + 99 others); Tue, 20 Feb 2018 10:21:00 -0500 Received: from lb3-smtp-cloud9.xs4all.net ([194.109.24.30]:45405 "EHLO lb3-smtp-cloud9.xs4all.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752044AbeBTPU7 (ORCPT ); Tue, 20 Feb 2018 10:20:59 -0500 Received: from [IPv6:2001:420:44c1:2579:bcbe:df5c:427e:bf31] ([IPv6:2001:420:44c1:2579:bcbe:df5c:427e:bf31]) by smtp-cloud9.xs4all.net with ESMTPA id o9iveKi2joWCOo9iyelQfV; Tue, 20 Feb 2018 16:20:57 +0100 Subject: Re: [RFCv4 10/21] videodev2.h: Add request_fd field to v4l2_buffer To: Alexandre Courbot , Mauro Carvalho Chehab , Laurent Pinchart , Pawel Osciak , Marek Szyprowski , Tomasz Figa , Sakari Ailus Cc: Gustavo Padovan , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Hans Verkuil References: <20180220044425.169493-1-acourbot@chromium.org> <20180220044425.169493-11-acourbot@chromium.org> From: Hans Verkuil Message-ID: Date: Tue, 20 Feb 2018 16:20:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20180220044425.169493-11-acourbot@chromium.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Envelope: MS4wfPD2bt08rZCr+MLp50B5ktVscibdjRicuL8Jh/A0r3ebzmYJOdPGzZjAEm4yjLf7HZIKaomVBXrzcHI5ljLBSmVmQ+1iRnXSyVh7P2K7bijVfHwS1iNX Ptlo0n39OS8EDIK2I2hXNfhbjER712zA6NNqo6yt1Xz8Y/zYE43li/ev9oi0HrI2OwZB0N5cOVzPw3E1XnQ6jZSQ0imIfF8PxFz1ekHSAnGBLGTIQZxk2+qM HsvsW7cT9o2Cucu9ZJVSC2cZByvivzKbUUclMTVSHB9KxegQ2Sz18pHKRhUroEFy84wA11WLbeEIAxMZeW6t55Bhff4G0R8itUowaXt0F3DqnS9qdAXdi+2c KkGHV1igk5uncLwYabqTu6R94jZSm9ltdYqJta5wyoAa35+6aC+i+1NOsTJlw82ht3geoP/+38ULPoXXakrpU2gwswF5lxKRnXfTulNwrJDvN9HHe5Z1Kaln Jk11LjGcpMTtBtY7Y3+5R14we/nzwWE90ClB+o74ORxw34T1+h6Pz+nKKh4+SuiIQzjjZKkMlv509AKItLSTq+d6lM/XfsUazEnX34k43xskN6pz9rTPfiB/ ywXl3+IixewpgUks7iHEqIvi Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/20/18 05:44, Alexandre Courbot wrote: > From: Hans Verkuil > > When queuing buffers allow for passing the request that should > be associated with this buffer. > > Signed-off-by: Hans Verkuil > [acourbot@chromium.org: make request ID 32-bit] > Signed-off-by: Alexandre Courbot > --- > drivers/media/common/videobuf2/videobuf2-v4l2.c | 2 +- > drivers/media/usb/cpia2/cpia2_v4l.c | 2 +- > drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 9 ++++++--- > drivers/media/v4l2-core/v4l2-ioctl.c | 4 ++-- > include/uapi/linux/videodev2.h | 3 ++- > 5 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c > index 886a2d8d5c6c..6d4d184aa68e 100644 > --- a/drivers/media/common/videobuf2/videobuf2-v4l2.c > +++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c > @@ -203,7 +203,7 @@ static void __fill_v4l2_buffer(struct vb2_buffer *vb, void *pb) > b->timestamp = ns_to_timeval(vb->timestamp); > b->timecode = vbuf->timecode; > b->sequence = vbuf->sequence; > - b->reserved2 = 0; > + b->request_fd = 0; > b->reserved = 0; > > if (q->is_multiplanar) { > diff --git a/drivers/media/usb/cpia2/cpia2_v4l.c b/drivers/media/usb/cpia2/cpia2_v4l.c > index 99f106b13280..af42ce3ceb48 100644 > --- a/drivers/media/usb/cpia2/cpia2_v4l.c > +++ b/drivers/media/usb/cpia2/cpia2_v4l.c > @@ -948,7 +948,7 @@ static int cpia2_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf) > buf->sequence = cam->buffers[buf->index].seq; > buf->m.offset = cam->buffers[buf->index].data - cam->frame_buffer; > buf->length = cam->frame_size; > - buf->reserved2 = 0; > + buf->request_fd = 0; > buf->reserved = 0; > memset(&buf->timecode, 0, sizeof(buf->timecode)); > > diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c > index 5198c9eeb348..32bf47489a2e 100644 > --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c > +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c > @@ -386,7 +386,7 @@ struct v4l2_buffer32 { > __s32 fd; > } m; > __u32 length; > - __u32 reserved2; > + __s32 request_fd; > __u32 reserved; > }; > > @@ -486,6 +486,7 @@ static int get_v4l2_buffer32(struct v4l2_buffer __user *kp, > { > u32 type; > u32 length; > + s32 request_fd; > enum v4l2_memory memory; > struct v4l2_plane32 __user *uplane32; > struct v4l2_plane __user *uplane; > @@ -500,7 +501,9 @@ static int get_v4l2_buffer32(struct v4l2_buffer __user *kp, > get_user(memory, &up->memory) || > put_user(memory, &kp->memory) || > get_user(length, &up->length) || > - put_user(length, &kp->length)) > + put_user(length, &kp->length) || > + get_user(request_fd, &up->request_fd) || > + put_user(request_fd, &kp->request_fd)) > return -EFAULT; > > if (V4L2_TYPE_IS_OUTPUT(type)) > @@ -604,7 +607,7 @@ static int put_v4l2_buffer32(struct v4l2_buffer __user *kp, > assign_in_user(&up->timestamp.tv_usec, &kp->timestamp.tv_usec) || > copy_in_user(&up->timecode, &kp->timecode, sizeof(kp->timecode)) || > assign_in_user(&up->sequence, &kp->sequence) || > - assign_in_user(&up->reserved2, &kp->reserved2) || > + assign_in_user(&up->request_fd, &kp->request_fd) || > assign_in_user(&up->reserved, &kp->reserved) || > get_user(length, &kp->length) || > put_user(length, &up->length)) > diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c > index 260288ca4f55..7bfeaf233d5a 100644 > --- a/drivers/media/v4l2-core/v4l2-ioctl.c > +++ b/drivers/media/v4l2-core/v4l2-ioctl.c > @@ -437,13 +437,13 @@ static void v4l_print_buffer(const void *arg, bool write_only) > const struct v4l2_plane *plane; > int i; > > - pr_cont("%02ld:%02d:%02d.%08ld index=%d, type=%s, flags=0x%08x, field=%s, sequence=%d, memory=%s", > + pr_cont("%02ld:%02d:%02d.%08ld index=%d, type=%s, request_fd=%u, flags=0x%08x, field=%s, sequence=%d, memory=%s", > p->timestamp.tv_sec / 3600, > (int)(p->timestamp.tv_sec / 60) % 60, > (int)(p->timestamp.tv_sec % 60), > (long)p->timestamp.tv_usec, > p->index, > - prt_names(p->type, v4l2_type_names), > + prt_names(p->type, v4l2_type_names), p->request_fd, > p->flags, prt_names(p->field, v4l2_field_names), > p->sequence, prt_names(p->memory, v4l2_memory_names)); > > diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h > index 982718965180..4fd46ae8fad5 100644 > --- a/include/uapi/linux/videodev2.h > +++ b/include/uapi/linux/videodev2.h > @@ -909,6 +909,7 @@ struct v4l2_plane { > * @length: size in bytes of the buffer (NOT its payload) for single-plane > * buffers (when type != *_MPLANE); number of elements in the > * planes array for multi-plane buffers > + * @request_fd: fd of the request that this buffer should use > * > * Contains data exchanged by application and driver using one of the Streaming > * I/O methods. > @@ -932,7 +933,7 @@ struct v4l2_buffer { > __s32 fd; > } m; > __u32 length; > - __u32 reserved2; > + __s32 request_fd; This should be: union { __s32 request_fd; __u32 reserved2; }; Otherwise any existing application that sets 'reserved2 = 0;' would fail. I encountered this issue when compiling v4l-utils. Regards, Hans > __u32 reserved; > }; > >