From mboxrd@z Thu Jan 1 00:00:00 1970 From: dave.martin@linaro.org (Dave Martin) Date: Wed, 21 Sep 2011 15:24:25 +0100 Subject: [PATCH] ARM: vexpress: initial device tree support In-Reply-To: <4E79E588.6010703@gmail.com> References: <1316596786-2539-1-git-send-email-dave.martin@linaro.org> <4E79E588.6010703@gmail.com> Message-ID: <20110921142425.GE2872@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Sep 21, 2011 at 08:24:24AM -0500, Rob Herring wrote: > Dave, > > On 09/21/2011 04:19 AM, Dave Martin wrote: > > This patch implements initial support for booting using a flattened > > device tree on the Versatile Express platform. > > > > Eventually, it should be possible to present a single, core-tile- > > independent board, but in this transitional patch the baseboard + > > Cortex-A9x4 core tile combination is the only directly supported > > platform, since the implementation is not yet fully generic. > > > > For now, clocks and timers are not handled via the device tree. > > Implementation of these can follow in later patches. > > > > Thanks to Lorenzo Pieralisi, Grant Likely and Pawe? Moll for their > > help and contributions. > > > > Signed-off-by: Dave Martin > > Acked-by: Pawe? Moll > > --- > > > > There are some outstanding issues which need to be discussed, listed > > below. > > > > * This patch is not currently based on the GIC bindings being > > discussed by Rob Herring et al. Once that discussion reaches a > > conclusion, it should be straightforward to rebase onto the result. > > > > * The following added bindings are not present upstream and need > > documentation / discussion: > > > > * arm,vexpress -- the global board binding for all platform > > combinations using the Versatile Express motherboard. > > > > * arm,vexpress-v2p-ca9 -- the specific binding for the Versatile > > Express motherboard with Cortex-A9x4 core tile installed. It > > is only mentioned as the most-specific match in vexpress-v2p- > > ca9.dts > > > > Since it's intended that the motherboard code should be fully > > generic, and because no other core tiles are upstream yet, > > perhaps we can get rid of this binding right away. > > > > * edid -- It should be possible to have a fairly generic binding > > for EDID interfaces, but none seems to exist yet. Discussion > > is needed regarding what form this should take. > > > > This might more appropriately be called "ddc" (or some > > variation on that), since EDID seems only to describe the > > format of the ID data retrievable via this interface; not the > > interface itself. > > > > * arm,vexpress-flash -- Needed because of the requirement to > > provide the physmap_flash driver with a special .set_vpp > > handler. > > > > * idt,89hpes32h8 -- This is the IDT 89HPES32H8 PCI express > > interconnect switch. This isn't needed for the Versatile > > Express to work, but would be needed if using PCI-e peripherals > > for real. I expect that more driver support needs to go > > upstream before this is actually usable. > > > > * nxp,isp1761 -- The driver support for this is already upstream > > (with some minor issues for ARM support). > > > > * arm,amba-bus -- widely used by other boards and patchsets, but > > seems not to be documented. > > > > This should be dropped. There's not really any bus component to an amba > bus. All the probing info is within the primecell peripherals. So, just use "simple-bus"? > > * The following bindings for ARM primecell peripherals are used > > elsewhere but not documented. They should be pretty simple and > > uncontraversial. > > * arm,pl031 > > * arm,pl041 > > * arm,pl050 > > * arm,pl180 > > * arm,sp805 > > > > Plus pl011, pl010, sp804, pl022, pl061 It looks like I missed pl011 and sp804 (though I don't currently declare the timers in the device tree because of the way they are initialised). > > Rob Herring suggested documenting simple bindings for these > > (and others) along with his initial amba device tree probe > > patches, but these bindings don't seem to be documented > > upstream for now. > > > > pl330 went the other route with a file for itself. That may be better to > avoid conflicts. But yes, ARM should document all their peripherals. ;) > > I'll do the ones on highbank if you want to do the rest on VExp. OK, I'll try to propose documentation for these: * arm,pl011 * arm,pl031 * arm,pl041 * arm,pl050 * arm,pl180 * arm,sp804 * arm,sp805 ...if you can pick the other ones that are relevant to highbank -- thanks. > > > > > * Shawn Guo's smsc911x patch is needed for Ethernet to work. This is > > headed upstream but not yet in mainline. It is available in -next. > > > > * Minor patches are needed to the isp1760 and pata_generic drivers, > > to allow OF-based initialisation across a wider group of > > architectures. These are being discussed independently, but are > > not yet accepted for merging upstream. > > > > * Most core-tile peripherals are currently not described in the core- > > tile device tree fragment. This is a lower-priority issue since > > the motherboard code already autodetects the core-tile (though only > > one core-tile is fully upstream at the moment). > > > > * Static peripheral mappings are not yet handled in a generic way in > > the board support code. This is a prerequisite for supporting > > multiple core-tiles int the same kernel. It well need to get fixed > > later, when extra core tile support is merged (or before). > > > > Pawe? Moll is looking into this separately. > > > > * The Kconfig logic for ensuring that at least one boot protocol and > > at least one core tile are selected is a bit ugly. Suggestions for > > improving this are certainly welcome. > > > > arch/arm/Kconfig | 1 + > > arch/arm/boot/dts/vexpress-v2m-legacy.dtsi | 163 ++++++++++++++++++++++++++++ > > arch/arm/boot/dts/vexpress-v2p-ca9.dts | 80 ++++++++++++++ > > arch/arm/configs/vexpress_defconfig | 1 + > > arch/arm/mach-vexpress/Kconfig | 45 ++++++++- > > arch/arm/mach-vexpress/ct-ca9x4.c | 7 ++ > > arch/arm/mach-vexpress/v2m.c | 54 +++++++++- > > 7 files changed, 349 insertions(+), 2 deletions(-) > > create mode 100644 arch/arm/boot/dts/vexpress-v2m-legacy.dtsi > > create mode 100644 arch/arm/boot/dts/vexpress-v2p-ca9.dts > > > > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > > index 5ebc5d9..a6e90d5 100644 > > --- a/arch/arm/Kconfig > > +++ b/arch/arm/Kconfig > > @@ -282,6 +282,7 @@ config ARCH_VERSATILE > > > > config ARCH_VEXPRESS > > bool "ARM Ltd. Versatile Express family" > > + select ARCH_VEXPRESS_SANE_CONFIG > > select ARCH_WANT_OPTIONAL_GPIOLIB > > select ARM_AMBA > > select ARM_TIMER_SP804 > > diff --git a/arch/arm/boot/dts/vexpress-v2m-legacy.dtsi b/arch/arm/boot/dts/vexpress-v2m-legacy.dtsi > > new file mode 100644 > > index 0000000..fd6e4e4 > > --- /dev/null > > +++ b/arch/arm/boot/dts/vexpress-v2m-legacy.dtsi > > @@ -0,0 +1,163 @@ > > +// ARM Ltd. Versatile Express Motherboard V2M-P1 (HBI-0190D) > > +// Legacy memory map > > Not sure, but C++ style comments are probably frowned upon in dts too. > > > + > > +/ { > > + aliases { > > + serial0 = &uart0; > > + serial1 = &uart1; > > + serial2 = &uart2; > > + serial3 = &uart3; > > + i2c0 = &i2c0; > > + i2c1 = &i2c1; > > + }; > > + > > + motherboard { > > + compatible = "simple-bus"; > > + #address-cells = <2>; // SMB chipselect number and offset > > + #size-cells = <1>; > > + #interrupt-cells = <1>; > > + > > + flash at 0,00000000 { > > + compatible = "arm,vexpress-flash", "cfi-flash"; > > + reg = <0 0x00000000 0x04000000 > > + 1 0x00000000 0x04000000>; > > + bank-width = <4>; > > + }; > > + > > + psram at 2,00000000 { > > + compatible = "mtd-ram"; > > + reg = <2 0x00000000 0x02000000>; > > + bank-width = <4>; > > + }; > > + > > + ethernet at 3,02000000 { > > + compatible = "smsc,lan9118", "smsc,lan9115"; > > + reg = <3 0x02000000 0x10000>; > > + reg-io-width = <4>; > > + interrupts = <15>; > > + smsc,irq-active-high; > > + smsc,irq-push-pull; > > + }; > > + > > + usb at 3,03000000 { > > + compatible = "nxp,usb-isp1761"; > > + reg = <3 0x03000000 0x20000>; > > + interrupts = <16>; > > + port1-otg; > > + }; > > + > > + peripherals at 7,00000000 { > > + compatible = "arm,amba-bus", "simple-bus"; > > + #address-cells = <1>; > > + #size-cells = <1>; > > + ranges = <0 7 0 0x20000>; > > + > > + // PCI-E I2C bus > > + i2c0: i2c at 02000 { > > + compatible = "arm,versatile-i2c"; > > + reg = <0x02000 0x1000>; > > + > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + pcie-switch at 60 { > > + compatible = "idt,89hpes32h8"; > > + reg = <0x60>; > > + }; > > + }; > > + > > + aaci at 04000 { > > + compatible = "arm,pl041", "arm,primecell"; > > + reg = <0x04000 0x1000>; > > + interrupts = <11>; > > + }; > > + > > + mmci at 05000 { > > + compatible = "arm,pl180", "arm,primecell"; > > + reg = <0x05000 0x1000>; > > + interrupts = <9 10>; > > + }; > > + > > + kmi at 06000 { > > + compatible = "arm,pl050", "arm,primecell"; > > + reg = <0x06000 0x1000>; > > + interrupts = <12>; > > + }; > > + > > + kmi at 07000 { > > + compatible = "arm,pl050", "arm,primecell"; > > + reg = <0x07000 0x1000>; > > + interrupts = <13>; > > + }; > > + > > + uart0: uart at 09000 { > > + compatible = "arm,pl011", "arm,primecell"; > > + reg = <0x09000 0x1000>; > > + interrupts = <5>; > > + }; > > + > > + uart1: uart at 0a000 { > > + compatible = "arm,pl011", "arm,primecell"; > > + reg = <0x0a000 0x1000>; > > + interrupts = <6>; > > + }; > > + > > + uart2: uart at 0b000 { > > + compatible = "arm,pl011", "arm,primecell"; > > + reg = <0x0b000 0x1000>; > > + interrupts = <7>; > > + }; > > + > > + uart3: uart at 0c000 { > > + compatible = "arm,pl011", "arm,primecell"; > > + reg = <0x0c000 0x1000>; > > + interrupts = <8>; > > + }; > > + > > + wdt at 0f000 { > > + compatible = "arm,sp805", "arm,primecell"; > > + reg = <0x0f000 0x1000>; > > + interrupts = <0>; > > + }; > > + > > + // Timer init is hardcoded in v2m_timer_init(), for now. > > + // timer at 11000 { > > + // compatible = "arm,arm-sp804"; > > arm,sp804 is more consistent. I believe the sp804 does have the periphid > registers, so arm,primecell should also be added. Do you mean "does not have"? If so, the periphid will be needed -- thanks for pointing it out in that case. I will make the names consistent. These were pasted from someone Lorenzo's older patches, and failed to sport e the inconsistency since I wasn't actually making use of these entries yet. > > + // reg = <0x11000 0x1000>; > > + // interrupts = <2>; > > + // }; > > + > > + // timer at 12000 { > > + // compatible = "arm,arm-sp804"; > > + // reg = <0x12000 0x1000>; > > + // }; > > Just because Linux is not using it, doesn't mean you should comment it out. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Martin Subject: Re: [PATCH] ARM: vexpress: initial device tree support Date: Wed, 21 Sep 2011 15:24:25 +0100 Message-ID: <20110921142425.GE2872@arm.com> References: <1316596786-2539-1-git-send-email-dave.martin@linaro.org> <4E79E588.6010703@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <4E79E588.6010703-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org To: Rob Herring Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, Rob Herring , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, =?utf-8?B?UGF3ZcWC?= Moll , patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org List-Id: devicetree@vger.kernel.org T24gV2VkLCBTZXAgMjEsIDIwMTEgYXQgMDg6MjQ6MjRBTSAtMDUwMCwgUm9iIEhlcnJpbmcgd3Jv dGU6Cj4gRGF2ZSwKPiAKPiBPbiAwOS8yMS8yMDExIDA0OjE5IEFNLCBEYXZlIE1hcnRpbiB3cm90 ZToKPiA+IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpbml0aWFsIHN1cHBvcnQgZm9yIGJvb3Rpbmcg dXNpbmcgYSBmbGF0dGVuZWQKPiA+IGRldmljZSB0cmVlIG9uIHRoZSBWZXJzYXRpbGUgRXhwcmVz cyBwbGF0Zm9ybS4KPiA+IAo+ID4gRXZlbnR1YWxseSwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRv IHByZXNlbnQgYSBzaW5nbGUsIGNvcmUtdGlsZS0KPiA+IGluZGVwZW5kZW50IGJvYXJkLCBidXQg aW4gdGhpcyB0cmFuc2l0aW9uYWwgcGF0Y2ggdGhlIGJhc2Vib2FyZCArCj4gPiBDb3J0ZXgtQTl4 NCBjb3JlIHRpbGUgY29tYmluYXRpb24gaXMgdGhlIG9ubHkgZGlyZWN0bHkgc3VwcG9ydGVkCj4g PiBwbGF0Zm9ybSwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdCB5ZXQgZnVsbHkgZ2Vu ZXJpYy4KPiA+IAo+ID4gRm9yIG5vdywgY2xvY2tzIGFuZCB0aW1lcnMgYXJlIG5vdCBoYW5kbGVk IHZpYSB0aGUgZGV2aWNlIHRyZWUuCj4gPiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSBjYW4gZm9s bG93IGluIGxhdGVyIHBhdGNoZXMuCj4gPiAKPiA+IFRoYW5rcyB0byBMb3JlbnpvIFBpZXJhbGlz aSwgR3JhbnQgTGlrZWx5IGFuZCBQYXdlxYIgTW9sbCBmb3IgdGhlaXIKPiA+IGhlbHAgYW5kIGNv bnRyaWJ1dGlvbnMuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IERhdmUgTWFydGluIDxkYXZlLm1h cnRpbkBsaW5hcm8ub3JnPgo+ID4gQWNrZWQtYnk6IFBhd2XFgiBNb2xsIDxQYXdlbC5Nb2xsQGFy bS5jb20+Cj4gPiAtLS0KPiA+IAo+ID4gVGhlcmUgYXJlIHNvbWUgb3V0c3RhbmRpbmcgaXNzdWVz IHdoaWNoIG5lZWQgdG8gYmUgZGlzY3Vzc2VkLCBsaXN0ZWQKPiA+IGJlbG93Lgo+ID4gCj4gPiAg ICogVGhpcyBwYXRjaCBpcyBub3QgY3VycmVudGx5IGJhc2VkIG9uIHRoZSBHSUMgYmluZGluZ3Mg YmVpbmcKPiA+ICAgICBkaXNjdXNzZWQgYnkgUm9iIEhlcnJpbmcgZXQgYWwuICBPbmNlIHRoYXQg ZGlzY3Vzc2lvbiByZWFjaGVzIGEKPiA+ICAgICBjb25jbHVzaW9uLCBpdCBzaG91bGQgYmUgc3Ry YWlnaHRmb3J3YXJkIHRvIHJlYmFzZSBvbnRvIHRoZSByZXN1bHQuCj4gPiAKPiA+ICAgKiBUaGUg Zm9sbG93aW5nIGFkZGVkIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudCB1cHN0cmVhbSBhbmQgbmVl ZAo+ID4gICAgIGRvY3VtZW50YXRpb24gLyBkaXNjdXNzaW9uOgo+ID4gCj4gPiAgICAgICAqIGFy bSx2ZXhwcmVzcyAtLSB0aGUgZ2xvYmFsIGJvYXJkIGJpbmRpbmcgZm9yIGFsbCBwbGF0Zm9ybQo+ ID4gICAgICAgICBjb21iaW5hdGlvbnMgdXNpbmcgdGhlIFZlcnNhdGlsZSBFeHByZXNzIG1vdGhl cmJvYXJkLgo+ID4gCj4gPiAgICAgICAqIGFybSx2ZXhwcmVzcy12MnAtY2E5IC0tIHRoZSBzcGVj aWZpYyBiaW5kaW5nIGZvciB0aGUgVmVyc2F0aWxlCj4gPiAgICAgICAgIEV4cHJlc3MgbW90aGVy Ym9hcmQgd2l0aCBDb3J0ZXgtQTl4NCBjb3JlIHRpbGUgaW5zdGFsbGVkLiAgSXQKPiA+ICAgICAg ICAgaXMgb25seSBtZW50aW9uZWQgYXMgdGhlIG1vc3Qtc3BlY2lmaWMgbWF0Y2ggaW4gdmV4cHJl c3MtdjJwLQo+ID4gICAgICAgICBjYTkuZHRzCj4gPiAKPiA+ICAgICAgICAgU2luY2UgaXQncyBp bnRlbmRlZCB0aGF0IHRoZSBtb3RoZXJib2FyZCBjb2RlIHNob3VsZCBiZSBmdWxseQo+ID4gICAg ICAgICBnZW5lcmljLCBhbmQgYmVjYXVzZSBubyBvdGhlciBjb3JlIHRpbGVzIGFyZSB1cHN0cmVh bSB5ZXQsCj4gPiAgICAgICAgIHBlcmhhcHMgd2UgY2FuIGdldCByaWQgb2YgdGhpcyBiaW5kaW5n IHJpZ2h0IGF3YXkuCj4gPiAKPiA+ICAgICAgICogZWRpZCAtLSBJdCBzaG91bGQgYmUgcG9zc2li bGUgdG8gaGF2ZSBhIGZhaXJseSBnZW5lcmljIGJpbmRpbmcKPiA+ICAgICAgICAgZm9yIEVESUQg aW50ZXJmYWNlcywgYnV0IG5vbmUgc2VlbXMgdG8gZXhpc3QgeWV0LiAgRGlzY3Vzc2lvbgo+ID4g ICAgICAgICBpcyBuZWVkZWQgcmVnYXJkaW5nIHdoYXQgZm9ybSB0aGlzIHNob3VsZCB0YWtlLgo+ ID4gCj4gPiAgICAgICAgIFRoaXMgbWlnaHQgbW9yZSBhcHByb3ByaWF0ZWx5IGJlIGNhbGxlZCAi ZGRjIiAob3Igc29tZQo+ID4gICAgICAgICB2YXJpYXRpb24gb24gdGhhdCksIHNpbmNlIEVESUQg c2VlbXMgb25seSB0byBkZXNjcmliZSB0aGUKPiA+ICAgICAgICAgZm9ybWF0IG9mIHRoZSBJRCBk YXRhIHJldHJpZXZhYmxlIHZpYSB0aGlzIGludGVyZmFjZTsgbm90IHRoZQo+ID4gICAgICAgICBp bnRlcmZhY2UgaXRzZWxmLgo+ID4gCj4gPiAgICAgICAqIGFybSx2ZXhwcmVzcy1mbGFzaCAtLSBO ZWVkZWQgYmVjYXVzZSBvZiB0aGUgcmVxdWlyZW1lbnQgdG8KPiA+ICAgICAgICAgcHJvdmlkZSB0 aGUgcGh5c21hcF9mbGFzaCBkcml2ZXIgd2l0aCBhIHNwZWNpYWwgLnNldF92cHAKPiA+ICAgICAg ICAgaGFuZGxlci4KPiA+IAo+ID4gICAgICAgKiBpZHQsODlocGVzMzJoOCAtLSBUaGlzIGlzIHRo ZSBJRFQgODlIUEVTMzJIOCBQQ0kgZXhwcmVzcwo+ID4gICAgICAgICBpbnRlcmNvbm5lY3Qgc3dp dGNoLiAgVGhpcyBpc24ndCBuZWVkZWQgZm9yIHRoZSBWZXJzYXRpbGUKPiA+ICAgICAgICAgRXhw cmVzcyB0byB3b3JrLCBidXQgd291bGQgYmUgbmVlZGVkIGlmIHVzaW5nIFBDSS1lIHBlcmlwaGVy YWxzCj4gPiAgICAgICAgIGZvciByZWFsLiAgSSBleHBlY3QgdGhhdCBtb3JlIGRyaXZlciBzdXBw b3J0IG5lZWRzIHRvIGdvCj4gPiAgICAgICAgIHVwc3RyZWFtIGJlZm9yZSB0aGlzIGlzIGFjdHVh bGx5IHVzYWJsZS4KPiA+IAo+ID4gICAgICAgKiBueHAsaXNwMTc2MSAtLSBUaGUgZHJpdmVyIHN1 cHBvcnQgZm9yIHRoaXMgaXMgYWxyZWFkeSB1cHN0cmVhbQo+ID4gICAgICAgICAod2l0aCBzb21l IG1pbm9yIGlzc3VlcyBmb3IgQVJNIHN1cHBvcnQpLgo+ID4gCj4gPiAgICAgICAqIGFybSxhbWJh LWJ1cyAtLSB3aWRlbHkgdXNlZCBieSBvdGhlciBib2FyZHMgYW5kIHBhdGNoc2V0cywgYnV0Cj4g PiAgICAgICAgIHNlZW1zIG5vdCB0byBiZSBkb2N1bWVudGVkLgo+ID4gCj4gCj4gVGhpcyBzaG91 bGQgYmUgZHJvcHBlZC4gVGhlcmUncyBub3QgcmVhbGx5IGFueSBidXMgY29tcG9uZW50IHRvIGFu IGFtYmEKPiBidXMuIEFsbCB0aGUgcHJvYmluZyBpbmZvIGlzIHdpdGhpbiB0aGUgcHJpbWVjZWxs IHBlcmlwaGVyYWxzLgoKU28sIGp1c3QgdXNlICJzaW1wbGUtYnVzIj8KCj4gPiAgICAgICAqIFRo ZSBmb2xsb3dpbmcgYmluZGluZ3MgZm9yIEFSTSBwcmltZWNlbGwgcGVyaXBoZXJhbHMgYXJlIHVz ZWQKPiA+ICAgICAgICAgZWxzZXdoZXJlIGJ1dCBub3QgZG9jdW1lbnRlZC4gIFRoZXkgc2hvdWxk IGJlIHByZXR0eSBzaW1wbGUgYW5kCj4gPiAgICAgICAgIHVuY29udHJhdmVyc2lhbC4KPiA+ICAg ICAgICAgICAqIGFybSxwbDAzMQo+ID4gICAgICAgICAgICogYXJtLHBsMDQxCj4gPiAgICAgICAg ICAgKiBhcm0scGwwNTAKPiA+ICAgICAgICAgICAqIGFybSxwbDE4MAo+ID4gICAgICAgICAgICog YXJtLHNwODA1Cj4gPiAKPiAKPiBQbHVzIHBsMDExLCBwbDAxMCwgc3A4MDQsIHBsMDIyLCBwbDA2 MQoKSXQgbG9va3MgbGlrZSBJIG1pc3NlZCBwbDAxMSBhbmQgc3A4MDQgKHRob3VnaCBJIGRvbid0 IGN1cnJlbnRseSBkZWNsYXJlCnRoZSB0aW1lcnMgaW4gdGhlIGRldmljZSB0cmVlIGJlY2F1c2Ug b2YgdGhlIHdheSB0aGV5IGFyZSBpbml0aWFsaXNlZCkuCgo+ID4gICAgICAgICBSb2IgSGVycmlu ZyBzdWdnZXN0ZWQgZG9jdW1lbnRpbmcgc2ltcGxlIGJpbmRpbmdzIGZvciB0aGVzZQo+ID4gICAg ICAgICAoYW5kIG90aGVycykgYWxvbmcgd2l0aCBoaXMgaW5pdGlhbCBhbWJhIGRldmljZSB0cmVl IHByb2JlCj4gPiAgICAgICAgIHBhdGNoZXMsIGJ1dCB0aGVzZSBiaW5kaW5ncyBkb24ndCBzZWVt IHRvIGJlIGRvY3VtZW50ZWQKPiA+ICAgICAgICAgdXBzdHJlYW0gZm9yIG5vdy4KPiA+IAo+IAo+ IHBsMzMwIHdlbnQgdGhlIG90aGVyIHJvdXRlIHdpdGggYSBmaWxlIGZvciBpdHNlbGYuIFRoYXQg bWF5IGJlIGJldHRlciB0bwo+IGF2b2lkIGNvbmZsaWN0cy4gQnV0IHllcywgQVJNIHNob3VsZCBk b2N1bWVudCBhbGwgdGhlaXIgcGVyaXBoZXJhbHMuIDspCj4gCj4gSSdsbCBkbyB0aGUgb25lcyBv biBoaWdoYmFuayBpZiB5b3Ugd2FudCB0byBkbyB0aGUgcmVzdCBvbiBWRXhwLgoKT0ssIEknbGwg dHJ5IHRvIHByb3Bvc2UgZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2U6CgoJKiBhcm0scGwwMTEKCSog YXJtLHBsMDMxCgkqIGFybSxwbDA0MQoJKiBhcm0scGwwNTAKCSogYXJtLHBsMTgwCgkqIGFybSxz cDgwNAoJKiBhcm0sc3A4MDUKCi4uLmlmIHlvdSBjYW4gcGljayB0aGUgb3RoZXIgb25lcyB0aGF0 IGFyZSByZWxldmFudCB0byBoaWdoYmFuayAtLSB0aGFua3MuCgo+IAo+ID4gCj4gPiAgICogU2hh d24gR3VvJ3Mgc21zYzkxMXggcGF0Y2ggaXMgbmVlZGVkIGZvciBFdGhlcm5ldCB0byB3b3JrLiAg VGhpcyBpcwo+ID4gICAgIGhlYWRlZCB1cHN0cmVhbSBidXQgbm90IHlldCBpbiBtYWlubGluZS4g IEl0IGlzIGF2YWlsYWJsZSBpbiAtbmV4dC4KPiA+IAo+ID4gICAqIE1pbm9yIHBhdGNoZXMgYXJl IG5lZWRlZCB0byB0aGUgaXNwMTc2MCBhbmQgcGF0YV9nZW5lcmljIGRyaXZlcnMsCj4gPiAgICAg dG8gYWxsb3cgT0YtYmFzZWQgaW5pdGlhbGlzYXRpb24gYWNyb3NzIGEgd2lkZXIgZ3JvdXAgb2YK PiA+ICAgICBhcmNoaXRlY3R1cmVzLiAgVGhlc2UgYXJlIGJlaW5nIGRpc2N1c3NlZCBpbmRlcGVu ZGVudGx5LCBidXQgYXJlCj4gPiAgICAgbm90IHlldCBhY2NlcHRlZCBmb3IgbWVyZ2luZyB1cHN0 cmVhbS4KPiA+IAo+ID4gICAqIE1vc3QgY29yZS10aWxlIHBlcmlwaGVyYWxzIGFyZSBjdXJyZW50 bHkgbm90IGRlc2NyaWJlZCBpbiB0aGUgY29yZS0KPiA+ICAgICB0aWxlIGRldmljZSB0cmVlIGZy YWdtZW50LiAgVGhpcyBpcyBhIGxvd2VyLXByaW9yaXR5IGlzc3VlIHNpbmNlCj4gPiAgICAgdGhl IG1vdGhlcmJvYXJkIGNvZGUgYWxyZWFkeSBhdXRvZGV0ZWN0cyB0aGUgY29yZS10aWxlICh0aG91 Z2ggb25seQo+ID4gICAgIG9uZSBjb3JlLXRpbGUgaXMgZnVsbHkgdXBzdHJlYW0gYXQgdGhlIG1v bWVudCkuCj4gPiAKPiA+ICAgKiBTdGF0aWMgcGVyaXBoZXJhbCBtYXBwaW5ncyBhcmUgbm90IHll dCBoYW5kbGVkIGluIGEgZ2VuZXJpYyB3YXkgaW4KPiA+ICAgICB0aGUgYm9hcmQgc3VwcG9ydCBj b2RlLiAgVGhpcyBpcyBhIHByZXJlcXVpc2l0ZSBmb3Igc3VwcG9ydGluZwo+ID4gICAgIG11bHRp cGxlIGNvcmUtdGlsZXMgaW50IHRoZSBzYW1lIGtlcm5lbC4gIEl0IHdlbGwgbmVlZCB0byBnZXQg Zml4ZWQKPiA+ICAgICBsYXRlciwgd2hlbiBleHRyYSBjb3JlIHRpbGUgc3VwcG9ydCBpcyBtZXJn ZWQgKG9yIGJlZm9yZSkuCj4gPiAKPiA+ICAgICBQYXdlxYIgTW9sbCBpcyBsb29raW5nIGludG8g dGhpcyBzZXBhcmF0ZWx5Lgo+ID4gCj4gPiAgICogVGhlIEtjb25maWcgbG9naWMgZm9yIGVuc3Vy aW5nIHRoYXQgYXQgbGVhc3Qgb25lIGJvb3QgcHJvdG9jb2wgYW5kCj4gPiAgICAgYXQgbGVhc3Qg b25lIGNvcmUgdGlsZSBhcmUgc2VsZWN0ZWQgaXMgYSBiaXQgdWdseS4gIFN1Z2dlc3Rpb25zIGZv cgo+ID4gICAgIGltcHJvdmluZyB0aGlzIGFyZSBjZXJ0YWlubHkgd2VsY29tZS4KPiA+IAo+ID4g IGFyY2gvYXJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ID4g IGFyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYybS1sZWdhY3kuZHRzaSB8ICAxNjMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGFyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYy cC1jYTkuZHRzICAgICB8ICAgODAgKysrKysrKysrKysrKysKPiA+ICBhcmNoL2FybS9jb25maWdz L3ZleHByZXNzX2RlZmNvbmZpZyAgICAgICAgfCAgICAxICsKPiA+ICBhcmNoL2FybS9tYWNoLXZl eHByZXNzL0tjb25maWcgICAgICAgICAgICAgfCAgIDQ1ICsrKysrKysrLQo+ID4gIGFyY2gvYXJt L21hY2gtdmV4cHJlc3MvY3QtY2E5eDQuYyAgICAgICAgICB8ICAgIDcgKysKPiA+ICBhcmNoL2Fy bS9tYWNoLXZleHByZXNzL3YybS5jICAgICAgICAgICAgICAgfCAgIDU0ICsrKysrKysrKy0KPiA+ ICA3IGZpbGVzIGNoYW5nZWQsIDM0OSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12Mm0tbGVnYWN5 LmR0c2kKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3Mt djJwLWNhOS5kdHMKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNo L2FybS9LY29uZmlnCj4gPiBpbmRleCA1ZWJjNWQ5Li5hNmU5MGQ1IDEwMDY0NAo+ID4gLS0tIGEv YXJjaC9hcm0vS2NvbmZpZwo+ID4gKysrIGIvYXJjaC9hcm0vS2NvbmZpZwo+ID4gQEAgLTI4Miw2 ICsyODIsNyBAQCBjb25maWcgQVJDSF9WRVJTQVRJTEUKPiA+ICAKPiA+ICBjb25maWcgQVJDSF9W RVhQUkVTUwo+ID4gIAlib29sICJBUk0gTHRkLiBWZXJzYXRpbGUgRXhwcmVzcyBmYW1pbHkiCj4g PiArCXNlbGVjdCBBUkNIX1ZFWFBSRVNTX1NBTkVfQ09ORklHCj4gPiAgCXNlbGVjdCBBUkNIX1dB TlRfT1BUSU9OQUxfR1BJT0xJQgo+ID4gIAlzZWxlY3QgQVJNX0FNQkEKPiA+ICAJc2VsZWN0IEFS TV9USU1FUl9TUDgwNAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNz LXYybS1sZWdhY3kuZHRzaSBiL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYybS1sZWdhY3ku ZHRzaQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAuLmZkNmU0ZTQK PiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYy bS1sZWdhY3kuZHRzaQo+ID4gQEAgLTAsMCArMSwxNjMgQEAKPiA+ICsvLyBBUk0gTHRkLiBWZXJz YXRpbGUgRXhwcmVzcyBNb3RoZXJib2FyZCBWMk0tUDEgKEhCSS0wMTkwRCkKPiA+ICsvLyBMZWdh Y3kgbWVtb3J5IG1hcAo+IAo+IE5vdCBzdXJlLCBidXQgQysrIHN0eWxlIGNvbW1lbnRzIGFyZSBw cm9iYWJseSBmcm93bmVkIHVwb24gaW4gZHRzIHRvby4KPiAKPiA+ICsKPiA+ICsvIHsKPiA+ICsJ YWxpYXNlcyB7Cj4gPiArCQlzZXJpYWwwID0gJnVhcnQwOwo+ID4gKwkJc2VyaWFsMSA9ICZ1YXJ0 MTsKPiA+ICsJCXNlcmlhbDIgPSAmdWFydDI7Cj4gPiArCQlzZXJpYWwzID0gJnVhcnQzOwo+ID4g KwkJaTJjMCA9ICZpMmMwOwo+ID4gKwkJaTJjMSA9ICZpMmMxOwo+ID4gKwl9Owo+ID4gKwo+ID4g Kwltb3RoZXJib2FyZCB7Cj4gPiArCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOwo+ID4gKwkJ I2FkZHJlc3MtY2VsbHMgPSA8Mj47IC8vIFNNQiBjaGlwc2VsZWN0IG51bWJlciBhbmQgb2Zmc2V0 Cj4gPiArCQkjc2l6ZS1jZWxscyA9IDwxPjsKPiA+ICsJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47 Cj4gPiArCj4gPiArCQlmbGFzaEAwLDAwMDAwMDAwIHsKPiA+ICsJCQljb21wYXRpYmxlID0gImFy bSx2ZXhwcmVzcy1mbGFzaCIsICJjZmktZmxhc2giOwo+ID4gKwkJCXJlZyA9IDwwIDB4MDAwMDAw MDAgMHgwNDAwMDAwMAo+ID4gKwkJCSAgICAgICAxIDB4MDAwMDAwMDAgMHgwNDAwMDAwMD47Cj4g PiArCQkJYmFuay13aWR0aCA9IDw0PjsKPiA+ICsJCX07Cj4gPiArCj4gPiArCQlwc3JhbUAyLDAw MDAwMDAwIHsKPiA+ICsJCQljb21wYXRpYmxlID0gIm10ZC1yYW0iOwo+ID4gKwkJCXJlZyA9IDwy IDB4MDAwMDAwMDAgMHgwMjAwMDAwMD47Cj4gPiArCQkJYmFuay13aWR0aCA9IDw0PjsKPiA+ICsJ CX07Cj4gPiArCj4gPiArCQlldGhlcm5ldEAzLDAyMDAwMDAwIHsKPiA+ICsJCQljb21wYXRpYmxl ID0gInNtc2MsbGFuOTExOCIsICJzbXNjLGxhbjkxMTUiOwo+ID4gKwkJCXJlZyA9IDwzIDB4MDIw MDAwMDAgMHgxMDAwMD47Cj4gPiArCQkJcmVnLWlvLXdpZHRoID0gPDQ+Owo+ID4gKwkJCWludGVy cnVwdHMgPSA8MTU+Owo+ID4gKwkJCXNtc2MsaXJxLWFjdGl2ZS1oaWdoOwo+ID4gKwkJCXNtc2Ms aXJxLXB1c2gtcHVsbDsKPiA+ICsJCX07Cj4gPiArCj4gPiArCQl1c2JAMywwMzAwMDAwMCB7Cj4g PiArCQkJY29tcGF0aWJsZSA9ICJueHAsdXNiLWlzcDE3NjEiOwo+ID4gKwkJCXJlZyA9IDwzIDB4 MDMwMDAwMDAgMHgyMDAwMD47Cj4gPiArCQkJaW50ZXJydXB0cyA9IDwxNj47Cj4gPiArCQkJcG9y dDEtb3RnOwo+ID4gKwkJfTsKPiA+ICsKPiA+ICsJCXBlcmlwaGVyYWxzQDcsMDAwMDAwMDAgewo+ ID4gKwkJCWNvbXBhdGlibGUgPSAiYXJtLGFtYmEtYnVzIiwgInNpbXBsZS1idXMiOwo+ID4gKwkJ CSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gKwkJCSNzaXplLWNlbGxzID0gPDE+Owo+ID4gKwkJ CXJhbmdlcyA9IDwwIDcgMCAweDIwMDAwPjsKPiA+ICsKPiA+ICsJCQkvLyBQQ0ktRSBJMkMgYnVz Cj4gPiArCQkJaTJjMDogaTJjQDAyMDAwIHsKPiA+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0sdmVy c2F0aWxlLWkyYyI7Cj4gPiArCQkJCXJlZyA9IDwweDAyMDAwIDB4MTAwMD47Cj4gPiArCj4gPiAr CQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gKwkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ ICsKPiA+ICsJCQkJcGNpZS1zd2l0Y2hANjAgewo+ID4gKwkJCQkJY29tcGF0aWJsZSA9ICJpZHQs ODlocGVzMzJoOCI7Cj4gPiArCQkJCQlyZWcgPSA8MHg2MD47Cj4gPiArCQkJCX07Cj4gPiArCQkJ fTsKPiA+ICsKPiA+ICsJCQlhYWNpQDA0MDAwIHsKPiA+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0s cGwwNDEiLCAiYXJtLHByaW1lY2VsbCI7Cj4gPiArCQkJCXJlZyA9IDwweDA0MDAwIDB4MTAwMD47 Cj4gPiArCQkJCWludGVycnVwdHMgPSA8MTE+Owo+ID4gKwkJCX07Cj4gPiArCj4gPiArCQkJbW1j aUAwNTAwMCB7Cj4gPiArCQkJCWNvbXBhdGlibGUgPSAiYXJtLHBsMTgwIiwgImFybSxwcmltZWNl bGwiOwo+ID4gKwkJCQlyZWcgPSA8MHgwNTAwMCAweDEwMDA+Owo+ID4gKwkJCQlpbnRlcnJ1cHRz ID0gPDkgMTA+Owo+ID4gKwkJCX07Cj4gPiArCj4gPiArCQkJa21pQDA2MDAwIHsKPiA+ICsJCQkJ Y29tcGF0aWJsZSA9ICJhcm0scGwwNTAiLCAiYXJtLHByaW1lY2VsbCI7Cj4gPiArCQkJCXJlZyA9 IDwweDA2MDAwIDB4MTAwMD47Cj4gPiArCQkJCWludGVycnVwdHMgPSA8MTI+Owo+ID4gKwkJCX07 Cj4gPiArCj4gPiArCQkJa21pQDA3MDAwIHsKPiA+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0scGww NTAiLCAiYXJtLHByaW1lY2VsbCI7Cj4gPiArCQkJCXJlZyA9IDwweDA3MDAwIDB4MTAwMD47Cj4g PiArCQkJCWludGVycnVwdHMgPSA8MTM+Owo+ID4gKwkJCX07Cj4gPiArCj4gPiArCQkJdWFydDA6 IHVhcnRAMDkwMDAgewo+ID4gKwkJCQljb21wYXRpYmxlID0gImFybSxwbDAxMSIsICJhcm0scHJp bWVjZWxsIjsKPiA+ICsJCQkJcmVnID0gPDB4MDkwMDAgMHgxMDAwPjsKPiA+ICsJCQkJaW50ZXJy dXB0cyA9IDw1PjsKPiA+ICsJCQl9Owo+ID4gKwo+ID4gKwkJCXVhcnQxOiB1YXJ0QDBhMDAwIHsK PiA+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwMTEiLCAiYXJtLHByaW1lY2VsbCI7Cj4gPiAr CQkJCXJlZyA9IDwweDBhMDAwIDB4MTAwMD47Cj4gPiArCQkJCWludGVycnVwdHMgPSA8Nj47Cj4g PiArCQkJfTsKPiA+ICsKPiA+ICsJCQl1YXJ0MjogdWFydEAwYjAwMCB7Cj4gPiArCQkJCWNvbXBh dGlibGUgPSAiYXJtLHBsMDExIiwgImFybSxwcmltZWNlbGwiOwo+ID4gKwkJCQlyZWcgPSA8MHgw YjAwMCAweDEwMDA+Owo+ID4gKwkJCQlpbnRlcnJ1cHRzID0gPDc+Owo+ID4gKwkJCX07Cj4gPiAr Cj4gPiArCQkJdWFydDM6IHVhcnRAMGMwMDAgewo+ID4gKwkJCQljb21wYXRpYmxlID0gImFybSxw bDAxMSIsICJhcm0scHJpbWVjZWxsIjsKPiA+ICsJCQkJcmVnID0gPDB4MGMwMDAgMHgxMDAwPjsK PiA+ICsJCQkJaW50ZXJydXB0cyA9IDw4PjsKPiA+ICsJCQl9Owo+ID4gKwo+ID4gKwkJCXdkdEAw ZjAwMCB7Cj4gPiArCQkJCWNvbXBhdGlibGUgPSAiYXJtLHNwODA1IiwgImFybSxwcmltZWNlbGwi Owo+ID4gKwkJCQlyZWcgPSA8MHgwZjAwMCAweDEwMDA+Owo+ID4gKwkJCQlpbnRlcnJ1cHRzID0g PDA+Owo+ID4gKwkJCX07Cj4gPiArCj4gPiArCQkJLy8gVGltZXIgaW5pdCBpcyBoYXJkY29kZWQg aW4gdjJtX3RpbWVyX2luaXQoKSwgZm9yIG5vdy4KPiA+ICsJCQkvLyB0aW1lckAxMTAwMCB7Cj4g PiArCQkJLy8JY29tcGF0aWJsZSA9ICJhcm0sYXJtLXNwODA0IjsKPiAKPiBhcm0sc3A4MDQgaXMg bW9yZSBjb25zaXN0ZW50LiBJIGJlbGlldmUgdGhlIHNwODA0IGRvZXMgaGF2ZSB0aGUgcGVyaXBo aWQKPiByZWdpc3RlcnMsIHNvIGFybSxwcmltZWNlbGwgc2hvdWxkIGFsc28gYmUgYWRkZWQuCgpE byB5b3UgbWVhbiAiZG9lcyBub3QgaGF2ZSI/ICBJZiBzbywgdGhlIHBlcmlwaGlkIHdpbGwgYmUg bmVlZGVkIC0tIHRoYW5rcyBmb3IKcG9pbnRpbmcgaXQgb3V0IGluIHRoYXQgY2FzZS4KCkkgd2ls bCBtYWtlIHRoZSBuYW1lcyBjb25zaXN0ZW50LiAgVGhlc2Ugd2VyZSBwYXN0ZWQgZnJvbSBzb21l b25lIExvcmVuem8ncwpvbGRlciBwYXRjaGVzLCBhbmQgZmFpbGVkIHRvIHNwb3J0IGUgdGhlIGlu Y29uc2lzdGVuY3kgc2luY2UgSSB3YXNuJ3QKYWN0dWFsbHkgbWFraW5nIHVzZSBvZiB0aGVzZSBl bnRyaWVzIHlldC4KCj4gPiArCQkJLy8JcmVnID0gPDB4MTEwMDAgMHgxMDAwPjsKPiA+ICsJCQkv LwlpbnRlcnJ1cHRzID0gPDI+Owo+ID4gKwkJCS8vIH07Cj4gPiArCj4gPiArCQkJLy8gdGltZXJA MTIwMDAgewo+ID4gKwkJCS8vCWNvbXBhdGlibGUgPSAiYXJtLGFybS1zcDgwNCI7Cj4gPiArCQkJ Ly8JcmVnID0gPDB4MTIwMDAgMHgxMDAwPjsKPiA+ICsJCQkvLyB9Owo+IAo+IEp1c3QgYmVjYXVz ZSBMaW51eCBpcyBub3QgdXNpbmcgaXQsIGRvZXNuJ3QgbWVhbiB5b3Ugc2hvdWxkIGNvbW1lbnQg aXQgb3V0LgoKRnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBkZXNjcmliaW5nIHRoZSBoYXJkd2Fy ZSwgeWVzLiAgSG93ZXZlciwgSSB3YXMKYSBiaXQgd29ycmllZCB0aGF0IGlmIHNwODA0IGlzIHR1 cm5lZCBpbnRvIGEgZnVsbCBkcml2ZXIsIGl0IHdpbGwgZ2V0CmluaXRpYWxpc2VkIHR3aWNlIC0t IG9uY2UgZXhwbGljaXRseSBhbmQgb25jZSBpbiBvZl9wbGF0Zm9ybV9wb3B1bGF0ZSgpLi4uCmF0 IGxlYXN0IHVudGlsIHRoZSBiYW9yZCBjb2RlIGlzIGFkYXB0ZWQgdG8gd29yayBwcm9wZXJseSB3 aXRoIHRoZSBuZXcKZHJpdmVyLgoKQ29tbWVudGluZyB0aGVzZSBlbnRyaWVzIG91dCBmb3Igbm93 IHNlZW1lZCBhIGdvb2QgaWRlYSB0byBhdm9pZCB0aGUgZmxhZy1kYXkKaGF6YXJkLiAgQW0gSSBi ZWluZyB0b28gY2F1dGlvdXM/Cgo+IAo+ID4gKwo+ID4gKwkJCS8vIERWSSBJMkMgYnVzIChEREMp Cj4gPiArCQkJaTJjMTogaTJjQDE2MDAwIHsKPiA+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0sdmVy c2F0aWxlLWkyYyI7Cj4gPiArCQkJCXJlZyA9IDwweDE2MDAwIDB4MTAwMD47Cj4gPiArCj4gPiAr CQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gKwkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiA+ ICsKPiA+ICsJCQkJZWRpZEA1MCB7Cj4gPiArCQkJCQljb21wYXRpYmxlID0gImVkaWQiOwo+ID4g KwkJCQkJcmVnID0gPDB4NTA+Owo+ID4gKwkJCQl9Owo+ID4gKwkJCX07Cj4gPiArCj4gPiArCQkJ cnRjQDE3MDAwIHsKPiA+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwMzEiLCAiYXJtLHByaW1l Y2VsbCI7Cj4gPiArCQkJCXJlZyA9IDwweDAxNzAwMCAweDEwMDA+Owo+ID4gKwkJCQlpbnRlcnJ1 cHRzID0gPDQ+Owo+ID4gKwkJCX07Cj4gPiArCj4gPiArCQkJY29tcGFjdC1mbGFzaEAxYTAwMCB7 Cj4gPiArCQkJCWNvbXBhdGlibGUgPSAiYXRhLWdlbmVyaWMiOwo+ID4gKwkJCQlyZWcgPSA8MHgx YTAwMCAweDEwMAo+ID4gKwkJCQkgICAgICAgMHgxYTEwMCAweGYwMD47Cj4gPiArCQkJCXJlZy1z aGlmdCA9IDwyPjsKPiA+ICsJCQl9Owo+ID4gKwkJfTsKPiA+ICsJfTsKPiA+ICt9Owo+ID4gZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTkuZHRzIGIvYXJjaC9h cm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhOS5kdHMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gPiBpbmRleCAwMDAwMDAwLi4wNTliZTk3Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9h cmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12MnAtY2E5LmR0cwo+ID4gQEAgLTAsMCArMSw4MCBA QAo+ID4gKy8vIEFSTSBMdGQuIFZlcnNhdGlsZSBFeHByZXNzIENvcmV4LUE5IChRdWFkIENvcmUp IENvcmUgVGlsZSBWMlAtQ0E5IChIQkktMDE5MUIpCj4gPiArCj4gPiArL2R0cy12MS87Cj4gPiAr Cj4gPiArL2luY2x1ZGUvICJza2VsZXRvbi5kdHNpIgo+ID4gKwo+ID4gKy8gewo+ID4gKwltb2Rl bCA9ICJBUk0gVmVyc2F0aWxlIEV4cHJlc3MgKENvcnRleC1BOSBRdWFkIENvcmUgVGlsZSkiOwo+ ID4gKwljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcy12MnAtY2E5IiwgImFybSx2ZXhwcmVzcyI7 Cj4gPiArCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+Owo+ID4gKwo+ID4gKwltZW1vcnkgewo+ ID4gKwkJZGV2aWNlX3R5cGUgPSAibWVtb3J5IjsKPiA+ICsJCXJlZyA9IDwweDYwMDAwMDAwIDB4 NDAwMDAwMDA+Owo+ID4gKwl9Owo+ID4gKwo+ID4gKwlpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxl ckAxZTAwMTAwMCB7Cj4gPiArCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTktZ2ljIjsKPiA+ ICsJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47Cj4gPiArCQkjYWRkcmVzcy1jZWxscyA9IDwwPjsK PiA+ICsJCWludGVycnVwdC1jb250cm9sbGVyOwo+ID4gKwkJcmVnID0gPDB4MWUwMDEwMDAgMHgx MDAwPiwKPiA+ICsJCSAgICAgIDwweDFlMDAwMTAwIDB4MTAwPjsKPiA+ICsJfTsKPiAKPiBJcyB0 aGlzIHJlYWxseSBhbGwgYnkgaXRzZWxmPyBJdCBzaG91bGQgYmUgaW4gdGhlIHN1Yi10cmVlIG9m IHRoZQo+IGFwcHJvcHJpYXRlIGJ1cy4KCkhtbW0sIHllcy4gIEkgZ3Vlc3MgSSBnb3QgYXdheSB3 aXRoIHRoaXMgZHVlIHRvIG5vdCB1c2luZyB0aGUgcHJvcGVyIEdJQwpiaW5kaW5ncyB5ZXQgKGFu ZCBub3QgZGVjbGFyaW5nIHRoZSBvdGhlciBjb3JlLXRpbGUgcGVyaXBoZXJhbHMpLgoKPiBZb3Ug bmVlZCBhbiAiaW50ZXJydXB0LXBhcmVudDsiIGxpbmUgc28gdGhlIHBhcmVudCBpcyBub3QgaXRz ZWxmLgoKRG8geW91IG1lYW4gZm9yIHRoZSBidXM/Cgo+IAo+ID4gKwo+ID4gKwltb3RoZXJib2Fy ZCB7Cj4gPiArCQlyYW5nZXMgPSA8MCAwIDB4NDAwMDAwMDAgMHgwNDAwMDAwMAo+ID4gKwkJCSAg MSAwIDB4NDQwMDAwMDAgMHgwNDAwMDAwMAo+ID4gKwkJCSAgMiAwIDB4NDgwMDAwMDAgMHgwNDAw MDAwMAo+ID4gKwkJCSAgMyAwIDB4NGMwMDAwMDAgMHgwNDAwMDAwMAo+ID4gKwkJCSAgNyAwIDB4 MTAwMDAwMDAgMHgwMDAyMDAwMD47Cj4gPiArCj4gPiArCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8 MCAwIDYzPjsKPiA+ICsJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgJmludGMgMzIgOAoKXiBUaGlz IHNob3VsZCBiZSAuLi4gNCBidHcgKHRoYW5rcyB0byBQYXdlbCBmb3Igc3BvdHRpbmcgdGhhdCkK Cj4gPiArCQkJCSAwIDAgMSAmaW50YyAzMyA0Cj4gPiArCQkJCSAwIDAgMiAmaW50YyAzNCA0Cj4g PiArCQkJCSAwIDAgMyAmaW50YyAzNSA0Cj4gPiArCQkJCSAwIDAgNCAmaW50YyAzNiA0Cj4gPiAr CQkJCSAwIDAgNSAmaW50YyAzNyA0Cj4gPiArCQkJCSAwIDAgNiAmaW50YyAzOCA0Cj4gPiArCQkJ CSAwIDAgNyAmaW50YyAzOSA0Cj4gPiArCQkJCSAwIDAgOCAmaW50YyA0MCA0Cj4gPiArCQkJCSAw IDAgOSAmaW50YyA0MSA0Cj4gPiArCQkJCSAwIDAgMTAgJmludGMgNDIgNAo+ID4gKwkJCQkgMCAw IDExICZpbnRjIDQzIDQKPiA+ICsJCQkJIDAgMCAxMiAmaW50YyA0NCA0Cj4gPiArCQkJCSAwIDAg MTMgJmludGMgNDUgNAo+ID4gKwkJCQkgMCAwIDE0ICZpbnRjIDQ2IDQKPiA+ICsJCQkJIDAgMCAx NSAmaW50YyA0NyA0Cj4gPiArCQkJCSAwIDAgMTYgJmludGMgNDggNAo+ID4gKwkJCQkgMCAwIDE3 ICZpbnRjIDQ5IDQKPiA+ICsJCQkJIDAgMCAxOCAmaW50YyA1MCA0Cj4gPiArCQkJCSAwIDAgMTkg JmludGMgNTEgNAo+ID4gKwkJCQkgMCAwIDIwICZpbnRjIDUyIDQKPiA+ICsJCQkJIDAgMCAyMSAm aW50YyA1MyA0Cj4gPiArCQkJCSAwIDAgMjIgJmludGMgNTQgNAo+ID4gKwkJCQkgMCAwIDIzICZp bnRjIDU1IDQKPiA+ICsJCQkJIDAgMCAyNCAmaW50YyA1NiA0Cj4gPiArCQkJCSAwIDAgMjUgJmlu dGMgNTcgNAo+ID4gKwkJCQkgMCAwIDI2ICZpbnRjIDU4IDQKPiA+ICsJCQkJIDAgMCAyNyAmaW50 YyA1OSA0Cj4gPiArCQkJCSAwIDAgMjggJmludGMgNjAgNAo+ID4gKwkJCQkgMCAwIDI5ICZpbnRj IDYxIDQKPiA+ICsJCQkJIDAgMCAzMCAmaW50YyA2MiA0Cj4gPiArCQkJCSAwIDAgMzEgJmludGMg NjMgNAo+ID4gKwkJCQkgMCAwIDMyICZpbnRjIDY0IDQKPiA+ICsJCQkJIDAgMCAzMyAmaW50YyA2 NSA0Cj4gPiArCQkJCSAwIDAgMzQgJmludGMgNjYgNAo+ID4gKwkJCQkgMCAwIDM1ICZpbnRjIDY3 IDQKPiA+ICsJCQkJIDAgMCAzNiAmaW50YyA2OCA0Cj4gPiArCQkJCSAwIDAgMzcgJmludGMgNjkg NAo+ID4gKwkJCQkgMCAwIDM4ICZpbnRjIDcwIDQKPiA+ICsJCQkJIDAgMCAzOSAmaW50YyA3MSA0 Cj4gPiArCQkJCSAwIDAgNDAgJmludGMgNzIgNAo+ID4gKwkJCQkgMCAwIDQxICZpbnRjIDczIDQK PiA+ICsJCQkJIDAgMCA0MiAmaW50YyA3NCA0PjsKPiA+ICsJfTsKPiA+ICt9Owo+ID4gKwo+ID4g Ky9pbmNsdWRlLyAidmV4cHJlc3MtdjJtLWxlZ2FjeS5kdHNpIgo+ID4gZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL2NvbmZpZ3MvdmV4cHJlc3NfZGVmY29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy92ZXhw cmVzc19kZWZjb25maWcKPiA+IGluZGV4IGYyZGU1MWYuLjZjM2M1ZjYgMTAwNjQ0Cj4gPiAtLS0g YS9hcmNoL2FybS9jb25maWdzL3ZleHByZXNzX2RlZmNvbmZpZwo+ID4gKysrIGIvYXJjaC9hcm0v Y29uZmlncy92ZXhwcmVzc19kZWZjb25maWcKPiA+IEBAIC0yMiw2ICsyMiw3IEBAIENPTkZJR19N T0RVTEVfVU5MT0FEPXkKPiA+ICAjIENPTkZJR19JT1NDSEVEX0RFQURMSU5FIGlzIG5vdCBzZXQK PiA+ICAjIENPTkZJR19JT1NDSEVEX0NGUSBpcyBub3Qgc2V0Cj4gPiAgQ09ORklHX0FSQ0hfVkVY UFJFU1M9eQo+ID4gK0NPTkZJR19BUkNIX1ZFWFBSRVNTX0FUQUdTPXkKPiA+ICBDT05GSUdfQVJD SF9WRVhQUkVTU19DQTlYND15Cj4gPiAgIyBDT05GSUdfU1dQX0VNVUxBVEUgaXMgbm90IHNldAo+ ID4gIENPTkZJR19TTVA9eQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdmV4cHJlc3Mv S2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtdmV4cHJlc3MvS2NvbmZpZwo+ID4gaW5kZXggOTMxMTQ4 NC4uZWE2NDYzMCAxMDA2NDQKPiA+IC0tLSBhL2FyY2gvYXJtL21hY2gtdmV4cHJlc3MvS2NvbmZp Zwo+ID4gKysrIGIvYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy9LY29uZmlnCj4gPiBAQCAtMSwxMiAr MSw1NSBAQAo+ID4gIG1lbnUgIlZlcnNhdGlsZSBFeHByZXNzIHBsYXRmb3JtIHR5cGUiCj4gPiAg CWRlcGVuZHMgb24gQVJDSF9WRVhQUkVTUwo+ID4gIAo+ID4gKyMgQVJDSF9WRVhQUkVTUyBlbnN1 cmVzIGEgc2FuZSBtaW5pbWFsIGNvbmZpZyBpcyBzZWxlY3RlZCBieSBzZWxlY3RpbmcKPiA+ICsj IEFSQ0hfVkVYUFJFU1NfU0FORV9DT05GSUcuCj4gPiArIyBFeHRlbmQgdGhlIGxvZ2ljIGhlcmUg d2hlbiBhZGRpbmcgbmV3IGNvcmUgdGlsZXMuCj4gPiArCj4gPiArY29uZmlnIEFSQ0hfVkVYUFJF U1NfU0FORV9DT05GSUcKPiA+ICsJYm9vbAo+ID4gKwlzZWxlY3QgQVJDSF9WRVhQUkVTU19DQTlY NAo+ID4gKwlzZWxlY3QgQVJDSF9WRVhQUkVTU19BVEFHUyBpZiAhQVJDSF9WRVhQUkVTU19EVAo+ ID4gKwo+ID4gKwo+ID4gK2NvbW1lbnQgIkF0IGxlYXN0IG9uZSBib290IHR5cGUgbXVzdCBiZSBz ZWxlY3RlZCIKPiA+ICsKPiA+ICtjb25maWcgQVJDSF9WRVhQUkVTU19BVEFHUwo+ID4gKwlib29s ICJCb290IHZpYSBBVEFHcyIKPiA+ICsJZGVmYXVsdCB5Cj4gPiArCWhlbHAKPiA+ICsJICBUaGlz IG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBib2FyZCB1c2luZyB0aGUgc3RhbmRhcmQK PiA+ICsJICBBVEFHcyBib290IHByb3RvY29sLgo+ID4gKwo+ID4gKwkgIElmIHlvdXIgYm9vdGxv YWRlciBzdXBwb3J0cyBGRFQtYmFzZWQgYm9vdGluZyBhbmQgeW91IGRvIG5vdAo+ID4gKwkgIGlu dGVuZCBldmVyIHRvIGJvb3QgdmlhIHRoZSB0cmFkaXRpb25hbCBBVEFHcyBtZXRob2QsIHlvdSBj YW4gc2F5Cj4gPiArCSAgTiBoZXJlLgo+ID4gKwo+ID4gK2NvbmZpZyBBUkNIX1ZFWFBSRVNTX0RU Cj4gPiArCWJvb2wgIkJvb3QgdmlhIERldmljZSBUcmVlIgo+ID4gKwlzZWxlY3QgVVNFX09GCj4g PiArCWhlbHAKPiA+ICsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBib2Fy ZCwgYW5kIGVuYWJsZXMgYm9vdGluZwo+ID4gKwkgIHZpYSBhIEZsYXR0ZW5lZCBEZXZpY2UgVHJl ZSBwcm92aWRlZCBieSB0aGUgYm9vdGxvYWRlci4KPiA+ICsKPiA+ICsJICBJZiB5b3VyIGJvb3Rs b2FkZXIgc3VwcG9ydHMgRkRULWJhc2VkIGJvb3RpbmcsIHlvdSBjYW4gc2F5IFkKPiA+ICsJICBo ZXJlLCBvdGhlcndpc2UsIHNheSBOLgo+ID4gKwo+ID4gKwo+ID4gKyMgQ29yZSBUaWxlIHN1cHBv cnQgb3B0aW9ucwo+ID4gKwo+ID4gK2NvbW1lbnQgIkF0IGxlYXN0IG9uZSBjb3JlIHRpbGUgbXVz dCBiZSBzZWxlY3RlZCIKPiA+ICsKPiA+ICBjb25maWcgQVJDSF9WRVhQUkVTU19DQTlYNAo+ID4g LQlib29sICJWZXJzYXRpbGUgRXhwcmVzcyBDb3J0ZXgtQTl4NCB0aWxlIgo+ID4gKwlib29sICJW ZXJzYXRpbGUgRXhwcmVzcyBDb3J0ZXgtQTl4NCBDb3JlIFRpbGUiCj4gPiArCWRlZmF1bHQgeQo+ ID4gIAlzZWxlY3QgQ1BVX1Y3Cj4gPiAgCXNlbGVjdCBBUk1fR0lDCj4gPiAgCXNlbGVjdCBBUk1f RVJSQVRBXzcyMDc4OQo+ID4gIAlzZWxlY3QgQVJNX0VSUkFUQV83NTE0NzIKPiA+ICAJc2VsZWN0 IEFSTV9FUlJBVEFfNzUzOTcwCj4gPiArCWhlbHAKPiA+ICsJICBJbmNsdWRlIHN1cHBvcnQgZm9y IHRoZSBDb3J0ZXgtQTl4NCBDb3JlIFRpbGUgKEhCSS0wMTkxQikuCj4gPiArCj4gPiArCSAgSWYg dW5zdXJlLCBzYXkgWS4KPiA+ICAKPiA+ICBlbmRtZW51Cj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC12ZXhwcmVzcy9jdC1jYTl4NC5jIGIvYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy9jdC1j YTl4NC5jCj4gPiBpbmRleCBiZmQzMmY1Li5lMmZlMmM5IDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9h cm0vbWFjaC12ZXhwcmVzcy9jdC1jYTl4NC5jCj4gPiArKysgYi9hcmNoL2FybS9tYWNoLXZleHBy ZXNzL2N0LWNhOXg0LmMKPiA+IEBAIC05LDYgKzksNyBAQAo+ID4gICNpbmNsdWRlIDxsaW51eC9h bWJhL2J1cy5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9hbWJhL2NsY2QuaD4KPiA+ICAjaW5jbHVk ZSA8bGludXgvY2xrZGV2Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2lycWRvbWFpbi5oPgo+ID4g IAo+ID4gICNpbmNsdWRlIDxhc20vaGFyZHdhcmUvYXJtX3RpbWVyLmg+Cj4gPiAgI2luY2x1ZGUg PGFzbS9oYXJkd2FyZS9jYWNoZS1sMngwLmg+Cj4gPiBAQCAtNTksMTAgKzYwLDE2IEBAIHN0YXRp YyB2b2lkIF9faW5pdCBjdF9jYTl4NF9tYXBfaW8odm9pZCkKPiA+ICAJaW90YWJsZV9pbml0KGN0 X2NhOXg0X2lvX2Rlc2MsIEFSUkFZX1NJWkUoY3RfY2E5eDRfaW9fZGVzYykpOwo+ID4gIH0KPiA+ ICAKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnaWNfb2ZfbWF0Y2hbXSBf X2luaXRjb25zdCA9IHsKPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5LWdpYyIs IH0sCj4gPiArCXt9Cj4gPiArfTsKPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBfX2luaXQgY3RfY2E5 eDRfaW5pdF9pcnEodm9pZCkKPiA+ICB7Cj4gPiAgCWdpY19pbml0KDAsIDI5LCBNTUlPX1AyVihB OV9NUENPUkVfR0lDX0RJU1QpLAo+ID4gIAkJIE1NSU9fUDJWKEE5X01QQ09SRV9HSUNfQ1BVKSk7 Cj4gPiArCWlycV9kb21haW5fZ2VuZXJhdGVfc2ltcGxlKGdpY19vZl9tYXRjaCwgQTlfTVBDT1JF X0dJQ19ESVNULCAwKTsKPiA+ICB9Cj4gPiAgCj4gPiAgI2lmIDAKPiA+IGRpZmYgLS1naXQgYS9h cmNoL2FybS9tYWNoLXZleHByZXNzL3YybS5jIGIvYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy92Mm0u Ywo+ID4gaW5kZXggOWU2YjkzYi4uNmRlZmNlNiAxMDA2NDQKPiA+IC0tLSBhL2FyY2gvYXJtL21h Y2gtdmV4cHJlc3MvdjJtLmMKPiA+ICsrKyBiL2FyY2gvYXJtL21hY2gtdmV4cHJlc3MvdjJtLmMK PiA+IEBAIC02LDYgKzYsOCBAQAo+ID4gICNpbmNsdWRlIDxsaW51eC9hbWJhL21tY2kuaD4KPiA+ ICAjaW5jbHVkZSA8bGludXgvaW8uaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ID4g KyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZv cm0uaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiAgI2luY2x1 ZGUgPGxpbnV4L2F0YV9wbGF0Zm9ybS5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9zbXNjOTExeC5o Pgo+ID4gQEAgLTExOCw3ICsxMjAsNyBAQCBpbnQgdjJtX2NmZ19yZWFkKHUzMiBkZXZmbiwgdTMy ICpkYXRhKQo+ID4gIAlyZXR1cm4gISEodmFsICYgU1lTX0NGR19FUlIpOwo+ID4gIH0KPiA+ICAK PiA+IC0KPiA+ICsjaWZkZWYgQ09ORklHX0FSQ0hfVkVYUFJFU1NfQVRBR1MKPiA+ICBzdGF0aWMg c3RydWN0IHJlc291cmNlIHYybV9wY2llX2kyY19yZXNvdXJjZSA9IHsKPiA+ICAJLnN0YXJ0CT0g VjJNX1NFUklBTF9CVVNfUENJLAo+ID4gIAkuZW5kCT0gVjJNX1NFUklBTF9CVVNfUENJICsgU1pf NEsgLSAxLAo+ID4gQEAgLTIwMCw2ICsyMDIsNyBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rl dmljZSB2Mm1fdXNiX2RldmljZSA9IHsKPiA+ICAJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpF KHYybV91c2JfcmVzb3VyY2VzKSwKPiA+ICAJLmRldi5wbGF0Zm9ybV9kYXRhID0gJnYybV91c2Jf Y29uZmlnLAo+ID4gIH07Cj4gPiArI2VuZGlmIC8qIENPTkZJR19BUkNIX1ZFWFBSRVNTX0FUQUdT ICovCj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgdjJtX2ZsYXNoX3NldF92cHAoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiwgaW50IG9uKQo+ID4gIHsKPiA+IEBAIC0yMTEsNiArMjE0LDcgQEAg c3RhdGljIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2RhdGEgdjJtX2ZsYXNoX2RhdGEgPSB7Cj4gPiAg CS5zZXRfdnBwCT0gdjJtX2ZsYXNoX3NldF92cHAsCj4gPiAgfTsKPiA+ICAKPiA+ICsjaWZkZWYg Q09ORklHX0FSQ0hfVkVYUFJFU1NfQVRBR1MKPiA+ICBzdGF0aWMgc3RydWN0IHJlc291cmNlIHYy bV9mbGFzaF9yZXNvdXJjZXNbXSA9IHsKPiA+ICAJewo+ID4gIAkJLnN0YXJ0CT0gVjJNX05PUjAs Cj4gPiBAQCAtMjU0LDYgKzI1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHYy bV9jZl9kZXZpY2UgPSB7Cj4gPiAgCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRSh2Mm1fcGF0 YV9yZXNvdXJjZXMpLAo+ID4gIAkuZGV2LnBsYXRmb3JtX2RhdGEgPSAmdjJtX3BhdGFfZGF0YSwK PiA+ICB9Owo+ID4gKyNlbmRpZiAvKiBDT05GSUdfQVJDSF9WRVhQUkVTU19BVEFHUyAqLwo+ID4g IAo+ID4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgdjJtX21tY2lfc3RhdHVzKHN0cnVjdCBkZXZpY2Ug KmRldikKPiA+ICB7Cj4gPiBAQCAtMjY1LDYgKzI3MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbW1jaV9w bGF0Zm9ybV9kYXRhIHYybV9tbWNpX2RhdGEgPSB7Cj4gPiAgCS5zdGF0dXMJCT0gdjJtX21tY2lf c3RhdHVzLAo+ID4gIH07Cj4gPiAgCj4gPiArI2lmZGVmIENPTkZJR19BUkNIX1ZFWFBSRVNTX0FU QUdTCj4gPiAgc3RhdGljIEFNQkFfREVWSUNFKGFhY2ksICAibWI6YWFjaSIsICBWMk1fQUFDSSwg TlVMTCk7Cj4gPiAgc3RhdGljIEFNQkFfREVWSUNFKG1tY2ksICAibWI6bW1jaSIsICBWMk1fTU1D SSwgJnYybV9tbWNpX2RhdGEpOwo+ID4gIHN0YXRpYyBBTUJBX0RFVklDRShrbWkwLCAgIm1iOmtt aTAiLCAgVjJNX0tNSTAsIE5VTEwpOwo+ID4gQEAgLTI4OCw2ICsyOTQsNyBAQCBzdGF0aWMgc3Ry dWN0IGFtYmFfZGV2aWNlICp2Mm1fYW1iYV9kZXZzW10gX19pbml0ZGF0YSA9IHsKPiA+ICAJJndk dF9kZXZpY2UsCj4gPiAgCSZydGNfZGV2aWNlLAo+ID4gIH07Cj4gPiArI2VuZGlmIC8qIENPTkZJ R19BUkNIX1ZFWFBSRVNTX0FUQUdTICovCj4gPiAgCj4gPiAgCj4gPiAgc3RhdGljIGxvbmcgdjJt X29zY19yb3VuZChzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSkKPiA+IEBAIC00 MTUsNiArNDIyLDggQEAgc3RhdGljIHZvaWQgX19pbml0IHYybV9pbml0X2lycSh2b2lkKQo+ID4g IAljdF9kZXNjLT5pbml0X2lycSgpOwo+ID4gIH0KPiA+ICAKPiA+ICsKPiA+ICsjaWZkZWYgQ09O RklHX0FSQ0hfVkVYUFJFU1NfQVRBR1MKPiA+ICBzdGF0aWMgdm9pZCBfX2luaXQgdjJtX2luaXQo dm9pZCkKPiA+ICB7Cj4gPiAgCWludCBpOwo+ID4gQEAgLTQ0MywzICs0NTIsNDYgQEAgTUFDSElO RV9TVEFSVChWRVhQUkVTUywgIkFSTS1WZXJzYXRpbGUgRXhwcmVzcyIpCj4gPiAgCS50aW1lcgkJ PSAmdjJtX3RpbWVyLAo+ID4gIAkuaW5pdF9tYWNoaW5lCT0gdjJtX2luaXQsCj4gPiAgTUFDSElO RV9FTkQKPiA+ICsjZW5kaWYgLyogQ09ORklHX0FSQ0hfVkVYUFJFU1NfQVRBR1MgKi8KPiA+ICsK PiA+ICsjaWZkZWYgQ09ORklHX0FSQ0hfVkVYUFJFU1NfRFQKPiA+ICtzdHJ1Y3Qgb2ZfZGV2X2F1 eGRhdGEgdjJtX2R0X2F1eGRhdGFfbG9va3VwW10gX19pbml0ZGF0YSA9IHsKPiA+ICsJT0ZfREVW X0FVWERBVEEoImFybSx2ZXhwcmVzcy1mbGFzaCIsIFYyTV9OT1IwLCAicGh5c21hcC1mbGFzaCIs ICZ2Mm1fZmxhc2hfZGF0YSksCj4gPiArCU9GX0RFVl9BVVhEQVRBKCJhcm0scHJpbWVjZWxsIiwg VjJNX0FBQ0ksICJtYjphYWNpIiwgTlVMTCksCj4gPiArCU9GX0RFVl9BVVhEQVRBKCJhcm0scHJp bWVjZWxsIiwgVjJNX1dEVCwgIm1iOndkdCIsIE5VTEwpLAo+ID4gKwlPRl9ERVZfQVVYREFUQSgi YXJtLHByaW1lY2VsbCIsIFYyTV9NTUNJLCAibWI6bW1jaSIsICZ2Mm1fbW1jaV9kYXRhKSwKPiA+ ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fS01JMCwgIm1iOmttaTAiLCBO VUxMKSwKPiA+ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fS01JMSwgIm1i OmttaTEiLCBOVUxMKSwKPiA+ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1f VUFSVDAsICJtYjp1YXJ0MCIsIE5VTEwpLAo+ID4gKwlPRl9ERVZfQVVYREFUQSgiYXJtLHByaW1l Y2VsbCIsIFYyTV9VQVJUMSwgIm1iOnVhcnQxIiwgTlVMTCksCj4gPiArCU9GX0RFVl9BVVhEQVRB KCJhcm0scHJpbWVjZWxsIiwgVjJNX1VBUlQyLCAibWI6dWFydDIiLCBOVUxMKSwKPiA+ICsJT0Zf REVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fVUFSVDMsICJtYjp1YXJ0MyIsIE5VTEwp LAo+ID4gKwlPRl9ERVZfQVVYREFUQSgiYXJtLHByaW1lY2VsbCIsIFYyTV9SVEMsICJtYjpydGMi LCBOVUxMKSwKPiA+ICsJe30KPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIF9faW5pdCB2 Mm1fZHRfaW5pdCh2b2lkKQo+ID4gK3sKPiA+ICsJb2ZfcGxhdGZvcm1fcG9wdWxhdGUoTlVMTCwg b2ZfZGVmYXVsdF9idXNfbWF0Y2hfdGFibGUsCj4gPiArCQkJICAgICB2Mm1fZHRfYXV4ZGF0YV9s b29rdXAsIE5VTEwpOwo+ID4gKwo+ID4gKwlwbV9wb3dlcl9vZmYgPSB2Mm1fcG93ZXJfb2ZmOwo+ ID4gKwlhcm1fcG1fcmVzdGFydCA9IHYybV9yZXN0YXJ0Owo+ID4gKwo+ID4gKwljdF9kZXNjLT5p bml0X3RpbGUoKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgKnYybV9kdF9t YXRjaFtdIF9faW5pdGNvbnN0ID0gewo+ID4gKwkiYXJtLHZleHByZXNzIiwKPiA+ICsJTlVMTCwK PiA+ICt9Owo+ID4gKwo+ID4gK0RUX01BQ0hJTkVfU1RBUlQoVkVYUFJFU1NfRFQsICJBUk0gVmVy c2F0aWxlIEV4cHJlc3MiKQo+ID4gKwkubWFwX2lvCQk9IHYybV9tYXBfaW8sCj4gPiArCS5pbml0 X2Vhcmx5CT0gdjJtX2luaXRfZWFybHksCj4gPiArCS5pbml0X2lycQk9IHYybV9pbml0X2lycSwK PiA+ICsJLnRpbWVyCQk9ICZ2Mm1fdGltZXIsCj4gPiArCS5pbml0X21hY2hpbmUJPSB2Mm1fZHRf aW5pdCwKPiA+ICsJLmR0X2NvbXBhdAk9IHYybV9kdF9tYXRjaCwKPiA+ICtNQUNISU5FX0VORAo+ ID4gKyNlbmRpZiAvKiBDT05GSUdfQVJDSF9WRVhQUkVTU19EVCAqLwo+IAo+IEFsbCB0aGUgaWZk ZWZzIGFyZSByZWFsbHkgdWdseS4gTW9zdCBwZW9wbGUgYXJlIGNyZWF0aW5nIG5ldyBib2FyZF9k dC5jCj4gZmlsZSBhbmQgY29weWluZyBvdmVyIHBpZWNlcyB0aGV5IG5lZWQuIE9uY2UgRFQgc3Vw cG9ydCBpcyBvbiBwYXIgd2l0aAo+IHRoZSBvbGQgZmlsZSwgdGhlIG9sZCBmaWxlIGNhbiBiZSBk ZWxldGVkLgoKV291bGQgeW91IGV4cGVjdCB0aGUgY29tbW9uIGNvZGUgYmV0d2VlbiB0aGUgRFQg YW5kIG5vbi1EVCBib2FyZHMgdG8KZHdpbmRsZSBhd2F5IHRvIG5vdGhpbmcgb3ZlciB0aW1lPyAg SSB3YXNuJ3Qgc3VyZSB3aGV0aGVyIHdlIHdvdWxkCmdldCB0aGF0IGZhci4KCkFncmVlZCByZWdh cmRpbmcgdGhlIGlmZGVmcyAtLSBidXQgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIGJldHRlciB0byBk bwp0aGlzIHJlZmFjdG9yaW5nIGluIGEgc2VwYXJhdGUgcGF0Y2ggd2hpY2ggX29ubHlfIGRvZXMg dGhlIHJlZmFjdG9yaW5nLApvbmNlIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYXJlIGFncmVlZC4K ClRoYXQgd2F5IHRoZSBhY3R1YWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpbGwgYmUgY2xlYXIgaW4g dGhlIGhpc3RvcnkuCklmIEkgdHJ5IHRvIHJlZmFjdG9yIGl0IGFoZWFkIG9mIHRpbWUsIEkgd2ls bCBwcm9iYWJseSBtaXNzIHNvbWUKYml0cyBvZiBmYWN0b3Jpbmcgd2hpY2ggdHVybiBvdXQgdG8g YmUgbmVjZXNzYXJ5IGxhdGVyLCByZXN1bHRpbmcKaW4gZXh0cmEgY2h1cm4uCgoKSWYgdGhpcyBy b3VuZCBvZiByZXZpZXcgcHJvZHVjZXMgc29tZXRoaW5nIHdoaWNoIGZlZWxzIGxpa2VseSB0byBi ZQpjbG9zZSB0byB0aGUgZmluYWwgZm9ybSwgSSBjb3VsZCBwcm9wb3NlIGEgcmVmYWN0b3Jpbmcg cGF0Y2ggdG8gZ28Kb24gdG9wIG9mIGl0LCBidXQgSSdtIHdhcnkgb2YgZG9pbmcgdGhpcyBwcmVt YXR1cmVseS4KCkNoZWVycwotLS1EYXZlCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRldmljZXRyZWUtZGlzY3VzcyBtYWlsaW5nIGxpc3QKZGV2aWNldHJl ZS1kaXNjdXNzQGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3JnL2xpc3Rp bmZvL2RldmljZXRyZWUtZGlzY3Vzcwo=