From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DDFCC4740A for ; Mon, 7 Oct 2019 09:44:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7BC6721655 for ; Mon, 7 Oct 2019 09:44:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727502AbfJGJo0 (ORCPT ); Mon, 7 Oct 2019 05:44:26 -0400 Received: from lb2-smtp-cloud7.xs4all.net ([194.109.24.28]:50589 "EHLO lb2-smtp-cloud7.xs4all.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726010AbfJGJo0 (ORCPT ); Mon, 7 Oct 2019 05:44:26 -0400 Received: from [IPv6:2001:983:e9a7:1:3d61:cdd2:8085:cc8] ([IPv6:2001:983:e9a7:1:3d61:cdd2:8085:cc8]) by smtp-cloud7.xs4all.net with ESMTPA id HPZ0iLENKjZ8vHPZ1i5nUm; Mon, 07 Oct 2019 11:44:24 +0200 Subject: Re: [PATCH v2 3/6] media: v4l2-mem2mem: add stateless_(try_)decoder_cmd ioctl helpers From: Hans Verkuil To: =?UTF-8?Q?Jernej_=c5=a0krabec?= Cc: mchehab@kernel.org, paul.kocialkowski@bootlin.com, mripard@kernel.org, pawel@osciak.com, m.szyprowski@samsung.com, kyungmin.park@samsung.com, tfiga@chromium.org, wens@csie.org, gregkh@linuxfoundation.org, boris.brezillon@collabora.com, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, linux-arm-kernel@lists.infradead.org, ezequiel@collabora.com, jonas@kwiboo.se References: <20190929200023.215831-1-jernej.skrabec@siol.net> <20190929200023.215831-4-jernej.skrabec@siol.net> <6c7eeaf1-18bb-1c7e-7938-a3eb5af100b6@xs4all.nl> <2840939.OS9t7MgvnY@jernej-laptop> Message-ID: Date: Mon, 7 Oct 2019 11:44:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4wfBhg/py6knYnvxMkJcNfVQ+HaYw1/5QCmKHnBYtRPv76Qm2AoD1c/Ql55QjfH0qG5LPLO1GSLVNPHUFKeJlbTOeuOz7RbyBpURJPL14hyhGGupB0RNCp mRKRFdLcj/L52Oxde2u3TfEr9XaNfGHsAfgV3C9SN6kvhZPBjvcMRd2eXePmKr43x76IDztL9jl7Dykw8+7wOgOqBbqyzKD/MvQMpZWjCL2WX4WiYdtGjDNW x3QLglAwFbVgyGcn8zmLoFn469yVAP1AmOwY58Uy7WCNxhvofVAyc1vfsn7nRUhcXIyQl4A75L9SrOVWvBmCqnQV/7UHRidLfMr8rRUgQG74dIvpwmdfLLit IaYQp/ZbAe8g2wf39hvt5sqMeccaLxo9liVvx9p1BplHSykj/XUSSx3kjsSxRwjidSSl2jJ+p6GRxT8Mq8NhNXihAyHMQxgRl1qwKyVg8V3uJZDNT1En7ndD TvT7Y3o2lD7kjTOx773li/ShhTUO03Rb0KNWN41ZondLwOtrhdk5dxRy9Eyo9e5Vhgf/SsMTasQ4t8y0FyNBURY6pCECM2eWv/PZMHLjG8zcJ52tHccbu2tH tY0NliwdJTMkxVb+CloozwUHKG+iE/sWOBPGHVPFZNf7GWk+VxncTNjC5dRKV2Z70y7FOkttLisWv60oWmTItcad0A7cUiU0vmc+vjIPK/aFo2CHsXfIQKwS n3t0r5yi3Q3mokY5rkoTseCC7cQTmcLVGgd4q0IT33WoLzcGwXvedEEybcr92xfrbIjFv49/SFv3ACNBnaGGelMyhxZZv0ps8jMRvSvrJAXWcVbVMNPcABz2 2qJ/vX1ll17fLGgpykc= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/7/19 10:32 AM, Hans Verkuil wrote: > On 10/7/19 8:02 AM, Jernej Škrabec wrote: >> Dne petek, 04. oktober 2019 ob 11:21:12 CEST je Hans Verkuil napisal(a): >>> On 9/29/19 10:00 PM, Jernej Skrabec wrote: >>>> These helpers are used by stateless codecs when they support multiple >>>> slices per frame and hold capture buffer flag is set. It's expected that >>>> all such codecs will use this code. >>>> >>>> Signed-off-by: Jernej Skrabec >>>> --- >>>> >>>> drivers/media/v4l2-core/v4l2-mem2mem.c | 35 ++++++++++++++++++++++++++ >>>> include/media/v4l2-mem2mem.h | 4 +++ >>>> 2 files changed, 39 insertions(+) >>>> >>>> diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c >>>> b/drivers/media/v4l2-core/v4l2-mem2mem.c index 19937dd3c6f6..2677a07e4c9b >>>> 100644 >>>> --- a/drivers/media/v4l2-core/v4l2-mem2mem.c >>>> +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c >>>> @@ -1154,6 +1154,41 @@ int v4l2_m2m_ioctl_try_decoder_cmd(struct file >>>> *file, void *fh,> >>>> } >>>> EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_try_decoder_cmd); >>>> >>>> +int v4l2_m2m_ioctl_stateless_try_decoder_cmd(struct file *file, void *fh, >>>> + struct >> v4l2_decoder_cmd *dc) >>>> +{ >>>> + if (dc->cmd != V4L2_DEC_CMD_FLUSH) >>>> + return -EINVAL; >>>> + >>>> + dc->flags = 0; >>>> + >>>> + return 0; >>>> +} >>>> +EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_stateless_try_decoder_cmd); >>>> + >>>> +int v4l2_m2m_ioctl_stateless_decoder_cmd(struct file *file, void *priv, >>>> + struct >> v4l2_decoder_cmd *dc) >>>> +{ >>>> + struct v4l2_fh *fh = file->private_data; >>>> + struct vb2_v4l2_buffer *out_vb, *cap_vb; >>>> + int ret; >>>> + >>>> + ret = v4l2_m2m_ioctl_stateless_try_decoder_cmd(file, priv, dc); >>>> + if (ret < 0) >>>> + return ret; >>>> + >>>> + out_vb = v4l2_m2m_last_src_buf(fh->m2m_ctx); >>>> + cap_vb = v4l2_m2m_last_dst_buf(fh->m2m_ctx); >>> >>> I think this should be v4l2_m2m_next_dst_buf. If multiple capture buffers >>> were queued up, then it can only be the first capture buffer that can be >>> 'HELD'. >> >> I'm pretty sure v4l2_m2m_last_dst_buf() is correct. We want to affect last job >> in the queue, all jobs before are already properly handled by comparing >> timestamps. > > You're absolutely right. > >> >>> >>> This might solve the race condition you saw with ffmpeg. >> >> This actually doesn't change anything. ffmpeg currently queues only one job and >> then waits until it's executed. In this case it actually doesn't matter if >> "last" or "next" variant is used. > > Can you debug this a bit further? I don't want to merge this unless we know what's > going wrong with ffmpeg. > > I suspect it is a race condition. I'll reply to patch 6/6 with more info. I've decided to make a v3 of this series. There are major locking issues with this and this will require a bit of rework. Regards, Hans > > Regards, > > Hans > >> >> Best regards, >> Jernej >> >>> >>> Regards, >>> >>> Hans >>> >>>> + >>>> + if (out_vb) >>>> + out_vb->flags &= ~V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF; >>>> + else if (cap_vb && cap_vb->is_held) >>>> + v4l2_m2m_buf_done(cap_vb, VB2_BUF_STATE_DONE); >>>> + >>>> + return 0; >>>> +} >>>> +EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_stateless_decoder_cmd); >>>> + >>>> >>>> /* >>>> >>>> * v4l2_file_operations helpers. It is assumed here same lock is used >>>> * for the output and the capture buffer queue. >>>> >>>> diff --git a/include/media/v4l2-mem2mem.h b/include/media/v4l2-mem2mem.h >>>> index c9fa96c8eed1..8ae2f56c7fa3 100644 >>>> --- a/include/media/v4l2-mem2mem.h >>>> +++ b/include/media/v4l2-mem2mem.h >>>> @@ -714,6 +714,10 @@ int v4l2_m2m_ioctl_try_encoder_cmd(struct file *file, >>>> void *fh,> >>>> struct v4l2_encoder_cmd *ec); >>>> >>>> int v4l2_m2m_ioctl_try_decoder_cmd(struct file *file, void *fh, >>>> >>>> struct v4l2_decoder_cmd *dc); >>>> >>>> +int v4l2_m2m_ioctl_stateless_try_decoder_cmd(struct file *file, void *fh, >>>> + struct >> v4l2_decoder_cmd *dc); >>>> +int v4l2_m2m_ioctl_stateless_decoder_cmd(struct file *file, void *priv, >>>> + struct >> v4l2_decoder_cmd *dc); >>>> >>>> int v4l2_m2m_fop_mmap(struct file *file, struct vm_area_struct *vma); >>>> __poll_t v4l2_m2m_fop_poll(struct file *file, poll_table *wait); >> >> >> >> > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA2CCC47404 for ; Mon, 7 Oct 2019 09:44:32 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9507621655 for ; Mon, 7 Oct 2019 09:44:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9507621655 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xs4all.nl Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id AC6FF20553; Mon, 7 Oct 2019 09:44:31 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DWtO4ghr0RYE; Mon, 7 Oct 2019 09:44:30 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 0CEE6203F1; Mon, 7 Oct 2019 09:44:30 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 9F4D11BF297 for ; Mon, 7 Oct 2019 09:44:28 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 969218682F for ; Mon, 7 Oct 2019 09:44:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iG-qhyCKf9Lr for ; Mon, 7 Oct 2019 09:44:26 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from lb1-smtp-cloud7.xs4all.net (lb1-smtp-cloud7.xs4all.net [194.109.24.24]) by whitealder.osuosl.org (Postfix) with ESMTPS id 3486D8405F for ; Mon, 7 Oct 2019 09:44:26 +0000 (UTC) Received: from [IPv6:2001:983:e9a7:1:3d61:cdd2:8085:cc8] ([IPv6:2001:983:e9a7:1:3d61:cdd2:8085:cc8]) by smtp-cloud7.xs4all.net with ESMTPA id HPZ0iLENKjZ8vHPZ1i5nUm; Mon, 07 Oct 2019 11:44:24 +0200 Subject: Re: [PATCH v2 3/6] media: v4l2-mem2mem: add stateless_(try_)decoder_cmd ioctl helpers From: Hans Verkuil To: =?UTF-8?Q?Jernej_=c5=a0krabec?= References: <20190929200023.215831-1-jernej.skrabec@siol.net> <20190929200023.215831-4-jernej.skrabec@siol.net> <6c7eeaf1-18bb-1c7e-7938-a3eb5af100b6@xs4all.nl> <2840939.OS9t7MgvnY@jernej-laptop> Message-ID: Date: Mon, 7 Oct 2019 11:44:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CMAE-Envelope: MS4wfBhg/py6knYnvxMkJcNfVQ+HaYw1/5QCmKHnBYtRPv76Qm2AoD1c/Ql55QjfH0qG5LPLO1GSLVNPHUFKeJlbTOeuOz7RbyBpURJPL14hyhGGupB0RNCp mRKRFdLcj/L52Oxde2u3TfEr9XaNfGHsAfgV3C9SN6kvhZPBjvcMRd2eXePmKr43x76IDztL9jl7Dykw8+7wOgOqBbqyzKD/MvQMpZWjCL2WX4WiYdtGjDNW x3QLglAwFbVgyGcn8zmLoFn469yVAP1AmOwY58Uy7WCNxhvofVAyc1vfsn7nRUhcXIyQl4A75L9SrOVWvBmCqnQV/7UHRidLfMr8rRUgQG74dIvpwmdfLLit IaYQp/ZbAe8g2wf39hvt5sqMeccaLxo9liVvx9p1BplHSykj/XUSSx3kjsSxRwjidSSl2jJ+p6GRxT8Mq8NhNXihAyHMQxgRl1qwKyVg8V3uJZDNT1En7ndD TvT7Y3o2lD7kjTOx773li/ShhTUO03Rb0KNWN41ZondLwOtrhdk5dxRy9Eyo9e5Vhgf/SsMTasQ4t8y0FyNBURY6pCECM2eWv/PZMHLjG8zcJ52tHccbu2tH tY0NliwdJTMkxVb+CloozwUHKG+iE/sWOBPGHVPFZNf7GWk+VxncTNjC5dRKV2Z70y7FOkttLisWv60oWmTItcad0A7cUiU0vmc+vjIPK/aFo2CHsXfIQKwS n3t0r5yi3Q3mokY5rkoTseCC7cQTmcLVGgd4q0IT33WoLzcGwXvedEEybcr92xfrbIjFv49/SFv3ACNBnaGGelMyhxZZv0ps8jMRvSvrJAXWcVbVMNPcABz2 2qJ/vX1ll17fLGgpykc= X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, linux-media@vger.kernel.org, pawel@osciak.com, jonas@kwiboo.se, gregkh@linuxfoundation.org, wens@csie.org, mripard@kernel.org, tfiga@chromium.org, paul.kocialkowski@bootlin.com, kyungmin.park@samsung.com, boris.brezillon@collabora.com, linux-arm-kernel@lists.infradead.org, mchehab@kernel.org, ezequiel@collabora.com, linux-kernel@vger.kernel.org, m.szyprowski@samsung.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" T24gMTAvNy8xOSAxMDozMiBBTSwgSGFucyBWZXJrdWlsIHdyb3RlOgo+IE9uIDEwLzcvMTkgODow MiBBTSwgSmVybmVqIMWga3JhYmVjIHdyb3RlOgo+PiBEbmUgcGV0ZWssIDA0LiBva3RvYmVyIDIw MTkgb2IgMTE6MjE6MTIgQ0VTVCBqZSBIYW5zIFZlcmt1aWwgbmFwaXNhbChhKToKPj4+IE9uIDkv MjkvMTkgMTA6MDAgUE0sIEplcm5laiBTa3JhYmVjIHdyb3RlOgo+Pj4+IFRoZXNlIGhlbHBlcnMg YXJlIHVzZWQgYnkgc3RhdGVsZXNzIGNvZGVjcyB3aGVuIHRoZXkgc3VwcG9ydCBtdWx0aXBsZQo+ Pj4+IHNsaWNlcyBwZXIgZnJhbWUgYW5kIGhvbGQgY2FwdHVyZSBidWZmZXIgZmxhZyBpcyBzZXQu IEl0J3MgZXhwZWN0ZWQgdGhhdAo+Pj4+IGFsbCBzdWNoIGNvZGVjcyB3aWxsIHVzZSB0aGlzIGNv ZGUuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBKZXJuZWogU2tyYWJlYyA8amVybmVqLnNrcmFi ZWNAc2lvbC5uZXQ+Cj4+Pj4gLS0tCj4+Pj4KPj4+PiAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv djRsMi1tZW0ybWVtLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICBpbmNs dWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oICAgICAgICAgICB8ICA0ICsrKwo+Pj4+ICAyIGZpbGVz IGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKykKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3Y0bDItY29yZS92NGwyLW1lbTJtZW0uYwo+Pj4+IGIvZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1tZW0ybWVtLmMgaW5kZXggMTk5MzdkZDNjNmY2Li4yNjc3YTA3ZTRjOWIKPj4+ PiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLW1lbTJtZW0u Ywo+Pj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItbWVtMm1lbS5jCj4+Pj4g QEAgLTExNTQsNiArMTE1NCw0MSBAQCBpbnQgdjRsMl9tMm1faW9jdGxfdHJ5X2RlY29kZXJfY21k KHN0cnVjdCBmaWxlCj4+Pj4gKmZpbGUsIHZvaWQgKmZoLD4gCj4+Pj4gIH0KPj4+PiAgRVhQT1JU X1NZTUJPTF9HUEwodjRsMl9tMm1faW9jdGxfdHJ5X2RlY29kZXJfY21kKTsKPj4+Pgo+Pj4+ICtp bnQgdjRsMl9tMm1faW9jdGxfc3RhdGVsZXNzX3RyeV9kZWNvZGVyX2NtZChzdHJ1Y3QgZmlsZSAq ZmlsZSwgdm9pZCAqZmgsCj4+Pj4gKwkJCQkJICAgICBzdHJ1Y3QgCj4+IHY0bDJfZGVjb2Rlcl9j bWQgKmRjKQo+Pj4+ICt7Cj4+Pj4gKwlpZiAoZGMtPmNtZCAhPSBWNEwyX0RFQ19DTURfRkxVU0gp Cj4+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwo+Pj4+ICsJZGMtPmZsYWdzID0gMDsKPj4+ PiArCj4+Pj4gKwlyZXR1cm4gMDsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh2NGwy X20ybV9pb2N0bF9zdGF0ZWxlc3NfdHJ5X2RlY29kZXJfY21kKTsKPj4+PiArCj4+Pj4gK2ludCB2 NGwyX20ybV9pb2N0bF9zdGF0ZWxlc3NfZGVjb2Rlcl9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHZv aWQgKnByaXYsCj4+Pj4gKwkJCQkJIHN0cnVjdCAKPj4gdjRsMl9kZWNvZGVyX2NtZCAqZGMpCj4+ Pj4gK3sKPj4+PiArCXN0cnVjdCB2NGwyX2ZoICpmaCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPj4+ PiArCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm91dF92YiwgKmNhcF92YjsKPj4+PiArCWludCBy ZXQ7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gdjRsMl9tMm1faW9jdGxfc3RhdGVsZXNzX3RyeV9kZWNv ZGVyX2NtZChmaWxlLCBwcml2LCBkYyk7Cj4+Pj4gKwlpZiAocmV0IDwgMCkKPj4+PiArCQlyZXR1 cm4gcmV0Owo+Pj4+ICsKPj4+PiArCW91dF92YiA9IHY0bDJfbTJtX2xhc3Rfc3JjX2J1ZihmaC0+ bTJtX2N0eCk7Cj4+Pj4gKwljYXBfdmIgPSB2NGwyX20ybV9sYXN0X2RzdF9idWYoZmgtPm0ybV9j dHgpOwo+Pj4KPj4+IEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgdjRsMl9tMm1fbmV4dF9kc3RfYnVm LiBJZiBtdWx0aXBsZSBjYXB0dXJlIGJ1ZmZlcnMKPj4+IHdlcmUgcXVldWVkIHVwLCB0aGVuIGl0 IGNhbiBvbmx5IGJlIHRoZSBmaXJzdCBjYXB0dXJlIGJ1ZmZlciB0aGF0IGNhbiBiZQo+Pj4gJ0hF TEQnLgo+Pgo+PiBJJ20gcHJldHR5IHN1cmUgdjRsMl9tMm1fbGFzdF9kc3RfYnVmKCkgaXMgY29y cmVjdC4gV2Ugd2FudCB0byBhZmZlY3QgbGFzdCBqb2IgCj4+IGluIHRoZSBxdWV1ZSwgYWxsIGpv YnMgYmVmb3JlIGFyZSBhbHJlYWR5IHByb3Blcmx5IGhhbmRsZWQgYnkgY29tcGFyaW5nIAo+PiB0 aW1lc3RhbXBzLgo+IAo+IFlvdSdyZSBhYnNvbHV0ZWx5IHJpZ2h0Lgo+IAo+Pgo+Pj4KPj4+IFRo aXMgbWlnaHQgc29sdmUgdGhlIHJhY2UgY29uZGl0aW9uIHlvdSBzYXcgd2l0aCBmZm1wZWcuCj4+ Cj4+IFRoaXMgYWN0dWFsbHkgZG9lc24ndCBjaGFuZ2UgYW55dGhpbmcuIGZmbXBlZyBjdXJyZW50 bHkgcXVldWVzIG9ubHkgb25lIGpvYiBhbmQgCj4+IHRoZW4gd2FpdHMgdW50aWwgaXQncyBleGVj dXRlZC4gSW4gdGhpcyBjYXNlIGl0IGFjdHVhbGx5IGRvZXNuJ3QgbWF0dGVyIGlmIAo+PiAibGFz dCIgb3IgIm5leHQiIHZhcmlhbnQgaXMgdXNlZC4KPiAKPiBDYW4geW91IGRlYnVnIHRoaXMgYSBi aXQgZnVydGhlcj8gSSBkb24ndCB3YW50IHRvIG1lcmdlIHRoaXMgdW5sZXNzIHdlIGtub3cgd2hh dCdzCj4gZ29pbmcgd3Jvbmcgd2l0aCBmZm1wZWcuCj4gCj4gSSBzdXNwZWN0IGl0IGlzIGEgcmFj ZSBjb25kaXRpb24uIEknbGwgcmVwbHkgdG8gcGF0Y2ggNi82IHdpdGggbW9yZSBpbmZvLgoKSSd2 ZSBkZWNpZGVkIHRvIG1ha2UgYSB2MyBvZiB0aGlzIHNlcmllcy4gVGhlcmUgYXJlIG1ham9yIGxv Y2tpbmcgaXNzdWVzIHdpdGggdGhpcwphbmQgdGhpcyB3aWxsIHJlcXVpcmUgYSBiaXQgb2YgcmV3 b3JrLgoKUmVnYXJkcywKCglIYW5zCgo+IAo+IFJlZ2FyZHMsCj4gCj4gCUhhbnMKPiAKPj4KPj4g QmVzdCByZWdhcmRzLAo+PiBKZXJuZWoKPj4KPj4+Cj4+PiBSZWdhcmRzLAo+Pj4KPj4+IAlIYW5z Cj4+Pgo+Pj4+ICsKPj4+PiArCWlmIChvdXRfdmIpCj4+Pj4gKwkJb3V0X3ZiLT5mbGFncyAmPSB+ VjRMMl9CVUZfRkxBR19NMk1fSE9MRF9DQVBUVVJFX0JVRjsKPj4+PiArCWVsc2UgaWYgKGNhcF92 YiAmJiBjYXBfdmItPmlzX2hlbGQpCj4+Pj4gKwkJdjRsMl9tMm1fYnVmX2RvbmUoY2FwX3ZiLCBW QjJfQlVGX1NUQVRFX0RPTkUpOwo+Pj4+ICsKPj4+PiArCXJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4g K0VYUE9SVF9TWU1CT0xfR1BMKHY0bDJfbTJtX2lvY3RsX3N0YXRlbGVzc19kZWNvZGVyX2NtZCk7 Cj4+Pj4gKwo+Pj4+Cj4+Pj4gIC8qCj4+Pj4gIAo+Pj4+ICAgKiB2NGwyX2ZpbGVfb3BlcmF0aW9u cyBoZWxwZXJzLiBJdCBpcyBhc3N1bWVkIGhlcmUgc2FtZSBsb2NrIGlzIHVzZWQKPj4+PiAgICog Zm9yIHRoZSBvdXRwdXQgYW5kIHRoZSBjYXB0dXJlIGJ1ZmZlciBxdWV1ZS4KPj4+Pgo+Pj4+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oIGIvaW5jbHVkZS9tZWRpYS92 NGwyLW1lbTJtZW0uaAo+Pj4+IGluZGV4IGM5ZmE5NmM4ZWVkMS4uOGFlMmY1NmM3ZmEzIDEwMDY0 NAo+Pj4+IC0tLSBhL2luY2x1ZGUvbWVkaWEvdjRsMi1tZW0ybWVtLmgKPj4+PiArKysgYi9pbmNs dWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oCj4+Pj4gQEAgLTcxNCw2ICs3MTQsMTAgQEAgaW50IHY0 bDJfbTJtX2lvY3RsX3RyeV9lbmNvZGVyX2NtZChzdHJ1Y3QgZmlsZSAqZmlsZSwKPj4+PiB2b2lk ICpmaCw+IAo+Pj4+ICAJCQkJICAgc3RydWN0IHY0bDJfZW5jb2Rlcl9jbWQgKmVjKTsKPj4+PiAg Cj4+Pj4gIGludCB2NGwyX20ybV9pb2N0bF90cnlfZGVjb2Rlcl9jbWQoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKmZoLAo+Pj4+ICAKPj4+PiAgCQkJCSAgIHN0cnVjdCB2NGwyX2RlY29kZXJfY21k ICpkYyk7Cj4+Pj4KPj4+PiAraW50IHY0bDJfbTJtX2lvY3RsX3N0YXRlbGVzc190cnlfZGVjb2Rl cl9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+Pj4+ICsJCQkJCSAgICAgc3RydWN0 IAo+PiB2NGwyX2RlY29kZXJfY21kICpkYyk7Cj4+Pj4gK2ludCB2NGwyX20ybV9pb2N0bF9zdGF0 ZWxlc3NfZGVjb2Rlcl9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4+Pj4gKwkJ CQkJIHN0cnVjdCAKPj4gdjRsMl9kZWNvZGVyX2NtZCAqZGMpOwo+Pj4+Cj4+Pj4gIGludCB2NGwy X20ybV9mb3BfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEpOwo+Pj4+ICBfX3BvbGxfdCB2NGwyX20ybV9mb3BfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwg cG9sbF90YWJsZSAqd2FpdCk7Cj4+Cj4+Cj4+Cj4+Cj4gCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkZXZlbCBtYWlsaW5nIGxpc3QKZGV2ZWxAbGludXhk cml2ZXJwcm9qZWN0Lm9yZwpodHRwOi8vZHJpdmVyZGV2LmxpbnV4ZHJpdmVycHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcml2ZXJkZXYtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0725EECE58D for ; Mon, 7 Oct 2019 09:44:34 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C6D5721655 for ; Mon, 7 Oct 2019 09:44:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="FUO9f6T5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6D5721655 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xs4all.nl Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:References:To:From:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GuYP3HJfh7BXefnCBuhilcmU3JzTWHIUfv33dE/XmR8=; b=FUO9f6T5SZhqST UWwoLy8e9y+9nSjhn8qDGi28mvziwJHYoqgaU2Mk7ltEwSgl03LuhAd9mUG9sURZyhhVaCZ/t3BRu rpS3PFt7c+3CSPjjX1dSZpsFzYb76mo7HwsnZ5KybfcWP/87u1/tE9IeY8wDbFqstpZXdhNtAGtzp TX7pvH1HGM74fNbFVXJYip0RzV97QNRotIkCuFoRI67WyM8TueVhT5R9WlwtdMMqm3AkU/1wA3/BL wHbdmfmzyO4eXpyk5h9MxIyvI9Uf0D+5LhfKP74KwDS1bDO4tv73cjFWTZDer2jEC7hMeWrrqnE69 SsUHIMO024h2QSS14zbA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iHPZB-0005zx-1R; Mon, 07 Oct 2019 09:44:33 +0000 Received: from lb2-smtp-cloud7.xs4all.net ([194.109.24.28]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iHPZ7-0005yv-CA for linux-arm-kernel@lists.infradead.org; Mon, 07 Oct 2019 09:44:31 +0000 Received: from [IPv6:2001:983:e9a7:1:3d61:cdd2:8085:cc8] ([IPv6:2001:983:e9a7:1:3d61:cdd2:8085:cc8]) by smtp-cloud7.xs4all.net with ESMTPA id HPZ0iLENKjZ8vHPZ1i5nUm; Mon, 07 Oct 2019 11:44:24 +0200 Subject: Re: [PATCH v2 3/6] media: v4l2-mem2mem: add stateless_(try_)decoder_cmd ioctl helpers From: Hans Verkuil To: =?UTF-8?Q?Jernej_=c5=a0krabec?= References: <20190929200023.215831-1-jernej.skrabec@siol.net> <20190929200023.215831-4-jernej.skrabec@siol.net> <6c7eeaf1-18bb-1c7e-7938-a3eb5af100b6@xs4all.nl> <2840939.OS9t7MgvnY@jernej-laptop> Message-ID: Date: Mon, 7 Oct 2019 11:44:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CMAE-Envelope: MS4wfBhg/py6knYnvxMkJcNfVQ+HaYw1/5QCmKHnBYtRPv76Qm2AoD1c/Ql55QjfH0qG5LPLO1GSLVNPHUFKeJlbTOeuOz7RbyBpURJPL14hyhGGupB0RNCp mRKRFdLcj/L52Oxde2u3TfEr9XaNfGHsAfgV3C9SN6kvhZPBjvcMRd2eXePmKr43x76IDztL9jl7Dykw8+7wOgOqBbqyzKD/MvQMpZWjCL2WX4WiYdtGjDNW x3QLglAwFbVgyGcn8zmLoFn469yVAP1AmOwY58Uy7WCNxhvofVAyc1vfsn7nRUhcXIyQl4A75L9SrOVWvBmCqnQV/7UHRidLfMr8rRUgQG74dIvpwmdfLLit IaYQp/ZbAe8g2wf39hvt5sqMeccaLxo9liVvx9p1BplHSykj/XUSSx3kjsSxRwjidSSl2jJ+p6GRxT8Mq8NhNXihAyHMQxgRl1qwKyVg8V3uJZDNT1En7ndD TvT7Y3o2lD7kjTOx773li/ShhTUO03Rb0KNWN41ZondLwOtrhdk5dxRy9Eyo9e5Vhgf/SsMTasQ4t8y0FyNBURY6pCECM2eWv/PZMHLjG8zcJ52tHccbu2tH tY0NliwdJTMkxVb+CloozwUHKG+iE/sWOBPGHVPFZNf7GWk+VxncTNjC5dRKV2Z70y7FOkttLisWv60oWmTItcad0A7cUiU0vmc+vjIPK/aFo2CHsXfIQKwS n3t0r5yi3Q3mokY5rkoTseCC7cQTmcLVGgd4q0IT33WoLzcGwXvedEEybcr92xfrbIjFv49/SFv3ACNBnaGGelMyhxZZv0ps8jMRvSvrJAXWcVbVMNPcABz2 2qJ/vX1ll17fLGgpykc= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191007_024429_572012_77A23FDD X-CRM114-Status: GOOD ( 17.72 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, linux-media@vger.kernel.org, pawel@osciak.com, jonas@kwiboo.se, gregkh@linuxfoundation.org, wens@csie.org, mripard@kernel.org, tfiga@chromium.org, paul.kocialkowski@bootlin.com, kyungmin.park@samsung.com, boris.brezillon@collabora.com, linux-arm-kernel@lists.infradead.org, mchehab@kernel.org, ezequiel@collabora.com, linux-kernel@vger.kernel.org, m.szyprowski@samsung.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTAvNy8xOSAxMDozMiBBTSwgSGFucyBWZXJrdWlsIHdyb3RlOgo+IE9uIDEwLzcvMTkgODow MiBBTSwgSmVybmVqIMWga3JhYmVjIHdyb3RlOgo+PiBEbmUgcGV0ZWssIDA0LiBva3RvYmVyIDIw MTkgb2IgMTE6MjE6MTIgQ0VTVCBqZSBIYW5zIFZlcmt1aWwgbmFwaXNhbChhKToKPj4+IE9uIDkv MjkvMTkgMTA6MDAgUE0sIEplcm5laiBTa3JhYmVjIHdyb3RlOgo+Pj4+IFRoZXNlIGhlbHBlcnMg YXJlIHVzZWQgYnkgc3RhdGVsZXNzIGNvZGVjcyB3aGVuIHRoZXkgc3VwcG9ydCBtdWx0aXBsZQo+ Pj4+IHNsaWNlcyBwZXIgZnJhbWUgYW5kIGhvbGQgY2FwdHVyZSBidWZmZXIgZmxhZyBpcyBzZXQu IEl0J3MgZXhwZWN0ZWQgdGhhdAo+Pj4+IGFsbCBzdWNoIGNvZGVjcyB3aWxsIHVzZSB0aGlzIGNv ZGUuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBKZXJuZWogU2tyYWJlYyA8amVybmVqLnNrcmFi ZWNAc2lvbC5uZXQ+Cj4+Pj4gLS0tCj4+Pj4KPj4+PiAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv djRsMi1tZW0ybWVtLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICBpbmNs dWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oICAgICAgICAgICB8ICA0ICsrKwo+Pj4+ICAyIGZpbGVz IGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKykKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3Y0bDItY29yZS92NGwyLW1lbTJtZW0uYwo+Pj4+IGIvZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1tZW0ybWVtLmMgaW5kZXggMTk5MzdkZDNjNmY2Li4yNjc3YTA3ZTRjOWIKPj4+ PiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLW1lbTJtZW0u Ywo+Pj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItbWVtMm1lbS5jCj4+Pj4g QEAgLTExNTQsNiArMTE1NCw0MSBAQCBpbnQgdjRsMl9tMm1faW9jdGxfdHJ5X2RlY29kZXJfY21k KHN0cnVjdCBmaWxlCj4+Pj4gKmZpbGUsIHZvaWQgKmZoLD4gCj4+Pj4gIH0KPj4+PiAgRVhQT1JU X1NZTUJPTF9HUEwodjRsMl9tMm1faW9jdGxfdHJ5X2RlY29kZXJfY21kKTsKPj4+Pgo+Pj4+ICtp bnQgdjRsMl9tMm1faW9jdGxfc3RhdGVsZXNzX3RyeV9kZWNvZGVyX2NtZChzdHJ1Y3QgZmlsZSAq ZmlsZSwgdm9pZCAqZmgsCj4+Pj4gKwkJCQkJICAgICBzdHJ1Y3QgCj4+IHY0bDJfZGVjb2Rlcl9j bWQgKmRjKQo+Pj4+ICt7Cj4+Pj4gKwlpZiAoZGMtPmNtZCAhPSBWNEwyX0RFQ19DTURfRkxVU0gp Cj4+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwo+Pj4+ICsJZGMtPmZsYWdzID0gMDsKPj4+ PiArCj4+Pj4gKwlyZXR1cm4gMDsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh2NGwy X20ybV9pb2N0bF9zdGF0ZWxlc3NfdHJ5X2RlY29kZXJfY21kKTsKPj4+PiArCj4+Pj4gK2ludCB2 NGwyX20ybV9pb2N0bF9zdGF0ZWxlc3NfZGVjb2Rlcl9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHZv aWQgKnByaXYsCj4+Pj4gKwkJCQkJIHN0cnVjdCAKPj4gdjRsMl9kZWNvZGVyX2NtZCAqZGMpCj4+ Pj4gK3sKPj4+PiArCXN0cnVjdCB2NGwyX2ZoICpmaCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPj4+ PiArCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm91dF92YiwgKmNhcF92YjsKPj4+PiArCWludCBy ZXQ7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gdjRsMl9tMm1faW9jdGxfc3RhdGVsZXNzX3RyeV9kZWNv ZGVyX2NtZChmaWxlLCBwcml2LCBkYyk7Cj4+Pj4gKwlpZiAocmV0IDwgMCkKPj4+PiArCQlyZXR1 cm4gcmV0Owo+Pj4+ICsKPj4+PiArCW91dF92YiA9IHY0bDJfbTJtX2xhc3Rfc3JjX2J1ZihmaC0+ bTJtX2N0eCk7Cj4+Pj4gKwljYXBfdmIgPSB2NGwyX20ybV9sYXN0X2RzdF9idWYoZmgtPm0ybV9j dHgpOwo+Pj4KPj4+IEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgdjRsMl9tMm1fbmV4dF9kc3RfYnVm LiBJZiBtdWx0aXBsZSBjYXB0dXJlIGJ1ZmZlcnMKPj4+IHdlcmUgcXVldWVkIHVwLCB0aGVuIGl0 IGNhbiBvbmx5IGJlIHRoZSBmaXJzdCBjYXB0dXJlIGJ1ZmZlciB0aGF0IGNhbiBiZQo+Pj4gJ0hF TEQnLgo+Pgo+PiBJJ20gcHJldHR5IHN1cmUgdjRsMl9tMm1fbGFzdF9kc3RfYnVmKCkgaXMgY29y cmVjdC4gV2Ugd2FudCB0byBhZmZlY3QgbGFzdCBqb2IgCj4+IGluIHRoZSBxdWV1ZSwgYWxsIGpv YnMgYmVmb3JlIGFyZSBhbHJlYWR5IHByb3Blcmx5IGhhbmRsZWQgYnkgY29tcGFyaW5nIAo+PiB0 aW1lc3RhbXBzLgo+IAo+IFlvdSdyZSBhYnNvbHV0ZWx5IHJpZ2h0Lgo+IAo+Pgo+Pj4KPj4+IFRo aXMgbWlnaHQgc29sdmUgdGhlIHJhY2UgY29uZGl0aW9uIHlvdSBzYXcgd2l0aCBmZm1wZWcuCj4+ Cj4+IFRoaXMgYWN0dWFsbHkgZG9lc24ndCBjaGFuZ2UgYW55dGhpbmcuIGZmbXBlZyBjdXJyZW50 bHkgcXVldWVzIG9ubHkgb25lIGpvYiBhbmQgCj4+IHRoZW4gd2FpdHMgdW50aWwgaXQncyBleGVj dXRlZC4gSW4gdGhpcyBjYXNlIGl0IGFjdHVhbGx5IGRvZXNuJ3QgbWF0dGVyIGlmIAo+PiAibGFz dCIgb3IgIm5leHQiIHZhcmlhbnQgaXMgdXNlZC4KPiAKPiBDYW4geW91IGRlYnVnIHRoaXMgYSBi aXQgZnVydGhlcj8gSSBkb24ndCB3YW50IHRvIG1lcmdlIHRoaXMgdW5sZXNzIHdlIGtub3cgd2hh dCdzCj4gZ29pbmcgd3Jvbmcgd2l0aCBmZm1wZWcuCj4gCj4gSSBzdXNwZWN0IGl0IGlzIGEgcmFj ZSBjb25kaXRpb24uIEknbGwgcmVwbHkgdG8gcGF0Y2ggNi82IHdpdGggbW9yZSBpbmZvLgoKSSd2 ZSBkZWNpZGVkIHRvIG1ha2UgYSB2MyBvZiB0aGlzIHNlcmllcy4gVGhlcmUgYXJlIG1ham9yIGxv Y2tpbmcgaXNzdWVzIHdpdGggdGhpcwphbmQgdGhpcyB3aWxsIHJlcXVpcmUgYSBiaXQgb2YgcmV3 b3JrLgoKUmVnYXJkcywKCglIYW5zCgo+IAo+IFJlZ2FyZHMsCj4gCj4gCUhhbnMKPiAKPj4KPj4g QmVzdCByZWdhcmRzLAo+PiBKZXJuZWoKPj4KPj4+Cj4+PiBSZWdhcmRzLAo+Pj4KPj4+IAlIYW5z Cj4+Pgo+Pj4+ICsKPj4+PiArCWlmIChvdXRfdmIpCj4+Pj4gKwkJb3V0X3ZiLT5mbGFncyAmPSB+ VjRMMl9CVUZfRkxBR19NMk1fSE9MRF9DQVBUVVJFX0JVRjsKPj4+PiArCWVsc2UgaWYgKGNhcF92 YiAmJiBjYXBfdmItPmlzX2hlbGQpCj4+Pj4gKwkJdjRsMl9tMm1fYnVmX2RvbmUoY2FwX3ZiLCBW QjJfQlVGX1NUQVRFX0RPTkUpOwo+Pj4+ICsKPj4+PiArCXJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4g K0VYUE9SVF9TWU1CT0xfR1BMKHY0bDJfbTJtX2lvY3RsX3N0YXRlbGVzc19kZWNvZGVyX2NtZCk7 Cj4+Pj4gKwo+Pj4+Cj4+Pj4gIC8qCj4+Pj4gIAo+Pj4+ICAgKiB2NGwyX2ZpbGVfb3BlcmF0aW9u cyBoZWxwZXJzLiBJdCBpcyBhc3N1bWVkIGhlcmUgc2FtZSBsb2NrIGlzIHVzZWQKPj4+PiAgICog Zm9yIHRoZSBvdXRwdXQgYW5kIHRoZSBjYXB0dXJlIGJ1ZmZlciBxdWV1ZS4KPj4+Pgo+Pj4+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oIGIvaW5jbHVkZS9tZWRpYS92 NGwyLW1lbTJtZW0uaAo+Pj4+IGluZGV4IGM5ZmE5NmM4ZWVkMS4uOGFlMmY1NmM3ZmEzIDEwMDY0 NAo+Pj4+IC0tLSBhL2luY2x1ZGUvbWVkaWEvdjRsMi1tZW0ybWVtLmgKPj4+PiArKysgYi9pbmNs dWRlL21lZGlhL3Y0bDItbWVtMm1lbS5oCj4+Pj4gQEAgLTcxNCw2ICs3MTQsMTAgQEAgaW50IHY0 bDJfbTJtX2lvY3RsX3RyeV9lbmNvZGVyX2NtZChzdHJ1Y3QgZmlsZSAqZmlsZSwKPj4+PiB2b2lk ICpmaCw+IAo+Pj4+ICAJCQkJICAgc3RydWN0IHY0bDJfZW5jb2Rlcl9jbWQgKmVjKTsKPj4+PiAg Cj4+Pj4gIGludCB2NGwyX20ybV9pb2N0bF90cnlfZGVjb2Rlcl9jbWQoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKmZoLAo+Pj4+ICAKPj4+PiAgCQkJCSAgIHN0cnVjdCB2NGwyX2RlY29kZXJfY21k ICpkYyk7Cj4+Pj4KPj4+PiAraW50IHY0bDJfbTJtX2lvY3RsX3N0YXRlbGVzc190cnlfZGVjb2Rl cl9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+Pj4+ICsJCQkJCSAgICAgc3RydWN0 IAo+PiB2NGwyX2RlY29kZXJfY21kICpkYyk7Cj4+Pj4gK2ludCB2NGwyX20ybV9pb2N0bF9zdGF0 ZWxlc3NfZGVjb2Rlcl9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4+Pj4gKwkJ CQkJIHN0cnVjdCAKPj4gdjRsMl9kZWNvZGVyX2NtZCAqZGMpOwo+Pj4+Cj4+Pj4gIGludCB2NGwy X20ybV9mb3BfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEpOwo+Pj4+ICBfX3BvbGxfdCB2NGwyX20ybV9mb3BfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwg cG9sbF90YWJsZSAqd2FpdCk7Cj4+Cj4+Cj4+Cj4+Cj4gCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=