Message ID | 20231003080704.43911-1-benjamin.gaignard@collabora.com |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp1928433vqb; Tue, 3 Oct 2023 01:08:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH229ss78QJQZubNm7yH/YQy/PDkb6js87ktB81jFjuFy8uUAulKs4YPFycOs8x9yBwhMyc X-Received: by 2002:a17:90b:a4c:b0:26b:17ef:7365 with SMTP id gw12-20020a17090b0a4c00b0026b17ef7365mr9241533pjb.48.1696320491907; Tue, 03 Oct 2023 01:08:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696320491; cv=none; d=google.com; s=arc-20160816; b=Vtppo9iP40T8PByMg3p+KIbcAgH873zOsPgtbmgCnUZg765TnIdGtbPrjmxsk9/zs5 b+nPZI0eBINjtNKkwYSYsjmKc5SKFMWvf/wLkHafrvv36jyBRepJjrQCS2LGyQ1nlwxV VOhI3dh6hOgHWQeVp9+mA2cohdVoQaYRjRc0zoqHvdvOBU8dgxJbOnjr7qEFgVf3flRF lMZLtu9Z9/hSwzV1ZRDqkTY9CsVTxhUbq13BvxOKFEC1zcjnfQzO2RICYv2RfatvFA/O 3FbkD+4iclt9i/NTqTBcbU/c8rkxUou+4akv6GoF6yo1M7Bum3w/Vd9bDZ6FQeX5elSH nyCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=mQlDNIgmElpY57fpgaVPiaPeXBOyRjGKcTpXLQiuJGI=; fh=ceA81l8d2hZW6pWH7VE5TwJxtgXUzAubfWIMcikPA1M=; b=PocO/Whn7kQi+lnE5CxzygU7m8+aAucBXEhh92nFWqw3edktBkd/85F81CWttR0RRD 3XWpW/CdhbCaawH+XqKqN1xJRWM6GRCqJGau2xzM6VfpXvRbzV6PbqNCKimCo6LtXNQb zMk+6lsZt6v5Ddd4jwsiEtqnNdfGto/ws4bwNuKduBHTyDGc1NGGtkJ+5FwmCrXLeozj McDEw1z7/LX0nSsvH3PLLYKhlF9F2ed6m80GL7aGs3zmESnnOorlcbvY3thuz79fPiSP kLNsrdTv0Zkk05Hn/IqiBXSQ0k9STbt9S2xi3Icj1dPu5Fo57mzfxmEMdOZL30Ngml8a RXNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=jYodERC3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id co16-20020a17090afe9000b0027763f3e3c8si842869pjb.186.2023.10.03.01.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 01:08:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=jYodERC3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id AA28780279DC; Tue, 3 Oct 2023 01:07:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239331AbjJCIHZ (ORCPT <rfc822;pusanteemu@gmail.com> + 18 others); Tue, 3 Oct 2023 04:07:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239225AbjJCIHV (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Tue, 3 Oct 2023 04:07:21 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8836CB7; Tue, 3 Oct 2023 01:07:15 -0700 (PDT) Received: from benjamin-XPS-13-9310.. (unknown [IPv6:2a01:e0a:120:3210:b6df:b784:6a0f:8451]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madras.collabora.co.uk (Postfix) with ESMTPSA id CD6A06607313; Tue, 3 Oct 2023 09:07:12 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1696320433; bh=qj0bnDV/xFPYTBegLSnkEtqZDOJIKZaMrpfQDOlp2LI=; h=From:To:Cc:Subject:Date:From; b=jYodERC3YXqPMp8tA+HsW/6Tpa+h3Z9OOMfSzq/5MvdGvAZJZ2cPhnFl9U8nMYLu0 RahbQCrhjnHarLpzsE3Ksdg1hGIoCL1NNA5UjjthY83q1WPmR4WYkW2K1easCR8IDI LiK8ED58c3dXV8uBYW035cQ0vLGvKRisUdwXDWChVlOvxxLMaQPnoJ5Fc5siDZfwNL IlOVPZoB8paE0F/P5nEpfmAsAo/evBCDMa/Zx52k3v8FfY3xMntnf53CwgGr6goA+e NQMdNl4GbZzP+pYKOt8Dy8czmZ0I/lqEH5Dnz2u/viiaApqiPMMNMXUj7eo3MW/GB/ s0Ohe84diqQtA== From: Benjamin Gaignard <benjamin.gaignard@collabora.com> To: mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com, ming.qian@nxp.com, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, hverkuil-cisco@xs4all.nl, nicolas.dufresne@collabora.com Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev, kernel@collabora.com, Benjamin Gaignard <benjamin.gaignard@collabora.com> Subject: [PATCH v10 00/54] Add DELETE_BUF ioctl Date: Tue, 3 Oct 2023 10:06:09 +0200 Message-Id: <20231003080704.43911-1-benjamin.gaignard@collabora.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 03 Oct 2023 01:07:58 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778720955894255951 X-GMAIL-MSGID: 1778720955894255951 |
Series |
Add DELETE_BUF ioctl
|
|
Message
Benjamin Gaignard
Oct. 3, 2023, 8:06 a.m. UTC
Unlike when resolution change on keyframes, dynamic resolution change on inter frames doesn't allow to do a stream off/on sequence because it is need to keep all previous references alive to decode inter frames. This constraint have two main problems: - more memory consumption. - more buffers in use. To solve these issue this series introduce DELETE_BUFS ioctl and remove the 32 buffers limit per queue. VP9 conformance tests using fluster give a score of 210/305. The 24 resize inter tests (vp90-2-21-resize_inter_* files) are ok but require to use postprocessor. Kernel branch is available here: https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/commits/remove_vb2_queue_limit_v10 GStreamer branch to use DELETE_BUF ioctl and testing dynamic resolution change is here: https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/commits/VP9_drc changes in version 10: - Make BUFFER_INDEX_MASK definition more readable - Rebase on media_stage/master branch and add a patch for nuvoton driver. - Fix issue on patch 13 changes in version 9: - BUFFER_INDEX_MASK now depends on PAGE_SHIFT value to match architectures requirements. - Correctly initialize max_num_buffers in vb2_core_queue_init() - run 'test-media -kmemleak mc' on top of the series and on patches 1 to 47 without failures. - fix compilation issue in patch 50 changes in version 8: - Add V4L2_BUF_CAP_SUPPORTS_SET_MAX_BUFS and new 'max_buffers' field in v4l2_create_buffers structure to report the maximum number of buffers that a queue could allocate. - Add V4L2_BUF_CAP_SUPPORTS_DELETE_BUFS to indicate that a queue support DELETE_BUFS ioctl. - Make some test drivers use more than 32 buffers and DELETE_BUFS ioctl. - Fix remarks done by Hans - Move "media: core: Rework how create_buf index returned value is computed" patch to the top of the serie. changes in version 7: - Use a bitmap to know which entries are valid in queue bufs array. The number of buffers in the queue could must calculated from the bitmap so num_buffers becomes useless. This led to add quite few patches to remove it from all the drivers. Note: despiste my attention I may have miss some calls to num_buffers... - Split patches to make them more readable. - Run v4l2-compliance with additional delete-bufs tests. - Run ./test-media -kmemleak vivid and no more failures. Note: I had to remove USERPTR streaming test because they to much frequentely hit get_framevec bug. It is not related to my series since this happens all the time on master branch. - Fix Hans remarks on v6 changes in version 6: - Get a patch per driver to use vb2_get_buffer() instead of directly access to queue buffers array. - Add lock in vb2_core_delete_buf() - Use vb2_buffer instead of index - Fix various comments - Change buffer index name to BUFFER_INDEX_MASK - Stop spamming kernel log with unbalanced counters Regards, Benjamin Benjamin Gaignard (54): media: videobuf2: Rework offset 'cookie' encoding pattern media: videobuf2: Stop spamming kernel log with all queue counter media: videobuf2: Use vb2_buffer instead of index media: amphion: Use vb2_get_buffer() instead of directly access to buffers array media: mediatek: jpeg: Use vb2_get_buffer() instead of directly access to buffers array media: mediatek: vdec: Remove useless loop media: sti: hva: Use vb2_get_buffer() instead of directly access to buffers array media: visl: Use vb2_get_buffer() instead of directly access to buffers array media: atomisp: Use vb2_get_buffer() instead of directly access to buffers array media: dvb-core: Use vb2_get_buffer() instead of directly access to buffers array media: videobuf2: Access vb2_queue bufs array through helper functions media: videobuf2: Be more flexible on the number of queue stored buffers media: Report the maximum possible number of buffers for the queue media: test-drivers: vivid: Increase max supported buffers for capture queues media: test-drivers: vicodec: Increase max supported capture queue buffers media: verisilicon: Refactor postprocessor to store more buffers media: verisilicon: Store chroma and motion vectors offset media: verisilicon: g2: Use common helpers to compute chroma and mv offsets media: verisilicon: vp9: Allow to change resolution while streaming media: Remove duplicated index vs q->num_buffers check media: core: Add helper to get queue number of buffers media: dvb-core: Do not initialize twice queue num_buffer field media: dvb-frontends: rtl2832_srd: Use queue min_buffers_needed field media: video-i2c: Set min_buffers_needed to 2 media: pci: cx18: Set correct value to min_buffers_needed field media: pci: dt3155: Remove useless check media: pci: netup_unidvb: Remove useless number of buffers check media: pci: tw68: Stop direct calls to queue num_buffers field media: pci: tw686x: Set min_buffers_needed to 3 media: amphion: Stop direct calls to queue num_buffers field media: coda: Stop direct calls to queue num_buffers field media: mediatek: vcodec: Stop direct calls to queue num_buffers field media: nxp: Stop direct calls to queue num_buffers field media: renesas: Set min_buffers_needed to 16 media: ti: Use queue min_buffers_needed field to set the min number of buffers media: verisilicon: Stop direct calls to queue num_buffers field media: test-drivers: Stop direct calls to queue num_buffers field media: usb: airspy: Set min_buffers_needed to 8 media: usb: cx231xx: Set min_buffers_needed to CX231XX_MIN_BUF media: usb: hackrf: Set min_buffers_needed to 8 media: usb: usbtv: Set min_buffers_needed to 2 media: atomisp: Stop direct calls to queue num_buffers field media: imx: Stop direct calls to queue num_buffers field media: meson: vdec: Stop direct calls to queue num_buffers field touchscreen: sur40: Stop direct calls to queue num_buffers field sample: v4l: Stop direct calls to queue num_buffers field media: cedrus: Stop direct calls to queue num_buffers field media: nuvoton: Stop direct calls to queue num_buffers field media: core: Rework how create_buf index returned value is computed media: core: Add bitmap manage bufs array entries media: core: Free range of buffers media: v4l2: Add DELETE_BUFS ioctl media: v4l2: Add mem2mem helpers for DELETE_BUFS ioctl media: test-drivers: Use helper for DELETE_BUFS ioctl .../userspace-api/media/v4l/user-func.rst | 1 + .../media/v4l/vidioc-create-bufs.rst | 8 +- .../media/v4l/vidioc-delete-bufs.rst | 80 +++ .../media/v4l/vidioc-reqbufs.rst | 2 + drivers/input/touchscreen/sur40.c | 5 +- .../media/common/videobuf2/videobuf2-core.c | 554 +++++++++++------- .../media/common/videobuf2/videobuf2-v4l2.c | 118 +++- drivers/media/dvb-core/dvb_vb2.c | 17 +- drivers/media/dvb-frontends/rtl2832_sdr.c | 9 +- drivers/media/i2c/video-i2c.c | 5 +- drivers/media/pci/cx18/cx18-streams.c | 13 +- drivers/media/pci/dt3155/dt3155.c | 2 - .../pci/netup_unidvb/netup_unidvb_core.c | 4 +- drivers/media/pci/tw68/tw68-video.c | 6 +- drivers/media/pci/tw686x/tw686x-video.c | 13 +- drivers/media/platform/amphion/vpu_dbg.c | 30 +- drivers/media/platform/amphion/vpu_v4l2.c | 4 +- .../media/platform/chips-media/coda-common.c | 2 +- .../platform/mediatek/jpeg/mtk_jpeg_core.c | 7 +- .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 9 +- .../mediatek/vcodec/encoder/mtk_vcodec_enc.c | 2 +- drivers/media/platform/nuvoton/npcm-video.c | 2 +- drivers/media/platform/nxp/imx7-media-csi.c | 7 +- drivers/media/platform/renesas/rcar_drif.c | 8 +- drivers/media/platform/st/sti/hva/hva-v4l2.c | 9 +- .../media/platform/ti/am437x/am437x-vpfe.c | 7 +- drivers/media/platform/ti/cal/cal-video.c | 5 +- .../media/platform/ti/davinci/vpif_capture.c | 5 +- .../media/platform/ti/davinci/vpif_display.c | 5 +- drivers/media/platform/ti/omap/omap_vout.c | 5 +- drivers/media/platform/verisilicon/hantro.h | 9 +- .../media/platform/verisilicon/hantro_drv.c | 5 +- .../media/platform/verisilicon/hantro_g2.c | 14 + .../platform/verisilicon/hantro_g2_hevc_dec.c | 18 +- .../platform/verisilicon/hantro_g2_vp9_dec.c | 28 +- .../media/platform/verisilicon/hantro_hw.h | 7 +- .../platform/verisilicon/hantro_postproc.c | 93 ++- .../media/platform/verisilicon/hantro_v4l2.c | 27 +- .../media/test-drivers/vicodec/vicodec-core.c | 3 + drivers/media/test-drivers/vim2m.c | 2 + .../media/test-drivers/vimc/vimc-capture.c | 2 + drivers/media/test-drivers/visl/visl-dec.c | 32 +- drivers/media/test-drivers/visl/visl-video.c | 2 + drivers/media/test-drivers/vivid/vivid-core.c | 14 + .../media/test-drivers/vivid/vivid-meta-cap.c | 3 - .../media/test-drivers/vivid/vivid-meta-out.c | 5 +- .../test-drivers/vivid/vivid-touch-cap.c | 5 +- .../media/test-drivers/vivid/vivid-vbi-cap.c | 5 +- .../media/test-drivers/vivid/vivid-vbi-out.c | 5 +- .../media/test-drivers/vivid/vivid-vid-cap.c | 5 +- .../media/test-drivers/vivid/vivid-vid-out.c | 5 +- drivers/media/usb/airspy/airspy.c | 9 +- drivers/media/usb/cx231xx/cx231xx-417.c | 4 +- drivers/media/usb/cx231xx/cx231xx-video.c | 4 +- drivers/media/usb/hackrf/hackrf.c | 9 +- drivers/media/usb/usbtv/usbtv-video.c | 3 +- drivers/media/v4l2-core/v4l2-dev.c | 1 + drivers/media/v4l2-core/v4l2-ioctl.c | 21 +- drivers/media/v4l2-core/v4l2-mem2mem.c | 20 + .../staging/media/atomisp/pci/atomisp_ioctl.c | 4 +- drivers/staging/media/imx/imx-media-capture.c | 7 +- drivers/staging/media/meson/vdec/vdec.c | 13 +- .../staging/media/sunxi/cedrus/cedrus_h264.c | 8 +- .../staging/media/sunxi/cedrus/cedrus_h265.c | 9 +- include/media/v4l2-ioctl.h | 4 + include/media/v4l2-mem2mem.h | 12 + include/media/videobuf2-core.h | 65 +- include/media/videobuf2-v4l2.h | 13 + include/uapi/linux/videodev2.h | 24 +- samples/v4l/v4l2-pci-skeleton.c | 5 +- 70 files changed, 966 insertions(+), 502 deletions(-) create mode 100644 Documentation/userspace-api/media/v4l/vidioc-delete-bufs.rst
Comments
Hi Benjamin, On 03/10/2023 10:06, Benjamin Gaignard wrote: > Unlike when resolution change on keyframes, dynamic resolution change > on inter frames doesn't allow to do a stream off/on sequence because > it is need to keep all previous references alive to decode inter frames. > This constraint have two main problems: > - more memory consumption. > - more buffers in use. > To solve these issue this series introduce DELETE_BUFS ioctl and remove > the 32 buffers limit per queue. > > VP9 conformance tests using fluster give a score of 210/305. > The 24 resize inter tests (vp90-2-21-resize_inter_* files) are ok > but require to use postprocessor. > > Kernel branch is available here: > https://gitlab.collabora.com/benjamin.gaignard/for-upstream/-/commits/remove_vb2_queue_limit_v10 > > GStreamer branch to use DELETE_BUF ioctl and testing dynamic resolution > change is here: > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/commits/VP9_drc > <snip> I'm a bit unhappy about the order of these patches. It mixes core and driver patches, making it hard to follow. Also, the driver patches are missing CCs to the driver maintainers. There are two types of driver patches: 1) switch to vb2_get_buffer() 2) switch to vb2_get_num_buffers(), or stop using num_buffers altogether. I am not counting the patches for verisilicon and the test drivers that add support for max_num_buffers, those are separate. In order to support more than 32 buffers the first phase is to fix the drivers. I would suggest the following: 1) start with a videobuf2-core.h patch adding vb2_get_num_buffers() (so just the header part of patch 21/54). 2) then add all driver patches switching to vb2_get_buffer/vb2_get_num_buffers(), grouped by driver (so e.g. the two amphion patches are placed together). Also add CCs to the driver maintainers for each driver patch, allowing them to review the code. Also include patches 10/54 and 22/54 (dvb-core). The remaining patches for vb2 etc. and for drivers patches adding support for the new features should be posted as a separate series on top of this. I want to get the driver changes in first. That will greatly simplify the remaining work. What will also be very helpful if this approach is taken is that it should be no problem to merge the initial patch adding the new vb2_get_num_buffers function for v6.7. That makes it easier to convert drivers in phases, if needed. And new upcoming drivers can start to use this function as well. Regards, Hans > Benjamin Gaignard (54): > media: videobuf2: Rework offset 'cookie' encoding pattern > media: videobuf2: Stop spamming kernel log with all queue counter > media: videobuf2: Use vb2_buffer instead of index > media: amphion: Use vb2_get_buffer() instead of directly access to > buffers array > media: mediatek: jpeg: Use vb2_get_buffer() instead of directly access > to buffers array > media: mediatek: vdec: Remove useless loop > media: sti: hva: Use vb2_get_buffer() instead of directly access to > buffers array > media: visl: Use vb2_get_buffer() instead of directly access to > buffers array > media: atomisp: Use vb2_get_buffer() instead of directly access to > buffers array > media: dvb-core: Use vb2_get_buffer() instead of directly access to > buffers array > media: videobuf2: Access vb2_queue bufs array through helper functions > media: videobuf2: Be more flexible on the number of queue stored > buffers > media: Report the maximum possible number of buffers for the queue > media: test-drivers: vivid: Increase max supported buffers for capture > queues > media: test-drivers: vicodec: Increase max supported capture queue > buffers > media: verisilicon: Refactor postprocessor to store more buffers > media: verisilicon: Store chroma and motion vectors offset > media: verisilicon: g2: Use common helpers to compute chroma and mv > offsets > media: verisilicon: vp9: Allow to change resolution while streaming > media: Remove duplicated index vs q->num_buffers check > media: core: Add helper to get queue number of buffers > media: dvb-core: Do not initialize twice queue num_buffer field > media: dvb-frontends: rtl2832_srd: Use queue min_buffers_needed field > media: video-i2c: Set min_buffers_needed to 2 > media: pci: cx18: Set correct value to min_buffers_needed field > media: pci: dt3155: Remove useless check > media: pci: netup_unidvb: Remove useless number of buffers check > media: pci: tw68: Stop direct calls to queue num_buffers field > media: pci: tw686x: Set min_buffers_needed to 3 > media: amphion: Stop direct calls to queue num_buffers field > media: coda: Stop direct calls to queue num_buffers field > media: mediatek: vcodec: Stop direct calls to queue num_buffers field > media: nxp: Stop direct calls to queue num_buffers field > media: renesas: Set min_buffers_needed to 16 > media: ti: Use queue min_buffers_needed field to set the min number of > buffers > media: verisilicon: Stop direct calls to queue num_buffers field > media: test-drivers: Stop direct calls to queue num_buffers field > media: usb: airspy: Set min_buffers_needed to 8 > media: usb: cx231xx: Set min_buffers_needed to CX231XX_MIN_BUF > media: usb: hackrf: Set min_buffers_needed to 8 > media: usb: usbtv: Set min_buffers_needed to 2 > media: atomisp: Stop direct calls to queue num_buffers field > media: imx: Stop direct calls to queue num_buffers field > media: meson: vdec: Stop direct calls to queue num_buffers field > touchscreen: sur40: Stop direct calls to queue num_buffers field > sample: v4l: Stop direct calls to queue num_buffers field > media: cedrus: Stop direct calls to queue num_buffers field > media: nuvoton: Stop direct calls to queue num_buffers field > media: core: Rework how create_buf index returned value is computed > media: core: Add bitmap manage bufs array entries > media: core: Free range of buffers > media: v4l2: Add DELETE_BUFS ioctl > media: v4l2: Add mem2mem helpers for DELETE_BUFS ioctl > media: test-drivers: Use helper for DELETE_BUFS ioctl