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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BC004C433EF for ; Wed, 23 Mar 2022 11:40:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243915AbiCWLly (ORCPT ); Wed, 23 Mar 2022 07:41:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232743AbiCWLlx (ORCPT ); Wed, 23 Mar 2022 07:41:53 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A01F37BFA; Wed, 23 Mar 2022 04:40:23 -0700 (PDT) Received: from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E5BBE9DE; Wed, 23 Mar 2022 12:40:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1648035621; bh=5FOLOdg+keD5Ld/XWJRitYJ2sdA0NV1UdHW91zVIQUs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ejqiD13TJqkZgPtorZNlN1ohTk7uThUVwbsscLWBstcMN0B9ihBmRfUIO4GT2tOLG MtrIPwKRxixEmba/MKTL0kzuC11N2LnUnZ7KrkGWb0Dzt/L93jjvHJQx4tc5zhE8KC ryP6udTdkiqZGAnZhcfatZUaZ3CjAUailWlQT7oQ= Date: Wed, 23 Mar 2022 13:40:03 +0200 From: Laurent Pinchart To: Marcel Ziswiler Cc: "linux-imx@nxp.com" , "reinhold.mueller@emtrion.com" , "frowand.list@gmail.com" , "alexander.stein@ew.tq-group.com" , "olof@lixom.net" , "tharvey@gateworks.com" , "shawnguo@kernel.org" , "devicetree@vger.kernel.org" , "vladimir.oltean@nxp.com" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , "arnd@arndb.de" , "s.hauer@pengutronix.de" , "robh+dt@kernel.org" , "linux-arm-kernel@lists.infradead.org" , "festevam@gmail.com" , "alexandru.marginean@nxp.com" Subject: Re: [PATCH v1 3/3] arm64: dts: freescale: add initial support for verdin imx8m plus Message-ID: References: <20220317160122.341484-1-marcel@ziswiler.com> <20220317160122.341484-4-marcel@ziswiler.com> <4c5f438da678097642d9442e5d672a8423ef5804.camel@toradex.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4c5f438da678097642d9442e5d672a8423ef5804.camel@toradex.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Marcel, On Wed, Mar 23, 2022 at 10:55:33AM +0000, Marcel Ziswiler wrote: > On Wed, 2022-03-23 at 01:02 +0200, Laurent Pinchart wrote: > > On Thu, Mar 17, 2022 at 05:01:22PM +0100, Marcel Ziswiler wrote: > > > From: Marcel Ziswiler > > > > > > This patch adds the device tree to support Toradex Verdin iMX8M Plus [1] > > > a computer on module which can be used on different carrier boards. > > > > > > The module consists of an NXP i.MX 8M Plus family SoC (either i.MX 8M > > > Plus Quad or 8M Plus QuadLite), a PCA9450C PMIC, a Gigabit Ethernet PHY, > > > 1, 2, 4 or 8 GB of LPDDR4 RAM, an eMMC, a TLA2024 ADC, an I2C EEPROM, an > > > RX8130 RTC, an optional I2C temperature sensor plus an optional > > > Bluetooth/Wi-Fi module. > > > > > > Anything that is not self-contained on the module is disabled by > > > default. > > > > > > The device tree for the Dahlia includes the module's device tree and > > > enables the supported peripherals of the carrier board. > > > > > > The device tree for the Verdin Development Board includes the module's > > > device tree as well as the Dahlia one as it is a superset and supports > > > almost all peripherals available. > > > > > > So far there is no display functionality supported at all but basic > > > console UART, USB host, eMMC and Ethernet functionality work fine. > > > > > > [1] https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx-8m-plus > > > > > > Signed-off-by: Marcel Ziswiler > > > > > > --- > > > > > >  arch/arm64/boot/dts/freescale/Makefile        |    4 + > > >  .../dts/freescale/imx8mp-verdin-dahlia.dtsi   |  125 ++ > > >  .../boot/dts/freescale/imx8mp-verdin-dev.dtsi |   44 + > > >  .../imx8mp-verdin-nonwifi-dahlia.dts          |   18 + > > >  .../freescale/imx8mp-verdin-nonwifi-dev.dts   |   18 + > > >  .../dts/freescale/imx8mp-verdin-nonwifi.dtsi  |   54 + > > >  .../freescale/imx8mp-verdin-wifi-dahlia.dts   |   18 + > > >  .../dts/freescale/imx8mp-verdin-wifi-dev.dts  |   18 + > > >  .../dts/freescale/imx8mp-verdin-wifi.dtsi     |   82 + > > >  .../boot/dts/freescale/imx8mp-verdin.dtsi     | 1373 +++++++++++++++++ > > >  10 files changed, 1754 insertions(+) > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi-dahlia.dts > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi-dev.dts > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi.dtsi > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi-dahlia.dts > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi-dev.dts > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi.dtsi > > >  create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi [snip] > > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mp- > > > verdin.dtsi > > > new file mode 100644 > > > index 000000000000..26d6c2819ee8 > > > --- /dev/null > > > +++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi > > > @@ -0,0 +1,1373 @@ > > > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > > > +/* > > > + * Copyright 2022 Toradex > > > + */ > > > + > > > +#include "dt-bindings/pwm/pwm.h" > > > +#include "imx8mp.dtsi" > > > + > > > +/ { > > > +       chosen { > > > +               stdout-path = &uart3; > > > +       }; > > > + > > > +       aliases { > > > +               /* Ethernet aliases to ensure correct MAC addresses */ > > > +               ethernet0 = &eqos; > > > +               ethernet1 = &fec; > > > > On Dahlia the ethernet connector is routed to the eqos if I'm not > > mistaken. > > Yes, actually the on-module PHY which is what is routed to the RJ-45 on Dahlia uses the EQOS MAC, correct. > > > On my board U-Boot considers this to be the second ethernet > > controller, with the fec being the first one. > > Yes, however, U-Boot does use the EQOS one as primary MAC as well. This is just how U-Boot does things. There > is no easy way to change the actual instance numbering. Actually just like on Linux really with the one > difference that U-Boot will always show both independent whether or not your carrier board even has the second > PHY or not. This is due to U-Boot doing lazy loading aka not touch any Ethernet hardware unless you actually > run some network commands. > > > The mismatch results in > > the MAC addresses being swapped between eth0 and eth1 when comparing > > U-Boot and Linux. > > No, this alias should really be what ensures the correct MAC addresses. > > > Am I using a too old boot loader, or should the two > > ethernet controlls be swapped here ? > > Yes, I guess you might not be using latest mainline U-Boot. I just verified this on my table again having both > the Dahlia and Verdin Development carrier boards available. Please note that on the Verdin Development Board > the primary Ethernet is also called eth1. Unfortunately, changing this naming is also not entirely trivial. But > it really should have the proper MAC address. I've updated U-Boot to 2022-rc4 and I confirm it now works fine. > Dahlia > > U-Boot 2022.04-rc4-00068-g5f68470d69 (Mar 23 2022 - 10:15:46 +0100) > > Verdin iMX8MP # echo $ethaddr > 00:14:2d:6c:71:64 > => verified with wireshark > > root@verdin-imx8mp-07106916:~# ip addr > ... > 4: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 > link/ether 00:14:2d:6c:71:64 brd ff:ff:ff:ff:ff:ff > inet 192.168.10.239/24 brd 192.168.10.255 scope global eth0 > valid_lft forever preferred_lft forever > inet6 fe80::214:2dff:fe6c:7164/64 scope link > valid_lft forever preferred_lft forever > ... > > Verdin Developer Board > > U-Boot 2022.04-rc4-00068-g5f68470d69 (Mar 23 2022 - 10:15:46 +0100) > > Verdin iMX8MP # echo $ethaddr > 00:14:2d:6c:71:64 > => verified with wireshark > > root@verdin-imx8mp-07106916:~# uname -a > Linux verdin-imx8mp-07106916 5.17.0-rc8-next-20220317-00003-g695dc7d13c2a #12 SMP PREEMPT Thu Mar 17 16:07:49 > CET 2022 aarch64 aarch64 aarch64 GNU/Linux > > root@verdin-imx8mp-07106916:~# ip addr > ... > 2: eth0: mtu 1500 qdisc mq state DOWN group default qlen 1000 > link/ether 00:14:2d:7c:71:64 brd ff:ff:ff:ff:ff:ff > ... > 5: eth1: mtu 1500 qdisc mq state UP group default qlen 1000 > link/ether 00:14:2d:6c:71:64 brd ff:ff:ff:ff:ff:ff > inet 192.168.10.239/24 brd 192.168.10.255 scope global eth1 > valid_lft forever preferred_lft forever > inet6 fe80::214:2dff:fe6c:7164/64 scope link > valid_lft forever preferred_lft forever > ... > > > > +               rtc0 = &rtc_i2c; > > > +               rtc1 = &snvs_rtc; > > > +       }; > > > > [snip] > > > > With these issues addressed, > > > > Reviewed-by: Laurent Pinchart > > Tested-by: Laurent Pinchart > > Thanks again! -- Regards, Laurent Pinchart 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 3F26EC433EF for ; Wed, 23 Mar 2022 11:41:44 +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=bfalC/5oeLRYW4pm2cr8UlkJy4a8P3LHPF8ozXyFpis=; b=4y/X8SgVGx3E8a DUL6CsGbJZr9c7DbWwAClPzXOqAb5055AxkX5h0H4dbm9fWrOjHCJhHW4xDxwZR16yhaIytQSYWaJ txaPi4PDtBW3RI134EIgut+VWo61tkW9ZqOpVPAf3RCgxWldW34tlCaIXIr08SfoRG+e90ojRm8Il YPBuUgUEbUNiMKenPFuhQNB4mYG7DCMnLZdvwWGfLgAtN6TeFx43OqOTZXwy0Z4VhTteNySwvOe6R NGh/F48UToOfHJA/4BBoVyX5EiLN1a5ZmHEXXUL+I4Bg/TkohrllBm9ng9TQAoCLj24aeeMFbCiT/ LbG0kp8H/OkQqHR3P2ow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWzLn-00DUm3-G7; Wed, 23 Mar 2022 11:40:27 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWzLj-00DUlC-JU for linux-arm-kernel@lists.infradead.org; Wed, 23 Mar 2022 11:40:25 +0000 Received: from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E5BBE9DE; Wed, 23 Mar 2022 12:40:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1648035621; bh=5FOLOdg+keD5Ld/XWJRitYJ2sdA0NV1UdHW91zVIQUs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ejqiD13TJqkZgPtorZNlN1ohTk7uThUVwbsscLWBstcMN0B9ihBmRfUIO4GT2tOLG MtrIPwKRxixEmba/MKTL0kzuC11N2LnUnZ7KrkGWb0Dzt/L93jjvHJQx4tc5zhE8KC ryP6udTdkiqZGAnZhcfatZUaZ3CjAUailWlQT7oQ= Date: Wed, 23 Mar 2022 13:40:03 +0200 From: Laurent Pinchart To: Marcel Ziswiler Cc: "linux-imx@nxp.com" , "reinhold.mueller@emtrion.com" , "frowand.list@gmail.com" , "alexander.stein@ew.tq-group.com" , "olof@lixom.net" , "tharvey@gateworks.com" , "shawnguo@kernel.org" , "devicetree@vger.kernel.org" , "vladimir.oltean@nxp.com" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , "arnd@arndb.de" , "s.hauer@pengutronix.de" , "robh+dt@kernel.org" , "linux-arm-kernel@lists.infradead.org" , "festevam@gmail.com" , "alexandru.marginean@nxp.com" Subject: Re: [PATCH v1 3/3] arm64: dts: freescale: add initial support for verdin imx8m plus Message-ID: References: <20220317160122.341484-1-marcel@ziswiler.com> <20220317160122.341484-4-marcel@ziswiler.com> <4c5f438da678097642d9442e5d672a8423ef5804.camel@toradex.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <4c5f438da678097642d9442e5d672a8423ef5804.camel@toradex.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220323_044023_828615_DBD59340 X-CRM114-Status: GOOD ( 44.50 ) 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 SGkgTWFyY2VsLAoKT24gV2VkLCBNYXIgMjMsIDIwMjIgYXQgMTA6NTU6MzNBTSArMDAwMCwgTWFy Y2VsIFppc3dpbGVyIHdyb3RlOgo+IE9uIFdlZCwgMjAyMi0wMy0yMyBhdCAwMTowMiArMDIwMCwg TGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+IE9uIFRodSwgTWFyIDE3LCAyMDIyIGF0IDA1OjAx OjIyUE0gKzAxMDAsIE1hcmNlbCBaaXN3aWxlciB3cm90ZToKPiA+ID4gRnJvbTogTWFyY2VsIFpp c3dpbGVyIDxtYXJjZWwuemlzd2lsZXJAdG9yYWRleC5jb20+Cj4gPiA+IAo+ID4gPiBUaGlzIHBh dGNoIGFkZHMgdGhlIGRldmljZSB0cmVlIHRvIHN1cHBvcnQgVG9yYWRleCBWZXJkaW4gaU1YOE0g UGx1cyBbMV0KPiA+ID4gYSBjb21wdXRlciBvbiBtb2R1bGUgd2hpY2ggY2FuIGJlIHVzZWQgb24g ZGlmZmVyZW50IGNhcnJpZXIgYm9hcmRzLgo+ID4gPiAKPiA+ID4gVGhlIG1vZHVsZSBjb25zaXN0 cyBvZiBhbiBOWFAgaS5NWCA4TSBQbHVzIGZhbWlseSBTb0MgKGVpdGhlciBpLk1YIDhNCj4gPiA+ IFBsdXMgUXVhZCBvciA4TSBQbHVzIFF1YWRMaXRlKSwgYSBQQ0E5NDUwQyBQTUlDLCBhIEdpZ2Fi aXQgRXRoZXJuZXQgUEhZLAo+ID4gPiAxLCAyLCA0IG9yIDggR0Igb2YgTFBERFI0IFJBTSwgYW4g ZU1NQywgYSBUTEEyMDI0IEFEQywgYW4gSTJDIEVFUFJPTSwgYW4KPiA+ID4gUlg4MTMwIFJUQywg YW4gb3B0aW9uYWwgSTJDIHRlbXBlcmF0dXJlIHNlbnNvciBwbHVzIGFuIG9wdGlvbmFsCj4gPiA+ IEJsdWV0b290aC9XaS1GaSBtb2R1bGUuCj4gPiA+IAo+ID4gPiBBbnl0aGluZyB0aGF0IGlzIG5v dCBzZWxmLWNvbnRhaW5lZCBvbiB0aGUgbW9kdWxlIGlzIGRpc2FibGVkIGJ5Cj4gPiA+IGRlZmF1 bHQuCj4gPiA+IAo+ID4gPiBUaGUgZGV2aWNlIHRyZWUgZm9yIHRoZSBEYWhsaWEgaW5jbHVkZXMg dGhlIG1vZHVsZSdzIGRldmljZSB0cmVlIGFuZAo+ID4gPiBlbmFibGVzIHRoZSBzdXBwb3J0ZWQg cGVyaXBoZXJhbHMgb2YgdGhlIGNhcnJpZXIgYm9hcmQuCj4gPiA+IAo+ID4gPiBUaGUgZGV2aWNl IHRyZWUgZm9yIHRoZSBWZXJkaW4gRGV2ZWxvcG1lbnQgQm9hcmQgaW5jbHVkZXMgdGhlIG1vZHVs ZSdzCj4gPiA+IGRldmljZSB0cmVlIGFzIHdlbGwgYXMgdGhlIERhaGxpYSBvbmUgYXMgaXQgaXMg YSBzdXBlcnNldCBhbmQgc3VwcG9ydHMKPiA+ID4gYWxtb3N0IGFsbCBwZXJpcGhlcmFscyBhdmFp bGFibGUuCj4gPiA+IAo+ID4gPiBTbyBmYXIgdGhlcmUgaXMgbm8gZGlzcGxheSBmdW5jdGlvbmFs aXR5IHN1cHBvcnRlZCBhdCBhbGwgYnV0IGJhc2ljCj4gPiA+IGNvbnNvbGUgVUFSVCwgVVNCIGhv c3QsIGVNTUMgYW5kIEV0aGVybmV0IGZ1bmN0aW9uYWxpdHkgd29yayBmaW5lLgo+ID4gPiAKPiA+ ID4gWzFdIGh0dHBzOi8vd3d3LnRvcmFkZXguY29tL2NvbXB1dGVyLW9uLW1vZHVsZXMvdmVyZGlu LWFybS1mYW1pbHkvbnhwLWlteC04bS1wbHVzCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBN YXJjZWwgWmlzd2lsZXIgPG1hcmNlbC56aXN3aWxlckB0b3JhZGV4LmNvbT4KPiA+ID4gCj4gPiA+ IC0tLQo+ID4gPiAKPiA+ID4gwqBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9NYWtlZmls ZcKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgNCArCj4gPiA+IMKgLi4uL2R0cy9mcmVlc2NhbGUvaW14 OG1wLXZlcmRpbi1kYWhsaWEuZHRzacKgwqAgfMKgIDEyNSArKwo+ID4gPiDCoC4uLi9ib290L2R0 cy9mcmVlc2NhbGUvaW14OG1wLXZlcmRpbi1kZXYuZHRzaSB8wqDCoCA0NCArCj4gPiA+IMKgLi4u L2lteDhtcC12ZXJkaW4tbm9ud2lmaS1kYWhsaWEuZHRzwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg IDE4ICsKPiA+ID4gwqAuLi4vZnJlZXNjYWxlL2lteDhtcC12ZXJkaW4tbm9ud2lmaS1kZXYuZHRz wqDCoCB8wqDCoCAxOCArCj4gPiA+IMKgLi4uL2R0cy9mcmVlc2NhbGUvaW14OG1wLXZlcmRpbi1u b253aWZpLmR0c2nCoCB8wqDCoCA1NCArCj4gPiA+IMKgLi4uL2ZyZWVzY2FsZS9pbXg4bXAtdmVy ZGluLXdpZmktZGFobGlhLmR0c8KgwqAgfMKgwqAgMTggKwo+ID4gPiDCoC4uLi9kdHMvZnJlZXNj YWxlL2lteDhtcC12ZXJkaW4td2lmaS1kZXYuZHRzwqAgfMKgwqAgMTggKwo+ID4gPiDCoC4uLi9k dHMvZnJlZXNjYWxlL2lteDhtcC12ZXJkaW4td2lmaS5kdHNpwqDCoMKgwqAgfMKgwqAgODIgKwo+ ID4gPiDCoC4uLi9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLXZlcmRpbi5kdHNpwqDCoMKgwqAg fCAxMzczICsrKysrKysrKysrKysrKysrCj4gPiA+IMKgMTAgZmlsZXMgY2hhbmdlZCwgMTc1NCBp bnNlcnRpb25zKCspCj4gPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvYm9vdC9k dHMvZnJlZXNjYWxlL2lteDhtcC12ZXJkaW4tZGFobGlhLmR0c2kKPiA+ID4gwqBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1wLXZlcmRpbi1kZXYu ZHRzaQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVz Y2FsZS9pbXg4bXAtdmVyZGluLW5vbndpZmktZGFobGlhLmR0cwo+ID4gPiDCoGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtdmVyZGluLW5vbndp ZmktZGV2LmR0cwo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRz L2ZyZWVzY2FsZS9pbXg4bXAtdmVyZGluLW5vbndpZmkuZHRzaQo+ID4gPiDCoGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtdmVyZGluLXdpZmkt ZGFobGlhLmR0cwo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRz L2ZyZWVzY2FsZS9pbXg4bXAtdmVyZGluLXdpZmktZGV2LmR0cwo+ID4gPiDCoGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bXAtdmVyZGluLXdpZmku ZHRzaQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVz Y2FsZS9pbXg4bXAtdmVyZGluLmR0c2kKCltzbmlwXQoKPiA+ID4gZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcC12ZXJkaW4uZHRzaSBiL2FyY2gvYXJtNjQv Ym9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcC0KPiA+ID4gdmVyZGluLmR0c2kKPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yNmQ2YzI4MTllZTgKPiA+ ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2Fs ZS9pbXg4bXAtdmVyZGluLmR0c2kKPiA+ID4gQEAgLTAsMCArMSwxMzczIEBACj4gPiA+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciBPUiBNSVQKPiA+ID4gKy8q Cj4gPiA+ICsgKiBDb3B5cmlnaHQgMjAyMiBUb3JhZGV4Cj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4g PiArI2luY2x1ZGUgImR0LWJpbmRpbmdzL3B3bS9wd20uaCIKPiA+ID4gKyNpbmNsdWRlICJpbXg4 bXAuZHRzaSIKPiA+ID4gKwo+ID4gPiArLyB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoGNob3NlbiB7 Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdGRvdXQtcGF0aCA9ICZ1YXJ0 MzsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgfTsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqBh bGlhc2VzIHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEV0aGVybmV0 IGFsaWFzZXMgdG8gZW5zdXJlIGNvcnJlY3QgTUFDIGFkZHJlc3NlcyAqLwo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXRoZXJuZXQwID0gJmVxb3M7Cj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBldGhlcm5ldDEgPSAmZmVjOwo+ID4gCj4gPiBPbiBEYWhs aWEgdGhlIGV0aGVybmV0IGNvbm5lY3RvciBpcyByb3V0ZWQgdG8gdGhlIGVxb3MgaWYgSSdtIG5v dAo+ID4gbWlzdGFrZW4uCj4gCj4gWWVzLCBhY3R1YWxseSB0aGUgb24tbW9kdWxlIFBIWSB3aGlj aCBpcyB3aGF0IGlzIHJvdXRlZCB0byB0aGUgUkotNDUgb24gRGFobGlhIHVzZXMgdGhlIEVRT1Mg TUFDLCBjb3JyZWN0Lgo+IAo+ID4gT24gbXkgYm9hcmQgVS1Cb290IGNvbnNpZGVycyB0aGlzIHRv IGJlIHRoZSBzZWNvbmQgZXRoZXJuZXQKPiA+IGNvbnRyb2xsZXIsIHdpdGggdGhlIGZlYyBiZWlu ZyB0aGUgZmlyc3Qgb25lLgo+IAo+IFllcywgaG93ZXZlciwgVS1Cb290IGRvZXMgdXNlIHRoZSBF UU9TIG9uZSBhcyBwcmltYXJ5IE1BQyBhcyB3ZWxsLiBUaGlzIGlzIGp1c3QgaG93IFUtQm9vdCBk b2VzIHRoaW5ncy4gVGhlcmUKPiBpcyBubyBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIGFjdHVhbCBp bnN0YW5jZSBudW1iZXJpbmcuIEFjdHVhbGx5IGp1c3QgbGlrZSBvbiBMaW51eCByZWFsbHkgd2l0 aCB0aGUgb25lCj4gZGlmZmVyZW5jZSB0aGF0IFUtQm9vdCB3aWxsIGFsd2F5cyBzaG93IGJvdGgg aW5kZXBlbmRlbnQgd2hldGhlciBvciBub3QgeW91ciBjYXJyaWVyIGJvYXJkIGV2ZW4gaGFzIHRo ZSBzZWNvbmQKPiBQSFkgb3Igbm90LiBUaGlzIGlzIGR1ZSB0byBVLUJvb3QgZG9pbmcgbGF6eSBs b2FkaW5nIGFrYSBub3QgdG91Y2ggYW55IEV0aGVybmV0IGhhcmR3YXJlIHVubGVzcyB5b3UgYWN0 dWFsbHkKPiBydW4gc29tZSBuZXR3b3JrIGNvbW1hbmRzLgo+IAo+ID4gVGhlIG1pc21hdGNoIHJl c3VsdHMgaW4KPiA+IHRoZSBNQUMgYWRkcmVzc2VzIGJlaW5nIHN3YXBwZWQgYmV0d2VlbiBldGgw IGFuZCBldGgxIHdoZW4gY29tcGFyaW5nCj4gPiBVLUJvb3QgYW5kIExpbnV4Lgo+IAo+IE5vLCB0 aGlzIGFsaWFzIHNob3VsZCByZWFsbHkgYmUgd2hhdCBlbnN1cmVzIHRoZSBjb3JyZWN0IE1BQyBh ZGRyZXNzZXMuCj4gCj4gPiBBbSBJIHVzaW5nIGEgdG9vIG9sZCBib290IGxvYWRlciwgb3Igc2hv dWxkIHRoZSB0d28KPiA+IGV0aGVybmV0IGNvbnRyb2xscyBiZSBzd2FwcGVkIGhlcmUgPwo+IAo+ IFllcywgSSBndWVzcyB5b3UgbWlnaHQgbm90IGJlIHVzaW5nIGxhdGVzdCBtYWlubGluZSBVLUJv b3QuIEkganVzdCB2ZXJpZmllZCB0aGlzIG9uIG15IHRhYmxlIGFnYWluIGhhdmluZyBib3RoCj4g dGhlIERhaGxpYSBhbmQgVmVyZGluIERldmVsb3BtZW50IGNhcnJpZXIgYm9hcmRzIGF2YWlsYWJs ZS4gUGxlYXNlIG5vdGUgdGhhdCBvbiB0aGUgVmVyZGluIERldmVsb3BtZW50IEJvYXJkCj4gdGhl IHByaW1hcnkgRXRoZXJuZXQgaXMgYWxzbyBjYWxsZWQgZXRoMS4gVW5mb3J0dW5hdGVseSwgY2hh bmdpbmcgdGhpcyBuYW1pbmcgaXMgYWxzbyBub3QgZW50aXJlbHkgdHJpdmlhbC4gQnV0Cj4gaXQg cmVhbGx5IHNob3VsZCBoYXZlIHRoZSBwcm9wZXIgTUFDIGFkZHJlc3MuCgpJJ3ZlIHVwZGF0ZWQg VS1Cb290IHRvIDIwMjItcmM0IGFuZCBJIGNvbmZpcm0gaXQgbm93IHdvcmtzIGZpbmUuCgo+IERh aGxpYQo+IAo+IFUtQm9vdCAyMDIyLjA0LXJjNC0wMDA2OC1nNWY2ODQ3MGQ2OSAoTWFyIDIzIDIw MjIgLSAxMDoxNTo0NiArMDEwMCkKPiAKPiBWZXJkaW4gaU1YOE1QICMgZWNobyAkZXRoYWRkcgo+ IDAwOjE0OjJkOjZjOjcxOjY0Cj4gPT4gdmVyaWZpZWQgd2l0aCB3aXJlc2hhcmsKPiAKPiByb290 QHZlcmRpbi1pbXg4bXAtMDcxMDY5MTY6fiMgaXAgYWRkcgo+IC4uLgo+IDQ6IGV0aDA6IDxCUk9B RENBU1QsTVVMVElDQVNULERZTkFNSUMsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFkaXNjIG1xIHN0 YXRlIFVQIGdyb3VwIGRlZmF1bHQgcWxlbiAxMDAwCj4gICAgIGxpbmsvZXRoZXIgMDA6MTQ6MmQ6 NmM6NzE6NjQgYnJkIGZmOmZmOmZmOmZmOmZmOmZmCj4gICAgIGluZXQgMTkyLjE2OC4xMC4yMzkv MjQgYnJkIDE5Mi4xNjguMTAuMjU1IHNjb3BlIGdsb2JhbCBldGgwCj4gICAgICAgIHZhbGlkX2xm dCBmb3JldmVyIHByZWZlcnJlZF9sZnQgZm9yZXZlcgo+ICAgICBpbmV0NiBmZTgwOjoyMTQ6MmRm ZjpmZTZjOjcxNjQvNjQgc2NvcGUgbGluayAKPiAgICAgICAgdmFsaWRfbGZ0IGZvcmV2ZXIgcHJl ZmVycmVkX2xmdCBmb3JldmVyCj4gLi4uCj4gCj4gVmVyZGluIERldmVsb3BlciBCb2FyZAo+IAo+ IFUtQm9vdCAyMDIyLjA0LXJjNC0wMDA2OC1nNWY2ODQ3MGQ2OSAoTWFyIDIzIDIwMjIgLSAxMDox NTo0NiArMDEwMCkKPiAKPiBWZXJkaW4gaU1YOE1QICMgZWNobyAkZXRoYWRkciAgCj4gMDA6MTQ6 MmQ6NmM6NzE6NjQKPiA9PiB2ZXJpZmllZCB3aXRoIHdpcmVzaGFyawo+IAo+IHJvb3RAdmVyZGlu LWlteDhtcC0wNzEwNjkxNjp+IyB1bmFtZSAtYQo+IExpbnV4IHZlcmRpbi1pbXg4bXAtMDcxMDY5 MTYgNS4xNy4wLXJjOC1uZXh0LTIwMjIwMzE3LTAwMDAzLWc2OTVkYzdkMTNjMmEgIzEyIFNNUCBQ UkVFTVBUIFRodSBNYXIgMTcgMTY6MDc6NDkKPiBDRVQgMjAyMiBhYXJjaDY0IGFhcmNoNjQgYWFy Y2g2NCBHTlUvTGludXgKPiAKPiByb290QHZlcmRpbi1pbXg4bXAtMDcxMDY5MTY6fiMgaXAgYWRk cgo+IC4uLgo+IDI6IGV0aDA6IDxOTy1DQVJSSUVSLEJST0FEQ0FTVCxNVUxUSUNBU1QsRFlOQU1J QyxVUD4gbXR1IDE1MDAgcWRpc2MgbXEgc3RhdGUgRE9XTiBncm91cCBkZWZhdWx0IHFsZW4gMTAw MAo+ICAgICBsaW5rL2V0aGVyIDAwOjE0OjJkOjdjOjcxOjY0IGJyZCBmZjpmZjpmZjpmZjpmZjpm Zgo+IC4uLgo+IDU6IGV0aDE6IDxCUk9BRENBU1QsTVVMVElDQVNULERZTkFNSUMsVVAsTE9XRVJf VVA+IG10dSAxNTAwIHFkaXNjIG1xIHN0YXRlIFVQIGdyb3VwIGRlZmF1bHQgcWxlbiAxMDAwCj4g ICAgIGxpbmsvZXRoZXIgMDA6MTQ6MmQ6NmM6NzE6NjQgYnJkIGZmOmZmOmZmOmZmOmZmOmZmCj4g ICAgIGluZXQgMTkyLjE2OC4xMC4yMzkvMjQgYnJkIDE5Mi4xNjguMTAuMjU1IHNjb3BlIGdsb2Jh bCBldGgxCj4gICAgICAgIHZhbGlkX2xmdCBmb3JldmVyIHByZWZlcnJlZF9sZnQgZm9yZXZlcgo+ ICAgICBpbmV0NiBmZTgwOjoyMTQ6MmRmZjpmZTZjOjcxNjQvNjQgc2NvcGUgbGluayAKPiAgICAg ICAgdmFsaWRfbGZ0IGZvcmV2ZXIgcHJlZmVycmVkX2xmdCBmb3JldmVyCj4gLi4uCj4gCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydGMwID0gJnJ0Y19pMmM7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydGMxID0gJnNudnNfcnRjOwo+ID4gPiArwqDC oMKgwqDCoMKgwqB9Owo+ID4gCj4gPiBbc25pcF0KPiA+IAo+ID4gV2l0aCB0aGVzZSBpc3N1ZXMg YWRkcmVzc2VkLAo+ID4gCj4gPiBSZXZpZXdlZC1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVu dC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+ID4gVGVzdGVkLWJ5OiBMYXVyZW50IFBpbmNo YXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gCj4gVGhhbmtzIGFnYWlu IQoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==