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=-2.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 5D310C47085 for ; Tue, 25 May 2021 17:35:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4417361400 for ; Tue, 25 May 2021 17:35:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232516AbhEYRgb (ORCPT ); Tue, 25 May 2021 13:36:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33118 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234209AbhEYRgL (ORCPT ); Tue, 25 May 2021 13:36:11 -0400 Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5A3EC061342; Tue, 25 May 2021 10:34:38 -0700 (PDT) Received: by mail-yb1-xb29.google.com with SMTP id f9so44164797ybo.6; Tue, 25 May 2021 10:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=06IA1eNpcSLnfjmH8uISU7mktvW4RRyzaTbHrryY0Bg=; b=UyLOvAhzcBVrOXZ6N46upbtVKmrIg7dKGmWteRjQwESJiJFxXgYfMP5x5EGAm5H9Y4 dRXoPZKkjx8QLOa5nRN0Qxn5DOXqyxuilPXMi4Po1tx7BW3iMCrkITJaJ2X3LWLlzPAT rrTId+aTVFZhOZilT1wMo/yd78xrwXnQk4AbZqe15CbH8iKAeFlpTeZxkmt4BqzWdRAU J7TmAGm1XrS8e1LDv3Omn6c84IuVTO+ZiSFugX5wz+MrGvIPcYiuFd2cOEKUAKFlJeh3 9zrkhHTq+xMlu4e7KWyRwkAAy4hqPMce5elktR2ItbkEE7GbLY47qOE90EjQqCNIBaO6 vtiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=06IA1eNpcSLnfjmH8uISU7mktvW4RRyzaTbHrryY0Bg=; b=oafIkSYQaGbkMSTKyrX779vs9/xWFPJwie+DdE4jxXtApnrYLq2+xCcXEUQ09zwOpz blW/rtdWnhJxJlxpRl/2wyuuAIp6eg56x5ie9HZbd2Np/5KzyRO/EGqvWPcZuOoGhxp3 JnI4OmtMRafAy/AWZrRrtsDzhWnpLBoUrqbF/dWv0yfBCAHNSQYqNPqFHxE1L72x2ykb 62sW20VrDeg60pN2snCt5+B/xOEqL65q4EiBxWDZ5BX7nztIzoOXOImADoIiCD0IEg7B 8VXH8VPdyosOLsOcW25w+VKFWUiZIkK+AVkNl5c3j+/lqsMP0WOUbbq0v70ztRL3HCvF 1gkw== X-Gm-Message-State: AOAM531h0nSc9LZ8zs05wUiicv7Sll4Z2v6qPiGwc5/lwVvmDi4n7zF6 0R//PlQ/KDmluu9AyedsVJCqRc1ReMhTNPeE5v5+aMOqFeyTNA== X-Google-Smtp-Source: ABdhPJwlcGpj+T3QTXT17HE8BVIlUCKVv+0gPDNrhP0U3vjXyvo/Tdg6Szx/eaUBNB+S11QVqEXZoTjdUwDEqMjfETU= X-Received: by 2002:a25:9982:: with SMTP id p2mr45548228ybo.174.1621964077250; Tue, 25 May 2021 10:34:37 -0700 (PDT) MIME-Version: 1.0 References: <7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com> <01efd004-1c50-25ca-05e4-7e4ef96232e2@arm.com> <87eedxbtkn.fsf@stealth> <877djnaq11.fsf@stealth> <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> In-Reply-To: <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> From: Peter Geis Date: Tue, 25 May 2021 13:34:26 -0400 Message-ID: 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: Robin Murphy Cc: Ard Biesheuvel , 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?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 25, 2021 at 1:25 PM Robin Murphy wrote: > > 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 wro= te: > >>>> > >>>> On Tue, 25 May 2021 at 17:34, Peter Geis wrote= : > >>>>> > >>>>> On Tue, May 25, 2021 at 9:57 AM Ard Biesheuvel wr= ote: > >>>>>> > >>>>>> 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 er= ror 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 0x00fa00= 0000..0x00fbdfffff -> > >>>>>>>>>>> 0x00fa000000 > >>>>>>>>>>> [ 0.305285] rockchip-pcie f8000000.pcie: IO 0x00fbe0= 0000..0x00fbefffff -> > >>>>>>>>>>> 0x00fbe00000 > >>>>>>>>>>> [ 0.306201] rockchip-pcie f8000000.pcie: supply vpcie1v8 n= ot found, using dummy > >>>>>>>>>>> regulator > >>>>>>>>>>> [ 0.306334] rockchip-pcie f8000000.pcie: supply vpcie0v9 n= ot found, using dummy > >>>>>>>>>>> regulator > >>>>>>>>>>> [ 0.373705] rockchip-pcie f8000000.pcie: PCI host bridge t= o 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 0xfa00= 0000-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 0x= 060400 > >>>>>>>>>>> [ 0.373973] pci 0000:00:00.0: supports D1 > >>>>>>>>>>> [ 0.373992] pci 0000:00:00.0: PME# supported from D0 D1 D3= hot > >>>>>>>>>>> [ 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 0x= 010802 > >>>>>>>>>>> [ 0.378869] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x= 00003fff 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 ba= ndwidth, 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 si= ze 0x00100000] > >>>>>>>>>>> [ 0.393333] pci 0000:00:00.0: BAR 14: failed to assign [me= m size 0x00100000] > >>>>>>>>>>> [ 0.393356] pci 0000:01:00.0: BAR 0: no space for [mem siz= e 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 7= 8 > >>>>>>>>>>> [..] > >>>>>>>>>>> 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 m= emory > >>>>>>>>>> resource, only only a single 64-bit non-prefetchable one (even= though > >>>>>>>>>> it's entirely below 4GB) might be a bit weird and tripping som= ething > >>>>>>>>>> up in the resource assignment code. It certainly seems like th= e thing > >>>>>>>>>> most directly related to the offending commit. > >>>>>>>>>> > >>>>>>>>>> I'd be tempted to try fiddling with that in the DT (i.e. chang= ing > >>>>>>>>>> 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 arou= nd 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 reporte= d on > >>>>>>>>> RK3399 - does a single 64-bit window have anything to do with i= t? > >>>>>>>>> > >>>>>>>> > >>>>>>>> The NVMe in the example exposes a single 64-bit non-prefetchable= BAR. > >>>>>>>> Such BARs can not be allocated in a prefetchable host bridge win= dow > >>>>>>>> (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 t= hem. > >>>>>>>> Therefore, non-prefetchable endpoint BARs (even 64-bit ones) nee= d 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 Br= idge > >>>>>>> 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 thoug= h it > >>>>>>>> resides below 4 GB entirely. I suppose that the resource allocat= ion > >>>>>>>> could be made more forgiving (and it was in the past, before com= mit > >>>>>>>> 9d57e61bf723 was applied). However, I would strongly recommend n= ot > >>>>>>>> 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 bridg= e is > >>>>>> apparently configured to decode a 32-bit addressable window as MMI= O, > >>>>>> and the question is why this window has the 64-bit attribute set i= n > >>>>>> 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 qu= irk > >>>>>>> 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=C3=B6nig from the amd-gpu driv= er > >>>>> 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 th= e > >>>> 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. Delightfully they seem to have learned a thing or two. The 1GB window resides outside the system ram space. Though the mmio devices do still take up the tail end of the 4G space at 0xf0000000 - 0xffffffff. The system ram covers up to 0x2 0x00000000, the rk356x supports 8G of ram (I know, on a 32 bit bus, I've raged about it already). Then the PCIe controllers start at 0x3 0x00000000. This makes it seem the controllers have dedicated on chip ram which doesn't have direct access to system ram, though I don't know the implications of this (if I'm even interpreting it correctly). > > > > > 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 bridg= es? > >>> > >>> I cannot answer this as I'm not an amdgpu dev. > >>> > >>>> > >>>>> The ranges currently set are: > >>>>> ranges =3D <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/devic= etree/bindings/pci/designware-pcie.txt#L12 > >>> > >>>> > >>>>> but the final allocation was: > >>>>> > >>>>> lspci -v > >>>>> 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 356= 6 > >>>>> (rev 01) (prog-if 00 [Normal decode]) > >>>>> Flags: bus master, fast devsel, latency 0, IRQ 96 > >>>>> Bus: primary=3D00, secondary=3D01, subordinate=3Dff, sec-l= atency=3D0 > >>>>> I/O behind bridge: 00001000-00001fff [size=3D4K] > >>>>> Memory behind bridge: 00900000-009fffff [size=3D1M] > >>>>> Prefetchable memory behind bridge: > >>>>> 0000000010000000-000000001fffffff [size=3D256M] > >>>> > >>>> But the host bridge/root port decodes two disjoint regions?? > >>>> > >>>>> Expansion ROM at 300a00000 [virtual] [disabled] [size=3D64= K] > >>>>> Capabilities: [40] Power Management version 3 > >>>>> Capabilities: [50] MSI: Enable+ Count=3D1/32 Maskable- 64b= it+ > >>>>> Capabilities: [70] Express Root Port (Slot-), MSI 00 > >>>>> Capabilities: [b0] MSI-X: Enable- Count=3D1 Masked- > >>>>> Capabilities: [100] Advanced Error Reporting > >>>>> Capabilities: [148] Secondary PCI Express > >>>>> Capabilities: [160] L1 PM Substates > >>>>> Capabilities: [170] Vendor Specific Information: ID=3D0002= Rev=3D4 > >>>>> Len=3D100 > >>>>> 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=3D256M] > >>>>> Memory at 300900000 (64-bit, non-prefetchable) [size=3D128= K] > >>>>> I/O ports at 1000 [size=3D256] > >>>>> Expansion ROM at 300920000 [disabled] [size=3D128K] > >>>>> Capabilities: [50] Power Management version 3 > >>>>> Capabilities: [58] Express Legacy Endpoint, MSI 00 > >>>>> Capabilities: [a0] MSI: Enable- Count=3D1/1 Maskable- 64bi= t+ > >>>>> Capabilities: [100] Vendor Specific Information: ID=3D0001= Rev=3D1 > >>>>> Len=3D010 > >>>>> 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 / 67= 00M Series] > >>>>> Flags: bus master, fast devsel, latency 0, IRQ 98 > >>>>> Memory at 300940000 (64-bit, non-prefetchable) [size=3D16K= ] > >>>>> Capabilities: [50] Power Management version 3 > >>>>> Capabilities: [58] Express Legacy Endpoint, MSI 00 > >>>>> Capabilities: [a0] MSI: Enable+ Count=3D1/1 Maskable- 64bi= t+ > >>>>> Capabilities: [100] Vendor Specific Information: ID=3D0001= Rev=3D1 > >>>>> Len=3D010 > >>>>> 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 i= s > >>>> 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 beh= ind > >>> 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 (r= ev 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 =3D <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 prefer= red 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=-0.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 C3EEFC2B9F8 for ; Tue, 25 May 2021 17:46:44 +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 7DA3661132 for ; Tue, 25 May 2021 17:46:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7DA3661132 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5rH8gzpQ8Gny98PDQVpnWLyaOi7P5f9usfNdtp/d8tg=; b=4qfkkt3OH9Orvf gVa9/03NqF40vFC+pq0+f2Peoo7/PUCRzptqfwpyfzr78wJiavEK5quuyO/YLldzxBY5XnleOH6i+ rm9MijfwnvmYdE5fBQSrF32EjmOEvWL9Qf0hEKYB1i01buktMkDcK/aisvQf+VhUeUgggY9Ryh5B6 WzQRtC8xum7vRhSLhYR20zOUZ8VXT49RihpA0yuqMnet8BrH6ZP5sJgKeELCKzZzNVsL4NkXxhAH7 ueWkkkBPkGP81SpDUKcdv93wBtw1C2J7ea3eV9BnAbnjwHv7RBr1FEu8xC5QBSSHKFsCsBywAgiAs oBCPoFEDsUrk4ZYKjHPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1llb8X-0070fp-KO; Tue, 25 May 2021 17:46:37 +0000 Received: from mail-yb1-xb2b.google.com ([2607:f8b0:4864:20::b2b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1llawz-006v95-Mi; Tue, 25 May 2021 17:34:44 +0000 Received: by mail-yb1-xb2b.google.com with SMTP id w1so32841922ybt.1; Tue, 25 May 2021 10:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=06IA1eNpcSLnfjmH8uISU7mktvW4RRyzaTbHrryY0Bg=; b=UyLOvAhzcBVrOXZ6N46upbtVKmrIg7dKGmWteRjQwESJiJFxXgYfMP5x5EGAm5H9Y4 dRXoPZKkjx8QLOa5nRN0Qxn5DOXqyxuilPXMi4Po1tx7BW3iMCrkITJaJ2X3LWLlzPAT rrTId+aTVFZhOZilT1wMo/yd78xrwXnQk4AbZqe15CbH8iKAeFlpTeZxkmt4BqzWdRAU J7TmAGm1XrS8e1LDv3Omn6c84IuVTO+ZiSFugX5wz+MrGvIPcYiuFd2cOEKUAKFlJeh3 9zrkhHTq+xMlu4e7KWyRwkAAy4hqPMce5elktR2ItbkEE7GbLY47qOE90EjQqCNIBaO6 vtiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=06IA1eNpcSLnfjmH8uISU7mktvW4RRyzaTbHrryY0Bg=; b=tPMJoH+dY1hlCDJGHsV1Clk1eudWBzMI5SqZlSg5YipKhhuWko6zR1KwbEri8rqahG 5U6OTjQ3RsHInggwa6EmhvzOS4+bOc4wSmRQqvk2EsLm7AAnhVtXYqO3IZouiFUzDnXH I4SlG75GjLXXNKEAW6Dem5MXMewsfy0EuqkUuO7jv7vPTIx+6WJXKoUcbya4ONN3YQhc 1aUni3ot2/vzBMSJz4Z6/TccoqAyLo3zIM9Ll1czW4Qe81NfFosouuDC3BXqoXcX+D5z ka0vVqm7CV9naPnu8Cp4YRpkfbCgimFze3BN6ozwSw0OTIy14ev6Ajml0URhJDubYxxF nMKQ== X-Gm-Message-State: AOAM530C5iiUKJMpLtG9rSKVQ+38yV9qvWyraFANwBBfcrH6w0mEloYd XCTRfujL0iAoN947odFzFUbPt+C8SE+qYYKKvD8= X-Google-Smtp-Source: ABdhPJwlcGpj+T3QTXT17HE8BVIlUCKVv+0gPDNrhP0U3vjXyvo/Tdg6Szx/eaUBNB+S11QVqEXZoTjdUwDEqMjfETU= X-Received: by 2002:a25:9982:: with SMTP id p2mr45548228ybo.174.1621964077250; Tue, 25 May 2021 10:34:37 -0700 (PDT) MIME-Version: 1.0 References: <7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com> <01efd004-1c50-25ca-05e4-7e4ef96232e2@arm.com> <87eedxbtkn.fsf@stealth> <877djnaq11.fsf@stealth> <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> In-Reply-To: <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> From: Peter Geis Date: Tue, 25 May 2021 13:34:26 -0400 Message-ID: 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: Robin Murphy Cc: Ard Biesheuvel , 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?= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210525_103441_791059_12836EB2 X-CRM114-Status: GOOD ( 47.45 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gVHVlLCBNYXkgMjUsIDIwMjEgYXQgMToyNSBQTSBSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBo eUBhcm0uY29tPiB3cm90ZToKPgo+IE9uIDIwMjEtMDUtMjUgMTg6MDEsIFBldGVyIEdlaXMgd3Jv dGU6Cj4gPiBPbiBUdWUsIE1heSAyNSwgMjAyMSBhdCAxMjo0NCBQTSBBcmQgQmllc2hldXZlbCA8 YXJkYkBrZXJuZWwub3JnPiB3cm90ZToKPiA+Pgo+ID4+IE9uIFR1ZSwgMjUgTWF5IDIwMjEgYXQg MTg6MjMsIFBldGVyIEdlaXMgPHBnd2lwZW91dEBnbWFpbC5jb20+IHdyb3RlOgo+ID4+Pgo+ID4+ PiBPbiBUdWUsIE1heSAyNSwgMjAyMSBhdCAxMTo1NSBBTSBBcmQgQmllc2hldXZlbCA8YXJkYkBr ZXJuZWwub3JnPiB3cm90ZToKPiA+Pj4+Cj4gPj4+PiBPbiBUdWUsIDI1IE1heSAyMDIxIGF0IDE3 OjM0LCBQZXRlciBHZWlzIDxwZ3dpcGVvdXRAZ21haWwuY29tPiB3cm90ZToKPiA+Pj4+Pgo+ID4+ Pj4+IE9uIFR1ZSwgTWF5IDI1LCAyMDIxIGF0IDk6NTcgQU0gQXJkIEJpZXNoZXV2ZWwgPGFyZGJA a2VybmVsLm9yZz4gd3JvdGU6Cj4gPj4+Pj4+Cj4gPj4+Pj4+IE9uIFR1ZSwgMjUgTWF5IDIwMjEg YXQgMTU6NDIsIFB1bml0IEFncmF3YWwgPHB1bml0YWdyYXdhbEBnbWFpbC5jb20+IHdyb3RlOgo+ ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEhpIEFyZCwKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBBcmQgQmllc2hl dXZlbCA8YXJkYkBrZXJuZWwub3JnPiB3cml0ZXM6Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+IE9uIFN1 biwgMjMgTWF5IDIwMjEgYXQgMTM6MDYsIFB1bml0IEFncmF3YWwgPHB1bml0YWdyYXdhbEBnbWFp bC5jb20+IHdyb3RlOgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBSb2JpbiBNdXJwaHkgPHJvYmlu Lm11cnBoeUBhcm0uY29tPiB3cml0ZXM6Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+PiBbICtsaW51 eC1wY2kgZm9yIHZpc2liaWxpdHkgXQo+ID4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+IE9uIDIwMjEt MDUtMTggMTA6MDksIEFsZXhhbmRydSBFbGlzZWkgd3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4gQWZ0ZXIg ZG9pbmcgYSBnaXQgYmlzZWN0IEkgd2FzIGFibGUgdG8gdHJhY2UgdGhlIGZvbGxvd2luZyBlcnJv ciB3aGVuIGJvb3RpbmcgbXkKPiA+Pj4+Pj4+Pj4+PiByb2NrcHJvNjQgdjIgKHJrMzM5OSBTb0Mp IHdpdGggYSBQQ0lFIE5WTUUgZXhwYW5zaW9uIGNhcmQ6Cj4gPj4+Pj4+Pj4+Pj4gWy4uXQo+ID4+ Pj4+Pj4+Pj4+IFsgICAgMC4zMDUxODNdIHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogaG9z dCBicmlkZ2UgL3BjaWVAZjgwMDAwMDAgcmFuZ2VzOgo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDUy NDhdIHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogICAgICBNRU0gMHgwMGZhMDAwMDAwLi4w eDAwZmJkZmZmZmYgLT4KPiA+Pj4+Pj4+Pj4+PiAweDAwZmEwMDAwMDAKPiA+Pj4+Pj4+Pj4+PiBb ICAgIDAuMzA1Mjg1XSByb2NrY2hpcC1wY2llIGY4MDAwMDAwLnBjaWU6ICAgICAgIElPIDB4MDBm YmUwMDAwMC4uMHgwMGZiZWZmZmZmIC0+Cj4gPj4+Pj4+Pj4+Pj4gMHgwMGZiZTAwMDAwCj4gPj4+ Pj4+Pj4+Pj4gWyAgICAwLjMwNjIwMV0gcm9ja2NoaXAtcGNpZSBmODAwMDAwMC5wY2llOiBzdXBw bHkgdnBjaWUxdjggbm90IGZvdW5kLCB1c2luZyBkdW1teQo+ID4+Pj4+Pj4+Pj4+IHJlZ3VsYXRv cgo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDYzMzRdIHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNp ZTogc3VwcGx5IHZwY2llMHY5IG5vdCBmb3VuZCwgdXNpbmcgZHVtbXkKPiA+Pj4+Pj4+Pj4+PiBy ZWd1bGF0b3IKPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzczNzA1XSByb2NrY2hpcC1wY2llIGY4MDAw MDAwLnBjaWU6IFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMDowMAo+ID4+Pj4+Pj4+Pj4+IFsg ICAgMC4zNzM3MzBdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2J1cyAwMC0x Zl0KPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzczNzUxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVz IHJlc291cmNlIFttZW0gMHhmYTAwMDAwMC0weGZiZGZmZmZmIDY0Yml0XQo+ID4+Pj4+Pj4+Pj4+ IFsgICAgMC4zNzM3NzddIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2lvICAw eDAwMDAtMHhmZmZmZl0gKGJ1cwo+ID4+Pj4+Pj4+Pj4+IGFkZHJlc3MgWzB4ZmJlMDAwMDAtMHhm YmVmZmZmZl0pCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3MzgzOV0gcGNpIDAwMDA6MDA6MDAuMDog WzFkODc6MDEwMF0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMAo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4z NzM5NzNdIHBjaSAwMDAwOjAwOjAwLjA6IHN1cHBvcnRzIEQxCj4gPj4+Pj4+Pj4+Pj4gWyAgICAw LjM3Mzk5Ml0gcGNpIDAwMDA6MDA6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEMSBEM2hv dAo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzg1MThdIHBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBj b25maWd1cmF0aW9uIGludmFsaWQgKFtidXMgMDAtMDBdKSwKPiA+Pj4+Pj4+Pj4+PiByZWNvbmZp Z3VyaW5nCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3ODc2NV0gcGNpIDAwMDA6MDE6MDAuMDogWzE0 NGQ6YTgwOF0gdHlwZSAwMCBjbGFzcyAweDAxMDgwMgo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzg4 NjldIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4MDAwMDAwMDAtMHgwMDAwM2Zm ZiA2NGJpdF0KPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzc5MDUxXSBwY2kgMDAwMDowMTowMC4wOiBN YXggUGF5bG9hZCBTaXplIHNldCB0byAyNTYgKHdhcyAxMjgsIG1heCAyNTYpCj4gPj4+Pj4+Pj4+ Pj4gWyAgICAwLjM3OTY2MV0gcGNpIDAwMDA6MDE6MDAuMDogOC4wMDAgR2IvcyBhdmFpbGFibGUg UENJZSBiYW5kd2lkdGgsIGxpbWl0ZWQgYnkKPiA+Pj4+Pj4+Pj4+PiAyLjUgR1QvcyBQQ0llIHg0 IGxpbmsgYXQgMDAwMDowMDowMC4wIChjYXBhYmxlIG9mIDMxLjUwNCBHYi9zIHdpdGggOC4wIEdU L3MgUENJZQo+ID4+Pj4+Pj4+Pj4+IHg0IGxpbmspCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzI2 OV0gcGNpX2J1cyAwMDAwOjAxOiBidXNuX3JlczogW2J1cyAwMS0xZl0gZW5kIGlzIHVwZGF0ZWQg dG8gMDEKPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzkzMzExXSBwY2kgMDAwMDowMDowMC4wOiBCQVIg MTQ6IG5vIHNwYWNlIGZvciBbbWVtIHNpemUgMHgwMDEwMDAwMF0KPiA+Pj4+Pj4+Pj4+PiBbICAg IDAuMzkzMzMzXSBwY2kgMDAwMDowMDowMC4wOiBCQVIgMTQ6IGZhaWxlZCB0byBhc3NpZ24gW21l bSBzaXplIDB4MDAxMDAwMDBdCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzM1Nl0gcGNpIDAwMDA6 MDE6MDAuMDogQkFSIDA6IG5vIHNwYWNlIGZvciBbbWVtIHNpemUgMHgwMDAwNDAwMCA2NGJpdF0K PiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzkzMzc1XSBwY2kgMDAwMDowMTowMC4wOiBCQVIgMDogZmFp bGVkIHRvIGFzc2lnbiBbbWVtIHNpemUgMHgwMDAwNDAwMCA2NGJpdF0KPiA+Pj4+Pj4+Pj4+PiBb ICAgIDAuMzkzMzk3XSBwY2kgMDAwMDowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdCj4g Pj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzgzOV0gcGNpZXBvcnQgMDAwMDowMDowMC4wOiBQTUU6IFNp Z25hbGluZyB3aXRoIElSUSA3OAo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zOTQxNjVdIHBjaWVwb3J0 IDAwMDA6MDA6MDAuMDogQUVSOiBlbmFibGVkIHdpdGggSVJRIDc4Cj4gPj4+Pj4+Pj4+Pj4gWy4u XQo+ID4+Pj4+Pj4+Pj4+IHRvIHRoZSBjb21taXQgOWQ1N2U2MWJmNzIzICgib2YvcGNpOiBBZGQg SU9SRVNPVVJDRV9NRU1fNjQgdG8KPiA+Pj4+Pj4+Pj4+PiByZXNvdXJjZSBmbGFncyBmb3IKPiA+ Pj4+Pj4+Pj4+PiA2NC1iaXQgbWVtb3J5IGFkZHJlc3NlcyIpLgo+ID4+Pj4+Pj4+Pj4KPiA+Pj4+ Pj4+Pj4+IEZXRlcsIG15IGh1bmNoIGlzIHRoYXQgdGhlIGhvc3QgYnJpZGdlIGFkdmVydGlzaW5n IG5vIDMyLWJpdCBtZW1vcnkKPiA+Pj4+Pj4+Pj4+IHJlc291cmNlLCBvbmx5IG9ubHkgYSBzaW5n bGUgNjQtYml0IG5vbi1wcmVmZXRjaGFibGUgb25lIChldmVuIHRob3VnaAo+ID4+Pj4+Pj4+Pj4g aXQncyBlbnRpcmVseSBiZWxvdyA0R0IpIG1pZ2h0IGJlIGEgYml0IHdlaXJkIGFuZCB0cmlwcGlu ZyBzb21ldGhpbmcKPiA+Pj4+Pj4+Pj4+IHVwIGluIHRoZSByZXNvdXJjZSBhc3NpZ25tZW50IGNv ZGUuIEl0IGNlcnRhaW5seSBzZWVtcyBsaWtlIHRoZSB0aGluZwo+ID4+Pj4+Pj4+Pj4gbW9zdCBk aXJlY3RseSByZWxhdGVkIHRvIHRoZSBvZmZlbmRpbmcgY29tbWl0Lgo+ID4+Pj4+Pj4+Pj4KPiA+ Pj4+Pj4+Pj4+IEknZCBiZSB0ZW1wdGVkIHRvIHRyeSBmaWRkbGluZyB3aXRoIHRoYXQgaW4gdGhl IERUIChpLmUuIGNoYW5naW5nCj4gPj4+Pj4+Pj4+PiAweDgzMDAwMDAwIHRvIDB4ODIwMDAwMDAg aW4gdGhlIFBDSWUgbm9kZSdzICJyYW5nZXMiIHByb3BlcnR5KSB0byBzZWUKPiA+Pj4+Pj4+Pj4+ IGlmIGl0IG1ha2VzIGFueSBkaWZmZXJlbmNlLiBOb3RlIHRoYXQgZXZlbiBpZiBpdCBoZWxwcywg dGhvdWdoLCBJCj4gPj4+Pj4+Pj4+PiBkb24ndCBrbm93IHdoZXRoZXIgdGhhdCdzIHRoZSBjb3Jy ZWN0IGZpeCBvciBqdXN0IGEgYm9kZ2UgYXJvdW5kIGEKPiA+Pj4+Pj4+Pj4+IGNvcm5lci1jYXNl IGJ1ZyBzb21ld2hlcmUgaW4gdGhlIHJlc291cmNlIGNvZGUuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+ Pj4+ICBGcm9tIGRpZ2dpbmcgaW50byB0aGlzIGZ1cnRoZXIgdGhlIGZhaWx1cmUgc2VlbXMgdG8g YmUgZHVlIHRvIGEgbWlzbWF0Y2gKPiA+Pj4+Pj4+Pj4gb2YgZmxhZ3Mgd2hlbiBhbGxvY2F0aW5n IHJlc291cmNlcyBpbiBwY2lfYnVzX2FsbG9jX2Zyb21fcmVnaW9uKCkgLQo+ID4+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+PiAgICAgIGlmICgocmVzLT5mbGFncyBeIHItPmZsYWdzKSAmIHR5cGVfbWFzaykK PiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ PiBUaG91Z2ggSSBhbSBhbHNvIG5vdCBzdXJlIHdoeSB0aGUgZmFpbHVyZSBpcyBvbmx5IGJlaW5n IHJlcG9ydGVkIG9uCj4gPj4+Pj4+Pj4+IFJLMzM5OSAtIGRvZXMgYSBzaW5nbGUgNjQtYml0IHdp bmRvdyBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggaXQ/Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4K PiA+Pj4+Pj4+PiBUaGUgTlZNZSBpbiB0aGUgZXhhbXBsZSBleHBvc2VzIGEgc2luZ2xlIDY0LWJp dCBub24tcHJlZmV0Y2hhYmxlIEJBUi4KPiA+Pj4+Pj4+PiBTdWNoIEJBUnMgY2FuIG5vdCBiZSBh bGxvY2F0ZWQgaW4gYSBwcmVmZXRjaGFibGUgaG9zdCBicmlkZ2Ugd2luZG93Cj4gPj4+Pj4+Pj4g KHVubGlrZSB0aGUgY29udmVyc2UsIGkuZS4sIGFsbG9jYXRpbmcgYSBwcmVmZXRjaGFibGUgQkFS IGluIGEKPiA+Pj4+Pj4+PiBub24tcHJlZmV0Y2hhYmxlIGhvc3QgYnJpZGdlIHdpbmRvdyBpcyBm aW5lKQo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gNjQtYml0IG5vbi1wcmVmZXRjaGFibGUgaG9zdCBi cmlkZ2Ugd2luZG93cyBjYW5ub3QgYmUgZm9yd2FyZGVkIGJ5IFBDSQo+ID4+Pj4+Pj4+IHRvIFBD SSBicmlkZ2VzLCB0aGV5IHNpbXBseSBsYWNrIHRoZSBCQVIgcmVnaXN0ZXJzIHRvIGRlc2NyaWJl IHRoZW0uCj4gPj4+Pj4+Pj4gVGhlcmVmb3JlLCBub24tcHJlZmV0Y2hhYmxlIGVuZHBvaW50IEJB UnMgKGV2ZW4gNjQtYml0IG9uZXMpIG5lZWQgdG8KPiA+Pj4+Pj4+PiBiZSBjYXJ2ZWQgb3V0IG9m IGEgaG9zdCBicmlkZ2UncyBub24tcHJlZmV0Y2hhYmxlIDMyLWJpdCB3aW5kb3cgaWYKPiA+Pj4+ Pj4+PiB0aGV5IG5lZWQgdG8gcGFzcyB0aHJvdWdoIGEgYnJpZGdlLgo+ID4+Pj4+Pj4KPiA+Pj4+ Pj4+IFRoYW5rIHlvdSBmb3IgdGhlIGV4cGxhbmF0aW9uLiBJIGFsc28gbG9va2VkIGF0IHRoZSBQ Q0ktdG8tUENJIEJyaWRnZQo+ID4+Pj4+Pj4gc3BlYyB0byB1bmRlcnN0YW5kIHdoZXJlIHNvbWUg b2YgdGhlIGxpbWl0YXRpb25zIGFyZSBjb21pbmcgZnJvbS4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+Pj4g U28gdGhlIGVycm9yIHNlZW1zIHRvIGJlIGhlcmUgdGhhdCB0aGUgaG9zdCBicmlkZ2UncyAzMi1i aXQKPiA+Pj4+Pj4+PiBub24tcHJlZmV0Y2hhYmxlIHdpbmRvdyBoYXMgdGhlIDY0LWJpdCBhdHRy aWJ1dGUgc2V0LCBldmVuIHRob3VnaCBpdAo+ID4+Pj4+Pj4+IHJlc2lkZXMgYmVsb3cgNCBHQiBl bnRpcmVseS4gSSBzdXBwb3NlIHRoYXQgdGhlIHJlc291cmNlIGFsbG9jYXRpb24KPiA+Pj4+Pj4+ PiBjb3VsZCBiZSBtYWRlIG1vcmUgZm9yZ2l2aW5nIChhbmQgaXQgd2FzIGluIHRoZSBwYXN0LCBi ZWZvcmUgY29tbWl0Cj4gPj4+Pj4+Pj4gOWQ1N2U2MWJmNzIzIHdhcyBhcHBsaWVkKS4gSG93ZXZl ciwgSSB3b3VsZCBzdHJvbmdseSByZWNvbW1lbmQgbm90Cj4gPj4+Pj4+Pj4gZGV2aWF0aW5nIGZy b20gY29tbW9uIHByYWN0aWNlLCBhbmQganVzdCBkZXNjcmliZSB0aGUgMzItYml0Cj4gPj4+Pj4+ Pj4gYWRkcmVzc2FibGUgbm9uLXByZWZldGNoYWJsZSByZXNvdXJjZSB3aW5kb3cgYXMgc3VjaC4K PiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBJSVVDLCB0aGUgaG9zdCBicmlkZ2UncyBjb25maWd1cmF0aW9u ICg2NC1iaXQgb24gbm9uLXByZWZldGNoYWJsZQo+ID4+Pj4+Pj4gd2luZG93KSBpcyBiYXNlZCBv biB3aGF0IHRoZSBoYXJkd2FyZSBhZHZlcnRpc2VzLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4KPiA+Pj4+ Pj4gV2hhdCBkbyB5b3UgbWVhbiBieSAnd2hhdCB0aGUgaGFyZHdhcmUgYWR2ZXJ0aXNlcyc/IFRo ZSBob3N0IGJyaWRnZSBpcwo+ID4+Pj4+PiBhcHBhcmVudGx5IGNvbmZpZ3VyZWQgdG8gZGVjb2Rl IGEgMzItYml0IGFkZHJlc3NhYmxlIHdpbmRvdyBhcyBNTUlPLAo+ID4+Pj4+PiBhbmQgdGhlIHF1 ZXN0aW9uIGlzIHdoeSB0aGlzIHdpbmRvdyBoYXMgdGhlIDY0LWJpdCBhdHRyaWJ1dGUgc2V0IGlu Cj4gPj4+Pj4+IHRoZSBEVCBkZXNjcmlwdGlvbi4KPiA+Pj4+Pj4KPiA+Pj4+Pj4+IENhbiB5b3Ug ZWxhYm9yYXRlIG9uIHdoYXQgeW91IGhhdmUgaW4gbWluZCB0byBjb3JyZWN0IHRoZQo+ID4+Pj4+ Pj4gbm9uLXByZWZldGNoYWJsZSByZXNvdXJjZSB3aW5kb3c/IEFyZSB5b3UgdGhpbmtpbmcgb2Yg YWRkaW5nIGEgcXVpcmsKPiA+Pj4+Pj4+IHNvbWV3aGVyZSB0byBhZGRyZXNzIHRoaXM/Cj4gPj4+ Pj4+Pgo+ID4+Pj4+Pgo+ID4+Pj4+PiBOby4gSnVzdCBmaXggdGhlIERULgo+ID4+Pj4+Cj4gPj4+ Pj4gR29vZCBNb3JuaW5nLAo+ID4+Pj4+Cj4gPj4+Pj4gSSBiZWxpZXZlIFJvYmluIGlzIGNvcnJl Y3QgdGhhdCB0aGVyZSBpcyBtb3JlIHRvIHRoaXMuCj4gPj4+Pj4gV2hpbGUgYXR0ZW1wdGluZyB0 byB3b3JrIG91dCB3aHkgZEdQVXMgd29uJ3Qgd29yayB3aXRoIHRoZSByazM1NngKPiA+Pj4+PiBz ZXJpZXMgUENJZSBjb250cm9sbGVycywgQ2hyaXN0aWFuIEvDtm5pZyBmcm9tIHRoZSBhbWQtZ3B1 IGRyaXZlcgo+ID4+Pj4+IG1haWxpbmcgbGlzdCBub3RpY2VkIHRoZSBncHUgd2FzIGluY29ycmVj dGx5IGFsbG9jYXRlZCBhIDY0Yml0Cj4gPj4+Pj4gbm9uLXByZWZldGNoYWJsZSBCQVIgd2hpY2gg c2hvdWxkIGluc3RlYWQgYmUgYSAzMiBub24tcHJlZmV0Y2hhYmxlCj4gPj4+Pj4gQkFSLgo+ID4+ Pj4+Cj4gPj4+Pgo+ID4+Pj4gVGhpcyBpcyBkdWUgdG8gdGhlIHRyYW5zbGF0aW9uLiBGb3Igc29t ZSByZWFzb24sIGxzcGNpIHRyYW5zbGF0ZXMgdGhlCj4gPj4+PiBCQVIgdmFsdWVzIHRvIENQVSBh ZGRyZXNzZXMsIGJ1dCB0aGUgUENJIHNpZGUgYWRkcmVzc2VzIGFyZSB3aXRoaW4KPiA+Pj4+IDMy LWJpdHMuCj4gPj4+Cj4gPj4+IFRoZSBrZXJuZWwgbG9nIHJlcG9ydHMgdGhlIHNhbWUgdGhpbmc6 Cj4gPj4+IFsgICAgNi42NjIxNDFdIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4 MDAwMDAwMDAtMHgwZmZmZmZmZgo+ID4+PiA2NGJpdCBwcmVmXQo+ID4+PiBbICAgIDYuNjYyOTYz XSBwY2kgMDAwMDowMTowMC4wOiByZWcgMHgxODogW21lbSAweDAwMDAwMDAwLTB4MDAwMWZmZmYg NjRiaXRdCj4gPj4+Cj4gPj4+IFlvdSBhcmUgc2F5aW5nIHRoaXMgaXMgYSBkaXNwbGF5IG9ubHkg aXNzdWU/Cj4gPj4+Cj4gPj4KPiA+PiBZZXMuIFdoYXQgZG8gdGhlICdyb290IGJ1cyByZXNvdXJj ZScgbG9nIGxpbmVzIHNheSBmb3IgdGhlc2UgcmVnaW9ucz8KPiA+PiBUaG9zZSBzaG91bGQgZ2l2 ZSB5b3UgYm90aCB0aGUgQ1BVIGFkZHJlc3MgYXMgd2VsbCBhcyB0aGUgYnVzIGFkZHJlc3MuCj4g Pgo+ID4gWyAgICA2LjY3MzQ5N10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBb aW8gIDB4MDAwMC0weGZmZmZmXQo+ID4gKGJ1cyBhZGRyZXNzIFsweDNmNzAwMDAwLTB4M2Y3ZmZm ZmZdKQo+ID4gWyAgICA2LjY3NDY0Ml0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJj ZSBbbWVtCj4gPiAweDMwMDAwMDAwMC0weDMzZjZmZmZmZl0gKGJ1cyBhZGRyZXNzIFsweDAwMDAw MDAwLTB4M2Y2ZmZmZmZdKQo+Cj4gQXNzdW1pbmcgUkszNTZ4IGhhcyBhIHNpbWlsYXIgbWVtb3J5 IG1hcCB0byBvdGhlciBSb2NrY2hpcCBTb0NzLCBJCj4gc3VzcGVjdCB5b3UgbWF5IGhhdmUgYSBs YXJnZXIgaXNzdWUgd2l0aCB5b3VyIG1lbSBzcGFjZSB3aW5kb3cgc2hhZG93aW5nCj4gYSBzaWdu aWZpY2FudCBjaHVuayBvZiB5b3VyIFJBTS4KPgo+IFJvYmluLgoKRGVsaWdodGZ1bGx5IHRoZXkg c2VlbSB0byBoYXZlIGxlYXJuZWQgYSB0aGluZyBvciB0d28uClRoZSAxR0Igd2luZG93IHJlc2lk ZXMgb3V0c2lkZSB0aGUgc3lzdGVtIHJhbSBzcGFjZS4KVGhvdWdoIHRoZSBtbWlvIGRldmljZXMg ZG8gc3RpbGwgdGFrZSB1cCB0aGUgdGFpbCBlbmQgb2YgdGhlIDRHIHNwYWNlCmF0IDB4ZjAwMDAw MDAgLSAweGZmZmZmZmZmLgpUaGUgc3lzdGVtIHJhbSBjb3ZlcnMgdXAgdG8gMHgyIDB4MDAwMDAw MDAsIHRoZSByazM1Nnggc3VwcG9ydHMgOEcgb2YKcmFtIChJIGtub3csIG9uIGEgMzIgYml0IGJ1 cywgSSd2ZSByYWdlZCBhYm91dCBpdCBhbHJlYWR5KS4KVGhlbiB0aGUgUENJZSBjb250cm9sbGVy cyBzdGFydCBhdCAweDMgMHgwMDAwMDAwMC4KVGhpcyBtYWtlcyBpdCBzZWVtIHRoZSBjb250cm9s bGVycyBoYXZlIGRlZGljYXRlZCBvbiBjaGlwIHJhbSB3aGljaApkb2Vzbid0IGhhdmUgZGlyZWN0 IGFjY2VzcyB0byBzeXN0ZW0gcmFtLCB0aG91Z2ggSSBkb24ndCBrbm93IHRoZQppbXBsaWNhdGlv bnMgb2YgdGhpcyAoaWYgSSdtIGV2ZW4gaW50ZXJwcmV0aW5nIGl0IGNvcnJlY3RseSkuCgo+Cj4g Pgo+ID4gSSB0d2Vha2VkIHRoZSBvcmlnaW5hbCBSb2NrY2hpcCB2YWx1ZXMgdG8gcGxhY2UgdGhl IG5vbi1wcmVmZXRjaGFibGUKPiA+IG1lbW9yeSBmaXJzdCB3aXRoIHRoZSBjb25maWd1cmF0aW9u IGFuZCBpbyBsYXRlciBpbiB0aGlzIGJvb3QuCj4gPgo+ID4+Cj4gPj4KPiA+Pj4+Cj4gPj4+PiBB cmUgeW91IHN1cmUgdGhlIGFtZGdwdSBkcml2ZXIgY2FuIGV2ZW4gZGVhbCB3aXRoIG5vbi0xOjEg aG9zdCBicmlkZ2VzPwo+ID4+Pgo+ID4+PiBJIGNhbm5vdCBhbnN3ZXIgdGhpcyBhcyBJJ20gbm90 IGFuIGFtZGdwdSBkZXYuCj4gPj4+Cj4gPj4+Pgo+ID4+Pj4+IFRoZSByYW5nZXMgY3VycmVudGx5 IHNldCBhcmU6Cj4gPj4+Pj4gcmFuZ2VzID0gPDB4ODEwMDAwMDAgMHgwIDB4MDA4MDAwMDAgMHgz IDB4MDA4MDAwMDAgMHgwIDB4MDAxMDAwMDAKPiA+Pj4+PiAweDgyMDAwMDAwIDB4MCAweDAwOTAw MDAwIDB4MyAweDAwOTAwMDAwIDB4MCAweDNmNzAwMDAwPjsKPiA+Pj4+Pgo+ID4+Pj4KPiA+Pj4+ IFNvIHlvdSBoYXZlIHR3byByYW5nZXMgaGVyZS4KPiA+Pj4KPiA+Pj4gVGhlIElPIGFuZCBQQ0kg bWVtb3J5IHJhbmdlcy4KPiA+Pj4KPiA+Pj4gVGhlcmUgaXMgYSB0aGlyZCByYW5nZSwgdGhlIGNv bmZpZ3VyYXRpb24gcmFuZ2UsIHdoaWNoIGlzIGRlZmluZWQgaW4KPiA+Pj4gdGhlIHJlZyBibG9j azoKPiA+Pj4gPDB4MyAweDAwMDAwMDAwIDB4MCAweDgwMDAwMD4KPiA+Pj4gQWxsIHRocmVlIGFy ZSBzaGFyZWQgaW4gdGhlIHNhbWUgMUdCIHdpbmRvdyBvbiB0aGUgcmszNTZ4Lgo+ID4+Pgo+ID4+ Cj4gPj4gQnV0IHRoZSByZWcgYmxvY2sgaXMgbm90IGEgcmVzb3VyY2Ugd2luZG93LCBpdCBpcyBh IGNvbmZpZ3VyYXRpb24KPiA+PiByYW5nZSB0byBwcm9ncmFtIHRoZSBob3N0IGJyaWRnZS4KPiA+ Pgo+ID4+PiBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NS4xMy1yYzMvc291cmNl L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2llLnR4 dCNMMTIKPiA+Pj4KPiA+Pj4+Cj4gPj4+Pj4gYnV0IHRoZSBmaW5hbCBhbGxvY2F0aW9uIHdhczoK PiA+Pj4+Pgo+ID4+Pj4+IGxzcGNpIC12Cj4gPj4+Pj4gMDA6MDAuMCBQQ0kgYnJpZGdlOiBGdXpo b3UgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uLCBMdGQgRGV2aWNlIDM1NjYKPiA+Pj4+PiAocmV2 IDAxKSAocHJvZy1pZiAwMCBbTm9ybWFsIGRlY29kZV0pCj4gPj4+Pj4gICAgICAgICAgRmxhZ3M6 IGJ1cyBtYXN0ZXIsIGZhc3QgZGV2c2VsLCBsYXRlbmN5IDAsIElSUSA5Ngo+ID4+Pj4+ICAgICAg ICAgIEJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5PTAxLCBzdWJvcmRpbmF0ZT1mZiwgc2VjLWxh dGVuY3k9MAo+ID4+Pj4+ICAgICAgICAgIEkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwMTAwMC0wMDAw MWZmZiBbc2l6ZT00S10KPiA+Pj4+PiAgICAgICAgICBNZW1vcnkgYmVoaW5kIGJyaWRnZTogMDA5 MDAwMDAtMDA5ZmZmZmYgW3NpemU9MU1dCj4gPj4+Pj4gICAgICAgICAgUHJlZmV0Y2hhYmxlIG1l bW9yeSBiZWhpbmQgYnJpZGdlOgo+ID4+Pj4+IDAwMDAwMDAwMTAwMDAwMDAtMDAwMDAwMDAxZmZm ZmZmZiBbc2l6ZT0yNTZNXQo+ID4+Pj4KPiA+Pj4+IEJ1dCB0aGUgaG9zdCBicmlkZ2Uvcm9vdCBw b3J0IGRlY29kZXMgdHdvIGRpc2pvaW50IHJlZ2lvbnM/Pwo+ID4+Pj4KPiA+Pj4+PiAgICAgICAg ICBFeHBhbnNpb24gUk9NIGF0IDMwMGEwMDAwMCBbdmlydHVhbF0gW2Rpc2FibGVkXSBbc2l6ZT02 NEtdCj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1hbmFnZW1lbnQg dmVyc2lvbiAzCj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNTBdIE1TSTogRW5hYmxl KyBDb3VudD0xLzMyIE1hc2thYmxlLSA2NGJpdCsKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRp ZXM6IFs3MF0gRXhwcmVzcyBSb290IFBvcnQgKFNsb3QtKSwgTVNJIDAwCj4gPj4+Pj4gICAgICAg ICAgQ2FwYWJpbGl0aWVzOiBbYjBdIE1TSS1YOiBFbmFibGUtIENvdW50PTEgTWFza2VkLQo+ID4+ Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzEwMF0gQWR2YW5jZWQgRXJyb3IgUmVwb3J0aW5n Cj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbMTQ4XSBTZWNvbmRhcnkgUENJIEV4cHJl c3MKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNjBdIEwxIFBNIFN1YnN0YXRlcwo+ ID4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzE3MF0gVmVuZG9yIFNwZWNpZmljIEluZm9y bWF0aW9uOiBJRD0wMDAyIFJldj00Cj4gPj4+Pj4gTGVuPTEwMCA8Pz4KPiA+Pj4+PiAgICAgICAg ICBLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKPiA+Pj4+Pgo+ID4+Pj4+IDAxOjAwLjAg VkdBIGNvbXBhdGlibGUgY29udHJvbGxlcjogQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+ ID4+Pj4+IFtBTUQvQVRJXSBUdXJrcyBQUk8gW1JhZGVvbiBIRCA3NTcwXSAocHJvZy1pZiAwMCBb VkdBIGNvbnRyb2xsZXJdKQo+ID4+Pj4+ICAgICAgICAgIFN1YnN5c3RlbTogRGVsbCBUdXJrcyBQ Uk8gW1JhZGVvbiBIRCA3NTcwXQo+ID4+Pj4+ICAgICAgICAgIEZsYWdzOiBidXMgbWFzdGVyLCBm YXN0IGRldnNlbCwgbGF0ZW5jeSAwLCBJUlEgOTUKPiA+Pj4+PiAgICAgICAgICBNZW1vcnkgYXQg MzEwMDAwMDAwICg2NC1iaXQsIHByZWZldGNoYWJsZSkgW3NpemU9MjU2TV0KPiA+Pj4+PiAgICAg ICAgICBNZW1vcnkgYXQgMzAwOTAwMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXpl PTEyOEtdCj4gPj4+Pj4gICAgICAgICAgSS9PIHBvcnRzIGF0IDEwMDAgW3NpemU9MjU2XQo+ID4+ Pj4+ICAgICAgICAgIEV4cGFuc2lvbiBST00gYXQgMzAwOTIwMDAwIFtkaXNhYmxlZF0gW3NpemU9 MTI4S10KPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVu dCB2ZXJzaW9uIDMKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyBM ZWdhY3kgRW5kcG9pbnQsIE1TSSAwMAo+ID4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogW2Ew XSBNU0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKPiA+Pj4+PiAgICAgICAg ICBDYXBhYmlsaXRpZXM6IFsxMDBdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAw MSBSZXY9MQo+ID4+Pj4+IExlbj0wMTAgPD8+Cj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVz OiBbMTUwXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcKPiA+Pj4+PiAgICAgICAgICBLZXJuZWwg ZHJpdmVyIGluIHVzZTogcmFkZW9uCj4gPj4+Pj4KPiA+Pj4+PiAwMTowMC4xIEF1ZGlvIGRldmlj ZTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBbQU1EL0FUSV0gVHVya3MKPiA+Pj4+PiBI RE1JIEF1ZGlvIFtSYWRlb24gSEQgNjUwMC82NjAwIC8gNjcwME0gU2VyaWVzXQo+ID4+Pj4+ICAg ICAgICAgIFN1YnN5c3RlbTogRGVsbCBUdXJrcyBIRE1JIEF1ZGlvIFtSYWRlb24gSEQgNjUwMC82 NjAwIC8gNjcwME0gU2VyaWVzXQo+ID4+Pj4+ICAgICAgICAgIEZsYWdzOiBidXMgbWFzdGVyLCBm YXN0IGRldnNlbCwgbGF0ZW5jeSAwLCBJUlEgOTgKPiA+Pj4+PiAgICAgICAgICBNZW1vcnkgYXQg MzAwOTQwMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXplPTE2S10KPiA+Pj4+PiAg ICAgICAgICBDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKPiA+ Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyBMZWdhY3kgRW5kcG9pbnQs IE1TSSAwMAo+ID4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogW2EwXSBNU0k6IEVuYWJsZSsg Q291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6 IFsxMDBdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAwMSBSZXY9MQo+ID4+Pj4+ IExlbj0wMTAgPD8+Cj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbMTUwXSBBZHZhbmNl ZCBFcnJvciBSZXBvcnRpbmcKPiA+Pj4+PiAgICAgICAgICBLZXJuZWwgZHJpdmVyIGluIHVzZTog c25kX2hkYV9pbnRlbAo+ID4+Pj4+Cj4gPj4+Pj4gVGhpcyB3aWxsIG9idmlvdXNseSBjbG9iYmVy IHJlZ2lzdGVycyBkdXJpbmcgd3JpdGVzLgo+ID4+Pj4KPiA+Pj4+IEkgZG9uJ3QgZm9sbG93LiBX aGljaCB3cml0ZXMgd2lsbCBjbG9iYmVyIHdoaWNoIHJlZ2lzdGVycywgYW5kIGhvdyBpcwo+ID4+ Pj4gaXQgb2J2aW91cz8KPiA+Pj4KPiA+Pj4gV3JpdGluZyBhIDY0IGJpdCB3b3JkIGludG8gYSAz MiBiaXQgcmVnaXN0ZXIgd2lsbCBlaXRoZXIgY2xvYmJlciB0aGUKPiA+Pj4gbmV4dCBoaWdoZXIg MzIgYml0IHJlZ2lzdGVyLgo+ID4+PiBRdW90aW5nIENocmlzdGlhbjoKPiA+Pj4gIldoZW4geW91 IHByb2dyYW0gYSAzMmJpdCBCQVIgYXMgNjRiaXQgeW91IG92ZXJ3cml0ZSB0aGUgcmVnaXN0ZXIg YmVoaW5kCj4gPj4+IHRoZSBCQVIgYWRkcmVzcyB3aXRoIHRoZSB1cHBlciAzMmJpdHMgb2YgdGhl IDY0Yml0IGFkZHJlc3MgdmFsdWUuCj4gPj4+IFNvIGV2ZW4gaWYgdGhlIGFsbG9jYXRpb24gZml0 cyBpbnRvIDMyYml0cywgdGhlIGV4dHJhIHJlZ2lzdGVyIHdyaXRlCj4gPj4+IHdpbGwgY2VydGFp bmx5IHB1dCB5b3VyIGRldmljZSBpbnRvIGEgYmFuYW5hIHN0YXRlLiIKPiA+Pj4KPiA+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvYW1kLWdmeC8yMDIxLU1heS8wNjQy MzIuaHRtbAo+ID4+Pgo+ID4+Cj4gPj4gSSBzZXJpb3VzbHkgZG91YnQgdGhhdCB0aGlzIGlzIHdo YXQgaXMgZ29pbmcgb24gaGVyZS4KPiA+Pgo+ID4+IGxzcGNpIC14IHdpbGwgZ2l2ZSB5b3UgdGhl IGJhcmUgQkFSIHZhbHVlcyAtIEkgc3VzcGVjdCB0aGF0IHRob3NlIGFyZQo+ID4+IHByb2JhYmx5 IGZpbmUuCj4gPgo+ID4gbHNwY2kgLXgKPiA+IDAwOjAwLjAgUENJIGJyaWRnZTogRnV6aG91IFJv Y2tjaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkIERldmljZSAzNTY2IChyZXYgMDEpCj4gPiAwMDog ODcgMWQgNjYgMzUgMDcgMDUgMTAgNDAgMDEgMDAgMDQgMDYgMDAgMDAgMDEgMDAKPiA+IDEwOiAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSBmZiAwMCAxMCAxMCAwMCAyMAo+ID4gMjA6IDAw IDEwIDAwIDEwIDAxIDAwIGYxIDBmIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPiAzMDogMDAg MDAgMDAgMDAgNDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNWYgMDEgMDIgMDAKPiA+Cj4gPiAwMTow MC4wIFZHQSBjb21wYXRpYmxlIGNvbnRyb2xsZXI6IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIElu Yy4KPiA+IFtBTUQvQVRJXSBUdXJrcyBQUk8gW1JhZGVvbiBIRCA3NTcwXQo+ID4gMDA6IDAyIDEw IDVkIDY3IDA3IDAwIDEwIDIwIDAwIDAwIDAwIDAzIDAwIDAwIDgwIDAwCj4gPiAxMDogMGMgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDQgMDAgMDAgMTAgMDAgMDAgMDAgMDAKPiA+IDIwOiAwMSAxMCA3 MCAzZiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAyOCAxMCAyMCAyYgo+ID4gMzA6IDAwIDAwIDAy IDEwIDUwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVmIDAxIDAwIDAwCj4gPgo+ID4gMDE6MDAuMSBB dWRpbyBkZXZpY2U6IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldIFR1cmtz Cj4gPiBIRE1JIEF1ZGlvIFtSYWRlb24gSEQgNjUwMC82NjAwIC8gNjcwME0gU2VyaWVzXQo+ID4g MDA6IDAyIDEwIDkwIGFhIDA2IDAwIDEwIDIwIDAwIDAwIDAzIDA0IDAwIDAwIDgwIDAwCj4gPiAx MDogMDQgMDAgMDQgMTAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPiA+IDIw OiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAyOCAxMCA5MCBhYQo+ID4gMzA6 IDAwIDAwIDAwIDAwIDUwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIGZmIDAyIDAwIDAwCj4gPgo+ID4+ Cj4gPj4KPiA+Pj4+Cj4gPj4+Pj4gQWxzbywgaWYgPDB4ODIwMDAwMDA+ICgzMiBiaXQpIGlzIGNo YW5nZWQgdG8gPDB4ODMwMDAwMDA+ICg2NCBiaXQpLAo+ID4+Pj4+IG1vc3Qgb2YgdGhlIGFsbG9j YXRpb25zIGZvciB0aGUgZEdQVSBmYWlsIGR1ZSB0byBubyB2YWxpZCByZWdpb25zCj4gPj4+Pj4g YXZhaWxhYmxlLgo+ID4+Pj4+Cj4gPj4+Pgo+ID4+Pj4gQnV0IHdhc24ndCB0aGUgb3JpZ2luYWwg cHJvYmxlbSB0aGF0IHRoZSByZXNvdXJjZSB3aW5kb3cgd2FzIDY0LWJpdCB0bwo+ID4+Pj4gYmVn aW4gd2l0aD8gQXJlIHlvdSBzdXJlIHdlIGFyZSB0YWxraW5nIGFib3V0IHRoZSBzYW1lIHByb2Js ZW0gaGVyZT8KPiA+Pj4KPiA+Pj4gVGhlIHJrMzM5OSBpbiB0aGUgb3JpZ2luYWwgcmVwb3J0IGhh cyBhIDMyTUIgbWVtb3J5IHdpbmRvdyBpbiB0aGUKPiA+Pj4gdXBwZXIgZW5kIG9mIHRoZSA0R0Ig cmFuZ2UuCj4gPj4+IFRoZSByazM1NnggaGFzIGEgc2ltaWxhciBsYXlvdXQsIG9yIGl0IGNhbiB1 c2UgYSAxR0Igd2luZG93IGF2YWlsYWJsZQo+ID4+PiBhdCA8MHgzIDB4MDAwMDAwMDA+Lgo+ID4+ PiBSb2NrY2hpcCdzIGRlZmF1bHQgd2luZG93cyBhcmUgZGVmaW5lZCBhcyA2NGJpdC4KPiA+Pj4K PiA+Pj4gVGhlIHJrMzM5OSBkb2Vzbid0IGhhdmUgZW5vdWdoIHNwYWNlIHRvIHJlYXNvbmFibHkg ZGVmaW5lIHR3byB3aW5kb3dzLAo+ID4+PiBvbmUgMzJiaXQsIG9uZSA2NGJpdCwgdG8gd29yayBh cm91bmQgYW4gYWxsb2NhdGlvbiBidWcuCj4gPj4+IFRoZXNlIGFyZSB0aGUgZGVmaW5lZCByZWdp b25zIGluIHRoZSByazMzOTk6Cj4gPj4+IHJhbmdlcyA9IDwweDgzMDAwMDAwIDB4MCAweGZhMDAw MDAwIDB4MCAweGZhMDAwMDAwIDB4MCAweDFlMDAwMDA+LAo+ID4+PiA8MHg4MTAwMDAwMCAweDAg MHhmYmUwMDAwMCAweDAgMHhmYmUwMDAwMCAweDAgMHgxMDAwMDA+Owo+ID4+Pgo+ID4+Cj4gPj4g QWxsIHlvdSByZWFsbHkgbmVlZCBpcyBhIDMyLWJpdCBub24tcHJlZmV0Y2hhYmxlIHJlc291cmNl IHdpbmRvdzogYW55Cj4gPj4gQkFSIGNhbiBiZSBhbGxvY2F0ZWQgZnJvbSB0aGF0LiBBIDY0LWJp dCBCQVIgY2FuIGNhcnJ5IGEgMzItYml0IG51bWJlcgo+ID4+IChqdXN0IGFkZCB6ZXJvZXMgYXQg dGhlIHRvcCksIGFuZCBhIHByZWZldGNoYWJsZSBCQVIgY2FuIGhhcHBpbHkgbGl2ZQo+ID4+IGlu IGEgbm9uLXByZWZldGNoYWJsZSB3aW5kb3csIHdpdGggYSB0aGVvcmV0aWNhbCBwZXJmb3JtYW5j ZSBpbXBhY3QgaWYKPiA+PiB0aGUgT1MgYWN0dWFsbHkgZG9lcyB1c2UgZGlmZmVyZW50IG1lbW9y eSBhdHRyaWJ1dGVzIGZvciB0aGUKPiA+PiBwcmVmZXRjaGFibGUgd2luZG93IChidXQgSSBkb24n dCB0aGluayBMaW51eCBldmVyIGhhbmRsZXMgaXQgdGhpcyB3YXkpCj4gPgo+ID4gU28gaXMgdGhl IElPIHJhbmdlIG5lY2Vzc2FyeSBhcyB3ZWxsIG9yIHdpbGwgaXQgYmUgYXV0b21hdGljYWxseQo+ ID4gYWxsb2NhdGVkIGFzIHdlbGw/Cj4gPgo+ID4+Cj4gPj4KPiA+Pj4KPiA+Pj4+Cj4gPj4+Pgo+ ID4+Pj4+Pgo+ID4+Pj4+Pj4gSSBhbSBoYXBweSB0byBwdXQgc29tZXRoaW5nIHRvZ2V0aGVyIG9u Y2UgSSB1bmRlcnN0YW5kIHRoZSBwcmVmZXJyZWQgd2F5Cj4gPj4+Pj4+PiB0byBnbyBhYm91dCBp dC4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBUaGFua3MsCj4gPj4+Pj4+PiBQdW5pdAo+ID4+Pj4+Pj4K PiA+Pj4+Pj4+IFsuLi5dCj4gPj4+Pj4+Pgo+ID4+Pj4+Pgo+ID4+Pj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+Pj4+PiBMaW51eC1yb2NrY2hp cCBtYWlsaW5nIGxpc3QKPiA+Pj4+Pj4gTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9y Zwo+ID4+Pj4+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJvY2tjaGlwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJvY2tjaGlwCg== 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=-0.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 71F92C4707F for ; Tue, 25 May 2021 17:49:28 +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 31F4D61400 for ; Tue, 25 May 2021 17:49:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 31F4D61400 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cxknRZdx6p6SF3s7HJUR4+3RrLkjU9jNReGehfK8++M=; b=QULmhGXDpNFbX9 dfJoIgHstRH4QIw9gzXAW376ZqaVdoeHLFH8xlvqgqvS658r0jPEK7QOdgaxXNY9ye0BMPNA4exE/ FejC+j1U899YoFejVTc2pQIpfNcbeOEAgva0qssBBi7QViSOaA5uNFzDslm53XMR1PZcSH4rSvd/8 g5CYpMX/j43HOLsvuUy/69QflqpV2Y7FtjMzccKLnJAMEnUlCydSLb47MMCghYXEB2V3qJwJ7na+w oOBjULNaouciBrYbdcSpCpqKkolM3hV6BH2ZDBJPulXu9g0ScKWHotGMaCpXm7NDn2jmRGlVGkI1a 1DBAB1kr/otULfM9EGvg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1llb8l-0070kO-B4; Tue, 25 May 2021 17:46:52 +0000 Received: from mail-yb1-xb2b.google.com ([2607:f8b0:4864:20::b2b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1llawz-006v95-Mi; Tue, 25 May 2021 17:34:44 +0000 Received: by mail-yb1-xb2b.google.com with SMTP id w1so32841922ybt.1; Tue, 25 May 2021 10:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=06IA1eNpcSLnfjmH8uISU7mktvW4RRyzaTbHrryY0Bg=; b=UyLOvAhzcBVrOXZ6N46upbtVKmrIg7dKGmWteRjQwESJiJFxXgYfMP5x5EGAm5H9Y4 dRXoPZKkjx8QLOa5nRN0Qxn5DOXqyxuilPXMi4Po1tx7BW3iMCrkITJaJ2X3LWLlzPAT rrTId+aTVFZhOZilT1wMo/yd78xrwXnQk4AbZqe15CbH8iKAeFlpTeZxkmt4BqzWdRAU J7TmAGm1XrS8e1LDv3Omn6c84IuVTO+ZiSFugX5wz+MrGvIPcYiuFd2cOEKUAKFlJeh3 9zrkhHTq+xMlu4e7KWyRwkAAy4hqPMce5elktR2ItbkEE7GbLY47qOE90EjQqCNIBaO6 vtiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=06IA1eNpcSLnfjmH8uISU7mktvW4RRyzaTbHrryY0Bg=; b=tPMJoH+dY1hlCDJGHsV1Clk1eudWBzMI5SqZlSg5YipKhhuWko6zR1KwbEri8rqahG 5U6OTjQ3RsHInggwa6EmhvzOS4+bOc4wSmRQqvk2EsLm7AAnhVtXYqO3IZouiFUzDnXH I4SlG75GjLXXNKEAW6Dem5MXMewsfy0EuqkUuO7jv7vPTIx+6WJXKoUcbya4ONN3YQhc 1aUni3ot2/vzBMSJz4Z6/TccoqAyLo3zIM9Ll1czW4Qe81NfFosouuDC3BXqoXcX+D5z ka0vVqm7CV9naPnu8Cp4YRpkfbCgimFze3BN6ozwSw0OTIy14ev6Ajml0URhJDubYxxF nMKQ== X-Gm-Message-State: AOAM530C5iiUKJMpLtG9rSKVQ+38yV9qvWyraFANwBBfcrH6w0mEloYd XCTRfujL0iAoN947odFzFUbPt+C8SE+qYYKKvD8= X-Google-Smtp-Source: ABdhPJwlcGpj+T3QTXT17HE8BVIlUCKVv+0gPDNrhP0U3vjXyvo/Tdg6Szx/eaUBNB+S11QVqEXZoTjdUwDEqMjfETU= X-Received: by 2002:a25:9982:: with SMTP id p2mr45548228ybo.174.1621964077250; Tue, 25 May 2021 10:34:37 -0700 (PDT) MIME-Version: 1.0 References: <7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com> <01efd004-1c50-25ca-05e4-7e4ef96232e2@arm.com> <87eedxbtkn.fsf@stealth> <877djnaq11.fsf@stealth> <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> In-Reply-To: <92c5785a-18f6-182a-b51b-9dfc373a5c01@arm.com> From: Peter Geis Date: Tue, 25 May 2021 13:34:26 -0400 Message-ID: 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: Robin Murphy Cc: Ard Biesheuvel , 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?= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210525_103441_791059_12836EB2 X-CRM114-Status: GOOD ( 47.45 ) 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 T24gVHVlLCBNYXkgMjUsIDIwMjEgYXQgMToyNSBQTSBSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBo eUBhcm0uY29tPiB3cm90ZToKPgo+IE9uIDIwMjEtMDUtMjUgMTg6MDEsIFBldGVyIEdlaXMgd3Jv dGU6Cj4gPiBPbiBUdWUsIE1heSAyNSwgMjAyMSBhdCAxMjo0NCBQTSBBcmQgQmllc2hldXZlbCA8 YXJkYkBrZXJuZWwub3JnPiB3cm90ZToKPiA+Pgo+ID4+IE9uIFR1ZSwgMjUgTWF5IDIwMjEgYXQg MTg6MjMsIFBldGVyIEdlaXMgPHBnd2lwZW91dEBnbWFpbC5jb20+IHdyb3RlOgo+ID4+Pgo+ID4+ PiBPbiBUdWUsIE1heSAyNSwgMjAyMSBhdCAxMTo1NSBBTSBBcmQgQmllc2hldXZlbCA8YXJkYkBr ZXJuZWwub3JnPiB3cm90ZToKPiA+Pj4+Cj4gPj4+PiBPbiBUdWUsIDI1IE1heSAyMDIxIGF0IDE3 OjM0LCBQZXRlciBHZWlzIDxwZ3dpcGVvdXRAZ21haWwuY29tPiB3cm90ZToKPiA+Pj4+Pgo+ID4+ Pj4+IE9uIFR1ZSwgTWF5IDI1LCAyMDIxIGF0IDk6NTcgQU0gQXJkIEJpZXNoZXV2ZWwgPGFyZGJA a2VybmVsLm9yZz4gd3JvdGU6Cj4gPj4+Pj4+Cj4gPj4+Pj4+IE9uIFR1ZSwgMjUgTWF5IDIwMjEg YXQgMTU6NDIsIFB1bml0IEFncmF3YWwgPHB1bml0YWdyYXdhbEBnbWFpbC5jb20+IHdyb3RlOgo+ ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEhpIEFyZCwKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBBcmQgQmllc2hl dXZlbCA8YXJkYkBrZXJuZWwub3JnPiB3cml0ZXM6Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+IE9uIFN1 biwgMjMgTWF5IDIwMjEgYXQgMTM6MDYsIFB1bml0IEFncmF3YWwgPHB1bml0YWdyYXdhbEBnbWFp bC5jb20+IHdyb3RlOgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBSb2JpbiBNdXJwaHkgPHJvYmlu Lm11cnBoeUBhcm0uY29tPiB3cml0ZXM6Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+PiBbICtsaW51 eC1wY2kgZm9yIHZpc2liaWxpdHkgXQo+ID4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+IE9uIDIwMjEt MDUtMTggMTA6MDksIEFsZXhhbmRydSBFbGlzZWkgd3JvdGU6Cj4gPj4+Pj4+Pj4+Pj4gQWZ0ZXIg ZG9pbmcgYSBnaXQgYmlzZWN0IEkgd2FzIGFibGUgdG8gdHJhY2UgdGhlIGZvbGxvd2luZyBlcnJv ciB3aGVuIGJvb3RpbmcgbXkKPiA+Pj4+Pj4+Pj4+PiByb2NrcHJvNjQgdjIgKHJrMzM5OSBTb0Mp IHdpdGggYSBQQ0lFIE5WTUUgZXhwYW5zaW9uIGNhcmQ6Cj4gPj4+Pj4+Pj4+Pj4gWy4uXQo+ID4+ Pj4+Pj4+Pj4+IFsgICAgMC4zMDUxODNdIHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogaG9z dCBicmlkZ2UgL3BjaWVAZjgwMDAwMDAgcmFuZ2VzOgo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDUy NDhdIHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNpZTogICAgICBNRU0gMHgwMGZhMDAwMDAwLi4w eDAwZmJkZmZmZmYgLT4KPiA+Pj4+Pj4+Pj4+PiAweDAwZmEwMDAwMDAKPiA+Pj4+Pj4+Pj4+PiBb ICAgIDAuMzA1Mjg1XSByb2NrY2hpcC1wY2llIGY4MDAwMDAwLnBjaWU6ICAgICAgIElPIDB4MDBm YmUwMDAwMC4uMHgwMGZiZWZmZmZmIC0+Cj4gPj4+Pj4+Pj4+Pj4gMHgwMGZiZTAwMDAwCj4gPj4+ Pj4+Pj4+Pj4gWyAgICAwLjMwNjIwMV0gcm9ja2NoaXAtcGNpZSBmODAwMDAwMC5wY2llOiBzdXBw bHkgdnBjaWUxdjggbm90IGZvdW5kLCB1c2luZyBkdW1teQo+ID4+Pj4+Pj4+Pj4+IHJlZ3VsYXRv cgo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zMDYzMzRdIHJvY2tjaGlwLXBjaWUgZjgwMDAwMDAucGNp ZTogc3VwcGx5IHZwY2llMHY5IG5vdCBmb3VuZCwgdXNpbmcgZHVtbXkKPiA+Pj4+Pj4+Pj4+PiBy ZWd1bGF0b3IKPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzczNzA1XSByb2NrY2hpcC1wY2llIGY4MDAw MDAwLnBjaWU6IFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMDowMAo+ID4+Pj4+Pj4+Pj4+IFsg ICAgMC4zNzM3MzBdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2J1cyAwMC0x Zl0KPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzczNzUxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVz IHJlc291cmNlIFttZW0gMHhmYTAwMDAwMC0weGZiZGZmZmZmIDY0Yml0XQo+ID4+Pj4+Pj4+Pj4+ IFsgICAgMC4zNzM3NzddIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW2lvICAw eDAwMDAtMHhmZmZmZl0gKGJ1cwo+ID4+Pj4+Pj4+Pj4+IGFkZHJlc3MgWzB4ZmJlMDAwMDAtMHhm YmVmZmZmZl0pCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3MzgzOV0gcGNpIDAwMDA6MDA6MDAuMDog WzFkODc6MDEwMF0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMAo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4z NzM5NzNdIHBjaSAwMDAwOjAwOjAwLjA6IHN1cHBvcnRzIEQxCj4gPj4+Pj4+Pj4+Pj4gWyAgICAw LjM3Mzk5Ml0gcGNpIDAwMDA6MDA6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEMSBEM2hv dAo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzg1MThdIHBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBj b25maWd1cmF0aW9uIGludmFsaWQgKFtidXMgMDAtMDBdKSwKPiA+Pj4+Pj4+Pj4+PiByZWNvbmZp Z3VyaW5nCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM3ODc2NV0gcGNpIDAwMDA6MDE6MDAuMDogWzE0 NGQ6YTgwOF0gdHlwZSAwMCBjbGFzcyAweDAxMDgwMgo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zNzg4 NjldIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4MDAwMDAwMDAtMHgwMDAwM2Zm ZiA2NGJpdF0KPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzc5MDUxXSBwY2kgMDAwMDowMTowMC4wOiBN YXggUGF5bG9hZCBTaXplIHNldCB0byAyNTYgKHdhcyAxMjgsIG1heCAyNTYpCj4gPj4+Pj4+Pj4+ Pj4gWyAgICAwLjM3OTY2MV0gcGNpIDAwMDA6MDE6MDAuMDogOC4wMDAgR2IvcyBhdmFpbGFibGUg UENJZSBiYW5kd2lkdGgsIGxpbWl0ZWQgYnkKPiA+Pj4+Pj4+Pj4+PiAyLjUgR1QvcyBQQ0llIHg0 IGxpbmsgYXQgMDAwMDowMDowMC4wIChjYXBhYmxlIG9mIDMxLjUwNCBHYi9zIHdpdGggOC4wIEdU L3MgUENJZQo+ID4+Pj4+Pj4+Pj4+IHg0IGxpbmspCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzI2 OV0gcGNpX2J1cyAwMDAwOjAxOiBidXNuX3JlczogW2J1cyAwMS0xZl0gZW5kIGlzIHVwZGF0ZWQg dG8gMDEKPiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzkzMzExXSBwY2kgMDAwMDowMDowMC4wOiBCQVIg MTQ6IG5vIHNwYWNlIGZvciBbbWVtIHNpemUgMHgwMDEwMDAwMF0KPiA+Pj4+Pj4+Pj4+PiBbICAg IDAuMzkzMzMzXSBwY2kgMDAwMDowMDowMC4wOiBCQVIgMTQ6IGZhaWxlZCB0byBhc3NpZ24gW21l bSBzaXplIDB4MDAxMDAwMDBdCj4gPj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzM1Nl0gcGNpIDAwMDA6 MDE6MDAuMDogQkFSIDA6IG5vIHNwYWNlIGZvciBbbWVtIHNpemUgMHgwMDAwNDAwMCA2NGJpdF0K PiA+Pj4+Pj4+Pj4+PiBbICAgIDAuMzkzMzc1XSBwY2kgMDAwMDowMTowMC4wOiBCQVIgMDogZmFp bGVkIHRvIGFzc2lnbiBbbWVtIHNpemUgMHgwMDAwNDAwMCA2NGJpdF0KPiA+Pj4+Pj4+Pj4+PiBb ICAgIDAuMzkzMzk3XSBwY2kgMDAwMDowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdCj4g Pj4+Pj4+Pj4+Pj4gWyAgICAwLjM5MzgzOV0gcGNpZXBvcnQgMDAwMDowMDowMC4wOiBQTUU6IFNp Z25hbGluZyB3aXRoIElSUSA3OAo+ID4+Pj4+Pj4+Pj4+IFsgICAgMC4zOTQxNjVdIHBjaWVwb3J0 IDAwMDA6MDA6MDAuMDogQUVSOiBlbmFibGVkIHdpdGggSVJRIDc4Cj4gPj4+Pj4+Pj4+Pj4gWy4u XQo+ID4+Pj4+Pj4+Pj4+IHRvIHRoZSBjb21taXQgOWQ1N2U2MWJmNzIzICgib2YvcGNpOiBBZGQg SU9SRVNPVVJDRV9NRU1fNjQgdG8KPiA+Pj4+Pj4+Pj4+PiByZXNvdXJjZSBmbGFncyBmb3IKPiA+ Pj4+Pj4+Pj4+PiA2NC1iaXQgbWVtb3J5IGFkZHJlc3NlcyIpLgo+ID4+Pj4+Pj4+Pj4KPiA+Pj4+ Pj4+Pj4+IEZXRlcsIG15IGh1bmNoIGlzIHRoYXQgdGhlIGhvc3QgYnJpZGdlIGFkdmVydGlzaW5n IG5vIDMyLWJpdCBtZW1vcnkKPiA+Pj4+Pj4+Pj4+IHJlc291cmNlLCBvbmx5IG9ubHkgYSBzaW5n bGUgNjQtYml0IG5vbi1wcmVmZXRjaGFibGUgb25lIChldmVuIHRob3VnaAo+ID4+Pj4+Pj4+Pj4g aXQncyBlbnRpcmVseSBiZWxvdyA0R0IpIG1pZ2h0IGJlIGEgYml0IHdlaXJkIGFuZCB0cmlwcGlu ZyBzb21ldGhpbmcKPiA+Pj4+Pj4+Pj4+IHVwIGluIHRoZSByZXNvdXJjZSBhc3NpZ25tZW50IGNv ZGUuIEl0IGNlcnRhaW5seSBzZWVtcyBsaWtlIHRoZSB0aGluZwo+ID4+Pj4+Pj4+Pj4gbW9zdCBk aXJlY3RseSByZWxhdGVkIHRvIHRoZSBvZmZlbmRpbmcgY29tbWl0Lgo+ID4+Pj4+Pj4+Pj4KPiA+ Pj4+Pj4+Pj4+IEknZCBiZSB0ZW1wdGVkIHRvIHRyeSBmaWRkbGluZyB3aXRoIHRoYXQgaW4gdGhl IERUIChpLmUuIGNoYW5naW5nCj4gPj4+Pj4+Pj4+PiAweDgzMDAwMDAwIHRvIDB4ODIwMDAwMDAg aW4gdGhlIFBDSWUgbm9kZSdzICJyYW5nZXMiIHByb3BlcnR5KSB0byBzZWUKPiA+Pj4+Pj4+Pj4+ IGlmIGl0IG1ha2VzIGFueSBkaWZmZXJlbmNlLiBOb3RlIHRoYXQgZXZlbiBpZiBpdCBoZWxwcywg dGhvdWdoLCBJCj4gPj4+Pj4+Pj4+PiBkb24ndCBrbm93IHdoZXRoZXIgdGhhdCdzIHRoZSBjb3Jy ZWN0IGZpeCBvciBqdXN0IGEgYm9kZ2UgYXJvdW5kIGEKPiA+Pj4+Pj4+Pj4+IGNvcm5lci1jYXNl IGJ1ZyBzb21ld2hlcmUgaW4gdGhlIHJlc291cmNlIGNvZGUuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+ Pj4+ICBGcm9tIGRpZ2dpbmcgaW50byB0aGlzIGZ1cnRoZXIgdGhlIGZhaWx1cmUgc2VlbXMgdG8g YmUgZHVlIHRvIGEgbWlzbWF0Y2gKPiA+Pj4+Pj4+Pj4gb2YgZmxhZ3Mgd2hlbiBhbGxvY2F0aW5n IHJlc291cmNlcyBpbiBwY2lfYnVzX2FsbG9jX2Zyb21fcmVnaW9uKCkgLQo+ID4+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+PiAgICAgIGlmICgocmVzLT5mbGFncyBeIHItPmZsYWdzKSAmIHR5cGVfbWFzaykK PiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ PiBUaG91Z2ggSSBhbSBhbHNvIG5vdCBzdXJlIHdoeSB0aGUgZmFpbHVyZSBpcyBvbmx5IGJlaW5n IHJlcG9ydGVkIG9uCj4gPj4+Pj4+Pj4+IFJLMzM5OSAtIGRvZXMgYSBzaW5nbGUgNjQtYml0IHdp bmRvdyBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggaXQ/Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4K PiA+Pj4+Pj4+PiBUaGUgTlZNZSBpbiB0aGUgZXhhbXBsZSBleHBvc2VzIGEgc2luZ2xlIDY0LWJp dCBub24tcHJlZmV0Y2hhYmxlIEJBUi4KPiA+Pj4+Pj4+PiBTdWNoIEJBUnMgY2FuIG5vdCBiZSBh bGxvY2F0ZWQgaW4gYSBwcmVmZXRjaGFibGUgaG9zdCBicmlkZ2Ugd2luZG93Cj4gPj4+Pj4+Pj4g KHVubGlrZSB0aGUgY29udmVyc2UsIGkuZS4sIGFsbG9jYXRpbmcgYSBwcmVmZXRjaGFibGUgQkFS IGluIGEKPiA+Pj4+Pj4+PiBub24tcHJlZmV0Y2hhYmxlIGhvc3QgYnJpZGdlIHdpbmRvdyBpcyBm aW5lKQo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gNjQtYml0IG5vbi1wcmVmZXRjaGFibGUgaG9zdCBi cmlkZ2Ugd2luZG93cyBjYW5ub3QgYmUgZm9yd2FyZGVkIGJ5IFBDSQo+ID4+Pj4+Pj4+IHRvIFBD SSBicmlkZ2VzLCB0aGV5IHNpbXBseSBsYWNrIHRoZSBCQVIgcmVnaXN0ZXJzIHRvIGRlc2NyaWJl IHRoZW0uCj4gPj4+Pj4+Pj4gVGhlcmVmb3JlLCBub24tcHJlZmV0Y2hhYmxlIGVuZHBvaW50IEJB UnMgKGV2ZW4gNjQtYml0IG9uZXMpIG5lZWQgdG8KPiA+Pj4+Pj4+PiBiZSBjYXJ2ZWQgb3V0IG9m IGEgaG9zdCBicmlkZ2UncyBub24tcHJlZmV0Y2hhYmxlIDMyLWJpdCB3aW5kb3cgaWYKPiA+Pj4+ Pj4+PiB0aGV5IG5lZWQgdG8gcGFzcyB0aHJvdWdoIGEgYnJpZGdlLgo+ID4+Pj4+Pj4KPiA+Pj4+ Pj4+IFRoYW5rIHlvdSBmb3IgdGhlIGV4cGxhbmF0aW9uLiBJIGFsc28gbG9va2VkIGF0IHRoZSBQ Q0ktdG8tUENJIEJyaWRnZQo+ID4+Pj4+Pj4gc3BlYyB0byB1bmRlcnN0YW5kIHdoZXJlIHNvbWUg b2YgdGhlIGxpbWl0YXRpb25zIGFyZSBjb21pbmcgZnJvbS4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+Pj4g U28gdGhlIGVycm9yIHNlZW1zIHRvIGJlIGhlcmUgdGhhdCB0aGUgaG9zdCBicmlkZ2UncyAzMi1i aXQKPiA+Pj4+Pj4+PiBub24tcHJlZmV0Y2hhYmxlIHdpbmRvdyBoYXMgdGhlIDY0LWJpdCBhdHRy aWJ1dGUgc2V0LCBldmVuIHRob3VnaCBpdAo+ID4+Pj4+Pj4+IHJlc2lkZXMgYmVsb3cgNCBHQiBl bnRpcmVseS4gSSBzdXBwb3NlIHRoYXQgdGhlIHJlc291cmNlIGFsbG9jYXRpb24KPiA+Pj4+Pj4+ PiBjb3VsZCBiZSBtYWRlIG1vcmUgZm9yZ2l2aW5nIChhbmQgaXQgd2FzIGluIHRoZSBwYXN0LCBi ZWZvcmUgY29tbWl0Cj4gPj4+Pj4+Pj4gOWQ1N2U2MWJmNzIzIHdhcyBhcHBsaWVkKS4gSG93ZXZl ciwgSSB3b3VsZCBzdHJvbmdseSByZWNvbW1lbmQgbm90Cj4gPj4+Pj4+Pj4gZGV2aWF0aW5nIGZy b20gY29tbW9uIHByYWN0aWNlLCBhbmQganVzdCBkZXNjcmliZSB0aGUgMzItYml0Cj4gPj4+Pj4+ Pj4gYWRkcmVzc2FibGUgbm9uLXByZWZldGNoYWJsZSByZXNvdXJjZSB3aW5kb3cgYXMgc3VjaC4K PiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBJSVVDLCB0aGUgaG9zdCBicmlkZ2UncyBjb25maWd1cmF0aW9u ICg2NC1iaXQgb24gbm9uLXByZWZldGNoYWJsZQo+ID4+Pj4+Pj4gd2luZG93KSBpcyBiYXNlZCBv biB3aGF0IHRoZSBoYXJkd2FyZSBhZHZlcnRpc2VzLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4KPiA+Pj4+ Pj4gV2hhdCBkbyB5b3UgbWVhbiBieSAnd2hhdCB0aGUgaGFyZHdhcmUgYWR2ZXJ0aXNlcyc/IFRo ZSBob3N0IGJyaWRnZSBpcwo+ID4+Pj4+PiBhcHBhcmVudGx5IGNvbmZpZ3VyZWQgdG8gZGVjb2Rl IGEgMzItYml0IGFkZHJlc3NhYmxlIHdpbmRvdyBhcyBNTUlPLAo+ID4+Pj4+PiBhbmQgdGhlIHF1 ZXN0aW9uIGlzIHdoeSB0aGlzIHdpbmRvdyBoYXMgdGhlIDY0LWJpdCBhdHRyaWJ1dGUgc2V0IGlu Cj4gPj4+Pj4+IHRoZSBEVCBkZXNjcmlwdGlvbi4KPiA+Pj4+Pj4KPiA+Pj4+Pj4+IENhbiB5b3Ug ZWxhYm9yYXRlIG9uIHdoYXQgeW91IGhhdmUgaW4gbWluZCB0byBjb3JyZWN0IHRoZQo+ID4+Pj4+ Pj4gbm9uLXByZWZldGNoYWJsZSByZXNvdXJjZSB3aW5kb3c/IEFyZSB5b3UgdGhpbmtpbmcgb2Yg YWRkaW5nIGEgcXVpcmsKPiA+Pj4+Pj4+IHNvbWV3aGVyZSB0byBhZGRyZXNzIHRoaXM/Cj4gPj4+ Pj4+Pgo+ID4+Pj4+Pgo+ID4+Pj4+PiBOby4gSnVzdCBmaXggdGhlIERULgo+ID4+Pj4+Cj4gPj4+ Pj4gR29vZCBNb3JuaW5nLAo+ID4+Pj4+Cj4gPj4+Pj4gSSBiZWxpZXZlIFJvYmluIGlzIGNvcnJl Y3QgdGhhdCB0aGVyZSBpcyBtb3JlIHRvIHRoaXMuCj4gPj4+Pj4gV2hpbGUgYXR0ZW1wdGluZyB0 byB3b3JrIG91dCB3aHkgZEdQVXMgd29uJ3Qgd29yayB3aXRoIHRoZSByazM1NngKPiA+Pj4+PiBz ZXJpZXMgUENJZSBjb250cm9sbGVycywgQ2hyaXN0aWFuIEvDtm5pZyBmcm9tIHRoZSBhbWQtZ3B1 IGRyaXZlcgo+ID4+Pj4+IG1haWxpbmcgbGlzdCBub3RpY2VkIHRoZSBncHUgd2FzIGluY29ycmVj dGx5IGFsbG9jYXRlZCBhIDY0Yml0Cj4gPj4+Pj4gbm9uLXByZWZldGNoYWJsZSBCQVIgd2hpY2gg c2hvdWxkIGluc3RlYWQgYmUgYSAzMiBub24tcHJlZmV0Y2hhYmxlCj4gPj4+Pj4gQkFSLgo+ID4+ Pj4+Cj4gPj4+Pgo+ID4+Pj4gVGhpcyBpcyBkdWUgdG8gdGhlIHRyYW5zbGF0aW9uLiBGb3Igc29t ZSByZWFzb24sIGxzcGNpIHRyYW5zbGF0ZXMgdGhlCj4gPj4+PiBCQVIgdmFsdWVzIHRvIENQVSBh ZGRyZXNzZXMsIGJ1dCB0aGUgUENJIHNpZGUgYWRkcmVzc2VzIGFyZSB3aXRoaW4KPiA+Pj4+IDMy LWJpdHMuCj4gPj4+Cj4gPj4+IFRoZSBrZXJuZWwgbG9nIHJlcG9ydHMgdGhlIHNhbWUgdGhpbmc6 Cj4gPj4+IFsgICAgNi42NjIxNDFdIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4 MDAwMDAwMDAtMHgwZmZmZmZmZgo+ID4+PiA2NGJpdCBwcmVmXQo+ID4+PiBbICAgIDYuNjYyOTYz XSBwY2kgMDAwMDowMTowMC4wOiByZWcgMHgxODogW21lbSAweDAwMDAwMDAwLTB4MDAwMWZmZmYg NjRiaXRdCj4gPj4+Cj4gPj4+IFlvdSBhcmUgc2F5aW5nIHRoaXMgaXMgYSBkaXNwbGF5IG9ubHkg aXNzdWU/Cj4gPj4+Cj4gPj4KPiA+PiBZZXMuIFdoYXQgZG8gdGhlICdyb290IGJ1cyByZXNvdXJj ZScgbG9nIGxpbmVzIHNheSBmb3IgdGhlc2UgcmVnaW9ucz8KPiA+PiBUaG9zZSBzaG91bGQgZ2l2 ZSB5b3UgYm90aCB0aGUgQ1BVIGFkZHJlc3MgYXMgd2VsbCBhcyB0aGUgYnVzIGFkZHJlc3MuCj4g Pgo+ID4gWyAgICA2LjY3MzQ5N10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBb aW8gIDB4MDAwMC0weGZmZmZmXQo+ID4gKGJ1cyBhZGRyZXNzIFsweDNmNzAwMDAwLTB4M2Y3ZmZm ZmZdKQo+ID4gWyAgICA2LjY3NDY0Ml0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJj ZSBbbWVtCj4gPiAweDMwMDAwMDAwMC0weDMzZjZmZmZmZl0gKGJ1cyBhZGRyZXNzIFsweDAwMDAw MDAwLTB4M2Y2ZmZmZmZdKQo+Cj4gQXNzdW1pbmcgUkszNTZ4IGhhcyBhIHNpbWlsYXIgbWVtb3J5 IG1hcCB0byBvdGhlciBSb2NrY2hpcCBTb0NzLCBJCj4gc3VzcGVjdCB5b3UgbWF5IGhhdmUgYSBs YXJnZXIgaXNzdWUgd2l0aCB5b3VyIG1lbSBzcGFjZSB3aW5kb3cgc2hhZG93aW5nCj4gYSBzaWdu aWZpY2FudCBjaHVuayBvZiB5b3VyIFJBTS4KPgo+IFJvYmluLgoKRGVsaWdodGZ1bGx5IHRoZXkg c2VlbSB0byBoYXZlIGxlYXJuZWQgYSB0aGluZyBvciB0d28uClRoZSAxR0Igd2luZG93IHJlc2lk ZXMgb3V0c2lkZSB0aGUgc3lzdGVtIHJhbSBzcGFjZS4KVGhvdWdoIHRoZSBtbWlvIGRldmljZXMg ZG8gc3RpbGwgdGFrZSB1cCB0aGUgdGFpbCBlbmQgb2YgdGhlIDRHIHNwYWNlCmF0IDB4ZjAwMDAw MDAgLSAweGZmZmZmZmZmLgpUaGUgc3lzdGVtIHJhbSBjb3ZlcnMgdXAgdG8gMHgyIDB4MDAwMDAw MDAsIHRoZSByazM1Nnggc3VwcG9ydHMgOEcgb2YKcmFtIChJIGtub3csIG9uIGEgMzIgYml0IGJ1 cywgSSd2ZSByYWdlZCBhYm91dCBpdCBhbHJlYWR5KS4KVGhlbiB0aGUgUENJZSBjb250cm9sbGVy cyBzdGFydCBhdCAweDMgMHgwMDAwMDAwMC4KVGhpcyBtYWtlcyBpdCBzZWVtIHRoZSBjb250cm9s bGVycyBoYXZlIGRlZGljYXRlZCBvbiBjaGlwIHJhbSB3aGljaApkb2Vzbid0IGhhdmUgZGlyZWN0 IGFjY2VzcyB0byBzeXN0ZW0gcmFtLCB0aG91Z2ggSSBkb24ndCBrbm93IHRoZQppbXBsaWNhdGlv bnMgb2YgdGhpcyAoaWYgSSdtIGV2ZW4gaW50ZXJwcmV0aW5nIGl0IGNvcnJlY3RseSkuCgo+Cj4g Pgo+ID4gSSB0d2Vha2VkIHRoZSBvcmlnaW5hbCBSb2NrY2hpcCB2YWx1ZXMgdG8gcGxhY2UgdGhl IG5vbi1wcmVmZXRjaGFibGUKPiA+IG1lbW9yeSBmaXJzdCB3aXRoIHRoZSBjb25maWd1cmF0aW9u IGFuZCBpbyBsYXRlciBpbiB0aGlzIGJvb3QuCj4gPgo+ID4+Cj4gPj4KPiA+Pj4+Cj4gPj4+PiBB cmUgeW91IHN1cmUgdGhlIGFtZGdwdSBkcml2ZXIgY2FuIGV2ZW4gZGVhbCB3aXRoIG5vbi0xOjEg aG9zdCBicmlkZ2VzPwo+ID4+Pgo+ID4+PiBJIGNhbm5vdCBhbnN3ZXIgdGhpcyBhcyBJJ20gbm90 IGFuIGFtZGdwdSBkZXYuCj4gPj4+Cj4gPj4+Pgo+ID4+Pj4+IFRoZSByYW5nZXMgY3VycmVudGx5 IHNldCBhcmU6Cj4gPj4+Pj4gcmFuZ2VzID0gPDB4ODEwMDAwMDAgMHgwIDB4MDA4MDAwMDAgMHgz IDB4MDA4MDAwMDAgMHgwIDB4MDAxMDAwMDAKPiA+Pj4+PiAweDgyMDAwMDAwIDB4MCAweDAwOTAw MDAwIDB4MyAweDAwOTAwMDAwIDB4MCAweDNmNzAwMDAwPjsKPiA+Pj4+Pgo+ID4+Pj4KPiA+Pj4+ IFNvIHlvdSBoYXZlIHR3byByYW5nZXMgaGVyZS4KPiA+Pj4KPiA+Pj4gVGhlIElPIGFuZCBQQ0kg bWVtb3J5IHJhbmdlcy4KPiA+Pj4KPiA+Pj4gVGhlcmUgaXMgYSB0aGlyZCByYW5nZSwgdGhlIGNv bmZpZ3VyYXRpb24gcmFuZ2UsIHdoaWNoIGlzIGRlZmluZWQgaW4KPiA+Pj4gdGhlIHJlZyBibG9j azoKPiA+Pj4gPDB4MyAweDAwMDAwMDAwIDB4MCAweDgwMDAwMD4KPiA+Pj4gQWxsIHRocmVlIGFy ZSBzaGFyZWQgaW4gdGhlIHNhbWUgMUdCIHdpbmRvdyBvbiB0aGUgcmszNTZ4Lgo+ID4+Pgo+ID4+ Cj4gPj4gQnV0IHRoZSByZWcgYmxvY2sgaXMgbm90IGEgcmVzb3VyY2Ugd2luZG93LCBpdCBpcyBh IGNvbmZpZ3VyYXRpb24KPiA+PiByYW5nZSB0byBwcm9ncmFtIHRoZSBob3N0IGJyaWRnZS4KPiA+ Pgo+ID4+PiBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NS4xMy1yYzMvc291cmNl L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2llLnR4 dCNMMTIKPiA+Pj4KPiA+Pj4+Cj4gPj4+Pj4gYnV0IHRoZSBmaW5hbCBhbGxvY2F0aW9uIHdhczoK PiA+Pj4+Pgo+ID4+Pj4+IGxzcGNpIC12Cj4gPj4+Pj4gMDA6MDAuMCBQQ0kgYnJpZGdlOiBGdXpo b3UgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uLCBMdGQgRGV2aWNlIDM1NjYKPiA+Pj4+PiAocmV2 IDAxKSAocHJvZy1pZiAwMCBbTm9ybWFsIGRlY29kZV0pCj4gPj4+Pj4gICAgICAgICAgRmxhZ3M6 IGJ1cyBtYXN0ZXIsIGZhc3QgZGV2c2VsLCBsYXRlbmN5IDAsIElSUSA5Ngo+ID4+Pj4+ICAgICAg ICAgIEJ1czogcHJpbWFyeT0wMCwgc2Vjb25kYXJ5PTAxLCBzdWJvcmRpbmF0ZT1mZiwgc2VjLWxh dGVuY3k9MAo+ID4+Pj4+ICAgICAgICAgIEkvTyBiZWhpbmQgYnJpZGdlOiAwMDAwMTAwMC0wMDAw MWZmZiBbc2l6ZT00S10KPiA+Pj4+PiAgICAgICAgICBNZW1vcnkgYmVoaW5kIGJyaWRnZTogMDA5 MDAwMDAtMDA5ZmZmZmYgW3NpemU9MU1dCj4gPj4+Pj4gICAgICAgICAgUHJlZmV0Y2hhYmxlIG1l bW9yeSBiZWhpbmQgYnJpZGdlOgo+ID4+Pj4+IDAwMDAwMDAwMTAwMDAwMDAtMDAwMDAwMDAxZmZm ZmZmZiBbc2l6ZT0yNTZNXQo+ID4+Pj4KPiA+Pj4+IEJ1dCB0aGUgaG9zdCBicmlkZ2Uvcm9vdCBw b3J0IGRlY29kZXMgdHdvIGRpc2pvaW50IHJlZ2lvbnM/Pwo+ID4+Pj4KPiA+Pj4+PiAgICAgICAg ICBFeHBhbnNpb24gUk9NIGF0IDMwMGEwMDAwMCBbdmlydHVhbF0gW2Rpc2FibGVkXSBbc2l6ZT02 NEtdCj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNDBdIFBvd2VyIE1hbmFnZW1lbnQg dmVyc2lvbiAzCj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbNTBdIE1TSTogRW5hYmxl KyBDb3VudD0xLzMyIE1hc2thYmxlLSA2NGJpdCsKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRp ZXM6IFs3MF0gRXhwcmVzcyBSb290IFBvcnQgKFNsb3QtKSwgTVNJIDAwCj4gPj4+Pj4gICAgICAg ICAgQ2FwYWJpbGl0aWVzOiBbYjBdIE1TSS1YOiBFbmFibGUtIENvdW50PTEgTWFza2VkLQo+ID4+ Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzEwMF0gQWR2YW5jZWQgRXJyb3IgUmVwb3J0aW5n Cj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbMTQ4XSBTZWNvbmRhcnkgUENJIEV4cHJl c3MKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFsxNjBdIEwxIFBNIFN1YnN0YXRlcwo+ ID4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogWzE3MF0gVmVuZG9yIFNwZWNpZmljIEluZm9y bWF0aW9uOiBJRD0wMDAyIFJldj00Cj4gPj4+Pj4gTGVuPTEwMCA8Pz4KPiA+Pj4+PiAgICAgICAg ICBLZXJuZWwgZHJpdmVyIGluIHVzZTogcGNpZXBvcnQKPiA+Pj4+Pgo+ID4+Pj4+IDAxOjAwLjAg VkdBIGNvbXBhdGlibGUgY29udHJvbGxlcjogQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+ ID4+Pj4+IFtBTUQvQVRJXSBUdXJrcyBQUk8gW1JhZGVvbiBIRCA3NTcwXSAocHJvZy1pZiAwMCBb VkdBIGNvbnRyb2xsZXJdKQo+ID4+Pj4+ICAgICAgICAgIFN1YnN5c3RlbTogRGVsbCBUdXJrcyBQ Uk8gW1JhZGVvbiBIRCA3NTcwXQo+ID4+Pj4+ICAgICAgICAgIEZsYWdzOiBidXMgbWFzdGVyLCBm YXN0IGRldnNlbCwgbGF0ZW5jeSAwLCBJUlEgOTUKPiA+Pj4+PiAgICAgICAgICBNZW1vcnkgYXQg MzEwMDAwMDAwICg2NC1iaXQsIHByZWZldGNoYWJsZSkgW3NpemU9MjU2TV0KPiA+Pj4+PiAgICAg ICAgICBNZW1vcnkgYXQgMzAwOTAwMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXpl PTEyOEtdCj4gPj4+Pj4gICAgICAgICAgSS9PIHBvcnRzIGF0IDEwMDAgW3NpemU9MjU2XQo+ID4+ Pj4+ICAgICAgICAgIEV4cGFuc2lvbiBST00gYXQgMzAwOTIwMDAwIFtkaXNhYmxlZF0gW3NpemU9 MTI4S10KPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVu dCB2ZXJzaW9uIDMKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyBM ZWdhY3kgRW5kcG9pbnQsIE1TSSAwMAo+ID4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogW2Ew XSBNU0k6IEVuYWJsZS0gQ291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKPiA+Pj4+PiAgICAgICAg ICBDYXBhYmlsaXRpZXM6IFsxMDBdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAw MSBSZXY9MQo+ID4+Pj4+IExlbj0wMTAgPD8+Cj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVz OiBbMTUwXSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcKPiA+Pj4+PiAgICAgICAgICBLZXJuZWwg ZHJpdmVyIGluIHVzZTogcmFkZW9uCj4gPj4+Pj4KPiA+Pj4+PiAwMTowMC4xIEF1ZGlvIGRldmlj ZTogQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBbQU1EL0FUSV0gVHVya3MKPiA+Pj4+PiBI RE1JIEF1ZGlvIFtSYWRlb24gSEQgNjUwMC82NjAwIC8gNjcwME0gU2VyaWVzXQo+ID4+Pj4+ICAg ICAgICAgIFN1YnN5c3RlbTogRGVsbCBUdXJrcyBIRE1JIEF1ZGlvIFtSYWRlb24gSEQgNjUwMC82 NjAwIC8gNjcwME0gU2VyaWVzXQo+ID4+Pj4+ICAgICAgICAgIEZsYWdzOiBidXMgbWFzdGVyLCBm YXN0IGRldnNlbCwgbGF0ZW5jeSAwLCBJUlEgOTgKPiA+Pj4+PiAgICAgICAgICBNZW1vcnkgYXQg MzAwOTQwMDAwICg2NC1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXplPTE2S10KPiA+Pj4+PiAg ICAgICAgICBDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDMKPiA+ Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRXhwcmVzcyBMZWdhY3kgRW5kcG9pbnQs IE1TSSAwMAo+ID4+Pj4+ICAgICAgICAgIENhcGFiaWxpdGllczogW2EwXSBNU0k6IEVuYWJsZSsg Q291bnQ9MS8xIE1hc2thYmxlLSA2NGJpdCsKPiA+Pj4+PiAgICAgICAgICBDYXBhYmlsaXRpZXM6 IFsxMDBdIFZlbmRvciBTcGVjaWZpYyBJbmZvcm1hdGlvbjogSUQ9MDAwMSBSZXY9MQo+ID4+Pj4+ IExlbj0wMTAgPD8+Cj4gPj4+Pj4gICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbMTUwXSBBZHZhbmNl ZCBFcnJvciBSZXBvcnRpbmcKPiA+Pj4+PiAgICAgICAgICBLZXJuZWwgZHJpdmVyIGluIHVzZTog c25kX2hkYV9pbnRlbAo+ID4+Pj4+Cj4gPj4+Pj4gVGhpcyB3aWxsIG9idmlvdXNseSBjbG9iYmVy IHJlZ2lzdGVycyBkdXJpbmcgd3JpdGVzLgo+ID4+Pj4KPiA+Pj4+IEkgZG9uJ3QgZm9sbG93LiBX aGljaCB3cml0ZXMgd2lsbCBjbG9iYmVyIHdoaWNoIHJlZ2lzdGVycywgYW5kIGhvdyBpcwo+ID4+ Pj4gaXQgb2J2aW91cz8KPiA+Pj4KPiA+Pj4gV3JpdGluZyBhIDY0IGJpdCB3b3JkIGludG8gYSAz MiBiaXQgcmVnaXN0ZXIgd2lsbCBlaXRoZXIgY2xvYmJlciB0aGUKPiA+Pj4gbmV4dCBoaWdoZXIg MzIgYml0IHJlZ2lzdGVyLgo+ID4+PiBRdW90aW5nIENocmlzdGlhbjoKPiA+Pj4gIldoZW4geW91 IHByb2dyYW0gYSAzMmJpdCBCQVIgYXMgNjRiaXQgeW91IG92ZXJ3cml0ZSB0aGUgcmVnaXN0ZXIg YmVoaW5kCj4gPj4+IHRoZSBCQVIgYWRkcmVzcyB3aXRoIHRoZSB1cHBlciAzMmJpdHMgb2YgdGhl IDY0Yml0IGFkZHJlc3MgdmFsdWUuCj4gPj4+IFNvIGV2ZW4gaWYgdGhlIGFsbG9jYXRpb24gZml0 cyBpbnRvIDMyYml0cywgdGhlIGV4dHJhIHJlZ2lzdGVyIHdyaXRlCj4gPj4+IHdpbGwgY2VydGFp bmx5IHB1dCB5b3VyIGRldmljZSBpbnRvIGEgYmFuYW5hIHN0YXRlLiIKPiA+Pj4KPiA+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvYW1kLWdmeC8yMDIxLU1heS8wNjQy MzIuaHRtbAo+ID4+Pgo+ID4+Cj4gPj4gSSBzZXJpb3VzbHkgZG91YnQgdGhhdCB0aGlzIGlzIHdo YXQgaXMgZ29pbmcgb24gaGVyZS4KPiA+Pgo+ID4+IGxzcGNpIC14IHdpbGwgZ2l2ZSB5b3UgdGhl IGJhcmUgQkFSIHZhbHVlcyAtIEkgc3VzcGVjdCB0aGF0IHRob3NlIGFyZQo+ID4+IHByb2JhYmx5 IGZpbmUuCj4gPgo+ID4gbHNwY2kgLXgKPiA+IDAwOjAwLjAgUENJIGJyaWRnZTogRnV6aG91IFJv Y2tjaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkIERldmljZSAzNTY2IChyZXYgMDEpCj4gPiAwMDog ODcgMWQgNjYgMzUgMDcgMDUgMTAgNDAgMDEgMDAgMDQgMDYgMDAgMDAgMDEgMDAKPiA+IDEwOiAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSBmZiAwMCAxMCAxMCAwMCAyMAo+ID4gMjA6IDAw IDEwIDAwIDEwIDAxIDAwIGYxIDBmIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPiAzMDogMDAg MDAgMDAgMDAgNDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNWYgMDEgMDIgMDAKPiA+Cj4gPiAwMTow MC4wIFZHQSBjb21wYXRpYmxlIGNvbnRyb2xsZXI6IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIElu Yy4KPiA+IFtBTUQvQVRJXSBUdXJrcyBQUk8gW1JhZGVvbiBIRCA3NTcwXQo+ID4gMDA6IDAyIDEw IDVkIDY3IDA3IDAwIDEwIDIwIDAwIDAwIDAwIDAzIDAwIDAwIDgwIDAwCj4gPiAxMDogMGMgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDQgMDAgMDAgMTAgMDAgMDAgMDAgMDAKPiA+IDIwOiAwMSAxMCA3 MCAzZiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAyOCAxMCAyMCAyYgo+ID4gMzA6IDAwIDAwIDAy IDEwIDUwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVmIDAxIDAwIDAwCj4gPgo+ID4gMDE6MDAuMSBB dWRpbyBkZXZpY2U6IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gW0FNRC9BVEldIFR1cmtz Cj4gPiBIRE1JIEF1ZGlvIFtSYWRlb24gSEQgNjUwMC82NjAwIC8gNjcwME0gU2VyaWVzXQo+ID4g MDA6IDAyIDEwIDkwIGFhIDA2IDAwIDEwIDIwIDAwIDAwIDAzIDA0IDAwIDAwIDgwIDAwCj4gPiAx MDogMDQgMDAgMDQgMTAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPiA+IDIw OiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAyOCAxMCA5MCBhYQo+ID4gMzA6 IDAwIDAwIDAwIDAwIDUwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIGZmIDAyIDAwIDAwCj4gPgo+ID4+ Cj4gPj4KPiA+Pj4+Cj4gPj4+Pj4gQWxzbywgaWYgPDB4ODIwMDAwMDA+ICgzMiBiaXQpIGlzIGNo YW5nZWQgdG8gPDB4ODMwMDAwMDA+ICg2NCBiaXQpLAo+ID4+Pj4+IG1vc3Qgb2YgdGhlIGFsbG9j YXRpb25zIGZvciB0aGUgZEdQVSBmYWlsIGR1ZSB0byBubyB2YWxpZCByZWdpb25zCj4gPj4+Pj4g YXZhaWxhYmxlLgo+ID4+Pj4+Cj4gPj4+Pgo+ID4+Pj4gQnV0IHdhc24ndCB0aGUgb3JpZ2luYWwg cHJvYmxlbSB0aGF0IHRoZSByZXNvdXJjZSB3aW5kb3cgd2FzIDY0LWJpdCB0bwo+ID4+Pj4gYmVn aW4gd2l0aD8gQXJlIHlvdSBzdXJlIHdlIGFyZSB0YWxraW5nIGFib3V0IHRoZSBzYW1lIHByb2Js ZW0gaGVyZT8KPiA+Pj4KPiA+Pj4gVGhlIHJrMzM5OSBpbiB0aGUgb3JpZ2luYWwgcmVwb3J0IGhh cyBhIDMyTUIgbWVtb3J5IHdpbmRvdyBpbiB0aGUKPiA+Pj4gdXBwZXIgZW5kIG9mIHRoZSA0R0Ig cmFuZ2UuCj4gPj4+IFRoZSByazM1NnggaGFzIGEgc2ltaWxhciBsYXlvdXQsIG9yIGl0IGNhbiB1 c2UgYSAxR0Igd2luZG93IGF2YWlsYWJsZQo+ID4+PiBhdCA8MHgzIDB4MDAwMDAwMDA+Lgo+ID4+ PiBSb2NrY2hpcCdzIGRlZmF1bHQgd2luZG93cyBhcmUgZGVmaW5lZCBhcyA2NGJpdC4KPiA+Pj4K PiA+Pj4gVGhlIHJrMzM5OSBkb2Vzbid0IGhhdmUgZW5vdWdoIHNwYWNlIHRvIHJlYXNvbmFibHkg ZGVmaW5lIHR3byB3aW5kb3dzLAo+ID4+PiBvbmUgMzJiaXQsIG9uZSA2NGJpdCwgdG8gd29yayBh cm91bmQgYW4gYWxsb2NhdGlvbiBidWcuCj4gPj4+IFRoZXNlIGFyZSB0aGUgZGVmaW5lZCByZWdp b25zIGluIHRoZSByazMzOTk6Cj4gPj4+IHJhbmdlcyA9IDwweDgzMDAwMDAwIDB4MCAweGZhMDAw MDAwIDB4MCAweGZhMDAwMDAwIDB4MCAweDFlMDAwMDA+LAo+ID4+PiA8MHg4MTAwMDAwMCAweDAg MHhmYmUwMDAwMCAweDAgMHhmYmUwMDAwMCAweDAgMHgxMDAwMDA+Owo+ID4+Pgo+ID4+Cj4gPj4g QWxsIHlvdSByZWFsbHkgbmVlZCBpcyBhIDMyLWJpdCBub24tcHJlZmV0Y2hhYmxlIHJlc291cmNl IHdpbmRvdzogYW55Cj4gPj4gQkFSIGNhbiBiZSBhbGxvY2F0ZWQgZnJvbSB0aGF0LiBBIDY0LWJp dCBCQVIgY2FuIGNhcnJ5IGEgMzItYml0IG51bWJlcgo+ID4+IChqdXN0IGFkZCB6ZXJvZXMgYXQg dGhlIHRvcCksIGFuZCBhIHByZWZldGNoYWJsZSBCQVIgY2FuIGhhcHBpbHkgbGl2ZQo+ID4+IGlu IGEgbm9uLXByZWZldGNoYWJsZSB3aW5kb3csIHdpdGggYSB0aGVvcmV0aWNhbCBwZXJmb3JtYW5j ZSBpbXBhY3QgaWYKPiA+PiB0aGUgT1MgYWN0dWFsbHkgZG9lcyB1c2UgZGlmZmVyZW50IG1lbW9y eSBhdHRyaWJ1dGVzIGZvciB0aGUKPiA+PiBwcmVmZXRjaGFibGUgd2luZG93IChidXQgSSBkb24n dCB0aGluayBMaW51eCBldmVyIGhhbmRsZXMgaXQgdGhpcyB3YXkpCj4gPgo+ID4gU28gaXMgdGhl IElPIHJhbmdlIG5lY2Vzc2FyeSBhcyB3ZWxsIG9yIHdpbGwgaXQgYmUgYXV0b21hdGljYWxseQo+ ID4gYWxsb2NhdGVkIGFzIHdlbGw/Cj4gPgo+ID4+Cj4gPj4KPiA+Pj4KPiA+Pj4+Cj4gPj4+Pgo+ ID4+Pj4+Pgo+ID4+Pj4+Pj4gSSBhbSBoYXBweSB0byBwdXQgc29tZXRoaW5nIHRvZ2V0aGVyIG9u Y2UgSSB1bmRlcnN0YW5kIHRoZSBwcmVmZXJyZWQgd2F5Cj4gPj4+Pj4+PiB0byBnbyBhYm91dCBp dC4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBUaGFua3MsCj4gPj4+Pj4+PiBQdW5pdAo+ID4+Pj4+Pj4K PiA+Pj4+Pj4+IFsuLi5dCj4gPj4+Pj4+Pgo+ID4+Pj4+Pgo+ID4+Pj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+Pj4+PiBMaW51eC1yb2NrY2hp cCBtYWlsaW5nIGxpc3QKPiA+Pj4+Pj4gTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9y Zwo+ID4+Pj4+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJvY2tjaGlwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==