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=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 C49A2C43462 for ; Fri, 23 Apr 2021 16:57:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A790E6134F for ; Fri, 23 Apr 2021 16:57:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242529AbhDWQ5q (ORCPT ); Fri, 23 Apr 2021 12:57:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229691AbhDWQ5l (ORCPT ); Fri, 23 Apr 2021 12:57:41 -0400 Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 146B2C061574 for ; Fri, 23 Apr 2021 09:57:05 -0700 (PDT) Received: by mail-pj1-x102b.google.com with SMTP id j14-20020a17090a694eb0290152d92c205dso1549299pjm.0 for ; Fri, 23 Apr 2021 09:57:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dabbelt-com.20150623.gappssmtp.com; s=20150623; h=date:subject:in-reply-to:cc:from:to:message-id:mime-version :content-transfer-encoding; bh=s4J0wdi9ub8j1oFLJOVRAwtlpmptPrFHS6TmHCwX3xA=; b=NATfmSnLVo4Cw+x2lN8iymNNeofocLO2KywuMLPqVJDldRBNI8F0w3X3NuSlH1tTiE EGA3973nQ06R/ATohpU70266PED+c77QfnRyqpD1YPnNKqHS7UmbHao1gwmH8x6oto0p 5eUda067oP2iUQoC/hz7Y4jjKpqi4+7HN+Bblwihk6asUra55FsdkY6sXt0MkvA7PiHh ks6ZsFKzJ6PyrjwbgtOb5tyPo64XbrmyYZLxU1Vs8ElpZabW1ekCTiA/tDQ/czJW9mo2 yW2Nt8FO7BoueqvJYwzFoMr/wBwtq0cJ4v22XhvAuuRGuaKZeyKWEfbPHjNTGDLitDCq 6pOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:subject:in-reply-to:cc:from:to:message-id :mime-version:content-transfer-encoding; bh=s4J0wdi9ub8j1oFLJOVRAwtlpmptPrFHS6TmHCwX3xA=; b=h/b8XY5Xc/lnm/B08enCaT/CK8YXjnURqY2WTMn8OhI8Bn5UerIBbx8VG0pZ3nUZeK MviG/Doy4oyMhzo1ugomX9h2g1mIVAhHjyEVu9INix/u8LYQ0is2hn/xMI1e/vrRxbva d2rH/GriOPPpV6tXWrz8ZRawNVMfPdKWTYFVNrRUmaIJiC/pGKRHq8DN+rvfbuk7xfgl 5J6A27Iijn6OjZ1zbtmvuEBBOL+dBS1N4QXoxH82athGLas0Du/88bbEah2VXLlsb5mn +L2EzQAWmkFzd4i3ub+wclW+L6/Sma55dxC9DOsZhiMaEocGz+D4PXWvBh/3s7Yf3rut Bv7A== X-Gm-Message-State: AOAM531McbUTl/CUazvoLJr/lSWQksP39uaE8iENieVqvwalBRriIN3X 9IY+3Wuel4uQpFOO90+n6Lb9TaPK+nol14D8 X-Google-Smtp-Source: ABdhPJxiPufCe11ABw4MtTLg0HTEpl9JUqO3+Qr3RXVHJigtgt3sFz8+f55Sn+o//L/fQ1m8p2uCEA== X-Received: by 2002:a17:902:e8d1:b029:ec:824a:404e with SMTP id v17-20020a170902e8d1b02900ec824a404emr5085166plg.61.1619197024421; Fri, 23 Apr 2021 09:57:04 -0700 (PDT) Received: from localhost (76-210-143-223.lightspeed.sntcca.sbcglobal.net. [76.210.143.223]) by smtp.gmail.com with ESMTPSA id a20sm5299988pfk.46.2021.04.23.09.57.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Apr 2021 09:57:03 -0700 (PDT) Date: Fri, 23 Apr 2021 09:57:03 -0700 (PDT) X-Google-Original-Date: Fri, 23 Apr 2021 09:57:02 PDT (-0700) Subject: Re: [PATCH] riscv: Fix 32b kernel caused by 64b kernel mapping moving outside linear mapping In-Reply-To: <66e9a8e0-5764-2eea-4070-bad3fb7ee48e@ghiti.fr> CC: anup@brainfault.org, corbet@lwn.net, Paul Walmsley , aou@eecs.berkeley.edu, Arnd Bergmann , aryabinin@virtuozzo.com, glider@google.com, dvyukov@google.com, linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-arch@vger.kernel.org, linux-mm@kvack.org From: Palmer Dabbelt To: alex@ghiti.fr Message-ID: Mime-Version: 1.0 (MHng) Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 23 Apr 2021 01:34:02 PDT (-0700), alex@ghiti.fr wrote: > Le 4/20/21 à 12:18 AM, Anup Patel a écrit : >> On Sat, Apr 17, 2021 at 10:52 PM Alexandre Ghiti wrote: >>> >>> Fix multiple leftovers when moving the kernel mapping outside the linear >>> mapping for 64b kernel that left the 32b kernel unusable. >>> >>> Fixes: 4b67f48da707 ("riscv: Move kernel mapping outside of linear mapping") >>> Signed-off-by: Alexandre Ghiti >> >> Quite a few #ifdef but I don't see any better way at the moment. Maybe we can >> clean this later. Otherwise looks good to me. Agreed. I'd recently sent out a patch set that got NACK'd because we're supposed to be relying on the compiler to optimize away references that can be staticly determined to not be exercised, which is probably the way forward to getting rid of a lot of of preprocessor stuff. That all seems very fragile and is a bigger problem than this, though, so it's probably best to do it as its own thing. >> Reviewed-by: Anup Patel > > Thanks Anup! > > @Palmer: This is not on for-next yet and then rv32 is broken. This does > not apply immediately on top of for-next though, so if you need a new > version, I can do that. But this squashes nicely with the patch it fixes > if you prefer. Thanks. I just hadn't gotten to this one yet, but as you pointed out it's probably best to just squash it. It's in the version on for-next now, it caused few conflicts but I think I got everything sorted out. Now that everything is in I'm going to stop rewriting this stuff, as it touches pretty much the whole tree. I don't have much of a patch back log as of right now, and as the new stuff will be on top of it that will make everyone's lives easier. > > Let me know, I can do that very quickly. > > Alex > >> >> Regards, >> Anup >> >>> --- >>> arch/riscv/include/asm/page.h | 9 +++++++++ >>> arch/riscv/include/asm/pgtable.h | 16 ++++++++++++---- >>> arch/riscv/mm/init.c | 25 ++++++++++++++++++++++++- >>> 3 files changed, 45 insertions(+), 5 deletions(-) >>> >>> diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h >>> index 22cfb2be60dc..f64b61296c0c 100644 >>> --- a/arch/riscv/include/asm/page.h >>> +++ b/arch/riscv/include/asm/page.h >>> @@ -90,15 +90,20 @@ typedef struct page *pgtable_t; >>> >>> #ifdef CONFIG_MMU >>> extern unsigned long va_pa_offset; >>> +#ifdef CONFIG_64BIT >>> extern unsigned long va_kernel_pa_offset; >>> +#endif >>> extern unsigned long pfn_base; >>> #define ARCH_PFN_OFFSET (pfn_base) >>> #else >>> #define va_pa_offset 0 >>> +#ifdef CONFIG_64BIT >>> #define va_kernel_pa_offset 0 >>> +#endif >>> #define ARCH_PFN_OFFSET (PAGE_OFFSET >> PAGE_SHIFT) >>> #endif /* CONFIG_MMU */ >>> >>> +#ifdef CONFIG_64BIT >>> extern unsigned long kernel_virt_addr; >>> >>> #define linear_mapping_pa_to_va(x) ((void *)((unsigned long)(x) + va_pa_offset)) >>> @@ -112,6 +117,10 @@ extern unsigned long kernel_virt_addr; >>> (_x < kernel_virt_addr) ? \ >>> linear_mapping_va_to_pa(_x) : kernel_mapping_va_to_pa(_x); \ >>> }) >>> +#else >>> +#define __pa_to_va_nodebug(x) ((void *)((unsigned long) (x) + va_pa_offset)) >>> +#define __va_to_pa_nodebug(x) ((unsigned long)(x) - va_pa_offset) >>> +#endif >>> >>> #ifdef CONFIG_DEBUG_VIRTUAL >>> extern phys_addr_t __virt_to_phys(unsigned long x); >>> diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h >>> index 80e63a93e903..5afda75cc2c3 100644 >>> --- a/arch/riscv/include/asm/pgtable.h >>> +++ b/arch/riscv/include/asm/pgtable.h >>> @@ -16,19 +16,27 @@ >>> #else >>> >>> #define ADDRESS_SPACE_END (UL(-1)) >>> -/* >>> - * Leave 2GB for kernel and BPF at the end of the address space >>> - */ >>> + >>> +#ifdef CONFIG_64BIT >>> +/* Leave 2GB for kernel and BPF at the end of the address space */ >>> #define KERNEL_LINK_ADDR (ADDRESS_SPACE_END - SZ_2G + 1) >>> +#else >>> +#define KERNEL_LINK_ADDR PAGE_OFFSET >>> +#endif >>> >>> #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) >>> #define VMALLOC_END (PAGE_OFFSET - 1) >>> #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) >>> >>> -/* KASLR should leave at least 128MB for BPF after the kernel */ >>> #define BPF_JIT_REGION_SIZE (SZ_128M) >>> +#ifdef CONFIG_64BIT >>> +/* KASLR should leave at least 128MB for BPF after the kernel */ >>> #define BPF_JIT_REGION_START PFN_ALIGN((unsigned long)&_end) >>> #define BPF_JIT_REGION_END (BPF_JIT_REGION_START + BPF_JIT_REGION_SIZE) >>> +#else >>> +#define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE) >>> +#define BPF_JIT_REGION_END (VMALLOC_END) >>> +#endif >>> >>> /* Modules always live before the kernel */ >>> #ifdef CONFIG_64BIT >>> diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c >>> index 093f3a96ecfc..dc9b988e0778 100644 >>> --- a/arch/riscv/mm/init.c >>> +++ b/arch/riscv/mm/init.c >>> @@ -91,8 +91,10 @@ static void print_vm_layout(void) >>> (unsigned long)VMALLOC_END); >>> print_mlm("lowmem", (unsigned long)PAGE_OFFSET, >>> (unsigned long)high_memory); >>> +#ifdef CONFIG_64BIT >>> print_mlm("kernel", (unsigned long)KERNEL_LINK_ADDR, >>> (unsigned long)ADDRESS_SPACE_END); >>> +#endif >>> } >>> #else >>> static void print_vm_layout(void) { } >>> @@ -165,9 +167,11 @@ static struct pt_alloc_ops pt_ops; >>> /* Offset between linear mapping virtual address and kernel load address */ >>> unsigned long va_pa_offset; >>> EXPORT_SYMBOL(va_pa_offset); >>> +#ifdef CONFIG_64BIT >>> /* Offset between kernel mapping virtual address and kernel load address */ >>> unsigned long va_kernel_pa_offset; >>> EXPORT_SYMBOL(va_kernel_pa_offset); >>> +#endif >>> unsigned long pfn_base; >>> EXPORT_SYMBOL(pfn_base); >>> >>> @@ -410,7 +414,9 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) >>> load_sz = (uintptr_t)(&_end) - load_pa; >>> >>> va_pa_offset = PAGE_OFFSET - load_pa; >>> +#ifdef CONFIG_64BIT >>> va_kernel_pa_offset = kernel_virt_addr - load_pa; >>> +#endif >>> >>> pfn_base = PFN_DOWN(load_pa); >>> >>> @@ -469,12 +475,16 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) >>> pa + PMD_SIZE, PMD_SIZE, PAGE_KERNEL); >>> dtb_early_va = (void *)DTB_EARLY_BASE_VA + (dtb_pa & (PMD_SIZE - 1)); >>> #else /* CONFIG_BUILTIN_DTB */ >>> +#ifdef CONFIG_64BIT >>> /* >>> * __va can't be used since it would return a linear mapping address >>> * whereas dtb_early_va will be used before setup_vm_final installs >>> * the linear mapping. >>> */ >>> dtb_early_va = kernel_mapping_pa_to_va(dtb_pa); >>> +#else >>> + dtb_early_va = __va(dtb_pa); >>> +#endif /* CONFIG_64BIT */ >>> #endif /* CONFIG_BUILTIN_DTB */ >>> #else >>> #ifndef CONFIG_BUILTIN_DTB >>> @@ -486,7 +496,11 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) >>> pa + PGDIR_SIZE, PGDIR_SIZE, PAGE_KERNEL); >>> dtb_early_va = (void *)DTB_EARLY_BASE_VA + (dtb_pa & (PGDIR_SIZE - 1)); >>> #else /* CONFIG_BUILTIN_DTB */ >>> +#ifdef CONFIG_64BIT >>> dtb_early_va = kernel_mapping_pa_to_va(dtb_pa); >>> +#else >>> + dtb_early_va = __va(dtb_pa); >>> +#endif /* CONFIG_64BIT */ >>> #endif /* CONFIG_BUILTIN_DTB */ >>> #endif >>> dtb_early_pa = dtb_pa; >>> @@ -571,12 +585,21 @@ static void __init setup_vm_final(void) >>> for (pa = start; pa < end; pa += map_size) { >>> va = (uintptr_t)__va(pa); >>> create_pgd_mapping(swapper_pg_dir, va, pa, >>> - map_size, PAGE_KERNEL); >>> + map_size, >>> +#ifdef CONFIG_64BIT >>> + PAGE_KERNEL >>> +#else >>> + PAGE_KERNEL_EXEC >>> +#endif >>> + ); >>> + >>> } >>> } >>> >>> +#ifdef CONFIG_64BIT >>> /* Map the kernel */ >>> create_kernel_page_table(swapper_pg_dir, PMD_SIZE); >>> +#endif >>> >>> /* Clear fixmap PTE and PMD mappings */ >>> clear_fixmap(FIX_PTE); >>> -- >>> 2.20.1 >>> 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=-13.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 C2C7EC433ED for ; Fri, 23 Apr 2021 16:57:35 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 3EC05613BB for ; Fri, 23 Apr 2021 16:57:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3EC05613BB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=dabbelt.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Mime-Version:Message-ID:To:From:CC:In-Reply-To: Subject:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References:List-Owner; bh=UKTvXXlgYyEWILcxChJp6rrJs7Jze2smAqbFiWRijjM=; b=n+WYVFQPpYzzyIdo5mQCISmKe AmOXd1aU9UPD6NKF7z3a27PlkgUSVNuHpdKcJpNGGsrXDLYjSvf90u2Nq82srhLwDmQvqHh5/zdn+ ryDXjY7dGy/t+wqhhha08XIqcQ0NcZuj7FI0qi8dQYtPMblQUkBI2ipiSgx13ZlH5tDLU2bUoT7S/ z5yJ6ON25jNm0G21Pg92OhidZzw0llfq+4g0/KlAE2gdeNyil8I/CFJSNGu9UI/TUK5VBqeskMOM/ AyWPzWBlzs7iHXST97nQQSMulZfoJ4GREh8RXpnn7p2r0ELIkomewZOBcJn7aqU6Kf8PB0T7XVUH3 9JqeMOlug==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lZz7F-001wVc-H6; Fri, 23 Apr 2021 16:57:17 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZz78-001wUs-N1 for linux-riscv@desiato.infradead.org; Fri, 23 Apr 2021 16:57:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:Mime-Version:Message-ID:To:From:CC:In-Reply-To:Subject:Date: Sender:Reply-To:Content-ID:Content-Description:References; bh=s4J0wdi9ub8j1oFLJOVRAwtlpmptPrFHS6TmHCwX3xA=; b=VSuqMvzWe7UVkaa7NuAvA+IadM zrJlt2uqJFx0m1iSr1kdXQhf11Sx91U8PL3HALdPmnuZtIkq7ggV1rzUBb7lamW3rZxFrQ5anOnDl s6xV3MhGYcbgoWmSKMrFyrO4nlI7UMveo5lZtwHIF+HuaeSPiQ4wdtXYMBikT2VR9Z29TQgSS2LMB pnJu5whow5PM68R/vLLN7cZJBBTBQ3/RQ8BsHHqEs4lRkEUFpPZQB3zYdpiO4Js7jEIBzo780cmrq m1WnkXlQNq65sB/FM8on/gB1Jz1Tpl5RVinG3YR3L5fgP8hyd2ctCx0SlsU3TpO+PCIM/1WBNcpxq S9q/wirQ==; Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZz75-00EZKG-E3 for linux-riscv@lists.infradead.org; Fri, 23 Apr 2021 16:57:09 +0000 Received: by mail-pj1-x102e.google.com with SMTP id f11-20020a17090a638bb02901524d3a3d48so1507610pjj.3 for ; Fri, 23 Apr 2021 09:57:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dabbelt-com.20150623.gappssmtp.com; s=20150623; h=date:subject:in-reply-to:cc:from:to:message-id:mime-version :content-transfer-encoding; bh=s4J0wdi9ub8j1oFLJOVRAwtlpmptPrFHS6TmHCwX3xA=; b=NATfmSnLVo4Cw+x2lN8iymNNeofocLO2KywuMLPqVJDldRBNI8F0w3X3NuSlH1tTiE EGA3973nQ06R/ATohpU70266PED+c77QfnRyqpD1YPnNKqHS7UmbHao1gwmH8x6oto0p 5eUda067oP2iUQoC/hz7Y4jjKpqi4+7HN+Bblwihk6asUra55FsdkY6sXt0MkvA7PiHh ks6ZsFKzJ6PyrjwbgtOb5tyPo64XbrmyYZLxU1Vs8ElpZabW1ekCTiA/tDQ/czJW9mo2 yW2Nt8FO7BoueqvJYwzFoMr/wBwtq0cJ4v22XhvAuuRGuaKZeyKWEfbPHjNTGDLitDCq 6pOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:subject:in-reply-to:cc:from:to:message-id :mime-version:content-transfer-encoding; bh=s4J0wdi9ub8j1oFLJOVRAwtlpmptPrFHS6TmHCwX3xA=; b=D8fOJNMCCjWwNU1u2XEfYuwa1wJg02lADFF2IpbDvX6pDFppALpQAwSxq8Pq73jOmW btdYSv4U0GBpOFcB0ZPymTwfWCRcTF7JdaqXBRJImfT8Z6ken5y0mZKo2JqudvKK7Qz2 GM1VnH8kEzznCitZrgwXKW9Iqx5UTt1DqgkEw6UWhlHY1Xx1Sd2tnAsU4R3I/vlw1E+d JZtlUqllTgzoW7oCzqMIjAG9swL1oj3YiBHh/2L+8GCU2RiifsnaatbRCvHFBnmGovUG 9zpcZ4QaKXFby8O88DwGAVbV3Y8210goEUvXlh7bSF7x3sACI/kTgpORZ3uBeDrA0L2Z MvWg== X-Gm-Message-State: AOAM5338a6//YTi+nZrQspocGs9p4YvfY8VE5HdAM29UF+izyvs1/NtU UaIiatIU3nSFnbfY4QmkiLs8wA== X-Google-Smtp-Source: ABdhPJxiPufCe11ABw4MtTLg0HTEpl9JUqO3+Qr3RXVHJigtgt3sFz8+f55Sn+o//L/fQ1m8p2uCEA== X-Received: by 2002:a17:902:e8d1:b029:ec:824a:404e with SMTP id v17-20020a170902e8d1b02900ec824a404emr5085166plg.61.1619197024421; Fri, 23 Apr 2021 09:57:04 -0700 (PDT) Received: from localhost (76-210-143-223.lightspeed.sntcca.sbcglobal.net. [76.210.143.223]) by smtp.gmail.com with ESMTPSA id a20sm5299988pfk.46.2021.04.23.09.57.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Apr 2021 09:57:03 -0700 (PDT) Date: Fri, 23 Apr 2021 09:57:03 -0700 (PDT) X-Google-Original-Date: Fri, 23 Apr 2021 09:57:02 PDT (-0700) Subject: Re: [PATCH] riscv: Fix 32b kernel caused by 64b kernel mapping moving outside linear mapping In-Reply-To: <66e9a8e0-5764-2eea-4070-bad3fb7ee48e@ghiti.fr> CC: anup@brainfault.org, corbet@lwn.net, Paul Walmsley , aou@eecs.berkeley.edu, Arnd Bergmann , aryabinin@virtuozzo.com, glider@google.com, dvyukov@google.com, linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-arch@vger.kernel.org, linux-mm@kvack.org From: Palmer Dabbelt To: alex@ghiti.fr Message-ID: Mime-Version: 1.0 (MHng) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210423_095707_547968_C542D324 X-CRM114-Status: GOOD ( 31.77 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCAyMyBBcHIgMjAyMSAwMTozNDowMiBQRFQgKC0wNzAwKSwgYWxleEBnaGl0aS5mciB3 cm90ZToKPiBMZSA0LzIwLzIxIMOgIDEyOjE4IEFNLCBBbnVwIFBhdGVsIGEgw6ljcml0wqA6Cj4+ IE9uIFNhdCwgQXByIDE3LCAyMDIxIGF0IDEwOjUyIFBNIEFsZXhhbmRyZSBHaGl0aSA8YWxleEBn aGl0aS5mcj4gd3JvdGU6Cj4+Pgo+Pj4gRml4IG11bHRpcGxlIGxlZnRvdmVycyB3aGVuIG1vdmlu ZyB0aGUga2VybmVsIG1hcHBpbmcgb3V0c2lkZSB0aGUgbGluZWFyCj4+PiBtYXBwaW5nIGZvciA2 NGIga2VybmVsIHRoYXQgbGVmdCB0aGUgMzJiIGtlcm5lbCB1bnVzYWJsZS4KPj4+Cj4+PiBGaXhl czogNGI2N2Y0OGRhNzA3ICgicmlzY3Y6IE1vdmUga2VybmVsIG1hcHBpbmcgb3V0c2lkZSBvZiBs aW5lYXIgbWFwcGluZyIpCj4+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgR2hpdGkgPGFsZXhA Z2hpdGkuZnI+Cj4+Cj4+IFF1aXRlIGEgZmV3ICNpZmRlZiBidXQgSSBkb24ndCBzZWUgYW55IGJl dHRlciB3YXkgYXQgdGhlIG1vbWVudC4gTWF5YmUgd2UgY2FuCj4+IGNsZWFuIHRoaXMgbGF0ZXIu IE90aGVyd2lzZSBsb29rcyBnb29kIHRvIG1lLgoKQWdyZWVkLiAgSSdkIHJlY2VudGx5IHNlbnQg b3V0IGEgcGF0Y2ggc2V0IHRoYXQgZ290IE5BQ0snZCBiZWNhdXNlIHdlJ3JlIApzdXBwb3NlZCB0 byBiZSByZWx5aW5nIG9uIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZSBhd2F5IHJlZmVyZW5jZXMg dGhhdCAKY2FuIGJlIHN0YXRpY2x5IGRldGVybWluZWQgdG8gbm90IGJlIGV4ZXJjaXNlZCwgd2hp Y2ggaXMgcHJvYmFibHkgdGhlIAp3YXkgZm9yd2FyZCB0byBnZXR0aW5nIHJpZCBvZiBhIGxvdCBv ZiBvZiBwcmVwcm9jZXNzb3Igc3R1ZmYuICBUaGF0IGFsbCAKc2VlbXMgdmVyeSBmcmFnaWxlIGFu ZCBpcyBhIGJpZ2dlciBwcm9ibGVtIHRoYW4gdGhpcywgdGhvdWdoLCBzbyBpdCdzIApwcm9iYWJs eSBiZXN0IHRvIGRvIGl0IGFzIGl0cyBvd24gdGhpbmcuCgo+PiBSZXZpZXdlZC1ieTogQW51cCBQ YXRlbCA8YW51cEBicmFpbmZhdWx0Lm9yZz4KPgo+IFRoYW5rcyBBbnVwIQo+Cj4gQFBhbG1lcjog VGhpcyBpcyBub3Qgb24gZm9yLW5leHQgeWV0IGFuZCB0aGVuIHJ2MzIgaXMgYnJva2VuLiBUaGlz IGRvZXMKPiBub3QgYXBwbHkgaW1tZWRpYXRlbHkgb24gdG9wIG9mIGZvci1uZXh0IHRob3VnaCwg c28gaWYgeW91IG5lZWQgYSBuZXcKPiB2ZXJzaW9uLCBJIGNhbiBkbyB0aGF0LiBCdXQgdGhpcyBz cXVhc2hlcyBuaWNlbHkgd2l0aCB0aGUgcGF0Y2ggaXQgZml4ZXMKPiBpZiB5b3UgcHJlZmVyLgoK VGhhbmtzLiAgSSBqdXN0IGhhZG4ndCBnb3R0ZW4gdG8gdGhpcyBvbmUgeWV0LCBidXQgYXMgeW91 IHBvaW50ZWQgb3V0IAppdCdzIHByb2JhYmx5IGJlc3QgdG8ganVzdCBzcXVhc2ggaXQuICBJdCdz IGluIHRoZSB2ZXJzaW9uIG9uIGZvci1uZXh0IApub3csIGl0IGNhdXNlZCBmZXcgY29uZmxpY3Rz IGJ1dCBJIHRoaW5rIEkgZ290IGV2ZXJ5dGhpbmcgc29ydGVkIG91dC4KCk5vdyB0aGF0IGV2ZXJ5 dGhpbmcgaXMgaW4gSSdtIGdvaW5nIHRvIHN0b3AgcmV3cml0aW5nIHRoaXMgc3R1ZmYsIGFzIGl0 IAp0b3VjaGVzIHByZXR0eSBtdWNoIHRoZSB3aG9sZSB0cmVlLiAgSSBkb24ndCBoYXZlIG11Y2gg b2YgYSBwYXRjaCBiYWNrIApsb2cgYXMgb2YgcmlnaHQgbm93LCBhbmQgYXMgdGhlIG5ldyBzdHVm ZiB3aWxsIGJlIG9uIHRvcCBvZiBpdCB0aGF0IAp3aWxsIG1ha2UgZXZlcnlvbmUncyBsaXZlcyBl YXNpZXIuCgo+Cj4gTGV0IG1lIGtub3csIEkgY2FuIGRvIHRoYXQgdmVyeSBxdWlja2x5Lgo+Cj4g QWxleAo+Cj4+Cj4+IFJlZ2FyZHMsCj4+IEFudXAKPj4KPj4+IC0tLQo+Pj4gICBhcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL3BhZ2UuaCAgICB8ICA5ICsrKysrKysrKwo+Pj4gICBhcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL3BndGFibGUuaCB8IDE2ICsrKysrKysrKysrKy0tLS0KPj4+ICAgYXJjaC9yaXNj di9tbS9pbml0LmMgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKystCj4+ PiAgIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPj4+ Cj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wYWdlLmggYi9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4gaW5kZXggMjJjZmIyYmU2MGRjLi5mNjRiNjEyOTZj MGMgMTAwNjQ0Cj4+PiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4gKysr IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wYWdlLmgKPj4+IEBAIC05MCwxNSArOTAsMjAgQEAg dHlwZWRlZiBzdHJ1Y3QgcGFnZSAqcGd0YWJsZV90Owo+Pj4KPj4+ICAgI2lmZGVmIENPTkZJR19N TVUKPj4+ICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmFfcGFfb2Zmc2V0Owo+Pj4gKyNpZmRlZiBD T05GSUdfNjRCSVQKPj4+ICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmFfa2VybmVsX3BhX29mZnNl dDsKPj4+ICsjZW5kaWYKPj4+ICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGZuX2Jhc2U7Cj4+PiAg ICNkZWZpbmUgQVJDSF9QRk5fT0ZGU0VUICAgICAgICAgICAgICAgIChwZm5fYmFzZSkKPj4+ICAg I2Vsc2UKPj4+ICAgI2RlZmluZSB2YV9wYV9vZmZzZXQgICAgICAgICAgIDAKPj4+ICsjaWZkZWYg Q09ORklHXzY0QklUCj4+PiAgICNkZWZpbmUgdmFfa2VybmVsX3BhX29mZnNldCAgICAwCj4+PiAr I2VuZGlmCj4+PiAgICNkZWZpbmUgQVJDSF9QRk5fT0ZGU0VUICAgICAgICAgICAgICAgIChQQUdF X09GRlNFVCA+PiBQQUdFX1NISUZUKQo+Pj4gICAjZW5kaWYgLyogQ09ORklHX01NVSAqLwo+Pj4K Pj4+ICsjaWZkZWYgQ09ORklHXzY0QklUCj4+PiAgIGV4dGVybiB1bnNpZ25lZCBsb25nIGtlcm5l bF92aXJ0X2FkZHI7Cj4+Pgo+Pj4gICAjZGVmaW5lIGxpbmVhcl9tYXBwaW5nX3BhX3RvX3ZhKHgp ICAgICAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKHgpICsgdmFfcGFfb2Zmc2V0KSkKPj4+IEBA IC0xMTIsNiArMTE3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIGtlcm5lbF92aXJ0X2FkZHI7 Cj4+PiAgICAgICAgICAoX3ggPCBrZXJuZWxfdmlydF9hZGRyKSA/ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+PiAgICAgICAgICAgICAgICAgIGxpbmVh cl9tYXBwaW5nX3ZhX3RvX3BhKF94KSA6IGtlcm5lbF9tYXBwaW5nX3ZhX3RvX3BhKF94KTsgICAg ICBcCj4+PiAgICAgICAgICB9KQo+Pj4gKyNlbHNlCj4+PiArI2RlZmluZSBfX3BhX3RvX3ZhX25v ZGVidWcoeCkgICgodm9pZCAqKSgodW5zaWduZWQgbG9uZykgKHgpICsgdmFfcGFfb2Zmc2V0KSkK Pj4+ICsjZGVmaW5lIF9fdmFfdG9fcGFfbm9kZWJ1Zyh4KSAgKCh1bnNpZ25lZCBsb25nKSh4KSAt IHZhX3BhX29mZnNldCkKPj4+ICsjZW5kaWYKPj4+Cj4+PiAgICNpZmRlZiBDT05GSUdfREVCVUdf VklSVFVBTAo+Pj4gICBleHRlcm4gcGh5c19hZGRyX3QgX192aXJ0X3RvX3BoeXModW5zaWduZWQg bG9uZyB4KTsKPj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUu aCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4+PiBpbmRleCA4MGU2M2E5M2U5 MDMuLjVhZmRhNzVjYzJjMyAxMDA2NDQKPj4+IC0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v cGd0YWJsZS5oCj4+PiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+Pj4g QEAgLTE2LDE5ICsxNiwyNyBAQAo+Pj4gICAjZWxzZQo+Pj4KPj4+ICAgI2RlZmluZSBBRERSRVNT X1NQQUNFX0VORCAgICAgIChVTCgtMSkpCj4+PiAtLyoKPj4+IC0gKiBMZWF2ZSAyR0IgZm9yIGtl cm5lbCBhbmQgQlBGIGF0IHRoZSBlbmQgb2YgdGhlIGFkZHJlc3Mgc3BhY2UKPj4+IC0gKi8KPj4+ ICsKPj4+ICsjaWZkZWYgQ09ORklHXzY0QklUCj4+PiArLyogTGVhdmUgMkdCIGZvciBrZXJuZWwg YW5kIEJQRiBhdCB0aGUgZW5kIG9mIHRoZSBhZGRyZXNzIHNwYWNlICovCj4+PiAgICNkZWZpbmUg S0VSTkVMX0xJTktfQUREUiAgICAgICAoQUREUkVTU19TUEFDRV9FTkQgLSBTWl8yRyArIDEpCj4+ PiArI2Vsc2UKPj4+ICsjZGVmaW5lIEtFUk5FTF9MSU5LX0FERFIgICAgICAgUEFHRV9PRkZTRVQK Pj4+ICsjZW5kaWYKPj4+Cj4+PiAgICNkZWZpbmUgVk1BTExPQ19TSVpFICAgICAoS0VSTl9WSVJU X1NJWkUgPj4gMSkKPj4+ICAgI2RlZmluZSBWTUFMTE9DX0VORCAgICAgIChQQUdFX09GRlNFVCAt IDEpCj4+PiAgICNkZWZpbmUgVk1BTExPQ19TVEFSVCAgICAoUEFHRV9PRkZTRVQgLSBWTUFMTE9D X1NJWkUpCj4+Pgo+Pj4gLS8qIEtBU0xSIHNob3VsZCBsZWF2ZSBhdCBsZWFzdCAxMjhNQiBmb3Ig QlBGIGFmdGVyIHRoZSBrZXJuZWwgKi8KPj4+ICAgI2RlZmluZSBCUEZfSklUX1JFR0lPTl9TSVpF ICAgIChTWl8xMjhNKQo+Pj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPj4+ICsvKiBLQVNMUiBzaG91 bGQgbGVhdmUgYXQgbGVhc3QgMTI4TUIgZm9yIEJQRiBhZnRlciB0aGUga2VybmVsICovCj4+PiAg ICNkZWZpbmUgQlBGX0pJVF9SRUdJT05fU1RBUlQgICBQRk5fQUxJR04oKHVuc2lnbmVkIGxvbmcp Jl9lbmQpCj4+PiAgICNkZWZpbmUgQlBGX0pJVF9SRUdJT05fRU5EICAgICAoQlBGX0pJVF9SRUdJ T05fU1RBUlQgKyBCUEZfSklUX1JFR0lPTl9TSVpFKQo+Pj4gKyNlbHNlCj4+PiArI2RlZmluZSBC UEZfSklUX1JFR0lPTl9TVEFSVCAgIChQQUdFX09GRlNFVCAtIEJQRl9KSVRfUkVHSU9OX1NJWkUp Cj4+PiArI2RlZmluZSBCUEZfSklUX1JFR0lPTl9FTkQgICAgIChWTUFMTE9DX0VORCkKPj4+ICsj ZW5kaWYKPj4+Cj4+PiAgIC8qIE1vZHVsZXMgYWx3YXlzIGxpdmUgYmVmb3JlIHRoZSBrZXJuZWwg Ki8KPj4+ICAgI2lmZGVmIENPTkZJR182NEJJVAo+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv bW0vaW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9pbml0LmMKPj4+IGluZGV4IDA5M2YzYTk2ZWNmYy4u ZGM5Yjk4OGUwNzc4IDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9yaXNjdi9tbS9pbml0LmMKPj4+ICsr KyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jCj4+PiBAQCAtOTEsOCArOTEsMTAgQEAgc3RhdGljIHZv aWQgcHJpbnRfdm1fbGF5b3V0KHZvaWQpCj4+PiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk IGxvbmcpVk1BTExPQ19FTkQpOwo+Pj4gICAgICAgICAgcHJpbnRfbWxtKCJsb3dtZW0iLCAodW5z aWduZWQgbG9uZylQQUdFX09GRlNFVCwKPj4+ICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQg bG9uZyloaWdoX21lbW9yeSk7Cj4+PiArI2lmZGVmIENPTkZJR182NEJJVAo+Pj4gICAgICAgICAg cHJpbnRfbWxtKCJrZXJuZWwiLCAodW5zaWduZWQgbG9uZylLRVJORUxfTElOS19BRERSLAo+Pj4g ICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKUFERFJFU1NfU1BBQ0VfRU5EKTsKPj4+ ICsjZW5kaWYKPj4+ICAgfQo+Pj4gICAjZWxzZQo+Pj4gICBzdGF0aWMgdm9pZCBwcmludF92bV9s YXlvdXQodm9pZCkgeyB9Cj4+PiBAQCAtMTY1LDkgKzE2NywxMSBAQCBzdGF0aWMgc3RydWN0IHB0 X2FsbG9jX29wcyBwdF9vcHM7Cj4+PiAgIC8qIE9mZnNldCBiZXR3ZWVuIGxpbmVhciBtYXBwaW5n IHZpcnR1YWwgYWRkcmVzcyBhbmQga2VybmVsIGxvYWQgYWRkcmVzcyAqLwo+Pj4gICB1bnNpZ25l ZCBsb25nIHZhX3BhX29mZnNldDsKPj4+ICAgRVhQT1JUX1NZTUJPTCh2YV9wYV9vZmZzZXQpOwo+ Pj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPj4+ICAgLyogT2Zmc2V0IGJldHdlZW4ga2VybmVsIG1h cHBpbmcgdmlydHVhbCBhZGRyZXNzIGFuZCBrZXJuZWwgbG9hZCBhZGRyZXNzICovCj4+PiAgIHVu c2lnbmVkIGxvbmcgdmFfa2VybmVsX3BhX29mZnNldDsKPj4+ICAgRVhQT1JUX1NZTUJPTCh2YV9r ZXJuZWxfcGFfb2Zmc2V0KTsKPj4+ICsjZW5kaWYKPj4+ICAgdW5zaWduZWQgbG9uZyBwZm5fYmFz ZTsKPj4+ICAgRVhQT1JUX1NZTUJPTChwZm5fYmFzZSk7Cj4+Pgo+Pj4gQEAgLTQxMCw3ICs0MTQs OSBAQCBhc21saW5rYWdlIHZvaWQgX19pbml0IHNldHVwX3ZtKHVpbnRwdHJfdCBkdGJfcGEpCj4+ PiAgICAgICAgICBsb2FkX3N6ID0gKHVpbnRwdHJfdCkoJl9lbmQpIC0gbG9hZF9wYTsKPj4+Cj4+ PiAgICAgICAgICB2YV9wYV9vZmZzZXQgPSBQQUdFX09GRlNFVCAtIGxvYWRfcGE7Cj4+PiArI2lm ZGVmIENPTkZJR182NEJJVAo+Pj4gICAgICAgICAgdmFfa2VybmVsX3BhX29mZnNldCA9IGtlcm5l bF92aXJ0X2FkZHIgLSBsb2FkX3BhOwo+Pj4gKyNlbmRpZgo+Pj4KPj4+ICAgICAgICAgIHBmbl9i YXNlID0gUEZOX0RPV04obG9hZF9wYSk7Cj4+Pgo+Pj4gQEAgLTQ2OSwxMiArNDc1LDE2IEBAIGFz bWxpbmthZ2Ugdm9pZCBfX2luaXQgc2V0dXBfdm0odWludHB0cl90IGR0Yl9wYSkKPj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYSArIFBNRF9TSVpFLCBQTURfU0laRSwgUEFHRV9LRVJO RUwpOwo+Pj4gICAgICAgICAgZHRiX2Vhcmx5X3ZhID0gKHZvaWQgKilEVEJfRUFSTFlfQkFTRV9W QSArIChkdGJfcGEgJiAoUE1EX1NJWkUgLSAxKSk7Cj4+PiAgICNlbHNlIC8qIENPTkZJR19CVUlM VElOX0RUQiAqLwo+Pj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPj4+ICAgICAgICAgIC8qCj4+PiAg ICAgICAgICAgKiBfX3ZhIGNhbid0IGJlIHVzZWQgc2luY2UgaXQgd291bGQgcmV0dXJuIGEgbGlu ZWFyIG1hcHBpbmcgYWRkcmVzcwo+Pj4gICAgICAgICAgICogd2hlcmVhcyBkdGJfZWFybHlfdmEg d2lsbCBiZSB1c2VkIGJlZm9yZSBzZXR1cF92bV9maW5hbCBpbnN0YWxscwo+Pj4gICAgICAgICAg ICogdGhlIGxpbmVhciBtYXBwaW5nLgo+Pj4gICAgICAgICAgICovCj4+PiAgICAgICAgICBkdGJf ZWFybHlfdmEgPSBrZXJuZWxfbWFwcGluZ19wYV90b192YShkdGJfcGEpOwo+Pj4gKyNlbHNlCj4+ PiArICAgICAgIGR0Yl9lYXJseV92YSA9IF9fdmEoZHRiX3BhKTsKPj4+ICsjZW5kaWYgLyogQ09O RklHXzY0QklUICovCj4+PiAgICNlbmRpZiAvKiBDT05GSUdfQlVJTFRJTl9EVEIgKi8KPj4+ICAg I2Vsc2UKPj4+ICAgI2lmbmRlZiBDT05GSUdfQlVJTFRJTl9EVEIKPj4+IEBAIC00ODYsNyArNDk2 LDExIEBAIGFzbWxpbmthZ2Ugdm9pZCBfX2luaXQgc2V0dXBfdm0odWludHB0cl90IGR0Yl9wYSkK Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYSArIFBHRElSX1NJWkUsIFBHRElSX1NJ WkUsIFBBR0VfS0VSTkVMKTsKPj4+ICAgICAgICAgIGR0Yl9lYXJseV92YSA9ICh2b2lkICopRFRC X0VBUkxZX0JBU0VfVkEgKyAoZHRiX3BhICYgKFBHRElSX1NJWkUgLSAxKSk7Cj4+PiAgICNlbHNl IC8qIENPTkZJR19CVUlMVElOX0RUQiAqLwo+Pj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPj4+ICAg ICAgICAgIGR0Yl9lYXJseV92YSA9IGtlcm5lbF9tYXBwaW5nX3BhX3RvX3ZhKGR0Yl9wYSk7Cj4+ PiArI2Vsc2UKPj4+ICsgICAgICAgZHRiX2Vhcmx5X3ZhID0gX192YShkdGJfcGEpOwo+Pj4gKyNl bmRpZiAvKiBDT05GSUdfNjRCSVQgKi8KPj4+ICAgI2VuZGlmIC8qIENPTkZJR19CVUlMVElOX0RU QiAqLwo+Pj4gICAjZW5kaWYKPj4+ICAgICAgICAgIGR0Yl9lYXJseV9wYSA9IGR0Yl9wYTsKPj4+ IEBAIC01NzEsMTIgKzU4NSwyMSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc2V0dXBfdm1fZmluYWwo dm9pZCkKPj4+ICAgICAgICAgICAgICAgICAgZm9yIChwYSA9IHN0YXJ0OyBwYSA8IGVuZDsgcGEg Kz0gbWFwX3NpemUpIHsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICB2YSA9ICh1aW50cHRy X3QpX192YShwYSk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3BnZF9tYXBw aW5nKHN3YXBwZXJfcGdfZGlyLCB2YSwgcGEsCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWFwX3NpemUsIFBBR0VfS0VSTkVMKTsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBfc2l6ZSwKPj4+ICsjaWZkZWYgQ09O RklHXzY0QklUCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEFHRV9LRVJORUwKPj4+ICsjZWxzZQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBBR0VfS0VSTkVMX0VYRUMKPj4+ICsjZW5kaWYKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwo+Pj4gKwo+Pj4gICAgICAgICAgICAgICAg ICB9Cj4+PiAgICAgICAgICB9Cj4+Pgo+Pj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPj4+ICAgICAg ICAgIC8qIE1hcCB0aGUga2VybmVsICovCj4+PiAgICAgICAgICBjcmVhdGVfa2VybmVsX3BhZ2Vf dGFibGUoc3dhcHBlcl9wZ19kaXIsIFBNRF9TSVpFKTsKPj4+ICsjZW5kaWYKPj4+Cj4+PiAgICAg ICAgICAvKiBDbGVhciBmaXhtYXAgUFRFIGFuZCBQTUQgbWFwcGluZ3MgKi8KPj4+ICAgICAgICAg IGNsZWFyX2ZpeG1hcChGSVhfUFRFKTsKPj4+IC0tCj4+PiAyLjIwLjEKPj4+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5n IGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==