From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B5A31578 for ; Tue, 15 Feb 2022 15:28:58 +0000 (UTC) Received: by mail-qk1-f171.google.com with SMTP id de39so8050339qkb.13 for ; Tue, 15 Feb 2022 07:28:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=f9H0svHPKw+hnD0cD7XsmllGNTwpLTUKEtyrj/3wtLI=; b=GPOZKgDSA400flay/HIWB7L3DGdLyz5YurXxhd5n383IxxkViAXaPF9S3uWIAdFmIT L8sUT0U2DP3df0GsPLmQh9YpfZ/mTE8mMUuAAvDiqitaRoMSsOpX/XTqUg20DiHP7CLI ZWlxLv3w2ee1YqFexfbH/9byVSl68ivYuCsAWhO/cfzxz/UY3QMV0lja5x/Qn5qiq5mz hcpZrnM5nxD7ZmZl7P+YoQwjI4Jobo9HF3sq5MqMWbnOVIHCe8m06Q4DBnkWMNWoNG1I b43fy1yoAgi9p9hh+91tztEq+1XvD++H0aWpCsU91eoYbV20tT2oebqTnCo30xCmiTmA hyrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=f9H0svHPKw+hnD0cD7XsmllGNTwpLTUKEtyrj/3wtLI=; b=cbq0azYg0PIkgLAwtbYMVVZ4c5xdCkMa5C8VEBxTtJeWmrOkpU1DcCl3/K4hYFkbNc f984Rlp/LYwu5GuFo0IKh+gMYHgNUoM383v0G83UJK3pZ/qZoiWWJVoQ/5TXFdGTFOiB b9bndQnNPsIypzTnB3vV/f6yYjs3T+iJ3fJvLsqp/FZRnHp7AgGVNRdHT+J5vRoAVhfD ptHtZxebVzdR04fnse0RoDc9Ql+KVXsDASEGq0QveaRAHqFBy+LPeMadyMeEWaZekFaj C9rQiFb/YXsMMdxEYfxtORl3CenWGsaccO2fGz/siVp3kZVCoUROYxSMJcCbXLGoUttz 3MZA== X-Gm-Message-State: AOAM530F+FAHPSHrdV38a7qr087a92xZEdrLqGml4Qf/bO7EUWhwldgF V0KxqvTZgkdRmWbm3LV9FF5Hxw== X-Google-Smtp-Source: ABdhPJz6JEvNWkFwG2hdwgsJcBSXvUwEUXwIn5fmdW14e1k3pg4RbrhlPyT+Awb/d4Oe/D1m7S9+jg== X-Received: by 2002:a05:620a:782:: with SMTP id 2mr2197511qka.523.1644938937515; Tue, 15 Feb 2022 07:28:57 -0800 (PST) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id y15sm17470991qko.133.2022.02.15.07.28.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Feb 2022 07:28:56 -0800 (PST) Message-ID: <9a78eb88f8690d43d34d8140420dae3f5f043637.camel@ndufresne.ca> Subject: Re: [RFC v2 6/8] media: uapi: Remove bit_size field from v4l2_ctrl_hevc_slice_params From: Nicolas Dufresne To: John Cox , Benjamin Gaignard 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, 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 Date: Tue, 15 Feb 2022 10:28:55 -0500 In-Reply-To: References: <20220215110103.241297-1-benjamin.gaignard@collabora.com> <20220215110103.241297-7-benjamin.gaignard@collabora.com> <99062279-a3c4-96f7-4c4b-f39e7f812e68@collabora.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.3 (3.42.3-1.fc35) Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Le mardi 15 février 2022 à 14:50 +0000, 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. Just to clarify the idea, we would have a single slice controls, always dynamic: 1. For sliced based decoder The dynamic array slice control is implemented by the driver and its size must be 1. 2. For frame based decoder that don't care for slices The dynamic array slice controls is not implement. Userland detects that at runtime, similar to the VP9 compressed headers. 3. For frame based decoders that needs slices (or driver that supports offset and can gain performance with such mode) The dynamic array slice controls is implemented, and should contain all the slices found in the OUTPUT buffer. So the reason for this bit_size (not sure why its bits though, perhaps someone can educate me ?) Would be to let the driver offset inside the the single OUTPUT/bitstream buffer in case this is not automatically found by the driver (or that no start-code is needed). Is that last bit correct ? If so, should we change it to an offset rather then a size ? Shall we allow using offesets inside larger buffer (e.g. to avoid some memory copies) for the Sliced Base cases ? > > 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 19A8FC433EF for ; Tue, 15 Feb 2022 15:42:50 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2mOgsDhya3peO+mGsbhwK3TzjGgUqQ9uhtIhUla/kxU=; b=FfEVXyWgAXwyMs y4+dZ/Gv0XqtYKjjcof1OR9V/p75yCU6OUdpEqkProWqxY0gDlAhf+bZNjmU27Z+s4waTZwH6Thex P7qhclniL9qUySQxRY5iXqj977prR9M1NlTC5ogDvchEEog06znZq8gzyxCz66K2iri8cX3on2lPy QWSgC86FCKx7oUQglADpH1DjEdUEAOS3zNgfbmndPNEYT5c6EcJVM7aVkcIei4Ajoxe4X6zsuOva9 XBvEE1dibvijqkswFalrwGUBKVz5lFHIMl9BFZLqzysu20uMmnKpOFOv5FsQXvzSaq1wdSuiDfqv4 OspoJzfMO+GXcxwtk/FQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nJzx1-003N0W-9q; Tue, 15 Feb 2022 15:41:12 +0000 Received: from mail-qk1-x72f.google.com ([2607:f8b0:4864:20::72f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nJzlE-003GtY-9t for linux-arm-kernel@lists.infradead.org; Tue, 15 Feb 2022 15:29:03 +0000 Received: by mail-qk1-x72f.google.com with SMTP id g145so17607964qke.3 for ; Tue, 15 Feb 2022 07:28:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20210112.gappssmtp.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=f9H0svHPKw+hnD0cD7XsmllGNTwpLTUKEtyrj/3wtLI=; b=GPOZKgDSA400flay/HIWB7L3DGdLyz5YurXxhd5n383IxxkViAXaPF9S3uWIAdFmIT L8sUT0U2DP3df0GsPLmQh9YpfZ/mTE8mMUuAAvDiqitaRoMSsOpX/XTqUg20DiHP7CLI ZWlxLv3w2ee1YqFexfbH/9byVSl68ivYuCsAWhO/cfzxz/UY3QMV0lja5x/Qn5qiq5mz hcpZrnM5nxD7ZmZl7P+YoQwjI4Jobo9HF3sq5MqMWbnOVIHCe8m06Q4DBnkWMNWoNG1I b43fy1yoAgi9p9hh+91tztEq+1XvD++H0aWpCsU91eoYbV20tT2oebqTnCo30xCmiTmA hyrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=f9H0svHPKw+hnD0cD7XsmllGNTwpLTUKEtyrj/3wtLI=; b=5lI/gCb7WGQFgP4WWQr6mfQ8uWV4yJsy/nPwb5YFI1LmmcKjNLKgx2xw16OXXol8IT HqnCnvToBCoa+FoFnbs9dg4QCVDIDuvcnFzqd0L2ju9t9HYtG8LlNBhKVAgMhFBBtUER H6RhKLAmSaMdiZ7s4FRjFsmRSUVU6Kn/HoB5wTpEjDqeEAkeKrmKqUVDZrr/ZLPu1Tyh 3NSMuZcYy/HLu8Tgbdjj4BwMDNisEb5VSp0CNaCjAntkct2L6NwMWgqjLyv0eFlMo2RX jipEH4OSzRmDhfTt3BfALmLb91l2ktVNmt/FLIW/eyuvmaF+IW4E+FSXx0QFI0gBQEou WXcw== X-Gm-Message-State: AOAM532CRNA+yCYYtyBGWTJ9vVGXVKP2Qucgu0AFrtkELnKzMuZ9smAy E/GT37m5OTWWF8kd5qJwW46KFQ== X-Google-Smtp-Source: ABdhPJz6JEvNWkFwG2hdwgsJcBSXvUwEUXwIn5fmdW14e1k3pg4RbrhlPyT+Awb/d4Oe/D1m7S9+jg== X-Received: by 2002:a05:620a:782:: with SMTP id 2mr2197511qka.523.1644938937515; Tue, 15 Feb 2022 07:28:57 -0800 (PST) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id y15sm17470991qko.133.2022.02.15.07.28.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Feb 2022 07:28:56 -0800 (PST) Message-ID: <9a78eb88f8690d43d34d8140420dae3f5f043637.camel@ndufresne.ca> Subject: Re: [RFC v2 6/8] media: uapi: Remove bit_size field from v4l2_ctrl_hevc_slice_params From: Nicolas Dufresne To: John Cox , Benjamin Gaignard 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, 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 Date: Tue, 15 Feb 2022 10:28:55 -0500 In-Reply-To: References: <20220215110103.241297-1-benjamin.gaignard@collabora.com> <20220215110103.241297-7-benjamin.gaignard@collabora.com> <99062279-a3c4-96f7-4c4b-f39e7f812e68@collabora.com> User-Agent: Evolution 3.42.3 (3.42.3-1.fc35) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220215_072900_470514_7042C469 X-CRM114-Status: GOOD ( 40.46 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org TGUgbWFyZGkgMTUgZsOpdnJpZXIgMjAyMiDDoCAxNDo1MCArMDAwMCwgSm9obiBDb3ggYSDDqWNy aXTCoDoKPiBPbiBUdWUsIDE1IEZlYiAyMDIyIDE1OjM1OjEyICswMTAwLCB5b3Ugd3JvdGU6Cj4g Cj4gPiAKPiA+IExlIDE1LzAyLzIwMjIgw6AgMTU6MTcsIEpvaG4gQ294IGEgw6ljcml0wqA6Cj4g PiA+IEhpCj4gPiA+IAo+ID4gPiA+IFRoZSBiaXQgc2l6ZSBvZiB0aGUgc2xpY2UgY291bGQgYmUg ZGVkdWNlZCBmcm9tIHRoZSBidWZmZXIgcGF5bG9hZAo+ID4gPiA+IHNvIHJlbW92ZSBiaXRfc2l6 ZSBmaWVsZCB0byBhdm9pZCBkdXBsaWNhdGVkIHRoZSBpbmZvcm1hdGlvbi4KPiA+ID4gSSB0aGlu ayB0aGlzIGlzIGEgYmFkIGlkZWEuIEluIHRoZSBmdXR1cmUgd2UgYXJlIChJIGhvcGUpIGdvaW5n IHRvIHdhbnQKPiA+ID4gdG8gaGF2ZSBhbiBhcnJheSAodmFyaWFibGUpIG9mIHNsaWNlIGhlYWRl cnMgYWxsIHJlZmVycmluZyB0byB0aGUgc2FtZQo+ID4gPiBiaXQgYnVmZmVyLiAgV2hlbiB3ZSBk byB0aGF0IHdlIHdpbGwgbmVlZCB0aGlzIGZpZWxkLgo+ID4gCj4gPiBJIHdvbmRlciBpZiB0aGF0 IGNvdWxkIGJlIGNvbnNpZGVyaW5nIGxpa2UgYW5vdGhlciBkZWNvZGUgbW9kZSBhbmQgc28KPiA+ IHVzZSBhbiBvdGhlciBjb250cm9sID8KPiAKPiBJLCBwZXJzb25hbGx5LCB3b3VsZCBiZSBpbiBm YXZvdXIgb2YgbWFraW5nIHRoZSBzbGljZSBoZWFkZXIgY29udHJvbCBhCj4gdmFyaWFibGUgYXJy YXkganVzdCBhcyBpdCBpcy4gIElmIHVzZXJsYW5kIGNhbid0IGNvcGUgd2l0aCBtdWx0aXBsZQo+ IGVudHJpZXMgdGhlbiBqdXN0IHNlbmQgdGhlbSBvbmUgYXQgYSB0aW1lIGFuZCB0aGUgY29kZSBs b29rcyBleGFjdGx5Cj4gbGlrZSBpdCBkb2VzIGF0IHRoZSBtb21lbnQgYW5kIGlmIHRoZSBkcml2 ZXIgY2FuJ3QgdGhlbiBzZXQgbWF4IGFycmF5Cj4gZW50cmllcyB0byAxLgo+IAo+IEhhdmluZyBp bXBsZW1lbnRlZCB0aGlzIGluIHJwaSBwb3J0IG9mIGZmbXBlZyBhbmQgdGhlIFJQaSBWNEwyIGRy aXZlciBJCj4gY2FuIHNheSB3aXRoIGV4cGVyaWVuY2UgdGhhdCB0aGUgY29kZSBhbmQgZWZmb3J0 IG92ZXJoZWFkIGlzIHZlcnkgbG93Lgo+IAo+IEVpdGhlciB3YXkgaGF2aW5nIGEgbXVsdGlwbGUg c2xpY2UgaGVhZGVyIGNvbnRyb2wgaW4gdGhlIFVBUEkgaXMKPiBpbXBvcnRhbnQgZm9yIGVmZmlj aWVuY3kuCgpKdXN0IHRvIGNsYXJpZnkgdGhlIGlkZWEsIHdlIHdvdWxkIGhhdmUgYSBzaW5nbGUg c2xpY2UgY29udHJvbHMsIGFsd2F5cyBkeW5hbWljOgoKMS4gRm9yIHNsaWNlZCBiYXNlZCBkZWNv ZGVyCgpUaGUgZHluYW1pYyBhcnJheSBzbGljZSBjb250cm9sIGlzIGltcGxlbWVudGVkIGJ5IHRo ZSBkcml2ZXIgYW5kIGl0cyBzaXplIG11c3QKYmUgMS4KCjIuIEZvciBmcmFtZSBiYXNlZCBkZWNv ZGVyIHRoYXQgZG9uJ3QgY2FyZSBmb3Igc2xpY2VzCgpUaGUgZHluYW1pYyBhcnJheSBzbGljZSBj b250cm9scyBpcyBub3QgaW1wbGVtZW50LiBVc2VybGFuZCBkZXRlY3RzIHRoYXQgYXQKcnVudGlt ZSwgc2ltaWxhciB0byB0aGUgVlA5IGNvbXByZXNzZWQgaGVhZGVycy4KCjMuIEZvciBmcmFtZSBi YXNlZCBkZWNvZGVycyB0aGF0IG5lZWRzIHNsaWNlcyAob3IgZHJpdmVyIHRoYXQgc3VwcG9ydHMg b2Zmc2V0CmFuZCBjYW4gZ2FpbiBwZXJmb3JtYW5jZSB3aXRoIHN1Y2ggbW9kZSkKClRoZSBkeW5h bWljIGFycmF5IHNsaWNlIGNvbnRyb2xzIGlzIGltcGxlbWVudGVkLCBhbmQgc2hvdWxkIGNvbnRh aW4gYWxsIHRoZQpzbGljZXMgZm91bmQgaW4gdGhlIE9VVFBVVCBidWZmZXIuCgpTbyB0aGUgcmVh c29uIGZvciB0aGlzIGJpdF9zaXplIChub3Qgc3VyZSB3aHkgaXRzIGJpdHMgdGhvdWdoLCBwZXJo YXBzIHNvbWVvbmUKY2FuIGVkdWNhdGUgbWUgPykgV291bGQgYmUgdG8gbGV0IHRoZSBkcml2ZXIg b2Zmc2V0IGluc2lkZSB0aGUgdGhlIHNpbmdsZQpPVVRQVVQvYml0c3RyZWFtIGJ1ZmZlciBpbiBj YXNlIHRoaXMgaXMgbm90IGF1dG9tYXRpY2FsbHkgZm91bmQgYnkgdGhlIGRyaXZlcgoob3IgdGhh dCBubyBzdGFydC1jb2RlIGlzIG5lZWRlZCkuIElzIHRoYXQgbGFzdCBiaXQgY29ycmVjdCA/IElm IHNvLCBzaG91bGQgd2UKY2hhbmdlIGl0IHRvIGFuIG9mZnNldCByYXRoZXIgdGhlbiBhIHNpemUg PyBTaGFsbCB3ZSBhbGxvdyB1c2luZyBvZmZlc2V0cyBpbnNpZGUKbGFyZ2VyIGJ1ZmZlciAoZS5n LiB0byBhdm9pZCBzb21lIG1lbW9yeSBjb3BpZXMpIGZvciB0aGUgU2xpY2VkIEJhc2UgY2FzZXMg PwoKPiAKPiBSZWdhcmRzCj4gCj4gSm9obiBDb3gKPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBC ZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29sbGFib3JhLmNvbT4KPiA+ID4g PiAtLS0KPiA+ID4gPiAuLi4vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0LWN0cmxzLWNvZGVj LnJzdCAgICAgICB8ICAzIC0tLQo+ID4gPiA+IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9j ZWRydXMvY2VkcnVzX2gyNjUuYyAgICAgIHwgMTEgKysrKy0tLS0tLS0KPiA+ID4gPiBpbmNsdWRl L3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oICAgICAgICAgICAgICAgICAgICB8ICAzICstLQo+ ID4gPiA+IDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkK PiA+ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBp L21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0IGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2Ut YXBpL21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0Cj4gPiA+ID4gaW5kZXggMzI5NmFjM2I5 ZmNhLi5jM2FlOTc2NTdmYTcgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi91c2Vy c3BhY2UtYXBpL21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0Cj4gPiA+ID4gKysrIGIvRG9j dW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0Cj4g PiA+ID4gQEAgLTI5NjUsOSArMjk2NSw2IEBAIGVudW0gdjRsMl9tcGVnX3ZpZGVvX2hldmNfc2l6 ZV9vZl9sZW5ndGhfZmllbGQgLQo+ID4gPiA+ICAgICAgOnN0dWItY29sdW1uczogMAo+ID4gPiA+ ICAgICAgOndpZHRoczogICAgICAgMSAxIDIKPiA+ID4gPiAKPiA+ID4gPiAtICAgICogLSBfX3Uz Mgo+ID4gPiA+IC0gICAgICAtIGBgYml0X3NpemVgYAo+ID4gPiA+IC0gICAgICAtIFNpemUgKGlu IGJpdHMpIG9mIHRoZSBjdXJyZW50IHNsaWNlIGRhdGEuCj4gPiA+ID4gICAgICAqIC0gX191MzIK PiA+ID4gPiAgICAgICAgLSBgYGRhdGFfYml0X29mZnNldGBgCj4gPiA+ID4gICAgICAgIC0gT2Zm c2V0IChpbiBiaXRzKSB0byB0aGUgdmlkZW8gZGF0YSBpbiB0aGUgY3VycmVudCBzbGljZSBkYXRh Lgo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVz L2NlZHJ1c19oMjY1LmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1 c19oMjY1LmMKPiA+ID4gPiBpbmRleCA4YWIyZDljNmYwNDguLmRiOGM3NDc1ZWViOCAxMDA2NDQK PiA+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19o MjY1LmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVzL2Nl ZHJ1c19oMjY1LmMKPiA+ID4gPiBAQCAtMzEyLDggKzMxMiw4IEBAIHN0YXRpYyB2b2lkIGNlZHJ1 c19oMjY1X3NldHVwKHN0cnVjdCBjZWRydXNfY3R4ICpjdHgsCj4gPiA+ID4gCWNvbnN0IHN0cnVj dCB2NGwyX2hldmNfcHJlZF93ZWlnaHRfdGFibGUgKnByZWRfd2VpZ2h0X3RhYmxlOwo+ID4gPiA+ IAl1bnNpZ25lZCBpbnQgd2lkdGhfaW5fY3RiX2x1bWEsIGN0Yl9zaXplX2x1bWE7Cj4gPiA+ID4g CXVuc2lnbmVkIGludCBsb2cyX21heF9sdW1hX2NvZGluZ19ibG9ja19zaXplOwo+ID4gPiA+ICsJ c2l6ZV90IHNsaWNlX2J5dGVzOwo+ID4gPiA+IAlkbWFfYWRkcl90IHNyY19idWZfYWRkcjsKPiA+ ID4gPiAtCWRtYV9hZGRyX3Qgc3JjX2J1Zl9lbmRfYWRkcjsKPiA+ID4gPiAJdTMyIGNocm9tYV9s b2cyX3dlaWdodF9kZW5vbTsKPiA+ID4gPiAJdTMyIG91dHB1dF9waWNfbGlzdF9pbmRleDsKPiA+ ID4gPiAJdTMyIHBpY19vcmRlcl9jbnRbMl07Cj4gPiA+ID4gQEAgLTM3MCw4ICszNzAsOCBAQCBz dGF0aWMgdm9pZCBjZWRydXNfaDI2NV9zZXR1cChzdHJ1Y3QgY2VkcnVzX2N0eCAqY3R4LAo+ID4g PiA+IAo+ID4gPiA+IAljZWRydXNfd3JpdGUoZGV2LCBWRV9ERUNfSDI2NV9CSVRTX09GRlNFVCwg MCk7Cj4gPiA+ID4gCj4gPiA+ID4gLQlyZWcgPSBzbGljZV9wYXJhbXMtPmJpdF9zaXplOwo+ID4g PiA+IC0JY2VkcnVzX3dyaXRlKGRldiwgVkVfREVDX0gyNjVfQklUU19MRU4sIHJlZyk7Cj4gPiA+ ID4gKwlzbGljZV9ieXRlcyA9IHZiMl9nZXRfcGxhbmVfcGF5bG9hZCgmcnVuLT5zcmMtPnZiMl9i dWYsIDApOwo+ID4gPiA+ICsJY2VkcnVzX3dyaXRlKGRldiwgVkVfREVDX0gyNjVfQklUU19MRU4s IHNsaWNlX2J5dGVzKTsKPiA+ID4gSSB0aGluayBvbmUgb2YgdGhlc2UgbXVzdCBiZSB3cm9uZy4g Yml0X3NpemUgaXMgaW4gYml0cywKPiA+ID4gdmIyX2dldF9wbGFuZV9wYXlsb2FkIGlzIGluIGJ5 dGVzPwo+ID4gCj4gPiBZb3UgYXJlIHJpZ2h0IGl0IHNob3VsZCBiZSB2YjJfZ2V0X3BsYW5lX3Bh eWxvYWQoKSAqIDggdG8gZ2V0IHRoZSBzaXplIGluIGJpdHMuCj4gPiAKPiA+IEkgd2lsbCBjaGFu Z2UgdGhhdCBpbiB2My4KPiA+IAo+ID4gPiAKPiA+ID4gUmVnYXJkcwo+ID4gPiAKPiA+ID4gSm9o biBDb3gKPiA+ID4gICAKPiA+ID4gPiAJLyogU291cmNlIGJlZ2lubmluZyBhbmQgZW5kIGFkZHJl c3Nlcy4gKi8KPiA+ID4gPiAKPiA+ID4gPiBAQCAtMzg0LDEwICszODQsNyBAQCBzdGF0aWMgdm9p ZCBjZWRydXNfaDI2NV9zZXR1cChzdHJ1Y3QgY2VkcnVzX2N0eCAqY3R4LAo+ID4gPiA+IAo+ID4g PiA+IAljZWRydXNfd3JpdGUoZGV2LCBWRV9ERUNfSDI2NV9CSVRTX0FERFIsIHJlZyk7Cj4gPiA+ ID4gCj4gPiA+ID4gLQlzcmNfYnVmX2VuZF9hZGRyID0gc3JjX2J1Zl9hZGRyICsKPiA+ID4gPiAt CQkJICAgRElWX1JPVU5EX1VQKHNsaWNlX3BhcmFtcy0+Yml0X3NpemUsIDgpOwo+ID4gPiA+IC0K PiA+ID4gPiAtCXJlZyA9IFZFX0RFQ19IMjY1X0JJVFNfRU5EX0FERFJfQkFTRShzcmNfYnVmX2Vu ZF9hZGRyKTsKPiA+ID4gPiArCXJlZyA9IFZFX0RFQ19IMjY1X0JJVFNfRU5EX0FERFJfQkFTRShz cmNfYnVmX2FkZHIgKyBzbGljZV9ieXRlcyk7Cj4gPiA+ID4gCWNlZHJ1c193cml0ZShkZXYsIFZF X0RFQ19IMjY1X0JJVFNfRU5EX0FERFIsIHJlZyk7Cj4gPiA+ID4gCj4gPiA+ID4gCS8qIENvZGlu ZyB0cmVlIGJsb2NrIGFkZHJlc3MgKi8KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2xpbnV4L3Y0bDItY29udHJvbHMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xz LmgKPiA+ID4gPiBpbmRleCBiMWEzZGMwNWYwMmYuLjI3ZjVkMjcyZGM0MyAxMDA2NDQKPiA+ID4g PiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oCj4gPiA+ID4gKysrIGIv aW5jbHVkZS91YXBpL2xpbnV4L3Y0bDItY29udHJvbHMuaAo+ID4gPiA+IEBAIC0yNDU3LDcgKzI0 NTcsNiBAQCBzdHJ1Y3QgdjRsMl9oZXZjX3ByZWRfd2VpZ2h0X3RhYmxlIHsKPiA+ID4gPiAjZGVm aW5lIFY0TDJfSEVWQ19TTElDRV9QQVJBTVNfRkxBR19ERVBFTkRFTlRfU0xJQ0VfU0VHTUVOVAko MVVMTCA8PCA5KQo+ID4gPiA+IAo+ID4gPiA+IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zbGljZV9w YXJhbXMgewo+ID4gPiA+IC0JX191MzIJYml0X3NpemU7Cj4gPiA+ID4gCV9fdTMyCWRhdGFfYml0 X29mZnNldDsKPiA+ID4gPiAKPiA+ID4gPiAJLyogSVNPL0lFQyAyMzAwOC0yLCBJVFUtVCBSZWMu IEguMjY1OiBOQUwgdW5pdCBoZWFkZXIgKi8KPiA+ID4gPiBAQCAtMjQ4NCw3ICsyNDgzLDcgQEAg c3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3BhcmFtcyB7Cj4gPiA+ID4gCS8qIElTTy9JRUMg MjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogUGljdHVyZSB0aW1pbmcgU0VJIG1lc3NhZ2UgKi8K PiA+ID4gPiAJX191OAlwaWNfc3RydWN0Owo+ID4gPiA+IAo+ID4gPiA+IC0JX191OAlyZXNlcnZl ZDsKPiA+ID4gPiArCV9fdTgJcmVzZXJ2ZWRbNV07Cj4gPiA+ID4gCj4gPiA+ID4gCS8qIElTTy9J RUMgMjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogR2VuZXJhbCBzbGljZSBzZWdtZW50IGhlYWRl ciAqLwo+ID4gPiA+IAlfX3UzMglzbGljZV9zZWdtZW50X2FkZHI7CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=