Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp4419353rdh; Wed, 29 Nov 2023 00:28:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IE15VZ6MZmwIm2MTKjcdbC13ULHem6lj0IbyQtvdU14ZdovQHf/Py8y7CLIbY8FFPmNJJOT X-Received: by 2002:a05:6358:9387:b0:16e:4c61:ebc9 with SMTP id h7-20020a056358938700b0016e4c61ebc9mr8006922rwb.10.1701246529722; Wed, 29 Nov 2023 00:28:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701246529; cv=none; d=google.com; s=arc-20160816; b=uHKx9RcQG/Q8Dzui6Kmruwl/qh1pzNs975Ndyn11VO076WQe8nJx+2YO35xdyJjE3w ZkRL6KyaxmxoxKtVhiNd54P/x5j+Izebu+CdLlZV8pRv67bJWzOj0ck3ZW1zrQCMj7iU F+ub78KqcBhdfMWZBubF+2j4/H6BTgxn0b9gFtRKQahs8HJA0KDzDMl0bKESLb67RpgO 4OURrZ0HvodxtBiwVRbaiYbm/7pkpiTz+BJXnTihqQQdek5crHfxaBq7cR5a4po6MoBZ p+HOGZ8fxvgJqpk+2mOobsyvlyOqofsB4OW4SncaAYwqOtClVpg8CAHsEpQ3GC6BB5Z2 zQQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=1TsRwJacBtHRmCpArpggBjbmhF4zs/Qdq2op81G89qs=; fh=0FTStoj8hLD5Ov0Bm4oCkjH9r2k6J0/2qMhGyWtn1eM=; b=OHWtmQORjKOn4LpCmaZWuKkRTzM3kvJtx0TTbmif9sydJVpBuyft0m9ktvyT5M8fZT EnP6vSq0G7UW0+oSooBI20nEjsgghV1BWhzsHxfWOW9Bc0RjyrSePOUlsQUzxlUsErYM WSBZdMcbs4zeh9GxKx3cys/4HO8xEMEYOXniKtjDZQtJqQT06EMm07TZxGqR/h9+X3pX kIq864jVE9Qm36RJhWrx6tNq4dipBKEwpWCdLNsa/cZocVFfdm29+DmE1qSCDH7CedC1 dEd3XKmiUuSXN3xoiV1XHHLmUGueg7UURM6SVWDZZonjemBO02ASoz7uNtHlcvNsuirV rpRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=AOg00+l7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id i30-20020a63541e000000b005c200c132ddsi13177678pgb.601.2023.11.29.00.28.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 00:28:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=AOg00+l7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (Postfix) with ESMTP id C6A7480A80F1; Wed, 29 Nov 2023 00:28:45 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230180AbjK2I21 (ORCPT + 99 others); Wed, 29 Nov 2023 03:28:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229488AbjK2I2Z (ORCPT ); Wed, 29 Nov 2023 03:28:25 -0500 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28C30C1; Wed, 29 Nov 2023 00:28:32 -0800 (PST) Received: from [100.122.216.38] (ec2-34-240-57-77.eu-west-1.compute.amazonaws.com [34.240.57.77]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 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 B7F966607323; Wed, 29 Nov 2023 08:28:29 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1701246510; bh=GH0s/Fttm7ldDPrPcesNwd4eFcRbMEUBxt6JF/mvubQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=AOg00+l7rWlIFKs36F0WZsmnVAETahGHYtGsPwkeSzeMdCovY3QeGBB85AqT7ycU1 SSShTTnCVZMFmcg3lKXPVTWRowQGiBphH9+nAWz8fYP8bIF7NSyPMMyewacj/PdaL1 P48guy85Wm9T30Kvh6TsxttPBDc5EGhNRtameRoRHHk4UkWpakqTpKHjL9wdUoCi0A qhN5wfHmafx6Dc7sHWmg+Y+Q9FXPQOCNTiNF3Bk0fkBgoWqWG8uDinaM59Fegbu2wO l5W7P0kqNpKYySU+ImJUQiT4iwI3yVE82Si2YZZqMkUD/Az/LE0mtUH+sS4Fnrhtg5 Cty/T7xXXxz6g== Message-ID: Date: Wed, 29 Nov 2023 09:28:26 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 07/55] media: imx8-isi: Stop abusing of min_buffers_needed field To: Tomasz Figa Cc: Laurent Pinchart , hverkuil@xs4all.nl, mchehab@kernel.org, m.szyprowski@samsung.com, matt.ranostay@konsulko.com, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-staging@lists.linux.dev, kernel@collabora.com, Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team References: <20231127165454.166373-1-benjamin.gaignard@collabora.com> <20231127165454.166373-8-benjamin.gaignard@collabora.com> <20231127170700.GC31314@pendragon.ideasonboard.com> <6fa1ec09-3e30-475e-9718-29d23586753e@collabora.com> <995eb6c2-cc7f-4217-bc37-4ab1a32f36ee@collabora.com> Content-Language: en-US From: Benjamin Gaignard In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Wed, 29 Nov 2023 00:28:46 -0800 (PST) Le 29/11/2023 à 05:17, Tomasz Figa a écrit : > On Tue, Nov 28, 2023 at 7:26 PM Benjamin Gaignard > wrote: >> >> Le 28/11/2023 à 10:35, Tomasz Figa a écrit : >>> On Tue, Nov 28, 2023 at 6:31 PM Benjamin Gaignard >>> wrote: >>>> Le 27/11/2023 à 18:07, Laurent Pinchart a écrit : >>>>> Hi Benjamin, >>>>> >>>>> Thank you for the patch. >>>>> >>>>> On Mon, Nov 27, 2023 at 05:54:06PM +0100, Benjamin Gaignard wrote: >>>>>> 'min_buffers_needed' is suppose to be used to indicate the number >>>>>> of buffers needed by DMA engine to start streaming. >>>>>> imx8-isi driver doesn't use DMA engine and just want to specify >>>>> What do you mean, "doesn't use DMA engine" ? The ISI surely has DMA >>>>> engines :-) >>>> I have done assumption on drivers given if they use or dma_* functions. >>> I suspect the use of vb2_dma_sg_plane_desc() and >>> vb2_dma_contig_plane_dma_addr() may be more correlated to whether >>> there is a DMA involved or not. Usually V4L2 drivers don't really have >>> to deal with the DMA API explicitly, because the vb2 framework handles >>> most of the work. >> Unfortunately isn't not true either, for example verisilicon driver use >> these function but doesn't need DMA engine. > That sounds weird. Why would a driver that doesn't have a DMA engine > need to obtain a scatterlist or the DMA address of the buffer? Just because the hardware needs the physical address of the buffer to access it. > >> I haven't found yet a 100% criteria to decide if driver use or not DMA engine >> so I plan to fix case by case given maintainers remarks. > Yeah, there probably wouldn't be a way that would give one a 100% > certainty, although I'd still insist that the two functions I > mentioned should be close to that. Of course a driver can use those > functions for some queues, while other queues would be pure software > queues, e.g. for some metadata - a simple grep is not enough. Is that > perhaps the case for the verisilicon driver? Verisilicon hardware block doesn't have IOMMU so it needs the physical addresses of all the buffers it use (input buffer, reference frame buffers, etc...). No DMA engine involved here it is just how the hardware is working. Expect functions like dma_release_channel() or being in PCI directory, I don't have found any magical way to know if a driver needs a minimum number of buffers before start streaming. I can only read the code and do assumptions for the other cases. I hope maintainers, like Laurent or you, will answer to this question for each driver. Regards, Benjamin > > Best regards, > Tomasz > >> Regards, >> Benjamin >> >>> Best regards, >>> Tomasz >>> >>>> I have considers that all PCI drivers are using DMA engine and >>>> I don't know the design for each drivers so I hope to get this information >>>> from maintainers and fix that in v2. >>>> If imx8-isi driver needs a minimum number of buffers before start streaming >>>> I will do a v2 and use min_dma_buffers_needed instead. >>>> >>>> Regards, >>>> Benjamin >>>> >>>>>> the minimum number of buffers to allocate when calling VIDIOC_REQBUFS. >>>>>> That 'min_reqbufs_allocation' field purpose so use it. >>>>>> >>>>>> Signed-off-by: Benjamin Gaignard >>>>>> CC: Laurent Pinchart >>>>>> CC: Mauro Carvalho Chehab >>>>>> CC: Shawn Guo >>>>>> CC: Sascha Hauer >>>>>> CC: Pengutronix Kernel Team >>>>>> CC: Fabio Estevam >>>>>> CC: NXP Linux Team >>>>>> --- >>>>>> drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 +- >>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>> >>>>>> diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c >>>>>> index 49bca2b01cc6..81673ff9084b 100644 >>>>>> --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c >>>>>> +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c >>>>>> @@ -1453,7 +1453,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe, >>>>>> q->mem_ops = &vb2_dma_contig_memops; >>>>>> q->buf_struct_size = sizeof(struct mxc_isi_buffer); >>>>>> q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; >>>>>> - q->min_buffers_needed = 2; >>>>>> + q->min_reqbufs_allocation = 2; >>>>>> q->lock = &video->lock; >>>>>> q->dev = pipe->isi->dev; >>>>>>