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 6684CCA0EE5 for ; Wed, 13 Aug 2025 22:46:33 +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:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=8cLeJRvRQmYJSkInaE9VNGkhvbizbe3ku6Vn7Sk+naQ=; b=n0ley/8xAd/lB7zEV94sh+sLDi cKIzrdBFfqAqFtUPCoOcrgxLDTxwH3a5ChjSMPokRyWeegOG8YCJDTi4cEg74O8P1pyq8m5s0csyA onQr7SizbKFLhHZCrgw9GO+AZH0FwQ7HQDwoNwJa20HuYdMbZ1rh90hPhC2e+uTwukJogSTujjOfq gxfeLAz7XLb5DnVaqU/Vva54Iel6slC22Ti7hdP1viJFjfMQIjtwEnLCGXznMfhR2H28yotobYN8s E1duauOF0crTNnbuvf52iIKE9tnn6KcmXsvlxyqcdQsUYXcigGoGsd984SzfIo+BpspQ0Cs2d6cO/ PzJRHpnA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umKEn-0000000FBam-3EXh; Wed, 13 Aug 2025 22:46:29 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1umGQI-0000000Ej2a-25fD; Wed, 13 Aug 2025 18:42:07 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 025B645570; Wed, 13 Aug 2025 18:42:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B0A69C4CEEB; Wed, 13 Aug 2025 18:42:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755110525; bh=g5/K/aqiu/I8p/j7YFGZz9MNQ7e88JO/25IsHBbTzvo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HJNytZyznr8ERJfZMMKZIczLLfi4d7ucuqH0OrDDssgneqIOIS++2WfC8oCIH4wK+ G/CKl8Tks4LzxJ6kWahekGrlq5jlo7OTejCzao1WIxgYUP/bjxWyHjJDf2/3tDRs2F k/wFzBPAX/qcxBvzXtqd2LFhx1hp/3giTOabez4qqN52q1tXY+AAhcu8BzqMwA88OM hDhq4H383ytCuRcPQTO//DEu2Y2jOgLA3mxK0loWPFIqkXzHXQxKumxpfke/zxcbEk 6CDZY0YTelUd1lyarfsetMz067qZnNnzGTWPOgm7NZLX6H9DgkCa8ZGD7UHeglq+62 ysIhYFXCJ4hDw== Date: Wed, 13 Aug 2025 20:42:01 +0200 From: Niklas Cassel To: Heiko =?utf-8?Q?St=C3=BCbner?= Cc: Robin Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Damien Le Moal , Sebastian Reichel , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org Subject: Re: [PATCH] arm64: dts: rockchip: enable the mmu600_pcie IOMMU on the rk3588 SoC Message-ID: References: <20241107123732.1160063-2-cassel@kernel.org> <4400329.mogB4TqSGs@diego> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4400329.mogB4TqSGs@diego> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_114206_578971_429D4427 X-CRM114-Status: GOOD ( 33.48 ) 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 Hello Heiko, On Wed, Aug 06, 2025 at 09:36:10PM +0200, Heiko Stübner wrote: > > I've run into a bit of a problem with this patch and v6.16 today :-( . Is the problem there also on older kernels? (There as been a bunch of patches to the arm-smmu-v3 driver lately.) > > It seems the SMMU currently does not play well, if has no users. With > this patch the pcie smmu is always probed, even if nothing is using it. > (or in fact the PCIe controller driver defers probing for whatever reason). Well, the good thing is that the PCIe driver will probe successfully even when there is nothing attached to the PCIe slot: https://github.com/torvalds/linux/blob/v6.17-rc1/drivers/pci/controller/dwc/pcie-designware-host.c#L560-L561 So the only case where the driver will still be deferred after a normal boot is if e.g. the user forgot to select the Kconfig for the PHY driver. It does of course sound very bad that the board takes 30 seconds to reboot in this case, but at least it reboots eventually. > > But in all cases the SMMU's shutdown callback will be called when needed. > > So test-case: > - probe pcie-smmu, but do not probe PCIe ... hit reboot > The smmu shutdown function will hang for a bit, and at least my two > test boards did reboot after hanging about 30 seconds > (I did trace that down to the arm_smmu_shutdown function) > - probe pcie-smmu and probe PCIe - creating a user for the smmu > Reboot happens without hang/delay > > Likely the SMMU is missing either a clock or its power-domain. > > Just adding the power-domain to the node, did keep the domain on, but > did not solve the hang for me. Which power-domain did you add? When I look at the PCIe controllers, they seem to use: power-domains = <&power RK3588_PD_PCIE>; So I assume that this is the power domain that you tried? If I look at the RK3588 TRM Part1, 7.3.1 Domain Description, page 1096, it does seem like the MMU600_PCIE is in power domain PD_PHP and not PD_PCIE. Perhaps you could something like: power-domains = <&power RK3588_PD_PCIE>, <&power RK3588_PD_PHP>; just to see if that improves things? (Ideally I would assume that we should just need RK3588_PD_PHP.) I do notice that RK3588_PD_PHP is defined/used in: drivers/pmdomain/rockchip/pm-domains.c and include/dt-bindings/power/rk3588-power.h However, the RK3588_PD_PHP power domain does not seem to be defined in rk3588-base.dtsi, like e.g. the RK3588_PD_PCIE power domain is: https://github.com/torvalds/linux/blob/v6.17-rc1/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi#L1115-L1121 I also cannot find the RK3588_PD_PHP power domain defined in the downstream dtsi: https://github.com/radxa/kernel/blob/linux-6.1-stan-rkr5.1/arch/arm64/boot/dts/rockchip/rk3588s.dtsi#L3422-L3427 Side note: from the TRM is seems that pcie2x1l0, pcie2x1l1, pcie2x1l2 is also in the RK3588_PD_PHP power domain. (only pcie3x4 and pcie3x2 is in the RK3588_PD_PCIE power domain.) Yet, looking at rk3588-base.dtsi and rk3588-extra.dtsi, all five PCIe controllers has: power-domains = <&power RK3588_PD_PCIE>; Looking at downstream, pcie3x4 and pcie3x2 has: power-domains = <&power RK3588_PD_PCIE>; but pcie2x1l0, pcie2x1l1, pcie2x1l2 has no power-domains property at all. Perhaps a bug when Sebastian added the PCIe device tree nodes to upstream? > Strangely enough, additionally forcing all clocks to stay permanently on, > also didn't help (or I messed up somewhere) . > I'm not sure if the PCIe controller does cause the SMMU to do some more > initialization, that would be missing otherwise. That does sound like the most likely explanation. arm_smmu_device_shutdown() calls arm_smmu_device_disable() which simply does a arm_smmu_write_reg_sync(smmu, 0, ARM_SMMU_CR0, ARM_SMMU_CR0ACK); The ARM_SMMU_POLL_TIMEOUT_US is however 1s, so if your board reboots after 30 seconds, that is probably because of a watchdog or similar. Kind regards, Niklas 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 41930CA0EEA for ; Wed, 13 Aug 2025 22:46:34 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=K4JuS0yhw2OlcD2NAitutqDMlnYMFPZ096qX6gmZXHo=; b=L2OryGvl9aYwuU z9xfOZpjnMGyNbw8m6chJ3Ku5dQJdIiPhXPC6YPp95efQIug6nKKlAF7CP6dq2mzQepvElWDHWLSb ZQmPn5TiadwVu1NalcX3DaQZ8k2osANP8yTehqTCFIett+eIsefzdrEK4NNEsil+grMxaFibJansk rPVBlqx9G5MpyinbK26qQ862y1x5jMzZtH/juW8KJG1zdJmwWFlYPjA1KcMmwniSHZgh3q5dO5B1k rj/WoZ2trtn1OdbmAJNTEZi4OkOWWk3pGTdluQY9tFbEBXXpLRGSxW3eg79GsxNFrjOi/v1HiOZCd cjJEdLw72PS8stS7SePg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umKEo-0000000FBbO-1ZAN; Wed, 13 Aug 2025 22:46:30 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1umGQI-0000000Ej2a-25fD; Wed, 13 Aug 2025 18:42:07 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 025B645570; Wed, 13 Aug 2025 18:42:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B0A69C4CEEB; Wed, 13 Aug 2025 18:42:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755110525; bh=g5/K/aqiu/I8p/j7YFGZz9MNQ7e88JO/25IsHBbTzvo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HJNytZyznr8ERJfZMMKZIczLLfi4d7ucuqH0OrDDssgneqIOIS++2WfC8oCIH4wK+ G/CKl8Tks4LzxJ6kWahekGrlq5jlo7OTejCzao1WIxgYUP/bjxWyHjJDf2/3tDRs2F k/wFzBPAX/qcxBvzXtqd2LFhx1hp/3giTOabez4qqN52q1tXY+AAhcu8BzqMwA88OM hDhq4H383ytCuRcPQTO//DEu2Y2jOgLA3mxK0loWPFIqkXzHXQxKumxpfke/zxcbEk 6CDZY0YTelUd1lyarfsetMz067qZnNnzGTWPOgm7NZLX6H9DgkCa8ZGD7UHeglq+62 ysIhYFXCJ4hDw== Date: Wed, 13 Aug 2025 20:42:01 +0200 From: Niklas Cassel To: Heiko =?utf-8?Q?St=C3=BCbner?= Cc: Robin Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Damien Le Moal , Sebastian Reichel , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org Subject: Re: [PATCH] arm64: dts: rockchip: enable the mmu600_pcie IOMMU on the rk3588 SoC Message-ID: References: <20241107123732.1160063-2-cassel@kernel.org> <4400329.mogB4TqSGs@diego> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <4400329.mogB4TqSGs@diego> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_114206_578971_429D4427 X-CRM114-Status: GOOD ( 33.48 ) 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 SGVsbG8gSGVpa28sCgpPbiBXZWQsIEF1ZyAwNiwgMjAyNSBhdCAwOTozNjoxMFBNICswMjAwLCBI ZWlrbyBTdMO8Ym5lciB3cm90ZToKPiAKPiBJJ3ZlIHJ1biBpbnRvIGEgYml0IG9mIGEgcHJvYmxl bSB3aXRoIHRoaXMgcGF0Y2ggYW5kIHY2LjE2IHRvZGF5IDotKCAuCgpJcyB0aGUgcHJvYmxlbSB0 aGVyZSBhbHNvIG9uIG9sZGVyIGtlcm5lbHM/CihUaGVyZSBhcyBiZWVuIGEgYnVuY2ggb2YgcGF0 Y2hlcyB0byB0aGUgYXJtLXNtbXUtdjMgZHJpdmVyIGxhdGVseS4pCgoKPiAKPiBJdCBzZWVtcyB0 aGUgU01NVSBjdXJyZW50bHkgZG9lcyBub3QgcGxheSB3ZWxsLCBpZiBoYXMgbm8gdXNlcnMuIFdp dGgKPiB0aGlzIHBhdGNoIHRoZSBwY2llIHNtbXUgaXMgYWx3YXlzIHByb2JlZCwgZXZlbiBpZiBu b3RoaW5nIGlzIHVzaW5nIGl0Lgo+IChvciBpbiBmYWN0IHRoZSBQQ0llIGNvbnRyb2xsZXIgZHJp dmVyIGRlZmVycyBwcm9iaW5nIGZvciB3aGF0ZXZlciByZWFzb24pLgoKV2VsbCwgdGhlIGdvb2Qg dGhpbmcgaXMgdGhhdCB0aGUgUENJZSBkcml2ZXIgd2lsbCBwcm9iZSBzdWNjZXNzZnVsbHkgZXZl bgp3aGVuIHRoZXJlIGlzIG5vdGhpbmcgYXR0YWNoZWQgdG8gdGhlIFBDSWUgc2xvdDoKaHR0cHM6 Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvdjYuMTctcmMxL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMjTDU2MC1MNTYxCgpTbyB0aGUgb25s eSBjYXNlIHdoZXJlIHRoZSBkcml2ZXIgd2lsbCBzdGlsbCBiZSBkZWZlcnJlZCBhZnRlciBhIG5v cm1hbApib290IGlzIGlmIGUuZy4gdGhlIHVzZXIgZm9yZ290IHRvIHNlbGVjdCB0aGUgS2NvbmZp ZyBmb3IgdGhlIFBIWSBkcml2ZXIuCgpJdCBkb2VzIG9mIGNvdXJzZSBzb3VuZCB2ZXJ5IGJhZCB0 aGF0IHRoZSBib2FyZCB0YWtlcyAzMCBzZWNvbmRzIHRvIHJlYm9vdAppbiB0aGlzIGNhc2UsIGJ1 dCBhdCBsZWFzdCBpdCByZWJvb3RzIGV2ZW50dWFsbHkuCgoKPiAKPiBCdXQgaW4gYWxsIGNhc2Vz IHRoZSBTTU1VJ3Mgc2h1dGRvd24gY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2hlbiBuZWVkZWQu Cj4gCj4gU28gdGVzdC1jYXNlOgo+IC0gcHJvYmUgcGNpZS1zbW11LCBidXQgZG8gbm90IHByb2Jl IFBDSWUgLi4uIGhpdCByZWJvb3QKPiAgIFRoZSBzbW11IHNodXRkb3duIGZ1bmN0aW9uIHdpbGwg aGFuZyBmb3IgYSBiaXQsIGFuZCBhdCBsZWFzdCBteSB0d28KPiAgIHRlc3QgYm9hcmRzICBkaWQg cmVib290IGFmdGVyIGhhbmdpbmcgYWJvdXQgMzAgc2Vjb25kcwo+ICAgKEkgZGlkIHRyYWNlIHRo YXQgZG93biB0byB0aGUgYXJtX3NtbXVfc2h1dGRvd24gZnVuY3Rpb24pCj4gLSBwcm9iZSBwY2ll LXNtbXUgYW5kIHByb2JlIFBDSWUgLSBjcmVhdGluZyBhIHVzZXIgZm9yIHRoZSBzbW11Cj4gICBS ZWJvb3QgaGFwcGVucyB3aXRob3V0IGhhbmcvZGVsYXkKPiAKPiBMaWtlbHkgdGhlIFNNTVUgaXMg bWlzc2luZyBlaXRoZXIgYSBjbG9jayBvciBpdHMgcG93ZXItZG9tYWluLgo+IAo+IEp1c3QgYWRk aW5nIHRoZSBwb3dlci1kb21haW4gdG8gdGhlIG5vZGUsIGRpZCBrZWVwIHRoZSBkb21haW4gb24s IGJ1dAo+IGRpZCBub3Qgc29sdmUgdGhlIGhhbmcgZm9yIG1lLgoKV2hpY2ggcG93ZXItZG9tYWlu IGRpZCB5b3UgYWRkPwoKV2hlbiBJIGxvb2sgYXQgdGhlIFBDSWUgY29udHJvbGxlcnMsIHRoZXkg c2VlbSB0byB1c2U6CnBvd2VyLWRvbWFpbnMgPSA8JnBvd2VyIFJLMzU4OF9QRF9QQ0lFPjsKClNv IEkgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgcG93ZXIgZG9tYWluIHRoYXQgeW91IHRyaWVkPwoK SWYgSSBsb29rIGF0IHRoZSBSSzM1ODggVFJNIFBhcnQxLCA3LjMuMSBEb21haW4gRGVzY3JpcHRp b24sCnBhZ2UgMTA5NiwgaXQgZG9lcyBzZWVtIGxpa2UgdGhlIE1NVTYwMF9QQ0lFIGlzIGluIHBv d2VyIGRvbWFpbgpQRF9QSFAgYW5kIG5vdCBQRF9QQ0lFLgoKUGVyaGFwcyB5b3UgY291bGQgc29t ZXRoaW5nIGxpa2U6CnBvd2VyLWRvbWFpbnMgPSA8JnBvd2VyIFJLMzU4OF9QRF9QQ0lFPiwgPCZw b3dlciBSSzM1ODhfUERfUEhQPjsKCmp1c3QgdG8gc2VlIGlmIHRoYXQgaW1wcm92ZXMgdGhpbmdz PyAoSWRlYWxseSBJIHdvdWxkIGFzc3VtZSB0aGF0IHdlCnNob3VsZCBqdXN0IG5lZWQgUkszNTg4 X1BEX1BIUC4pCgpJIGRvIG5vdGljZSB0aGF0IFJLMzU4OF9QRF9QSFAgaXMgZGVmaW5lZC91c2Vk IGluOgpkcml2ZXJzL3BtZG9tYWluL3JvY2tjaGlwL3BtLWRvbWFpbnMuYyBhbmQKaW5jbHVkZS9k dC1iaW5kaW5ncy9wb3dlci9yazM1ODgtcG93ZXIuaAoKSG93ZXZlciwgdGhlIFJLMzU4OF9QRF9Q SFAgcG93ZXIgZG9tYWluIGRvZXMgbm90IHNlZW0gdG8gYmUgZGVmaW5lZCBpbgpyazM1ODgtYmFz ZS5kdHNpLCBsaWtlIGUuZy4gdGhlIFJLMzU4OF9QRF9QQ0lFIHBvd2VyIGRvbWFpbiBpczoKaHR0 cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvdjYuMTctcmMxL2FyY2gvYXJtNjQv Ym9vdC9kdHMvcm9ja2NoaXAvcmszNTg4LWJhc2UuZHRzaSNMMTExNS1MMTEyMQoKSSBhbHNvIGNh bm5vdCBmaW5kIHRoZSBSSzM1ODhfUERfUEhQIHBvd2VyIGRvbWFpbiBkZWZpbmVkIGluIHRoZQpk b3duc3RyZWFtIGR0c2k6Cmh0dHBzOi8vZ2l0aHViLmNvbS9yYWR4YS9rZXJuZWwvYmxvYi9saW51 eC02LjEtc3Rhbi1ya3I1LjEvYXJjaC9hcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1ODhzLmR0 c2kjTDM0MjItTDM0MjcKCgoKU2lkZSBub3RlOiBmcm9tIHRoZSBUUk0gaXMgc2VlbXMgdGhhdApw Y2llMngxbDAsIHBjaWUyeDFsMSwgcGNpZTJ4MWwyIGlzIGFsc28gaW4gdGhlIFJLMzU4OF9QRF9Q SFAgcG93ZXIgZG9tYWluLgoob25seSBwY2llM3g0IGFuZCBwY2llM3gyIGlzIGluIHRoZSBSSzM1 ODhfUERfUENJRSBwb3dlciBkb21haW4uKQoKWWV0LCBsb29raW5nIGF0IHJrMzU4OC1iYXNlLmR0 c2kgYW5kIHJrMzU4OC1leHRyYS5kdHNpLCBhbGwgZml2ZQpQQ0llIGNvbnRyb2xsZXJzIGhhczoK cG93ZXItZG9tYWlucyA9IDwmcG93ZXIgUkszNTg4X1BEX1BDSUU+OwoKTG9va2luZyBhdCBkb3du c3RyZWFtLCBwY2llM3g0IGFuZCBwY2llM3gyIGhhczoKcG93ZXItZG9tYWlucyA9IDwmcG93ZXIg UkszNTg4X1BEX1BDSUU+OwpidXQgcGNpZTJ4MWwwLCBwY2llMngxbDEsIHBjaWUyeDFsMiBoYXMg bm8gcG93ZXItZG9tYWlucyBwcm9wZXJ0eSBhdCBhbGwuCgpQZXJoYXBzIGEgYnVnIHdoZW4gU2Vi YXN0aWFuIGFkZGVkIHRoZSBQQ0llIGRldmljZSB0cmVlIG5vZGVzIHRvIHVwc3RyZWFtPwoKCj4g U3RyYW5nZWx5IGVub3VnaCwgYWRkaXRpb25hbGx5IGZvcmNpbmcgYWxsIGNsb2NrcyB0byBzdGF5 IHBlcm1hbmVudGx5IG9uLAo+IGFsc28gZGlkbid0IGhlbHAgKG9yIEkgbWVzc2VkIHVwIHNvbWV3 aGVyZSkgLgo+IEknbSBub3Qgc3VyZSBpZiB0aGUgUENJZSBjb250cm9sbGVyIGRvZXMgY2F1c2Ug dGhlIFNNTVUgdG8gZG8gc29tZSBtb3JlCj4gaW5pdGlhbGl6YXRpb24sIHRoYXQgd291bGQgYmUg bWlzc2luZyBvdGhlcndpc2UuCgpUaGF0IGRvZXMgc291bmQgbGlrZSB0aGUgbW9zdCBsaWtlbHkg ZXhwbGFuYXRpb24uCgphcm1fc21tdV9kZXZpY2Vfc2h1dGRvd24oKSBjYWxscyBhcm1fc21tdV9k ZXZpY2VfZGlzYWJsZSgpIHdoaWNoIHNpbXBseQpkb2VzIGEgYXJtX3NtbXVfd3JpdGVfcmVnX3N5 bmMoc21tdSwgMCwgQVJNX1NNTVVfQ1IwLCBBUk1fU01NVV9DUjBBQ0spOwoKVGhlIEFSTV9TTU1V X1BPTExfVElNRU9VVF9VUyBpcyBob3dldmVyIDFzLCBzbyBpZiB5b3VyIGJvYXJkIHJlYm9vdHMg YWZ0ZXIKMzAgc2Vjb25kcywgdGhhdCBpcyBwcm9iYWJseSBiZWNhdXNlIG9mIGEgd2F0Y2hkb2cg b3Igc2ltaWxhci4KCgpLaW5kIHJlZ2FyZHMsCk5pa2xhcwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0Ckxp bnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=