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=-11.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 E8904C43461 for ; Thu, 17 Sep 2020 14:57:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7E3CD2072E for ; Thu, 17 Sep 2020 14:57:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mymailcheap.com header.i=@mymailcheap.com header.b="HTvXg4kV"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=flygoat.com header.i=@flygoat.com header.b="VaxzxN5E" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727657AbgIQO5B (ORCPT ); Thu, 17 Sep 2020 10:57:01 -0400 Received: from relay-us1.mymailcheap.com ([51.81.35.219]:33826 "EHLO relay-us1.mymailcheap.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727593AbgIQOtX (ORCPT ); Thu, 17 Sep 2020 10:49:23 -0400 Received: from relay5.mymailcheap.com (relay5.mymailcheap.com [159.100.241.64]) by relay-us1.mymailcheap.com (Postfix) with ESMTPS id 6E96620DE4; Thu, 17 Sep 2020 14:24:29 +0000 (UTC) Received: from relay1.mymailcheap.com (relay1.mymailcheap.com [144.217.248.100]) by relay5.mymailcheap.com (Postfix) with ESMTPS id 6FCE92008F; Thu, 17 Sep 2020 14:24:24 +0000 (UTC) Received: from filter1.mymailcheap.com (filter1.mymailcheap.com [149.56.130.247]) by relay1.mymailcheap.com (Postfix) with ESMTPS id 12C163F1C5; Thu, 17 Sep 2020 14:24:19 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by filter1.mymailcheap.com (Postfix) with ESMTP id EA7502A0FD; Thu, 17 Sep 2020 10:24:18 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; s=default; t=1600352659; bh=viAHQu2L83R9ESQNfxHMi9ooNlxH9kEpvfY/wdYaq34=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=HTvXg4kV0NOh8aCY15bSNzdqFDujXabkSJMbE6oFoVYUjkdPUlqX6y2//OCRVj93z A14NMa//JLCIg71Mck2JXvjscT/BIMXJprAFcoUbZd69Tm2QMx4m97IwaXYWRKkBIJ GhckXAKo6YLEH10HWyvOE8g+wEq5XYWlMRGSSd2k= X-Virus-Scanned: Debian amavisd-new at filter1.mymailcheap.com Received: from filter1.mymailcheap.com ([127.0.0.1]) by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tZ8_4j9BMlXg; Thu, 17 Sep 2020 10:24:16 -0400 (EDT) Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by filter1.mymailcheap.com (Postfix) with ESMTPS; Thu, 17 Sep 2020 10:24:16 -0400 (EDT) Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) by mail20.mymailcheap.com (Postfix) with ESMTP id 772E640EEC; Thu, 17 Sep 2020 14:24:12 +0000 (UTC) Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; unprotected) header.d=flygoat.com header.i=@flygoat.com header.b="VaxzxN5E"; dkim-atps=neutral AI-Spam-Status: Not processed Received: from [0.0.0.0] (li1197-90.members.linode.com [45.79.98.90]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail20.mymailcheap.com (Postfix) with ESMTPSA id BB68140FF5; Thu, 17 Sep 2020 14:21:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=flygoat.com; s=default; t=1600352477; bh=viAHQu2L83R9ESQNfxHMi9ooNlxH9kEpvfY/wdYaq34=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=VaxzxN5ErI17+SmxwTOyzK7glLqBmELJ8dsWKWgo0wkglfPIm+yCtvQSabYcsayds LTF7ifpDNd8XRXJkpwCtbW0JmxHBsdU6lsC6S1TOaTnVsB/5uVqHfUxpjTub6cFryO C6ifDOPgcIssYOU7m97dvQUJEODIsgrZxob9yJiQ= Subject: Re: [PATCH] MIPS: Loongson64: Add kexec/kdump support To: Jinyang He , Huacai Chen Cc: Thomas Bogendoerfer , Youling Tang , "open list:MIPS" , LKML , kexec@lists.infradead.org, Xuefeng Li References: <1600175263-7872-1-git-send-email-hejinyang@loongson.cn> <376B4B91-0736-43FA-87EA-43E12FF24EF1@flygoat.com> <7b78c4d4-7ee3-cf57-71d1-95611713de2b@loongson.cn> <647822a9-bc3b-5da1-95e7-c048a5a3b8fa@loongson.cn> From: Jiaxun Yang Message-ID: <42ff66fb-a0bf-937f-8415-5d407fb93e03@flygoat.com> Date: Thu, 17 Sep 2020 22:21:10 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.2.2 MIME-Version: 1.0 In-Reply-To: <647822a9-bc3b-5da1-95e7-c048a5a3b8fa@loongson.cn> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 772E640EEC X-Spamd-Result: default: False [-0.10 / 10.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[flygoat.com:s=default]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; R_SPF_SOFTFAIL(0.00)[~all]; ML_SERVERS(-3.10)[213.133.102.83]; DKIM_TRACE(0.00)[flygoat.com:+]; DMARC_POLICY_ALLOW(0.00)[flygoat.com,none]; RCPT_COUNT_SEVEN(0.00)[8]; DMARC_POLICY_ALLOW_WITH_FAILURES(0.00)[]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; RCVD_COUNT_TWO(0.00)[2]; MID_RHS_MATCH_FROM(0.00)[]; HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] X-Rspamd-Server: mail20.mymailcheap.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2020/9/17 20:41, Jinyang He 写道: > Hi, Huacai, > > > On 09/16/2020 01:39 PM, Huacai Chen wrote: >> Hi, Jinyang, >> >> On Tue, Sep 15, 2020 at 10:17 PM Jinyang He >> wrote: >>> >>> >>> On 09/16/2020 09:33 AM, Jiaxun Yang wrote: >>>> 于 2020年9月15日 GMT+08:00 下午9:07:43, Jinyang He >>>> 写到: >>>>> Add loongson_kexec_prepare(), loongson_kexec_shutdown() and >>>>> loongson_kexec_crashdown() for passing the parameters of kexec_args. >>>>> >>>>> To start loongson64, CPU0 needs 3 parameters: >>>>> fw_arg0: the number of cmd. >>>>> fw_arg1: cmd structure which seems strange, the cmd array[index]'s >>>>>           value is cmd string's address, index >= 1. >>>>> fw_arg2: environment. >>>>> >>>>> Secondary CPUs do not need parameter at once. They query their >>>>> mailbox to get PC, SP and GP in a loop before CPU0 brings them up >>>>> and passes these parameters via mailbox. >>>>> >>>>> loongson_kexec_prepare(): Alloc new memory to save cmd for kexec. >>>>> Combine the kexec append option string as cmd structure, and the cmd >>>>> struct will be parsed in fw_init_cmdline() of >>>>> arch/mips/fw/lib/cmdline.c. >>>>> image->control_code_page need pointing to a safe memory page. In >>>>> order to >>>>> maintain compatibility for the old firmware the low 2MB is reserverd >>>>> and safe for Loongson. So let it points here. >>>>> >>>>> loongson_kexec_shutdown(): Wake up all present CPUs and let them go >>>>> to reboot_code_buffer. Pass the kexec parameters to kexec_args. >>>>> >>>>> loongson_crash_shutdown(): Pass the kdump parameters to kexec_args. >>>>> >>>>> The assembly part provide a way like BIOS doing to keep secondary >>>>> CPUs in a querying loop. >>>>> >>>>> This patch referenced [1][2][3]. >>>>> >>>>> [1] arch/mips/cavium-octeon/setup.c >>>>> [2] https://patchwork.kernel.org/patch/10799217/ >>>>> [3] >>>>> https://gitee.com/loongsonlab/qemu/blob/master/hw/mips/loongson3a_rom.h >>>>> >>>>> >>>>> Co-developed-by: Youling Tang >>>>> Signed-off-by: Youling Tang >>>>> Signed-off-by: Jinyang He >>>>> --- >>>>> arch/mips/kernel/relocate_kernel.S | 19 ++++++++ >>>>> arch/mips/loongson64/reset.c       | 88 >>>>> ++++++++++++++++++++++++++++++++++++++ >>>>> 2 files changed, 107 insertions(+) >>>>> >>>>> diff --git a/arch/mips/kernel/relocate_kernel.S >>>>> b/arch/mips/kernel/relocate_kernel.S >>>>> index ac87089..061cbfb 100644 >>>>> --- a/arch/mips/kernel/relocate_kernel.S >>>>> +++ b/arch/mips/kernel/relocate_kernel.S >>>>> @@ -133,6 +133,25 @@ LEAF(kexec_smp_wait) >>>>> #else >>>>>       sync >>>>> #endif >>>>> + >>>>> +#ifdef CONFIG_CPU_LOONGSON64 >>>>> +#define MAILBOX_BASE 0x900000003ff01000 >>>> Please avoid hardcoded SMP information. You're breaking Loongson 3B >>>> support. >>>> >>> Ok, I see. Since my machine is Loongson 3A. I'll send v2 >>> after I test it in 3B. >> 1, My original version can work on both Loongson-3A and Loongson-3B, >> why you modify my patch and hadn't discuss with me? >> >> 2, With this single patch both kexec and kdump cannot work reliably, >> because kexec need this patch: >>     https://patchwork.kernel.org/patch/11695929/ >> >>     and kdump need my first patch in my original version: >>     https://patchwork.kernel.org/patch/10799215/ >> >>     You may argue that you have tested. Yes, I believe that, I'm not >> saying that you haven't test, and I'm not saying that your patch >> cannot work, I'm just saying that your patch is not robust. >> >> 3, I'm the original author and paying attention to kexec/kdump >> continuosly, I will send a new version once the above two patches be >> accepted. But you re-send my patch without any communication with me, >> why you so impatient? >> >> Huacai >> > > 1, Your original version: >    https://patchwork.kernel.org/patch/10799217/ > > This patch can work on Loongson-3A, I tested it. > > But it works wrong after the follow behaviors, >    kexec -l vmlinux --append=cmdline_kexec >    kexec -p vmlinux --append=cmdline_kdump >    kexec -e > > It works but cmdline_kdump merged cmdline_kexec. > > And this patch memcpy from fw_arg2 to kexec_envp and later memcpy from > kexec_envp to fw_arg2 when fw_arg2 was not changed, it's redundant. > > However, I have not Loongson-3B now, and did not test it. For this patch, > does it work well on Loongson-3B3000/Loongson-3B4000? Hi Jingyang, Well for Loongson-3B I meant 3B1000/3B1500, which have different layout of SMP registers. For 3B3000/3B4000 everyone know they're just different branding to the same silicon. > > 3, I try to fix Loongson64 kexec function since I joined the community. > I fell sorry to not do enough research on Loongson64 kexec. My first > patch: >    https://patchwork.kernel.org/patch/11684849/ I'm glad to see Loongson staff joining the community and enhance our code. It is common practice to investigate historical changes before do something to the upstream code :-) > > It fixed problem about "Crash kernel" which can be traced back to > linux-5.4. > At that time, I thought there is no developer work on Kexec. Thus, I > did a > lot on Kexec. Are you really continuosly paying attention to kexec/kdump? > With the exploring and developing deep, I found your patch several > days ago > after I did a draft patch witch referenced: >    arch/mips/cavium-octeon/setup.c > https://gitee.com/loongsonlab/qemu/blob/master/hw/mips/loongson3a_rom.h > > There is no doubt that your patch gives me confidence and suggestion > while > it gives me worry. As a newcomer, I do not know if should communicate > with > you since your patch was committed one year ago. And now it may be a good > chance to do some communication. You should *always* try to *credit* others properly, that's the first thing. Communication is optional but highly recommanded. Recently I can smell there are some tensions raised between the community and the Loongson company, mainly about GPL violation and Loongson's attitude towards the community. Personaly I don't hold any hostility to Loongosn's practice in the community but I'd also like to see Loongson show their respect to the community. Thanks. - Jiaxun > > Thanks, > > - Jinyang. > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from relay1.mymailcheap.com ([144.217.248.100]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kIuph-0002Ys-9J for kexec@lists.infradead.org; Thu, 17 Sep 2020 14:24:23 +0000 Subject: Re: [PATCH] MIPS: Loongson64: Add kexec/kdump support References: <1600175263-7872-1-git-send-email-hejinyang@loongson.cn> <376B4B91-0736-43FA-87EA-43E12FF24EF1@flygoat.com> <7b78c4d4-7ee3-cf57-71d1-95611713de2b@loongson.cn> <647822a9-bc3b-5da1-95e7-c048a5a3b8fa@loongson.cn> From: Jiaxun Yang Message-ID: <42ff66fb-a0bf-937f-8415-5d407fb93e03@flygoat.com> Date: Thu, 17 Sep 2020 22:21:10 +0800 MIME-Version: 1.0 In-Reply-To: <647822a9-bc3b-5da1-95e7-c048a5a3b8fa@loongson.cn> 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: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Jinyang He , Huacai Chen Cc: Thomas Bogendoerfer , Youling Tang , kexec@lists.infradead.org, "open list:MIPS" , LKML , Xuefeng Li CgrlnKggMjAyMC85LzE3IDIwOjQxLCBKaW55YW5nIEhlIOWGmemBkzoKPiBIaSwgSHVhY2FpLAo+ Cj4KPiBPbiAwOS8xNi8yMDIwIDAxOjM5IFBNLCBIdWFjYWkgQ2hlbiB3cm90ZToKPj4gSGksIEpp bnlhbmcsCj4+Cj4+IE9uIFR1ZSwgU2VwIDE1LCAyMDIwIGF0IDEwOjE3IFBNIEppbnlhbmcgSGUg PGhlamlueWFuZ0Bsb29uZ3Nvbi5jbj4gCj4+IHdyb3RlOgo+Pj4KPj4+Cj4+PiBPbiAwOS8xNi8y MDIwIDA5OjMzIEFNLCBKaWF4dW4gWWFuZyB3cm90ZToKPj4+PiDkuo4gMjAyMOW5tDnmnIgxNeaX pSBHTVQrMDg6MDAg5LiL5Y2IOTowNzo0MywgSmlueWFuZyBIZSAKPj4+PiA8aGVqaW55YW5nQGxv b25nc29uLmNuPiDlhpnliLA6Cj4+Pj4+IEFkZCBsb29uZ3Nvbl9rZXhlY19wcmVwYXJlKCksIGxv b25nc29uX2tleGVjX3NodXRkb3duKCkgYW5kCj4+Pj4+IGxvb25nc29uX2tleGVjX2NyYXNoZG93 bigpIGZvciBwYXNzaW5nIHRoZSBwYXJhbWV0ZXJzIG9mIGtleGVjX2FyZ3MuCj4+Pj4+Cj4+Pj4+ IFRvIHN0YXJ0IGxvb25nc29uNjQsIENQVTAgbmVlZHMgMyBwYXJhbWV0ZXJzOgo+Pj4+PiBmd19h cmcwOiB0aGUgbnVtYmVyIG9mIGNtZC4KPj4+Pj4gZndfYXJnMTogY21kIHN0cnVjdHVyZSB3aGlj aCBzZWVtcyBzdHJhbmdlLCB0aGUgY21kIGFycmF5W2luZGV4XSdzCj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCB2YWx1ZSBpcyBjbWQgc3RyaW5nJ3MgYWRkcmVzcywgaW5kZXggPj0gMS4KPj4+Pj4g ZndfYXJnMjogZW52aXJvbm1lbnQuCj4+Pj4+Cj4+Pj4+IFNlY29uZGFyeSBDUFVzIGRvIG5vdCBu ZWVkIHBhcmFtZXRlciBhdCBvbmNlLiBUaGV5IHF1ZXJ5IHRoZWlyCj4+Pj4+IG1haWxib3ggdG8g Z2V0IFBDLCBTUCBhbmQgR1AgaW4gYSBsb29wIGJlZm9yZSBDUFUwIGJyaW5ncyB0aGVtIHVwCj4+ Pj4+IGFuZCBwYXNzZXMgdGhlc2UgcGFyYW1ldGVycyB2aWEgbWFpbGJveC4KPj4+Pj4KPj4+Pj4g bG9vbmdzb25fa2V4ZWNfcHJlcGFyZSgpOiBBbGxvYyBuZXcgbWVtb3J5IHRvIHNhdmUgY21kIGZv ciBrZXhlYy4KPj4+Pj4gQ29tYmluZSB0aGUga2V4ZWMgYXBwZW5kIG9wdGlvbiBzdHJpbmcgYXMg Y21kIHN0cnVjdHVyZSwgYW5kIHRoZSBjbWQKPj4+Pj4gc3RydWN0IHdpbGwgYmUgcGFyc2VkIGlu IGZ3X2luaXRfY21kbGluZSgpIG9mIAo+Pj4+PiBhcmNoL21pcHMvZncvbGliL2NtZGxpbmUuYy4K Pj4+Pj4gaW1hZ2UtPmNvbnRyb2xfY29kZV9wYWdlIG5lZWQgcG9pbnRpbmcgdG8gYSBzYWZlIG1l bW9yeSBwYWdlLiBJbiAKPj4+Pj4gb3JkZXIgdG8KPj4+Pj4gbWFpbnRhaW4gY29tcGF0aWJpbGl0 eSBmb3IgdGhlIG9sZCBmaXJtd2FyZSB0aGUgbG93IDJNQiBpcyByZXNlcnZlcmQKPj4+Pj4gYW5k IHNhZmUgZm9yIExvb25nc29uLiBTbyBsZXQgaXQgcG9pbnRzIGhlcmUuCj4+Pj4+Cj4+Pj4+IGxv b25nc29uX2tleGVjX3NodXRkb3duKCk6IFdha2UgdXAgYWxsIHByZXNlbnQgQ1BVcyBhbmQgbGV0 IHRoZW0gZ28KPj4+Pj4gdG8gcmVib290X2NvZGVfYnVmZmVyLiBQYXNzIHRoZSBrZXhlYyBwYXJh bWV0ZXJzIHRvIGtleGVjX2FyZ3MuCj4+Pj4+Cj4+Pj4+IGxvb25nc29uX2NyYXNoX3NodXRkb3du KCk6IFBhc3MgdGhlIGtkdW1wIHBhcmFtZXRlcnMgdG8ga2V4ZWNfYXJncy4KPj4+Pj4KPj4+Pj4g VGhlIGFzc2VtYmx5IHBhcnQgcHJvdmlkZSBhIHdheSBsaWtlIEJJT1MgZG9pbmcgdG8ga2VlcCBz ZWNvbmRhcnkKPj4+Pj4gQ1BVcyBpbiBhIHF1ZXJ5aW5nIGxvb3AuCj4+Pj4+Cj4+Pj4+IFRoaXMg cGF0Y2ggcmVmZXJlbmNlZCBbMV1bMl1bM10uCj4+Pj4+Cj4+Pj4+IFsxXSBhcmNoL21pcHMvY2F2 aXVtLW9jdGVvbi9zZXR1cC5jCj4+Pj4+IFsyXSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3Jn L3BhdGNoLzEwNzk5MjE3Lwo+Pj4+PiBbM10gCj4+Pj4+IGh0dHBzOi8vZ2l0ZWUuY29tL2xvb25n c29ubGFiL3FlbXUvYmxvYi9tYXN0ZXIvaHcvbWlwcy9sb29uZ3NvbjNhX3JvbS5oIAo+Pj4+Pgo+ Pj4+Pgo+Pj4+PiBDby1kZXZlbG9wZWQtYnk6IFlvdWxpbmcgVGFuZyA8dGFuZ3lvdWxpbmdAbG9v bmdzb24uY24+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFlvdWxpbmcgVGFuZyA8dGFuZ3lvdWxpbmdA bG9vbmdzb24uY24+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEppbnlhbmcgSGUgPGhlamlueWFuZ0Bs b29uZ3Nvbi5jbj4KPj4+Pj4gLS0tCj4+Pj4+IGFyY2gvbWlwcy9rZXJuZWwvcmVsb2NhdGVfa2Vy bmVsLlMgfCAxOSArKysrKysrKwo+Pj4+PiBhcmNoL21pcHMvbG9vbmdzb242NC9yZXNldC5jwqDC oMKgwqDCoMKgIHwgODggCj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+Pj4+IDIgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKykKPj4+Pj4KPj4+Pj4g ZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvcmVsb2NhdGVfa2VybmVsLlMgCj4+Pj4+IGIv YXJjaC9taXBzL2tlcm5lbC9yZWxvY2F0ZV9rZXJuZWwuUwo+Pj4+PiBpbmRleCBhYzg3MDg5Li4w NjFjYmZiIDEwMDY0NAo+Pj4+PiAtLS0gYS9hcmNoL21pcHMva2VybmVsL3JlbG9jYXRlX2tlcm5l bC5TCj4+Pj4+ICsrKyBiL2FyY2gvbWlwcy9rZXJuZWwvcmVsb2NhdGVfa2VybmVsLlMKPj4+Pj4g QEAgLTEzMyw2ICsxMzMsMjUgQEAgTEVBRihrZXhlY19zbXBfd2FpdCkKPj4+Pj4gI2Vsc2UKPj4+ Pj4gwqDCoMKgwqDCoCBzeW5jCj4+Pj4+ICNlbmRpZgo+Pj4+PiArCj4+Pj4+ICsjaWZkZWYgQ09O RklHX0NQVV9MT09OR1NPTjY0Cj4+Pj4+ICsjZGVmaW5lIE1BSUxCT1hfQkFTRSAweDkwMDAwMDAw M2ZmMDEwMDAKPj4+PiBQbGVhc2UgYXZvaWQgaGFyZGNvZGVkIFNNUCBpbmZvcm1hdGlvbi4gWW91 J3JlIGJyZWFraW5nIExvb25nc29uIDNCIAo+Pj4+IHN1cHBvcnQuCj4+Pj4KPj4+IE9rLCBJIHNl ZS4gU2luY2UgbXkgbWFjaGluZSBpcyBMb29uZ3NvbiAzQS4gSSdsbCBzZW5kIHYyCj4+PiBhZnRl ciBJIHRlc3QgaXQgaW4gM0IuCj4+IDEsIE15IG9yaWdpbmFsIHZlcnNpb24gY2FuIHdvcmsgb24g Ym90aCBMb29uZ3Nvbi0zQSBhbmQgTG9vbmdzb24tM0IsCj4+IHdoeSB5b3UgbW9kaWZ5IG15IHBh dGNoIGFuZCBoYWRuJ3QgZGlzY3VzcyB3aXRoIG1lPwo+Pgo+PiAyLCBXaXRoIHRoaXMgc2luZ2xl IHBhdGNoIGJvdGgga2V4ZWMgYW5kIGtkdW1wIGNhbm5vdCB3b3JrIHJlbGlhYmx5LAo+PiBiZWNh dXNlIGtleGVjIG5lZWQgdGhpcyBwYXRjaDoKPj4gwqDCoMKgIGh0dHBzOi8vcGF0Y2h3b3JrLmtl cm5lbC5vcmcvcGF0Y2gvMTE2OTU5MjkvCj4+Cj4+IMKgwqDCoCBhbmQga2R1bXAgbmVlZCBteSBm aXJzdCBwYXRjaCBpbiBteSBvcmlnaW5hbCB2ZXJzaW9uOgo+PiDCoMKgwqAgaHR0cHM6Ly9wYXRj aHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDc5OTIxNS8KPj4KPj4gwqDCoMKgIFlvdSBtYXkgYXJn dWUgdGhhdCB5b3UgaGF2ZSB0ZXN0ZWQuIFllcywgSSBiZWxpZXZlIHRoYXQsIEknbSBub3QKPj4g c2F5aW5nIHRoYXQgeW91IGhhdmVuJ3QgdGVzdCwgYW5kIEknbSBub3Qgc2F5aW5nIHRoYXQgeW91 ciBwYXRjaAo+PiBjYW5ub3Qgd29yaywgSSdtIGp1c3Qgc2F5aW5nIHRoYXQgeW91ciBwYXRjaCBp cyBub3Qgcm9idXN0Lgo+Pgo+PiAzLCBJJ20gdGhlIG9yaWdpbmFsIGF1dGhvciBhbmQgcGF5aW5n IGF0dGVudGlvbiB0byBrZXhlYy9rZHVtcAo+PiBjb250aW51b3NseSwgSSB3aWxsIHNlbmQgYSBu ZXcgdmVyc2lvbiBvbmNlIHRoZSBhYm92ZSB0d28gcGF0Y2hlcyBiZQo+PiBhY2NlcHRlZC4gQnV0 IHlvdSByZS1zZW5kIG15IHBhdGNoIHdpdGhvdXQgYW55IGNvbW11bmljYXRpb24gd2l0aCBtZSwK Pj4gd2h5IHlvdSBzbyBpbXBhdGllbnQ/Cj4+Cj4+IEh1YWNhaQo+Pgo+Cj4gMSwgWW91ciBvcmln aW5hbCB2ZXJzaW9uOgo+IMKgwqAgaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8x MDc5OTIxNy8KPgo+IFRoaXMgcGF0Y2ggY2FuIHdvcmsgb24gTG9vbmdzb24tM0EsIEkgdGVzdGVk IGl0Lgo+Cj4gQnV0IGl0IHdvcmtzIHdyb25nIGFmdGVyIHRoZSBmb2xsb3cgYmVoYXZpb3JzLAo+ IMKgwqAga2V4ZWMgLWwgdm1saW51eCAtLWFwcGVuZD1jbWRsaW5lX2tleGVjCj4gwqDCoCBrZXhl YyAtcCB2bWxpbnV4IC0tYXBwZW5kPWNtZGxpbmVfa2R1bXAKPiDCoMKgIGtleGVjIC1lCj4KPiBJ dCB3b3JrcyBidXQgY21kbGluZV9rZHVtcCBtZXJnZWQgY21kbGluZV9rZXhlYy4KPgo+IEFuZCB0 aGlzIHBhdGNoIG1lbWNweSBmcm9tIGZ3X2FyZzIgdG8ga2V4ZWNfZW52cCBhbmQgbGF0ZXIgbWVt Y3B5IGZyb20KPiBrZXhlY19lbnZwIHRvIGZ3X2FyZzIgd2hlbiBmd19hcmcyIHdhcyBub3QgY2hh bmdlZCwgaXQncyByZWR1bmRhbnQuCj4KPiBIb3dldmVyLCBJIGhhdmUgbm90IExvb25nc29uLTNC IG5vdywgYW5kIGRpZCBub3QgdGVzdCBpdC4gRm9yIHRoaXMgcGF0Y2gsCj4gZG9lcyBpdCB3b3Jr IHdlbGwgb24gTG9vbmdzb24tM0IzMDAwL0xvb25nc29uLTNCNDAwMD8KCkhpIEppbmd5YW5nLAoK V2VsbCBmb3IgTG9vbmdzb24tM0IgSSBtZWFudCAzQjEwMDAvM0IxNTAwLCB3aGljaCBoYXZlIGRp ZmZlcmVudCBsYXlvdXQKb2YgU01QIHJlZ2lzdGVycy4gRm9yIDNCMzAwMC8zQjQwMDAgZXZlcnlv bmUga25vdyB0aGV5J3JlIGp1c3QgZGlmZmVyZW50CmJyYW5kaW5nIHRvIHRoZSBzYW1lIHNpbGlj b24uCj4KPiAzLCBJIHRyeSB0byBmaXggTG9vbmdzb242NCBrZXhlYyBmdW5jdGlvbiBzaW5jZSBJ IGpvaW5lZCB0aGUgY29tbXVuaXR5Lgo+IEkgZmVsbCBzb3JyeSB0byBub3QgZG8gZW5vdWdoIHJl c2VhcmNoIG9uIExvb25nc29uNjQga2V4ZWMuIE15IGZpcnN0IAo+IHBhdGNoOgo+IMKgwqAgaHR0 cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTY4NDg0OS8KCkknbSBnbGFkIHRvIHNl ZSBMb29uZ3NvbiBzdGFmZiBqb2luaW5nIHRoZSBjb21tdW5pdHkgYW5kIGVuaGFuY2Ugb3VyIGNv ZGUuCkl0IGlzIGNvbW1vbiBwcmFjdGljZSB0byBpbnZlc3RpZ2F0ZSBoaXN0b3JpY2FsIGNoYW5n ZXMgYmVmb3JlIGRvIHNvbWV0aGluZwp0byB0aGUgdXBzdHJlYW0gY29kZSA6LSkKCj4KPiBJdCBm aXhlZCBwcm9ibGVtIGFib3V0ICJDcmFzaCBrZXJuZWwiIHdoaWNoIGNhbiBiZSB0cmFjZWQgYmFj ayB0byAKPiBsaW51eC01LjQuCj4gQXQgdGhhdCB0aW1lLCBJIHRob3VnaHQgdGhlcmUgaXMgbm8g ZGV2ZWxvcGVyIHdvcmsgb24gS2V4ZWMuIFRodXMsIEkgCj4gZGlkIGEKPiBsb3Qgb24gS2V4ZWMu IEFyZSB5b3UgcmVhbGx5IGNvbnRpbnVvc2x5IHBheWluZyBhdHRlbnRpb24gdG8ga2V4ZWMva2R1 bXA/Cj4gV2l0aCB0aGUgZXhwbG9yaW5nIGFuZCBkZXZlbG9waW5nIGRlZXAsIEkgZm91bmQgeW91 ciBwYXRjaCBzZXZlcmFsIAo+IGRheXMgYWdvCj4gYWZ0ZXIgSSBkaWQgYSBkcmFmdCBwYXRjaCB3 aXRjaCByZWZlcmVuY2VkOgo+IMKgwqAgYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vc2V0dXAuYwo+ IGh0dHBzOi8vZ2l0ZWUuY29tL2xvb25nc29ubGFiL3FlbXUvYmxvYi9tYXN0ZXIvaHcvbWlwcy9s b29uZ3NvbjNhX3JvbS5oCj4KPiBUaGVyZSBpcyBubyBkb3VidCB0aGF0IHlvdXIgcGF0Y2ggZ2l2 ZXMgbWUgY29uZmlkZW5jZSBhbmQgc3VnZ2VzdGlvbiAKPiB3aGlsZQo+IGl0IGdpdmVzIG1lIHdv cnJ5LiBBcyBhIG5ld2NvbWVyLCBJIGRvIG5vdCBrbm93IGlmIHNob3VsZCBjb21tdW5pY2F0ZSAK PiB3aXRoCj4geW91IHNpbmNlIHlvdXIgcGF0Y2ggd2FzIGNvbW1pdHRlZCBvbmUgeWVhciBhZ28u IEFuZCBub3cgaXQgbWF5IGJlIGEgZ29vZAo+IGNoYW5jZSB0byBkbyBzb21lIGNvbW11bmljYXRp b24uCgpZb3Ugc2hvdWxkICphbHdheXMqIHRyeSB0byAqY3JlZGl0KiBvdGhlcnMgcHJvcGVybHks IHRoYXQncyB0aGUgZmlyc3QgdGhpbmcuCkNvbW11bmljYXRpb24gaXMgb3B0aW9uYWwgYnV0IGhp Z2hseSByZWNvbW1hbmRlZC4KClJlY2VudGx5IEkgY2FuIHNtZWxsIHRoZXJlIGFyZSBzb21lIHRl bnNpb25zIHJhaXNlZCBiZXR3ZWVuIHRoZSAKY29tbXVuaXR5IGFuZAp0aGUgTG9vbmdzb24gY29t cGFueSwgbWFpbmx5IGFib3V0IEdQTCB2aW9sYXRpb24gYW5kIExvb25nc29uJ3MgYXR0aXR1ZGUK dG93YXJkcyB0aGUgY29tbXVuaXR5LiBQZXJzb25hbHkgSSBkb24ndCBob2xkIGFueSBob3N0aWxp dHkgdG8gTG9vbmdvc24ncwpwcmFjdGljZSBpbiB0aGUgY29tbXVuaXR5IGJ1dCBJJ2QgYWxzbyBs aWtlIHRvIHNlZSBMb29uZ3NvbiBzaG93IHRoZWlyIApyZXNwZWN0CnRvIHRoZSBjb21tdW5pdHku CgpUaGFua3MuCgotIEppYXh1bgoKPgo+IFRoYW5rcywKPgo+IC0gSmlueWFuZy4KPgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Ka2V4ZWMgbWFpbGluZyBs aXN0CmtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9rZXhlYwo=