From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D6D96469C for ; Mon, 4 Jul 2022 13:31:11 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9625F23A; Mon, 4 Jul 2022 06:31:11 -0700 (PDT) Received: from donnerap.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ED6363F66F; Mon, 4 Jul 2022 06:31:09 -0700 (PDT) Date: Mon, 4 Jul 2022 14:30:57 +0100 From: Andre Przywara To: Jernej =?UTF-8?B?xaBrcmFiZWM=?= Cc: Samuel Holland , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Icenowy Zheng , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v11 3/6] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Message-ID: <20220704143057.76163208@donnerap.cambridge.arm.com> In-Reply-To: <2985997.CbtlEUcBR6@jernej-laptop> References: <20220428230933.15262-1-andre.przywara@arm.com> <3165164.aeNJFYEL58@kista> <20220630010410.38fc117f@slackpad.lan> <2985997.CbtlEUcBR6@jernej-laptop> Organization: ARM X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.32; aarch64-unknown-linux-gnu) Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sat, 02 Jul 2022 23:16:53 +0200 Jernej =C5=A0krabec wrote: Hi Jernej, > Dne =C4=8Detrtek, 30. junij 2022 ob 02:04:10 CEST je Andre Przywara napis= al(a): > > On Tue, 03 May 2022 21:05:11 +0200 > > Jernej =C5=A0krabec wrote: > >=20 > > Hi Jernej, > >=20 > > many thanks for taking the time to wade through this file! > > =20 > > > Dne petek, 29. april 2022 ob 01:09:30 CEST je Andre Przywara napisal(= a): =20 > > > > This (relatively) new SoC is similar to the H6, but drops the (brok= en) > > > > PCIe support and the USB 3.0 controller. It also gets the management > > > > controller removed, which in turn removes *some*, but not all of the > > > > devices formerly dedicated to the ARISC (CPUS). > > > > And while there is still the extra sunxi interrupt controller, the > > > > package lacks the corresponding NMI pin, so no interrupts for the P= MIC. > > > >=20 > > > > The reserved memory node is actually handled by Trusted Firmware no= w, > > > > but U-Boot fails to propagate this to a separately loaded DTB, so we > > > > keep it in here for now, until U-Boot learns to do this properly. > > > >=20 > > > > Signed-off-by: Andre Przywara > > > > --- > > > >=20 > > > > .../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 574 ++++++++++++++= ++++ > > > > 1 file changed, 574 insertions(+) > > > > create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > >=20 > > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > > b/arch/arm64/ =20 > > >=20 > > > boot/dts/allwinner/sun50i-h616.dtsi > > > =20 > > > > new file mode 100644 > > > > index 000000000000..cc06cdd15ba5 > > > > --- /dev/null > > > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi > > > > @@ -0,0 +1,574 @@ > > > > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > > > > +// Copyright (C) 2020 Arm Ltd. > > > > +// based on the H6 dtsi, which is: > > > > +// Copyright (C) 2017 Icenowy Zheng > > > > + > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > +#include > > > > + > > > > +/ { > > > > + interrupt-parent =3D <&gic>; > > > > + #address-cells =3D <2>; > > > > + #size-cells =3D <2>; > > > > + > > > > + cpus { > > > > + #address-cells =3D <1>; > > > > + #size-cells =3D <0>; > > > > + > > > > + cpu0: cpu@0 { > > > > + compatible =3D "arm,cortex-a53"; > > > > + device_type =3D "cpu"; > > > > + reg =3D <0>; > > > > + enable-method =3D "psci"; > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > + }; > > > > + > > > > + cpu1: cpu@1 { > > > > + compatible =3D "arm,cortex-a53"; > > > > + device_type =3D "cpu"; > > > > + reg =3D <1>; > > > > + enable-method =3D "psci"; > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > + }; > > > > + > > > > + cpu2: cpu@2 { > > > > + compatible =3D "arm,cortex-a53"; > > > > + device_type =3D "cpu"; > > > > + reg =3D <2>; > > > > + enable-method =3D "psci"; > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > + }; > > > > + > > > > + cpu3: cpu@3 { > > > > + compatible =3D "arm,cortex-a53"; > > > > + device_type =3D "cpu"; > > > > + reg =3D <3>; > > > > + enable-method =3D "psci"; > > > > + clocks =3D <&ccu CLK_CPUX>; > > > > + }; > > > > + }; > > > > + > > > > + reserved-memory { > > > > + #address-cells =3D <2>; > > > > + #size-cells =3D <2>; > > > > + ranges; > > > > + > > > > + /* 512KiB reserved for ARM Trusted Firmware (BL31) */ > > > > + secmon_reserved: secmon@40000000 { > > > > + reg =3D <0x0 0x40000000 0x0 0x80000>; > > > > + no-map; > > > > + }; > > > > + }; =20 > > >=20 > > > I'm not a fan of above. If anything changes in future in BL31, U-Boot > > > would > > > need to reconfigure it anyway. Can we just skip it? =20 > >=20 > > I am not a fan neither, but last time I checked this is needed to boot. > > Indeed TF-A inserts this node, with the right values, into U-Boot's DT. > > And that's nicely preserved if you use that DT ($fdtcontroladdr) for > > the kernel as well. > > But if someone *loads* a DTB into U-Boot (to $fdt_addr_r), then > > U-Boot fails to propagate the /reserved-memory node into that copy. > > There does not seem to be a global notion of reserved memory in U-Boot. > > Some commands (like tftp) explicitly parse the control DT to find and > > respect reserved memory regions. bootm does that also, but only to > > avoid placing the ramdisk or DTB into reserved memory. The information > > ends up in images->lmb, but is not used to generate or amend nodes in > > the target DT. > > So the bits and pieces are there, but it will require some code to be > > added to the generic U-Boot code. > >=20 > > So what do you think? Leaving this out will prevent loading DTBs into > > U-Boot, at the moment, which sounds bad. I suggest we keep it in, for > > now, it should not really hurt. U-Boot will hopefully start to do the > > right thing soon, then we can either phase it out here (maybe when we > > actually change something in TF-A), or let U-Boot fix it. =20 >=20 > TBH, if "soon" is really soon, I would rather wait with H616 DT until U-B= oot=20 > supports carrying over reserved memory nodes. But this also carries compatibility issues. U-Boot support the H616 for more than a year now, and the earliest possible U-Boot release having that propagation code would be the one released in October. And then people would still need to update first, so that's quite some months out. And I was actually hoping to get at least the H616 DT patches off my plate, and get them into the tree to have a stable and agreed upon base (before this series turns into a teenager ;-) Then we could for instance update the U-Boot H616 support. > Whatever we do now, it will have=20 > compatibility issues. If we introduce reserved memory node now, we can't= =20 > easily drop it later. Bootloaders are not very often updated, but kernels= and=20 > DTB files are, at least in my experience. So when we decide to drop the n= ode? I think of the three possibilities: - Drop the node now, and ask people to not load DTBs explicitly - Drop the node when U-Boot learned to propagate the reservation - Keep the node the last one is the least painful: having this node in does not really hurt, so we can be very relaxed with this removal decision: - If U-Boot does not add the reserved node, we are covered. - If U-Boot adds the node, it will do so in a way where it deals with existing reservations. So either it doesn't actually change anything, or it extends the reservation. - Should the TF-A location actually move (and we have no plans or needs to do that), people would only get this by updating the firmware, at which point the U-Boot part would surely be in place already. We don't really support updating just BL31 in an existing binary firmware image, so you would get an updated U-Boot as well. I think the worst case scenario is that users end up with an unneeded 512K reservation. If they care, a firmware update should solve this problem. As for the time to remove that node: we could do that at the time when (or rather: if) we actually change the TF-A reservation. At the moment there are no plans to do this, and the size reservation is more than generous (the current debug build is actually 77 KB or so only). If there is no change, and the node stays in the .dtsi, it doesn't really hurt, see above. > After 10 years? Alternatively, reserved memory node can be just dropped a= nd=20 > anyone loading DTB file from outside would need to make sure it's patched= . But=20 > that's unexpected from user perspective, although patching DT files is do= ne by=20 > some distros. Yeah, let's not go there. As you know, I already dislike the idea of explicitly loading DTBs at all, but I understand this is what people, and distributions, do, so I'd rather have them covered. Hence the node to work with existing firmware. Does that make sense? Cheers, Andre 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 F0CA8C43334 for ; Mon, 4 Jul 2022 13:32:41 +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: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=699s7rhFSkpeXfJVHZPJv+1p94s6ndfGoalNlPADwUQ=; b=02pBsADMe9SFFV 03Ilc/2+qaKX45g8rkaov5C0gJbioepv7flowFrHypEG5Lm3BAdlAOtcRv3aSAHD4PjFWWqcjvDIP yW8r0RhatP0XhoI2p7ipRrdhIg9lPgWTQOiJOqROhH0N77ZfXM1oFxmLx9lZi9GcS3fAoxBcbf6ok K5DIDgDtu4ZEzqPlHFbBKLbOURhNvmz1hffZgd4fscLpPBwq/9QbYiueGMSDg+es0fyg6RD7O8jEA eo+6jVvHuLlHtXghz9SU63iH8UxQ9/z/IZvRFS+Dqb1mmmKYN1C4q/VwDUOi/6pYV+KTZDRYX1ByI hf8RWadWkHaYwhFTlLpg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o8MAk-009C7h-4j; Mon, 04 Jul 2022 13:31:30 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o8MAV-009Bzw-0t for linux-arm-kernel@lists.infradead.org; Mon, 04 Jul 2022 13:31:17 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9625F23A; Mon, 4 Jul 2022 06:31:11 -0700 (PDT) Received: from donnerap.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ED6363F66F; Mon, 4 Jul 2022 06:31:09 -0700 (PDT) Date: Mon, 4 Jul 2022 14:30:57 +0100 From: Andre Przywara To: Jernej =?UTF-8?B?xaBrcmFiZWM=?= Cc: Samuel Holland , Chen-Yu Tsai , Rob Herring , Krzysztof Kozlowski , Icenowy Zheng , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v11 3/6] arm64: dts: allwinner: Add Allwinner H616 .dtsi file Message-ID: <20220704143057.76163208@donnerap.cambridge.arm.com> In-Reply-To: <2985997.CbtlEUcBR6@jernej-laptop> References: <20220428230933.15262-1-andre.przywara@arm.com> <3165164.aeNJFYEL58@kista> <20220630010410.38fc117f@slackpad.lan> <2985997.CbtlEUcBR6@jernej-laptop> Organization: ARM X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.32; aarch64-unknown-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220704_063115_209049_4883C471 X-CRM114-Status: GOOD ( 61.04 ) 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 T24gU2F0LCAwMiBKdWwgMjAyMiAyMzoxNjo1MyArMDIwMApKZXJuZWogxaBrcmFiZWMgPGplcm5l ai5za3JhYmVjQGdtYWlsLmNvbT4gd3JvdGU6CgpIaSBKZXJuZWosCgo+IERuZSDEjWV0cnRlaywg MzAuIGp1bmlqIDIwMjIgb2IgMDI6MDQ6MTAgQ0VTVCBqZSBBbmRyZSBQcnp5d2FyYSBuYXBpc2Fs KGEpOgo+ID4gT24gVHVlLCAwMyBNYXkgMjAyMiAyMTowNToxMSArMDIwMAo+ID4gSmVybmVqIMWg a3JhYmVjIDxqZXJuZWouc2tyYWJlY0BnbWFpbC5jb20+IHdyb3RlOgo+ID4gCj4gPiBIaSBKZXJu ZWosCj4gPiAKPiA+IG1hbnkgdGhhbmtzIGZvciB0YWtpbmcgdGhlIHRpbWUgdG8gd2FkZSB0aHJv dWdoIHRoaXMgZmlsZSEKPiA+ICAgCj4gPiA+IERuZSBwZXRlaywgMjkuIGFwcmlsIDIwMjIgb2Ig MDE6MDk6MzAgQ0VTVCBqZSBBbmRyZSBQcnp5d2FyYSBuYXBpc2FsKGEpOiAgCj4gPiA+ID4gVGhp cyAocmVsYXRpdmVseSkgbmV3IFNvQyBpcyBzaW1pbGFyIHRvIHRoZSBINiwgYnV0IGRyb3BzIHRo ZSAoYnJva2VuKQo+ID4gPiA+IFBDSWUgc3VwcG9ydCBhbmQgdGhlIFVTQiAzLjAgY29udHJvbGxl ci4gSXQgYWxzbyBnZXRzIHRoZSBtYW5hZ2VtZW50Cj4gPiA+ID4gY29udHJvbGxlciByZW1vdmVk LCB3aGljaCBpbiB0dXJuIHJlbW92ZXMgKnNvbWUqLCBidXQgbm90IGFsbCBvZiB0aGUKPiA+ID4g PiBkZXZpY2VzIGZvcm1lcmx5IGRlZGljYXRlZCB0byB0aGUgQVJJU0MgKENQVVMpLgo+ID4gPiA+ IEFuZCB3aGlsZSB0aGVyZSBpcyBzdGlsbCB0aGUgZXh0cmEgc3VueGkgaW50ZXJydXB0IGNvbnRy b2xsZXIsIHRoZQo+ID4gPiA+IHBhY2thZ2UgbGFja3MgdGhlIGNvcnJlc3BvbmRpbmcgTk1JIHBp biwgc28gbm8gaW50ZXJydXB0cyBmb3IgdGhlIFBNSUMuCj4gPiA+ID4gCj4gPiA+ID4gVGhlIHJl c2VydmVkIG1lbW9yeSBub2RlIGlzIGFjdHVhbGx5IGhhbmRsZWQgYnkgVHJ1c3RlZCBGaXJtd2Fy ZSBub3csCj4gPiA+ID4gYnV0IFUtQm9vdCBmYWlscyB0byBwcm9wYWdhdGUgdGhpcyB0byBhIHNl cGFyYXRlbHkgbG9hZGVkIERUQiwgc28gd2UKPiA+ID4gPiBrZWVwIGl0IGluIGhlcmUgZm9yIG5v dywgdW50aWwgVS1Cb290IGxlYXJucyB0byBkbyB0aGlzIHByb3Blcmx5Lgo+ID4gPiA+IAo+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29t Pgo+ID4gPiA+IC0tLQo+ID4gPiA+IAo+ID4gPiA+ICAuLi4vYXJtNjQvYm9vdC9kdHMvYWxsd2lu bmVyL3N1bjUwaS1oNjE2LmR0c2kgfCA1NzQgKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gIDEg ZmlsZSBjaGFuZ2VkLCA1NzQgaW5zZXJ0aW9ucygrKQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5uZXIvc3VuNTBpLWg2MTYuZHRzaQo+ID4gPiA+ IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL2FsbHdpbm5lci9zdW41 MGktaDYxNi5kdHNpCj4gPiA+ID4gYi9hcmNoL2FybTY0LyAgCj4gPiA+IAo+ID4gPiBib290L2R0 cy9hbGx3aW5uZXIvc3VuNTBpLWg2MTYuZHRzaQo+ID4gPiAgIAo+ID4gPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5jYzA2Y2RkMTViYTUKPiA+ID4g PiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9hbGx3aW5u ZXIvc3VuNTBpLWg2MTYuZHRzaQo+ID4gPiA+IEBAIC0wLDAgKzEsNTc0IEBACj4gPiA+ID4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMCsgT1IgTUlUKQo+ID4gPiA+ICsvLyBD b3B5cmlnaHQgKEMpIDIwMjAgQXJtIEx0ZC4KPiA+ID4gPiArLy8gYmFzZWQgb24gdGhlIEg2IGR0 c2ksIHdoaWNoIGlzOgo+ID4gPiA+ICsvLyAgIENvcHlyaWdodCAoQykgMjAxNyBJY2Vub3d5IFpo ZW5nIDxpY2Vub3d5QGFvc2MuaW8+Cj4gPiA+ID4gKwo+ID4gPiA+ICsjaW5jbHVkZSA8ZHQtYmlu ZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLWdpYy5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8 ZHQtYmluZGluZ3MvY2xvY2svc3VuNTBpLWg2MTYtY2N1Lmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxk dC1iaW5kaW5ncy9jbG9jay9zdW41MGktaDYtci1jY3UuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGR0 LWJpbmRpbmdzL3Jlc2V0L3N1bjUwaS1oNjE2LWNjdS5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8ZHQt YmluZGluZ3MvcmVzZXQvc3VuNTBpLWg2LXItY2N1Lmg+Cj4gPiA+ID4gKwo+ID4gPiA+ICsvIHsK PiA+ID4gPiArCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47Cj4gPiA+ID4gKwkjYWRkcmVzcy1j ZWxscyA9IDwyPjsKPiA+ID4gPiArCSNzaXplLWNlbGxzID0gPDI+Owo+ID4gPiA+ICsKPiA+ID4g PiArCWNwdXMgewo+ID4gPiA+ICsJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gPiA+ICsJCSNz aXplLWNlbGxzID0gPDA+Owo+ID4gPiA+ICsKPiA+ID4gPiArCQljcHUwOiBjcHVAMCB7Cj4gPiA+ ID4gKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOwo+ID4gPiA+ICsJCQlkZXZpY2Vf dHlwZSA9ICJjcHUiOwo+ID4gPiA+ICsJCQlyZWcgPSA8MD47Cj4gPiA+ID4gKwkJCWVuYWJsZS1t ZXRob2QgPSAicHNjaSI7Cj4gPiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19DUFVYPjsKPiA+ ID4gPiArCQl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCQljcHUxOiBjcHVAMSB7Cj4gPiA+ID4gKwkJ CWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOwo+ID4gPiA+ICsJCQlkZXZpY2VfdHlwZSA9 ICJjcHUiOwo+ID4gPiA+ICsJCQlyZWcgPSA8MT47Cj4gPiA+ID4gKwkJCWVuYWJsZS1tZXRob2Qg PSAicHNjaSI7Cj4gPiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19DUFVYPjsKPiA+ID4gPiAr CQl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCQljcHUyOiBjcHVAMiB7Cj4gPiA+ID4gKwkJCWNvbXBh dGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOwo+ID4gPiA+ICsJCQlkZXZpY2VfdHlwZSA9ICJjcHUi Owo+ID4gPiA+ICsJCQlyZWcgPSA8Mj47Cj4gPiA+ID4gKwkJCWVuYWJsZS1tZXRob2QgPSAicHNj aSI7Cj4gPiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19DUFVYPjsKPiA+ID4gPiArCQl9Owo+ ID4gPiA+ICsKPiA+ID4gPiArCQljcHUzOiBjcHVAMyB7Cj4gPiA+ID4gKwkJCWNvbXBhdGlibGUg PSAiYXJtLGNvcnRleC1hNTMiOwo+ID4gPiA+ICsJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOwo+ID4g PiA+ICsJCQlyZWcgPSA8Mz47Cj4gPiA+ID4gKwkJCWVuYWJsZS1tZXRob2QgPSAicHNjaSI7Cj4g PiA+ID4gKwkJCWNsb2NrcyA9IDwmY2N1IENMS19DUFVYPjsKPiA+ID4gPiArCQl9Owo+ID4gPiA+ ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXNlcnZlZC1tZW1vcnkgewo+ID4gPiA+ICsJCSNh ZGRyZXNzLWNlbGxzID0gPDI+Owo+ID4gPiA+ICsJCSNzaXplLWNlbGxzID0gPDI+Owo+ID4gPiA+ ICsJCXJhbmdlczsKPiA+ID4gPiArCj4gPiA+ID4gKwkJLyogNTEyS2lCIHJlc2VydmVkIGZvciBB Uk0gVHJ1c3RlZCBGaXJtd2FyZSAoQkwzMSkgKi8KPiA+ID4gPiArCQlzZWNtb25fcmVzZXJ2ZWQ6 IHNlY21vbkA0MDAwMDAwMCB7Cj4gPiA+ID4gKwkJCXJlZyA9IDwweDAgMHg0MDAwMDAwMCAweDAg MHg4MDAwMD47Cj4gPiA+ID4gKwkJCW5vLW1hcDsKPiA+ID4gPiArCQl9Owo+ID4gPiA+ICsJfTsg IAo+ID4gPiAKPiA+ID4gSSdtIG5vdCBhIGZhbiBvZiBhYm92ZS4gSWYgYW55dGhpbmcgY2hhbmdl cyBpbiBmdXR1cmUgaW4gQkwzMSwgVS1Cb290Cj4gPiA+IHdvdWxkCj4gPiA+IG5lZWQgdG8gcmVj b25maWd1cmUgaXQgYW55d2F5LiBDYW4gd2UganVzdCBza2lwIGl0PyAgCj4gPiAKPiA+IEkgYW0g bm90IGEgZmFuIG5laXRoZXIsIGJ1dCBsYXN0IHRpbWUgSSBjaGVja2VkIHRoaXMgaXMgbmVlZGVk IHRvIGJvb3QuCj4gPiBJbmRlZWQgVEYtQSBpbnNlcnRzIHRoaXMgbm9kZSwgd2l0aCB0aGUgcmln aHQgdmFsdWVzLCBpbnRvIFUtQm9vdCdzIERULgo+ID4gQW5kIHRoYXQncyBuaWNlbHkgcHJlc2Vy dmVkIGlmIHlvdSB1c2UgdGhhdCBEVCAoJGZkdGNvbnRyb2xhZGRyKSBmb3IKPiA+IHRoZSBrZXJu ZWwgYXMgd2VsbC4KPiA+IEJ1dCBpZiBzb21lb25lICpsb2FkcyogYSBEVEIgaW50byBVLUJvb3Qg KHRvICRmZHRfYWRkcl9yKSwgdGhlbgo+ID4gVS1Cb290IGZhaWxzIHRvIHByb3BhZ2F0ZSB0aGUg L3Jlc2VydmVkLW1lbW9yeSBub2RlIGludG8gdGhhdCBjb3B5Lgo+ID4gVGhlcmUgZG9lcyBub3Qg c2VlbSB0byBiZSBhIGdsb2JhbCBub3Rpb24gb2YgcmVzZXJ2ZWQgbWVtb3J5IGluIFUtQm9vdC4K PiA+IFNvbWUgY29tbWFuZHMgKGxpa2UgdGZ0cCkgZXhwbGljaXRseSBwYXJzZSB0aGUgY29udHJv bCBEVCB0byBmaW5kIGFuZAo+ID4gcmVzcGVjdCByZXNlcnZlZCBtZW1vcnkgcmVnaW9ucy4gYm9v dG0gZG9lcyB0aGF0IGFsc28sIGJ1dCBvbmx5IHRvCj4gPiBhdm9pZCBwbGFjaW5nIHRoZSByYW1k aXNrIG9yIERUQiBpbnRvIHJlc2VydmVkIG1lbW9yeS4gVGhlIGluZm9ybWF0aW9uCj4gPiBlbmRz IHVwIGluIGltYWdlcy0+bG1iLCBidXQgaXMgbm90IHVzZWQgdG8gZ2VuZXJhdGUgb3IgYW1lbmQg bm9kZXMgaW4KPiA+IHRoZSB0YXJnZXQgRFQuCj4gPiBTbyB0aGUgYml0cyBhbmQgcGllY2VzIGFy ZSB0aGVyZSwgYnV0IGl0IHdpbGwgcmVxdWlyZSBzb21lIGNvZGUgdG8gYmUKPiA+IGFkZGVkIHRv IHRoZSBnZW5lcmljIFUtQm9vdCBjb2RlLgo+ID4gCj4gPiBTbyB3aGF0IGRvIHlvdSB0aGluaz8g TGVhdmluZyB0aGlzIG91dCB3aWxsIHByZXZlbnQgbG9hZGluZyBEVEJzIGludG8KPiA+IFUtQm9v dCwgYXQgdGhlIG1vbWVudCwgd2hpY2ggc291bmRzIGJhZC4gSSBzdWdnZXN0IHdlIGtlZXAgaXQg aW4sIGZvcgo+ID4gbm93LCBpdCBzaG91bGQgbm90IHJlYWxseSBodXJ0LiBVLUJvb3Qgd2lsbCBo b3BlZnVsbHkgc3RhcnQgdG8gZG8gdGhlCj4gPiByaWdodCB0aGluZyBzb29uLCB0aGVuIHdlIGNh biBlaXRoZXIgcGhhc2UgaXQgb3V0IGhlcmUgKG1heWJlIHdoZW4gd2UKPiA+IGFjdHVhbGx5IGNo YW5nZSBzb21ldGhpbmcgaW4gVEYtQSksIG9yIGxldCBVLUJvb3QgZml4IGl0LiAgCj4gCj4gVEJI LCBpZiAic29vbiIgaXMgcmVhbGx5IHNvb24sIEkgd291bGQgcmF0aGVyIHdhaXQgd2l0aCBINjE2 IERUIHVudGlsIFUtQm9vdCAKPiBzdXBwb3J0cyBjYXJyeWluZyBvdmVyIHJlc2VydmVkIG1lbW9y eSBub2Rlcy4KCkJ1dCB0aGlzIGFsc28gY2FycmllcyBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gVS1C b290IHN1cHBvcnQgdGhlIEg2MTYgZm9yCm1vcmUgdGhhbiBhIHllYXIgbm93LCBhbmQgdGhlIGVh cmxpZXN0IHBvc3NpYmxlIFUtQm9vdCByZWxlYXNlIGhhdmluZyB0aGF0CnByb3BhZ2F0aW9uIGNv ZGUgd291bGQgYmUgdGhlIG9uZSByZWxlYXNlZCBpbiBPY3RvYmVyLiBBbmQgdGhlbiBwZW9wbGUK d291bGQgc3RpbGwgbmVlZCB0byB1cGRhdGUgZmlyc3QsIHNvIHRoYXQncyBxdWl0ZSBzb21lIG1v bnRocyBvdXQuCkFuZCBJIHdhcyBhY3R1YWxseSBob3BpbmcgdG8gZ2V0IGF0IGxlYXN0IHRoZSBI NjE2IERUIHBhdGNoZXMgb2ZmIG15CnBsYXRlLCBhbmQgZ2V0IHRoZW0gaW50byB0aGUgdHJlZSB0 byBoYXZlIGEgc3RhYmxlIGFuZCBhZ3JlZWQgdXBvbiBiYXNlCihiZWZvcmUgdGhpcyBzZXJpZXMg dHVybnMgaW50byBhIHRlZW5hZ2VyIDstKQpUaGVuIHdlIGNvdWxkIGZvciBpbnN0YW5jZSB1cGRh dGUgdGhlIFUtQm9vdCBINjE2IHN1cHBvcnQuCgo+IFdoYXRldmVyIHdlIGRvIG5vdywgaXQgd2ls bCBoYXZlIAo+IGNvbXBhdGliaWxpdHkgaXNzdWVzLiBJZiB3ZSBpbnRyb2R1Y2UgcmVzZXJ2ZWQg bWVtb3J5IG5vZGUgbm93LCB3ZSBjYW4ndCAKPiBlYXNpbHkgZHJvcCBpdCBsYXRlci4gQm9vdGxv YWRlcnMgYXJlIG5vdCB2ZXJ5IG9mdGVuIHVwZGF0ZWQsIGJ1dCBrZXJuZWxzIGFuZCAKPiBEVEIg ZmlsZXMgYXJlLCBhdCBsZWFzdCBpbiBteSBleHBlcmllbmNlLiBTbyB3aGVuIHdlIGRlY2lkZSB0 byBkcm9wIHRoZSBub2RlPwoKSSB0aGluayBvZiB0aGUgdGhyZWUgcG9zc2liaWxpdGllczoKLSBE cm9wIHRoZSBub2RlIG5vdywgYW5kIGFzayBwZW9wbGUgdG8gbm90IGxvYWQgRFRCcyBleHBsaWNp dGx5Ci0gRHJvcCB0aGUgbm9kZSB3aGVuIFUtQm9vdCBsZWFybmVkIHRvIHByb3BhZ2F0ZSB0aGUg cmVzZXJ2YXRpb24KLSBLZWVwIHRoZSBub2RlCnRoZSBsYXN0IG9uZSBpcyB0aGUgbGVhc3QgcGFp bmZ1bDogaGF2aW5nIHRoaXMgbm9kZSBpbiBkb2VzIG5vdCByZWFsbHkKaHVydCwgc28gd2UgY2Fu IGJlIHZlcnkgcmVsYXhlZCB3aXRoIHRoaXMgcmVtb3ZhbCBkZWNpc2lvbjoKLSBJZiBVLUJvb3Qg ZG9lcyBub3QgYWRkIHRoZSByZXNlcnZlZCBub2RlLCB3ZSBhcmUgY292ZXJlZC4KLSBJZiBVLUJv b3QgYWRkcyB0aGUgbm9kZSwgaXQgd2lsbCBkbyBzbyBpbiBhIHdheSB3aGVyZSBpdCBkZWFscyB3 aXRoCmV4aXN0aW5nIHJlc2VydmF0aW9ucy4gU28gZWl0aGVyIGl0IGRvZXNuJ3QgYWN0dWFsbHkg Y2hhbmdlIGFueXRoaW5nLCBvcgppdCBleHRlbmRzIHRoZSByZXNlcnZhdGlvbi4KLSBTaG91bGQg dGhlIFRGLUEgbG9jYXRpb24gYWN0dWFsbHkgbW92ZSAoYW5kIHdlIGhhdmUgbm8gcGxhbnMgb3Ig bmVlZHMgdG8KZG8gdGhhdCksIHBlb3BsZSB3b3VsZCBvbmx5IGdldCB0aGlzIGJ5IHVwZGF0aW5n IHRoZSBmaXJtd2FyZSwgYXQgd2hpY2gKcG9pbnQgdGhlIFUtQm9vdCBwYXJ0IHdvdWxkIHN1cmVs eSBiZSBpbiBwbGFjZSBhbHJlYWR5LiBXZSBkb24ndCByZWFsbHkKc3VwcG9ydCB1cGRhdGluZyBq dXN0IEJMMzEgaW4gYW4gZXhpc3RpbmcgYmluYXJ5IGZpcm13YXJlIGltYWdlLCBzbyB5b3UKd291 bGQgZ2V0IGFuIHVwZGF0ZWQgVS1Cb290IGFzIHdlbGwuCgpJIHRoaW5rIHRoZSB3b3JzdCBjYXNl IHNjZW5hcmlvIGlzIHRoYXQgdXNlcnMgZW5kIHVwIHdpdGggYW4gdW5uZWVkZWQgNTEySwpyZXNl cnZhdGlvbi4gSWYgdGhleSBjYXJlLCBhIGZpcm13YXJlIHVwZGF0ZSBzaG91bGQgc29sdmUgdGhp cyBwcm9ibGVtLgoKQXMgZm9yIHRoZSB0aW1lIHRvIHJlbW92ZSB0aGF0IG5vZGU6IHdlIGNvdWxk IGRvIHRoYXQgYXQgdGhlIHRpbWUgd2hlbgoob3IgcmF0aGVyOiBpZikgd2UgYWN0dWFsbHkgY2hh bmdlIHRoZSBURi1BIHJlc2VydmF0aW9uLiBBdCB0aGUgbW9tZW50CnRoZXJlIGFyZSBubyBwbGFu cyB0byBkbyB0aGlzLCBhbmQgdGhlIHNpemUgcmVzZXJ2YXRpb24gaXMgbW9yZSB0aGFuCmdlbmVy b3VzICh0aGUgY3VycmVudCBkZWJ1ZyBidWlsZCBpcyBhY3R1YWxseSA3NyBLQiBvciBzbyBvbmx5 KS4gSWYgdGhlcmUKaXMgbm8gY2hhbmdlLCBhbmQgdGhlIG5vZGUgc3RheXMgaW4gdGhlIC5kdHNp LCBpdCBkb2Vzbid0IHJlYWxseSBodXJ0LCBzZWUKYWJvdmUuCgo+IEFmdGVyIDEwIHllYXJzPyBB bHRlcm5hdGl2ZWx5LCByZXNlcnZlZCBtZW1vcnkgbm9kZSBjYW4gYmUganVzdCBkcm9wcGVkIGFu ZCAKPiBhbnlvbmUgbG9hZGluZyBEVEIgZmlsZSBmcm9tIG91dHNpZGUgd291bGQgbmVlZCB0byBt YWtlIHN1cmUgaXQncyBwYXRjaGVkLiBCdXQgCj4gdGhhdCdzIHVuZXhwZWN0ZWQgZnJvbSB1c2Vy IHBlcnNwZWN0aXZlLCBhbHRob3VnaCBwYXRjaGluZyBEVCBmaWxlcyBpcyBkb25lIGJ5IAo+IHNv bWUgZGlzdHJvcy4KClllYWgsIGxldCdzIG5vdCBnbyB0aGVyZS4gQXMgeW91IGtub3csIEkgYWxy ZWFkeSBkaXNsaWtlIHRoZSBpZGVhIG9mCmV4cGxpY2l0bHkgbG9hZGluZyBEVEJzIGF0IGFsbCwg YnV0IEkgdW5kZXJzdGFuZCB0aGlzIGlzIHdoYXQgcGVvcGxlLCBhbmQKZGlzdHJpYnV0aW9ucywg ZG8sIHNvIEknZCByYXRoZXIgaGF2ZSB0aGVtIGNvdmVyZWQuIEhlbmNlIHRoZSBub2RlIHRvCndv cmsgd2l0aCBleGlzdGluZyBmaXJtd2FyZS4KCkRvZXMgdGhhdCBtYWtlIHNlbnNlPwoKQ2hlZXJz LApBbmRyZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=