From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: hverkuil@xs4all.nl
Subject: [PATCH v14 00/36] Request API
Date: Mon, 21 May 2018 11:54:25 +0300 [thread overview]
Message-ID: <20180521085501.16861-1-sakari.ailus@linux.intel.com> (raw)
Hello everyone,
Here are my changes over v13 set Hans posted earlier. The changes since
v13 include:
- Request state is made enum again. This change was motivated by
complicated locking scheme in which it was not obvious which locks would
need to be acquired and when. In some cases the atomic operation may be
replaced by a regular read operation.
- Add a new "updating" state to tell the request is being updated. The request
state is changes to this state when its controls are being set, or a
video buffer is being associated with it. There's update count, so
multiple updates may take place simultaneously. This also means that the
drivers may not use this mechanism to serialise access to their own data
structures.
- Document v4l2_ctrl_request_setup and v4l2_ctrl_request_queue.
- Add media-request.h to Media documentation build.
Hans: Some patches are intended to be merged to the patches they precede.
I didn't do that since I thought they'd be more easily reviewed
separately. I've also changed the patch "v4l2-dev: lock req_queue_mutex" a
little, as described above.
In order to protect applying the requests (controls in particular),
setting the control value from user space need to be prevented if there
are requests pending for that video device. This is missing from the set.
I've also provided further comments on v13 on the list and I believe
others have given comments, too, so this isn't meant to be a set that
could be merged yet.
Hans's v13 and this set, both based on a recent media tree master, may be
found here:
<URL:https://git.linuxtv.org/sailus/media_tree.git/log/?h=reqv13>
<URL:https://git.linuxtv.org/sailus/media_tree.git/log/?h=reqv14>
Alexandre Courbot (2):
videodev2.h: add request_fd field to v4l2_ext_controls
Documentation: v4l: document request API
Hans Verkuil (25):
uapi/linux/media.h: add request API
media-request: implement media requests
media-request: add media_request_get_by_fd
media-request: add media_request_object_find
v4l2-dev: lock req_queue_mutex
v4l2-ctrls: v4l2_ctrl_add_handler: add from_other_dev
v4l2-ctrls: prepare internal structs for request API
v4l2-ctrls: alloc memory for p_req
v4l2-ctrls: use ref in helper instead of ctrl
v4l2-ctrls: add core request support
v4l2-ctrls: support g/s_ext_ctrls for requests
videodev2.h: Add request_fd field to v4l2_buffer
vb2: store userspace data in vb2_v4l2_buffer
videobuf2-core: embed media_request_object
videobuf2-core: integrate with media requests
videobuf2-v4l2: integrate with media requests
videobuf2-core: add request helper functions
videobuf2-v4l2: add vb2_request_queue/validate helpers
v4l2-mem2mem: add vb2_m2m_request_queue
media: vim2m: add media device
vim2m: use workqueue
vim2m: support requests
vivid: add mc
vivid: add request support
RFC: media-requests: add debugfs node
Sakari Ailus (9):
media-request: Make request state an enum
media-request: Add support for updating request objects optimally
media-request: Add a sanity check for the media request state
media: doc: Add media-request.h header to documentation build
v4l2-ctrls: Add documentation for control request support functions
v4l2-ctrls: Lock the request for updating during S_EXT_CTRLS
videobuf2-v4l2: Lock the media request for update for QBUF
videobuf2-core: Make request state an enum
v4l: m2m: Simplify exiting the function in v4l2_m2m_try_schedule
Documentation/media/kapi/mc-core.rst | 2 +
Documentation/media/uapi/mediactl/media-funcs.rst | 3 +
.../uapi/mediactl/media-ioc-request-alloc.rst | 71 +++
.../uapi/mediactl/media-request-ioc-queue.rst | 46 ++
.../uapi/mediactl/media-request-ioc-reinit.rst | 51 +++
Documentation/media/uapi/v4l/buffer.rst | 18 +-
Documentation/media/uapi/v4l/common.rst | 1 +
Documentation/media/uapi/v4l/request-api.rst | 211 +++++++++
.../media/uapi/v4l/vidioc-g-ext-ctrls.rst | 25 +-
Documentation/media/uapi/v4l/vidioc-qbuf.rst | 7 +
Documentation/media/videodev2.h.rst.exceptions | 1 +
drivers/media/Makefile | 3 +-
drivers/media/common/videobuf2/videobuf2-core.c | 192 ++++++--
drivers/media/common/videobuf2/videobuf2-v4l2.c | 460 ++++++++++++-------
drivers/media/dvb-core/dvb_vb2.c | 5 +-
drivers/media/dvb-frontends/rtl2832_sdr.c | 5 +-
drivers/media/media-device.c | 55 +++
drivers/media/media-devnode.c | 17 +
drivers/media/media-request.c | 473 +++++++++++++++++++
drivers/media/pci/bt8xx/bttv-driver.c | 2 +-
drivers/media/pci/cx23885/cx23885-417.c | 2 +-
drivers/media/pci/cx88/cx88-blackbird.c | 2 +-
drivers/media/pci/cx88/cx88-video.c | 2 +-
drivers/media/pci/saa7134/saa7134-empress.c | 4 +-
drivers/media/pci/saa7134/saa7134-video.c | 2 +-
drivers/media/platform/exynos4-is/fimc-capture.c | 2 +-
drivers/media/platform/omap3isp/ispvideo.c | 4 +-
drivers/media/platform/rcar-vin/rcar-core.c | 2 +-
drivers/media/platform/rcar_drif.c | 2 +-
drivers/media/platform/s3c-camif/camif-capture.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 4 +-
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 4 +-
drivers/media/platform/soc_camera/soc_camera.c | 7 +-
drivers/media/platform/vim2m.c | 91 +++-
drivers/media/platform/vivid/vivid-core.c | 69 +++
drivers/media/platform/vivid/vivid-core.h | 8 +
drivers/media/platform/vivid/vivid-ctrls.c | 46 +-
drivers/media/platform/vivid/vivid-kthread-cap.c | 12 +
drivers/media/platform/vivid/vivid-kthread-out.c | 12 +
drivers/media/platform/vivid/vivid-sdr-cap.c | 16 +
drivers/media/platform/vivid/vivid-vbi-cap.c | 10 +
drivers/media/platform/vivid/vivid-vbi-out.c | 10 +
drivers/media/platform/vivid/vivid-vid-cap.c | 10 +
drivers/media/platform/vivid/vivid-vid-out.c | 10 +
drivers/media/usb/cpia2/cpia2_v4l.c | 2 +-
drivers/media/usb/cx231xx/cx231xx-417.c | 2 +-
drivers/media/usb/cx231xx/cx231xx-video.c | 4 +-
drivers/media/usb/msi2500/msi2500.c | 2 +-
drivers/media/usb/tm6000/tm6000-video.c | 2 +-
drivers/media/usb/uvc/uvc_queue.c | 5 +-
drivers/media/usb/uvc/uvc_v4l2.c | 3 +-
drivers/media/usb/uvc/uvcvideo.h | 1 +
drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 14 +-
drivers/media/v4l2-core/v4l2-ctrls.c | 499 +++++++++++++++++++--
drivers/media/v4l2-core/v4l2-dev.c | 36 +-
drivers/media/v4l2-core/v4l2-device.c | 3 +-
drivers/media/v4l2-core/v4l2-ioctl.c | 22 +-
drivers/media/v4l2-core/v4l2-mem2mem.c | 62 ++-
drivers/media/v4l2-core/v4l2-subdev.c | 9 +-
drivers/staging/media/davinci_vpfe/vpfe_video.c | 3 +-
drivers/staging/media/imx/imx-media-dev.c | 2 +-
drivers/staging/media/imx/imx-media-fim.c | 2 +-
drivers/staging/media/omap4iss/iss_video.c | 3 +-
drivers/usb/gadget/function/uvc_queue.c | 2 +-
include/media/media-device.h | 27 ++
include/media/media-devnode.h | 4 +
include/media/media-request.h | 349 ++++++++++++++
include/media/v4l2-ctrls.h | 71 ++-
include/media/v4l2-mem2mem.h | 4 +
include/media/videobuf2-core.h | 39 +-
include/media/videobuf2-v4l2.h | 20 +-
include/uapi/linux/media.h | 12 +
include/uapi/linux/videodev2.h | 14 +-
73 files changed, 2869 insertions(+), 332 deletions(-)
create mode 100644 Documentation/media/uapi/mediactl/media-ioc-request-alloc.rst
create mode 100644 Documentation/media/uapi/mediactl/media-request-ioc-queue.rst
create mode 100644 Documentation/media/uapi/mediactl/media-request-ioc-reinit.rst
create mode 100644 Documentation/media/uapi/v4l/request-api.rst
create mode 100644 drivers/media/media-request.c
create mode 100644 include/media/media-request.h
--
2.11.0
next reply other threads:[~2018-05-21 8:55 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-21 8:54 Sakari Ailus [this message]
2018-05-21 8:54 ` [PATCH v14 01/36] uapi/linux/media.h: add request API Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 02/36] media-request: implement media requests Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 03/36] media-request: add media_request_get_by_fd Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 04/36] media-request: add media_request_object_find Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 05/36] media-request: Make request state an enum Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 06/36] media-request: Add support for updating request objects optimally Sakari Ailus
2018-05-21 10:29 ` [PATCH v14.1 " Sakari Ailus
2018-05-21 11:33 ` [PATCH v14.2 " Sakari Ailus
2018-05-23 9:50 ` [PATCH " Hans Verkuil
2018-05-21 8:54 ` [PATCH v14 07/36] media-request: Add a sanity check for the media request state Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 08/36] media: doc: Add media-request.h header to documentation build Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 09/36] v4l2-dev: lock req_queue_mutex Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 10/36] videodev2.h: add request_fd field to v4l2_ext_controls Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 11/36] v4l2-ctrls: v4l2_ctrl_add_handler: add from_other_dev Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 12/36] v4l2-ctrls: prepare internal structs for request API Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 13/36] v4l2-ctrls: alloc memory for p_req Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 14/36] v4l2-ctrls: use ref in helper instead of ctrl Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 15/36] v4l2-ctrls: add core request support Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 16/36] v4l2-ctrls: Add documentation for control request support functions Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 17/36] v4l2-ctrls: support g/s_ext_ctrls for requests Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 18/36] v4l2-ctrls: Lock the request for updating during S_EXT_CTRLS Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 19/36] videodev2.h: Add request_fd field to v4l2_buffer Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 20/36] vb2: store userspace data in vb2_v4l2_buffer Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 21/36] videobuf2-core: embed media_request_object Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 22/36] videobuf2-core: integrate with media requests Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 23/36] videobuf2-v4l2: " Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 24/36] videobuf2-v4l2: Lock the media request for update for QBUF Sakari Ailus
2018-05-23 10:17 ` Hans Verkuil
2018-05-21 8:54 ` [PATCH v14 25/36] videobuf2-core: Make request state an enum Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 26/36] videobuf2-core: add request helper functions Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 27/36] videobuf2-v4l2: add vb2_request_queue/validate helpers Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 28/36] v4l2-mem2mem: add vb2_m2m_request_queue Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 29/36] Documentation: v4l: document request API Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 30/36] media: vim2m: add media device Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 31/36] vim2m: use workqueue Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 32/36] vim2m: support requests Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 33/36] vivid: add mc Sakari Ailus
2018-05-21 8:54 ` [PATCH v14 34/36] vivid: add request support Sakari Ailus
2018-05-21 8:55 ` [PATCH v14 35/36] RFC: media-requests: add debugfs node Sakari Ailus
2018-05-21 8:55 ` [PATCH v14 36/36] v4l: m2m: Simplify exiting the function in v4l2_m2m_try_schedule Sakari Ailus
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=20180521085501.16861-1-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=hverkuil@xs4all.nl \
--cc=linux-media@vger.kernel.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 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).