From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B12D51578; Tue, 15 Feb 2022 14:57:45 +0000 (UTC) Received: from [IPV6:2a01:e0a:120:3210:6d7b:ae43:289b:7e7c] (unknown [IPv6:2a01:e0a:120:3210:6d7b:ae43:289b:7e7c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 737021F44B87; Tue, 15 Feb 2022 14:57:43 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1644937064; bh=7KL/E1roB+Tsjv5A9j7TgPU3P6wRIqjJyd0pX11Row0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=W0nxo3O4UtsEQgAxjOIXGmT/eRA0jwW5mEMbT+VUmSvNj8xiq27pUa4KAFWyH7OPn 4Daj5t94TsJZbmYOS1TF4d7gzjtDT3bY5JxdaY6RK0d5XtIHQKrW5EWnfoZ9ereITe Eh0w4js6g04jJdWKoCcIRw1zBBp4TRYL+izfixRDrTJeVI7mPw0tpW7imawps52ujF qcoIBYHRAuNGXFP0GGmYAljY8qV9Sl99kAut50r/Gj5aUf9IwZLhymdhySZmwqTGBt iajVR8j8kKb66KF449rW9ZjqjX82OhPJZJyTN8eMPU2vgW4xEwgyoJ3r4aK/YCwrXN +1ZRQTPpgCQ3A== Message-ID: Date: Tue, 15 Feb 2022 15:57:41 +0100 Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [RFC v2 6/8] media: uapi: Remove bit_size field from v4l2_ctrl_hevc_slice_params Content-Language: en-US To: John Cox Cc: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@gmail.com, hverkuil-cisco@xs4all.nl, jonas@kwiboo.se, nicolas@ndufresne.ca, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com References: <20220215110103.241297-1-benjamin.gaignard@collabora.com> <20220215110103.241297-7-benjamin.gaignard@collabora.com> <99062279-a3c4-96f7-4c4b-f39e7f812e68@collabora.com> From: Benjamin Gaignard In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Le 15/02/2022 à 15:50, John Cox a écrit : > On Tue, 15 Feb 2022 15:35:12 +0100, you wrote: > >> Le 15/02/2022 à 15:17, John Cox a écrit : >>> Hi >>> >>>> The bit size of the slice could be deduced from the buffer payload >>>> so remove bit_size field to avoid duplicated the information. >>> I think this is a bad idea. In the future we are (I hope) going to want >>> to have an array (variable) of slice headers all referring to the same >>> bit buffer. When we do that we will need this field. >> I wonder if that could be considering like another decode mode and so >> use an other control ? > I, personally, would be in favour of making the slice header control a > variable array just as it is. If userland can't cope with multiple > entries then just send them one at a time and the code looks exactly > like it does at the moment and if the driver can't then set max array > entries to 1. > > Having implemented this in rpi port of ffmpeg and the RPi V4L2 driver I > can say with experience that the code and effort overhead is very low. > > Either way having a multiple slice header control in the UAPI is > important for efficiency. Removing this field was one the Jernej's remarks. If he agree with you it won't be a big effort for me to remove this patch from v3. Regards, Benjamin > > Regards > > John Cox > >>>> Signed-off-by: Benjamin Gaignard >>>> --- >>>> .../userspace-api/media/v4l/ext-ctrls-codec.rst | 3 --- >>>> drivers/staging/media/sunxi/cedrus/cedrus_h265.c | 11 ++++------- >>>> include/uapi/linux/v4l2-controls.h | 3 +-- >>>> 3 files changed, 5 insertions(+), 12 deletions(-) >>>> >>>> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >>>> index 3296ac3b9fca..c3ae97657fa7 100644 >>>> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >>>> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >>>> @@ -2965,9 +2965,6 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - >>>> :stub-columns: 0 >>>> :widths: 1 1 2 >>>> >>>> - * - __u32 >>>> - - ``bit_size`` >>>> - - Size (in bits) of the current slice data. >>>> * - __u32 >>>> - ``data_bit_offset`` >>>> - Offset (in bits) to the video data in the current slice data. >>>> diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c >>>> index 8ab2d9c6f048..db8c7475eeb8 100644 >>>> --- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c >>>> +++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c >>>> @@ -312,8 +312,8 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, >>>> const struct v4l2_hevc_pred_weight_table *pred_weight_table; >>>> unsigned int width_in_ctb_luma, ctb_size_luma; >>>> unsigned int log2_max_luma_coding_block_size; >>>> + size_t slice_bytes; >>>> dma_addr_t src_buf_addr; >>>> - dma_addr_t src_buf_end_addr; >>>> u32 chroma_log2_weight_denom; >>>> u32 output_pic_list_index; >>>> u32 pic_order_cnt[2]; >>>> @@ -370,8 +370,8 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, >>>> >>>> cedrus_write(dev, VE_DEC_H265_BITS_OFFSET, 0); >>>> >>>> - reg = slice_params->bit_size; >>>> - cedrus_write(dev, VE_DEC_H265_BITS_LEN, reg); >>>> + slice_bytes = vb2_get_plane_payload(&run->src->vb2_buf, 0); >>>> + cedrus_write(dev, VE_DEC_H265_BITS_LEN, slice_bytes); >>> I think one of these must be wrong. bit_size is in bits, >>> vb2_get_plane_payload is in bytes? >> You are right it should be vb2_get_plane_payload() * 8 to get the size in bits. >> >> I will change that in v3. >> >>> Regards >>> >>> John Cox >>> >>>> /* Source beginning and end addresses. */ >>>> >>>> @@ -384,10 +384,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, >>>> >>>> cedrus_write(dev, VE_DEC_H265_BITS_ADDR, reg); >>>> >>>> - src_buf_end_addr = src_buf_addr + >>>> - DIV_ROUND_UP(slice_params->bit_size, 8); >>>> - >>>> - reg = VE_DEC_H265_BITS_END_ADDR_BASE(src_buf_end_addr); >>>> + reg = VE_DEC_H265_BITS_END_ADDR_BASE(src_buf_addr + slice_bytes); >>>> cedrus_write(dev, VE_DEC_H265_BITS_END_ADDR, reg); >>>> >>>> /* Coding tree block address */ >>>> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h >>>> index b1a3dc05f02f..27f5d272dc43 100644 >>>> --- a/include/uapi/linux/v4l2-controls.h >>>> +++ b/include/uapi/linux/v4l2-controls.h >>>> @@ -2457,7 +2457,6 @@ struct v4l2_hevc_pred_weight_table { >>>> #define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9) >>>> >>>> struct v4l2_ctrl_hevc_slice_params { >>>> - __u32 bit_size; >>>> __u32 data_bit_offset; >>>> >>>> /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ >>>> @@ -2484,7 +2483,7 @@ struct v4l2_ctrl_hevc_slice_params { >>>> /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture timing SEI message */ >>>> __u8 pic_struct; >>>> >>>> - __u8 reserved; >>>> + __u8 reserved[5]; >>>> >>>> /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header */ >>>> __u32 slice_segment_addr; 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id F09B8C433F5 for ; Tue, 15 Feb 2022 14:58:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=85RKyk8Fe0cKcvAYPuta1q0AChRExc5t15WyF9u3xeY=; b=JgYBp4KXsQCpJp lzRHCCt+eWEDqJy66dRfE4gYmbNg68yLIKlstCDcdcShnUo4v8Wlm36tq0PsfiYXrfuhgfA5QOlbK lo2pdXQintj3qF50N0iDEofdillSAilO5aIGTOKMQHJfo5Xsvz8Py0gYCbtl5WmISA2B26Ww7W/KM rkQ4dS1eM3W7cdjKlfwjMDS07tbB85EtrLxxFtuFDyc39leyJpfJyhpNAe2Q254l/GcVd/23QN7w6 RSPDY7WUd3NDsEzJAPxLaVxJNF0zq9iTpeolyPGl21/HhC6P/4qBT7VaSuTfvZK95OA/ZUhz60Qu1 xjt9erwQqrWWU8uINAhg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nJzH3-00393e-IQ; Tue, 15 Feb 2022 14:57:49 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nJzGz-00391W-Cv for linux-arm-kernel@lists.infradead.org; Tue, 15 Feb 2022 14:57:47 +0000 Received: from [IPV6:2a01:e0a:120:3210:6d7b:ae43:289b:7e7c] (unknown [IPv6:2a01:e0a:120:3210:6d7b:ae43:289b:7e7c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 737021F44B87; Tue, 15 Feb 2022 14:57:43 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1644937064; bh=7KL/E1roB+Tsjv5A9j7TgPU3P6wRIqjJyd0pX11Row0=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=W0nxo3O4UtsEQgAxjOIXGmT/eRA0jwW5mEMbT+VUmSvNj8xiq27pUa4KAFWyH7OPn 4Daj5t94TsJZbmYOS1TF4d7gzjtDT3bY5JxdaY6RK0d5XtIHQKrW5EWnfoZ9ereITe Eh0w4js6g04jJdWKoCcIRw1zBBp4TRYL+izfixRDrTJeVI7mPw0tpW7imawps52ujF qcoIBYHRAuNGXFP0GGmYAljY8qV9Sl99kAut50r/Gj5aUf9IwZLhymdhySZmwqTGBt iajVR8j8kKb66KF449rW9ZjqjX82OhPJZJyTN8eMPU2vgW4xEwgyoJ3r4aK/YCwrXN +1ZRQTPpgCQ3A== Message-ID: Date: Tue, 15 Feb 2022 15:57:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [RFC v2 6/8] media: uapi: Remove bit_size field from v4l2_ctrl_hevc_slice_params Content-Language: en-US To: John Cox Cc: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@gmail.com, hverkuil-cisco@xs4all.nl, jonas@kwiboo.se, nicolas@ndufresne.ca, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, kernel@collabora.com, knaerzche@gmail.com References: <20220215110103.241297-1-benjamin.gaignard@collabora.com> <20220215110103.241297-7-benjamin.gaignard@collabora.com> <99062279-a3c4-96f7-4c4b-f39e7f812e68@collabora.com> From: Benjamin Gaignard In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220215_065745_727240_4BCA5000 X-CRM114-Status: GOOD ( 23.97 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CkxlIDE1LzAyLzIwMjIgw6AgMTU6NTAsIEpvaG4gQ294IGEgw6ljcml0wqA6Cj4gT24gVHVlLCAx NSBGZWIgMjAyMiAxNTozNToxMiArMDEwMCwgeW91IHdyb3RlOgo+Cj4+IExlIDE1LzAyLzIwMjIg w6AgMTU6MTcsIEpvaG4gQ294IGEgw6ljcml0wqA6Cj4+PiBIaQo+Pj4KPj4+PiBUaGUgYml0IHNp emUgb2YgdGhlIHNsaWNlIGNvdWxkIGJlIGRlZHVjZWQgZnJvbSB0aGUgYnVmZmVyIHBheWxvYWQK Pj4+PiBzbyByZW1vdmUgYml0X3NpemUgZmllbGQgdG8gYXZvaWQgZHVwbGljYXRlZCB0aGUgaW5m b3JtYXRpb24uCj4+PiBJIHRoaW5rIHRoaXMgaXMgYSBiYWQgaWRlYS4gSW4gdGhlIGZ1dHVyZSB3 ZSBhcmUgKEkgaG9wZSkgZ29pbmcgdG8gd2FudAo+Pj4gdG8gaGF2ZSBhbiBhcnJheSAodmFyaWFi bGUpIG9mIHNsaWNlIGhlYWRlcnMgYWxsIHJlZmVycmluZyB0byB0aGUgc2FtZQo+Pj4gYml0IGJ1 ZmZlci4gIFdoZW4gd2UgZG8gdGhhdCB3ZSB3aWxsIG5lZWQgdGhpcyBmaWVsZC4KPj4gSSB3b25k ZXIgaWYgdGhhdCBjb3VsZCBiZSBjb25zaWRlcmluZyBsaWtlIGFub3RoZXIgZGVjb2RlIG1vZGUg YW5kIHNvCj4+IHVzZSBhbiBvdGhlciBjb250cm9sID8KPiBJLCBwZXJzb25hbGx5LCB3b3VsZCBi ZSBpbiBmYXZvdXIgb2YgbWFraW5nIHRoZSBzbGljZSBoZWFkZXIgY29udHJvbCBhCj4gdmFyaWFi bGUgYXJyYXkganVzdCBhcyBpdCBpcy4gIElmIHVzZXJsYW5kIGNhbid0IGNvcGUgd2l0aCBtdWx0 aXBsZQo+IGVudHJpZXMgdGhlbiBqdXN0IHNlbmQgdGhlbSBvbmUgYXQgYSB0aW1lIGFuZCB0aGUg Y29kZSBsb29rcyBleGFjdGx5Cj4gbGlrZSBpdCBkb2VzIGF0IHRoZSBtb21lbnQgYW5kIGlmIHRo ZSBkcml2ZXIgY2FuJ3QgdGhlbiBzZXQgbWF4IGFycmF5Cj4gZW50cmllcyB0byAxLgo+Cj4gSGF2 aW5nIGltcGxlbWVudGVkIHRoaXMgaW4gcnBpIHBvcnQgb2YgZmZtcGVnIGFuZCB0aGUgUlBpIFY0 TDIgZHJpdmVyIEkKPiBjYW4gc2F5IHdpdGggZXhwZXJpZW5jZSB0aGF0IHRoZSBjb2RlIGFuZCBl ZmZvcnQgb3ZlcmhlYWQgaXMgdmVyeSBsb3cuCj4KPiBFaXRoZXIgd2F5IGhhdmluZyBhIG11bHRp cGxlIHNsaWNlIGhlYWRlciBjb250cm9sIGluIHRoZSBVQVBJIGlzCj4gaW1wb3J0YW50IGZvciBl ZmZpY2llbmN5LgoKUmVtb3ZpbmcgdGhpcyBmaWVsZCB3YXMgb25lIHRoZSBKZXJuZWoncyByZW1h cmtzLgpJZiBoZSBhZ3JlZSB3aXRoIHlvdSBpdCB3b24ndCBiZSBhIGJpZyBlZmZvcnQgZm9yIG1l IHRvIHJlbW92ZSB0aGlzIHBhdGNoCmZyb20gdjMuCgpSZWdhcmRzLApCZW5qYW1pbgoKPgo+IFJl Z2FyZHMKPgo+IEpvaG4gQ294Cj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFy ZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29sbGFib3JhLmNvbT4KPj4+PiAtLS0KPj4+PiAuLi4vdXNl cnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0LWN0cmxzLWNvZGVjLnJzdCAgICAgICB8ICAzIC0tLQo+ Pj4+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2gyNjUuYyAgICAg IHwgMTEgKysrKy0tLS0tLS0KPj4+PiBpbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5o ICAgICAgICAgICAgICAgICAgICB8ICAzICstLQo+Pj4+IDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNl cnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3QgYi9Eb2N1 bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3QKPj4+ PiBpbmRleCAzMjk2YWMzYjlmY2EuLmMzYWU5NzY1N2ZhNyAxMDA2NDQKPj4+PiAtLS0gYS9Eb2N1 bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3QKPj4+ PiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1j b2RlYy5yc3QKPj4+PiBAQCAtMjk2NSw5ICsyOTY1LDYgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9f aGV2Y19zaXplX29mX2xlbmd0aF9maWVsZCAtCj4+Pj4gICAgICAgOnN0dWItY29sdW1uczogMAo+ Pj4+ICAgICAgIDp3aWR0aHM6ICAgICAgIDEgMSAyCj4+Pj4KPj4+PiAtICAgICogLSBfX3UzMgo+ Pj4+IC0gICAgICAtIGBgYml0X3NpemVgYAo+Pj4+IC0gICAgICAtIFNpemUgKGluIGJpdHMpIG9m IHRoZSBjdXJyZW50IHNsaWNlIGRhdGEuCj4+Pj4gICAgICAgKiAtIF9fdTMyCj4+Pj4gICAgICAg ICAtIGBgZGF0YV9iaXRfb2Zmc2V0YGAKPj4+PiAgICAgICAgIC0gT2Zmc2V0IChpbiBiaXRzKSB0 byB0aGUgdmlkZW8gZGF0YSBpbiB0aGUgY3VycmVudCBzbGljZSBkYXRhLgo+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19oMjY1LmMgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19oMjY1LmMKPj4+PiBpbmRl eCA4YWIyZDljNmYwNDguLmRiOGM3NDc1ZWViOCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19oMjY1LmMKPj4+PiArKysgYi9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19oMjY1LmMKPj4+PiBAQCAtMzEyLDgg KzMxMiw4IEBAIHN0YXRpYyB2b2lkIGNlZHJ1c19oMjY1X3NldHVwKHN0cnVjdCBjZWRydXNfY3R4 ICpjdHgsCj4+Pj4gCWNvbnN0IHN0cnVjdCB2NGwyX2hldmNfcHJlZF93ZWlnaHRfdGFibGUgKnBy ZWRfd2VpZ2h0X3RhYmxlOwo+Pj4+IAl1bnNpZ25lZCBpbnQgd2lkdGhfaW5fY3RiX2x1bWEsIGN0 Yl9zaXplX2x1bWE7Cj4+Pj4gCXVuc2lnbmVkIGludCBsb2cyX21heF9sdW1hX2NvZGluZ19ibG9j a19zaXplOwo+Pj4+ICsJc2l6ZV90IHNsaWNlX2J5dGVzOwo+Pj4+IAlkbWFfYWRkcl90IHNyY19i dWZfYWRkcjsKPj4+PiAtCWRtYV9hZGRyX3Qgc3JjX2J1Zl9lbmRfYWRkcjsKPj4+PiAJdTMyIGNo cm9tYV9sb2cyX3dlaWdodF9kZW5vbTsKPj4+PiAJdTMyIG91dHB1dF9waWNfbGlzdF9pbmRleDsK Pj4+PiAJdTMyIHBpY19vcmRlcl9jbnRbMl07Cj4+Pj4gQEAgLTM3MCw4ICszNzAsOCBAQCBzdGF0 aWMgdm9pZCBjZWRydXNfaDI2NV9zZXR1cChzdHJ1Y3QgY2VkcnVzX2N0eCAqY3R4LAo+Pj4+Cj4+ Pj4gCWNlZHJ1c193cml0ZShkZXYsIFZFX0RFQ19IMjY1X0JJVFNfT0ZGU0VULCAwKTsKPj4+Pgo+ Pj4+IC0JcmVnID0gc2xpY2VfcGFyYW1zLT5iaXRfc2l6ZTsKPj4+PiAtCWNlZHJ1c193cml0ZShk ZXYsIFZFX0RFQ19IMjY1X0JJVFNfTEVOLCByZWcpOwo+Pj4+ICsJc2xpY2VfYnl0ZXMgPSB2YjJf Z2V0X3BsYW5lX3BheWxvYWQoJnJ1bi0+c3JjLT52YjJfYnVmLCAwKTsKPj4+PiArCWNlZHJ1c193 cml0ZShkZXYsIFZFX0RFQ19IMjY1X0JJVFNfTEVOLCBzbGljZV9ieXRlcyk7Cj4+PiBJIHRoaW5r IG9uZSBvZiB0aGVzZSBtdXN0IGJlIHdyb25nLiBiaXRfc2l6ZSBpcyBpbiBiaXRzLAo+Pj4gdmIy X2dldF9wbGFuZV9wYXlsb2FkIGlzIGluIGJ5dGVzPwo+PiBZb3UgYXJlIHJpZ2h0IGl0IHNob3Vs ZCBiZSB2YjJfZ2V0X3BsYW5lX3BheWxvYWQoKSAqIDggdG8gZ2V0IHRoZSBzaXplIGluIGJpdHMu Cj4+Cj4+IEkgd2lsbCBjaGFuZ2UgdGhhdCBpbiB2My4KPj4KPj4+IFJlZ2FyZHMKPj4+Cj4+PiBK b2huIENveAo+Pj4gICAgCj4+Pj4gCS8qIFNvdXJjZSBiZWdpbm5pbmcgYW5kIGVuZCBhZGRyZXNz ZXMuICovCj4+Pj4KPj4+PiBAQCAtMzg0LDEwICszODQsNyBAQCBzdGF0aWMgdm9pZCBjZWRydXNf aDI2NV9zZXR1cChzdHJ1Y3QgY2VkcnVzX2N0eCAqY3R4LAo+Pj4+Cj4+Pj4gCWNlZHJ1c193cml0 ZShkZXYsIFZFX0RFQ19IMjY1X0JJVFNfQUREUiwgcmVnKTsKPj4+Pgo+Pj4+IC0Jc3JjX2J1Zl9l bmRfYWRkciA9IHNyY19idWZfYWRkciArCj4+Pj4gLQkJCSAgIERJVl9ST1VORF9VUChzbGljZV9w YXJhbXMtPmJpdF9zaXplLCA4KTsKPj4+PiAtCj4+Pj4gLQlyZWcgPSBWRV9ERUNfSDI2NV9CSVRT X0VORF9BRERSX0JBU0Uoc3JjX2J1Zl9lbmRfYWRkcik7Cj4+Pj4gKwlyZWcgPSBWRV9ERUNfSDI2 NV9CSVRTX0VORF9BRERSX0JBU0Uoc3JjX2J1Zl9hZGRyICsgc2xpY2VfYnl0ZXMpOwo+Pj4+IAlj ZWRydXNfd3JpdGUoZGV2LCBWRV9ERUNfSDI2NV9CSVRTX0VORF9BRERSLCByZWcpOwo+Pj4+Cj4+ Pj4gCS8qIENvZGluZyB0cmVlIGJsb2NrIGFkZHJlc3MgKi8KPj4+PiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS91YXBpL2xpbnV4L3Y0bDItY29udHJvbHMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC92NGwy LWNvbnRyb2xzLmgKPj4+PiBpbmRleCBiMWEzZGMwNWYwMmYuLjI3ZjVkMjcyZGM0MyAxMDA2NDQK Pj4+PiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oCj4+Pj4gKysrIGIv aW5jbHVkZS91YXBpL2xpbnV4L3Y0bDItY29udHJvbHMuaAo+Pj4+IEBAIC0yNDU3LDcgKzI0NTcs NiBAQCBzdHJ1Y3QgdjRsMl9oZXZjX3ByZWRfd2VpZ2h0X3RhYmxlIHsKPj4+PiAjZGVmaW5lIFY0 TDJfSEVWQ19TTElDRV9QQVJBTVNfRkxBR19ERVBFTkRFTlRfU0xJQ0VfU0VHTUVOVAkoMVVMTCA8 PCA5KQo+Pj4+Cj4+Pj4gc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3BhcmFtcyB7Cj4+Pj4g LQlfX3UzMgliaXRfc2l6ZTsKPj4+PiAJX191MzIJZGF0YV9iaXRfb2Zmc2V0Owo+Pj4+Cj4+Pj4g CS8qIElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogTkFMIHVuaXQgaGVhZGVyICov Cj4+Pj4gQEAgLTI0ODQsNyArMjQ4Myw3IEBAIHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zbGljZV9w YXJhbXMgewo+Pj4+IAkvKiBJU08vSUVDIDIzMDA4LTIsIElUVS1UIFJlYy4gSC4yNjU6IFBpY3R1 cmUgdGltaW5nIFNFSSBtZXNzYWdlICovCj4+Pj4gCV9fdTgJcGljX3N0cnVjdDsKPj4+Pgo+Pj4+ IC0JX191OAlyZXNlcnZlZDsKPj4+PiArCV9fdTgJcmVzZXJ2ZWRbNV07Cj4+Pj4KPj4+PiAJLyog SVNPL0lFQyAyMzAwOC0yLCBJVFUtVCBSZWMuIEguMjY1OiBHZW5lcmFsIHNsaWNlIHNlZ21lbnQg aGVhZGVyICovCj4+Pj4gCV9fdTMyCXNsaWNlX3NlZ21lbnRfYWRkcjsKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK