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 X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81FB4C4707F for ; Tue, 25 May 2021 17:25:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5B8046135F for ; Tue, 25 May 2021 17:25:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231805AbhEYR10 (ORCPT ); Tue, 25 May 2021 13:27:26 -0400 Received: from foss.arm.com ([217.140.110.172]:32900 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229610AbhEYR1Y (ORCPT ); Tue, 25 May 2021 13:27:24 -0400 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 7B6761516; Tue, 25 May 2021 10:25:54 -0700 (PDT) Received: from [10.57.73.64] (unknown [10.57.73.64]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 86ACB3F73B; Tue, 25 May 2021 10:25:52 -0700 (PDT) Subject: Re: [BUG] rockpro64: PCI BAR reassignment broken by commit 9d57e61bf723 ("of/pci: Add IORESOURCE_MEM_64 to resource flags for 64-bit memory addresses") To: Peter Geis , Ard Biesheuvel Cc: Punit Agrawal , Alexandru Elisei , Linux Kernel Mailing List , "open list:ARM/Rockchip SoC..." , arm-mail-list , Heiko Stuebner , Leonardo Bras , Rob Herring , PCI , =?UTF-8?Q?Christian_K=c3=b6nig?= References: <7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com> <01efd004-1c50-25ca-05e4-7e4ef96232e2@arm.com> <87eedxbtkn.fsf@stealth> <877djnaq11.fsf@stealth> From: Robin Murphy Message-ID: <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> Date: Tue, 25 May 2021 18:25:46 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021-05-25 18:01, Peter Geis wrote: > On Tue, May 25, 2021 at 12:44 PM Ard Biesheuvel wrote: >> >> On Tue, 25 May 2021 at 18:23, Peter Geis wrote: >>> >>> On Tue, May 25, 2021 at 11:55 AM Ard Biesheuvel wrote: >>>> >>>> On Tue, 25 May 2021 at 17:34, Peter Geis wrote: >>>>> >>>>> On Tue, May 25, 2021 at 9:57 AM Ard Biesheuvel wrote: >>>>>> >>>>>> On Tue, 25 May 2021 at 15:42, Punit Agrawal wrote: >>>>>>> >>>>>>> Hi Ard, >>>>>>> >>>>>>> Ard Biesheuvel writes: >>>>>>> >>>>>>>> On Sun, 23 May 2021 at 13:06, Punit Agrawal wrote: >>>>>>>>> >>>>>>>>> Robin Murphy writes: >>>>>>>>> >>>>>>>>>> [ +linux-pci for visibility ] >>>>>>>>>> >>>>>>>>>> On 2021-05-18 10:09, Alexandru Elisei wrote: >>>>>>>>>>> After doing a git bisect I was able to trace the following error when booting my >>>>>>>>>>> rockpro64 v2 (rk3399 SoC) with a PCIE NVME expansion card: >>>>>>>>>>> [..] >>>>>>>>>>> [ 0.305183] rockchip-pcie f8000000.pcie: host bridge /pcie@f8000000 ranges: >>>>>>>>>>> [ 0.305248] rockchip-pcie f8000000.pcie: MEM 0x00fa000000..0x00fbdfffff -> >>>>>>>>>>> 0x00fa000000 >>>>>>>>>>> [ 0.305285] rockchip-pcie f8000000.pcie: IO 0x00fbe00000..0x00fbefffff -> >>>>>>>>>>> 0x00fbe00000 >>>>>>>>>>> [ 0.306201] rockchip-pcie f8000000.pcie: supply vpcie1v8 not found, using dummy >>>>>>>>>>> regulator >>>>>>>>>>> [ 0.306334] rockchip-pcie f8000000.pcie: supply vpcie0v9 not found, using dummy >>>>>>>>>>> regulator >>>>>>>>>>> [ 0.373705] rockchip-pcie f8000000.pcie: PCI host bridge to bus 0000:00 >>>>>>>>>>> [ 0.373730] pci_bus 0000:00: root bus resource [bus 00-1f] >>>>>>>>>>> [ 0.373751] pci_bus 0000:00: root bus resource [mem 0xfa000000-0xfbdfffff 64bit] >>>>>>>>>>> [ 0.373777] pci_bus 0000:00: root bus resource [io 0x0000-0xfffff] (bus >>>>>>>>>>> address [0xfbe00000-0xfbefffff]) >>>>>>>>>>> [ 0.373839] pci 0000:00:00.0: [1d87:0100] type 01 class 0x060400 >>>>>>>>>>> [ 0.373973] pci 0000:00:00.0: supports D1 >>>>>>>>>>> [ 0.373992] pci 0000:00:00.0: PME# supported from D0 D1 D3hot >>>>>>>>>>> [ 0.378518] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), >>>>>>>>>>> reconfiguring >>>>>>>>>>> [ 0.378765] pci 0000:01:00.0: [144d:a808] type 00 class 0x010802 >>>>>>>>>>> [ 0.378869] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit] >>>>>>>>>>> [ 0.379051] pci 0000:01:00.0: Max Payload Size set to 256 (was 128, max 256) >>>>>>>>>>> [ 0.379661] pci 0000:01:00.0: 8.000 Gb/s available PCIe bandwidth, limited by >>>>>>>>>>> 2.5 GT/s PCIe x4 link at 0000:00:00.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe >>>>>>>>>>> x4 link) >>>>>>>>>>> [ 0.393269] pci_bus 0000:01: busn_res: [bus 01-1f] end is updated to 01 >>>>>>>>>>> [ 0.393311] pci 0000:00:00.0: BAR 14: no space for [mem size 0x00100000] >>>>>>>>>>> [ 0.393333] pci 0000:00:00.0: BAR 14: failed to assign [mem size 0x00100000] >>>>>>>>>>> [ 0.393356] pci 0000:01:00.0: BAR 0: no space for [mem size 0x00004000 64bit] >>>>>>>>>>> [ 0.393375] pci 0000:01:00.0: BAR 0: failed to assign [mem size 0x00004000 64bit] >>>>>>>>>>> [ 0.393397] pci 0000:00:00.0: PCI bridge to [bus 01] >>>>>>>>>>> [ 0.393839] pcieport 0000:00:00.0: PME: Signaling with IRQ 78 >>>>>>>>>>> [ 0.394165] pcieport 0000:00:00.0: AER: enabled with IRQ 78 >>>>>>>>>>> [..] >>>>>>>>>>> to the commit 9d57e61bf723 ("of/pci: Add IORESOURCE_MEM_64 to >>>>>>>>>>> resource flags for >>>>>>>>>>> 64-bit memory addresses"). >>>>>>>>>> >>>>>>>>>> FWFW, my hunch is that the host bridge advertising no 32-bit memory >>>>>>>>>> resource, only only a single 64-bit non-prefetchable one (even though >>>>>>>>>> it's entirely below 4GB) might be a bit weird and tripping something >>>>>>>>>> up in the resource assignment code. It certainly seems like the thing >>>>>>>>>> most directly related to the offending commit. >>>>>>>>>> >>>>>>>>>> I'd be tempted to try fiddling with that in the DT (i.e. changing >>>>>>>>>> 0x83000000 to 0x82000000 in the PCIe node's "ranges" property) to see >>>>>>>>>> if it makes any difference. Note that even if it helps, though, I >>>>>>>>>> don't know whether that's the correct fix or just a bodge around a >>>>>>>>>> corner-case bug somewhere in the resource code. >>>>>>>>> >>>>>>>>> From digging into this further the failure seems to be due to a mismatch >>>>>>>>> of flags when allocating resources in pci_bus_alloc_from_region() - >>>>>>>>> >>>>>>>>> if ((res->flags ^ r->flags) & type_mask) >>>>>>>>> continue; >>>>>>>>> >>>>>>>>> Though I am also not sure why the failure is only being reported on >>>>>>>>> RK3399 - does a single 64-bit window have anything to do with it? >>>>>>>>> >>>>>>>> >>>>>>>> The NVMe in the example exposes a single 64-bit non-prefetchable BAR. >>>>>>>> Such BARs can not be allocated in a prefetchable host bridge window >>>>>>>> (unlike the converse, i.e., allocating a prefetchable BAR in a >>>>>>>> non-prefetchable host bridge window is fine) >>>>>>>> >>>>>>>> 64-bit non-prefetchable host bridge windows cannot be forwarded by PCI >>>>>>>> to PCI bridges, they simply lack the BAR registers to describe them. >>>>>>>> Therefore, non-prefetchable endpoint BARs (even 64-bit ones) need to >>>>>>>> be carved out of a host bridge's non-prefetchable 32-bit window if >>>>>>>> they need to pass through a bridge. >>>>>>> >>>>>>> Thank you for the explanation. I also looked at the PCI-to-PCI Bridge >>>>>>> spec to understand where some of the limitations are coming from. >>>>>>> >>>>>>>> So the error seems to be here that the host bridge's 32-bit >>>>>>>> non-prefetchable window has the 64-bit attribute set, even though it >>>>>>>> resides below 4 GB entirely. I suppose that the resource allocation >>>>>>>> could be made more forgiving (and it was in the past, before commit >>>>>>>> 9d57e61bf723 was applied). However, I would strongly recommend not >>>>>>>> deviating from common practice, and just describe the 32-bit >>>>>>>> addressable non-prefetchable resource window as such. >>>>>>> >>>>>>> IIUC, the host bridge's configuration (64-bit on non-prefetchable >>>>>>> window) is based on what the hardware advertises. >>>>>>> >>>>>> >>>>>> What do you mean by 'what the hardware advertises'? The host bridge is >>>>>> apparently configured to decode a 32-bit addressable window as MMIO, >>>>>> and the question is why this window has the 64-bit attribute set in >>>>>> the DT description. >>>>>> >>>>>>> Can you elaborate on what you have in mind to correct the >>>>>>> non-prefetchable resource window? Are you thinking of adding a quirk >>>>>>> somewhere to address this? >>>>>>> >>>>>> >>>>>> No. Just fix the DT. >>>>> >>>>> Good Morning, >>>>> >>>>> I believe Robin is correct that there is more to this. >>>>> While attempting to work out why dGPUs won't work with the rk356x >>>>> series PCIe controllers, Christian König from the amd-gpu driver >>>>> mailing list noticed the gpu was incorrectly allocated a 64bit >>>>> non-prefetchable BAR which should instead be a 32 non-prefetchable >>>>> BAR. >>>>> >>>> >>>> This is due to the translation. For some reason, lspci translates the >>>> BAR values to CPU addresses, but the PCI side addresses are within >>>> 32-bits. >>> >>> The kernel log reports the same thing: >>> [ 6.662141] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0fffffff >>> 64bit pref] >>> [ 6.662963] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x0001ffff 64bit] >>> >>> You are saying this is a display only issue? >>> >> >> Yes. What do the 'root bus resource' log lines say for these regions? >> Those should give you both the CPU address as well as the bus address. > > [ 6.673497] pci_bus 0000:00: root bus resource [io 0x0000-0xfffff] > (bus address [0x3f700000-0x3f7fffff]) > [ 6.674642] pci_bus 0000:00: root bus resource [mem > 0x300000000-0x33f6fffff] (bus address [0x00000000-0x3f6fffff]) Assuming RK356x has a similar memory map to other Rockchip SoCs, I suspect you may have a larger issue with your mem space window shadowing a significant chunk of your RAM. Robin. > > I tweaked the original Rockchip values to place the non-prefetchable > memory first with the configuration and io later in this boot. > >> >> >>>> >>>> Are you sure the amdgpu driver can even deal with non-1:1 host bridges? >>> >>> I cannot answer this as I'm not an amdgpu dev. >>> >>>> >>>>> The ranges currently set are: >>>>> ranges = <0x81000000 0x0 0x00800000 0x3 0x00800000 0x0 0x00100000 >>>>> 0x82000000 0x0 0x00900000 0x3 0x00900000 0x0 0x3f700000>; >>>>> >>>> >>>> So you have two ranges here. >>> >>> The IO and PCI memory ranges. >>> >>> There is a third range, the configuration range, which is defined in >>> the reg block: >>> <0x3 0x00000000 0x0 0x800000> >>> All three are shared in the same 1GB window on the rk356x. >>> >> >> But the reg block is not a resource window, it is a configuration >> range to program the host bridge. >> >>> https://elixir.bootlin.com/linux/v5.13-rc3/source/Documentation/devicetree/bindings/pci/designware-pcie.txt#L12 >>> >>>> >>>>> but the final allocation was: >>>>> >>>>> lspci -v >>>>> 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 >>>>> (rev 01) (prog-if 00 [Normal decode]) >>>>> Flags: bus master, fast devsel, latency 0, IRQ 96 >>>>> Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0 >>>>> I/O behind bridge: 00001000-00001fff [size=4K] >>>>> Memory behind bridge: 00900000-009fffff [size=1M] >>>>> Prefetchable memory behind bridge: >>>>> 0000000010000000-000000001fffffff [size=256M] >>>> >>>> But the host bridge/root port decodes two disjoint regions?? >>>> >>>>> Expansion ROM at 300a00000 [virtual] [disabled] [size=64K] >>>>> Capabilities: [40] Power Management version 3 >>>>> Capabilities: [50] MSI: Enable+ Count=1/32 Maskable- 64bit+ >>>>> Capabilities: [70] Express Root Port (Slot-), MSI 00 >>>>> Capabilities: [b0] MSI-X: Enable- Count=1 Masked- >>>>> Capabilities: [100] Advanced Error Reporting >>>>> Capabilities: [148] Secondary PCI Express >>>>> Capabilities: [160] L1 PM Substates >>>>> Capabilities: [170] Vendor Specific Information: ID=0002 Rev=4 >>>>> Len=100 >>>>> Kernel driver in use: pcieport >>>>> >>>>> 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. >>>>> [AMD/ATI] Turks PRO [Radeon HD 7570] (prog-if 00 [VGA controller]) >>>>> Subsystem: Dell Turks PRO [Radeon HD 7570] >>>>> Flags: bus master, fast devsel, latency 0, IRQ 95 >>>>> Memory at 310000000 (64-bit, prefetchable) [size=256M] >>>>> Memory at 300900000 (64-bit, non-prefetchable) [size=128K] >>>>> I/O ports at 1000 [size=256] >>>>> Expansion ROM at 300920000 [disabled] [size=128K] >>>>> Capabilities: [50] Power Management version 3 >>>>> Capabilities: [58] Express Legacy Endpoint, MSI 00 >>>>> Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ >>>>> Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 >>>>> Len=010 >>>>> Capabilities: [150] Advanced Error Reporting >>>>> Kernel driver in use: radeon >>>>> >>>>> 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Turks >>>>> HDMI Audio [Radeon HD 6500/6600 / 6700M Series] >>>>> Subsystem: Dell Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series] >>>>> Flags: bus master, fast devsel, latency 0, IRQ 98 >>>>> Memory at 300940000 (64-bit, non-prefetchable) [size=16K] >>>>> Capabilities: [50] Power Management version 3 >>>>> Capabilities: [58] Express Legacy Endpoint, MSI 00 >>>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ >>>>> Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 >>>>> Len=010 >>>>> Capabilities: [150] Advanced Error Reporting >>>>> Kernel driver in use: snd_hda_intel >>>>> >>>>> This will obviously clobber registers during writes. >>>> >>>> I don't follow. Which writes will clobber which registers, and how is >>>> it obvious? >>> >>> Writing a 64 bit word into a 32 bit register will either clobber the >>> next higher 32 bit register. >>> Quoting Christian: >>> "When you program a 32bit BAR as 64bit you overwrite the register behind >>> the BAR address with the upper 32bits of the 64bit address value. >>> So even if the allocation fits into 32bits, the extra register write >>> will certainly put your device into a banana state." >>> >>> https://lists.freedesktop.org/archives/amd-gfx/2021-May/064232.html >>> >> >> I seriously doubt that this is what is going on here. >> >> lspci -x will give you the bare BAR values - I suspect that those are >> probably fine. > > lspci -x > 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) > 00: 87 1d 66 35 07 05 10 40 01 00 04 06 00 00 01 00 > 10: 00 00 00 00 00 00 00 00 00 01 ff 00 10 10 00 20 > 20: 00 10 00 10 01 00 f1 0f 00 00 00 00 00 00 00 00 > 30: 00 00 00 00 40 00 00 00 00 00 00 00 5f 01 02 00 > > 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. > [AMD/ATI] Turks PRO [Radeon HD 7570] > 00: 02 10 5d 67 07 00 10 20 00 00 00 03 00 00 80 00 > 10: 0c 00 00 00 00 00 00 00 04 00 00 10 00 00 00 00 > 20: 01 10 70 3f 00 00 00 00 00 00 00 00 28 10 20 2b > 30: 00 00 02 10 50 00 00 00 00 00 00 00 5f 01 00 00 > > 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Turks > HDMI Audio [Radeon HD 6500/6600 / 6700M Series] > 00: 02 10 90 aa 06 00 10 20 00 00 03 04 00 00 80 00 > 10: 04 00 04 10 00 00 00 00 00 00 00 00 00 00 00 00 > 20: 00 00 00 00 00 00 00 00 00 00 00 00 28 10 90 aa > 30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 02 00 00 > >> >> >>>> >>>>> Also, if <0x82000000> (32 bit) is changed to <0x83000000> (64 bit), >>>>> most of the allocations for the dGPU fail due to no valid regions >>>>> available. >>>>> >>>> >>>> But wasn't the original problem that the resource window was 64-bit to >>>> begin with? Are you sure we are talking about the same problem here? >>> >>> The rk3399 in the original report has a 32MB memory window in the >>> upper end of the 4GB range. >>> The rk356x has a similar layout, or it can use a 1GB window available >>> at <0x3 0x00000000>. >>> Rockchip's default windows are defined as 64bit. >>> >>> The rk3399 doesn't have enough space to reasonably define two windows, >>> one 32bit, one 64bit, to work around an allocation bug. >>> These are the defined regions in the rk3399: >>> ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000>, >>> <0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>; >>> >> >> All you really need is a 32-bit non-prefetchable resource window: any >> BAR can be allocated from that. A 64-bit BAR can carry a 32-bit number >> (just add zeroes at the top), and a prefetchable BAR can happily live >> in a non-prefetchable window, with a theoretical performance impact if >> the OS actually does use different memory attributes for the >> prefetchable window (but I don't think Linux ever handles it this way) > > So is the IO range necessary as well or will it be automatically > allocated as well? > >> >> >>> >>>> >>>> >>>>>> >>>>>>> I am happy to put something together once I understand the preferred way >>>>>>> to go about it. >>>>>>> >>>>>>> Thanks, >>>>>>> Punit >>>>>>> >>>>>>> [...] >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Linux-rockchip mailing list >>>>>> Linux-rockchip@lists.infradead.org >>>>>> http://lists.infradead.org/mailman/listinfo/linux-rockchip 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 X-Spam-Level: X-Spam-Status: No, score=-5.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32DB5C2B9F8 for ; Tue, 25 May 2021 17:26:26 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E4A2561042 for ; Tue, 25 May 2021 17:26:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E4A2561042 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=QkCS6EZwtDEyM+4XFDSOp83YziQs4TJJLn4KhokSepE=; b=hcLO/bUpE/zBRgIiyzyDVyI/wz daRgP835YOCOuctlEkwTTg7aDsC0sSfFZj/LOBGpZWKdloSsp0ckFIWWMTjEe1iINJbIA+pErdL4o lzAsnj6v0ldjbNJS0u+AxsEDDHWJT6EQHovwaZ80a8dA4bziBQeoh/9kFSLNGFf+oPT9sR2DJ9zuO IGIQ8kZ0lqRxV+6db7UgclRK7FMOUrRYekxD5s5wAfhLBnHDwPy1L6mQl9DY5pUdfU8HO+QEaui1h 2eIh7h1f42lWmvSUjEWGpnZDVrh6SlNAXBru4WZV0wdkhJbEO7cwNwOoDelIog44dAvRBhQ162S/q MvgfJh/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1llaov-006r5P-QW; Tue, 25 May 2021 17:26:21 +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 1llaoW-006quf-TC; Tue, 25 May 2021 17:26:00 +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 7B6761516; Tue, 25 May 2021 10:25:54 -0700 (PDT) Received: from [10.57.73.64] (unknown [10.57.73.64]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 86ACB3F73B; Tue, 25 May 2021 10:25:52 -0700 (PDT) Subject: Re: [BUG] rockpro64: PCI BAR reassignment broken by commit 9d57e61bf723 ("of/pci: Add IORESOURCE_MEM_64 to resource flags for 64-bit memory addresses") To: Peter Geis , Ard Biesheuvel Cc: Punit Agrawal , Alexandru Elisei , Linux Kernel Mailing List , "open list:ARM/Rockchip SoC..." , arm-mail-list , Heiko Stuebner , Leonardo Bras , Rob Herring , PCI , =?UTF-8?Q?Christian_K=c3=b6nig?= References: <7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com> <01efd004-1c50-25ca-05e4-7e4ef96232e2@arm.com> <87eedxbtkn.fsf@stealth> <877djnaq11.fsf@stealth> From: Robin Murphy Message-ID: <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> Date: Tue, 25 May 2021 18:25:46 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210525_102557_160094_B475ED23 X-CRM114-Status: GOOD ( 39.20 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gMjAyMS0wNS0yNSAxODowMSwgUGV0ZXIgR2VpcyB3cm90ZToKPiBPbiBUdWUsIE1heSAyNSwg MjAyMSBhdCAxMjo0NCBQTSBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPiB3cm90ZToK Pj4KPj4gT24gVHVlLCAyNSBNYXkgMjAyMSBhdCAxODoyMywgUGV0ZXIgR2VpcyA8cGd3aXBlb3V0 QGdtYWlsLmNvbT4gd3JvdGU6Cj4+Pgo+Pj4gT24gVHVlLCBNYXkgMjUsIDIwMjEgYXQgMTE6NTUg QU0gQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4gd3JvdGU6Cj4+Pj4KPj4+PiBPbiBU dWUsIDI1IE1heSAyMDIxIGF0IDE3OjM0LCBQZXRlciBHZWlzIDxwZ3dpcGVvdXRAZ21haWwuY29t PiB3cm90ZToKPj4+Pj4KPj4+Pj4gT24gVHVlLCBNYXkgMjUsIDIwMjEgYXQgOTo1NyBBTSBBcmQg Qmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPiB3cm90ZToKPj4+Pj4+Cj4+Pj4+PiBPbiBUdWUs IDI1IE1heSAyMDIxIGF0IDE1OjQyLCBQdW5pdCBBZ3Jhd2FsIDxwdW5pdGFncmF3YWxAZ21haWwu Y29tPiB3cm90ZToKPj4+Pj4+Pgo+Pj4+Pj4+IEhpIEFyZCwKPj4+Pj4+Pgo+Pj4+Pj4+IEFyZCBC aWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+IHdyaXRlczoKPj4+Pj4+Pgo+Pj4+Pj4+PiBPbiBT dW4sIDIzIE1heSAyMDIxIGF0IDEzOjA2LCBQdW5pdCBBZ3Jhd2FsIDxwdW5pdGFncmF3YWxAZ21h aWwuY29tPiB3cm90ZToKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBSb2JpbiBNdXJwaHkgPHJvYmluLm11 cnBoeUBhcm0uY29tPiB3cml0ZXM6Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IFsgK2xpbnV4LXBjaSBm b3IgdmlzaWJpbGl0eSBdCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBPbiAyMDIxLTA1LTE4IDEwOjA5 LCBBbGV4YW5kcnUgRWxpc2VpIHdyb3RlOgo+Pj4+Pj4+Pj4+PiBBZnRlciBkb2luZyBhIGdpdCBi aXNlY3QgSSB3YXMgYWJsZSB0byB0cmFjZSB0aGUgZm9sbG93aW5nIGVycm9yIHdoZW4gYm9vdGlu ZyBteQo+Pj4+Pj4+Pj4+PiByb2NrcHJvNjQgdjIgKHJrMzM5OSBTb0MpIHdpdGggYSBQQ0lFIE5W TUUgZXhwYW5zaW9uIGNhcmQ6Cj4+Pj4+Pj4+Pj4+IFsuLl0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjMw NTE4M10gcm9ja2NoaXAtcGNpZSBmODAwMDAwMC5wY2llOiBob3N0IGJyaWRnZSAvcGNpZUBmODAw MDAwMCByYW5nZXM6Cj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDUyNDhdIHJvY2tjaGlwLXBjaWUgZjgw MDAwMDAucGNpZTogICAgICBNRU0gMHgwMGZhMDAwMDAwLi4weDAwZmJkZmZmZmYgLT4KPj4+Pj4+ Pj4+Pj4gMHgwMGZhMDAwMDAwCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDUyODVdIHJvY2tjaGlwLXBj aWUgZjgwMDAwMDAucGNpZTogICAgICAgSU8gMHgwMGZiZTAwMDAwLi4weDAwZmJlZmZmZmYgLT4K Pj4+Pj4+Pj4+Pj4gMHgwMGZiZTAwMDAwCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDYyMDFdIHJvY2tj aGlwLXBjaWUgZjgwMDAwMDAucGNpZTogc3VwcGx5IHZwY2llMXY4IG5vdCBmb3VuZCwgdXNpbmcg ZHVtbXkKPj4+Pj4+Pj4+Pj4gcmVndWxhdG9yCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDYzMzRdIHJv Y2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogc3VwcGx5IHZwY2llMHY5IG5vdCBmb3VuZCwgdXNp bmcgZHVtbXkKPj4+Pj4+Pj4+Pj4gcmVndWxhdG9yCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzM3MDVd IHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogUENJIGhvc3QgYnJpZGdlIHRvIGJ1cyAwMDAw OjAwCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzM3MzBdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMg cmVzb3VyY2UgW2J1cyAwMC0xZl0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3Mzc1MV0gcGNpX2J1cyAw MDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4ZmEwMDAwMDAtMHhmYmRmZmZmZiA2NGJp dF0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3Mzc3N10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyBy ZXNvdXJjZSBbaW8gIDB4MDAwMC0weGZmZmZmXSAoYnVzCj4+Pj4+Pj4+Pj4+IGFkZHJlc3MgWzB4 ZmJlMDAwMDAtMHhmYmVmZmZmZl0pCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzM4MzldIHBjaSAwMDAw OjAwOjAwLjA6IFsxZDg3OjAxMDBdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKPj4+Pj4+Pj4+Pj4g WyAgICAwLjM3Mzk3M10gcGNpIDAwMDA6MDA6MDAuMDogc3VwcG9ydHMgRDEKPj4+Pj4+Pj4+Pj4g WyAgICAwLjM3Mzk5Ml0gcGNpIDAwMDA6MDA6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBE MSBEM2hvdAo+Pj4+Pj4+Pj4+PiBbICAgIDAuMzc4NTE4XSBwY2kgMDAwMDowMDowMC4wOiBicmlk Z2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVzIDAwLTAwXSksCj4+Pj4+Pj4+Pj4+IHJlY29u ZmlndXJpbmcKPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3ODc2NV0gcGNpIDAwMDA6MDE6MDAuMDogWzE0 NGQ6YTgwOF0gdHlwZSAwMCBjbGFzcyAweDAxMDgwMgo+Pj4+Pj4+Pj4+PiBbICAgIDAuMzc4ODY5 XSBwY2kgMDAwMDowMTowMC4wOiByZWcgMHgxMDogW21lbSAweDAwMDAwMDAwLTB4MDAwMDNmZmYg NjRiaXRdCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzkwNTFdIHBjaSAwMDAwOjAxOjAwLjA6IE1heCBQ YXlsb2FkIFNpemUgc2V0IHRvIDI1NiAod2FzIDEyOCwgbWF4IDI1NikKPj4+Pj4+Pj4+Pj4gWyAg ICAwLjM3OTY2MV0gcGNpIDAwMDA6MDE6MDAuMDogOC4wMDAgR2IvcyBhdmFpbGFibGUgUENJZSBi YW5kd2lkdGgsIGxpbWl0ZWQgYnkKPj4+Pj4+Pj4+Pj4gMi41IEdUL3MgUENJZSB4NCBsaW5rIGF0 IDAwMDA6MDA6MDAuMCAoY2FwYWJsZSBvZiAzMS41MDQgR2IvcyB3aXRoIDguMCBHVC9zIFBDSWUK Pj4+Pj4+Pj4+Pj4geDQgbGluaykKPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzI2OV0gcGNpX2J1cyAw MDAwOjAxOiBidXNuX3JlczogW2J1cyAwMS0xZl0gZW5kIGlzIHVwZGF0ZWQgdG8gMDEKPj4+Pj4+ Pj4+Pj4gWyAgICAwLjM5MzMxMV0gcGNpIDAwMDA6MDA6MDAuMDogQkFSIDE0OiBubyBzcGFjZSBm b3IgW21lbSBzaXplIDB4MDAxMDAwMDBdCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zOTMzMzNdIHBjaSAw MDAwOjAwOjAwLjA6IEJBUiAxNDogZmFpbGVkIHRvIGFzc2lnbiBbbWVtIHNpemUgMHgwMDEwMDAw MF0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzM1Nl0gcGNpIDAwMDA6MDE6MDAuMDogQkFSIDA6IG5v IHNwYWNlIGZvciBbbWVtIHNpemUgMHgwMDAwNDAwMCA2NGJpdF0KPj4+Pj4+Pj4+Pj4gWyAgICAw LjM5MzM3NV0gcGNpIDAwMDA6MDE6MDAuMDogQkFSIDA6IGZhaWxlZCB0byBhc3NpZ24gW21lbSBz aXplIDB4MDAwMDQwMDAgNjRiaXRdCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zOTMzOTddIHBjaSAwMDAw OjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5Mzgz OV0gcGNpZXBvcnQgMDAwMDowMDowMC4wOiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSA3OAo+Pj4+ Pj4+Pj4+PiBbICAgIDAuMzk0MTY1XSBwY2llcG9ydCAwMDAwOjAwOjAwLjA6IEFFUjogZW5hYmxl ZCB3aXRoIElSUSA3OAo+Pj4+Pj4+Pj4+PiBbLi5dCj4+Pj4+Pj4+Pj4+IHRvIHRoZSBjb21taXQg OWQ1N2U2MWJmNzIzICgib2YvcGNpOiBBZGQgSU9SRVNPVVJDRV9NRU1fNjQgdG8KPj4+Pj4+Pj4+ Pj4gcmVzb3VyY2UgZmxhZ3MgZm9yCj4+Pj4+Pj4+Pj4+IDY0LWJpdCBtZW1vcnkgYWRkcmVzc2Vz IikuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBGV0ZXLCBteSBodW5jaCBpcyB0aGF0IHRoZSBob3N0 IGJyaWRnZSBhZHZlcnRpc2luZyBubyAzMi1iaXQgbWVtb3J5Cj4+Pj4+Pj4+Pj4gcmVzb3VyY2Us IG9ubHkgb25seSBhIHNpbmdsZSA2NC1iaXQgbm9uLXByZWZldGNoYWJsZSBvbmUgKGV2ZW4gdGhv dWdoCj4+Pj4+Pj4+Pj4gaXQncyBlbnRpcmVseSBiZWxvdyA0R0IpIG1pZ2h0IGJlIGEgYml0IHdl aXJkIGFuZCB0cmlwcGluZyBzb21ldGhpbmcKPj4+Pj4+Pj4+PiB1cCBpbiB0aGUgcmVzb3VyY2Ug YXNzaWdubWVudCBjb2RlLiBJdCBjZXJ0YWlubHkgc2VlbXMgbGlrZSB0aGUgdGhpbmcKPj4+Pj4+ Pj4+PiBtb3N0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG9mZmVuZGluZyBjb21taXQuCj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+PiBJJ2QgYmUgdGVtcHRlZCB0byB0cnkgZmlkZGxpbmcgd2l0aCB0aGF0 IGluIHRoZSBEVCAoaS5lLiBjaGFuZ2luZwo+Pj4+Pj4+Pj4+IDB4ODMwMDAwMDAgdG8gMHg4MjAw MDAwMCBpbiB0aGUgUENJZSBub2RlJ3MgInJhbmdlcyIgcHJvcGVydHkpIHRvIHNlZQo+Pj4+Pj4+ Pj4+IGlmIGl0IG1ha2VzIGFueSBkaWZmZXJlbmNlLiBOb3RlIHRoYXQgZXZlbiBpZiBpdCBoZWxw cywgdGhvdWdoLCBJCj4+Pj4+Pj4+Pj4gZG9uJ3Qga25vdyB3aGV0aGVyIHRoYXQncyB0aGUgY29y cmVjdCBmaXggb3IganVzdCBhIGJvZGdlIGFyb3VuZCBhCj4+Pj4+Pj4+Pj4gY29ybmVyLWNhc2Ug YnVnIHNvbWV3aGVyZSBpbiB0aGUgcmVzb3VyY2UgY29kZS4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiAg RnJvbSBkaWdnaW5nIGludG8gdGhpcyBmdXJ0aGVyIHRoZSBmYWlsdXJlIHNlZW1zIHRvIGJlIGR1 ZSB0byBhIG1pc21hdGNoCj4+Pj4+Pj4+PiBvZiBmbGFncyB3aGVuIGFsbG9jYXRpbmcgcmVzb3Vy Y2VzIGluIHBjaV9idXNfYWxsb2NfZnJvbV9yZWdpb24oKSAtCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4g ICAgICBpZiAoKHJlcy0+ZmxhZ3MgXiByLT5mbGFncykgJiB0eXBlX21hc2spCj4+Pj4+Pj4+PiAg ICAgICAgICAgICAgY29udGludWU7Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gVGhvdWdoIEkgYW0gYWxz byBub3Qgc3VyZSB3aHkgdGhlIGZhaWx1cmUgaXMgb25seSBiZWluZyByZXBvcnRlZCBvbgo+Pj4+ Pj4+Pj4gUkszMzk5IC0gZG9lcyBhIHNpbmdsZSA2NC1iaXQgd2luZG93IGhhdmUgYW55dGhpbmcg dG8gZG8gd2l0aCBpdD8KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoZSBOVk1lIGluIHRo ZSBleGFtcGxlIGV4cG9zZXMgYSBzaW5nbGUgNjQtYml0IG5vbi1wcmVmZXRjaGFibGUgQkFSLgo+ Pj4+Pj4+PiBTdWNoIEJBUnMgY2FuIG5vdCBiZSBhbGxvY2F0ZWQgaW4gYSBwcmVmZXRjaGFibGUg aG9zdCBicmlkZ2Ugd2luZG93Cj4+Pj4+Pj4+ICh1bmxpa2UgdGhlIGNvbnZlcnNlLCBpLmUuLCBh bGxvY2F0aW5nIGEgcHJlZmV0Y2hhYmxlIEJBUiBpbiBhCj4+Pj4+Pj4+IG5vbi1wcmVmZXRjaGFi bGUgaG9zdCBicmlkZ2Ugd2luZG93IGlzIGZpbmUpCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IDY0LWJpdCBu b24tcHJlZmV0Y2hhYmxlIGhvc3QgYnJpZGdlIHdpbmRvd3MgY2Fubm90IGJlIGZvcndhcmRlZCBi eSBQQ0kKPj4+Pj4+Pj4gdG8gUENJIGJyaWRnZXMsIHRoZXkgc2ltcGx5IGxhY2sgdGhlIEJBUiBy ZWdpc3RlcnMgdG8gZGVzY3JpYmUgdGhlbS4KPj4+Pj4+Pj4gVGhlcmVmb3JlLCBub24tcHJlZmV0 Y2hhYmxlIGVuZHBvaW50IEJBUnMgKGV2ZW4gNjQtYml0IG9uZXMpIG5lZWQgdG8KPj4+Pj4+Pj4g YmUgY2FydmVkIG91dCBvZiBhIGhvc3QgYnJpZGdlJ3Mgbm9uLXByZWZldGNoYWJsZSAzMi1iaXQg d2luZG93IGlmCj4+Pj4+Pj4+IHRoZXkgbmVlZCB0byBwYXNzIHRocm91Z2ggYSBicmlkZ2UuCj4+ Pj4+Pj4KPj4+Pj4+PiBUaGFuayB5b3UgZm9yIHRoZSBleHBsYW5hdGlvbi4gSSBhbHNvIGxvb2tl ZCBhdCB0aGUgUENJLXRvLVBDSSBCcmlkZ2UKPj4+Pj4+PiBzcGVjIHRvIHVuZGVyc3RhbmQgd2hl cmUgc29tZSBvZiB0aGUgbGltaXRhdGlvbnMgYXJlIGNvbWluZyBmcm9tLgo+Pj4+Pj4+Cj4+Pj4+ Pj4+IFNvIHRoZSBlcnJvciBzZWVtcyB0byBiZSBoZXJlIHRoYXQgdGhlIGhvc3QgYnJpZGdlJ3Mg MzItYml0Cj4+Pj4+Pj4+IG5vbi1wcmVmZXRjaGFibGUgd2luZG93IGhhcyB0aGUgNjQtYml0IGF0 dHJpYnV0ZSBzZXQsIGV2ZW4gdGhvdWdoIGl0Cj4+Pj4+Pj4+IHJlc2lkZXMgYmVsb3cgNCBHQiBl bnRpcmVseS4gSSBzdXBwb3NlIHRoYXQgdGhlIHJlc291cmNlIGFsbG9jYXRpb24KPj4+Pj4+Pj4g Y291bGQgYmUgbWFkZSBtb3JlIGZvcmdpdmluZyAoYW5kIGl0IHdhcyBpbiB0aGUgcGFzdCwgYmVm b3JlIGNvbW1pdAo+Pj4+Pj4+PiA5ZDU3ZTYxYmY3MjMgd2FzIGFwcGxpZWQpLiBIb3dldmVyLCBJ IHdvdWxkIHN0cm9uZ2x5IHJlY29tbWVuZCBub3QKPj4+Pj4+Pj4gZGV2aWF0aW5nIGZyb20gY29t bW9uIHByYWN0aWNlLCBhbmQganVzdCBkZXNjcmliZSB0aGUgMzItYml0Cj4+Pj4+Pj4+IGFkZHJl c3NhYmxlIG5vbi1wcmVmZXRjaGFibGUgcmVzb3VyY2Ugd2luZG93IGFzIHN1Y2guCj4+Pj4+Pj4K Pj4+Pj4+PiBJSVVDLCB0aGUgaG9zdCBicmlkZ2UncyBjb25maWd1cmF0aW9uICg2NC1iaXQgb24g bm9uLXByZWZldGNoYWJsZQo+Pj4+Pj4+IHdpbmRvdykgaXMgYmFzZWQgb24gd2hhdCB0aGUgaGFy ZHdhcmUgYWR2ZXJ0aXNlcy4KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IFdoYXQgZG8geW91IG1lYW4g YnkgJ3doYXQgdGhlIGhhcmR3YXJlIGFkdmVydGlzZXMnPyBUaGUgaG9zdCBicmlkZ2UgaXMKPj4+ Pj4+IGFwcGFyZW50bHkgY29uZmlndXJlZCB0byBkZWNvZGUgYSAzMi1iaXQgYWRkcmVzc2FibGUg d2luZG93IGFzIE1NSU8sCj4+Pj4+PiBhbmQgdGhlIHF1ZXN0aW9uIGlzIHdoeSB0aGlzIHdpbmRv dyBoYXMgdGhlIDY0LWJpdCBhdHRyaWJ1dGUgc2V0IGluCj4+Pj4+PiB0aGUgRFQgZGVzY3JpcHRp b24uCj4+Pj4+Pgo+Pj4+Pj4+IENhbiB5b3UgZWxhYm9yYXRlIG9uIHdoYXQgeW91IGhhdmUgaW4g bWluZCB0byBjb3JyZWN0IHRoZQo+Pj4+Pj4+IG5vbi1wcmVmZXRjaGFibGUgcmVzb3VyY2Ugd2lu ZG93PyBBcmUgeW91IHRoaW5raW5nIG9mIGFkZGluZyBhIHF1aXJrCj4+Pj4+Pj4gc29tZXdoZXJl IHRvIGFkZHJlc3MgdGhpcz8KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IE5vLiBKdXN0IGZpeCB0aGUg RFQuCj4+Pj4+Cj4+Pj4+IEdvb2QgTW9ybmluZywKPj4+Pj4KPj4+Pj4gSSBiZWxpZXZlIFJvYmlu IGlzIGNvcnJlY3QgdGhhdCB0aGVyZSBpcyBtb3JlIHRvIHRoaXMuCj4+Pj4+IFdoaWxlIGF0dGVt cHRpbmcgdG8gd29yayBvdXQgd2h5IGRHUFVzIHdvbid0IHdvcmsgd2l0aCB0aGUgcmszNTZ4Cj4+ Pj4+IHNlcmllcyBQQ0llIGNvbnRyb2xsZXJzLCBDaHJpc3RpYW4gS8O2bmlnIGZyb20gdGhlIGFt ZC1ncHUgZHJpdmVyCj4+Pj4+IG1haWxpbmcgbGlzdCBub3RpY2VkIHRoZSBncHUgd2FzIGluY29y cmVjdGx5IGFsbG9jYXRlZCBhIDY0Yml0Cj4+Pj4+IG5vbi1wcmVmZXRjaGFibGUgQkFSIHdoaWNo IHNob3VsZCBpbnN0ZWFkIGJlIGEgMzIgbm9uLXByZWZldGNoYWJsZQo+Pj4+PiBCQVIuCj4+Pj4+ Cj4+Pj4KPj4+PiBUaGlzIGlzIGR1ZSB0byB0aGUgdHJhbnNsYXRpb24uIEZvciBzb21lIHJlYXNv biwgbHNwY2kgdHJhbnNsYXRlcyB0aGUKPj4+PiBCQVIgdmFsdWVzIHRvIENQVSBhZGRyZXNzZXMs IGJ1dCB0aGUgUENJIHNpZGUgYWRkcmVzc2VzIGFyZSB3aXRoaW4KPj4+PiAzMi1iaXRzLgo+Pj4K Pj4+IFRoZSBrZXJuZWwgbG9nIHJlcG9ydHMgdGhlIHNhbWUgdGhpbmc6Cj4+PiBbICAgIDYuNjYy MTQxXSBwY2kgMDAwMDowMTowMC4wOiByZWcgMHgxMDogW21lbSAweDAwMDAwMDAwLTB4MGZmZmZm ZmYKPj4+IDY0Yml0IHByZWZdCj4+PiBbICAgIDYuNjYyOTYzXSBwY2kgMDAwMDowMTowMC4wOiBy ZWcgMHgxODogW21lbSAweDAwMDAwMDAwLTB4MDAwMWZmZmYgNjRiaXRdCj4+Pgo+Pj4gWW91IGFy ZSBzYXlpbmcgdGhpcyBpcyBhIGRpc3BsYXkgb25seSBpc3N1ZT8KPj4+Cj4+Cj4+IFllcy4gV2hh dCBkbyB0aGUgJ3Jvb3QgYnVzIHJlc291cmNlJyBsb2cgbGluZXMgc2F5IGZvciB0aGVzZSByZWdp b25zPwo+PiBUaG9zZSBzaG91bGQgZ2l2ZSB5b3UgYm90aCB0aGUgQ1BVIGFkZHJlc3MgYXMgd2Vs bCBhcyB0aGUgYnVzIGFkZHJlc3MuCj4gCj4gWyAgICA2LjY3MzQ5N10gcGNpX2J1cyAwMDAwOjAw OiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4MDAwMC0weGZmZmZmXQo+IChidXMgYWRkcmVzcyBb MHgzZjcwMDAwMC0weDNmN2ZmZmZmXSkKPiBbICAgIDYuNjc0NjQyXSBwY2lfYnVzIDAwMDA6MDA6 IHJvb3QgYnVzIHJlc291cmNlIFttZW0KPiAweDMwMDAwMDAwMC0weDMzZjZmZmZmZl0gKGJ1cyBh ZGRyZXNzIFsweDAwMDAwMDAwLTB4M2Y2ZmZmZmZdKQoKQXNzdW1pbmcgUkszNTZ4IGhhcyBhIHNp bWlsYXIgbWVtb3J5IG1hcCB0byBvdGhlciBSb2NrY2hpcCBTb0NzLCBJIApzdXNwZWN0IHlvdSBt YXkgaGF2ZSBhIGxhcmdlciBpc3N1ZSB3aXRoIHlvdXIgbWVtIHNwYWNlIHdpbmRvdyBzaGFkb3dp bmcgCmEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgeW91ciBSQU0uCgpSb2Jpbi4KCj4gCj4gSSB0d2Vh a2VkIHRoZSBvcmlnaW5hbCBSb2NrY2hpcCB2YWx1ZXMgdG8gcGxhY2UgdGhlIG5vbi1wcmVmZXRj aGFibGUKPiBtZW1vcnkgZmlyc3Qgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW8gbGF0ZXIg aW4gdGhpcyBib290Lgo+IAo+Pgo+Pgo+Pj4+Cj4+Pj4gQXJlIHlvdSBzdXJlIHRoZSBhbWRncHUg ZHJpdmVyIGNhbiBldmVuIGRlYWwgd2l0aCBub24tMToxIGhvc3QgYnJpZGdlcz8KPj4+Cj4+PiBJ IGNhbm5vdCBhbnN3ZXIgdGhpcyBhcyBJJ20gbm90IGFuIGFtZGdwdSBkZXYuCj4+Pgo+Pj4+Cj4+ Pj4+IFRoZSByYW5nZXMgY3VycmVudGx5IHNldCBhcmU6Cj4+Pj4+IHJhbmdlcyA9IDwweDgxMDAw MDAwIDB4MCAweDAwODAwMDAwIDB4MyAweDAwODAwMDAwIDB4MCAweDAwMTAwMDAwCj4+Pj4+IDB4 ODIwMDAwMDAgMHgwIDB4MDA5MDAwMDAgMHgzIDB4MDA5MDAwMDAgMHgwIDB4M2Y3MDAwMDA+Owo+ Pj4+Pgo+Pj4+Cj4+Pj4gU28geW91IGhhdmUgdHdvIHJhbmdlcyBoZXJlLgo+Pj4KPj4+IFRoZSBJ TyBhbmQgUENJIG1lbW9yeSByYW5nZXMuCj4+Pgo+Pj4gVGhlcmUgaXMgYSB0aGlyZCByYW5nZSwg dGhlIGNvbmZpZ3VyYXRpb24gcmFuZ2UsIHdoaWNoIGlzIGRlZmluZWQgaW4KPj4+IHRoZSByZWcg YmxvY2s6Cj4+PiA8MHgzIDB4MDAwMDAwMDAgMHgwIDB4ODAwMDAwPgo+Pj4gQWxsIHRocmVlIGFy ZSBzaGFyZWQgaW4gdGhlIHNhbWUgMUdCIHdpbmRvdyBvbiB0aGUgcmszNTZ4Lgo+Pj4KPj4KPj4g QnV0IHRoZSByZWcgYmxvY2sgaXMgbm90IGEgcmVzb3VyY2Ugd2luZG93LCBpdCBpcyBhIGNvbmZp Z3VyYXRpb24KPj4gcmFuZ2UgdG8gcHJvZ3JhbSB0aGUgaG9zdCBicmlkZ2UuCj4+Cj4+PiBodHRw czovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NS4xMy1yYzMvc291cmNlL0RvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2llLnR4dCNMMTIKPj4+Cj4+ Pj4KPj4+Pj4gYnV0IHRoZSBmaW5hbCBhbGxvY2F0aW9uIHdhczoKPj4+Pj4KPj4+Pj4gbHNwY2kg LXYKPj4+Pj4gMDA6MDAuMCBQQ0kgYnJpZGdlOiBGdXpob3UgUm9ja2NoaXAgRWxlY3Ryb25pY3Mg Q28uLCBMdGQgRGV2aWNlIDM1NjYKPj4+Pj4gKHJldiAwMSkgKHByb2ctaWYgMDAgW05vcm1hbCBk ZWNvZGVdKQo+Pj4+PiAgICAgICAgICBGbGFnczogYnVzIG1hc3RlciwgZmFzdCBkZXZzZWwsIGxh dGVuY3kgMCwgSVJRIDk2Cj4+Pj4+ICAgICAgICAgIEJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5 PTAxLCBzdWJvcmRpbmF0ZT1mZiwgc2VjLWxhdGVuY3k9MAo+Pj4+PiAgICAgICAgICBJL08gYmVo aW5kIGJyaWRnZTogMDAwMDEwMDAtMDAwMDFmZmYgW3NpemU9NEtdCj4+Pj4+ICAgICAgICAgIE1l bW9yeSBiZWhpbmQgYnJpZGdlOiAwMDkwMDAwMC0wMDlmZmZmZiBbc2l6ZT0xTV0KPj4+Pj4gICAg ICAgICAgUHJlZmV0Y2hhYmxlIG1lbW9yeSBiZWhpbmQgYnJpZGdlOgo+Pj4+PiAwMDAwMDAwMDEw MDAwMDAwLTAwMDAwMDAwMWZmZmZmZmYgW3NpemU9MjU2TV0KPj4+Pgo+Pj4+IEJ1dCB0aGUgaG9z dCBicmlkZ2Uvcm9vdCBwb3J0IGRlY29kZXMgdHdvIGRpc2pvaW50IHJlZ2lvbnM/Pwo+Pj4+Cj4+ Pj4+ICAgICAgICAgIEV4cGFuc2lvbiBST00gYXQgMzAwYTAwMDAwIFt2aXJ0dWFsXSBbZGlzYWJs ZWRdIFtzaXplPTY0S10KPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1h bmFnZW1lbnQgdmVyc2lvbiAzCj4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzUwXSBNU0k6 IEVuYWJsZSsgQ291bnQ9MS8zMiBNYXNrYWJsZS0gNjRiaXQrCj4+Pj4+ICAgICAgICAgIENhcGFi aWxpdGllczogWzcwXSBFeHByZXNzIFJvb3QgUG9ydCAoU2xvdC0pLCBNU0kgMDAKPj4+Pj4gICAg ICAgICAgQ2FwYWJpbGl0aWVzOiBbYjBdIE1TSS1YOiBFbmFibGUtIENvdW50PTEgTWFza2VkLQo+ Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxMDBdIEFkdmFuY2VkIEVycm9yIFJlcG9ydGlu Zwo+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNDhdIFNlY29uZGFyeSBQQ0kgRXhwcmVz cwo+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNjBdIEwxIFBNIFN1YnN0YXRlcwo+Pj4+ PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNzBdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlv bjogSUQ9MDAwMiBSZXY9NAo+Pj4+PiBMZW49MTAwIDw/Pgo+Pj4+PiAgICAgICAgICBLZXJuZWwg ZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKPj4+Pj4KPj4+Pj4gMDE6MDAuMCBWR0EgY29tcGF0aWJs ZSBjb250cm9sbGVyOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCj4+Pj4+IFtBTUQvQVRJ XSBUdXJrcyBQUk8gW1JhZGVvbiBIRCA3NTcwXSAocHJvZy1pZiAwMCBbVkdBIGNvbnRyb2xsZXJd KQo+Pj4+PiAgICAgICAgICBTdWJzeXN0ZW06IERlbGwgVHVya3MgUFJPIFtSYWRlb24gSEQgNzU3 MF0KPj4+Pj4gICAgICAgICAgRmxhZ3M6IGJ1cyBtYXN0ZXIsIGZhc3QgZGV2c2VsLCBsYXRlbmN5 IDAsIElSUSA5NQo+Pj4+PiAgICAgICAgICBNZW1vcnkgYXQgMzEwMDAwMDAwICg2NC1iaXQsIHBy ZWZldGNoYWJsZSkgW3NpemU9MjU2TV0KPj4+Pj4gICAgICAgICAgTWVtb3J5IGF0IDMwMDkwMDAw MCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xMjhLXQo+Pj4+PiAgICAgICAgICBJ L08gcG9ydHMgYXQgMTAwMCBbc2l6ZT0yNTZdCj4+Pj4+ICAgICAgICAgIEV4cGFuc2lvbiBST00g YXQgMzAwOTIwMDAwIFtkaXNhYmxlZF0gW3NpemU9MTI4S10KPj4+Pj4gICAgICAgICAgQ2FwYWJp bGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCj4+Pj4+ICAgICAgICAgIENh cGFiaWxpdGllczogWzU4XSBFeHByZXNzIExlZ2FjeSBFbmRwb2ludCwgTVNJIDAwCj4+Pj4+ICAg ICAgICAgIENhcGFiaWxpdGllczogW2EwXSBNU0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxl LSA2NGJpdCsKPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbMTAwXSBWZW5kb3IgU3BlY2lm aWMgSW5mb3JtYXRpb246IElEPTAwMDEgUmV2PTEKPj4+Pj4gTGVuPTAxMCA8Pz4KPj4+Pj4gICAg ICAgICAgQ2FwYWJpbGl0aWVzOiBbMTUwXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcKPj4+Pj4g ICAgICAgICAgS2VybmVsIGRyaXZlciBpbiB1c2U6IHJhZGVvbgo+Pj4+Pgo+Pj4+PiAwMTowMC4x IEF1ZGlvIGRldmljZTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBbQU1EL0FUSV0gVHVy a3MKPj4+Pj4gSERNSSBBdWRpbyBbUmFkZW9uIEhEIDY1MDAvNjYwMCAvIDY3MDBNIFNlcmllc10K Pj4+Pj4gICAgICAgICAgU3Vic3lzdGVtOiBEZWxsIFR1cmtzIEhETUkgQXVkaW8gW1JhZGVvbiBI RCA2NTAwLzY2MDAgLyA2NzAwTSBTZXJpZXNdCj4+Pj4+ICAgICAgICAgIEZsYWdzOiBidXMgbWFz dGVyLCBmYXN0IGRldnNlbCwgbGF0ZW5jeSAwLCBJUlEgOTgKPj4+Pj4gICAgICAgICAgTWVtb3J5 IGF0IDMwMDk0MDAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xNktdCj4+Pj4+ ICAgICAgICAgIENhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwo+ Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyBMZWdhY3kgRW5kcG9pbnQs IE1TSSAwMAo+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUrIENv dW50PTEvMSBNYXNrYWJsZS0gNjRiaXQrCj4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzEw MF0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xCj4+Pj4+IExlbj0w MTAgPD8+Cj4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzE1MF0gQWR2YW5jZWQgRXJyb3Ig UmVwb3J0aW5nCj4+Pj4+ICAgICAgICAgIEtlcm5lbCBkcml2ZXIgaW4gdXNlOiBzbmRfaGRhX2lu dGVsCj4+Pj4+Cj4+Pj4+IFRoaXMgd2lsbCBvYnZpb3VzbHkgY2xvYmJlciByZWdpc3RlcnMgZHVy aW5nIHdyaXRlcy4KPj4+Pgo+Pj4+IEkgZG9uJ3QgZm9sbG93LiBXaGljaCB3cml0ZXMgd2lsbCBj bG9iYmVyIHdoaWNoIHJlZ2lzdGVycywgYW5kIGhvdyBpcwo+Pj4+IGl0IG9idmlvdXM/Cj4+Pgo+ Pj4gV3JpdGluZyBhIDY0IGJpdCB3b3JkIGludG8gYSAzMiBiaXQgcmVnaXN0ZXIgd2lsbCBlaXRo ZXIgY2xvYmJlciB0aGUKPj4+IG5leHQgaGlnaGVyIDMyIGJpdCByZWdpc3Rlci4KPj4+IFF1b3Rp bmcgQ2hyaXN0aWFuOgo+Pj4gIldoZW4geW91IHByb2dyYW0gYSAzMmJpdCBCQVIgYXMgNjRiaXQg eW91IG92ZXJ3cml0ZSB0aGUgcmVnaXN0ZXIgYmVoaW5kCj4+PiB0aGUgQkFSIGFkZHJlc3Mgd2l0 aCB0aGUgdXBwZXIgMzJiaXRzIG9mIHRoZSA2NGJpdCBhZGRyZXNzIHZhbHVlLgo+Pj4gU28gZXZl biBpZiB0aGUgYWxsb2NhdGlvbiBmaXRzIGludG8gMzJiaXRzLCB0aGUgZXh0cmEgcmVnaXN0ZXIg d3JpdGUKPj4+IHdpbGwgY2VydGFpbmx5IHB1dCB5b3VyIGRldmljZSBpbnRvIGEgYmFuYW5hIHN0 YXRlLiIKPj4+Cj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9hbWQt Z2Z4LzIwMjEtTWF5LzA2NDIzMi5odG1sCj4+Pgo+Pgo+PiBJIHNlcmlvdXNseSBkb3VidCB0aGF0 IHRoaXMgaXMgd2hhdCBpcyBnb2luZyBvbiBoZXJlLgo+Pgo+PiBsc3BjaSAteCB3aWxsIGdpdmUg eW91IHRoZSBiYXJlIEJBUiB2YWx1ZXMgLSBJIHN1c3BlY3QgdGhhdCB0aG9zZSBhcmUKPj4gcHJv YmFibHkgZmluZS4KPiAKPiBsc3BjaSAteAo+IDAwOjAwLjAgUENJIGJyaWRnZTogRnV6aG91IFJv Y2tjaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkIERldmljZSAzNTY2IChyZXYgMDEpCj4gMDA6IDg3 IDFkIDY2IDM1IDA3IDA1IDEwIDQwIDAxIDAwIDA0IDA2IDAwIDAwIDAxIDAwCj4gMTA6IDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAxIGZmIDAwIDEwIDEwIDAwIDIwCj4gMjA6IDAwIDEwIDAw IDEwIDAxIDAwIGYxIDBmIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gMzA6IDAwIDAwIDAwIDAw IDQwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVmIDAxIDAyIDAwCj4gCj4gMDE6MDAuMCBWR0EgY29t cGF0aWJsZSBjb250cm9sbGVyOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCj4gW0FNRC9B VEldIFR1cmtzIFBSTyBbUmFkZW9uIEhEIDc1NzBdCj4gMDA6IDAyIDEwIDVkIDY3IDA3IDAwIDEw IDIwIDAwIDAwIDAwIDAzIDAwIDAwIDgwIDAwCj4gMTA6IDBjIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDA0IDAwIDAwIDEwIDAwIDAwIDAwIDAwCj4gMjA6IDAxIDEwIDcwIDNmIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDI4IDEwIDIwIDJiCj4gMzA6IDAwIDAwIDAyIDEwIDUwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDVmIDAxIDAwIDAwCj4gCj4gMDE6MDAuMSBBdWRpbyBkZXZpY2U6IEFkdmFuY2VkIE1p Y3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldIFR1cmtzCj4gSERNSSBBdWRpbyBbUmFkZW9uIEhE IDY1MDAvNjYwMCAvIDY3MDBNIFNlcmllc10KPiAwMDogMDIgMTAgOTAgYWEgMDYgMDAgMTAgMjAg MDAgMDAgMDMgMDQgMDAgMDAgODAgMDAKPiAxMDogMDQgMDAgMDQgMTAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAKPiAyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMjggMTAgOTAgYWEKPiAzMDogMDAgMDAgMDAgMDAgNTAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgZmYgMDIgMDAgMDAKPiAKPj4KPj4KPj4+Pgo+Pj4+PiBBbHNvLCBpZiA8MHg4MjAwMDAwMD4g KDMyIGJpdCkgaXMgY2hhbmdlZCB0byA8MHg4MzAwMDAwMD4gKDY0IGJpdCksCj4+Pj4+IG1vc3Qg b2YgdGhlIGFsbG9jYXRpb25zIGZvciB0aGUgZEdQVSBmYWlsIGR1ZSB0byBubyB2YWxpZCByZWdp b25zCj4+Pj4+IGF2YWlsYWJsZS4KPj4+Pj4KPj4+Pgo+Pj4+IEJ1dCB3YXNuJ3QgdGhlIG9yaWdp bmFsIHByb2JsZW0gdGhhdCB0aGUgcmVzb3VyY2Ugd2luZG93IHdhcyA2NC1iaXQgdG8KPj4+PiBi ZWdpbiB3aXRoPyBBcmUgeW91IHN1cmUgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdGhlIHNhbWUgcHJv YmxlbSBoZXJlPwo+Pj4KPj4+IFRoZSByazMzOTkgaW4gdGhlIG9yaWdpbmFsIHJlcG9ydCBoYXMg YSAzMk1CIG1lbW9yeSB3aW5kb3cgaW4gdGhlCj4+PiB1cHBlciBlbmQgb2YgdGhlIDRHQiByYW5n ZS4KPj4+IFRoZSByazM1NnggaGFzIGEgc2ltaWxhciBsYXlvdXQsIG9yIGl0IGNhbiB1c2UgYSAx R0Igd2luZG93IGF2YWlsYWJsZQo+Pj4gYXQgPDB4MyAweDAwMDAwMDAwPi4KPj4+IFJvY2tjaGlw J3MgZGVmYXVsdCB3aW5kb3dzIGFyZSBkZWZpbmVkIGFzIDY0Yml0Lgo+Pj4KPj4+IFRoZSByazMz OTkgZG9lc24ndCBoYXZlIGVub3VnaCBzcGFjZSB0byByZWFzb25hYmx5IGRlZmluZSB0d28gd2lu ZG93cywKPj4+IG9uZSAzMmJpdCwgb25lIDY0Yml0LCB0byB3b3JrIGFyb3VuZCBhbiBhbGxvY2F0 aW9uIGJ1Zy4KPj4+IFRoZXNlIGFyZSB0aGUgZGVmaW5lZCByZWdpb25zIGluIHRoZSByazMzOTk6 Cj4+PiByYW5nZXMgPSA8MHg4MzAwMDAwMCAweDAgMHhmYTAwMDAwMCAweDAgMHhmYTAwMDAwMCAw eDAgMHgxZTAwMDAwPiwKPj4+IDwweDgxMDAwMDAwIDB4MCAweGZiZTAwMDAwIDB4MCAweGZiZTAw MDAwIDB4MCAweDEwMDAwMD47Cj4+Pgo+Pgo+PiBBbGwgeW91IHJlYWxseSBuZWVkIGlzIGEgMzIt Yml0IG5vbi1wcmVmZXRjaGFibGUgcmVzb3VyY2Ugd2luZG93OiBhbnkKPj4gQkFSIGNhbiBiZSBh bGxvY2F0ZWQgZnJvbSB0aGF0LiBBIDY0LWJpdCBCQVIgY2FuIGNhcnJ5IGEgMzItYml0IG51bWJl cgo+PiAoanVzdCBhZGQgemVyb2VzIGF0IHRoZSB0b3ApLCBhbmQgYSBwcmVmZXRjaGFibGUgQkFS IGNhbiBoYXBwaWx5IGxpdmUKPj4gaW4gYSBub24tcHJlZmV0Y2hhYmxlIHdpbmRvdywgd2l0aCBh IHRoZW9yZXRpY2FsIHBlcmZvcm1hbmNlIGltcGFjdCBpZgo+PiB0aGUgT1MgYWN0dWFsbHkgZG9l cyB1c2UgZGlmZmVyZW50IG1lbW9yeSBhdHRyaWJ1dGVzIGZvciB0aGUKPj4gcHJlZmV0Y2hhYmxl IHdpbmRvdyAoYnV0IEkgZG9uJ3QgdGhpbmsgTGludXggZXZlciBoYW5kbGVzIGl0IHRoaXMgd2F5 KQo+IAo+IFNvIGlzIHRoZSBJTyByYW5nZSBuZWNlc3NhcnkgYXMgd2VsbCBvciB3aWxsIGl0IGJl IGF1dG9tYXRpY2FsbHkKPiBhbGxvY2F0ZWQgYXMgd2VsbD8KPiAKPj4KPj4KPj4+Cj4+Pj4KPj4+ Pgo+Pj4+Pj4KPj4+Pj4+PiBJIGFtIGhhcHB5IHRvIHB1dCBzb21ldGhpbmcgdG9nZXRoZXIgb25j ZSBJIHVuZGVyc3RhbmQgdGhlIHByZWZlcnJlZCB3YXkKPj4+Pj4+PiB0byBnbyBhYm91dCBpdC4K Pj4+Pj4+Pgo+Pj4+Pj4+IFRoYW5rcywKPj4+Pj4+PiBQdW5pdAo+Pj4+Pj4+Cj4+Pj4+Pj4gWy4u Ll0KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4+Pj4+PiBMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKPj4+Pj4+ IExpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+Pj4+IGh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxp bmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK 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 X-Spam-Level: X-Spam-Status: No, score=-5.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD3BDC2B9F8 for ; Tue, 25 May 2021 17:28:09 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A297E610CE for ; Tue, 25 May 2021 17:28:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A297E610CE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=f3zNYgKguYvz/rZdpznAWUo7bLf8AqIyrIkQna5t37c=; b=cFxXsTVY/dGce7wr5gvL2M3Ype gyENLAEoPXHHZyB2fcuEY7mzeKuJ0KaWgUPJNNLKb8ZU7Xh9MVtHrtg+S6XDf9YJb4qG2ogDIhE+w CXyqspKQflMWtJf3pjebzKsDbokw1UIu/WJvMO+jyxNXip3nfu2+S6nhbDycSSzaPAQql/Q0MERTH PaGCB+bUwSeM5rROWhLEyHlZDVwXbBaOzKn5RwkVdUTHS+M+dPQVbQtdccmcHsDpIwaENnOhLGtTw pR5Ny7OV3vapt3kCvaC6bR+RyGSLW52n0vmGDwEjDDSkbOynqWrxYD9qRS+cGmlaeZP5crYotMFJG yYzYOrrg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1llaoe-006qxW-Aw; Tue, 25 May 2021 17:26:04 +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 1llaoW-006quf-TC; Tue, 25 May 2021 17:26:00 +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 7B6761516; Tue, 25 May 2021 10:25:54 -0700 (PDT) Received: from [10.57.73.64] (unknown [10.57.73.64]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 86ACB3F73B; Tue, 25 May 2021 10:25:52 -0700 (PDT) Subject: Re: [BUG] rockpro64: PCI BAR reassignment broken by commit 9d57e61bf723 ("of/pci: Add IORESOURCE_MEM_64 to resource flags for 64-bit memory addresses") To: Peter Geis , Ard Biesheuvel Cc: Punit Agrawal , Alexandru Elisei , Linux Kernel Mailing List , "open list:ARM/Rockchip SoC..." , arm-mail-list , Heiko Stuebner , Leonardo Bras , Rob Herring , PCI , =?UTF-8?Q?Christian_K=c3=b6nig?= References: <7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com> <01efd004-1c50-25ca-05e4-7e4ef96232e2@arm.com> <87eedxbtkn.fsf@stealth> <877djnaq11.fsf@stealth> From: Robin Murphy Message-ID: <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> Date: Tue, 25 May 2021 18:25:46 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210525_102557_160094_B475ED23 X-CRM114-Status: GOOD ( 39.20 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMS0wNS0yNSAxODowMSwgUGV0ZXIgR2VpcyB3cm90ZToKPiBPbiBUdWUsIE1heSAyNSwg MjAyMSBhdCAxMjo0NCBQTSBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPiB3cm90ZToK Pj4KPj4gT24gVHVlLCAyNSBNYXkgMjAyMSBhdCAxODoyMywgUGV0ZXIgR2VpcyA8cGd3aXBlb3V0 QGdtYWlsLmNvbT4gd3JvdGU6Cj4+Pgo+Pj4gT24gVHVlLCBNYXkgMjUsIDIwMjEgYXQgMTE6NTUg QU0gQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4gd3JvdGU6Cj4+Pj4KPj4+PiBPbiBU dWUsIDI1IE1heSAyMDIxIGF0IDE3OjM0LCBQZXRlciBHZWlzIDxwZ3dpcGVvdXRAZ21haWwuY29t PiB3cm90ZToKPj4+Pj4KPj4+Pj4gT24gVHVlLCBNYXkgMjUsIDIwMjEgYXQgOTo1NyBBTSBBcmQg Qmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPiB3cm90ZToKPj4+Pj4+Cj4+Pj4+PiBPbiBUdWUs IDI1IE1heSAyMDIxIGF0IDE1OjQyLCBQdW5pdCBBZ3Jhd2FsIDxwdW5pdGFncmF3YWxAZ21haWwu Y29tPiB3cm90ZToKPj4+Pj4+Pgo+Pj4+Pj4+IEhpIEFyZCwKPj4+Pj4+Pgo+Pj4+Pj4+IEFyZCBC aWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+IHdyaXRlczoKPj4+Pj4+Pgo+Pj4+Pj4+PiBPbiBT dW4sIDIzIE1heSAyMDIxIGF0IDEzOjA2LCBQdW5pdCBBZ3Jhd2FsIDxwdW5pdGFncmF3YWxAZ21h aWwuY29tPiB3cm90ZToKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBSb2JpbiBNdXJwaHkgPHJvYmluLm11 cnBoeUBhcm0uY29tPiB3cml0ZXM6Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IFsgK2xpbnV4LXBjaSBm b3IgdmlzaWJpbGl0eSBdCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBPbiAyMDIxLTA1LTE4IDEwOjA5 LCBBbGV4YW5kcnUgRWxpc2VpIHdyb3RlOgo+Pj4+Pj4+Pj4+PiBBZnRlciBkb2luZyBhIGdpdCBi aXNlY3QgSSB3YXMgYWJsZSB0byB0cmFjZSB0aGUgZm9sbG93aW5nIGVycm9yIHdoZW4gYm9vdGlu ZyBteQo+Pj4+Pj4+Pj4+PiByb2NrcHJvNjQgdjIgKHJrMzM5OSBTb0MpIHdpdGggYSBQQ0lFIE5W TUUgZXhwYW5zaW9uIGNhcmQ6Cj4+Pj4+Pj4+Pj4+IFsuLl0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjMw NTE4M10gcm9ja2NoaXAtcGNpZSBmODAwMDAwMC5wY2llOiBob3N0IGJyaWRnZSAvcGNpZUBmODAw MDAwMCByYW5nZXM6Cj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDUyNDhdIHJvY2tjaGlwLXBjaWUgZjgw MDAwMDAucGNpZTogICAgICBNRU0gMHgwMGZhMDAwMDAwLi4weDAwZmJkZmZmZmYgLT4KPj4+Pj4+ Pj4+Pj4gMHgwMGZhMDAwMDAwCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDUyODVdIHJvY2tjaGlwLXBj aWUgZjgwMDAwMDAucGNpZTogICAgICAgSU8gMHgwMGZiZTAwMDAwLi4weDAwZmJlZmZmZmYgLT4K Pj4+Pj4+Pj4+Pj4gMHgwMGZiZTAwMDAwCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDYyMDFdIHJvY2tj aGlwLXBjaWUgZjgwMDAwMDAucGNpZTogc3VwcGx5IHZwY2llMXY4IG5vdCBmb3VuZCwgdXNpbmcg ZHVtbXkKPj4+Pj4+Pj4+Pj4gcmVndWxhdG9yCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDYzMzRdIHJv Y2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogc3VwcGx5IHZwY2llMHY5IG5vdCBmb3VuZCwgdXNp bmcgZHVtbXkKPj4+Pj4+Pj4+Pj4gcmVndWxhdG9yCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzM3MDVd IHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogUENJIGhvc3QgYnJpZGdlIHRvIGJ1cyAwMDAw OjAwCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzM3MzBdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMg cmVzb3VyY2UgW2J1cyAwMC0xZl0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3Mzc1MV0gcGNpX2J1cyAw MDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4ZmEwMDAwMDAtMHhmYmRmZmZmZiA2NGJp dF0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3Mzc3N10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyBy ZXNvdXJjZSBbaW8gIDB4MDAwMC0weGZmZmZmXSAoYnVzCj4+Pj4+Pj4+Pj4+IGFkZHJlc3MgWzB4 ZmJlMDAwMDAtMHhmYmVmZmZmZl0pCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzM4MzldIHBjaSAwMDAw OjAwOjAwLjA6IFsxZDg3OjAxMDBdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKPj4+Pj4+Pj4+Pj4g WyAgICAwLjM3Mzk3M10gcGNpIDAwMDA6MDA6MDAuMDogc3VwcG9ydHMgRDEKPj4+Pj4+Pj4+Pj4g WyAgICAwLjM3Mzk5Ml0gcGNpIDAwMDA6MDA6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBE MSBEM2hvdAo+Pj4+Pj4+Pj4+PiBbICAgIDAuMzc4NTE4XSBwY2kgMDAwMDowMDowMC4wOiBicmlk Z2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVzIDAwLTAwXSksCj4+Pj4+Pj4+Pj4+IHJlY29u ZmlndXJpbmcKPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3ODc2NV0gcGNpIDAwMDA6MDE6MDAuMDogWzE0 NGQ6YTgwOF0gdHlwZSAwMCBjbGFzcyAweDAxMDgwMgo+Pj4+Pj4+Pj4+PiBbICAgIDAuMzc4ODY5 XSBwY2kgMDAwMDowMTowMC4wOiByZWcgMHgxMDogW21lbSAweDAwMDAwMDAwLTB4MDAwMDNmZmYg NjRiaXRdCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzkwNTFdIHBjaSAwMDAwOjAxOjAwLjA6IE1heCBQ YXlsb2FkIFNpemUgc2V0IHRvIDI1NiAod2FzIDEyOCwgbWF4IDI1NikKPj4+Pj4+Pj4+Pj4gWyAg ICAwLjM3OTY2MV0gcGNpIDAwMDA6MDE6MDAuMDogOC4wMDAgR2IvcyBhdmFpbGFibGUgUENJZSBi YW5kd2lkdGgsIGxpbWl0ZWQgYnkKPj4+Pj4+Pj4+Pj4gMi41IEdUL3MgUENJZSB4NCBsaW5rIGF0 IDAwMDA6MDA6MDAuMCAoY2FwYWJsZSBvZiAzMS41MDQgR2IvcyB3aXRoIDguMCBHVC9zIFBDSWUK Pj4+Pj4+Pj4+Pj4geDQgbGluaykKPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzI2OV0gcGNpX2J1cyAw MDAwOjAxOiBidXNuX3JlczogW2J1cyAwMS0xZl0gZW5kIGlzIHVwZGF0ZWQgdG8gMDEKPj4+Pj4+ Pj4+Pj4gWyAgICAwLjM5MzMxMV0gcGNpIDAwMDA6MDA6MDAuMDogQkFSIDE0OiBubyBzcGFjZSBm b3IgW21lbSBzaXplIDB4MDAxMDAwMDBdCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zOTMzMzNdIHBjaSAw MDAwOjAwOjAwLjA6IEJBUiAxNDogZmFpbGVkIHRvIGFzc2lnbiBbbWVtIHNpemUgMHgwMDEwMDAw MF0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzM1Nl0gcGNpIDAwMDA6MDE6MDAuMDogQkFSIDA6IG5v IHNwYWNlIGZvciBbbWVtIHNpemUgMHgwMDAwNDAwMCA2NGJpdF0KPj4+Pj4+Pj4+Pj4gWyAgICAw LjM5MzM3NV0gcGNpIDAwMDA6MDE6MDAuMDogQkFSIDA6IGZhaWxlZCB0byBhc3NpZ24gW21lbSBz aXplIDB4MDAwMDQwMDAgNjRiaXRdCj4+Pj4+Pj4+Pj4+IFsgICAgMC4zOTMzOTddIHBjaSAwMDAw OjAwOjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMV0KPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5Mzgz OV0gcGNpZXBvcnQgMDAwMDowMDowMC4wOiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSA3OAo+Pj4+ Pj4+Pj4+PiBbICAgIDAuMzk0MTY1XSBwY2llcG9ydCAwMDAwOjAwOjAwLjA6IEFFUjogZW5hYmxl ZCB3aXRoIElSUSA3OAo+Pj4+Pj4+Pj4+PiBbLi5dCj4+Pj4+Pj4+Pj4+IHRvIHRoZSBjb21taXQg OWQ1N2U2MWJmNzIzICgib2YvcGNpOiBBZGQgSU9SRVNPVVJDRV9NRU1fNjQgdG8KPj4+Pj4+Pj4+ Pj4gcmVzb3VyY2UgZmxhZ3MgZm9yCj4+Pj4+Pj4+Pj4+IDY0LWJpdCBtZW1vcnkgYWRkcmVzc2Vz IikuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBGV0ZXLCBteSBodW5jaCBpcyB0aGF0IHRoZSBob3N0 IGJyaWRnZSBhZHZlcnRpc2luZyBubyAzMi1iaXQgbWVtb3J5Cj4+Pj4+Pj4+Pj4gcmVzb3VyY2Us IG9ubHkgb25seSBhIHNpbmdsZSA2NC1iaXQgbm9uLXByZWZldGNoYWJsZSBvbmUgKGV2ZW4gdGhv dWdoCj4+Pj4+Pj4+Pj4gaXQncyBlbnRpcmVseSBiZWxvdyA0R0IpIG1pZ2h0IGJlIGEgYml0IHdl aXJkIGFuZCB0cmlwcGluZyBzb21ldGhpbmcKPj4+Pj4+Pj4+PiB1cCBpbiB0aGUgcmVzb3VyY2Ug YXNzaWdubWVudCBjb2RlLiBJdCBjZXJ0YWlubHkgc2VlbXMgbGlrZSB0aGUgdGhpbmcKPj4+Pj4+ Pj4+PiBtb3N0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG9mZmVuZGluZyBjb21taXQuCj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+PiBJJ2QgYmUgdGVtcHRlZCB0byB0cnkgZmlkZGxpbmcgd2l0aCB0aGF0 IGluIHRoZSBEVCAoaS5lLiBjaGFuZ2luZwo+Pj4+Pj4+Pj4+IDB4ODMwMDAwMDAgdG8gMHg4MjAw MDAwMCBpbiB0aGUgUENJZSBub2RlJ3MgInJhbmdlcyIgcHJvcGVydHkpIHRvIHNlZQo+Pj4+Pj4+ Pj4+IGlmIGl0IG1ha2VzIGFueSBkaWZmZXJlbmNlLiBOb3RlIHRoYXQgZXZlbiBpZiBpdCBoZWxw cywgdGhvdWdoLCBJCj4+Pj4+Pj4+Pj4gZG9uJ3Qga25vdyB3aGV0aGVyIHRoYXQncyB0aGUgY29y cmVjdCBmaXggb3IganVzdCBhIGJvZGdlIGFyb3VuZCBhCj4+Pj4+Pj4+Pj4gY29ybmVyLWNhc2Ug YnVnIHNvbWV3aGVyZSBpbiB0aGUgcmVzb3VyY2UgY29kZS4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiAg RnJvbSBkaWdnaW5nIGludG8gdGhpcyBmdXJ0aGVyIHRoZSBmYWlsdXJlIHNlZW1zIHRvIGJlIGR1 ZSB0byBhIG1pc21hdGNoCj4+Pj4+Pj4+PiBvZiBmbGFncyB3aGVuIGFsbG9jYXRpbmcgcmVzb3Vy Y2VzIGluIHBjaV9idXNfYWxsb2NfZnJvbV9yZWdpb24oKSAtCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4g ICAgICBpZiAoKHJlcy0+ZmxhZ3MgXiByLT5mbGFncykgJiB0eXBlX21hc2spCj4+Pj4+Pj4+PiAg ICAgICAgICAgICAgY29udGludWU7Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gVGhvdWdoIEkgYW0gYWxz byBub3Qgc3VyZSB3aHkgdGhlIGZhaWx1cmUgaXMgb25seSBiZWluZyByZXBvcnRlZCBvbgo+Pj4+ Pj4+Pj4gUkszMzk5IC0gZG9lcyBhIHNpbmdsZSA2NC1iaXQgd2luZG93IGhhdmUgYW55dGhpbmcg dG8gZG8gd2l0aCBpdD8KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoZSBOVk1lIGluIHRo ZSBleGFtcGxlIGV4cG9zZXMgYSBzaW5nbGUgNjQtYml0IG5vbi1wcmVmZXRjaGFibGUgQkFSLgo+ Pj4+Pj4+PiBTdWNoIEJBUnMgY2FuIG5vdCBiZSBhbGxvY2F0ZWQgaW4gYSBwcmVmZXRjaGFibGUg aG9zdCBicmlkZ2Ugd2luZG93Cj4+Pj4+Pj4+ICh1bmxpa2UgdGhlIGNvbnZlcnNlLCBpLmUuLCBh bGxvY2F0aW5nIGEgcHJlZmV0Y2hhYmxlIEJBUiBpbiBhCj4+Pj4+Pj4+IG5vbi1wcmVmZXRjaGFi bGUgaG9zdCBicmlkZ2Ugd2luZG93IGlzIGZpbmUpCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IDY0LWJpdCBu b24tcHJlZmV0Y2hhYmxlIGhvc3QgYnJpZGdlIHdpbmRvd3MgY2Fubm90IGJlIGZvcndhcmRlZCBi eSBQQ0kKPj4+Pj4+Pj4gdG8gUENJIGJyaWRnZXMsIHRoZXkgc2ltcGx5IGxhY2sgdGhlIEJBUiBy ZWdpc3RlcnMgdG8gZGVzY3JpYmUgdGhlbS4KPj4+Pj4+Pj4gVGhlcmVmb3JlLCBub24tcHJlZmV0 Y2hhYmxlIGVuZHBvaW50IEJBUnMgKGV2ZW4gNjQtYml0IG9uZXMpIG5lZWQgdG8KPj4+Pj4+Pj4g YmUgY2FydmVkIG91dCBvZiBhIGhvc3QgYnJpZGdlJ3Mgbm9uLXByZWZldGNoYWJsZSAzMi1iaXQg d2luZG93IGlmCj4+Pj4+Pj4+IHRoZXkgbmVlZCB0byBwYXNzIHRocm91Z2ggYSBicmlkZ2UuCj4+ Pj4+Pj4KPj4+Pj4+PiBUaGFuayB5b3UgZm9yIHRoZSBleHBsYW5hdGlvbi4gSSBhbHNvIGxvb2tl ZCBhdCB0aGUgUENJLXRvLVBDSSBCcmlkZ2UKPj4+Pj4+PiBzcGVjIHRvIHVuZGVyc3RhbmQgd2hl cmUgc29tZSBvZiB0aGUgbGltaXRhdGlvbnMgYXJlIGNvbWluZyBmcm9tLgo+Pj4+Pj4+Cj4+Pj4+ Pj4+IFNvIHRoZSBlcnJvciBzZWVtcyB0byBiZSBoZXJlIHRoYXQgdGhlIGhvc3QgYnJpZGdlJ3Mg MzItYml0Cj4+Pj4+Pj4+IG5vbi1wcmVmZXRjaGFibGUgd2luZG93IGhhcyB0aGUgNjQtYml0IGF0 dHJpYnV0ZSBzZXQsIGV2ZW4gdGhvdWdoIGl0Cj4+Pj4+Pj4+IHJlc2lkZXMgYmVsb3cgNCBHQiBl bnRpcmVseS4gSSBzdXBwb3NlIHRoYXQgdGhlIHJlc291cmNlIGFsbG9jYXRpb24KPj4+Pj4+Pj4g Y291bGQgYmUgbWFkZSBtb3JlIGZvcmdpdmluZyAoYW5kIGl0IHdhcyBpbiB0aGUgcGFzdCwgYmVm b3JlIGNvbW1pdAo+Pj4+Pj4+PiA5ZDU3ZTYxYmY3MjMgd2FzIGFwcGxpZWQpLiBIb3dldmVyLCBJ IHdvdWxkIHN0cm9uZ2x5IHJlY29tbWVuZCBub3QKPj4+Pj4+Pj4gZGV2aWF0aW5nIGZyb20gY29t bW9uIHByYWN0aWNlLCBhbmQganVzdCBkZXNjcmliZSB0aGUgMzItYml0Cj4+Pj4+Pj4+IGFkZHJl c3NhYmxlIG5vbi1wcmVmZXRjaGFibGUgcmVzb3VyY2Ugd2luZG93IGFzIHN1Y2guCj4+Pj4+Pj4K Pj4+Pj4+PiBJSVVDLCB0aGUgaG9zdCBicmlkZ2UncyBjb25maWd1cmF0aW9uICg2NC1iaXQgb24g bm9uLXByZWZldGNoYWJsZQo+Pj4+Pj4+IHdpbmRvdykgaXMgYmFzZWQgb24gd2hhdCB0aGUgaGFy ZHdhcmUgYWR2ZXJ0aXNlcy4KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IFdoYXQgZG8geW91IG1lYW4g YnkgJ3doYXQgdGhlIGhhcmR3YXJlIGFkdmVydGlzZXMnPyBUaGUgaG9zdCBicmlkZ2UgaXMKPj4+ Pj4+IGFwcGFyZW50bHkgY29uZmlndXJlZCB0byBkZWNvZGUgYSAzMi1iaXQgYWRkcmVzc2FibGUg d2luZG93IGFzIE1NSU8sCj4+Pj4+PiBhbmQgdGhlIHF1ZXN0aW9uIGlzIHdoeSB0aGlzIHdpbmRv dyBoYXMgdGhlIDY0LWJpdCBhdHRyaWJ1dGUgc2V0IGluCj4+Pj4+PiB0aGUgRFQgZGVzY3JpcHRp b24uCj4+Pj4+Pgo+Pj4+Pj4+IENhbiB5b3UgZWxhYm9yYXRlIG9uIHdoYXQgeW91IGhhdmUgaW4g bWluZCB0byBjb3JyZWN0IHRoZQo+Pj4+Pj4+IG5vbi1wcmVmZXRjaGFibGUgcmVzb3VyY2Ugd2lu ZG93PyBBcmUgeW91IHRoaW5raW5nIG9mIGFkZGluZyBhIHF1aXJrCj4+Pj4+Pj4gc29tZXdoZXJl IHRvIGFkZHJlc3MgdGhpcz8KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IE5vLiBKdXN0IGZpeCB0aGUg RFQuCj4+Pj4+Cj4+Pj4+IEdvb2QgTW9ybmluZywKPj4+Pj4KPj4+Pj4gSSBiZWxpZXZlIFJvYmlu IGlzIGNvcnJlY3QgdGhhdCB0aGVyZSBpcyBtb3JlIHRvIHRoaXMuCj4+Pj4+IFdoaWxlIGF0dGVt cHRpbmcgdG8gd29yayBvdXQgd2h5IGRHUFVzIHdvbid0IHdvcmsgd2l0aCB0aGUgcmszNTZ4Cj4+ Pj4+IHNlcmllcyBQQ0llIGNvbnRyb2xsZXJzLCBDaHJpc3RpYW4gS8O2bmlnIGZyb20gdGhlIGFt ZC1ncHUgZHJpdmVyCj4+Pj4+IG1haWxpbmcgbGlzdCBub3RpY2VkIHRoZSBncHUgd2FzIGluY29y cmVjdGx5IGFsbG9jYXRlZCBhIDY0Yml0Cj4+Pj4+IG5vbi1wcmVmZXRjaGFibGUgQkFSIHdoaWNo IHNob3VsZCBpbnN0ZWFkIGJlIGEgMzIgbm9uLXByZWZldGNoYWJsZQo+Pj4+PiBCQVIuCj4+Pj4+ Cj4+Pj4KPj4+PiBUaGlzIGlzIGR1ZSB0byB0aGUgdHJhbnNsYXRpb24uIEZvciBzb21lIHJlYXNv biwgbHNwY2kgdHJhbnNsYXRlcyB0aGUKPj4+PiBCQVIgdmFsdWVzIHRvIENQVSBhZGRyZXNzZXMs IGJ1dCB0aGUgUENJIHNpZGUgYWRkcmVzc2VzIGFyZSB3aXRoaW4KPj4+PiAzMi1iaXRzLgo+Pj4K Pj4+IFRoZSBrZXJuZWwgbG9nIHJlcG9ydHMgdGhlIHNhbWUgdGhpbmc6Cj4+PiBbICAgIDYuNjYy MTQxXSBwY2kgMDAwMDowMTowMC4wOiByZWcgMHgxMDogW21lbSAweDAwMDAwMDAwLTB4MGZmZmZm ZmYKPj4+IDY0Yml0IHByZWZdCj4+PiBbICAgIDYuNjYyOTYzXSBwY2kgMDAwMDowMTowMC4wOiBy ZWcgMHgxODogW21lbSAweDAwMDAwMDAwLTB4MDAwMWZmZmYgNjRiaXRdCj4+Pgo+Pj4gWW91IGFy ZSBzYXlpbmcgdGhpcyBpcyBhIGRpc3BsYXkgb25seSBpc3N1ZT8KPj4+Cj4+Cj4+IFllcy4gV2hh dCBkbyB0aGUgJ3Jvb3QgYnVzIHJlc291cmNlJyBsb2cgbGluZXMgc2F5IGZvciB0aGVzZSByZWdp b25zPwo+PiBUaG9zZSBzaG91bGQgZ2l2ZSB5b3UgYm90aCB0aGUgQ1BVIGFkZHJlc3MgYXMgd2Vs bCBhcyB0aGUgYnVzIGFkZHJlc3MuCj4gCj4gWyAgICA2LjY3MzQ5N10gcGNpX2J1cyAwMDAwOjAw OiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4MDAwMC0weGZmZmZmXQo+IChidXMgYWRkcmVzcyBb MHgzZjcwMDAwMC0weDNmN2ZmZmZmXSkKPiBbICAgIDYuNjc0NjQyXSBwY2lfYnVzIDAwMDA6MDA6 IHJvb3QgYnVzIHJlc291cmNlIFttZW0KPiAweDMwMDAwMDAwMC0weDMzZjZmZmZmZl0gKGJ1cyBh ZGRyZXNzIFsweDAwMDAwMDAwLTB4M2Y2ZmZmZmZdKQoKQXNzdW1pbmcgUkszNTZ4IGhhcyBhIHNp bWlsYXIgbWVtb3J5IG1hcCB0byBvdGhlciBSb2NrY2hpcCBTb0NzLCBJIApzdXNwZWN0IHlvdSBt YXkgaGF2ZSBhIGxhcmdlciBpc3N1ZSB3aXRoIHlvdXIgbWVtIHNwYWNlIHdpbmRvdyBzaGFkb3dp bmcgCmEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgeW91ciBSQU0uCgpSb2Jpbi4KCj4gCj4gSSB0d2Vh a2VkIHRoZSBvcmlnaW5hbCBSb2NrY2hpcCB2YWx1ZXMgdG8gcGxhY2UgdGhlIG5vbi1wcmVmZXRj aGFibGUKPiBtZW1vcnkgZmlyc3Qgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW8gbGF0ZXIg aW4gdGhpcyBib290Lgo+IAo+Pgo+Pgo+Pj4+Cj4+Pj4gQXJlIHlvdSBzdXJlIHRoZSBhbWRncHUg ZHJpdmVyIGNhbiBldmVuIGRlYWwgd2l0aCBub24tMToxIGhvc3QgYnJpZGdlcz8KPj4+Cj4+PiBJ IGNhbm5vdCBhbnN3ZXIgdGhpcyBhcyBJJ20gbm90IGFuIGFtZGdwdSBkZXYuCj4+Pgo+Pj4+Cj4+ Pj4+IFRoZSByYW5nZXMgY3VycmVudGx5IHNldCBhcmU6Cj4+Pj4+IHJhbmdlcyA9IDwweDgxMDAw MDAwIDB4MCAweDAwODAwMDAwIDB4MyAweDAwODAwMDAwIDB4MCAweDAwMTAwMDAwCj4+Pj4+IDB4 ODIwMDAwMDAgMHgwIDB4MDA5MDAwMDAgMHgzIDB4MDA5MDAwMDAgMHgwIDB4M2Y3MDAwMDA+Owo+ Pj4+Pgo+Pj4+Cj4+Pj4gU28geW91IGhhdmUgdHdvIHJhbmdlcyBoZXJlLgo+Pj4KPj4+IFRoZSBJ TyBhbmQgUENJIG1lbW9yeSByYW5nZXMuCj4+Pgo+Pj4gVGhlcmUgaXMgYSB0aGlyZCByYW5nZSwg dGhlIGNvbmZpZ3VyYXRpb24gcmFuZ2UsIHdoaWNoIGlzIGRlZmluZWQgaW4KPj4+IHRoZSByZWcg YmxvY2s6Cj4+PiA8MHgzIDB4MDAwMDAwMDAgMHgwIDB4ODAwMDAwPgo+Pj4gQWxsIHRocmVlIGFy ZSBzaGFyZWQgaW4gdGhlIHNhbWUgMUdCIHdpbmRvdyBvbiB0aGUgcmszNTZ4Lgo+Pj4KPj4KPj4g QnV0IHRoZSByZWcgYmxvY2sgaXMgbm90IGEgcmVzb3VyY2Ugd2luZG93LCBpdCBpcyBhIGNvbmZp Z3VyYXRpb24KPj4gcmFuZ2UgdG8gcHJvZ3JhbSB0aGUgaG9zdCBicmlkZ2UuCj4+Cj4+PiBodHRw czovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NS4xMy1yYzMvc291cmNlL0RvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2llLnR4dCNMMTIKPj4+Cj4+ Pj4KPj4+Pj4gYnV0IHRoZSBmaW5hbCBhbGxvY2F0aW9uIHdhczoKPj4+Pj4KPj4+Pj4gbHNwY2kg LXYKPj4+Pj4gMDA6MDAuMCBQQ0kgYnJpZGdlOiBGdXpob3UgUm9ja2NoaXAgRWxlY3Ryb25pY3Mg Q28uLCBMdGQgRGV2aWNlIDM1NjYKPj4+Pj4gKHJldiAwMSkgKHByb2ctaWYgMDAgW05vcm1hbCBk ZWNvZGVdKQo+Pj4+PiAgICAgICAgICBGbGFnczogYnVzIG1hc3RlciwgZmFzdCBkZXZzZWwsIGxh dGVuY3kgMCwgSVJRIDk2Cj4+Pj4+ICAgICAgICAgIEJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5 PTAxLCBzdWJvcmRpbmF0ZT1mZiwgc2VjLWxhdGVuY3k9MAo+Pj4+PiAgICAgICAgICBJL08gYmVo aW5kIGJyaWRnZTogMDAwMDEwMDAtMDAwMDFmZmYgW3NpemU9NEtdCj4+Pj4+ICAgICAgICAgIE1l bW9yeSBiZWhpbmQgYnJpZGdlOiAwMDkwMDAwMC0wMDlmZmZmZiBbc2l6ZT0xTV0KPj4+Pj4gICAg ICAgICAgUHJlZmV0Y2hhYmxlIG1lbW9yeSBiZWhpbmQgYnJpZGdlOgo+Pj4+PiAwMDAwMDAwMDEw MDAwMDAwLTAwMDAwMDAwMWZmZmZmZmYgW3NpemU9MjU2TV0KPj4+Pgo+Pj4+IEJ1dCB0aGUgaG9z dCBicmlkZ2Uvcm9vdCBwb3J0IGRlY29kZXMgdHdvIGRpc2pvaW50IHJlZ2lvbnM/Pwo+Pj4+Cj4+ Pj4+ICAgICAgICAgIEV4cGFuc2lvbiBST00gYXQgMzAwYTAwMDAwIFt2aXJ0dWFsXSBbZGlzYWJs ZWRdIFtzaXplPTY0S10KPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1h bmFnZW1lbnQgdmVyc2lvbiAzCj4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzUwXSBNU0k6 IEVuYWJsZSsgQ291bnQ9MS8zMiBNYXNrYWJsZS0gNjRiaXQrCj4+Pj4+ICAgICAgICAgIENhcGFi aWxpdGllczogWzcwXSBFeHByZXNzIFJvb3QgUG9ydCAoU2xvdC0pLCBNU0kgMDAKPj4+Pj4gICAg ICAgICAgQ2FwYWJpbGl0aWVzOiBbYjBdIE1TSS1YOiBFbmFibGUtIENvdW50PTEgTWFza2VkLQo+ Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxMDBdIEFkdmFuY2VkIEVycm9yIFJlcG9ydGlu Zwo+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNDhdIFNlY29uZGFyeSBQQ0kgRXhwcmVz cwo+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNjBdIEwxIFBNIFN1YnN0YXRlcwo+Pj4+ PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNzBdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlv bjogSUQ9MDAwMiBSZXY9NAo+Pj4+PiBMZW49MTAwIDw/Pgo+Pj4+PiAgICAgICAgICBLZXJuZWwg ZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKPj4+Pj4KPj4+Pj4gMDE6MDAuMCBWR0EgY29tcGF0aWJs ZSBjb250cm9sbGVyOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCj4+Pj4+IFtBTUQvQVRJ XSBUdXJrcyBQUk8gW1JhZGVvbiBIRCA3NTcwXSAocHJvZy1pZiAwMCBbVkdBIGNvbnRyb2xsZXJd KQo+Pj4+PiAgICAgICAgICBTdWJzeXN0ZW06IERlbGwgVHVya3MgUFJPIFtSYWRlb24gSEQgNzU3 MF0KPj4+Pj4gICAgICAgICAgRmxhZ3M6IGJ1cyBtYXN0ZXIsIGZhc3QgZGV2c2VsLCBsYXRlbmN5 IDAsIElSUSA5NQo+Pj4+PiAgICAgICAgICBNZW1vcnkgYXQgMzEwMDAwMDAwICg2NC1iaXQsIHBy ZWZldGNoYWJsZSkgW3NpemU9MjU2TV0KPj4+Pj4gICAgICAgICAgTWVtb3J5IGF0IDMwMDkwMDAw MCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xMjhLXQo+Pj4+PiAgICAgICAgICBJ L08gcG9ydHMgYXQgMTAwMCBbc2l6ZT0yNTZdCj4+Pj4+ICAgICAgICAgIEV4cGFuc2lvbiBST00g YXQgMzAwOTIwMDAwIFtkaXNhYmxlZF0gW3NpemU9MTI4S10KPj4+Pj4gICAgICAgICAgQ2FwYWJp bGl0aWVzOiBbNTBdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAzCj4+Pj4+ICAgICAgICAgIENh cGFiaWxpdGllczogWzU4XSBFeHByZXNzIExlZ2FjeSBFbmRwb2ludCwgTVNJIDAwCj4+Pj4+ICAg ICAgICAgIENhcGFiaWxpdGllczogW2EwXSBNU0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxl LSA2NGJpdCsKPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbMTAwXSBWZW5kb3IgU3BlY2lm aWMgSW5mb3JtYXRpb246IElEPTAwMDEgUmV2PTEKPj4+Pj4gTGVuPTAxMCA8Pz4KPj4+Pj4gICAg ICAgICAgQ2FwYWJpbGl0aWVzOiBbMTUwXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcKPj4+Pj4g ICAgICAgICAgS2VybmVsIGRyaXZlciBpbiB1c2U6IHJhZGVvbgo+Pj4+Pgo+Pj4+PiAwMTowMC4x IEF1ZGlvIGRldmljZTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBbQU1EL0FUSV0gVHVy a3MKPj4+Pj4gSERNSSBBdWRpbyBbUmFkZW9uIEhEIDY1MDAvNjYwMCAvIDY3MDBNIFNlcmllc10K Pj4+Pj4gICAgICAgICAgU3Vic3lzdGVtOiBEZWxsIFR1cmtzIEhETUkgQXVkaW8gW1JhZGVvbiBI RCA2NTAwLzY2MDAgLyA2NzAwTSBTZXJpZXNdCj4+Pj4+ICAgICAgICAgIEZsYWdzOiBidXMgbWFz dGVyLCBmYXN0IGRldnNlbCwgbGF0ZW5jeSAwLCBJUlEgOTgKPj4+Pj4gICAgICAgICAgTWVtb3J5 IGF0IDMwMDk0MDAwMCAoNjQtYml0LCBub24tcHJlZmV0Y2hhYmxlKSBbc2l6ZT0xNktdCj4+Pj4+ ICAgICAgICAgIENhcGFiaWxpdGllczogWzUwXSBQb3dlciBNYW5hZ2VtZW50IHZlcnNpb24gMwo+ Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyBMZWdhY3kgRW5kcG9pbnQs IE1TSSAwMAo+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFthMF0gTVNJOiBFbmFibGUrIENv dW50PTEvMSBNYXNrYWJsZS0gNjRiaXQrCj4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzEw MF0gVmVuZG9yIFNwZWNpZmljIEluZm9ybWF0aW9uOiBJRD0wMDAxIFJldj0xCj4+Pj4+IExlbj0w MTAgPD8+Cj4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzE1MF0gQWR2YW5jZWQgRXJyb3Ig UmVwb3J0aW5nCj4+Pj4+ICAgICAgICAgIEtlcm5lbCBkcml2ZXIgaW4gdXNlOiBzbmRfaGRhX2lu dGVsCj4+Pj4+Cj4+Pj4+IFRoaXMgd2lsbCBvYnZpb3VzbHkgY2xvYmJlciByZWdpc3RlcnMgZHVy aW5nIHdyaXRlcy4KPj4+Pgo+Pj4+IEkgZG9uJ3QgZm9sbG93LiBXaGljaCB3cml0ZXMgd2lsbCBj bG9iYmVyIHdoaWNoIHJlZ2lzdGVycywgYW5kIGhvdyBpcwo+Pj4+IGl0IG9idmlvdXM/Cj4+Pgo+ Pj4gV3JpdGluZyBhIDY0IGJpdCB3b3JkIGludG8gYSAzMiBiaXQgcmVnaXN0ZXIgd2lsbCBlaXRo ZXIgY2xvYmJlciB0aGUKPj4+IG5leHQgaGlnaGVyIDMyIGJpdCByZWdpc3Rlci4KPj4+IFF1b3Rp bmcgQ2hyaXN0aWFuOgo+Pj4gIldoZW4geW91IHByb2dyYW0gYSAzMmJpdCBCQVIgYXMgNjRiaXQg eW91IG92ZXJ3cml0ZSB0aGUgcmVnaXN0ZXIgYmVoaW5kCj4+PiB0aGUgQkFSIGFkZHJlc3Mgd2l0 aCB0aGUgdXBwZXIgMzJiaXRzIG9mIHRoZSA2NGJpdCBhZGRyZXNzIHZhbHVlLgo+Pj4gU28gZXZl biBpZiB0aGUgYWxsb2NhdGlvbiBmaXRzIGludG8gMzJiaXRzLCB0aGUgZXh0cmEgcmVnaXN0ZXIg d3JpdGUKPj4+IHdpbGwgY2VydGFpbmx5IHB1dCB5b3VyIGRldmljZSBpbnRvIGEgYmFuYW5hIHN0 YXRlLiIKPj4+Cj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9hbWQt Z2Z4LzIwMjEtTWF5LzA2NDIzMi5odG1sCj4+Pgo+Pgo+PiBJIHNlcmlvdXNseSBkb3VidCB0aGF0 IHRoaXMgaXMgd2hhdCBpcyBnb2luZyBvbiBoZXJlLgo+Pgo+PiBsc3BjaSAteCB3aWxsIGdpdmUg eW91IHRoZSBiYXJlIEJBUiB2YWx1ZXMgLSBJIHN1c3BlY3QgdGhhdCB0aG9zZSBhcmUKPj4gcHJv YmFibHkgZmluZS4KPiAKPiBsc3BjaSAteAo+IDAwOjAwLjAgUENJIGJyaWRnZTogRnV6aG91IFJv Y2tjaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkIERldmljZSAzNTY2IChyZXYgMDEpCj4gMDA6IDg3 IDFkIDY2IDM1IDA3IDA1IDEwIDQwIDAxIDAwIDA0IDA2IDAwIDAwIDAxIDAwCj4gMTA6IDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAxIGZmIDAwIDEwIDEwIDAwIDIwCj4gMjA6IDAwIDEwIDAw IDEwIDAxIDAwIGYxIDBmIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gMzA6IDAwIDAwIDAwIDAw IDQwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVmIDAxIDAyIDAwCj4gCj4gMDE6MDAuMCBWR0EgY29t cGF0aWJsZSBjb250cm9sbGVyOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCj4gW0FNRC9B VEldIFR1cmtzIFBSTyBbUmFkZW9uIEhEIDc1NzBdCj4gMDA6IDAyIDEwIDVkIDY3IDA3IDAwIDEw IDIwIDAwIDAwIDAwIDAzIDAwIDAwIDgwIDAwCj4gMTA6IDBjIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDA0IDAwIDAwIDEwIDAwIDAwIDAwIDAwCj4gMjA6IDAxIDEwIDcwIDNmIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDI4IDEwIDIwIDJiCj4gMzA6IDAwIDAwIDAyIDEwIDUwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDVmIDAxIDAwIDAwCj4gCj4gMDE6MDAuMSBBdWRpbyBkZXZpY2U6IEFkdmFuY2VkIE1p Y3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldIFR1cmtzCj4gSERNSSBBdWRpbyBbUmFkZW9uIEhE IDY1MDAvNjYwMCAvIDY3MDBNIFNlcmllc10KPiAwMDogMDIgMTAgOTAgYWEgMDYgMDAgMTAgMjAg MDAgMDAgMDMgMDQgMDAgMDAgODAgMDAKPiAxMDogMDQgMDAgMDQgMTAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAKPiAyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMjggMTAgOTAgYWEKPiAzMDogMDAgMDAgMDAgMDAgNTAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgZmYgMDIgMDAgMDAKPiAKPj4KPj4KPj4+Pgo+Pj4+PiBBbHNvLCBpZiA8MHg4MjAwMDAwMD4g KDMyIGJpdCkgaXMgY2hhbmdlZCB0byA8MHg4MzAwMDAwMD4gKDY0IGJpdCksCj4+Pj4+IG1vc3Qg b2YgdGhlIGFsbG9jYXRpb25zIGZvciB0aGUgZEdQVSBmYWlsIGR1ZSB0byBubyB2YWxpZCByZWdp b25zCj4+Pj4+IGF2YWlsYWJsZS4KPj4+Pj4KPj4+Pgo+Pj4+IEJ1dCB3YXNuJ3QgdGhlIG9yaWdp bmFsIHByb2JsZW0gdGhhdCB0aGUgcmVzb3VyY2Ugd2luZG93IHdhcyA2NC1iaXQgdG8KPj4+PiBi ZWdpbiB3aXRoPyBBcmUgeW91IHN1cmUgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdGhlIHNhbWUgcHJv YmxlbSBoZXJlPwo+Pj4KPj4+IFRoZSByazMzOTkgaW4gdGhlIG9yaWdpbmFsIHJlcG9ydCBoYXMg YSAzMk1CIG1lbW9yeSB3aW5kb3cgaW4gdGhlCj4+PiB1cHBlciBlbmQgb2YgdGhlIDRHQiByYW5n ZS4KPj4+IFRoZSByazM1NnggaGFzIGEgc2ltaWxhciBsYXlvdXQsIG9yIGl0IGNhbiB1c2UgYSAx R0Igd2luZG93IGF2YWlsYWJsZQo+Pj4gYXQgPDB4MyAweDAwMDAwMDAwPi4KPj4+IFJvY2tjaGlw J3MgZGVmYXVsdCB3aW5kb3dzIGFyZSBkZWZpbmVkIGFzIDY0Yml0Lgo+Pj4KPj4+IFRoZSByazMz OTkgZG9lc24ndCBoYXZlIGVub3VnaCBzcGFjZSB0byByZWFzb25hYmx5IGRlZmluZSB0d28gd2lu ZG93cywKPj4+IG9uZSAzMmJpdCwgb25lIDY0Yml0LCB0byB3b3JrIGFyb3VuZCBhbiBhbGxvY2F0 aW9uIGJ1Zy4KPj4+IFRoZXNlIGFyZSB0aGUgZGVmaW5lZCByZWdpb25zIGluIHRoZSByazMzOTk6 Cj4+PiByYW5nZXMgPSA8MHg4MzAwMDAwMCAweDAgMHhmYTAwMDAwMCAweDAgMHhmYTAwMDAwMCAw eDAgMHgxZTAwMDAwPiwKPj4+IDwweDgxMDAwMDAwIDB4MCAweGZiZTAwMDAwIDB4MCAweGZiZTAw MDAwIDB4MCAweDEwMDAwMD47Cj4+Pgo+Pgo+PiBBbGwgeW91IHJlYWxseSBuZWVkIGlzIGEgMzIt Yml0IG5vbi1wcmVmZXRjaGFibGUgcmVzb3VyY2Ugd2luZG93OiBhbnkKPj4gQkFSIGNhbiBiZSBh bGxvY2F0ZWQgZnJvbSB0aGF0LiBBIDY0LWJpdCBCQVIgY2FuIGNhcnJ5IGEgMzItYml0IG51bWJl cgo+PiAoanVzdCBhZGQgemVyb2VzIGF0IHRoZSB0b3ApLCBhbmQgYSBwcmVmZXRjaGFibGUgQkFS IGNhbiBoYXBwaWx5IGxpdmUKPj4gaW4gYSBub24tcHJlZmV0Y2hhYmxlIHdpbmRvdywgd2l0aCBh IHRoZW9yZXRpY2FsIHBlcmZvcm1hbmNlIGltcGFjdCBpZgo+PiB0aGUgT1MgYWN0dWFsbHkgZG9l cyB1c2UgZGlmZmVyZW50IG1lbW9yeSBhdHRyaWJ1dGVzIGZvciB0aGUKPj4gcHJlZmV0Y2hhYmxl IHdpbmRvdyAoYnV0IEkgZG9uJ3QgdGhpbmsgTGludXggZXZlciBoYW5kbGVzIGl0IHRoaXMgd2F5 KQo+IAo+IFNvIGlzIHRoZSBJTyByYW5nZSBuZWNlc3NhcnkgYXMgd2VsbCBvciB3aWxsIGl0IGJl IGF1dG9tYXRpY2FsbHkKPiBhbGxvY2F0ZWQgYXMgd2VsbD8KPiAKPj4KPj4KPj4+Cj4+Pj4KPj4+ Pgo+Pj4+Pj4KPj4+Pj4+PiBJIGFtIGhhcHB5IHRvIHB1dCBzb21ldGhpbmcgdG9nZXRoZXIgb25j ZSBJIHVuZGVyc3RhbmQgdGhlIHByZWZlcnJlZCB3YXkKPj4+Pj4+PiB0byBnbyBhYm91dCBpdC4K Pj4+Pj4+Pgo+Pj4+Pj4+IFRoYW5rcywKPj4+Pj4+PiBQdW5pdAo+Pj4+Pj4+Cj4+Pj4+Pj4gWy4u Ll0KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4+Pj4+PiBMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKPj4+Pj4+ IExpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+Pj4+IGh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK