From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 340FE44839A; Wed, 16 Sep 2026 08:25:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789547115; cv=none; b=Q8pHGWmrXBCimAj54KpHoZze8wyLhPbKUEnVed5Rq1adVP9XTQGqhm/J7fxV8M05DYqkDTjexB8KKA4ZgxwN+PBiCdP0JAAjyv2PFKj45I7sFScUFHCBkkpqjS585DGLV/fIuHp326dolOaHCqhTWfdNi3EGHxsd+UmekGf34jU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789547115; c=relaxed/simple; bh=/8itoCy2uuAdT2BRbZBqwKTAhTZbp5WyzRD+XEeprJk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=PCUtneAQlrdRzkBbT7AWBrSbns1ZhndzrarZW96B/+CLuZpctFBcdgCaSUnIfqnscklbOpjJWhre7WHSvvrT4h6cHmmyq8NECKtcRZSxOLix41va4xMTOJ7O5ATSUcFu+XmrqH8aUHhHkNf1gURM7KvEdKs+VMO3ZamtFAjg+hw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=JybzSzpK; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="JybzSzpK" 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 E88D11E32; Wed, 16 Sep 2026 01:25:02 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1CB9F3F882; Wed, 16 Sep 2026 01:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1789547106; bh=/8itoCy2uuAdT2BRbZBqwKTAhTZbp5WyzRD+XEeprJk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=JybzSzpKsBXyl5ejDpbE5Lnvl5rgBgnIjwZqLVkpg80e2fZA0FHiqFmVFqCsHggez D/2HtVhTxYvpa7MlJ137x509omi1Bd/DX1rZ/NzmDZOfKOhGAxp3hQgdQFFWlUD47k F4i8xjR5OAGGBPPH7W2sg/6d2c3BHgDuGy75hXg4= Date: Wed, 16 Sep 2026 09:24:56 +0100 From: Yeoreum Yun To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Muhammad Usama Anjum , Yeoreum Yun Subject: Re: [PATCH RFC v3 00/21] mm: change behavior of pXdp_get()/pXd_page() in compile-time folded pgtable Message-ID: References: <20260902-dummy_ptxp3-v3-0-5d8f5b17c25c@arm.com> Precedence: bulk X-Mailing-List: linux-mips@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20260902-dummy_ptxp3-v3-0-5d8f5b17c25c@arm.com> Hi all, Are there any further comments on this series? If not, I’ll post the series without the RFC tag sometime next week :) Thanks! > Using ptep_get() and its counterparts in common code is suboptimal on > kernel configurations with generic compile-time folded page tables. > By default, ptep_get() and its friends expands to READ_ONCE(), > forcing the compiler to emit a load even when the value is not used afterwards. > > This issue was recently reported by Christophe Leroy [1] for ppc32 > preventing futher code conversion to ptep_get()/pmdp_get()/... helper > and the same behavior can also be observed on arm64 when built with > 2- or 3-level page tables > > e.g) perf_get_page_size() in arm64 with CONFIG_PGTABLE_LEVEL=3: > > 00000000000052a0 : > ... > 52dc: d53b4234 mrs x20, DAIF > 52e0: d50343df msr DAIFSet, #0x3 > ... > 52fc: d35e9a69 ubfx x9, x19, #30, #9 /* pud_offset_lockless() */ > 5300: f9403508 ldr x8, [x8, #0x68] > 5304: f869790a ldr x10, [x8, x9, lsl #3] /* pudp_get() */ > 5308: f90007ea str x10, [sp, #0x8] > 530c: f8697908 ldr x8, [x8, x9, lsl #3] /* pudp_get() */ > ... > 5360: 90000009 adrp x9, 0x5000 > 5364: 92746908 and x8, x8, #0x7ffffff000 > 5368: d3557675 ubfx x21, x19, #21, #9 /* pmd_offset_lockless() */ > ... > 5394: f8757ac8 ldr x8, [x22, x21, lsl #3] /* pmdp_get() */ > > Though PGTABLE_LEVEL=3, since the pudp_get() still remain with > READ_ONCE(), there's redundant load for the pud which is folded. > > To prevent generating suboptimal code, make pXdp_get() return a dummy > entry for compile-time folded page tables, make the helpers such as > pXd_offset()/pXd_offset_lockless(), set_pXd() validate dummy entries > at compile time to catch the wrong usage and prohibit calls to > pXd_page() in pgtable-nopXd.h. > > This series does not change the behaviour of existing code that directly > manipulates folded page-table levels using set_pgd(), pgd_page_vaddr(), and > related helpers. Those helpers continue to behave as before. > > The new restrictions only apply to code that adopts the pXdp_get()-based > access model for compile-time folded page tables. > > As the pXdp_get() can return *dummy* entry, some of code using > the stack value where saves the pXdp_get() could be a problematic: > > 1. Passing address of stack value where saves the pXdp_get() result > to pXd_offset() for example: > > pud_t *pudp, pud; > pmd_t *pmdp; > > pud = pudp_get(pudp, address); > pmdp = pmd_offset(&pud, pud, address); > > (e.g. host_pfn_mapping_level() in loongarch). > > 2. Using the pXdp_get() result to use as argument of pXd_val() and > to check prot without checking pgtable is folded. > for example, x86's effective_prot(). > > 3. Using set_pXd() with pXdp_get() will set problematic dummy entry > in folded page table like: > > set_pXd(pxdp, pXdp_get(pxdp_k)); > > 4. Using pgd_page_vaddr() to get the first-level pgtable. > passing dummy pxdp_get() for pgd_page_vaddr() will return wrong > address. Therefore, make pgd_page_vaddr() and pXd_pgtable() to > trigger the error for improper usage with folded dummy entry in the > generic compile-time folded pgtable. > > Thanksfully, above cases are rare since (1) most of usage using > pXd_offset() with result of upper pXd_offset(), (2) it's extreamely > rare to use pXd_val() for non-leaf entry in the kernel, > (3) is to handle the vmalloc_fault or set the first level of page table > and (4) to setup early page table and etc. > > Therefore, properly handle this uncommon and problematic pattern, and > document the current design of compile-time folded page tables. > > This patch is based on mm-unstable. > > Future work > =========== > - print_bad_page_map() and show_pte() still prints dummy values > instead of printing the same content for all generic compile-time > folded page tables. We might want to skip printing dummy values later. > > - We currently catch abuse of dummy values on the stack at compile-time by > relying on constant propagation by the compiler. Usama's work [3] on using > distinct types for sw vs. hw PTEs could help here as well." > > - Clean up vmalloc fault handling by synchronizing the vmalloc entry on > 32-bit architectures. This code is almost identical across architectures. > > - Unfortunately, the current design of compile-time folded page tables appears > to be internally consistent but confusing. For example, > when CONFIG_PGTABLE_LEVELS is 2, p4d, pud, and pmd are expected to > be folded into pgd. However, the architecture code uses set_pmd() > to update the top-level page-table entry, even though it includes pgtable-nopmd.h. > > In the future, it would be good to eliminate this source of confusion, > possibly by treating all folded upper levels consistently as dummy wrappers > around the highest real page-table level: > > NOPGD > --> +------+ P4D > | ptr0 |-------> +------+ PUD > +------+ | ptr0 |-------> +-----+ > | ptr1 |- | ptr | -------> ... > | ptr2 | \ | ptr | > | ptr3 | \ ... > ... \ > \ PUD > +----> +-----+ > | ptr | -------> ... > | ptr | > ... > > Patch History > ============= > from v2 to v3: > - repasre commit message > - move ptdump_pgtable_first_level() into pgalloc.h > - skip the huge pud operation when CONFIG_X86_DIRECT_GBPAGES is disabled > - docuemtns compile-time folded page table > - drop the applied patch. > - https://lore.kernel.org/all/20260722-dummy_ptxp3-v2-0-d9e4bad31e0a@arm.com/ > > from v1 to v2: > - Restore slient fallback to next pXd in set_pXd() and pXd_pgtable() > and add check whether they're called with dummy entry. > - Add some comment for returning first entry of pgd in arm with > 2 pgtable-level > - https://lore.kernel.org/all/20260713135614.1618183-1-yeoreum.yun@arm.com/ > > Link: [1] https://lore.kernel.org/all/0019d675-ce3d-4a5c-89ed-f126c45145c9@kernel.org/ > Link: [2] https://lore.kernel.org/all/20251113014656.2605447-1-samuel.holland@sifive.com/ > Link: [3] https://lore.kernel.org/r/74182e50-b54f-4d2d-a27f-3a59a538d6bc@arm.com > --- > David Hildenbrand (Arm) (13): > ARM: mm: make nommu pgd_t a scalar > ARM: mm: make 2-level pgd_t a scalar > ARM: mm: remove custom pgdp_get() > LoongArch: mm: define pud_leaf() only when PUD exists > MIPS: mm: define pud_leaf() only when PUD exists > mm/pgtable: define (pgd|p4d|pud)_leaf() for folded page tables > mm/pgtable: define (pgd|p4d|pud)_offset_lockless() for folded page tables > openrisc/pgtable: drop __pmd_offset() > mm/pgtable: optimize pmdp_get() and friends for folded pagetable levels > mm/pgtable: catch abuse of folded dummy pgd_t/p4d_t/pud_t > mm/pgtable: disallow calling (pgd|p4d|pud)_page, pgd_page_vaddr() and (p4d|pud)_pgtable with dummy > mm/pgtable: disallow calling folded set_pgd/set_p4d/set_pud with dummy > Documentation: mm: clarify behaviour of compile-time folded page tables > > Yeoreum Yun (8): > mm: vmscan: remove stack copy address of pud/pmd pass in walk_pud/pmd_range() > loongarch: kvm: remove stack copy address of pXd in pXd_offset() > riscv: kvm: remove stack copy address of pXd in pXd_offset() > riscv: mm: use proper set_pXd() for generic compile-time folded patable in vmalloc_fault() > mm/pgtable: redefine PGTABLE_LEVEL enum with ascend order from PGD > x86: mm: use pgtable_level enum in effective_prot_pXd() > x86: mm: carve out the generic compile-time folded pgtable case in effective_prot() > x86: mm: skip collapse_pud_page() when CONFIG_X86_DIRECT_GBPAGES disabled > > Documentation/mm/page_tables.rst | 84 +++++++++++++++++++++++++---- > arch/arm/include/asm/page-nommu.h | 4 +- > arch/arm/include/asm/pgtable-2level-types.h | 20 +++++-- > arch/arm/include/asm/pgtable.h | 2 - > arch/arm64/include/asm/pgtable.h | 23 -------- > arch/loongarch/include/asm/pgtable.h | 2 + > arch/loongarch/kvm/mmu.c | 20 ++++--- > arch/mips/include/asm/pgtable.h | 2 + > arch/openrisc/include/asm/pgtable.h | 3 -- > arch/riscv/kvm/mmu.c | 20 ++++--- > arch/riscv/mm/fault.c | 52 +++++++++++------- > arch/x86/mm/dump_pagetables.c | 18 ++++--- > arch/x86/mm/pat/set_memory.c | 2 +- > include/asm-generic/pgtable-nop4d.h | 54 +++++++++++++++---- > include/asm-generic/pgtable-nopmd.h | 54 +++++++++++++++---- > include/asm-generic/pgtable-nopud.h | 56 +++++++++++++++---- > include/linux/pgtable.h | 69 +++++++++++++++++------- > mm/vmscan.c | 4 +- > 18 files changed, 352 insertions(+), 137 deletions(-) > --- > base-commit: e3b5239afe1b8f0194db7436b17c33e94c1988c4 > change-id: 20260722-dummy_ptxp3-3741d78cc70f > > Best regards, > -- > Sincerely, > Yeoreum Yun > -- Sincerely, Yeoreum Yun From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D7148C88E77 for ; Wed, 16 Sep 2026 08:25:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4C69op0KgplLQlmp6MbmDxoBctld1MYcJ8J0+IIknqE=; b=11WwUCKySHPcFy K0cKM9nprLJiujXUZ2Sgl/VQwBG0/3e6rr1qt0FttS9lSUjl5/obFGsk12mtl+7Ksexh9R856yKXs W8mXS3LfIRSQTRj/iKYidp+89Tq8hw78amSRHM/vD7I+z4AeElHt24zaDGVgd0iLuVjeXWLXfUSYN H74zgcObwh29YHfI2oKmFqFfKgtKa23MfXhNPZWqDsujY80Q4N0lEUXDapl1rSN2ExcnrqTp7biVw jyEbU7WG2FB+dcRkph6c/qU5LqF86mkN9Z+4OsbgMl7Fx3p5OV2DyQE/7rcGn7UJ/dUq2TDUvNTu/ fz44LxVk8K4C++6iCl8w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6kx9-00000008i9M-0p9C; Wed, 16 Sep 2026 08:25:15 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6kx2-00000008i8B-1pYJ; Wed, 16 Sep 2026 08:25:11 +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 E6BC7176A; Wed, 16 Sep 2026 01:25:02 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1CB9F3F882; Wed, 16 Sep 2026 01:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1789547106; bh=/8itoCy2uuAdT2BRbZBqwKTAhTZbp5WyzRD+XEeprJk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=JybzSzpKsBXyl5ejDpbE5Lnvl5rgBgnIjwZqLVkpg80e2fZA0FHiqFmVFqCsHggez D/2HtVhTxYvpa7MlJ137x509omi1Bd/DX1rZ/NzmDZOfKOhGAxp3hQgdQFFWlUD47k F4i8xjR5OAGGBPPH7W2sg/6d2c3BHgDuGy75hXg4= Date: Wed, 16 Sep 2026 09:24:56 +0100 From: Yeoreum Yun To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Muhammad Usama Anjum , Yeoreum Yun Subject: Re: [PATCH RFC v3 00/21] mm: change behavior of pXdp_get()/pXd_page() in compile-time folded pgtable Message-ID: References: <20260902-dummy_ptxp3-v3-0-5d8f5b17c25c@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20260902-dummy_ptxp3-v3-0-5d8f5b17c25c@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260916_012509_507653_3C315F21 X-CRM114-Status: GOOD ( 42.61 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkgYWxsLAoKQXJlIHRoZXJlIGFueSBmdXJ0aGVyIGNvbW1lbnRzIG9uIHRoaXMgc2VyaWVzPwpJ ZiBub3QsIEnigJlsbCBwb3N0IHRoZSBzZXJpZXMgd2l0aG91dCB0aGUgUkZDIHRhZyBzb21ldGlt ZSBuZXh0IHdlZWsgOikKClRoYW5rcyEKCj4gVXNpbmcgcHRlcF9nZXQoKSBhbmQgaXRzIGNvdW50 ZXJwYXJ0cyBpbiBjb21tb24gY29kZSBpcyBzdWJvcHRpbWFsIG9uCj4ga2VybmVsIGNvbmZpZ3Vy YXRpb25zIHdpdGggZ2VuZXJpYyBjb21waWxlLXRpbWUgZm9sZGVkIHBhZ2UgdGFibGVzLgo+IEJ5 IGRlZmF1bHQsIHB0ZXBfZ2V0KCkgYW5kIGl0cyBmcmllbmRzIGV4cGFuZHMgdG8gUkVBRF9PTkNF KCksCj4gZm9yY2luZyB0aGUgY29tcGlsZXIgdG8gZW1pdCBhIGxvYWQgZXZlbiB3aGVuIHRoZSB2 YWx1ZSBpcyBub3QgdXNlZCBhZnRlcndhcmRzLgo+IAo+IFRoaXMgaXNzdWUgd2FzIHJlY2VudGx5 IHJlcG9ydGVkIGJ5IENocmlzdG9waGUgTGVyb3kgWzFdIGZvciBwcGMzMgo+IHByZXZlbnRpbmcg ZnV0aGVyIGNvZGUgY29udmVyc2lvbiB0byBwdGVwX2dldCgpL3BtZHBfZ2V0KCkvLi4uIGhlbHBl cgo+IGFuZCB0aGUgc2FtZSBiZWhhdmlvciBjYW4gYWxzbyBiZSBvYnNlcnZlZCBvbiBhcm02NCB3 aGVuIGJ1aWx0IHdpdGgKPiAyLSBvciAzLWxldmVsIHBhZ2UgdGFibGVzCj4gCj4gZS5nKSBwZXJm X2dldF9wYWdlX3NpemUoKSBpbiBhcm02NCB3aXRoIENPTkZJR19QR1RBQkxFX0xFVkVMPTM6Cj4g Cj4gMDAwMDAwMDAwMDAwNTJhMCA8cGVyZl9nZXRfcGFnZV9zaXplPjoKPiAgICAgLi4uCj4gICAg IDUyZGM6IGQ1M2I0MjM0ICAgICAJbXJzCXgyMCwgREFJRgo+ICAgICA1MmUwOiBkNTAzNDNkZiAg ICAgCW1zcglEQUlGU2V0LCAjMHgzCj4gICAgIC4uLgo+ICAgICA1MmZjOiBkMzVlOWE2OSAgICAg CXViZngJeDksIHgxOSwgIzMwLCAjOSAgICAgICAgLyogcHVkX29mZnNldF9sb2NrbGVzcygpICov Cj4gICAgIDUzMDA6IGY5NDAzNTA4ICAgICAJbGRyCXg4LCBbeDgsICMweDY4XQo+ICAgICA1MzA0 OiBmODY5NzkwYSAgICAgCWxkcgl4MTAsIFt4OCwgeDksIGxzbCAjM10gICAvKiBwdWRwX2dldCgp ICovCj4gICAgIDUzMDg6IGY5MDAwN2VhICAgICAJc3RyCXgxMCwgW3NwLCAjMHg4XQo+ICAgICA1 MzBjOiBmODY5NzkwOCAgICAgCWxkcgl4OCwgW3g4LCB4OSwgbHNsICMzXSAgICAvKiBwdWRwX2dl dCgpICovCj4gICAgIC4uLgo+ICAgICA1MzYwOiA5MDAwMDAwOSAgICAgCWFkcnAJeDksIDB4NTAw MCA8cGVyZl9wcmVwYXJlX3NhbXBsZSsweDU0OD4KPiAgICAgNTM2NDogOTI3NDY5MDggICAgIAlh bmQJeDgsIHg4LCAjMHg3ZmZmZmZmMDAwCj4gICAgIDUzNjg6IGQzNTU3Njc1ICAgICAJdWJmeAl4 MjEsIHgxOSwgIzIxLCAjOSAgICAgICAvKiBwbWRfb2Zmc2V0X2xvY2tsZXNzKCkgKi8KPiAgICAg Li4uCj4gICAgIDUzOTQ6IGY4NzU3YWM4ICAgICAJbGRyCXg4LCBbeDIyLCB4MjEsIGxzbCAjM10g IC8qIHBtZHBfZ2V0KCkgKi8KPiAKPiBUaG91Z2ggUEdUQUJMRV9MRVZFTD0zLCBzaW5jZSB0aGUg cHVkcF9nZXQoKSBzdGlsbCByZW1haW4gd2l0aAo+IFJFQURfT05DRSgpLCB0aGVyZSdzIHJlZHVu ZGFudCBsb2FkIGZvciB0aGUgcHVkIHdoaWNoIGlzIGZvbGRlZC4KPiAKPiBUbyBwcmV2ZW50IGdl bmVyYXRpbmcgc3Vib3B0aW1hbCBjb2RlLCBtYWtlIHBYZHBfZ2V0KCkgcmV0dXJuIGEgZHVtbXkK PiBlbnRyeSBmb3IgY29tcGlsZS10aW1lIGZvbGRlZCBwYWdlIHRhYmxlcywgbWFrZSB0aGUgaGVs cGVycyBzdWNoIGFzCj4gcFhkX29mZnNldCgpL3BYZF9vZmZzZXRfbG9ja2xlc3MoKSwgc2V0X3BY ZCgpIHZhbGlkYXRlIGR1bW15IGVudHJpZXMKPiBhdCBjb21waWxlIHRpbWUgdG8gY2F0Y2ggdGhl IHdyb25nIHVzYWdlIGFuZCBwcm9oaWJpdCBjYWxscyB0bwo+IHBYZF9wYWdlKCkgaW4gcGd0YWJs ZS1ub3BYZC5oLgo+IAo+IFRoaXMgc2VyaWVzIGRvZXMgbm90IGNoYW5nZSB0aGUgYmVoYXZpb3Vy IG9mIGV4aXN0aW5nIGNvZGUgdGhhdCBkaXJlY3RseQo+IG1hbmlwdWxhdGVzIGZvbGRlZCBwYWdl LXRhYmxlIGxldmVscyB1c2luZyBzZXRfcGdkKCksIHBnZF9wYWdlX3ZhZGRyKCksIGFuZAo+IHJl bGF0ZWQgaGVscGVycy4gVGhvc2UgaGVscGVycyBjb250aW51ZSB0byBiZWhhdmUgYXMgYmVmb3Jl Lgo+IAo+IFRoZSBuZXcgcmVzdHJpY3Rpb25zIG9ubHkgYXBwbHkgdG8gY29kZSB0aGF0IGFkb3B0 cyB0aGUgcFhkcF9nZXQoKS1iYXNlZAo+IGFjY2VzcyBtb2RlbCBmb3IgY29tcGlsZS10aW1lIGZv bGRlZCBwYWdlIHRhYmxlcy4KPiAKPiBBcyB0aGUgcFhkcF9nZXQoKSBjYW4gcmV0dXJuICpkdW1t eSogZW50cnksIHNvbWUgb2YgY29kZSB1c2luZwo+IHRoZSBzdGFjayB2YWx1ZSB3aGVyZSBzYXZl cyB0aGUgcFhkcF9nZXQoKSBjb3VsZCBiZSBhIHByb2JsZW1hdGljOgo+IAo+ICAgMS4gUGFzc2lu ZyBhZGRyZXNzIG9mIHN0YWNrIHZhbHVlIHdoZXJlIHNhdmVzIHRoZSBwWGRwX2dldCgpIHJlc3Vs dAo+ICAgICAgdG8gcFhkX29mZnNldCgpIGZvciBleGFtcGxlOgo+IAo+ICAgICAgICBwdWRfdCAq cHVkcCwgcHVkOwo+ICAgICAgICBwbWRfdCAqcG1kcDsKPiAKPiAgICAgICAgcHVkID0gcHVkcF9n ZXQocHVkcCwgYWRkcmVzcyk7Cj4gICAgICAgIHBtZHAgPSBwbWRfb2Zmc2V0KCZwdWQsIHB1ZCwg YWRkcmVzcyk7Cj4gCj4gICAgICAoZS5nLiBob3N0X3Bmbl9tYXBwaW5nX2xldmVsKCkgaW4gbG9v bmdhcmNoKS4KPiAKPiAgIDIuIFVzaW5nIHRoZSBwWGRwX2dldCgpIHJlc3VsdCB0byB1c2UgYXMg YXJndW1lbnQgb2YgcFhkX3ZhbCgpIGFuZAo+ICAgICAgdG8gY2hlY2sgcHJvdCB3aXRob3V0IGNo ZWNraW5nIHBndGFibGUgaXMgZm9sZGVkLgo+ICAgICAgZm9yIGV4YW1wbGUsIHg4NidzIGVmZmVj dGl2ZV9wcm90KCkuCj4gCj4gICAzLiBVc2luZyBzZXRfcFhkKCkgd2l0aCBwWGRwX2dldCgpIHdp bGwgc2V0IHByb2JsZW1hdGljIGR1bW15IGVudHJ5Cj4gICAgICBpbiBmb2xkZWQgcGFnZSB0YWJs ZSBsaWtlOgo+IAo+ICAgICAgICBzZXRfcFhkKHB4ZHAsIHBYZHBfZ2V0KHB4ZHBfaykpOwo+IAo+ ICAgNC4gVXNpbmcgcGdkX3BhZ2VfdmFkZHIoKSB0byBnZXQgdGhlIGZpcnN0LWxldmVsIHBndGFi bGUuCj4gICAgICBwYXNzaW5nIGR1bW15IHB4ZHBfZ2V0KCkgZm9yIHBnZF9wYWdlX3ZhZGRyKCkg d2lsbCByZXR1cm4gd3JvbmcKPiAgICAgIGFkZHJlc3MuIFRoZXJlZm9yZSwgbWFrZSBwZ2RfcGFn ZV92YWRkcigpIGFuZCBwWGRfcGd0YWJsZSgpIHRvCj4gICAgICB0cmlnZ2VyIHRoZSBlcnJvciBm b3IgaW1wcm9wZXIgdXNhZ2Ugd2l0aCBmb2xkZWQgZHVtbXkgZW50cnkgaW4gdGhlCj4gICAgICBn ZW5lcmljIGNvbXBpbGUtdGltZSBmb2xkZWQgcGd0YWJsZS4KPiAKPiBUaGFua3NmdWxseSwgYWJv dmUgY2FzZXMgYXJlIHJhcmUgc2luY2UgKDEpIG1vc3Qgb2YgdXNhZ2UgdXNpbmcKPiBwWGRfb2Zm c2V0KCkgd2l0aCByZXN1bHQgb2YgdXBwZXIgcFhkX29mZnNldCgpLCAoMikgaXQncyBleHRyZWFt ZWx5Cj4gcmFyZSB0byB1c2UgcFhkX3ZhbCgpIGZvciBub24tbGVhZiBlbnRyeSBpbiB0aGUga2Vy bmVsLAo+ICgzKSBpcyB0byBoYW5kbGUgdGhlIHZtYWxsb2NfZmF1bHQgb3Igc2V0IHRoZSBmaXJz dCBsZXZlbCBvZiBwYWdlIHRhYmxlCj4gYW5kICg0KSB0byBzZXR1cCBlYXJseSBwYWdlIHRhYmxl IGFuZCBldGMuCj4gCj4gVGhlcmVmb3JlLCBwcm9wZXJseSBoYW5kbGUgdGhpcyB1bmNvbW1vbiBh bmQgcHJvYmxlbWF0aWMgcGF0dGVybiwgYW5kCj4gZG9jdW1lbnQgdGhlIGN1cnJlbnQgZGVzaWdu IG9mIGNvbXBpbGUtdGltZSBmb2xkZWQgcGFnZSB0YWJsZXMuCj4gCj4gVGhpcyBwYXRjaCBpcyBi YXNlZCBvbiBtbS11bnN0YWJsZS4KPiAKPiBGdXR1cmUgd29yawo+ID09PT09PT09PT09Cj4gIC0g cHJpbnRfYmFkX3BhZ2VfbWFwKCkgYW5kIHNob3dfcHRlKCkgc3RpbGwgcHJpbnRzIGR1bW15IHZh bHVlcwo+ICAgIGluc3RlYWQgb2YgcHJpbnRpbmcgdGhlIHNhbWUgY29udGVudCBmb3IgYWxsIGdl bmVyaWMgY29tcGlsZS10aW1lCj4gICAgZm9sZGVkIHBhZ2UgdGFibGVzLiBXZSBtaWdodCB3YW50 IHRvIHNraXAgcHJpbnRpbmcgZHVtbXkgdmFsdWVzIGxhdGVyLgo+IAo+ICAtIFdlIGN1cnJlbnRs eSBjYXRjaCBhYnVzZSBvZiBkdW1teSB2YWx1ZXMgb24gdGhlIHN0YWNrIGF0IGNvbXBpbGUtdGlt ZSBieQo+ICAgIHJlbHlpbmcgb24gY29uc3RhbnQgcHJvcGFnYXRpb24gYnkgdGhlIGNvbXBpbGVy LiBVc2FtYSdzIHdvcmsgWzNdIG9uIHVzaW5nCj4gICAgZGlzdGluY3QgdHlwZXMgZm9yIHN3IHZz LiBodyBQVEVzIGNvdWxkIGhlbHAgaGVyZSBhcyB3ZWxsLiIKPiAKPiAgLSBDbGVhbiB1cCB2bWFs bG9jIGZhdWx0IGhhbmRsaW5nIGJ5IHN5bmNocm9uaXppbmcgdGhlIHZtYWxsb2MgZW50cnkgb24K PiAgICAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gVGhpcyBjb2RlIGlzIGFsbW9zdCBpZGVudGljYWwg YWNyb3NzIGFyY2hpdGVjdHVyZXMuCj4gCj4gIC0gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQg ZGVzaWduIG9mIGNvbXBpbGUtdGltZSBmb2xkZWQgcGFnZSB0YWJsZXMgYXBwZWFycwo+ICAgIHRv IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBidXQgY29uZnVzaW5nLiBGb3IgZXhhbXBsZSwKPiAg ICB3aGVuIENPTkZJR19QR1RBQkxFX0xFVkVMUyBpcyAyLCBwNGQsIHB1ZCwgYW5kIHBtZCBhcmUg ZXhwZWN0ZWQgdG8KPiAgICBiZSBmb2xkZWQgaW50byBwZ2QuIEhvd2V2ZXIsIHRoZSBhcmNoaXRl Y3R1cmUgY29kZSB1c2VzIHNldF9wbWQoKQo+ICAgIHRvIHVwZGF0ZSB0aGUgdG9wLWxldmVsIHBh Z2UtdGFibGUgZW50cnksIGV2ZW4gdGhvdWdoIGl0IGluY2x1ZGVzIHBndGFibGUtbm9wbWQuaC4K PiAKPiAgICBJbiB0aGUgZnV0dXJlLCBpdCB3b3VsZCBiZSBnb29kIHRvIGVsaW1pbmF0ZSB0aGlz IHNvdXJjZSBvZiBjb25mdXNpb24sCj4gICAgcG9zc2libHkgYnkgdHJlYXRpbmcgYWxsIGZvbGRl ZCB1cHBlciBsZXZlbHMgY29uc2lzdGVudGx5IGFzIGR1bW15IHdyYXBwZXJzCj4gICAgYXJvdW5k IHRoZSBoaWdoZXN0IHJlYWwgcGFnZS10YWJsZSBsZXZlbDoKPiAKPiAgICAgICAgICBOT1BHRAo+ ICAgIC0tPiArLS0tLS0tKyAgICAgICAgICAgUDRECj4gICAgICAgIHwgcHRyMCB8LS0tLS0tLT4g Ky0tLS0tLSsgICAgICAgICAgIFBVRAo+ICAgICAgICArLS0tLS0tKyAgICAgICAgIHwgcHRyMCB8 LS0tLS0tLT4gKy0tLS0tKwo+ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHRyMSB8LSAgICAg ICAgfCBwdHIgfCAtLS0tLS0tPiAuLi4KPiAgICAgICAgICAgICAgICAgICAgICAgICB8IHB0cjIg fCBcICAgICAgIHwgcHRyIHwKPiAgICAgICAgICAgICAgICAgICAgICAgICB8IHB0cjMgfCAgXCAg ICAgICAgLi4uCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gICAgICBcCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgUFVECj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tPiArLS0tLS0rCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHB0ciB8IC0tLS0tLS0+IC4uLgo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwdHIgfAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KPiAKPiBQYXRjaCBIaXN0 b3J5Cj4gPT09PT09PT09PT09PQo+IGZyb20gdjIgdG8gdjM6Cj4gICAtIHJlcGFzcmUgY29tbWl0 IG1lc3NhZ2UKPiAgIC0gbW92ZSBwdGR1bXBfcGd0YWJsZV9maXJzdF9sZXZlbCgpIGludG8gcGdh bGxvYy5oCj4gICAtIHNraXAgdGhlIGh1Z2UgcHVkIG9wZXJhdGlvbiB3aGVuIENPTkZJR19YODZf RElSRUNUX0dCUEFHRVMgaXMgZGlzYWJsZWQKPiAgIC0gZG9jdWVtdG5zIGNvbXBpbGUtdGltZSBm b2xkZWQgcGFnZSB0YWJsZQo+ICAgLSBkcm9wIHRoZSBhcHBsaWVkIHBhdGNoLgo+ICAgLSBodHRw czovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNjA3MjItZHVtbXlfcHR4cDMtdjItMC1kOWU0YmFk MzFlMGFAYXJtLmNvbS8KPiAKPiBmcm9tIHYxIHRvIHYyOgo+ICAgLSBSZXN0b3JlIHNsaWVudCBm YWxsYmFjayB0byBuZXh0IHBYZCBpbiBzZXRfcFhkKCkgYW5kIHBYZF9wZ3RhYmxlKCkKPiAgICAg YW5kIGFkZCBjaGVjayB3aGV0aGVyIHRoZXkncmUgY2FsbGVkIHdpdGggZHVtbXkgZW50cnkuCj4g ICAtIEFkZCBzb21lIGNvbW1lbnQgZm9yIHJldHVybmluZyBmaXJzdCBlbnRyeSBvZiBwZ2QgaW4g YXJtIHdpdGgKPiAgICAgMiBwZ3RhYmxlLWxldmVsCj4gICAtIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDI2MDcxMzEzNTYxNC4xNjE4MTgzLTEteWVvcmV1bS55dW5AYXJtLmNvbS8KPiAK PiBMaW5rOiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzAwMTlkNjc1LWNlM2QtNGE1 Yy04OWVkLWYxMjZjNDUxNDVjOUBrZXJuZWwub3JnLwo+IExpbms6IFsyXSBodHRwczovL2xvcmUu a2VybmVsLm9yZy9hbGwvMjAyNTExMTMwMTQ2NTYuMjYwNTQ0Ny0xLXNhbXVlbC5ob2xsYW5kQHNp Zml2ZS5jb20vCj4gTGluazogWzNdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvNzQxODJlNTAt YjU0Zi00ZDJkLWEyN2YtM2E1OWE1MzhkNmJjQGFybS5jb20KPiAtLS0KPiBEYXZpZCBIaWxkZW5i cmFuZCAoQXJtKSAoMTMpOgo+ICAgICAgIEFSTTogbW06IG1ha2Ugbm9tbXUgcGdkX3QgYSBzY2Fs YXIKPiAgICAgICBBUk06IG1tOiBtYWtlIDItbGV2ZWwgcGdkX3QgYSBzY2FsYXIKPiAgICAgICBB Uk06IG1tOiByZW1vdmUgY3VzdG9tIHBnZHBfZ2V0KCkKPiAgICAgICBMb29uZ0FyY2g6IG1tOiBk ZWZpbmUgcHVkX2xlYWYoKSBvbmx5IHdoZW4gUFVEIGV4aXN0cwo+ICAgICAgIE1JUFM6IG1tOiBk ZWZpbmUgcHVkX2xlYWYoKSBvbmx5IHdoZW4gUFVEIGV4aXN0cwo+ICAgICAgIG1tL3BndGFibGU6 IGRlZmluZSAocGdkfHA0ZHxwdWQpX2xlYWYoKSBmb3IgZm9sZGVkIHBhZ2UgdGFibGVzCj4gICAg ICAgbW0vcGd0YWJsZTogZGVmaW5lIChwZ2R8cDRkfHB1ZClfb2Zmc2V0X2xvY2tsZXNzKCkgZm9y IGZvbGRlZCBwYWdlIHRhYmxlcwo+ICAgICAgIG9wZW5yaXNjL3BndGFibGU6IGRyb3AgX19wbWRf b2Zmc2V0KCkKPiAgICAgICBtbS9wZ3RhYmxlOiBvcHRpbWl6ZSBwbWRwX2dldCgpIGFuZCBmcmll bmRzIGZvciBmb2xkZWQgcGFnZXRhYmxlIGxldmVscwo+ICAgICAgIG1tL3BndGFibGU6IGNhdGNo IGFidXNlIG9mIGZvbGRlZCBkdW1teSBwZ2RfdC9wNGRfdC9wdWRfdAo+ICAgICAgIG1tL3BndGFi bGU6IGRpc2FsbG93IGNhbGxpbmcgKHBnZHxwNGR8cHVkKV9wYWdlLCBwZ2RfcGFnZV92YWRkcigp IGFuZCAocDRkfHB1ZClfcGd0YWJsZSB3aXRoIGR1bW15Cj4gICAgICAgbW0vcGd0YWJsZTogZGlz YWxsb3cgY2FsbGluZyBmb2xkZWQgc2V0X3BnZC9zZXRfcDRkL3NldF9wdWQgd2l0aCBkdW1teQo+ ICAgICAgIERvY3VtZW50YXRpb246IG1tOiBjbGFyaWZ5IGJlaGF2aW91ciBvZiBjb21waWxlLXRp bWUgZm9sZGVkIHBhZ2UgdGFibGVzCj4gCj4gWWVvcmV1bSBZdW4gKDgpOgo+ICAgICAgIG1tOiB2 bXNjYW46IHJlbW92ZSBzdGFjayBjb3B5IGFkZHJlc3Mgb2YgcHVkL3BtZCBwYXNzIGluIHdhbGtf cHVkL3BtZF9yYW5nZSgpCj4gICAgICAgbG9vbmdhcmNoOiBrdm06IHJlbW92ZSBzdGFjayBjb3B5 IGFkZHJlc3Mgb2YgcFhkIGluIHBYZF9vZmZzZXQoKQo+ICAgICAgIHJpc2N2OiBrdm06IHJlbW92 ZSBzdGFjayBjb3B5IGFkZHJlc3Mgb2YgcFhkIGluIHBYZF9vZmZzZXQoKQo+ICAgICAgIHJpc2N2 OiBtbTogdXNlIHByb3BlciBzZXRfcFhkKCkgZm9yIGdlbmVyaWMgY29tcGlsZS10aW1lIGZvbGRl ZCBwYXRhYmxlIGluIHZtYWxsb2NfZmF1bHQoKQo+ICAgICAgIG1tL3BndGFibGU6IHJlZGVmaW5l IFBHVEFCTEVfTEVWRUwgZW51bSB3aXRoIGFzY2VuZCBvcmRlciBmcm9tIFBHRAo+ICAgICAgIHg4 NjogbW06IHVzZSBwZ3RhYmxlX2xldmVsIGVudW0gaW4gZWZmZWN0aXZlX3Byb3RfcFhkKCkKPiAg ICAgICB4ODY6IG1tOiBjYXJ2ZSBvdXQgdGhlIGdlbmVyaWMgY29tcGlsZS10aW1lIGZvbGRlZCBw Z3RhYmxlIGNhc2UgaW4gZWZmZWN0aXZlX3Byb3QoKQo+ICAgICAgIHg4NjogbW06IHNraXAgY29s bGFwc2VfcHVkX3BhZ2UoKSB3aGVuIENPTkZJR19YODZfRElSRUNUX0dCUEFHRVMgZGlzYWJsZWQK PiAKPiAgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX3RhYmxlcy5yc3QgICAgICAgICAgICB8IDg0ICsr KysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIGFyY2gvYXJtL2luY2x1ZGUvYXNtL3BhZ2Ut bm9tbXUuaCAgICAgICAgICAgfCAgNCArLQo+ICBhcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxl LTJsZXZlbC10eXBlcy5oIHwgMjAgKysrKystLQo+ICBhcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3Rh YmxlLmggICAgICAgICAgICAgIHwgIDIgLQo+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFi bGUuaCAgICAgICAgICAgIHwgMjMgLS0tLS0tLS0KPiAgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9h c20vcGd0YWJsZS5oICAgICAgICB8ICAyICsKPiAgYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jICAg ICAgICAgICAgICAgICAgICB8IDIwICsrKystLS0KPiAgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Bn dGFibGUuaCAgICAgICAgICAgICB8ICAyICsKPiAgYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9w Z3RhYmxlLmggICAgICAgICB8ICAzIC0tCj4gIGFyY2gvcmlzY3Yva3ZtL21tdS5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAyMCArKysrLS0tCj4gIGFyY2gvcmlzY3YvbW0vZmF1bHQuYyAgICAg ICAgICAgICAgICAgICAgICAgfCA1MiArKysrKysrKysrKy0tLS0tLS0KPiAgYXJjaC94ODYvbW0v ZHVtcF9wYWdldGFibGVzLmMgICAgICAgICAgICAgICB8IDE4ICsrKystLS0KPiAgYXJjaC94ODYv bW0vcGF0L3NldF9tZW1vcnkuYyAgICAgICAgICAgICAgICB8ICAyICstCj4gIGluY2x1ZGUvYXNt LWdlbmVyaWMvcGd0YWJsZS1ub3A0ZC5oICAgICAgICAgfCA1NCArKysrKysrKysrKysrKystLS0t Cj4gIGluY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS1ub3BtZC5oICAgICAgICAgfCA1NCArKysr KysrKysrKysrKystLS0tCj4gIGluY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS1ub3B1ZC5oICAg ICAgICAgfCA1NiArKysrKysrKysrKysrKystLS0tCj4gIGluY2x1ZGUvbGludXgvcGd0YWJsZS5o ICAgICAgICAgICAgICAgICAgICAgfCA2OSArKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgbW0v dm1zY2FuLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCj4gIDE4IGZp bGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCj4gLS0tCj4g YmFzZS1jb21taXQ6IGUzYjUyMzlhZmUxYjhmMDE5NGRiNzQzNmIxN2MzM2U5NGMxOTg4YzQKPiBj aGFuZ2UtaWQ6IDIwMjYwNzIyLWR1bW15X3B0eHAzLTM3NDFkNzhjYzcwZgo+IAo+IEJlc3QgcmVn YXJkcywKPiAtLSAKPiBTaW5jZXJlbHksCj4gWWVvcmV1bSBZdW4KPiAKCi0tIApTaW5jZXJlbHks Clllb3JldW0gWXVuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJp c2N2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81BCBC88E5C for ; Wed, 16 Sep 2026 08:25:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vP5DFMKDuot0FSXhlxXpBGF6Il+QUdjr9pEhBss0W4s=; b=O/zZFRvbIuOf6S 04N5Z8dR7xyVX8T0jYQkTSc25ujCPW5vt0LLxosGjD8QUaksvk8sVhDamcMR0Y7FqNlqsbtCbWP1/ Oo7gzHvR6yd8az1JugFqU87KxXKoSk5gwlcs/zBa6FPIU/19szS4E9pBeqiplRtMKFAYWHsPh3YYd UDPWV1XEgLQ6VvcRyIDmNbrRAVf8lCs7e2xVOBdgWji/w/Kj7IIAKKqb0ArEIHywOQtN9E/kE0mLB nzuQmswYgExQVd2Q5JerdMczQ8Hnma2DrYjqNjBIcidc+oIArlNzhrd7patUVBk6qdpStSt3iBikV 0X/eqlFOooAr3zsK1ccA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6kx6-00000008i8z-0PZd; Wed, 16 Sep 2026 08:25:12 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6kx2-00000008i8B-1pYJ; Wed, 16 Sep 2026 08:25:11 +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 E6BC7176A; Wed, 16 Sep 2026 01:25:02 -0700 (PDT) Received: from e129823.arm.com (e129823.arm.com [10.2.213.3]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1CB9F3F882; Wed, 16 Sep 2026 01:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1789547106; bh=/8itoCy2uuAdT2BRbZBqwKTAhTZbp5WyzRD+XEeprJk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=JybzSzpKsBXyl5ejDpbE5Lnvl5rgBgnIjwZqLVkpg80e2fZA0FHiqFmVFqCsHggez D/2HtVhTxYvpa7MlJ137x509omi1Bd/DX1rZ/NzmDZOfKOhGAxp3hQgdQFFWlUD47k F4i8xjR5OAGGBPPH7W2sg/6d2c3BHgDuGy75hXg4= Date: Wed, 16 Sep 2026 09:24:56 +0100 From: Yeoreum Yun To: Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , Catalin Marinas , Will Deacon , Arnd Bergmann , Andrew Morton , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Johannes Weiner , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Tianrui Zhao , Bibo Mao , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jonas Bonn , Stefan Kristiansson , Stafford Horne Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-openrisc@vger.kernel.org, Muhammad Usama Anjum , Yeoreum Yun Subject: Re: [PATCH RFC v3 00/21] mm: change behavior of pXdp_get()/pXd_page() in compile-time folded pgtable Message-ID: References: <20260902-dummy_ptxp3-v3-0-5d8f5b17c25c@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20260902-dummy_ptxp3-v3-0-5d8f5b17c25c@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260916_012509_507653_3C315F21 X-CRM114-Status: GOOD ( 42.61 ) X-BeenThere: kvm-riscv@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: "kvm-riscv" Errors-To: kvm-riscv-bounces+kvm-riscv=archiver.kernel.org@lists.infradead.org SGkgYWxsLAoKQXJlIHRoZXJlIGFueSBmdXJ0aGVyIGNvbW1lbnRzIG9uIHRoaXMgc2VyaWVzPwpJ ZiBub3QsIEnigJlsbCBwb3N0IHRoZSBzZXJpZXMgd2l0aG91dCB0aGUgUkZDIHRhZyBzb21ldGlt ZSBuZXh0IHdlZWsgOikKClRoYW5rcyEKCj4gVXNpbmcgcHRlcF9nZXQoKSBhbmQgaXRzIGNvdW50 ZXJwYXJ0cyBpbiBjb21tb24gY29kZSBpcyBzdWJvcHRpbWFsIG9uCj4ga2VybmVsIGNvbmZpZ3Vy YXRpb25zIHdpdGggZ2VuZXJpYyBjb21waWxlLXRpbWUgZm9sZGVkIHBhZ2UgdGFibGVzLgo+IEJ5 IGRlZmF1bHQsIHB0ZXBfZ2V0KCkgYW5kIGl0cyBmcmllbmRzIGV4cGFuZHMgdG8gUkVBRF9PTkNF KCksCj4gZm9yY2luZyB0aGUgY29tcGlsZXIgdG8gZW1pdCBhIGxvYWQgZXZlbiB3aGVuIHRoZSB2 YWx1ZSBpcyBub3QgdXNlZCBhZnRlcndhcmRzLgo+IAo+IFRoaXMgaXNzdWUgd2FzIHJlY2VudGx5 IHJlcG9ydGVkIGJ5IENocmlzdG9waGUgTGVyb3kgWzFdIGZvciBwcGMzMgo+IHByZXZlbnRpbmcg ZnV0aGVyIGNvZGUgY29udmVyc2lvbiB0byBwdGVwX2dldCgpL3BtZHBfZ2V0KCkvLi4uIGhlbHBl cgo+IGFuZCB0aGUgc2FtZSBiZWhhdmlvciBjYW4gYWxzbyBiZSBvYnNlcnZlZCBvbiBhcm02NCB3 aGVuIGJ1aWx0IHdpdGgKPiAyLSBvciAzLWxldmVsIHBhZ2UgdGFibGVzCj4gCj4gZS5nKSBwZXJm X2dldF9wYWdlX3NpemUoKSBpbiBhcm02NCB3aXRoIENPTkZJR19QR1RBQkxFX0xFVkVMPTM6Cj4g Cj4gMDAwMDAwMDAwMDAwNTJhMCA8cGVyZl9nZXRfcGFnZV9zaXplPjoKPiAgICAgLi4uCj4gICAg IDUyZGM6IGQ1M2I0MjM0ICAgICAJbXJzCXgyMCwgREFJRgo+ICAgICA1MmUwOiBkNTAzNDNkZiAg ICAgCW1zcglEQUlGU2V0LCAjMHgzCj4gICAgIC4uLgo+ICAgICA1MmZjOiBkMzVlOWE2OSAgICAg CXViZngJeDksIHgxOSwgIzMwLCAjOSAgICAgICAgLyogcHVkX29mZnNldF9sb2NrbGVzcygpICov Cj4gICAgIDUzMDA6IGY5NDAzNTA4ICAgICAJbGRyCXg4LCBbeDgsICMweDY4XQo+ICAgICA1MzA0 OiBmODY5NzkwYSAgICAgCWxkcgl4MTAsIFt4OCwgeDksIGxzbCAjM10gICAvKiBwdWRwX2dldCgp ICovCj4gICAgIDUzMDg6IGY5MDAwN2VhICAgICAJc3RyCXgxMCwgW3NwLCAjMHg4XQo+ICAgICA1 MzBjOiBmODY5NzkwOCAgICAgCWxkcgl4OCwgW3g4LCB4OSwgbHNsICMzXSAgICAvKiBwdWRwX2dl dCgpICovCj4gICAgIC4uLgo+ICAgICA1MzYwOiA5MDAwMDAwOSAgICAgCWFkcnAJeDksIDB4NTAw MCA8cGVyZl9wcmVwYXJlX3NhbXBsZSsweDU0OD4KPiAgICAgNTM2NDogOTI3NDY5MDggICAgIAlh bmQJeDgsIHg4LCAjMHg3ZmZmZmZmMDAwCj4gICAgIDUzNjg6IGQzNTU3Njc1ICAgICAJdWJmeAl4 MjEsIHgxOSwgIzIxLCAjOSAgICAgICAvKiBwbWRfb2Zmc2V0X2xvY2tsZXNzKCkgKi8KPiAgICAg Li4uCj4gICAgIDUzOTQ6IGY4NzU3YWM4ICAgICAJbGRyCXg4LCBbeDIyLCB4MjEsIGxzbCAjM10g IC8qIHBtZHBfZ2V0KCkgKi8KPiAKPiBUaG91Z2ggUEdUQUJMRV9MRVZFTD0zLCBzaW5jZSB0aGUg cHVkcF9nZXQoKSBzdGlsbCByZW1haW4gd2l0aAo+IFJFQURfT05DRSgpLCB0aGVyZSdzIHJlZHVu ZGFudCBsb2FkIGZvciB0aGUgcHVkIHdoaWNoIGlzIGZvbGRlZC4KPiAKPiBUbyBwcmV2ZW50IGdl bmVyYXRpbmcgc3Vib3B0aW1hbCBjb2RlLCBtYWtlIHBYZHBfZ2V0KCkgcmV0dXJuIGEgZHVtbXkK PiBlbnRyeSBmb3IgY29tcGlsZS10aW1lIGZvbGRlZCBwYWdlIHRhYmxlcywgbWFrZSB0aGUgaGVs cGVycyBzdWNoIGFzCj4gcFhkX29mZnNldCgpL3BYZF9vZmZzZXRfbG9ja2xlc3MoKSwgc2V0X3BY ZCgpIHZhbGlkYXRlIGR1bW15IGVudHJpZXMKPiBhdCBjb21waWxlIHRpbWUgdG8gY2F0Y2ggdGhl IHdyb25nIHVzYWdlIGFuZCBwcm9oaWJpdCBjYWxscyB0bwo+IHBYZF9wYWdlKCkgaW4gcGd0YWJs ZS1ub3BYZC5oLgo+IAo+IFRoaXMgc2VyaWVzIGRvZXMgbm90IGNoYW5nZSB0aGUgYmVoYXZpb3Vy IG9mIGV4aXN0aW5nIGNvZGUgdGhhdCBkaXJlY3RseQo+IG1hbmlwdWxhdGVzIGZvbGRlZCBwYWdl LXRhYmxlIGxldmVscyB1c2luZyBzZXRfcGdkKCksIHBnZF9wYWdlX3ZhZGRyKCksIGFuZAo+IHJl bGF0ZWQgaGVscGVycy4gVGhvc2UgaGVscGVycyBjb250aW51ZSB0byBiZWhhdmUgYXMgYmVmb3Jl Lgo+IAo+IFRoZSBuZXcgcmVzdHJpY3Rpb25zIG9ubHkgYXBwbHkgdG8gY29kZSB0aGF0IGFkb3B0 cyB0aGUgcFhkcF9nZXQoKS1iYXNlZAo+IGFjY2VzcyBtb2RlbCBmb3IgY29tcGlsZS10aW1lIGZv bGRlZCBwYWdlIHRhYmxlcy4KPiAKPiBBcyB0aGUgcFhkcF9nZXQoKSBjYW4gcmV0dXJuICpkdW1t eSogZW50cnksIHNvbWUgb2YgY29kZSB1c2luZwo+IHRoZSBzdGFjayB2YWx1ZSB3aGVyZSBzYXZl cyB0aGUgcFhkcF9nZXQoKSBjb3VsZCBiZSBhIHByb2JsZW1hdGljOgo+IAo+ICAgMS4gUGFzc2lu ZyBhZGRyZXNzIG9mIHN0YWNrIHZhbHVlIHdoZXJlIHNhdmVzIHRoZSBwWGRwX2dldCgpIHJlc3Vs dAo+ICAgICAgdG8gcFhkX29mZnNldCgpIGZvciBleGFtcGxlOgo+IAo+ICAgICAgICBwdWRfdCAq cHVkcCwgcHVkOwo+ICAgICAgICBwbWRfdCAqcG1kcDsKPiAKPiAgICAgICAgcHVkID0gcHVkcF9n ZXQocHVkcCwgYWRkcmVzcyk7Cj4gICAgICAgIHBtZHAgPSBwbWRfb2Zmc2V0KCZwdWQsIHB1ZCwg YWRkcmVzcyk7Cj4gCj4gICAgICAoZS5nLiBob3N0X3Bmbl9tYXBwaW5nX2xldmVsKCkgaW4gbG9v bmdhcmNoKS4KPiAKPiAgIDIuIFVzaW5nIHRoZSBwWGRwX2dldCgpIHJlc3VsdCB0byB1c2UgYXMg YXJndW1lbnQgb2YgcFhkX3ZhbCgpIGFuZAo+ICAgICAgdG8gY2hlY2sgcHJvdCB3aXRob3V0IGNo ZWNraW5nIHBndGFibGUgaXMgZm9sZGVkLgo+ICAgICAgZm9yIGV4YW1wbGUsIHg4NidzIGVmZmVj dGl2ZV9wcm90KCkuCj4gCj4gICAzLiBVc2luZyBzZXRfcFhkKCkgd2l0aCBwWGRwX2dldCgpIHdp bGwgc2V0IHByb2JsZW1hdGljIGR1bW15IGVudHJ5Cj4gICAgICBpbiBmb2xkZWQgcGFnZSB0YWJs ZSBsaWtlOgo+IAo+ICAgICAgICBzZXRfcFhkKHB4ZHAsIHBYZHBfZ2V0KHB4ZHBfaykpOwo+IAo+ ICAgNC4gVXNpbmcgcGdkX3BhZ2VfdmFkZHIoKSB0byBnZXQgdGhlIGZpcnN0LWxldmVsIHBndGFi bGUuCj4gICAgICBwYXNzaW5nIGR1bW15IHB4ZHBfZ2V0KCkgZm9yIHBnZF9wYWdlX3ZhZGRyKCkg d2lsbCByZXR1cm4gd3JvbmcKPiAgICAgIGFkZHJlc3MuIFRoZXJlZm9yZSwgbWFrZSBwZ2RfcGFn ZV92YWRkcigpIGFuZCBwWGRfcGd0YWJsZSgpIHRvCj4gICAgICB0cmlnZ2VyIHRoZSBlcnJvciBm b3IgaW1wcm9wZXIgdXNhZ2Ugd2l0aCBmb2xkZWQgZHVtbXkgZW50cnkgaW4gdGhlCj4gICAgICBn ZW5lcmljIGNvbXBpbGUtdGltZSBmb2xkZWQgcGd0YWJsZS4KPiAKPiBUaGFua3NmdWxseSwgYWJv dmUgY2FzZXMgYXJlIHJhcmUgc2luY2UgKDEpIG1vc3Qgb2YgdXNhZ2UgdXNpbmcKPiBwWGRfb2Zm c2V0KCkgd2l0aCByZXN1bHQgb2YgdXBwZXIgcFhkX29mZnNldCgpLCAoMikgaXQncyBleHRyZWFt ZWx5Cj4gcmFyZSB0byB1c2UgcFhkX3ZhbCgpIGZvciBub24tbGVhZiBlbnRyeSBpbiB0aGUga2Vy bmVsLAo+ICgzKSBpcyB0byBoYW5kbGUgdGhlIHZtYWxsb2NfZmF1bHQgb3Igc2V0IHRoZSBmaXJz dCBsZXZlbCBvZiBwYWdlIHRhYmxlCj4gYW5kICg0KSB0byBzZXR1cCBlYXJseSBwYWdlIHRhYmxl IGFuZCBldGMuCj4gCj4gVGhlcmVmb3JlLCBwcm9wZXJseSBoYW5kbGUgdGhpcyB1bmNvbW1vbiBh bmQgcHJvYmxlbWF0aWMgcGF0dGVybiwgYW5kCj4gZG9jdW1lbnQgdGhlIGN1cnJlbnQgZGVzaWdu IG9mIGNvbXBpbGUtdGltZSBmb2xkZWQgcGFnZSB0YWJsZXMuCj4gCj4gVGhpcyBwYXRjaCBpcyBi YXNlZCBvbiBtbS11bnN0YWJsZS4KPiAKPiBGdXR1cmUgd29yawo+ID09PT09PT09PT09Cj4gIC0g cHJpbnRfYmFkX3BhZ2VfbWFwKCkgYW5kIHNob3dfcHRlKCkgc3RpbGwgcHJpbnRzIGR1bW15IHZh bHVlcwo+ICAgIGluc3RlYWQgb2YgcHJpbnRpbmcgdGhlIHNhbWUgY29udGVudCBmb3IgYWxsIGdl bmVyaWMgY29tcGlsZS10aW1lCj4gICAgZm9sZGVkIHBhZ2UgdGFibGVzLiBXZSBtaWdodCB3YW50 IHRvIHNraXAgcHJpbnRpbmcgZHVtbXkgdmFsdWVzIGxhdGVyLgo+IAo+ICAtIFdlIGN1cnJlbnRs eSBjYXRjaCBhYnVzZSBvZiBkdW1teSB2YWx1ZXMgb24gdGhlIHN0YWNrIGF0IGNvbXBpbGUtdGlt ZSBieQo+ICAgIHJlbHlpbmcgb24gY29uc3RhbnQgcHJvcGFnYXRpb24gYnkgdGhlIGNvbXBpbGVy LiBVc2FtYSdzIHdvcmsgWzNdIG9uIHVzaW5nCj4gICAgZGlzdGluY3QgdHlwZXMgZm9yIHN3IHZz LiBodyBQVEVzIGNvdWxkIGhlbHAgaGVyZSBhcyB3ZWxsLiIKPiAKPiAgLSBDbGVhbiB1cCB2bWFs bG9jIGZhdWx0IGhhbmRsaW5nIGJ5IHN5bmNocm9uaXppbmcgdGhlIHZtYWxsb2MgZW50cnkgb24K PiAgICAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gVGhpcyBjb2RlIGlzIGFsbW9zdCBpZGVudGljYWwg YWNyb3NzIGFyY2hpdGVjdHVyZXMuCj4gCj4gIC0gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQg ZGVzaWduIG9mIGNvbXBpbGUtdGltZSBmb2xkZWQgcGFnZSB0YWJsZXMgYXBwZWFycwo+ICAgIHRv IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBidXQgY29uZnVzaW5nLiBGb3IgZXhhbXBsZSwKPiAg ICB3aGVuIENPTkZJR19QR1RBQkxFX0xFVkVMUyBpcyAyLCBwNGQsIHB1ZCwgYW5kIHBtZCBhcmUg ZXhwZWN0ZWQgdG8KPiAgICBiZSBmb2xkZWQgaW50byBwZ2QuIEhvd2V2ZXIsIHRoZSBhcmNoaXRl Y3R1cmUgY29kZSB1c2VzIHNldF9wbWQoKQo+ICAgIHRvIHVwZGF0ZSB0aGUgdG9wLWxldmVsIHBh Z2UtdGFibGUgZW50cnksIGV2ZW4gdGhvdWdoIGl0IGluY2x1ZGVzIHBndGFibGUtbm9wbWQuaC4K PiAKPiAgICBJbiB0aGUgZnV0dXJlLCBpdCB3b3VsZCBiZSBnb29kIHRvIGVsaW1pbmF0ZSB0aGlz IHNvdXJjZSBvZiBjb25mdXNpb24sCj4gICAgcG9zc2libHkgYnkgdHJlYXRpbmcgYWxsIGZvbGRl ZCB1cHBlciBsZXZlbHMgY29uc2lzdGVudGx5IGFzIGR1bW15IHdyYXBwZXJzCj4gICAgYXJvdW5k IHRoZSBoaWdoZXN0IHJlYWwgcGFnZS10YWJsZSBsZXZlbDoKPiAKPiAgICAgICAgICBOT1BHRAo+ ICAgIC0tPiArLS0tLS0tKyAgICAgICAgICAgUDRECj4gICAgICAgIHwgcHRyMCB8LS0tLS0tLT4g Ky0tLS0tLSsgICAgICAgICAgIFBVRAo+ICAgICAgICArLS0tLS0tKyAgICAgICAgIHwgcHRyMCB8 LS0tLS0tLT4gKy0tLS0tKwo+ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHRyMSB8LSAgICAg ICAgfCBwdHIgfCAtLS0tLS0tPiAuLi4KPiAgICAgICAgICAgICAgICAgICAgICAgICB8IHB0cjIg fCBcICAgICAgIHwgcHRyIHwKPiAgICAgICAgICAgICAgICAgICAgICAgICB8IHB0cjMgfCAgXCAg ICAgICAgLi4uCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gICAgICBcCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgUFVECj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tPiArLS0tLS0rCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHB0ciB8IC0tLS0tLS0+IC4uLgo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwdHIgfAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KPiAKPiBQYXRjaCBIaXN0 b3J5Cj4gPT09PT09PT09PT09PQo+IGZyb20gdjIgdG8gdjM6Cj4gICAtIHJlcGFzcmUgY29tbWl0 IG1lc3NhZ2UKPiAgIC0gbW92ZSBwdGR1bXBfcGd0YWJsZV9maXJzdF9sZXZlbCgpIGludG8gcGdh bGxvYy5oCj4gICAtIHNraXAgdGhlIGh1Z2UgcHVkIG9wZXJhdGlvbiB3aGVuIENPTkZJR19YODZf RElSRUNUX0dCUEFHRVMgaXMgZGlzYWJsZWQKPiAgIC0gZG9jdWVtdG5zIGNvbXBpbGUtdGltZSBm b2xkZWQgcGFnZSB0YWJsZQo+ICAgLSBkcm9wIHRoZSBhcHBsaWVkIHBhdGNoLgo+ICAgLSBodHRw czovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyNjA3MjItZHVtbXlfcHR4cDMtdjItMC1kOWU0YmFk MzFlMGFAYXJtLmNvbS8KPiAKPiBmcm9tIHYxIHRvIHYyOgo+ICAgLSBSZXN0b3JlIHNsaWVudCBm YWxsYmFjayB0byBuZXh0IHBYZCBpbiBzZXRfcFhkKCkgYW5kIHBYZF9wZ3RhYmxlKCkKPiAgICAg YW5kIGFkZCBjaGVjayB3aGV0aGVyIHRoZXkncmUgY2FsbGVkIHdpdGggZHVtbXkgZW50cnkuCj4g ICAtIEFkZCBzb21lIGNvbW1lbnQgZm9yIHJldHVybmluZyBmaXJzdCBlbnRyeSBvZiBwZ2QgaW4g YXJtIHdpdGgKPiAgICAgMiBwZ3RhYmxlLWxldmVsCj4gICAtIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDI2MDcxMzEzNTYxNC4xNjE4MTgzLTEteWVvcmV1bS55dW5AYXJtLmNvbS8KPiAK PiBMaW5rOiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzAwMTlkNjc1LWNlM2QtNGE1 Yy04OWVkLWYxMjZjNDUxNDVjOUBrZXJuZWwub3JnLwo+IExpbms6IFsyXSBodHRwczovL2xvcmUu a2VybmVsLm9yZy9hbGwvMjAyNTExMTMwMTQ2NTYuMjYwNTQ0Ny0xLXNhbXVlbC5ob2xsYW5kQHNp Zml2ZS5jb20vCj4gTGluazogWzNdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvNzQxODJlNTAt YjU0Zi00ZDJkLWEyN2YtM2E1OWE1MzhkNmJjQGFybS5jb20KPiAtLS0KPiBEYXZpZCBIaWxkZW5i cmFuZCAoQXJtKSAoMTMpOgo+ICAgICAgIEFSTTogbW06IG1ha2Ugbm9tbXUgcGdkX3QgYSBzY2Fs YXIKPiAgICAgICBBUk06IG1tOiBtYWtlIDItbGV2ZWwgcGdkX3QgYSBzY2FsYXIKPiAgICAgICBB Uk06IG1tOiByZW1vdmUgY3VzdG9tIHBnZHBfZ2V0KCkKPiAgICAgICBMb29uZ0FyY2g6IG1tOiBk ZWZpbmUgcHVkX2xlYWYoKSBvbmx5IHdoZW4gUFVEIGV4aXN0cwo+ICAgICAgIE1JUFM6IG1tOiBk ZWZpbmUgcHVkX2xlYWYoKSBvbmx5IHdoZW4gUFVEIGV4aXN0cwo+ICAgICAgIG1tL3BndGFibGU6 IGRlZmluZSAocGdkfHA0ZHxwdWQpX2xlYWYoKSBmb3IgZm9sZGVkIHBhZ2UgdGFibGVzCj4gICAg ICAgbW0vcGd0YWJsZTogZGVmaW5lIChwZ2R8cDRkfHB1ZClfb2Zmc2V0X2xvY2tsZXNzKCkgZm9y IGZvbGRlZCBwYWdlIHRhYmxlcwo+ICAgICAgIG9wZW5yaXNjL3BndGFibGU6IGRyb3AgX19wbWRf b2Zmc2V0KCkKPiAgICAgICBtbS9wZ3RhYmxlOiBvcHRpbWl6ZSBwbWRwX2dldCgpIGFuZCBmcmll bmRzIGZvciBmb2xkZWQgcGFnZXRhYmxlIGxldmVscwo+ICAgICAgIG1tL3BndGFibGU6IGNhdGNo IGFidXNlIG9mIGZvbGRlZCBkdW1teSBwZ2RfdC9wNGRfdC9wdWRfdAo+ICAgICAgIG1tL3BndGFi bGU6IGRpc2FsbG93IGNhbGxpbmcgKHBnZHxwNGR8cHVkKV9wYWdlLCBwZ2RfcGFnZV92YWRkcigp IGFuZCAocDRkfHB1ZClfcGd0YWJsZSB3aXRoIGR1bW15Cj4gICAgICAgbW0vcGd0YWJsZTogZGlz YWxsb3cgY2FsbGluZyBmb2xkZWQgc2V0X3BnZC9zZXRfcDRkL3NldF9wdWQgd2l0aCBkdW1teQo+ ICAgICAgIERvY3VtZW50YXRpb246IG1tOiBjbGFyaWZ5IGJlaGF2aW91ciBvZiBjb21waWxlLXRp bWUgZm9sZGVkIHBhZ2UgdGFibGVzCj4gCj4gWWVvcmV1bSBZdW4gKDgpOgo+ICAgICAgIG1tOiB2 bXNjYW46IHJlbW92ZSBzdGFjayBjb3B5IGFkZHJlc3Mgb2YgcHVkL3BtZCBwYXNzIGluIHdhbGtf cHVkL3BtZF9yYW5nZSgpCj4gICAgICAgbG9vbmdhcmNoOiBrdm06IHJlbW92ZSBzdGFjayBjb3B5 IGFkZHJlc3Mgb2YgcFhkIGluIHBYZF9vZmZzZXQoKQo+ICAgICAgIHJpc2N2OiBrdm06IHJlbW92 ZSBzdGFjayBjb3B5IGFkZHJlc3Mgb2YgcFhkIGluIHBYZF9vZmZzZXQoKQo+ICAgICAgIHJpc2N2 OiBtbTogdXNlIHByb3BlciBzZXRfcFhkKCkgZm9yIGdlbmVyaWMgY29tcGlsZS10aW1lIGZvbGRl ZCBwYXRhYmxlIGluIHZtYWxsb2NfZmF1bHQoKQo+ICAgICAgIG1tL3BndGFibGU6IHJlZGVmaW5l IFBHVEFCTEVfTEVWRUwgZW51bSB3aXRoIGFzY2VuZCBvcmRlciBmcm9tIFBHRAo+ICAgICAgIHg4 NjogbW06IHVzZSBwZ3RhYmxlX2xldmVsIGVudW0gaW4gZWZmZWN0aXZlX3Byb3RfcFhkKCkKPiAg ICAgICB4ODY6IG1tOiBjYXJ2ZSBvdXQgdGhlIGdlbmVyaWMgY29tcGlsZS10aW1lIGZvbGRlZCBw Z3RhYmxlIGNhc2UgaW4gZWZmZWN0aXZlX3Byb3QoKQo+ICAgICAgIHg4NjogbW06IHNraXAgY29s bGFwc2VfcHVkX3BhZ2UoKSB3aGVuIENPTkZJR19YODZfRElSRUNUX0dCUEFHRVMgZGlzYWJsZWQK PiAKPiAgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX3RhYmxlcy5yc3QgICAgICAgICAgICB8IDg0ICsr KysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIGFyY2gvYXJtL2luY2x1ZGUvYXNtL3BhZ2Ut bm9tbXUuaCAgICAgICAgICAgfCAgNCArLQo+ICBhcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxl LTJsZXZlbC10eXBlcy5oIHwgMjAgKysrKystLQo+ICBhcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3Rh YmxlLmggICAgICAgICAgICAgIHwgIDIgLQo+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFi bGUuaCAgICAgICAgICAgIHwgMjMgLS0tLS0tLS0KPiAgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9h c20vcGd0YWJsZS5oICAgICAgICB8ICAyICsKPiAgYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jICAg ICAgICAgICAgICAgICAgICB8IDIwICsrKystLS0KPiAgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Bn dGFibGUuaCAgICAgICAgICAgICB8ICAyICsKPiAgYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9w Z3RhYmxlLmggICAgICAgICB8ICAzIC0tCj4gIGFyY2gvcmlzY3Yva3ZtL21tdS5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAyMCArKysrLS0tCj4gIGFyY2gvcmlzY3YvbW0vZmF1bHQuYyAgICAg ICAgICAgICAgICAgICAgICAgfCA1MiArKysrKysrKysrKy0tLS0tLS0KPiAgYXJjaC94ODYvbW0v ZHVtcF9wYWdldGFibGVzLmMgICAgICAgICAgICAgICB8IDE4ICsrKystLS0KPiAgYXJjaC94ODYv bW0vcGF0L3NldF9tZW1vcnkuYyAgICAgICAgICAgICAgICB8ICAyICstCj4gIGluY2x1ZGUvYXNt LWdlbmVyaWMvcGd0YWJsZS1ub3A0ZC5oICAgICAgICAgfCA1NCArKysrKysrKysrKysrKystLS0t Cj4gIGluY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS1ub3BtZC5oICAgICAgICAgfCA1NCArKysr KysrKysrKysrKystLS0tCj4gIGluY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS1ub3B1ZC5oICAg ICAgICAgfCA1NiArKysrKysrKysrKysrKystLS0tCj4gIGluY2x1ZGUvbGludXgvcGd0YWJsZS5o ICAgICAgICAgICAgICAgICAgICAgfCA2OSArKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgbW0v dm1zY2FuLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCj4gIDE4IGZp bGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCj4gLS0tCj4g YmFzZS1jb21taXQ6IGUzYjUyMzlhZmUxYjhmMDE5NGRiNzQzNmIxN2MzM2U5NGMxOTg4YzQKPiBj aGFuZ2UtaWQ6IDIwMjYwNzIyLWR1bW15X3B0eHAzLTM3NDFkNzhjYzcwZgo+IAo+IEJlc3QgcmVn YXJkcywKPiAtLSAKPiBTaW5jZXJlbHksCj4gWWVvcmV1bSBZdW4KPiAKCi0tIApTaW5jZXJlbHks Clllb3JldW0gWXVuCgotLSAKa3ZtLXJpc2N2IG1haWxpbmcgbGlzdAprdm0tcmlzY3ZAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2t2bS1yaXNjdgo=