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=-23.2 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_IN_DEF_DKIM_WL 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 7C667C433DB for ; Wed, 17 Feb 2021 17:41:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4348164E4D for ; Wed, 17 Feb 2021 17:41:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234421AbhBQRks (ORCPT ); Wed, 17 Feb 2021 12:40:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234449AbhBQRfa (ORCPT ); Wed, 17 Feb 2021 12:35:30 -0500 Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 56090C061574 for ; Wed, 17 Feb 2021 09:34:44 -0800 (PST) Received: by mail-qt1-x830.google.com with SMTP id d3so10108877qtr.10 for ; Wed, 17 Feb 2021 09:34:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=MgKsBgrGyhwtzE/6qlT5wngkdOMFLt8gJJdt2mK9ZGk=; b=DiGe+QN5Uo/tmIiCKHYF9lEMom0CiBL8O13EQa8qIom9BM3iKtBmlLkHwvfJFxW6qJ FzpStLRJPny+/AEme7l+RRMjy/IVN3jsnUEQITJoD0R4D0yb5B6kCf3dMcJa/E94gUh0 /p+doTVzkX0BCfaFE6ajPveUo5EKe65mxYoZdJqtC2ryuMMWOhz9x/sZgMhOM/vVN/7Z hB4UloCfXh4Dsx4DkBFe6ZhYwwQa+8+jsKN6c+9zWbmP/p2aEpIbk4+nKrnXhw/pfO/j VaMzLU6v0URB1gy1ePmbzEL9nie60q4GpfYQw6cH1yB7J5zYIeP6PRm3gTsE8yj+BMnk XBrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=MgKsBgrGyhwtzE/6qlT5wngkdOMFLt8gJJdt2mK9ZGk=; b=KyyKIX0anK8XU36sXWebkNbFQPYaARpVP5c6bdauAuel7X/rtiesomG2hXLHd2BhW5 KiFYxzMuIIcFp3YsfldgLc78MkEHRvI80OktkJ3IU/5dUHlKJi7AVZ1s8kJMjhUmop7b yQ2r4cN1URZLJGLahjgfWAyPouh13TUx1czihti0fAu5GgTd21Bq/gxH7KgRuJ12Q7Xh mjinkzpg10f+rag6io1haxmTTli5PEhrAi89yppQXgc7GFR4XzNUHWJRQL5E1Ud6C8t2 1VRO8Zqq7gaVr9iPCAKliAfWV2/cWU5ym17ncR0VaB+iyxmd5XOQ5V4INH+jyv0pRiqr VPQg== X-Gm-Message-State: AOAM5335MSJZNn79QxEjj+PP9Qmnj2bQpPl4tIKCnkpE8V4KrzbQ44bR z64+DaL6Vj0kBLPHqSCU7XGPkFs+4YgcI/zIxRPfbw== X-Google-Smtp-Source: ABdhPJzC41zreNDsOlI8EGj6IJV4jWHImMOCeVrFkM6lq1I/rHVmwRbEiBD7mryrNHYAwIvw2IMPsO2t1JHGif4x6Kc= X-Received: by 2002:aed:3647:: with SMTP id e65mr333567qtb.43.1613583283082; Wed, 17 Feb 2021 09:34:43 -0800 (PST) MIME-Version: 1.0 References: <20210118145310.crnqnh6kax5jqicj@distanz.ch> <6e9ee3a1-0e16-b1fc-a690-f1ca8e9823a5@ghiti.fr> <24857bfc-c557-f141-8ae7-2e3da24f67f5@ghiti.fr> <957f09fb-84f4-2e0a-13ab-f7e4831ee7d0@ghiti.fr> In-Reply-To: <957f09fb-84f4-2e0a-13ab-f7e4831ee7d0@ghiti.fr> From: Dmitry Vyukov Date: Wed, 17 Feb 2021 18:34:31 +0100 Message-ID: Subject: Re: riscv+KASAN does not boot To: Alex Ghiti Cc: Albert Ou , Bjorn Topel , Palmer Dabbelt , LKML , nylon7@andestech.com, syzkaller , Andreas Schwab , Paul Walmsley , Tobias Klauser , linux-riscv Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 17, 2021 at 5:36 PM Alex Ghiti wrote: > > Le 2/16/21 =C3=A0 11:42 PM, Dmitry Vyukov a =C3=A9crit : > > On Tue, Feb 16, 2021 at 9:42 PM Alex Ghiti wrote: > >> > >> Hi Dmitry, > >> > >> Le 2/16/21 =C3=A0 6:25 AM, Dmitry Vyukov a =C3=A9crit : > >>> On Tue, Feb 16, 2021 at 12:17 PM Dmitry Vyukov w= rote: > >>>> > >>>> On Fri, Jan 29, 2021 at 9:11 AM Dmitry Vyukov w= rote: > >>>>>> I was fixing KASAN support for my sv48 patchset so I took a look a= t your > >>>>>> issue: I built a kernel on top of the branch riscv/fixes using > >>>>>> https://github.com/google/syzkaller/blob/269d24e857a757d09a898086a= 2fa6fa5d827c3e1/dashboard/config/linux/upstream-riscv64-kasan.config > >>>>>> and Buildroot 2020.11. I have the warnings regarding the use of > >>>>>> __virt_to_phys on wrong addresses (but that's normal since this fu= nction > >>>>>> is used in virt_addr_valid) but not the segfaults you describe. > >>>>> > >>>>> Hi Alex, > >>>>> > >>>>> Let me try to rebuild buildroot image. Maybe there was something wr= ong > >>>>> with my build, though, I did 'make clean' before doing. But at the > >>>>> same time it worked back in June... > >>>>> > >>>>> Re WARNINGs, they indicate kernel bugs. I am working on setting up = a > >>>>> syzbot instance on riscv. If there a WARNING during boot then the > >>>>> kernel will be marked as broken. No further testing will happen. > >>>>> Is it a mis-use of WARN_ON? If so, could anybody please remove it o= r > >>>>> replace it with pr_err. > >>>> > >>>> > >>>> Hi, > >>>> > >>>> I've localized one issue with riscv/KASAN: > >>>> KASAN breaks VDSO and that's I think the root cause of weird faults = I > >>>> saw earlier. The following patch fixes it. > >>>> Could somebody please upstream this fix? I don't know how to add/run > >>>> tests for this. > >>>> Thanks > >>>> > >>>> diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vds= o/Makefile > >>>> index 0cfd6da784f84..cf3a383c1799d 100644 > >>>> --- a/arch/riscv/kernel/vdso/Makefile > >>>> +++ b/arch/riscv/kernel/vdso/Makefile > >>>> @@ -35,6 +35,7 @@ CFLAGS_REMOVE_vgettimeofday.o =3D $(CC_FLAGS_FTRAC= E) -Os > >>>> # Disable gcov profiling for VDSO code > >>>> GCOV_PROFILE :=3D n > >>>> KCOV_INSTRUMENT :=3D n > >>>> +KASAN_SANITIZE :=3D n > >>>> > >>>> # Force dependency > >>>> $(obj)/vdso.o: $(obj)/vdso.so > >> > >> What's weird is that I don't have any issue without this patch with th= e > >> following config whereas it indeed seems required for KASAN. But when > >> looking at the segfaults you got earlier, the segfault address is 0xbb= 0 > >> and the cause is an instruction page fault: this address is the PLT ba= se > >> address in vdso.so and an instruction page fault would mean that someo= ne > >> tried to jump at this address, which is weird. At first sight, that do= es > >> not seem related to your patch above, but clearly I may be wrong. > >> > >> Tobias, did you observe the same segfaults as Dmitry ? > > > > > > I noticed that not all buildroot images use VDSO, it seems to be > > dependent on libc settings (at least I think I changed it in the > > past). > > Ok, I used uClibc but then when using glibc, I have the same segfaults, > only when KASAN is enabled. And your patch fixes the problem. I will try > to take a look later to better understand the problem. > > > I also booted an image completely successfully including dhcpd/sshd > > start, but then my executable crashed in clock_gettime. The executable > > was build on linux/amd64 host with "riscv64-linux-gnu-gcc -static" > > (10.2.1). > > > > > >>> Second issue I am seeing seems to be related to text segment size. > >>> I check out v5.11 and use this config: > >>> https://gist.github.com/dvyukov/6af25474d455437577a84213b0cc9178 > >> > >> This config gave my laptop a hard time ! Finally I was able to boot > >> correctly to userspace, but I realized I used my sv48 branch...Either = I > >> fixed your issue along the way or I can't reproduce it, I'll give it a > >> try tomorrow. > > > > Where is your branch? I could also test in my setup on your branch. > > > > You can find my branch int/alex/riscv_kernel_end_of_address_space_v2 > here: https://github.com/AlexGhiti/riscv-linux.git No, it does not work for me. Source is on b61ab6c98de021398cd7734ea5fc3655e51e70f2 (HEAD, int/alex/riscv_kernel_end_of_address_space_v2) Config is https://gist.githubusercontent.com/dvyukov/6af25474d455437577a842= 13b0cc9178/raw/55b116522c14a8a98a7626d76df740d54f648ce5/gistfile1.txt riscv64-linux-gnu-gcc -v gcc version 10.2.1 20210110 (Debian 10.2.1-6+build1) qemu-system-riscv64 --version QEMU emulator version 5.2.0 (Debian 1:5.2+dfsg-3) qemu-system-riscv64 \ -machine virt -smp 2 -m 2G \ -device virtio-blk-device,drive=3Dhd0 \ -drive file=3Dimage-riscv64,if=3Dnone,format=3Draw,id=3Dhd0 \ -kernel arch/riscv/boot/Image \ -nographic \ -device virtio-rng-device,rng=3Drng0 -object rng-random,filename=3D/dev/urandom,id=3Drng0 \ -netdev user,id=3Dnet0,host=3D10.0.2.10,hostfwd=3Dtcp::10022-:22 -device virtio-net-device,netdev=3Dnet0 \ -append "root=3D/dev/vda earlyprintk=3Dserial console=3DttyS0 oops=3Dpanic panic_on_warn=3D1 panic=3D86400 earlycon" OpenSBI v0.8 ____ _____ ____ _____ / __ \ / ____| _ \_ _| | | | |_ __ ___ _ __ | (___ | |_) || | | | | | '_ \ / _ \ '_ \ \___ \| _ < | | | |__| | |_) | __/ | | |____) | |_) || |_ \____/| .__/ \___|_| |_|_____/|____/_____| | | |_| Platform Name : riscv-virtio,qemu Platform Features : timer,mfdeleg Platform HART Count : 2 Boot HART ID : 1 Boot HART ISA : rv64imafdcsu BOOT HART Features : pmp,scounteren,mcounteren,time BOOT HART PMP Count : 16 Firmware Base : 0x80000000 Firmware Size : 104 KB Runtime SBI Version : 0.2 MIDELEG : 0x0000000000000222 MEDELEG : 0x000000000000b109 PMP0 : 0x0000000080000000-0x000000008001ffff (A) no output after this PMP1 : 0x0000000000000000-0xffffffffffffffff (A,R,W,X) > Thanks, > > > > >>> Then trying to boot it using: > >>> QEMU emulator version 5.2.0 (Debian 1:5.2+dfsg-3) > >>> $ qemu-system-riscv64 -machine virt -smp 2 -m 4G ... > >>> > >>> It shows no output from the kernel whatsoever, even though I have > >>> earlycon and output shows very early with other configs. > >>> Kernel boots fine with defconfig and other smaller configs. > >>> > >>> If I enable KASAN_OUTLINE and CC_OPTIMIZE_FOR_SIZE, then this config > >>> also boots fine. Both of these options significantly reduce kernel > >>> size. However, I can also boot the kernel without these 2 configs, if > >>> I disable a whole lot of subsystem configs. This makes me think that > >>> there is an issue related to kernel size somewhere in > >>> qemu/bootloader/kernel bootstrap code. > >>> Does it make sense to you? Can somebody reproduce what I am seeing? > > >> > >> I did not bring any answer to your question, but at least you know I'm > >> working on it, I'll keep you posted. > >> > >> Thanks for taking the time to setup syzkaller. > >> > >> Alex > >> > >>> Thanks > >>> > >>> _______________________________________________ > >>> linux-riscv mailing list > >>> linux-riscv@lists.infradead.org > >>> http://lists.infradead.org/mailman/listinfo/linux-riscv > >>> > > > > _______________________________________________ > > linux-riscv mailing list > > linux-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv > > 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,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,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 3A84CC433E0 for ; Wed, 17 Feb 2021 17:35:10 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 A227364E45 for ; Wed, 17 Feb 2021 17:35:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A227364E45 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Czwqw6WrTdP0ZacpW4SoMQ6US6Ndu8cErHfZdR5ojck=; b=AGxiPyc3d8REXtTuy0YCg1JH8 6wJStk0jnlzbzprhWMyLgr1I2IP8Mj28VA0zpB+lqZoTb+c4fE2H2M5aJ9bsFLywC+tV89V7sfH3S Zxlclj69w9VCzMTnlb/Snv6fFa2m/TVU9pifixZS9YChJiHv+nTqPFAKuwHUEaqxmiFMf7HJTxb8s cU4lScXKbSuBTY3g1zZHJJYQX4xHFwps4CRBXA7gM0cn7BFw4fHcp2lbRTvhxXmDStnqdrlr4fD5t rSeK1xxFFr08foGfK5L780H6lIPqY4uxBXIQYU+l9F/AcPPK7VmYNDqrEska1J54jL8A555cAbpEU khu9Rnssg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lCQiy-00047b-Jv; Wed, 17 Feb 2021 17:34:52 +0000 Received: from mail-qt1-x82e.google.com ([2607:f8b0:4864:20::82e]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lCQiv-00046v-UL for linux-riscv@lists.infradead.org; Wed, 17 Feb 2021 17:34:51 +0000 Received: by mail-qt1-x82e.google.com with SMTP id v3so10131042qtw.4 for ; Wed, 17 Feb 2021 09:34:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=MgKsBgrGyhwtzE/6qlT5wngkdOMFLt8gJJdt2mK9ZGk=; b=DiGe+QN5Uo/tmIiCKHYF9lEMom0CiBL8O13EQa8qIom9BM3iKtBmlLkHwvfJFxW6qJ FzpStLRJPny+/AEme7l+RRMjy/IVN3jsnUEQITJoD0R4D0yb5B6kCf3dMcJa/E94gUh0 /p+doTVzkX0BCfaFE6ajPveUo5EKe65mxYoZdJqtC2ryuMMWOhz9x/sZgMhOM/vVN/7Z hB4UloCfXh4Dsx4DkBFe6ZhYwwQa+8+jsKN6c+9zWbmP/p2aEpIbk4+nKrnXhw/pfO/j VaMzLU6v0URB1gy1ePmbzEL9nie60q4GpfYQw6cH1yB7J5zYIeP6PRm3gTsE8yj+BMnk XBrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=MgKsBgrGyhwtzE/6qlT5wngkdOMFLt8gJJdt2mK9ZGk=; b=MfShXb5rn+3vkWLfKAXH8dTuxX+epp0rBt3QNcF/+unlxnsLHBjtvy7WZNDNIyEo2B SjfxfRStyZS40aMtP3gci5tcQamJ2stGrUXZtdV6DL+O+MZA+hUsq44fsjejp0kPeELW bO/W4BeKhGG37O6EHgSkl3P1wbPifDofKzMRA5mbTEoqyLZ2Ji1RICJGlnTTOkDBn5t7 3yt2/ESPKJM2q7pzTSdsPY8Exb/NkKPV+B0yP/5s84kCnfb+DnPOPIpOsNZXv+ZvCm5E I2s+o2aHa6+BD0guBjFhAPZOJ3umk2LDGOMjvUcAeUdvbmzsxka+FrjyezGOQR6227uZ xCPA== X-Gm-Message-State: AOAM530ZeVboD3s5O0gAd0KJBGc6fc6xZDmKLb6Z4WPDfNGj/Iks/WeL r4MT1JIMlfWQjK93z5BqzG/gbp0YRB3Sqxm2k6z4/w== X-Google-Smtp-Source: ABdhPJzC41zreNDsOlI8EGj6IJV4jWHImMOCeVrFkM6lq1I/rHVmwRbEiBD7mryrNHYAwIvw2IMPsO2t1JHGif4x6Kc= X-Received: by 2002:aed:3647:: with SMTP id e65mr333567qtb.43.1613583283082; Wed, 17 Feb 2021 09:34:43 -0800 (PST) MIME-Version: 1.0 References: <20210118145310.crnqnh6kax5jqicj@distanz.ch> <6e9ee3a1-0e16-b1fc-a690-f1ca8e9823a5@ghiti.fr> <24857bfc-c557-f141-8ae7-2e3da24f67f5@ghiti.fr> <957f09fb-84f4-2e0a-13ab-f7e4831ee7d0@ghiti.fr> In-Reply-To: <957f09fb-84f4-2e0a-13ab-f7e4831ee7d0@ghiti.fr> From: Dmitry Vyukov Date: Wed, 17 Feb 2021 18:34:31 +0100 Message-ID: Subject: Re: riscv+KASAN does not boot To: Alex Ghiti X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210217_123450_041919_74EC4FD4 X-CRM114-Status: GOOD ( 44.00 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Albert Ou , Bjorn Topel , Palmer Dabbelt , LKML , nylon7@andestech.com, syzkaller , Andreas Schwab , Paul Walmsley , Tobias Klauser , linux-riscv 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 T24gV2VkLCBGZWIgMTcsIDIwMjEgYXQgNTozNiBQTSBBbGV4IEdoaXRpIDxhbGV4QGdoaXRpLmZy PiB3cm90ZToKPgo+IExlIDIvMTYvMjEgw6AgMTE6NDIgUE0sIERtaXRyeSBWeXVrb3YgYSDDqWNy aXQgOgo+ID4gT24gVHVlLCBGZWIgMTYsIDIwMjEgYXQgOTo0MiBQTSBBbGV4IEdoaXRpIDxhbGV4 QGdoaXRpLmZyPiB3cm90ZToKPiA+Pgo+ID4+IEhpIERtaXRyeSwKPiA+Pgo+ID4+IExlIDIvMTYv MjEgw6AgNjoyNSBBTSwgRG1pdHJ5IFZ5dWtvdiBhIMOpY3JpdCA6Cj4gPj4+IE9uIFR1ZSwgRmVi IDE2LCAyMDIxIGF0IDEyOjE3IFBNIERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4g d3JvdGU6Cj4gPj4+Pgo+ID4+Pj4gT24gRnJpLCBKYW4gMjksIDIwMjEgYXQgOToxMSBBTSBEbWl0 cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+IHdyb3RlOgo+ID4+Pj4+PiBJIHdhcyBmaXhp bmcgS0FTQU4gc3VwcG9ydCBmb3IgbXkgc3Y0OCBwYXRjaHNldCBzbyBJIHRvb2sgYSBsb29rIGF0 IHlvdXIKPiA+Pj4+Pj4gaXNzdWU6IEkgYnVpbHQgYSBrZXJuZWwgb24gdG9wIG9mIHRoZSBicmFu Y2ggcmlzY3YvZml4ZXMgdXNpbmcKPiA+Pj4+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9z eXprYWxsZXIvYmxvYi8yNjlkMjRlODU3YTc1N2QwOWE4OTgwODZhMmZhNmZhNWQ4MjdjM2UxL2Rh c2hib2FyZC9jb25maWcvbGludXgvdXBzdHJlYW0tcmlzY3Y2NC1rYXNhbi5jb25maWcKPiA+Pj4+ Pj4gYW5kIEJ1aWxkcm9vdCAyMDIwLjExLiBJIGhhdmUgdGhlIHdhcm5pbmdzIHJlZ2FyZGluZyB0 aGUgdXNlIG9mCj4gPj4+Pj4+IF9fdmlydF90b19waHlzIG9uIHdyb25nIGFkZHJlc3NlcyAoYnV0 IHRoYXQncyBub3JtYWwgc2luY2UgdGhpcyBmdW5jdGlvbgo+ID4+Pj4+PiBpcyB1c2VkIGluIHZp cnRfYWRkcl92YWxpZCkgYnV0IG5vdCB0aGUgc2VnZmF1bHRzIHlvdSBkZXNjcmliZS4KPiA+Pj4+ Pgo+ID4+Pj4+IEhpIEFsZXgsCj4gPj4+Pj4KPiA+Pj4+PiBMZXQgbWUgdHJ5IHRvIHJlYnVpbGQg YnVpbGRyb290IGltYWdlLiBNYXliZSB0aGVyZSB3YXMgc29tZXRoaW5nIHdyb25nCj4gPj4+Pj4g d2l0aCBteSBidWlsZCwgdGhvdWdoLCBJIGRpZCAnbWFrZSBjbGVhbicgYmVmb3JlIGRvaW5nLiBC dXQgYXQgdGhlCj4gPj4+Pj4gc2FtZSB0aW1lIGl0IHdvcmtlZCBiYWNrIGluIEp1bmUuLi4KPiA+ Pj4+Pgo+ID4+Pj4+IFJlIFdBUk5JTkdzLCB0aGV5IGluZGljYXRlIGtlcm5lbCBidWdzLiBJIGFt IHdvcmtpbmcgb24gc2V0dGluZyB1cCBhCj4gPj4+Pj4gc3l6Ym90IGluc3RhbmNlIG9uIHJpc2N2 LiBJZiB0aGVyZSBhIFdBUk5JTkcgZHVyaW5nIGJvb3QgdGhlbiB0aGUKPiA+Pj4+PiBrZXJuZWwg d2lsbCBiZSBtYXJrZWQgYXMgYnJva2VuLiBObyBmdXJ0aGVyIHRlc3Rpbmcgd2lsbCBoYXBwZW4u Cj4gPj4+Pj4gSXMgaXQgYSBtaXMtdXNlIG9mIFdBUk5fT04/IElmIHNvLCBjb3VsZCBhbnlib2R5 IHBsZWFzZSByZW1vdmUgaXQgb3IKPiA+Pj4+PiByZXBsYWNlIGl0IHdpdGggcHJfZXJyLgo+ID4+ Pj4KPiA+Pj4+Cj4gPj4+PiBIaSwKPiA+Pj4+Cj4gPj4+PiBJJ3ZlIGxvY2FsaXplZCBvbmUgaXNz dWUgd2l0aCByaXNjdi9LQVNBTjoKPiA+Pj4+IEtBU0FOIGJyZWFrcyBWRFNPIGFuZCB0aGF0J3Mg SSB0aGluayB0aGUgcm9vdCBjYXVzZSBvZiB3ZWlyZCBmYXVsdHMgSQo+ID4+Pj4gc2F3IGVhcmxp ZXIuIFRoZSBmb2xsb3dpbmcgcGF0Y2ggZml4ZXMgaXQuCj4gPj4+PiBDb3VsZCBzb21lYm9keSBw bGVhc2UgdXBzdHJlYW0gdGhpcyBmaXg/IEkgZG9uJ3Qga25vdyBob3cgdG8gYWRkL3J1bgo+ID4+ Pj4gdGVzdHMgZm9yIHRoaXMuCj4gPj4+PiBUaGFua3MKPiA+Pj4+Cj4gPj4+PiBkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9rZXJuZWwvdmRzby9NYWtlZmlsZSBiL2FyY2gvcmlzY3Yva2VybmVsL3Zk c28vTWFrZWZpbGUKPiA+Pj4+IGluZGV4IDBjZmQ2ZGE3ODRmODQuLmNmM2EzODNjMTc5OWQgMTAw NjQ0Cj4gPj4+PiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC92ZHNvL01ha2VmaWxlCj4gPj4+PiAr KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC92ZHNvL01ha2VmaWxlCj4gPj4+PiBAQCAtMzUsNiArMzUs NyBAQCBDRkxBR1NfUkVNT1ZFX3ZnZXR0aW1lb2ZkYXkubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKSAt T3MKPiA+Pj4+ICAgICMgRGlzYWJsZSBnY292IHByb2ZpbGluZyBmb3IgVkRTTyBjb2RlCj4gPj4+ PiAgICBHQ09WX1BST0ZJTEUgOj0gbgo+ID4+Pj4gICAgS0NPVl9JTlNUUlVNRU5UIDo9IG4KPiA+ Pj4+ICtLQVNBTl9TQU5JVElaRSA6PSBuCj4gPj4+Pgo+ID4+Pj4gICAgIyBGb3JjZSBkZXBlbmRl bmN5Cj4gPj4+PiAgICAkKG9iaikvdmRzby5vOiAkKG9iaikvdmRzby5zbwo+ID4+Cj4gPj4gV2hh dCdzIHdlaXJkIGlzIHRoYXQgSSBkb24ndCBoYXZlIGFueSBpc3N1ZSB3aXRob3V0IHRoaXMgcGF0 Y2ggd2l0aCB0aGUKPiA+PiBmb2xsb3dpbmcgY29uZmlnIHdoZXJlYXMgaXQgaW5kZWVkIHNlZW1z IHJlcXVpcmVkIGZvciBLQVNBTi4gQnV0IHdoZW4KPiA+PiBsb29raW5nIGF0IHRoZSBzZWdmYXVs dHMgeW91IGdvdCBlYXJsaWVyLCB0aGUgc2VnZmF1bHQgYWRkcmVzcyBpcyAweGJiMAo+ID4+IGFu ZCB0aGUgY2F1c2UgaXMgYW4gaW5zdHJ1Y3Rpb24gcGFnZSBmYXVsdDogdGhpcyBhZGRyZXNzIGlz IHRoZSBQTFQgYmFzZQo+ID4+IGFkZHJlc3MgaW4gdmRzby5zbyBhbmQgYW4gaW5zdHJ1Y3Rpb24g cGFnZSBmYXVsdCB3b3VsZCBtZWFuIHRoYXQgc29tZW9uZQo+ID4+IHRyaWVkIHRvIGp1bXAgYXQg dGhpcyBhZGRyZXNzLCB3aGljaCBpcyB3ZWlyZC4gQXQgZmlyc3Qgc2lnaHQsIHRoYXQgZG9lcwo+ ID4+IG5vdCBzZWVtIHJlbGF0ZWQgdG8geW91ciBwYXRjaCBhYm92ZSwgYnV0IGNsZWFybHkgSSBt YXkgYmUgd3JvbmcuCj4gPj4KPiA+PiBUb2JpYXMsIGRpZCB5b3Ugb2JzZXJ2ZSB0aGUgc2FtZSBz ZWdmYXVsdHMgYXMgRG1pdHJ5ID8KPiA+Cj4gPgo+ID4gSSBub3RpY2VkIHRoYXQgbm90IGFsbCBi dWlsZHJvb3QgaW1hZ2VzIHVzZSBWRFNPLCBpdCBzZWVtcyB0byBiZQo+ID4gZGVwZW5kZW50IG9u IGxpYmMgc2V0dGluZ3MgKGF0IGxlYXN0IEkgdGhpbmsgSSBjaGFuZ2VkIGl0IGluIHRoZQo+ID4g cGFzdCkuCj4KPiBPaywgSSB1c2VkIHVDbGliYyBidXQgdGhlbiB3aGVuIHVzaW5nIGdsaWJjLCBJ IGhhdmUgdGhlIHNhbWUgc2VnZmF1bHRzLAo+IG9ubHkgd2hlbiBLQVNBTiBpcyBlbmFibGVkLiBB bmQgeW91ciBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4gSSB3aWxsIHRyeQo+IHRvIHRha2UgYSBs b29rIGxhdGVyIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBwcm9ibGVtLgo+Cj4gPiBJIGFsc28g Ym9vdGVkIGFuIGltYWdlIGNvbXBsZXRlbHkgc3VjY2Vzc2Z1bGx5IGluY2x1ZGluZyBkaGNwZC9z c2hkCj4gPiBzdGFydCwgYnV0IHRoZW4gbXkgZXhlY3V0YWJsZSBjcmFzaGVkIGluIGNsb2NrX2dl dHRpbWUuIFRoZSBleGVjdXRhYmxlCj4gPiB3YXMgYnVpbGQgb24gbGludXgvYW1kNjQgaG9zdCB3 aXRoICJyaXNjdjY0LWxpbnV4LWdudS1nY2MgLXN0YXRpYyIKPiA+ICgxMC4yLjEpLgo+ID4KPiA+ Cj4gPj4+IFNlY29uZCBpc3N1ZSBJIGFtIHNlZWluZyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRl eHQgc2VnbWVudCBzaXplLgo+ID4+PiBJIGNoZWNrIG91dCB2NS4xMSBhbmQgdXNlIHRoaXMgY29u ZmlnOgo+ID4+PiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9kdnl1a292LzZhZjI1NDc0ZDQ1NTQz NzU3N2E4NDIxM2IwY2M5MTc4Cj4gPj4KPiA+PiBUaGlzIGNvbmZpZyBnYXZlIG15IGxhcHRvcCBh IGhhcmQgdGltZSAhIEZpbmFsbHkgSSB3YXMgYWJsZSB0byBib290Cj4gPj4gY29ycmVjdGx5IHRv IHVzZXJzcGFjZSwgYnV0IEkgcmVhbGl6ZWQgSSB1c2VkIG15IHN2NDggYnJhbmNoLi4uRWl0aGVy IEkKPiA+PiBmaXhlZCB5b3VyIGlzc3VlIGFsb25nIHRoZSB3YXkgb3IgSSBjYW4ndCByZXByb2R1 Y2UgaXQsIEknbGwgZ2l2ZSBpdCBhCj4gPj4gdHJ5IHRvbW9ycm93Lgo+ID4KPiA+IFdoZXJlIGlz IHlvdXIgYnJhbmNoPyBJIGNvdWxkIGFsc28gdGVzdCBpbiBteSBzZXR1cCBvbiB5b3VyIGJyYW5j aC4KPiA+Cj4KPiBZb3UgY2FuIGZpbmQgbXkgYnJhbmNoIGludC9hbGV4L3Jpc2N2X2tlcm5lbF9l bmRfb2ZfYWRkcmVzc19zcGFjZV92Mgo+IGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9BbGV4R2hp dGkvcmlzY3YtbGludXguZ2l0CgpObywgaXQgZG9lcyBub3Qgd29yayBmb3IgbWUuCgpTb3VyY2Ug aXMgb24gYjYxYWI2Yzk4ZGUwMjEzOThjZDc3MzRlYTVmYzM2NTVlNTFlNzBmMiAoSEVBRCwKaW50 L2FsZXgvcmlzY3Zfa2VybmVsX2VuZF9vZl9hZGRyZXNzX3NwYWNlX3YyKQpDb25maWcgaXMgaHR0 cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kdnl1a292LzZhZjI1NDc0ZDQ1NTQzNzU3 N2E4NDIxM2IwY2M5MTc4L3Jhdy81NWIxMTY1MjJjMTRhOGE5OGE3NjI2ZDc2ZGY3NDBkNTRmNjQ4 Y2U1L2dpc3RmaWxlMS50eHQKCnJpc2N2NjQtbGludXgtZ251LWdjYyAtdgpnY2MgdmVyc2lvbiAx MC4yLjEgMjAyMTAxMTAgKERlYmlhbiAxMC4yLjEtNitidWlsZDEpCgpxZW11LXN5c3RlbS1yaXNj djY0IC0tdmVyc2lvbgpRRU1VIGVtdWxhdG9yIHZlcnNpb24gNS4yLjAgKERlYmlhbiAxOjUuMitk ZnNnLTMpCgpxZW11LXN5c3RlbS1yaXNjdjY0IFwKLW1hY2hpbmUgdmlydCAtc21wIDIgLW0gMkcg XAotZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWhkMCBcCi1kcml2ZSBmaWxlPWltYWdl LXJpc2N2NjQsaWY9bm9uZSxmb3JtYXQ9cmF3LGlkPWhkMCBcCi1rZXJuZWwgYXJjaC9yaXNjdi9i b290L0ltYWdlIFwKLW5vZ3JhcGhpYyBcCi1kZXZpY2UgdmlydGlvLXJuZy1kZXZpY2Uscm5nPXJu ZzAgLW9iamVjdApybmctcmFuZG9tLGZpbGVuYW1lPS9kZXYvdXJhbmRvbSxpZD1ybmcwIFwKLW5l dGRldiB1c2VyLGlkPW5ldDAsaG9zdD0xMC4wLjIuMTAsaG9zdGZ3ZD10Y3A6OjEwMDIyLToyMiAt ZGV2aWNlCnZpcnRpby1uZXQtZGV2aWNlLG5ldGRldj1uZXQwIFwKLWFwcGVuZCAicm9vdD0vZGV2 L3ZkYSBlYXJseXByaW50az1zZXJpYWwgY29uc29sZT10dHlTMCBvb3BzPXBhbmljCnBhbmljX29u X3dhcm49MSBwYW5pYz04NjQwMCBlYXJseWNvbiIKCk9wZW5TQkkgdjAuOAogICBfX19fICAgICAg ICAgICAgICAgICAgICBfX19fXyBfX19fIF9fX19fCiAgLyBfXyBcICAgICAgICAgICAgICAgICAg LyBfX19ffCAgXyBcXyAgIF98CiB8IHwgIHwgfF8gX18gICBfX18gXyBfXyB8IChfX18gfCB8Xykg fHwgfAogfCB8ICB8IHwgJ18gXCAvIF8gXCAnXyBcIFxfX18gXHwgIF8gPCB8IHwKIHwgfF9ffCB8 IHxfKSB8ICBfXy8gfCB8IHxfX19fKSB8IHxfKSB8fCB8XwogIFxfX19fL3wgLl9fLyBcX19ffF98 IHxffF9fX19fL3xfX19fL19fX19ffAogICAgICAgIHwgfAogICAgICAgIHxffAoKUGxhdGZvcm0g TmFtZSAgICAgICA6IHJpc2N2LXZpcnRpbyxxZW11ClBsYXRmb3JtIEZlYXR1cmVzICAgOiB0aW1l cixtZmRlbGVnClBsYXRmb3JtIEhBUlQgQ291bnQgOiAyCkJvb3QgSEFSVCBJRCAgICAgICAgOiAx CkJvb3QgSEFSVCBJU0EgICAgICAgOiBydjY0aW1hZmRjc3UKQk9PVCBIQVJUIEZlYXR1cmVzICA6 IHBtcCxzY291bnRlcmVuLG1jb3VudGVyZW4sdGltZQpCT09UIEhBUlQgUE1QIENvdW50IDogMTYK RmlybXdhcmUgQmFzZSAgICAgICA6IDB4ODAwMDAwMDAKRmlybXdhcmUgU2l6ZSAgICAgICA6IDEw NCBLQgpSdW50aW1lIFNCSSBWZXJzaW9uIDogMC4yCgpNSURFTEVHIDogMHgwMDAwMDAwMDAwMDAw MjIyCk1FREVMRUcgOiAweDAwMDAwMDAwMDAwMGIxMDkKUE1QMCAgICA6IDB4MDAwMDAwMDA4MDAw MDAwMC0weDAwMDAwMDAwODAwMWZmZmYgKEEpCgoKbm8gb3V0cHV0IGFmdGVyIHRoaXMKUE1QMSAg ICA6IDB4MDAwMDAwMDAwMDAwMDAwMC0weGZmZmZmZmZmZmZmZmZmZmYgKEEsUixXLFgpCgoKCj4g VGhhbmtzLAo+Cj4gPgo+ID4+PiBUaGVuIHRyeWluZyB0byBib290IGl0IHVzaW5nOgo+ID4+PiBR RU1VIGVtdWxhdG9yIHZlcnNpb24gNS4yLjAgKERlYmlhbiAxOjUuMitkZnNnLTMpCj4gPj4+ICQg cWVtdS1zeXN0ZW0tcmlzY3Y2NCAtbWFjaGluZSB2aXJ0IC1zbXAgMiAtbSA0RyAuLi4KPiA+Pj4K PiA+Pj4gSXQgc2hvd3Mgbm8gb3V0cHV0IGZyb20gdGhlIGtlcm5lbCB3aGF0c29ldmVyLCBldmVu IHRob3VnaCBJIGhhdmUKPiA+Pj4gZWFybHljb24gYW5kIG91dHB1dCBzaG93cyB2ZXJ5IGVhcmx5 IHdpdGggb3RoZXIgY29uZmlncy4KPiA+Pj4gS2VybmVsIGJvb3RzIGZpbmUgd2l0aCBkZWZjb25m aWcgYW5kIG90aGVyIHNtYWxsZXIgY29uZmlncy4KPiA+Pj4KPiA+Pj4gSWYgSSBlbmFibGUgS0FT QU5fT1VUTElORSBhbmQgQ0NfT1BUSU1JWkVfRk9SX1NJWkUsIHRoZW4gdGhpcyBjb25maWcKPiA+ Pj4gYWxzbyBib290cyBmaW5lLiBCb3RoIG9mIHRoZXNlIG9wdGlvbnMgc2lnbmlmaWNhbnRseSBy ZWR1Y2Uga2VybmVsCj4gPj4+IHNpemUuIEhvd2V2ZXIsIEkgY2FuIGFsc28gYm9vdCB0aGUga2Vy bmVsIHdpdGhvdXQgdGhlc2UgMiBjb25maWdzLCBpZgo+ID4+PiBJIGRpc2FibGUgYSB3aG9sZSBs b3Qgb2Ygc3Vic3lzdGVtIGNvbmZpZ3MuIFRoaXMgbWFrZXMgbWUgdGhpbmsgdGhhdAo+ID4+PiB0 aGVyZSBpcyBhbiBpc3N1ZSByZWxhdGVkIHRvIGtlcm5lbCBzaXplIHNvbWV3aGVyZSBpbgo+ID4+ PiBxZW11L2Jvb3Rsb2FkZXIva2VybmVsIGJvb3RzdHJhcCBjb2RlLgo+ID4+PiBEb2VzIGl0IG1h a2Ugc2Vuc2UgdG8geW91PyBDYW4gc29tZWJvZHkgcmVwcm9kdWNlIHdoYXQgSSBhbSBzZWVpbmc/ ID4KPiA+Pgo+ID4+IEkgZGlkIG5vdCBicmluZyBhbnkgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24s IGJ1dCBhdCBsZWFzdCB5b3Uga25vdyBJJ20KPiA+PiB3b3JraW5nIG9uIGl0LCBJJ2xsIGtlZXAg eW91IHBvc3RlZC4KPiA+Pgo+ID4+IFRoYW5rcyBmb3IgdGFraW5nIHRoZSB0aW1lIHRvIHNldHVw IHN5emthbGxlci4KPiA+Pgo+ID4+IEFsZXgKPiA+Pgo+ID4+PiBUaGFua3MKPiA+Pj4KPiA+Pj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+Pj4gbGlu dXgtcmlzY3YgbWFpbGluZyBsaXN0Cj4gPj4+IGxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5v cmcKPiA+Pj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1yaXNjdgo+ID4+Pgo+ID4KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gPiBsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKPiA+IGxpbnV4LXJpc2N2 QGxpc3RzLmluZnJhZGVhZC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtcmlzY3YKPiA+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXJpc2N2Cg==