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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 B33ABC49EA2 for ; Thu, 17 Jun 2021 18:17:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9C6F8613D8 for ; Thu, 17 Jun 2021 18:17:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233050AbhFQSTg (ORCPT ); Thu, 17 Jun 2021 14:19:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231162AbhFQSTf (ORCPT ); Thu, 17 Jun 2021 14:19:35 -0400 Received: from ustc.edu.cn (email6.ustc.edu.cn [IPv6:2001:da8:d800::8]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3C8A1C061574; Thu, 17 Jun 2021 11:17:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ustc.edu.cn; s=dkim; h=Received:Date:From:To:Cc:Subject: Message-ID:In-Reply-To:References:MIME-Version:Content-Type: Content-Transfer-Encoding; bh=Z7XdKee+EQziVNAT70nU6H2kFcBGtBk/Ik TlYkN+608=; b=pwmNuilLchHvhnQ95iPishmHe7zrrSfvVpv5QIBqC/kMMA7ejI MGIoi0ObTjFjSUurH24FH0ZRmETTzQMPgFnJb2lYn7ZwCczhQef+1Gm3rWK9zAlX 0z7q5XNeqPJbOA1+s8/aWauGQepEvQ/tCjgsH4qUtTLhlKgFYa8ak7Kas= Received: from xhacker (unknown [101.86.20.15]) by newmailweb.ustc.edu.cn (Coremail) with SMTP id LkAmygAnKYFskctgSkT3AA--.4906S2; Fri, 18 Jun 2021 02:16:13 +0800 (CST) Date: Fri, 18 Jun 2021 02:10:38 +0800 From: Jisheng Zhang To: Alex Ghiti Cc: Palmer Dabbelt , schwab@linux-m68k.org, Paul Walmsley , aou@eecs.berkeley.edu, ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, bjorn@kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, luke.r.nels@gmail.com, xi.wang@gmail.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH] riscv: Ensure BPF_JIT_REGION_START aligned with PMD size Message-ID: <20210618021038.52c2f558@xhacker> In-Reply-To: <20210618014648.1857a62a@xhacker> References: <50ebc99c-f0a2-b4ea-fc9b-cd93a8324697@ghiti.fr> <20210618012731.345657bf@xhacker> <20210618014648.1857a62a@xhacker> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: LkAmygAnKYFskctgSkT3AA--.4906S2 X-Coremail-Antispam: 1UD129KBjvJXoW3Zw1ftF1xGr13XF1kXF48tFb_yoWkXF1kpr 1DJF43GrW8Jr18X342qry5GryUtw1UA3ZFqr1DJa4rJF9rKF1jqr1UXFy7urnFqF4xJ3W2 yr4DJrsIv345Aw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvEb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26ryj6rWUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwV C2z280aVCY1x0267AKxVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVAC Y4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJV W8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lFIxGxcIEc7CjxVA2Y2ka0xkI wI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1l4IxYO2xFxVAFwI0_Jr v_JF1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY 17CE14v26r4a6rW5MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcV C0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWrJr0_WFyUJwCI 42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWI evJa73UjIFyTuYvjxUg0D7DUUUU X-CM-SenderInfo: xmv2xttqjtqzxdloh3xvwfhvlgxou0/ Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 18 Jun 2021 01:46:48 +0800 Jisheng Zhang wrote: > On Fri, 18 Jun 2021 01:27:31 +0800 > Jisheng Zhang wrote: >=20 > > On Thu, 17 Jun 2021 16:18:54 +0200 > > Alex Ghiti wrote: > > =20 > > > Le 17/06/2021 =C3=A0 10:09, Alex Ghiti a =C3=A9crit=C2=A0: =20 > > > > Le 17/06/2021 =C3=A0 09:30, Palmer Dabbelt a =C3=A9crit=C2=A0: = =20 > > > >> On Tue, 15 Jun 2021 17:03:28 PDT (-0700), jszhang3@mail.ustc.edu.c= n=20 > > > >> wrote: =20 > > > >>> On Tue, 15 Jun 2021 20:54:19 +0200 > > > >>> Alex Ghiti wrote: > > > >>> =20 > > > >>>> Hi Jisheng, =20 > > > >>> > > > >>> Hi Alex, > > > >>> =20 > > > >>>> > > > >>>> Le 14/06/2021 =C3=A0 18:49, Jisheng Zhang a =C3=A9crit=C2=A0: = =20 > > > >>>> > From: Jisheng Zhang =20 > > > >>>> > > Andreas reported commit fc8504765ec5 ("riscv: bpf: Avoid = =20 > > > >>>> breaking W^X") =20 > > > >>>> > breaks booting with one kind of config file, I reproduced a ke= rnel =20 > > > >>>> panic =20 > > > >>>> > with the config: =20 > > > >>>> > > [=C2=A0=C2=A0=C2=A0 0.138553] Unable to handle kernel paging= request at virtual =20 > > > >>>> address ffffffff81201220 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.139159] Oops [#1] > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.139303] Modules linked in: > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.139601] CPU: 0 PID: 1 Comm: swapper/0 No= t tainted =20 > > > >>>> 5.13.0-rc5-default+ #1 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.139934] Hardware name: riscv-virtio,qemu= (DT) > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.140193] epc : __memset+0xc4/0xfc > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.140416]=C2=A0 ra : skb_flow_dissector_in= it+0x1e/0x82 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.140609] epc : ffffffff8029806c ra : ffff= ffff8033be78 sp : =20 > > > >>>> ffffffe001647da0 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.140878]=C2=A0 gp : ffffffff81134b08 tp := ffffffe001654380 t0 : =20 > > > >>>> ffffffff81201158 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.141156]=C2=A0 t1 : 0000000000000002 t2 := 0000000000000154 s0 : =20 > > > >>>> ffffffe001647dd0 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.141424]=C2=A0 s1 : ffffffff80a43250 a0 := ffffffff81201220 a1 : =20 > > > >>>> 0000000000000000 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.141654]=C2=A0 a2 : 000000000000003c a3 := ffffffff81201258 a4 : =20 > > > >>>> 0000000000000064 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.141893]=C2=A0 a5 : ffffffff8029806c a6 := 0000000000000040 a7 : =20 > > > >>>> ffffffffffffffff =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.142126]=C2=A0 s2 : ffffffff81201220 s3 := 0000000000000009 s4 : =20 > > > >>>> ffffffff81135088 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.142353]=C2=A0 s5 : ffffffff81135038 s6 := ffffffff8080ce80 s7 : =20 > > > >>>> ffffffff80800438 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.142584]=C2=A0 s8 : ffffffff80bc6578 s9 := 0000000000000008 s10: =20 > > > >>>> ffffffff806000ac =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.142810]=C2=A0 s11: 0000000000000000 t3 := fffffffffffffffc t4 : =20 > > > >>>> 0000000000000000 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.143042]=C2=A0 t5 : 0000000000000155 t6 := 00000000000003ff > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.143220] status: 0000000000000120 badaddr= : ffffffff81201220 =20 > > > >>>> cause: 000000000000000f =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.143560] [] __memset+0x= c4/0xfc > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.143859] [] =20 > > > >>>> init_default_flow_dissectors+0x22/0x60 =20 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.144092] [] do_one_init= call+0x3e/0x168 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.144278] [] kernel_init= _freeable+0x1c8/0x224 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.144479] [] kernel_init= +0x12/0x110 > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.144658] [] ret_from_ex= ception+0x0/0xc > > > >>>> > [=C2=A0=C2=A0=C2=A0 0.145124] ---[ end trace f1e9643daa46d591 = ]--- =20 > > > >>>> > > After some investigation, I think I found the root cause: co= mmit =20 > > > >>>> > 2bfc6cd81bd ("move kernel mapping outside of linear mapping") = moves > > > >>>> > BPF JIT region after the kernel: =20 > > > >>>> > > The &_end is unlikely aligned with PMD size, so the front bp= f jit =20 > > > >>>> > region sits with part of kernel .data section in one PMD size = =20 > > > >>>> mapping. =20 > > > >>>> > But kernel is mapped in PMD SIZE, when bpf_jit_binary_lock_ro(= ) is > > > >>>> > called to make the first bpf jit prog ROX, we will make part o= f =20 > > > >>>> kernel =20 > > > >>>> > .data section RO too, so when we write to, for example memset = the > > > >>>> > .data section, MMU will trigger a store page fault. =20 > > > >>>> Good catch, we make sure no physical allocation happens between = _end=20 > > > >>>> and the next PMD aligned address, but I missed this one. > > > >>>> =20 > > > >>>> > > To fix the issue, we need to ensure the BPF JIT region is PM= D size =20 > > > >>>> > aligned. This patch acchieve this goal by restoring the BPF JI= T =20 > > > >>>> region =20 > > > >>>> > to original position, I.E the 128MB before kernel .text sectio= n. =20 > > > >>>> But I disagree with your solution: I made sure modules and BPF=20 > > > >>>> programs get their own virtual regions to avoid worst case scena= rio=20 > > > >>>> where one could allocate all the space and leave nothing to the= =20 > > > >>>> other (we are limited to +- 2GB offset). Why don't just align=20 > > > >>>> BPF_JIT_REGION_START to the next PMD aligned address? =20 > > > >>> > > > >>> Originally, I planed to fix the issue by aligning=20 > > > >>> BPF_JIT_REGION_START, but > > > >>> IIRC, BPF experts are adding (or have added) "Calling kernel=20 > > > >>> functions from BPF" > > > >>> feature, there's a risk that BPF JIT region is beyond the 2GB of= =20 > > > >>> module region: > > > >>> > > > >>> ------ > > > >>> module > > > >>> ------ > > > >>> kernel > > > >>> ------ > > > >>> BPF_JIT > > > >>> > > > >>> So I made this patch finally. In this patch, we let BPF JIT regio= n sit > > > >>> between module and kernel. > > > >>> > > > >>> To address "make sure modules and BPF programs get their own virt= ual=20 > > > >>> regions", > > > >>> what about something as below (applied against this patch)? > > > >>> > > > >>> diff --git a/arch/riscv/include/asm/pgtable.h=20 > > > >>> b/arch/riscv/include/asm/pgtable.h > > > >>> index 380cd3a7e548..da1158f10b09 100644 > > > >>> --- a/arch/riscv/include/asm/pgtable.h > > > >>> +++ b/arch/riscv/include/asm/pgtable.h > > > >>> @@ -31,7 +31,7 @@ > > > >>> =C2=A0#define BPF_JIT_REGION_SIZE=C2=A0=C2=A0=C2=A0 (SZ_128M) > > > >>> =C2=A0#ifdef CONFIG_64BIT > > > >>> =C2=A0#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (BPF_JIT_REG= ION_END -=20 > > > >>> BPF_JIT_REGION_SIZE) > > > >>> -#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (MODULES_END) > > > >>> +#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (PFN_ALIGN((unsigne= d long)&_start)) > > > >>> =C2=A0#else > > > >>> =C2=A0#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (PAGE_OFFSET= - BPF_JIT_REGION_SIZE) > > > >>> =C2=A0#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (VMALLOC_END) > > > >>> @@ -40,7 +40,7 @@ > > > >>> =C2=A0/* Modules always live before the kernel */ > > > >>> =C2=A0#ifdef CONFIG_64BIT > > > >>> =C2=A0#define MODULES_VADDR=C2=A0=C2=A0=C2=A0 (PFN_ALIGN((unsigne= d long)&_end) - SZ_2G) > > > >>> -#define MODULES_END=C2=A0=C2=A0=C2=A0 (PFN_ALIGN((unsigned long)= &_start)) > > > >>> +#define MODULES_END=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGION_END) > > > >>> =C2=A0#endif > > > >>> > > > >>> > > > >>> =20 > > > >>>> > > > >>>> Again, good catch, thanks, > > > >>>> > > > >>>> Alex > > > >>>> =20 > > > >>>> > > Reported-by: Andreas Schwab =20 > > > >>>> > Signed-off-by: Jisheng Zhang > > > >>>> > --- > > > >>>> >=C2=A0=C2=A0 arch/riscv/include/asm/pgtable.h | 5 ++--- > > > >>>> >=C2=A0=C2=A0 1 file changed, 2 insertions(+), 3 deletions(-) = =20 > > > >>>> > > diff --git a/arch/riscv/include/asm/pgtable.h =20 > > > >>>> b/arch/riscv/include/asm/pgtable.h =20 > > > >>>> > index 9469f464e71a..380cd3a7e548 100644 > > > >>>> > --- a/arch/riscv/include/asm/pgtable.h > > > >>>> > +++ b/arch/riscv/include/asm/pgtable.h > > > >>>> > @@ -30,9 +30,8 @@ =20 > > > >>>> > >=C2=A0=C2=A0 #define BPF_JIT_REGION_SIZE=C2=A0=C2=A0=C2=A0 (S= Z_128M) =20 > > > >>>> >=C2=A0=C2=A0 #ifdef CONFIG_64BIT > > > >>>> > -/* KASLR should leave at least 128MB for BPF after the kernel= */ > > > >>>> > -#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 PFN_ALIGN((uns= igned long)&_end) > > > >>>> > -#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGION_= START + =20 > > > >>>> BPF_JIT_REGION_SIZE) =20 > > > >>>> > +#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGIO= N_END - =20 > > > >>>> BPF_JIT_REGION_SIZE) =20 > > > >>>> > +#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (MODULES_END) > > > >>>> >=C2=A0=C2=A0 #else > > > >>>> >=C2=A0=C2=A0 #define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (PA= GE_OFFSET - BPF_JIT_REGION_SIZE) > > > >>>> >=C2=A0=C2=A0 #define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (VMAL= LOC_END) > > > >>>> > =20 > > > >> > > > >> This, when applied onto fixes, is breaking early boot on KASAN=20 > > > >> configurations for me. =20 > >=20 > > I can reproduce this issue. > > =20 > > > >=20 > > > > Not surprising, I took a shortcut when initializing KASAN for modul= es,=20 > > > > kernel and BPF: > > > >=20 > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 kasan_populate(kasan_me= m_to_shadow((const void *)MODULES_VADDR), > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 kasan_me= m_to_shadow((const void=20 > > > > *)BPF_JIT_REGION_END)); > > > >=20 > > > > The kernel is then not covered, I'm taking a look at how to fix tha= t=20 > > > > properly. > > > > =20 > > >=20 > > > The following based on "riscv: Introduce structure that group all=20 > > > variables regarding kernel mapping" fixes the issue: > > >=20 > > > diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c > > > index 9daacae93e33..2a45ea909e7f 100644 > > > --- a/arch/riscv/mm/kasan_init.c > > > +++ b/arch/riscv/mm/kasan_init.c > > > @@ -199,9 +199,12 @@ void __init kasan_init(void) > > > kasan_populate(kasan_mem_to_shadow(start),=20 > > > kasan_mem_to_shadow(end)); > > > } > > >=20 > > > - /* Populate kernel, BPF, modules mapping */ > > > + /* Populate BPF and modules mapping: modules mapping encompas= ses=20 > > > BPF mapping */ > > > kasan_populate(kasan_mem_to_shadow((const void *)MODULES_VAD= DR), > > > - kasan_mem_to_shadow((const void=20 > > > *)BPF_JIT_REGION_END)); > > > + kasan_mem_to_shadow((const void *)MODULES_END)= ); > > > + /* Populate kernel mapping */ > > > + kasan_populate(kasan_mem_to_shadow((const void=20 > > > *)kernel_map.virt_addr), > > > + kasan_mem_to_shadow((const void=20 > > > *)kernel_map.virt_addr + kernel_map.size)); > > > =20 > > If this patch works, maybe we can still use one kasan_populate() to cov= er > > kernel, bpf, and module: > >=20 > > kasan_populate(kasan_mem_to_shadow((const void *)MODULES_VADDR), > > - kasan_mem_to_shadow((const void *)BPF_JIT_REGION= _END)); > > + kasan_mem_to_shadow((const void *)MODULES_VADDR = + SZ_2G)); > > =20 >=20 > I made a mistake. Below patch works: >=20 > kasan_populate(kasan_mem_to_shadow((const void *)MODULES_VADDR), > - kasan_mem_to_shadow((const void *)BPF_JIT_REGION_E= ND)); > + kasan_mem_to_shadow((const void *)(MODULES_VADDR += SZ_2G))); This isn't the key. I knew the reason now. kasan_init() has local vars named as _start and _end, then MODULES_VADDR is defined as: #define MODULES_VADDR (PFN_ALIGN((unsigned long)&_end) - SZ_2G) So MODULES_VADDR isn't what we expected. To fix it, we must rename the local vars >=20 > > However, both can't solve the early boot hang issue. I'm not sure what'= s missing. > >=20 > > I applied your patch on rc6 + solution below "replace kernel_map.virt_a= ddr with kernel_virt_addr and > > kernel_map.size with load_sz" > >=20 > >=20 > > Thanks > > =20 > > >=20 > > > Without the mentioned patch, replace kernel_map.virt_addr with=20 > > > kernel_virt_addr and kernel_map.size with load_sz. Note that load_sz = was=20 > > > re-exposed in v6 of the patchset "Map the kernel with correct=20 > > > permissions the first time". > > > =20 > >=20 > >=20 > > _______________________________________________ > > linux-riscv mailing list > > linux-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv =20 >=20 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.9 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 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 1B4F2C2B9F4 for ; Thu, 17 Jun 2021 18:17:47 +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 99B98613D8 for ; Thu, 17 Jun 2021 18:17:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 99B98613D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=mail.ustc.edu.cn 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=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: 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=QuZlhAdEsQIuRBTcZRNNU0eF6NG1HYY0oivFAFqbbbY=; b=OBuA9mGPJZPrX9 NvU+nT8XBVcBHJliMTL8CTD0wAoQVdEqB1V4w8etrG/uTTG/udneDtbT9LWyZx29a0Fy8MVOT0rkw OyfoScJSEre9+yuO0IaRQ4MQ9yE+ovbPjVVpUHK1V88Re2wqQ+MguhNfhvG85VzKHuOay34E9mUY/ 04mzfPtXN0RfruEt1/4puFaBciT23lck98UVI0CVuyyUpT3BDNewmwe8s4MkUc7Nxes/54ym9DMT0 eoB3rsa4tBGrcPp8EXADBULfC8CWf0pXmStgUWumqk7JqmyCzyOd1LXQU/POMfuFj+y7vJP6sdCg9 wlKXYmljLNh+HqCvW8cA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ltwa2-00BLdt-28; Thu, 17 Jun 2021 18:17:30 +0000 Received: from email6.ustc.edu.cn ([2001:da8:d800::8] helo=ustc.edu.cn) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ltwZp-00BLbR-Oj for linux-riscv@lists.infradead.org; Thu, 17 Jun 2021 18:17:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ustc.edu.cn; s=dkim; h=Received:Date:From:To:Cc:Subject: Message-ID:In-Reply-To:References:MIME-Version:Content-Type: Content-Transfer-Encoding; bh=Z7XdKee+EQziVNAT70nU6H2kFcBGtBk/Ik TlYkN+608=; b=pwmNuilLchHvhnQ95iPishmHe7zrrSfvVpv5QIBqC/kMMA7ejI MGIoi0ObTjFjSUurH24FH0ZRmETTzQMPgFnJb2lYn7ZwCczhQef+1Gm3rWK9zAlX 0z7q5XNeqPJbOA1+s8/aWauGQepEvQ/tCjgsH4qUtTLhlKgFYa8ak7Kas= Received: from xhacker (unknown [101.86.20.15]) by newmailweb.ustc.edu.cn (Coremail) with SMTP id LkAmygAnKYFskctgSkT3AA--.4906S2; Fri, 18 Jun 2021 02:16:13 +0800 (CST) Date: Fri, 18 Jun 2021 02:10:38 +0800 From: Jisheng Zhang To: Alex Ghiti Cc: Palmer Dabbelt , schwab@linux-m68k.org, Paul Walmsley , aou@eecs.berkeley.edu, ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, bjorn@kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, luke.r.nels@gmail.com, xi.wang@gmail.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH] riscv: Ensure BPF_JIT_REGION_START aligned with PMD size Message-ID: <20210618021038.52c2f558@xhacker> In-Reply-To: <20210618014648.1857a62a@xhacker> References: <50ebc99c-f0a2-b4ea-fc9b-cd93a8324697@ghiti.fr> <20210618012731.345657bf@xhacker> <20210618014648.1857a62a@xhacker> MIME-Version: 1.0 X-CM-TRANSID: LkAmygAnKYFskctgSkT3AA--.4906S2 X-Coremail-Antispam: 1UD129KBjvJXoW3Zw1ftF1xGr13XF1kXF48tFb_yoWkXF1kpr 1DJF43GrW8Jr18X342qry5GryUtw1UA3ZFqr1DJa4rJF9rKF1jqr1UXFy7urnFqF4xJ3W2 yr4DJrsIv345Aw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvEb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26ryj6rWUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwV C2z280aVCY1x0267AKxVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVAC Y4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJV W8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lFIxGxcIEc7CjxVA2Y2ka0xkI wI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1l4IxYO2xFxVAFwI0_Jr v_JF1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY 17CE14v26r4a6rW5MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcV C0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWrJr0_WFyUJwCI 42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWI evJa73UjIFyTuYvjxUg0D7DUUUU X-CM-SenderInfo: xmv2xttqjtqzxdloh3xvwfhvlgxou0/ X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210617_111718_678347_37FF9195 X-CRM114-Status: GOOD ( 39.38 ) 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 T24gRnJpLCAxOCBKdW4gMjAyMSAwMTo0Njo0OCArMDgwMApKaXNoZW5nIFpoYW5nIDxqc3poYW5n M0BtYWlsLnVzdGMuZWR1LmNuPiB3cm90ZToKCj4gT24gRnJpLCAxOCBKdW4gMjAyMSAwMToyNzoz MSArMDgwMAo+IEppc2hlbmcgWmhhbmcgPGpzemhhbmczQG1haWwudXN0Yy5lZHUuY24+IHdyb3Rl Ogo+IAo+ID4gT24gVGh1LCAxNyBKdW4gMjAyMSAxNjoxODo1NCArMDIwMAo+ID4gQWxleCBHaGl0 aSA8YWxleEBnaGl0aS5mcj4gd3JvdGU6Cj4gPiAgIAo+ID4gPiBMZSAxNy8wNi8yMDIxIMOgIDEw OjA5LCBBbGV4IEdoaXRpIGEgw6ljcml0wqA6ICAgIAo+ID4gPiA+IExlIDE3LzA2LzIwMjEgw6Ag MDk6MzAsIFBhbG1lciBEYWJiZWx0IGEgw6ljcml0wqA6ICAgICAgCj4gPiA+ID4+IE9uIFR1ZSwg MTUgSnVuIDIwMjEgMTc6MDM6MjggUERUICgtMDcwMCksIGpzemhhbmczQG1haWwudXN0Yy5lZHUu Y24gCj4gPiA+ID4+IHdyb3RlOiAgICAgIAo+ID4gPiA+Pj4gT24gVHVlLCAxNSBKdW4gMjAyMSAy MDo1NDoxOSArMDIwMAo+ID4gPiA+Pj4gQWxleCBHaGl0aSA8YWxleEBnaGl0aS5mcj4gd3JvdGU6 Cj4gPiA+ID4+PiAgICAgIAo+ID4gPiA+Pj4+IEhpIEppc2hlbmcsICAgICAgCj4gPiA+ID4+Pgo+ ID4gPiA+Pj4gSGkgQWxleCwKPiA+ID4gPj4+ICAgICAgCj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBM ZSAxNC8wNi8yMDIxIMOgIDE4OjQ5LCBKaXNoZW5nIFpoYW5nIGEgw6ljcml0wqA6ICAgICAgCj4g PiA+ID4+Pj4gPiBGcm9tOiBKaXNoZW5nIFpoYW5nIDxqc3poYW5nQGtlcm5lbC5vcmc+ICAgICAg Cj4gPiA+ID4+Pj4gPiA+IEFuZHJlYXMgcmVwb3J0ZWQgY29tbWl0IGZjODUwNDc2NWVjNSAoInJp c2N2OiBicGY6IEF2b2lkICAgICAgIAo+ID4gPiA+Pj4+IGJyZWFraW5nIFdeWCIpICAgICAgCj4g PiA+ID4+Pj4gPiBicmVha3MgYm9vdGluZyB3aXRoIG9uZSBraW5kIG9mIGNvbmZpZyBmaWxlLCBJ IHJlcHJvZHVjZWQgYSBrZXJuZWwgICAgICAgCj4gPiA+ID4+Pj4gcGFuaWMgICAgICAKPiA+ID4g Pj4+PiA+IHdpdGggdGhlIGNvbmZpZzogICAgICAKPiA+ID4gPj4+PiA+ID4gW8KgwqDCoCAwLjEz ODU1M10gVW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgdmlydHVhbCAg ICAgICAKPiA+ID4gPj4+PiBhZGRyZXNzIGZmZmZmZmZmODEyMDEyMjAgICAgICAKPiA+ID4gPj4+ PiA+IFvCoMKgwqAgMC4xMzkxNTldIE9vcHMgWyMxXQo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjEz OTMwM10gTW9kdWxlcyBsaW5rZWQgaW46Cj4gPiA+ID4+Pj4gPiBbwqDCoMKgIDAuMTM5NjAxXSBD UFU6IDAgUElEOiAxIENvbW06IHN3YXBwZXIvMCBOb3QgdGFpbnRlZCAgICAgICAKPiA+ID4gPj4+ PiA1LjEzLjAtcmM1LWRlZmF1bHQrICMxICAgICAgCj4gPiA+ID4+Pj4gPiBbwqDCoMKgIDAuMTM5 OTM0XSBIYXJkd2FyZSBuYW1lOiByaXNjdi12aXJ0aW8scWVtdSAoRFQpCj4gPiA+ID4+Pj4gPiBb wqDCoMKgIDAuMTQwMTkzXSBlcGMgOiBfX21lbXNldCsweGM0LzB4ZmMKPiA+ID4gPj4+PiA+IFvC oMKgwqAgMC4xNDA0MTZdwqAgcmEgOiBza2JfZmxvd19kaXNzZWN0b3JfaW5pdCsweDFlLzB4ODIK PiA+ID4gPj4+PiA+IFvCoMKgwqAgMC4xNDA2MDldIGVwYyA6IGZmZmZmZmZmODAyOTgwNmMgcmEg OiBmZmZmZmZmZjgwMzNiZTc4IHNwIDogICAgICAgCj4gPiA+ID4+Pj4gZmZmZmZmZTAwMTY0N2Rh MCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MDg3OF3CoCBncCA6IGZmZmZmZmZmODEx MzRiMDggdHAgOiBmZmZmZmZlMDAxNjU0MzgwIHQwIDogICAgICAgCj4gPiA+ID4+Pj4gZmZmZmZm ZmY4MTIwMTE1OCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MTE1Nl3CoCB0MSA6IDAw MDAwMDAwMDAwMDAwMDIgdDIgOiAwMDAwMDAwMDAwMDAwMTU0IHMwIDogICAgICAgCj4gPiA+ID4+ Pj4gZmZmZmZmZTAwMTY0N2RkMCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MTQyNF3C oCBzMSA6IGZmZmZmZmZmODBhNDMyNTAgYTAgOiBmZmZmZmZmZjgxMjAxMjIwIGExIDogICAgICAg Cj4gPiA+ID4+Pj4gMDAwMDAwMDAwMDAwMDAwMCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAw LjE0MTY1NF3CoCBhMiA6IDAwMDAwMDAwMDAwMDAwM2MgYTMgOiBmZmZmZmZmZjgxMjAxMjU4IGE0 IDogICAgICAgCj4gPiA+ID4+Pj4gMDAwMDAwMDAwMDAwMDA2NCAgICAgIAo+ID4gPiA+Pj4+ID4g W8KgwqDCoCAwLjE0MTg5M13CoCBhNSA6IGZmZmZmZmZmODAyOTgwNmMgYTYgOiAwMDAwMDAwMDAw MDAwMDQwIGE3IDogICAgICAgCj4gPiA+ID4+Pj4gZmZmZmZmZmZmZmZmZmZmZiAgICAgIAo+ID4g PiA+Pj4+ID4gW8KgwqDCoCAwLjE0MjEyNl3CoCBzMiA6IGZmZmZmZmZmODEyMDEyMjAgczMgOiAw MDAwMDAwMDAwMDAwMDA5IHM0IDogICAgICAgCj4gPiA+ID4+Pj4gZmZmZmZmZmY4MTEzNTA4OCAg ICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MjM1M13CoCBzNSA6IGZmZmZmZmZmODExMzUw MzggczYgOiBmZmZmZmZmZjgwODBjZTgwIHM3IDogICAgICAgCj4gPiA+ID4+Pj4gZmZmZmZmZmY4 MDgwMDQzOCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MjU4NF3CoCBzOCA6IGZmZmZm ZmZmODBiYzY1NzggczkgOiAwMDAwMDAwMDAwMDAwMDA4IHMxMDogICAgICAgCj4gPiA+ID4+Pj4g ZmZmZmZmZmY4MDYwMDBhYyAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MjgxMF3CoCBz MTE6IDAwMDAwMDAwMDAwMDAwMDAgdDMgOiBmZmZmZmZmZmZmZmZmZmZjIHQ0IDogICAgICAgCj4g PiA+ID4+Pj4gMDAwMDAwMDAwMDAwMDAwMCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0 MzA0Ml3CoCB0NSA6IDAwMDAwMDAwMDAwMDAxNTUgdDYgOiAwMDAwMDAwMDAwMDAwM2ZmCj4gPiA+ ID4+Pj4gPiBbwqDCoMKgIDAuMTQzMjIwXSBzdGF0dXM6IDAwMDAwMDAwMDAwMDAxMjAgYmFkYWRk cjogZmZmZmZmZmY4MTIwMTIyMCAgICAgICAKPiA+ID4gPj4+PiBjYXVzZTogMDAwMDAwMDAwMDAw MDAwZiAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MzU2MF0gWzxmZmZmZmZmZjgwMjk4 MDZjPl0gX19tZW1zZXQrMHhjNC8weGZjCj4gPiA+ID4+Pj4gPiBbwqDCoMKgIDAuMTQzODU5XSBb PGZmZmZmZmZmODA2MWU5ODQ+XSAgICAgICAKPiA+ID4gPj4+PiBpbml0X2RlZmF1bHRfZmxvd19k aXNzZWN0b3JzKzB4MjIvMHg2MCAgICAgIAo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0NDA5Ml0g WzxmZmZmZmZmZjgwMDAxMGZjPl0gZG9fb25lX2luaXRjYWxsKzB4M2UvMHgxNjgKPiA+ID4gPj4+ PiA+IFvCoMKgwqAgMC4xNDQyNzhdIFs8ZmZmZmZmZmY4MDYwMGRmMD5dIGtlcm5lbF9pbml0X2Zy ZWVhYmxlKzB4MWM4LzB4MjI0Cj4gPiA+ID4+Pj4gPiBbwqDCoMKgIDAuMTQ0NDc5XSBbPGZmZmZm ZmZmODA0ODY4YTg+XSBrZXJuZWxfaW5pdCsweDEyLzB4MTEwCj4gPiA+ID4+Pj4gPiBbwqDCoMKg IDAuMTQ0NjU4XSBbPGZmZmZmZmZmODAwMDIyZGU+XSByZXRfZnJvbV9leGNlcHRpb24rMHgwLzB4 Ywo+ID4gPiA+Pj4+ID4gW8KgwqDCoCAwLjE0NTEyNF0gLS0tWyBlbmQgdHJhY2UgZjFlOTY0M2Rh YTQ2ZDU5MSBdLS0tICAgICAgCj4gPiA+ID4+Pj4gPiA+IEFmdGVyIHNvbWUgaW52ZXN0aWdhdGlv biwgSSB0aGluayBJIGZvdW5kIHRoZSByb290IGNhdXNlOiBjb21taXQgICAgICAKPiA+ID4gPj4+ PiA+IDJiZmM2Y2Q4MWJkICgibW92ZSBrZXJuZWwgbWFwcGluZyBvdXRzaWRlIG9mIGxpbmVhciBt YXBwaW5nIikgbW92ZXMKPiA+ID4gPj4+PiA+IEJQRiBKSVQgcmVnaW9uIGFmdGVyIHRoZSBrZXJu ZWw6ICAgICAgCj4gPiA+ID4+Pj4gPiA+IFRoZSAmX2VuZCBpcyB1bmxpa2VseSBhbGlnbmVkIHdp dGggUE1EIHNpemUsIHNvIHRoZSBmcm9udCBicGYgaml0ICAgICAgCj4gPiA+ID4+Pj4gPiByZWdp b24gc2l0cyB3aXRoIHBhcnQgb2Yga2VybmVsIC5kYXRhIHNlY3Rpb24gaW4gb25lIFBNRCBzaXpl ICAgICAgIAo+ID4gPiA+Pj4+IG1hcHBpbmcuICAgICAgCj4gPiA+ID4+Pj4gPiBCdXQga2VybmVs IGlzIG1hcHBlZCBpbiBQTUQgU0laRSwgd2hlbiBicGZfaml0X2JpbmFyeV9sb2NrX3JvKCkgaXMK PiA+ID4gPj4+PiA+IGNhbGxlZCB0byBtYWtlIHRoZSBmaXJzdCBicGYgaml0IHByb2cgUk9YLCB3 ZSB3aWxsIG1ha2UgcGFydCBvZiAgICAgICAKPiA+ID4gPj4+PiBrZXJuZWwgICAgICAKPiA+ID4g Pj4+PiA+IC5kYXRhIHNlY3Rpb24gUk8gdG9vLCBzbyB3aGVuIHdlIHdyaXRlIHRvLCBmb3IgZXhh bXBsZSBtZW1zZXQgdGhlCj4gPiA+ID4+Pj4gPiAuZGF0YSBzZWN0aW9uLCBNTVUgd2lsbCB0cmln Z2VyIGEgc3RvcmUgcGFnZSBmYXVsdC4gICAgICAKPiA+ID4gPj4+PiBHb29kIGNhdGNoLCB3ZSBt YWtlIHN1cmUgbm8gcGh5c2ljYWwgYWxsb2NhdGlvbiBoYXBwZW5zIGJldHdlZW4gX2VuZCAKPiA+ ID4gPj4+PiBhbmQgdGhlIG5leHQgUE1EIGFsaWduZWQgYWRkcmVzcywgYnV0IEkgbWlzc2VkIHRo aXMgb25lLgo+ID4gPiA+Pj4+ICAgICAgCj4gPiA+ID4+Pj4gPiA+IFRvIGZpeCB0aGUgaXNzdWUs IHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBCUEYgSklUIHJlZ2lvbiBpcyBQTUQgc2l6ZSAgICAgIAo+ ID4gPiA+Pj4+ID4gYWxpZ25lZC4gVGhpcyBwYXRjaCBhY2NoaWV2ZSB0aGlzIGdvYWwgYnkgcmVz dG9yaW5nIHRoZSBCUEYgSklUICAgICAgIAo+ID4gPiA+Pj4+IHJlZ2lvbiAgICAgIAo+ID4gPiA+ Pj4+ID4gdG8gb3JpZ2luYWwgcG9zaXRpb24sIEkuRSB0aGUgMTI4TUIgYmVmb3JlIGtlcm5lbCAu dGV4dCBzZWN0aW9uLiAgICAgIAo+ID4gPiA+Pj4+IEJ1dCBJIGRpc2FncmVlIHdpdGggeW91ciBz b2x1dGlvbjogSSBtYWRlIHN1cmUgbW9kdWxlcyBhbmQgQlBGIAo+ID4gPiA+Pj4+IHByb2dyYW1z IGdldCB0aGVpciBvd24gdmlydHVhbCByZWdpb25zIHRvIGF2b2lkIHdvcnN0IGNhc2Ugc2NlbmFy aW8gCj4gPiA+ID4+Pj4gd2hlcmUgb25lIGNvdWxkIGFsbG9jYXRlIGFsbCB0aGUgc3BhY2UgYW5k IGxlYXZlIG5vdGhpbmcgdG8gdGhlIAo+ID4gPiA+Pj4+IG90aGVyICh3ZSBhcmUgbGltaXRlZCB0 byArLSAyR0Igb2Zmc2V0KS4gV2h5IGRvbid0IGp1c3QgYWxpZ24gCj4gPiA+ID4+Pj4gQlBGX0pJ VF9SRUdJT05fU1RBUlQgdG8gdGhlIG5leHQgUE1EIGFsaWduZWQgYWRkcmVzcz8gICAgICAKPiA+ ID4gPj4+Cj4gPiA+ID4+PiBPcmlnaW5hbGx5LCBJIHBsYW5lZCB0byBmaXggdGhlIGlzc3VlIGJ5 IGFsaWduaW5nIAo+ID4gPiA+Pj4gQlBGX0pJVF9SRUdJT05fU1RBUlQsIGJ1dAo+ID4gPiA+Pj4g SUlSQywgQlBGIGV4cGVydHMgYXJlIGFkZGluZyAob3IgaGF2ZSBhZGRlZCkgIkNhbGxpbmcga2Vy bmVsIAo+ID4gPiA+Pj4gZnVuY3Rpb25zIGZyb20gQlBGIgo+ID4gPiA+Pj4gZmVhdHVyZSwgdGhl cmUncyBhIHJpc2sgdGhhdCBCUEYgSklUIHJlZ2lvbiBpcyBiZXlvbmQgdGhlIDJHQiBvZiAKPiA+ ID4gPj4+IG1vZHVsZSByZWdpb246Cj4gPiA+ID4+Pgo+ID4gPiA+Pj4gLS0tLS0tCj4gPiA+ID4+ PiBtb2R1bGUKPiA+ID4gPj4+IC0tLS0tLQo+ID4gPiA+Pj4ga2VybmVsCj4gPiA+ID4+PiAtLS0t LS0KPiA+ID4gPj4+IEJQRl9KSVQKPiA+ID4gPj4+Cj4gPiA+ID4+PiBTbyBJIG1hZGUgdGhpcyBw YXRjaCBmaW5hbGx5LiBJbiB0aGlzIHBhdGNoLCB3ZSBsZXQgQlBGIEpJVCByZWdpb24gc2l0Cj4g PiA+ID4+PiBiZXR3ZWVuIG1vZHVsZSBhbmQga2VybmVsLgo+ID4gPiA+Pj4KPiA+ID4gPj4+IFRv IGFkZHJlc3MgIm1ha2Ugc3VyZSBtb2R1bGVzIGFuZCBCUEYgcHJvZ3JhbXMgZ2V0IHRoZWlyIG93 biB2aXJ0dWFsIAo+ID4gPiA+Pj4gcmVnaW9ucyIsCj4gPiA+ID4+PiB3aGF0IGFib3V0IHNvbWV0 aGluZyBhcyBiZWxvdyAoYXBwbGllZCBhZ2FpbnN0IHRoaXMgcGF0Y2gpPwo+ID4gPiA+Pj4KPiA+ ID4gPj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaCAKPiA+ ID4gPj4+IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+ID4gPj4+IGluZGV4 IDM4MGNkM2E3ZTU0OC4uZGExMTU4ZjEwYjA5IDEwMDY0NAo+ID4gPiA+Pj4gLS0tIGEvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+ID4gPj4+ICsrKyBiL2FyY2gvcmlzY3YvaW5j bHVkZS9hc20vcGd0YWJsZS5oCj4gPiA+ID4+PiBAQCAtMzEsNyArMzEsNyBAQAo+ID4gPiA+Pj4g wqAjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX1NJWkXCoMKgwqAgKFNaXzEyOE0pCj4gPiA+ID4+PiDC oCNpZmRlZiBDT05GSUdfNjRCSVQKPiA+ID4gPj4+IMKgI2RlZmluZSBCUEZfSklUX1JFR0lPTl9T VEFSVMKgwqDCoCAoQlBGX0pJVF9SRUdJT05fRU5EIC0gCj4gPiA+ID4+PiBCUEZfSklUX1JFR0lP Tl9TSVpFKQo+ID4gPiA+Pj4gLSNkZWZpbmUgQlBGX0pJVF9SRUdJT05fRU5EwqDCoMKgIChNT0RV TEVTX0VORCkKPiA+ID4gPj4+ICsjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX0VORMKgwqDCoCAoUEZO X0FMSUdOKCh1bnNpZ25lZCBsb25nKSZfc3RhcnQpKQo+ID4gPiA+Pj4gwqAjZWxzZQo+ID4gPiA+ Pj4gwqAjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX1NUQVJUwqDCoMKgIChQQUdFX09GRlNFVCAtIEJQ Rl9KSVRfUkVHSU9OX1NJWkUpCj4gPiA+ID4+PiDCoCNkZWZpbmUgQlBGX0pJVF9SRUdJT05fRU5E wqDCoMKgIChWTUFMTE9DX0VORCkKPiA+ID4gPj4+IEBAIC00MCw3ICs0MCw3IEBACj4gPiA+ID4+ PiDCoC8qIE1vZHVsZXMgYWx3YXlzIGxpdmUgYmVmb3JlIHRoZSBrZXJuZWwgKi8KPiA+ID4gPj4+ IMKgI2lmZGVmIENPTkZJR182NEJJVAo+ID4gPiA+Pj4gwqAjZGVmaW5lIE1PRFVMRVNfVkFERFLC oMKgwqAgKFBGTl9BTElHTigodW5zaWduZWQgbG9uZykmX2VuZCkgLSBTWl8yRykKPiA+ID4gPj4+ IC0jZGVmaW5lIE1PRFVMRVNfRU5EwqDCoMKgIChQRk5fQUxJR04oKHVuc2lnbmVkIGxvbmcpJl9z dGFydCkpCj4gPiA+ID4+PiArI2RlZmluZSBNT0RVTEVTX0VORMKgwqDCoCAoQlBGX0pJVF9SRUdJ T05fRU5EKQo+ID4gPiA+Pj4gwqAjZW5kaWYKPiA+ID4gPj4+Cj4gPiA+ID4+Pgo+ID4gPiA+Pj4g ICAgICAKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+IEFnYWluLCBnb29kIGNhdGNoLCB0aGFua3MsCj4g PiA+ID4+Pj4KPiA+ID4gPj4+PiBBbGV4Cj4gPiA+ID4+Pj4gICAgICAKPiA+ID4gPj4+PiA+ID4g UmVwb3J0ZWQtYnk6IEFuZHJlYXMgU2Nod2FiIDxzY2h3YWJAbGludXgtbTY4ay5vcmc+ICAgICAg Cj4gPiA+ID4+Pj4gPiBTaWduZWQtb2ZmLWJ5OiBKaXNoZW5nIFpoYW5nIDxqc3poYW5nQGtlcm5l bC5vcmc+Cj4gPiA+ID4+Pj4gPiAtLS0KPiA+ID4gPj4+PiA+wqDCoCBhcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3BndGFibGUuaCB8IDUgKystLS0KPiA+ID4gPj4+PiA+wqDCoCAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKSAgICAgIAo+ID4gPiA+Pj4+ID4gPiBk aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggICAgICAgCj4gPiA+ ID4+Pj4gYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaCAgICAgIAo+ID4gPiA+Pj4+ ID4gaW5kZXggOTQ2OWY0NjRlNzFhLi4zODBjZDNhN2U1NDggMTAwNjQ0Cj4gPiA+ID4+Pj4gPiAt LS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+ID4gPiA+Pj4+ID4gKysrIGIv YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+ID4gPj4+PiA+IEBAIC0zMCw5ICsz MCw4IEBAICAgICAgCj4gPiA+ID4+Pj4gPiA+wqDCoCAjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX1NJ WkXCoMKgwqAgKFNaXzEyOE0pICAgICAgCj4gPiA+ID4+Pj4gPsKgwqAgI2lmZGVmIENPTkZJR182 NEJJVAo+ID4gPiA+Pj4+ID4gLS8qIEtBU0xSIHNob3VsZCBsZWF2ZSBhdCBsZWFzdCAxMjhNQiBm b3IgQlBGIGFmdGVyIHRoZSBrZXJuZWwgKi8KPiA+ID4gPj4+PiA+IC0jZGVmaW5lIEJQRl9KSVRf UkVHSU9OX1NUQVJUwqDCoMKgIFBGTl9BTElHTigodW5zaWduZWQgbG9uZykmX2VuZCkKPiA+ID4g Pj4+PiA+IC0jZGVmaW5lIEJQRl9KSVRfUkVHSU9OX0VORMKgwqDCoCAoQlBGX0pJVF9SRUdJT05f U1RBUlQgKyAgICAgICAKPiA+ID4gPj4+PiBCUEZfSklUX1JFR0lPTl9TSVpFKSAgICAgIAo+ID4g PiA+Pj4+ID4gKyNkZWZpbmUgQlBGX0pJVF9SRUdJT05fU1RBUlTCoMKgwqAgKEJQRl9KSVRfUkVH SU9OX0VORCAtICAgICAgIAo+ID4gPiA+Pj4+IEJQRl9KSVRfUkVHSU9OX1NJWkUpICAgICAgCj4g PiA+ID4+Pj4gPiArI2RlZmluZSBCUEZfSklUX1JFR0lPTl9FTkTCoMKgwqAgKE1PRFVMRVNfRU5E KQo+ID4gPiA+Pj4+ID7CoMKgICNlbHNlCj4gPiA+ID4+Pj4gPsKgwqAgI2RlZmluZSBCUEZfSklU X1JFR0lPTl9TVEFSVMKgwqDCoCAoUEFHRV9PRkZTRVQgLSBCUEZfSklUX1JFR0lPTl9TSVpFKQo+ ID4gPiA+Pj4+ID7CoMKgICNkZWZpbmUgQlBGX0pJVF9SRUdJT05fRU5EwqDCoMKgIChWTUFMTE9D X0VORCkKPiA+ID4gPj4+PiA+ICAgICAgIAo+ID4gPiA+Pgo+ID4gPiA+PiBUaGlzLCB3aGVuIGFw cGxpZWQgb250byBmaXhlcywgaXMgYnJlYWtpbmcgZWFybHkgYm9vdCBvbiBLQVNBTiAKPiA+ID4g Pj4gY29uZmlndXJhdGlvbnMgZm9yIG1lLiAgICAgIAo+ID4gCj4gPiBJIGNhbiByZXByb2R1Y2Ug dGhpcyBpc3N1ZS4KPiA+ICAgCj4gPiA+ID4gCj4gPiA+ID4gTm90IHN1cnByaXNpbmcsIEkgdG9v ayBhIHNob3J0Y3V0IHdoZW4gaW5pdGlhbGl6aW5nIEtBU0FOIGZvciBtb2R1bGVzLCAKPiA+ID4g PiBrZXJuZWwgYW5kIEJQRjoKPiA+ID4gPiAKPiA+ID4gPiAgwqDCoMKgwqDCoMKgwqAga2FzYW5f cG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdygoY29uc3Qgdm9pZCAqKU1PRFVMRVNfVkFERFIp LAo+ID4gPiA+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBr YXNhbl9tZW1fdG9fc2hhZG93KChjb25zdCB2b2lkIAo+ID4gPiA+ICopQlBGX0pJVF9SRUdJT05f RU5EKSk7Cj4gPiA+ID4gCj4gPiA+ID4gVGhlIGtlcm5lbCBpcyB0aGVuIG5vdCBjb3ZlcmVkLCBJ J20gdGFraW5nIGEgbG9vayBhdCBob3cgdG8gZml4IHRoYXQgCj4gPiA+ID4gcHJvcGVybHkuCj4g PiA+ID4gICAgICAKPiA+ID4gCj4gPiA+IFRoZSBmb2xsb3dpbmcgYmFzZWQgb24gInJpc2N2OiBJ bnRyb2R1Y2Ugc3RydWN0dXJlIHRoYXQgZ3JvdXAgYWxsIAo+ID4gPiB2YXJpYWJsZXMgcmVnYXJk aW5nIGtlcm5lbCBtYXBwaW5nIiBmaXhlcyB0aGUgaXNzdWU6Cj4gPiA+IAo+ID4gPiBkaWZmIC0t Z2l0IGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2lu aXQuYwo+ID4gPiBpbmRleCA5ZGFhY2FlOTNlMzMuLjJhNDVlYTkwOWU3ZiAxMDA2NDQKPiA+ID4g LS0tIGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmMKPiA+ID4gKysrIGIvYXJjaC9yaXNjdi9t bS9rYXNhbl9pbml0LmMKPiA+ID4gQEAgLTE5OSw5ICsxOTksMTIgQEAgdm9pZCBfX2luaXQga2Fz YW5faW5pdCh2b2lkKQo+ID4gPiAgICAgICAgICAgICAgICAgIGthc2FuX3BvcHVsYXRlKGthc2Fu X21lbV90b19zaGFkb3coc3RhcnQpLCAKPiA+ID4ga2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpKTsK PiA+ID4gICAgICAgICAgfQo+ID4gPiAKPiA+ID4gLSAgICAgICAvKiBQb3B1bGF0ZSBrZXJuZWws IEJQRiwgbW9kdWxlcyBtYXBwaW5nICovCj4gPiA+ICsgICAgICAgLyogUG9wdWxhdGUgQlBGIGFu ZCBtb2R1bGVzIG1hcHBpbmc6IG1vZHVsZXMgbWFwcGluZyBlbmNvbXBhc3NlcyAKPiA+ID4gQlBG IG1hcHBpbmcgKi8KPiA+ID4gICAgICAgICAga2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3No YWRvdygoY29uc3Qgdm9pZCAqKU1PRFVMRVNfVkFERFIpLAo+ID4gPiAtICAgICAgICAgICAgICAg ICAgICAgIGthc2FuX21lbV90b19zaGFkb3coKGNvbnN0IHZvaWQgCj4gPiA+ICopQlBGX0pJVF9S RUdJT05fRU5EKSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAga2FzYW5fbWVtX3RvX3No YWRvdygoY29uc3Qgdm9pZCAqKU1PRFVMRVNfRU5EKSk7Cj4gPiA+ICsgICAgICAgLyogUG9wdWxh dGUga2VybmVsIG1hcHBpbmcgKi8KPiA+ID4gKyAgICAgICBrYXNhbl9wb3B1bGF0ZShrYXNhbl9t ZW1fdG9fc2hhZG93KChjb25zdCB2b2lkIAo+ID4gPiAqKWtlcm5lbF9tYXAudmlydF9hZGRyKSwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBrYXNhbl9tZW1fdG9fc2hhZG93KChjb25zdCB2 b2lkIAo+ID4gPiAqKWtlcm5lbF9tYXAudmlydF9hZGRyICsga2VybmVsX21hcC5zaXplKSk7Cj4g PiA+ICAgIAo+ID4gSWYgdGhpcyBwYXRjaCB3b3JrcywgbWF5YmUgd2UgY2FuIHN0aWxsIHVzZSBv bmUga2FzYW5fcG9wdWxhdGUoKSB0byBjb3Zlcgo+ID4ga2VybmVsLCBicGYsIGFuZCBtb2R1bGU6 Cj4gPiAKPiA+ICAgICAgICAga2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdygoY29u c3Qgdm9pZCAqKU1PRFVMRVNfVkFERFIpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICBrYXNh bl9tZW1fdG9fc2hhZG93KChjb25zdCB2b2lkICopQlBGX0pJVF9SRUdJT05fRU5EKSk7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIGthc2FuX21lbV90b19zaGFkb3coKGNvbnN0IHZvaWQgKilN T0RVTEVTX1ZBRERSICsgU1pfMkcpKTsKPiA+ICAgCj4gCj4gSSBtYWRlIGEgbWlzdGFrZS4gQmVs b3cgcGF0Y2ggd29ya3M6Cj4gCj4gICAgICAgICBrYXNhbl9wb3B1bGF0ZShrYXNhbl9tZW1fdG9f c2hhZG93KChjb25zdCB2b2lkICopTU9EVUxFU19WQUREUiksCj4gLSAgICAgICAgICAgICAgICAg ICAgICBrYXNhbl9tZW1fdG9fc2hhZG93KChjb25zdCB2b2lkICopQlBGX0pJVF9SRUdJT05fRU5E KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICBrYXNhbl9tZW1fdG9fc2hhZG93KChjb25zdCB2 b2lkICopKE1PRFVMRVNfVkFERFIgKyBTWl8yRykpKTsKClRoaXMgaXNuJ3QgdGhlIGtleS4gSSBr bmV3IHRoZSByZWFzb24gbm93LiBrYXNhbl9pbml0KCkgaGFzIGxvY2FsIHZhcnMgbmFtZWQKYXMg X3N0YXJ0IGFuZCBfZW5kLCB0aGVuIE1PRFVMRVNfVkFERFIgaXMgZGVmaW5lZCBhczoKI2RlZmlu ZSBNT0RVTEVTX1ZBRERSICAgKFBGTl9BTElHTigodW5zaWduZWQgbG9uZykmX2VuZCkgLSBTWl8y RykKClNvIE1PRFVMRVNfVkFERFIgaXNuJ3Qgd2hhdCB3ZSBleHBlY3RlZC4gVG8gZml4IGl0LCB3 ZSBtdXN0IHJlbmFtZSB0aGUgbG9jYWwKdmFycwoKPiAKPiA+IEhvd2V2ZXIsIGJvdGggY2FuJ3Qg c29sdmUgdGhlIGVhcmx5IGJvb3QgaGFuZyBpc3N1ZS4gSSdtIG5vdCBzdXJlIHdoYXQncyBtaXNz aW5nLgo+ID4gCj4gPiBJIGFwcGxpZWQgeW91ciBwYXRjaCBvbiByYzYgKyBzb2x1dGlvbiBiZWxv dyAicmVwbGFjZSBrZXJuZWxfbWFwLnZpcnRfYWRkciB3aXRoIGtlcm5lbF92aXJ0X2FkZHIgYW5k Cj4gPiBrZXJuZWxfbWFwLnNpemUgd2l0aCBsb2FkX3N6Igo+ID4gCj4gPiAKPiA+IFRoYW5rcwo+ ID4gICAgCj4gPiA+IAo+ID4gPiBXaXRob3V0IHRoZSBtZW50aW9uZWQgcGF0Y2gsIHJlcGxhY2Ug a2VybmVsX21hcC52aXJ0X2FkZHIgd2l0aCAKPiA+ID4ga2VybmVsX3ZpcnRfYWRkciBhbmQga2Vy bmVsX21hcC5zaXplIHdpdGggbG9hZF9zei4gTm90ZSB0aGF0IGxvYWRfc3ogd2FzIAo+ID4gPiBy ZS1leHBvc2VkIGluIHY2IG9mIHRoZSBwYXRjaHNldCAiTWFwIHRoZSBrZXJuZWwgd2l0aCBjb3Jy ZWN0IAo+ID4gPiBwZXJtaXNzaW9ucyB0aGUgZmlyc3QgdGltZSIuCj4gPiA+ICAgICAKPiA+IAo+ ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ ID4gbGludXgtcmlzY3YgbWFpbGluZyBsaXN0Cj4gPiBsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRl YWQub3JnCj4gPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJpc2N2ICAKPiAKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1yaXNjdgo=