All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v14 00/36] Request API
@ 2018-05-21  8:54 Sakari Ailus
  2018-05-21  8:54 ` [PATCH v14 01/36] uapi/linux/media.h: add request API Sakari Ailus
                   ` (35 more replies)
  0 siblings, 36 replies; 41+ messages in thread
From: Sakari Ailus @ 2018-05-21  8:54 UTC (permalink / raw)
  To: linux-media; +Cc: hverkuil

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

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2018-05-23 10:18 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-21  8:54 [PATCH v14 00/36] Request API Sakari Ailus
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

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.