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 AE6DFFF885A for ; Tue, 28 Apr 2026 15:30:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=J/jChz6sjr+zrCpBnIRaHvUti3M8eQoxf0csRWJFl5E=; b=EQEHO5xaM2O7mdIOfuV3XLsDLg ud2tFQUuSsiD+O01jO4PawIcZMypmM9+M4M2+Gg0zvF+IHCpIA6NCYALgDD5T3td/F9/ueIkMycNk Ii/XOIJeZaXb18iVit4UxaOqq/JKjIXuNad4yrU2XNCIDiP90g4coSbInAz4P7f8f0aSsz1VJW/qj 5LsYyUb0HSpvmlnxI0OdIyuUhJXWEJIrEXdMo7B4GQ2i/miAvDg36Z45ieHgSckTIscDVstJWikCJ 9DKxHZpROe1fnepDdPnPGIqQE7J+6HIL7eZtWwQTpRggyBL+Ablmlri2/oc76qfm5m7ECpBYvK2Ap CXSY9W9w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1wHkNq-00000001jha-3W1D; Tue, 28 Apr 2026 15:29:58 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1wHkNo-00000001jgy-1mY0; Tue, 28 Apr 2026 15:29:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=J/jChz6sjr+zrCpBnIRaHvUti3M8eQoxf0csRWJFl5E=; b=kk2CPk3wqtMV0MItlwGDeU9Y7T +Kbtlcbmt9w+KIgiLd8tiFmLjqa3QioEtuNmPAhviIHiXn3voURz7hK4AeEC49zd3yb/wz06yf9ej ECvlnDkEof03pZg/1HA1Uk1TQg50bBqvs5LMlbZlDk89zS3gkjyBiaREeiXWB+Q9Iq/T9F3gKIY11 M9T/jir/dOWsgDZTZI19EKTcJeyPA55KRJFS8++DH0xAaYLjZ5IB/QC6vSBKZ5sUxlbvEQqyQMudj nI60BYAvqTLEOWzkdPjNKK6G5NV2g1SqnYLDIo7wTsIIGvXC9Z1VdyCpchvmc7/NNAssrhA1qDsEd s/gySzEw==; From: Heiko Stuebner To: Shawn Lin , Joerg Roedel , Will Deacon , Robin Murphy , Sven =?UTF-8?B?UMO8c2NoZWw=?= Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Simon Xue , kernel@pengutronix.de Subject: Re: [PATCH] iommu/rockchip: disable fetch dte time limit Date: Tue, 28 Apr 2026 17:29:33 +0200 Message-ID: <4696766.BEx9A2HvPv@phil> In-Reply-To: References: <20251126-spu-iommudtefix-v1-1-f90003dbfcc4@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260428_082956_497419_4584A03B X-CRM114-Status: GOOD ( 37.85 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Sven, Am Dienstag, 28. April 2026, 14:15:45 Mitteleurop=C3=A4ische Sommerzeit sch= rieb Sven P=C3=BCschel: > Hi, >=20 > pinging this Patch, as I didn't receive any more feedback/reviews. The=20 > feedback only affects the comment and doesn't affect the commit,=20 > therefore I currently don't see a reason for a v2. it's been 5 months since the original submission, so I'd disagree :-) It may very well have already been discarded from maintainers' inboxes. So I do think a v2 or at least a resend is waranted here. Heiko > We've noticed that this patches fixes hangups when using the RGA3=20 > peripheral on the rk3588 (where I'm in the process of upstreaming a=20 > driver [1], which depends on this changeset). Based on the vendor commit= =20 > messages, it should also fix VOP and screen black issues. >=20 > Sincerely > Sven >=20 > [1]=20 > https://lore.kernel.org/linux-media/20260428-spu-rga3-v5-0-eb7f5d019d86@p= engutronix.de/ >=20 > On 11/28/25 8:26 AM, Sven P=C3=BCschel wrote: > > > > On 11/27/25 5:32 AM, Shawn Lin wrote: > >> =E5=9C=A8 2025/11/26 =E6=98=9F=E6=9C=9F=E4=B8=89 19:45, Sven P=C3=BCsc= hel =E5=86=99=E9=81=93: > >>> From: Simon Xue > >>> > >>> Disable the Bit 31 of the AUTO_GATING iommu register, as it causes > >>> hangups with the RGA3 (Raster Graphics Acceleration 3) peripheral. > >>> The RGA3 register description of the TRM already states that the bit > >>> must be set to 1. The vendor kernel sets the bit unconditionally to > >>> 1 to fix VOP (Video Output Processor) screen black issues. This patch > >>> squashes the 2 vendor kernel commits with the following commit=20 > >>> messages: > >>> > >>> Master fetch data and cpu update page table may work in parallel, may > >>> have the following procedure: > >>> > >>> master cpu > >>> fetch dte update page tabl > >>> | | > >>> (make dte invalid) <- zap iotlb entry > >>> | | > >>> fetch dte again > >>> (make dte invalid) <- zap iotlb entry > >>> | | > >>> fetch dte again > >>> (make dte invalid) <- zap iotlb entry > >>> | | > >>> fetch dte again > >>> (make iommu block) <- zap iotlb entry > >>> > >>> New iommu version has the above bug, if fetch dte consecutively four > >>> times, then it will be blocked. Fortunately, we can set bit 31 of > >>> register MMU_AUTO_GATING to 1 to make it work as old version which do= es > >>> not have this issue. > >>> > >>> This issue only appears on RV1126 so far, so make a workaround=20 > >>> dedicated > >>> to "rockchip,rv1126" machine type. > >>> > >>> iommu/rockchip: fix vop blocked and screen black on RK356X and RK3588 > >>> > >>> RK3568 and RK3588 has the same issue as RV1126/RV1109 that caused by > >>> dte fetch time limit, So we can set BIT(31) of register 0x24 default > >>> to 1 as a workaround. > >>> > >>> Signed-off-by: Simon Xue > >>> Signed-off-by: Sven P=C3=BCschel > >>> --- > >>> During testing of a newly developed driver for the RGA3 peripheral [1] > >>> (Raster Graphic Acceleration 3) of the RK3588 some sporadic hangs > >>> have been observed. The upstream rockchip-iommu driver is used to=20 > >>> handle > >>> the RGA3 IOMMU register space. > >>> > >>> After a closer look at the TRM for the RK3588, the RGA3 iommu register > >>> description of the RGA3_MMU_AUTO_GATING register (offset 0x24) mentio= ns > >> > >> It's 0xF24 per RGA3 chapter. > > > > yeah, sorry. I was already thinking relative to the rga3 iommu address= =20 > > space in my head, but didn't really mention that the chapter says=20 > > 0xF24 with the iommu related registers starting at 0xF00. > > > > Sincerely > > Sven > > > >> > >>> a mmu_bug_fixed_disable bit, which must be set to 1 but defaults to 0. > >>> > >>> Looking at the commits in the vendor kernel, the bit is unconditional= ly > >>> set to 1 and mentions that it fixes a blocked VOP (Video Output > >>> Processor) [3]. Therefore squash the relevant vendor commits > >>> [2] and [3] into a single patch, combine the commit messages and keep > >>> the Signed-off-by line from the original author. > >>> > >>> [1]=20 > >>> https://lore.kernel.org/all/20251007-spu-rga3-v1-0-36ad85570402@pengu= tronix.de/ > >>> [2]=20 > >>> https://github.com/rockchip-linux/kernel/commit/7f8158fb41b5cc8e738aa= eebc3637c50ebd74cae > >>> [3]=20 > >>> https://github.com/rockchip-linux/kernel/commit/6a355e5f9a2069a2309e2= 40791bc3aad63b7324e > >>> --- > >>> drivers/iommu/rockchip-iommu.c | 8 ++++++++ > >>> 1 file changed, 8 insertions(+) > >>> > >>> diff --git a/drivers/iommu/rockchip-iommu.c=20 > >>> b/drivers/iommu/rockchip-iommu.c > >>> index 0861dd469bd86..2d0dabb0d101a 100644 > >>> --- a/drivers/iommu/rockchip-iommu.c > >>> +++ b/drivers/iommu/rockchip-iommu.c > >>> @@ -76,6 +76,8 @@ > >>> #define SPAGE_ORDER 12 > >>> #define SPAGE_SIZE (1 << SPAGE_ORDER) > >>> +#define DISABLE_FETCH_DTE_TIME_LIMIT BIT(31) > >>> + > >>> /* > >>> * Support mapping any size that fits in one page table: > >>> * 4 KiB to 4 MiB > >>> @@ -930,6 +932,7 @@ static int rk_iommu_enable(struct rk_iommu *iommu) > >>> struct iommu_domain *domain =3D iommu->domain; > >>> struct rk_iommu_domain *rk_domain =3D to_rk_domain(domain); > >>> int ret, i; > >>> + u32 auto_gate; > >>> ret =3D clk_bulk_enable(iommu->num_clocks, iommu->clocks); > >>> if (ret) > >>> @@ -948,6 +951,11 @@ static int rk_iommu_enable(struct rk_iommu *iomm= u) > >>> rk_ops->mk_dtentries(rk_domain->dt_dma)); > >>> rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE= ); > >>> rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK,=20 > >>> RK_MMU_IRQ_MASK); > >>> + > >>> + /* Workaround for iommu blocked, BIT(31) default to 1 */ > >>> + auto_gate =3D rk_iommu_read(iommu->bases[i],=20 > >>> RK_MMU_AUTO_GATING); > >>> + auto_gate |=3D DISABLE_FETCH_DTE_TIME_LIMIT; > >>> + rk_iommu_write(iommu->bases[i], RK_MMU_AUTO_GATING,=20 > >>> auto_gate); > >>> } > >>> ret =3D rk_iommu_enable_paging(iommu); > >>> > >>> --- > >>> base-commit: 30f09200cc4aefbd8385b01e41bde2e4565a6f0e > >>> change-id: 20251126-spu-iommudtefix-cd0c5244c74a > >>> > >>> Best regards, > >> > >> >=20 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 1B504FF8868 for ; Tue, 28 Apr 2026 15:30:05 +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: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mSwdufBV17eQbd+5Dn/wWYPLWnms0+F4PU6Y5rvXJ4Y=; b=1yPRHF2P1lMiaa zhVcUq7TZvFCt2KFxDGkWEoupCpz5rL64d3YIX92K2OEXrR5D4uEQhh7IQT7rUcu7QtldI8YpiAit jjj1WJzfq21uFDsl+mgtU8dsEQVz0tGqFe8SRsgkNq3rdYwcD5/z5TkfoG6eiJtKfxqZAuk5Gpq8v 8sHPA1wtX5smLq82w1FTFVVKykjTo1ipJbYenUJpHzl2QJO0x6SMgx9vAIcCa7vkJkFap9PGTbVFk KGdoBtZpWUld2/cd0RhSCO00Ps88MVTxZ+9kA9wpnQ3NCBtGw6t3dQvAnG1kVUmc00w0RVxhNFcv2 QKRRRefxxEq5j7X9wa8A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1wHkNr-00000001jhe-0Ulp; Tue, 28 Apr 2026 15:29:59 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1wHkNo-00000001jgy-1mY0; Tue, 28 Apr 2026 15:29:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=J/jChz6sjr+zrCpBnIRaHvUti3M8eQoxf0csRWJFl5E=; b=kk2CPk3wqtMV0MItlwGDeU9Y7T +Kbtlcbmt9w+KIgiLd8tiFmLjqa3QioEtuNmPAhviIHiXn3voURz7hK4AeEC49zd3yb/wz06yf9ej ECvlnDkEof03pZg/1HA1Uk1TQg50bBqvs5LMlbZlDk89zS3gkjyBiaREeiXWB+Q9Iq/T9F3gKIY11 M9T/jir/dOWsgDZTZI19EKTcJeyPA55KRJFS8++DH0xAaYLjZ5IB/QC6vSBKZ5sUxlbvEQqyQMudj nI60BYAvqTLEOWzkdPjNKK6G5NV2g1SqnYLDIo7wTsIIGvXC9Z1VdyCpchvmc7/NNAssrhA1qDsEd s/gySzEw==; From: Heiko Stuebner To: Shawn Lin , Joerg Roedel , Will Deacon , Robin Murphy , Sven =?UTF-8?B?UMO8c2NoZWw=?= Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Simon Xue , kernel@pengutronix.de Subject: Re: [PATCH] iommu/rockchip: disable fetch dte time limit Date: Tue, 28 Apr 2026 17:29:33 +0200 Message-ID: <4696766.BEx9A2HvPv@phil> In-Reply-To: References: <20251126-spu-iommudtefix-v1-1-f90003dbfcc4@pengutronix.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260428_082956_497419_4584A03B X-CRM114-Status: GOOD ( 37.85 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgU3ZlbiwKCkFtIERpZW5zdGFnLCAyOC4gQXByaWwgMjAyNiwgMTQ6MTU6NDUgTWl0dGVsZXVy b3DDpGlzY2hlIFNvbW1lcnplaXQgc2NocmllYiBTdmVuIFDDvHNjaGVsOgo+IEhpLAo+IAo+IHBp bmdpbmcgdGhpcyBQYXRjaCwgYXMgSSBkaWRuJ3QgcmVjZWl2ZSBhbnkgbW9yZSBmZWVkYmFjay9y ZXZpZXdzLiBUaGUgCj4gZmVlZGJhY2sgb25seSBhZmZlY3RzIHRoZSBjb21tZW50IGFuZCBkb2Vz bid0IGFmZmVjdCB0aGUgY29tbWl0LCAKPiB0aGVyZWZvcmUgSSBjdXJyZW50bHkgZG9uJ3Qgc2Vl IGEgcmVhc29uIGZvciBhIHYyLgoKaXQncyBiZWVuIDUgbW9udGhzIHNpbmNlIHRoZSBvcmlnaW5h bCBzdWJtaXNzaW9uLCBzbyBJJ2QgZGlzYWdyZWUgOi0pCkl0IG1heSB2ZXJ5IHdlbGwgaGF2ZSBh bHJlYWR5IGJlZW4gZGlzY2FyZGVkIGZyb20gbWFpbnRhaW5lcnMnIGluYm94ZXMuCgpTbyBJIGRv IHRoaW5rIGEgdjIgb3IgYXQgbGVhc3QgYSByZXNlbmQgaXMgd2FyYW50ZWQgaGVyZS4KCgpIZWlr bwoKCj4gV2UndmUgbm90aWNlZCB0aGF0IHRoaXMgcGF0Y2hlcyBmaXhlcyBoYW5ndXBzIHdoZW4g dXNpbmcgdGhlIFJHQTMgCj4gcGVyaXBoZXJhbCBvbiB0aGUgcmszNTg4ICh3aGVyZSBJJ20gaW4g dGhlIHByb2Nlc3Mgb2YgdXBzdHJlYW1pbmcgYSAKPiBkcml2ZXIgWzFdLCB3aGljaCBkZXBlbmRz IG9uIHRoaXMgY2hhbmdlc2V0KS4gQmFzZWQgb24gdGhlIHZlbmRvciBjb21taXQgCj4gbWVzc2Fn ZXMsIGl0IHNob3VsZCBhbHNvIGZpeCBWT1AgYW5kIHNjcmVlbiBibGFjayBpc3N1ZXMuCj4gCj4g U2luY2VyZWx5Cj4gICAgICBTdmVuCj4gCj4gWzFdIAo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2xpbnV4LW1lZGlhLzIwMjYwNDI4LXNwdS1yZ2EzLXY1LTAtZWI3ZjVkMDE5ZDg2QHBlbmd1dHJv bml4LmRlLwo+IAo+IE9uIDExLzI4LzI1IDg6MjYgQU0sIFN2ZW4gUMO8c2NoZWwgd3JvdGU6Cj4g Pgo+ID4gT24gMTEvMjcvMjUgNTozMiBBTSwgU2hhd24gTGluIHdyb3RlOgo+ID4+IOWcqCAyMDI1 LzExLzI2IOaYn+acn+S4iSAxOTo0NSwgU3ZlbiBQw7xzY2hlbCDlhpnpgZM6Cj4gPj4+IEZyb206 IFNpbW9uIFh1ZSA8eHhtQHJvY2stY2hpcHMuY29tPgo+ID4+Pgo+ID4+PiBEaXNhYmxlIHRoZSBC aXQgMzEgb2YgdGhlIEFVVE9fR0FUSU5HIGlvbW11IHJlZ2lzdGVyLCBhcyBpdCBjYXVzZXMKPiA+ Pj4gaGFuZ3VwcyB3aXRoIHRoZSBSR0EzIChSYXN0ZXIgR3JhcGhpY3MgQWNjZWxlcmF0aW9uIDMp IHBlcmlwaGVyYWwuCj4gPj4+IFRoZSBSR0EzIHJlZ2lzdGVyIGRlc2NyaXB0aW9uIG9mIHRoZSBU Uk0gYWxyZWFkeSBzdGF0ZXMgdGhhdCB0aGUgYml0Cj4gPj4+IG11c3QgYmUgc2V0IHRvIDEuIFRo ZSB2ZW5kb3Iga2VybmVsIHNldHMgdGhlIGJpdCB1bmNvbmRpdGlvbmFsbHkgdG8KPiA+Pj4gMSB0 byBmaXggVk9QIChWaWRlbyBPdXRwdXQgUHJvY2Vzc29yKSBzY3JlZW4gYmxhY2sgaXNzdWVzLiBU aGlzIHBhdGNoCj4gPj4+IHNxdWFzaGVzIHRoZSAyIHZlbmRvciBrZXJuZWwgY29tbWl0cyB3aXRo IHRoZSBmb2xsb3dpbmcgY29tbWl0IAo+ID4+PiBtZXNzYWdlczoKPiA+Pj4KPiA+Pj4gTWFzdGVy IGZldGNoIGRhdGEgYW5kIGNwdSB1cGRhdGUgcGFnZSB0YWJsZSBtYXkgd29yayBpbiBwYXJhbGxl bCwgbWF5Cj4gPj4+IGhhdmUgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmU6Cj4gPj4+Cj4gPj4+ICAg ICBtYXN0ZXIgICAgICAgICAgICAgICAgICBjcHUKPiA+Pj4gICAgIGZldGNoIGR0ZSAgICAgICAg ICAgICAgIHVwZGF0ZSBwYWdlIHRhYmwKPiA+Pj4gICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgfAo+ID4+PiAgICAgKG1ha2UgZHRlIGludmFsaWQpICA8LSAgemFwIGlvdGxiIGVu dHJ5Cj4gPj4+ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPiA+Pj4gICAg IGZldGNoIGR0ZSBhZ2Fpbgo+ID4+PiAgICAgKG1ha2UgZHRlIGludmFsaWQpICA8LSAgemFwIGlv dGxiIGVudHJ5Cj4gPj4+ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPiA+ Pj4gICAgIGZldGNoIGR0ZSBhZ2Fpbgo+ID4+PiAgICAgKG1ha2UgZHRlIGludmFsaWQpICA8LSAg emFwIGlvdGxiIGVudHJ5Cj4gPj4+ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg IHwKPiA+Pj4gICAgIGZldGNoIGR0ZSBhZ2Fpbgo+ID4+PiAgICAgKG1ha2UgaW9tbXUgYmxvY2sp ICA8LSAgemFwIGlvdGxiIGVudHJ5Cj4gPj4+Cj4gPj4+IE5ldyBpb21tdSB2ZXJzaW9uIGhhcyB0 aGUgYWJvdmUgYnVnLCBpZiBmZXRjaCBkdGUgY29uc2VjdXRpdmVseSBmb3VyCj4gPj4+IHRpbWVz LCB0aGVuIGl0IHdpbGwgYmUgYmxvY2tlZC4gRm9ydHVuYXRlbHksIHdlIGNhbiBzZXQgYml0IDMx IG9mCj4gPj4+IHJlZ2lzdGVyIE1NVV9BVVRPX0dBVElORyB0byAxIHRvIG1ha2UgaXQgd29yayBh cyBvbGQgdmVyc2lvbiB3aGljaCBkb2VzCj4gPj4+IG5vdCBoYXZlIHRoaXMgaXNzdWUuCj4gPj4+ Cj4gPj4+IFRoaXMgaXNzdWUgb25seSBhcHBlYXJzIG9uIFJWMTEyNiBzbyBmYXIsIHNvIG1ha2Ug YSB3b3JrYXJvdW5kIAo+ID4+PiBkZWRpY2F0ZWQKPiA+Pj4gdG8gInJvY2tjaGlwLHJ2MTEyNiIg bWFjaGluZSB0eXBlLgo+ID4+Pgo+ID4+PiBpb21tdS9yb2NrY2hpcDogZml4IHZvcCBibG9ja2Vk IGFuZCBzY3JlZW4gYmxhY2sgb24gUkszNTZYIGFuZCBSSzM1ODgKPiA+Pj4KPiA+Pj4gUkszNTY4 IGFuZCBSSzM1ODggaGFzIHRoZSBzYW1lIGlzc3VlIGFzIFJWMTEyNi9SVjExMDkgdGhhdCBjYXVz ZWQgYnkKPiA+Pj4gZHRlIGZldGNoIHRpbWUgbGltaXQsIFNvIHdlIGNhbiBzZXQgQklUKDMxKSBv ZiByZWdpc3RlciAweDI0IGRlZmF1bHQKPiA+Pj4gdG8gMSBhcyBhIHdvcmthcm91bmQuCj4gPj4+ Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIFh1ZSA8eHhtQHJvY2stY2hpcHMuY29tPgo+ID4+ PiBTaWduZWQtb2ZmLWJ5OiBTdmVuIFDDvHNjaGVsIDxzLnB1ZXNjaGVsQHBlbmd1dHJvbml4LmRl Pgo+ID4+PiAtLS0KPiA+Pj4gRHVyaW5nIHRlc3Rpbmcgb2YgYSBuZXdseSBkZXZlbG9wZWQgZHJp dmVyIGZvciB0aGUgUkdBMyBwZXJpcGhlcmFsIFsxXQo+ID4+PiAoUmFzdGVyIEdyYXBoaWMgQWNj ZWxlcmF0aW9uIDMpIG9mIHRoZSBSSzM1ODggc29tZSBzcG9yYWRpYyBoYW5ncwo+ID4+PiBoYXZl IGJlZW4gb2JzZXJ2ZWQuIFRoZSB1cHN0cmVhbSByb2NrY2hpcC1pb21tdSBkcml2ZXIgaXMgdXNl ZCB0byAKPiA+Pj4gaGFuZGxlCj4gPj4+IHRoZSBSR0EzIElPTU1VIHJlZ2lzdGVyIHNwYWNlLgo+ ID4+Pgo+ID4+PiBBZnRlciBhIGNsb3NlciBsb29rIGF0IHRoZSBUUk0gZm9yIHRoZSBSSzM1ODgs IHRoZSBSR0EzIGlvbW11IHJlZ2lzdGVyCj4gPj4+IGRlc2NyaXB0aW9uIG9mIHRoZSBSR0EzX01N VV9BVVRPX0dBVElORyByZWdpc3RlciAob2Zmc2V0IDB4MjQpIG1lbnRpb25zCj4gPj4KPiA+PiBJ dCdzIDB4RjI0IHBlciBSR0EzIGNoYXB0ZXIuCj4gPgo+ID4geWVhaCwgc29ycnkuIEkgd2FzIGFs cmVhZHkgdGhpbmtpbmcgcmVsYXRpdmUgdG8gdGhlIHJnYTMgaW9tbXUgYWRkcmVzcyAKPiA+IHNw YWNlIGluIG15IGhlYWQsIGJ1dCBkaWRuJ3QgcmVhbGx5IG1lbnRpb24gdGhhdCB0aGUgY2hhcHRl ciBzYXlzIAo+ID4gMHhGMjQgd2l0aCB0aGUgaW9tbXUgcmVsYXRlZCByZWdpc3RlcnMgc3RhcnRp bmcgYXQgMHhGMDAuCj4gPgo+ID4gU2luY2VyZWx5Cj4gPiAgICAgU3Zlbgo+ID4KPiA+Pgo+ID4+ PiBhIG1tdV9idWdfZml4ZWRfZGlzYWJsZSBiaXQsIHdoaWNoIG11c3QgYmUgc2V0IHRvIDEgYnV0 IGRlZmF1bHRzIHRvIDAuCj4gPj4+Cj4gPj4+IExvb2tpbmcgYXQgdGhlIGNvbW1pdHMgaW4gdGhl IHZlbmRvciBrZXJuZWwsIHRoZSBiaXQgaXMgdW5jb25kaXRpb25hbGx5Cj4gPj4+IHNldCB0byAx IGFuZCBtZW50aW9ucyB0aGF0IGl0IGZpeGVzIGEgYmxvY2tlZCBWT1AgKFZpZGVvIE91dHB1dAo+ ID4+PiBQcm9jZXNzb3IpIFszXS4gVGhlcmVmb3JlIHNxdWFzaCB0aGUgcmVsZXZhbnQgdmVuZG9y IGNvbW1pdHMKPiA+Pj4gWzJdIGFuZCBbM10gaW50byBhIHNpbmdsZSBwYXRjaCwgY29tYmluZSB0 aGUgY29tbWl0IG1lc3NhZ2VzIGFuZCBrZWVwCj4gPj4+IHRoZSBTaWduZWQtb2ZmLWJ5IGxpbmUg ZnJvbSB0aGUgb3JpZ2luYWwgYXV0aG9yLgo+ID4+Pgo+ID4+PiBbMV0gCj4gPj4+IGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2FsbC8yMDI1MTAwNy1zcHUtcmdhMy12MS0wLTM2YWQ4NTU3MDQwMkBw ZW5ndXRyb25peC5kZS8KPiA+Pj4gWzJdIAo+ID4+PiBodHRwczovL2dpdGh1Yi5jb20vcm9ja2No aXAtbGludXgva2VybmVsL2NvbW1pdC83ZjgxNThmYjQxYjVjYzhlNzM4YWFlZWJjMzYzN2M1MGVi ZDc0Y2FlCj4gPj4+IFszXSAKPiA+Pj4gaHR0cHM6Ly9naXRodWIuY29tL3JvY2tjaGlwLWxpbnV4 L2tlcm5lbC9jb21taXQvNmEzNTVlNWY5YTIwNjlhMjMwOWUyNDA3OTFiYzNhYWQ2M2I3MzI0ZQo+ ID4+PiAtLS0KPiA+Pj4gICBkcml2ZXJzL2lvbW11L3JvY2tjaGlwLWlvbW11LmMgfCA4ICsrKysr KysrCj4gPj4+ICAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQo+ID4+Pgo+ID4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9yb2NrY2hpcC1pb21tdS5jIAo+ID4+PiBiL2RyaXZl cnMvaW9tbXUvcm9ja2NoaXAtaW9tbXUuYwo+ID4+PiBpbmRleCAwODYxZGQ0NjliZDg2Li4yZDBk YWJiMGQxMDFhIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2lvbW11L3JvY2tjaGlwLWlvbW11 LmMKPiA+Pj4gKysrIGIvZHJpdmVycy9pb21tdS9yb2NrY2hpcC1pb21tdS5jCj4gPj4+IEBAIC03 Niw2ICs3Niw4IEBACj4gPj4+ICAgI2RlZmluZSBTUEFHRV9PUkRFUiAxMgo+ID4+PiAgICNkZWZp bmUgU1BBR0VfU0laRSAoMSA8PCBTUEFHRV9PUkRFUikKPiA+Pj4gICArI2RlZmluZSBESVNBQkxF X0ZFVENIX0RURV9USU1FX0xJTUlUIEJJVCgzMSkKPiA+Pj4gKwo+ID4+PiAgICAvKgo+ID4+PiAg ICAgKiBTdXBwb3J0IG1hcHBpbmcgYW55IHNpemUgdGhhdCBmaXRzIGluIG9uZSBwYWdlIHRhYmxl Ogo+ID4+PiAgICAgKiAgIDQgS2lCIHRvIDQgTWlCCj4gPj4+IEBAIC05MzAsNiArOTMyLDcgQEAg c3RhdGljIGludCBya19pb21tdV9lbmFibGUoc3RydWN0IHJrX2lvbW11ICppb21tdSkKPiA+Pj4g ICAgICAgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluID0gaW9tbXUtPmRvbWFpbjsKPiA+Pj4g ICAgICAgc3RydWN0IHJrX2lvbW11X2RvbWFpbiAqcmtfZG9tYWluID0gdG9fcmtfZG9tYWluKGRv bWFpbik7Cj4gPj4+ICAgICAgIGludCByZXQsIGk7Cj4gPj4+ICsgICAgdTMyIGF1dG9fZ2F0ZTsK PiA+Pj4gICAgICAgICByZXQgPSBjbGtfYnVsa19lbmFibGUoaW9tbXUtPm51bV9jbG9ja3MsIGlv bW11LT5jbG9ja3MpOwo+ID4+PiAgICAgICBpZiAocmV0KQo+ID4+PiBAQCAtOTQ4LDYgKzk1MSwx MSBAQCBzdGF0aWMgaW50IHJrX2lvbW11X2VuYWJsZShzdHJ1Y3QgcmtfaW9tbXUgKmlvbW11KQo+ ID4+PiBya19vcHMtPm1rX2R0ZW50cmllcyhya19kb21haW4tPmR0X2RtYSkpOwo+ID4+PiAgICAg ICAgICAgcmtfaW9tbXVfYmFzZV9jb21tYW5kKGlvbW11LT5iYXNlc1tpXSwgUktfTU1VX0NNRF9a QVBfQ0FDSEUpOwo+ID4+PiAgICAgICAgICAgcmtfaW9tbXVfd3JpdGUoaW9tbXUtPmJhc2VzW2ld LCBSS19NTVVfSU5UX01BU0ssIAo+ID4+PiBSS19NTVVfSVJRX01BU0spOwo+ID4+PiArCj4gPj4+ ICsgICAgICAgIC8qIFdvcmthcm91bmQgZm9yIGlvbW11IGJsb2NrZWQsIEJJVCgzMSkgZGVmYXVs dCB0byAxICovCj4gPj4+ICsgICAgICAgIGF1dG9fZ2F0ZSA9IHJrX2lvbW11X3JlYWQoaW9tbXUt PmJhc2VzW2ldLCAKPiA+Pj4gUktfTU1VX0FVVE9fR0FUSU5HKTsKPiA+Pj4gKyAgICAgICAgYXV0 b19nYXRlIHw9IERJU0FCTEVfRkVUQ0hfRFRFX1RJTUVfTElNSVQ7Cj4gPj4+ICsgICAgICAgIHJr X2lvbW11X3dyaXRlKGlvbW11LT5iYXNlc1tpXSwgUktfTU1VX0FVVE9fR0FUSU5HLCAKPiA+Pj4g YXV0b19nYXRlKTsKPiA+Pj4gICAgICAgfQo+ID4+PiAgICAgICAgIHJldCA9IHJrX2lvbW11X2Vu YWJsZV9wYWdpbmcoaW9tbXUpOwo+ID4+Pgo+ID4+PiAtLS0KPiA+Pj4gYmFzZS1jb21taXQ6IDMw ZjA5MjAwY2M0YWVmYmQ4Mzg1YjAxZTQxYmRlMmU0NTY1YTZmMGUKPiA+Pj4gY2hhbmdlLWlkOiAy MDI1MTEyNi1zcHUtaW9tbXVkdGVmaXgtY2QwYzUyNDRjNzRhCj4gPj4+Cj4gPj4+IEJlc3QgcmVn YXJkcywKPiA+Pgo+ID4+Cj4gCgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlw QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1yb2NrY2hpcAo=