From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E36BFC46CD2 for ; Tue, 30 Jan 2024 13:57:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:CC:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zZPXXgtDfaqz7Qr9qeYlYrTbmr33vMRS2fLFqA3ICKI=; b=wpQzf6o0pjksYz pbCZdCKDeZYsNJvJdozJ1RtFmyeUhqul/Vx048KR2Ch7IIKrqv+kCHNfGvDPPudAbNjsX8HniZKmd 7jabFi0e88lSwD3HUZCPiDqAct6ypYcpB3YDMQ5sSR1hcsRJhm4z7I8XKQLhFcOxxSWKrJ93UX48t +O+zU8zBX5/Ftzp/BMbn4hI+eAK191GmKFpFM0Zooiq9xMc73XHR6Ftf5qi9NpoGpxGoq33fiKlIH mBwcOZQJr9RpZlwaeFa6oS+D+Xh/o5eHDUA6Hk5QHDhmiAunU9HI/FAy/p9G/Q2ot2rM0knCkioXE I+ZOR8LrYz2SJgQACPKg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rUobm-0000000GuQx-3PV3; Tue, 30 Jan 2024 13:57:02 +0000 Received: from szxga06-in.huawei.com ([45.249.212.32]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rUobk-0000000GuPc-0OlX for linux-arm-kernel@lists.infradead.org; Tue, 30 Jan 2024 13:57:02 +0000 Received: from mail.maildlp.com (unknown [172.19.88.214]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4TPRXm5dNzz1vsnb; Tue, 30 Jan 2024 21:56:24 +0800 (CST) Received: from kwepemm600017.china.huawei.com (unknown [7.193.23.234]) by mail.maildlp.com (Postfix) with ESMTPS id 77B311A016C; Tue, 30 Jan 2024 21:56:49 +0800 (CST) Received: from [10.174.179.234] (10.174.179.234) by kwepemm600017.china.huawei.com (7.193.23.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 30 Jan 2024 21:56:47 +0800 Message-ID: Date: Tue, 30 Jan 2024 21:56:46 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: Re: [PATCH v10 6/6] arm64: introduce copy_mc_to_kernel() implementation To: Mark Rutland CC: Catalin Marinas , Will Deacon , James Morse , Robin Murphy , Andrey Ryabinin , Alexander Potapenko , Alexander Viro , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Aneesh Kumar K.V , "Naveen N. Rao" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , , "H. Peter Anvin" , , , , , , , Guohanjun References: <20240129134652.4004931-1-tongtiangen@huawei.com> <20240129134652.4004931-7-tongtiangen@huawei.com> From: Tong Tiangen In-Reply-To: X-Originating-IP: [10.174.179.234] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemm600017.china.huawei.com (7.193.23.234) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240130_055700_558871_A05AB1B6 X-CRM114-Status: GOOD ( 31.58 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgrlnKggMjAyNC8xLzMwIDE4OjIwLCBNYXJrIFJ1dGxhbmQg5YaZ6YGTOgo+IE9uIE1vbiwgSmFu IDI5LCAyMDI0IGF0IDA5OjQ2OjUyUE0gKzA4MDAsIFRvbmcgVGlhbmdlbiB3cm90ZToKPj4gVGhl IGNvcHlfbWNfdG9fa2VybmVsKCkgaGVscGVyIGlzIG1lbW9yeSBjb3B5IGltcGxlbWVudGF0aW9u IHRoYXQgaGFuZGxlcwo+PiBzb3VyY2UgZXhjZXB0aW9ucy4gSXQgY2FuIGJlIHVzZWQgaW4gbWVt b3J5IGNvcHkgc2NlbmFyaW9zIHRoYXQgdG9sZXJhdGUKPj4gaGFyZHdhcmUgbWVtb3J5IGVycm9y cyhlLmc6IHBtZW1fcmVhZC9kYXhfY29weV90b19pdGVyKS4KPj4KPj4gQ3Vycm5lbnRseSwgb25s eSB4ODYgYW5kIHBwYyBzdXVwb3J0IHRoaXMgaGVscGVyLCBhZnRlciBhcm02NCBzdXBwb3J0Cj4+ IG1hY2hpbmUgY2hlY2sgc2FmZSBmcmFtZXdvcmssIHdlIGludHJvZHVjZSBjb3B5X21jX3RvX2tl cm5lbCgpCj4+IGltcGxlbWVudGF0aW9uLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBUb25nIFRpYW5n ZW4gPHRvbmd0aWFuZ2VuQGh1YXdlaS5jb20+Cj4+IC0tLQo+PiAgIGFyY2gvYXJtNjQvaW5jbHVk ZS9hc20vc3RyaW5nLmggIHwgICA1ICsKPj4gICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VhY2Nl c3MuaCB8ICAyMSArKysKPj4gICBhcmNoL2FybTY0L2xpYi9NYWtlZmlsZSAgICAgICAgICB8ICAg MiArLQo+PiAgIGFyY2gvYXJtNjQvbGliL21lbWNweV9tYy5TICAgICAgIHwgMjU3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4gICBtbS9rYXNhbi9zaGFkb3cuYyAgICAgICAgICAg ICAgICB8ICAxMiArKwo+PiAgIDUgZmlsZXMgY2hhbmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvbWVtY3B5 X21jLlMKPiAKPiBMb29raW5nIGF0IHRoZSBkaWZmc3RhdCBhbmQgY29kZSwgdGhpcyBkdXBsaWNh dGVzIGFyY2gvYXJtNjQvbGliL21lbWNweS5TIHdpdGgKPiBhIGZldyBhbm5vdGF0aW9ucy4gRHVw bGljYXRpbmcgdGhhdCBjb2RlIGlzIG5vdCBtYWludGFpbmFibGUsIGFuZCBzbyB3ZSBjYW5ub3QK PiB0YWtlIHRoaXMgYXMtaXMuCj4gCj4gSWYgeW91IHdhbnQgYSB2ZXJzaW9uIHRoYXQgY2FuIGhh bmRsZSBmYXVsdHMgdGhhdCAqbXVzdCogYmUgd3JpdHRlbiBzdWNoIHRoYXQKPiB0aGUgY29kZSBp cyBzaGFyZWQgd2l0aCB0aGUgcmVndWxhciBtZW1jcHkuIFRoYXQgY291bGQgYmUgZG9uZSBieSB1 c2luZyBtYWNyb3MKPiB0byBpbnN0YW50aWF0ZSB0d28gY29waWVzIChvbmUgd2l0aCBmYXVsdCBo YW5kbGluZywgdGhlIG90aGVyIHdpdGhvdXQpLgo+IAo+IEl0IHdvdWxkIGFsc28gYmUgdmVyeSBo ZWxwZnVsIHRvIHNlZSAqYW55KiBpbmRpY2F0aW9uIHRoYXQgdGhpcyBoYXMgYmVlbgo+IHRlc3Rl ZCwgd2hpY2ggaXMgc29yZWx5IGxhY2tpbmcgaW4gdGhlIHNlcmllcyBhcy1pcy4KPiAKPiBNYXJr LgoKT0ssIHNvIHRoYXQncyB3aGF0IEknbSByZWFsbHkgd2FudCB0byBzb2x2ZSByaWdodCBub3cs IGEgbG90IG9mCiAgZHVwbGljYXRlIGNvZGUsIGFuZCBJJ20gZ29pbmcgdG8gdGhpbmsgYWJvdXQg aG93IHRvIGRlYWwgd2l0aCB0aGF0LgoKVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgeW91ciBnb29k IGFkdmljZTopClRvbmcuCgo+IAo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9zdHJpbmcuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3RyaW5nLmgKPj4gaW5kZXggM2Ez MjY0ZmY0N2I5Li45OTViNjNjMjZlOTkgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vc3RyaW5nLmgKPj4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdHJpbmcuaAo+ PiBAQCAtMzUsNiArMzUsMTAgQEAgZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGlu dCwgX19rZXJuZWxfc2l6ZV90KTsKPj4gICBleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKiwgY29u c3Qgdm9pZCAqLCBfX2tlcm5lbF9zaXplX3QpOwo+PiAgIGV4dGVybiB2b2lkICpfX21lbWNweSh2 b2lkICosIGNvbnN0IHZvaWQgKiwgX19rZXJuZWxfc2l6ZV90KTsKPj4gICAKPj4gKyNkZWZpbmUg X19IQVZFX0FSQ0hfTUVNQ1BZX01DCj4+ICtleHRlcm4gaW50IG1lbWNweV9tY3Modm9pZCAqLCBj b25zdCB2b2lkICosIF9fa2VybmVsX3NpemVfdCk7Cj4+ICtleHRlcm4gaW50IF9fbWVtY3B5X21j cyh2b2lkICosIGNvbnN0IHZvaWQgKiwgX19rZXJuZWxfc2l6ZV90KTsKPj4gKwo+PiAgICNkZWZp bmUgX19IQVZFX0FSQ0hfTUVNTU9WRQo+PiAgIGV4dGVybiB2b2lkICptZW1tb3ZlKHZvaWQgKiwg Y29uc3Qgdm9pZCAqLCBfX2tlcm5lbF9zaXplX3QpOwo+PiAgIGV4dGVybiB2b2lkICpfX21lbW1v dmUodm9pZCAqLCBjb25zdCB2b2lkICosIF9fa2VybmVsX3NpemVfdCk7Cj4+IEBAIC01Nyw2ICs2 MSw3IEBAIHZvaWQgbWVtY3B5X2ZsdXNoY2FjaGUodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMs IHNpemVfdCBjbnQpOwo+PiAgICAqLwo+PiAgIAo+PiAgICNkZWZpbmUgbWVtY3B5KGRzdCwgc3Jj LCBsZW4pIF9fbWVtY3B5KGRzdCwgc3JjLCBsZW4pCj4+ICsjZGVmaW5lIG1lbWNweV9tY3MoZHN0 LCBzcmMsIGxlbikgX19tZW1jcHlfbWNzKGRzdCwgc3JjLCBsZW4pCj4+ICAgI2RlZmluZSBtZW1t b3ZlKGRzdCwgc3JjLCBsZW4pIF9fbWVtbW92ZShkc3QsIHNyYywgbGVuKQo+PiAgICNkZWZpbmUg bWVtc2V0KHMsIGMsIG4pIF9fbWVtc2V0KHMsIGMsIG4pCj4+ICAgCj4+IGRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v dWFjY2Vzcy5oCj4+IGluZGV4IDE0YmU1MDAwYzVhMC4uNjFlMjhlZjIxMTJhIDEwMDY0NAo+PiAt LS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAo+PiArKysgYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAo+PiBAQCAtNDI1LDQgKzQyNSwyNSBAQCBzdGF0aWMgaW5s aW5lIHNpemVfdCBwcm9iZV9zdWJwYWdlX3dyaXRlYWJsZShjb25zdCBjaGFyIF9fdXNlciAqdWFk ZHIsCj4+ICAgCj4+ICAgI2VuZGlmIC8qIENPTkZJR19BUkNIX0hBU19TVUJQQUdFX0ZBVUxUUyAq Lwo+PiAgIAo+PiArI2lmZGVmIENPTkZJR19BUkNIX0hBU19DT1BZX01DCj4+ICsvKioKPj4gKyAq IGNvcHlfbWNfdG9fa2VybmVsIC0gbWVtb3J5IGNvcHkgdGhhdCBoYW5kbGVzIHNvdXJjZSBleGNl cHRpb25zCj4+ICsgKgo+PiArICogQGRzdDoJZGVzdGluYXRpb24gYWRkcmVzcwo+PiArICogQHNy YzoJc291cmNlIGFkZHJlc3MKPj4gKyAqIEBsZW46CW51bWJlciBvZiBieXRlcyB0byBjb3B5Cj4+ ICsgKgo+PiArICogUmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIG9yICNzaXplIGlmIHRoZXJlIHdhcyBh biBleGNlcHRpb24uCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX211 c3RfY2hlY2sKPj4gK2NvcHlfbWNfdG9fa2VybmVsKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9t LCB1bnNpZ25lZCBsb25nIHNpemUpCj4+ICt7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9 IG1lbWNweV9tY3ModG8sIGZyb20sIHNpemUpOwo+PiArCXJldHVybiAocmV0ID09IC1FRkFVTFQp ID8gc2l6ZSA6IDA7Cj4+ICt9Cj4+ICsjZGVmaW5lIGNvcHlfbWNfdG9fa2VybmVsIGNvcHlfbWNf dG9fa2VybmVsCj4+ICsjZW5kaWYKPj4gKwo+PiAgICNlbmRpZiAvKiBfX0FTTV9VQUNDRVNTX0gg Ki8KPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL01ha2VmaWxlIGIvYXJjaC9hcm02NC9s aWIvTWFrZWZpbGUKPj4gaW5kZXggYTJmZDg2NWI4MTZkLi44OTlkNmFlOTY5OGMgMTAwNjQ0Cj4+ IC0tLSBhL2FyY2gvYXJtNjQvbGliL01ha2VmaWxlCj4+ICsrKyBiL2FyY2gvYXJtNjQvbGliL01h a2VmaWxlCj4+IEBAIC0zLDcgKzMsNyBAQCBsaWIteQkJOj0gY2xlYXJfdXNlci5vIGRlbGF5Lm8g Y29weV9mcm9tX3VzZXIubwkJXAo+PiAgIAkJICAgY29weV90b191c2VyLm8gY29weV9wYWdlLm8J CQkJXAo+PiAgIAkJICAgY2xlYXJfcGFnZS5vIGNzdW0ubyBpbnNuLm8gbWVtY2hyLm8gbWVtY3B5 Lm8JCVwKPj4gICAJCSAgIG1lbXNldC5vIG1lbWNtcC5vIHN0cmNtcC5vIHN0cm5jbXAubyBzdHJs ZW4ubwlcCj4+IC0JCSAgIHN0cm5sZW4ubyBzdHJjaHIubyBzdHJyY2hyLm8gdGlzaGlmdC5vCj4+ ICsJCSAgIHN0cm5sZW4ubyBzdHJjaHIubyBzdHJyY2hyLm8gdGlzaGlmdC5vIG1lbWNweV9tYy5v Cj4+ICAgCj4+ICAgaWZlcSAoJChDT05GSUdfS0VSTkVMX01PREVfTkVPTiksIHkpCj4+ICAgb2Jq LSQoQ09ORklHX1hPUl9CTE9DS1MpCSs9IHhvci1uZW9uLm8KPj4gZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvbGliL21lbWNweV9tYy5TIGIvYXJjaC9hcm02NC9saWIvbWVtY3B5X21jLlMKPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi43MDc2YjUwMGQxNTQKPj4g LS0tIC9kZXYvbnVsbAo+PiArKysgYi9hcmNoL2FybTY0L2xpYi9tZW1jcHlfbWMuUwo+PiBAQCAt MCwwICsxLDI1NyBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDIxLCBBcm0gTGltaXRlZC4K Pj4gKyAqCj4+ICsgKiBBZGFwdGVkIGZyb20gdGhlIG9yaWdpbmFsIGF0Ogo+PiArICogaHR0cHM6 Ly9naXRodWIuY29tL0FSTS1zb2Z0d2FyZS9vcHRpbWl6ZWQtcm91dGluZXMvYmxvYi9hZmQ2MjQ0 YTFmOGQ5MjI5L3N0cmluZy9hYXJjaDY0L21lbWNweS5TCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1 ZGUgPGxpbnV4L2xpbmthZ2UuaD4KPj4gKyNpbmNsdWRlIDxhc20vYXNzZW1ibGVyLmg+Cj4+ICsK Pj4gKy8qIEFzc3VtcHRpb25zOgo+PiArICoKPj4gKyAqIEFSTXY4LWEsIEFBcmNoNjQsIHVuYWxp Z25lZCBhY2Nlc3Nlcy4KPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2RlZmluZSBMKGxhYmVsKSAu TCAjIyBsYWJlbAo+PiArCj4+ICsjZGVmaW5lIGRzdGluCXgwCj4+ICsjZGVmaW5lIHNyYwl4MQo+ PiArI2RlZmluZSBjb3VudAl4Mgo+PiArI2RlZmluZSBkc3QJeDMKPj4gKyNkZWZpbmUgc3JjZW5k CXg0Cj4+ICsjZGVmaW5lIGRzdGVuZAl4NQo+PiArI2RlZmluZSBBX2wJeDYKPj4gKyNkZWZpbmUg QV9sdwl3Ngo+PiArI2RlZmluZSBBX2gJeDcKPj4gKyNkZWZpbmUgQl9sCXg4Cj4+ICsjZGVmaW5l IEJfbHcJdzgKPj4gKyNkZWZpbmUgQl9oCXg5Cj4+ICsjZGVmaW5lIENfbAl4MTAKPj4gKyNkZWZp bmUgQ19sdwl3MTAKPj4gKyNkZWZpbmUgQ19oCXgxMQo+PiArI2RlZmluZSBEX2wJeDEyCj4+ICsj ZGVmaW5lIERfaAl4MTMKPj4gKyNkZWZpbmUgRV9sCXgxNAo+PiArI2RlZmluZSBFX2gJeDE1Cj4+ ICsjZGVmaW5lIEZfbAl4MTYKPj4gKyNkZWZpbmUgRl9oCXgxNwo+PiArI2RlZmluZSBHX2wJY291 bnQKPj4gKyNkZWZpbmUgR19oCWRzdAo+PiArI2RlZmluZSBIX2wJc3JjCj4+ICsjZGVmaW5lIEhf aAlzcmNlbmQKPj4gKyNkZWZpbmUgdG1wMQl4MTQKPj4gKwo+PiArLyogVGhpcyBpbXBsZW1lbnRh dGlvbiBoYW5kbGVzIG92ZXJsYXBzIGFuZCBzdXBwb3J0cyBib3RoIG1lbWNweSBhbmQgbWVtbW92 ZQo+PiArICAgZnJvbSBhIHNpbmdsZSBlbnRyeSBwb2ludC4gIEl0IHVzZXMgdW5hbGlnbmVkIGFj Y2Vzc2VzIGFuZCBicmFuY2hsZXNzCj4+ICsgICBzZXF1ZW5jZXMgdG8ga2VlcCB0aGUgY29kZSBz bWFsbCwgc2ltcGxlIGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlLgo+PiArCj4+ICsgICBDb3BpZXMg YXJlIHNwbGl0IGludG8gMyBtYWluIGNhc2VzOiBzbWFsbCBjb3BpZXMgb2YgdXAgdG8gMzIgYnl0 ZXMsIG1lZGl1bQo+PiArICAgY29waWVzIG9mIHVwIHRvIDEyOCBieXRlcywgYW5kIGxhcmdlIGNv cGllcy4gIFRoZSBvdmVyaGVhZCBvZiB0aGUgb3ZlcmxhcAo+PiArICAgY2hlY2sgaXMgbmVnbGln aWJsZSBzaW5jZSBpdCBpcyBvbmx5IHJlcXVpcmVkIGZvciBsYXJnZSBjb3BpZXMuCj4+ICsKPj4g KyAgIExhcmdlIGNvcGllcyB1c2UgYSBzb2Z0d2FyZSBwaXBlbGluZWQgbG9vcCBwcm9jZXNzaW5n IDY0IGJ5dGVzIHBlciBpdGVyYXRpb24uCj4+ICsgICBUaGUgZGVzdGluYXRpb24gcG9pbnRlciBp cyAxNi1ieXRlIGFsaWduZWQgdG8gbWluaW1pemUgdW5hbGlnbmVkIGFjY2Vzc2VzLgo+PiArICAg VGhlIGxvb3AgdGFpbCBpcyBoYW5kbGVkIGJ5IGFsd2F5cyBjb3B5aW5nIDY0IGJ5dGVzIGZyb20g dGhlIGVuZC4KPj4gKyovCj4+ICsKPj4gK1NZTV9GVU5DX1NUQVJUKF9fcGlfbWVtY3B5X21jcykK Pj4gKwlhZGQJc3JjZW5kLCBzcmMsIGNvdW50Cj4+ICsJYWRkCWRzdGVuZCwgZHN0aW4sIGNvdW50 Cj4+ICsJY21wCWNvdW50LCAxMjgKPj4gKwliLmhpCUwoY29weV9sb25nKQo+PiArCWNtcAljb3Vu dCwgMzIKPj4gKwliLmhpCUwoY29weTMyXzEyOCkKPj4gKwo+PiArCS8qIFNtYWxsIGNvcGllczog MC4uMzIgYnl0ZXMuICAqLwo+PiArCWNtcAljb3VudCwgMTYKPj4gKwliLmxvCUwoY29weTE2KQo+ PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUFfbCwgQV9oLCBbc3JjXSkKPj4gKwlDUFlfTUMoOTk5OGYs IGxkcAlEX2wsIERfaCwgW3NyY2VuZCwgLTE2XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlBX2ws IEFfaCwgW2RzdGluXSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlEX2wsIERfaCwgW2RzdGVuZCwg LTE2XSkKPj4gKwltb3YgeDAsICMwCj4+ICsJcmV0Cj4+ICsKPj4gKwkvKiBDb3B5IDgtMTUgYnl0 ZXMuICAqLwo+PiArTChjb3B5MTYpOgo+PiArCXRiegljb3VudCwgMywgTChjb3B5OCkKPj4gKwlD UFlfTUMoOTk5OGYsIGxkcglBX2wsIFtzcmNdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRyCUFfaCwg W3NyY2VuZCwgLThdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RyCUFfbCwgW2RzdGluXSkKPj4gKwlD UFlfTUMoOTk5OGYsIHN0cglBX2gsIFtkc3RlbmQsIC04XSkKPj4gKwltb3YgeDAsICMwCj4+ICsJ cmV0Cj4+ICsKPj4gKwkucDJhbGlnbiAzCj4+ICsJLyogQ29weSA0LTcgYnl0ZXMuICAqLwo+PiAr TChjb3B5OCk6Cj4+ICsJdGJ6CWNvdW50LCAyLCBMKGNvcHk0KQo+PiArCUNQWV9NQyg5OTk4Ziwg bGRyCUFfbHcsIFtzcmNdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRyCUJfbHcsIFtzcmNlbmQsIC00 XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cglBX2x3LCBbZHN0aW5dKQo+PiArCUNQWV9NQyg5OTk4 Ziwgc3RyCUJfbHcsIFtkc3RlbmQsIC00XSkKPj4gKwltb3YgeDAsICMwCj4+ICsJcmV0Cj4+ICsK Pj4gKwkvKiBDb3B5IDAuLjMgYnl0ZXMgdXNpbmcgYSBicmFuY2hsZXNzIHNlcXVlbmNlLiAgKi8K Pj4gK0woY29weTQpOgo+PiArCWNiegljb3VudCwgTChjb3B5MCkKPj4gKwlsc3IJdG1wMSwgY291 bnQsIDEKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcmIJQV9sdywgW3NyY10pCj4+ICsJQ1BZX01DKDk5 OThmLCBsZHJiCUNfbHcsIFtzcmNlbmQsIC0xXSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcmIJQl9s dywgW3NyYywgdG1wMV0pCj4+ICsJQ1BZX01DKDk5OThmLCBzdHJiCUFfbHcsIFtkc3Rpbl0pCj4+ ICsJQ1BZX01DKDk5OThmLCBzdHJiCUJfbHcsIFtkc3RpbiwgdG1wMV0pCj4+ICsJQ1BZX01DKDk5 OThmLCBzdHJiCUNfbHcsIFtkc3RlbmQsIC0xXSkKPj4gK0woY29weTApOgo+PiArCW1vdiB4MCwg IzAKPj4gKwlyZXQKPj4gKwo+PiArCS5wMmFsaWduIDQKPj4gKwkvKiBNZWRpdW0gY29waWVzOiAz My4uMTI4IGJ5dGVzLiAgKi8KPj4gK0woY29weTMyXzEyOCk6Cj4+ICsJQ1BZX01DKDk5OThmLCBs ZHAJQV9sLCBBX2gsIFtzcmNdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUJfbCwgQl9oLCBbc3Jj LCAxNl0pCj4+ICsJQ1BZX01DKDk5OThmLCBsZHAJQ19sLCBDX2gsIFtzcmNlbmQsIC0zMl0pCj4+ ICsJQ1BZX01DKDk5OThmLCBsZHAJRF9sLCBEX2gsIFtzcmNlbmQsIC0xNl0pCj4+ICsJY21wCWNv dW50LCA2NAo+PiArCWIuaGkJTChjb3B5MTI4KQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUFfbCwg QV9oLCBbZHN0aW5dKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUJfbCwgQl9oLCBbZHN0aW4sIDE2 XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlDX2wsIENfaCwgW2RzdGVuZCwgLTMyXSkKPj4gKwlD UFlfTUMoOTk5OGYsIHN0cAlEX2wsIERfaCwgW2RzdGVuZCwgLTE2XSkKPj4gKwltb3YgeDAsICMw Cj4+ICsJcmV0Cj4+ICsKPj4gKwkucDJhbGlnbiA0Cj4+ICsJLyogQ29weSA2NS4uMTI4IGJ5dGVz LiAgKi8KPj4gK0woY29weTEyOCk6Cj4+ICsJQ1BZX01DKDk5OThmLCBsZHAJRV9sLCBFX2gsIFtz cmMsIDMyXSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlGX2wsIEZfaCwgW3NyYywgNDhdKQo+PiAr CWNtcAljb3VudCwgOTYKPj4gKwliLmxzCUwoY29weTk2KQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRw CUdfbCwgR19oLCBbc3JjZW5kLCAtNjRdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUhfbCwgSF9o LCBbc3JjZW5kLCAtNDhdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUdfbCwgR19oLCBbZHN0ZW5k LCAtNjRdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUhfbCwgSF9oLCBbZHN0ZW5kLCAtNDhdKQo+ PiArTChjb3B5OTYpOgo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUFfbCwgQV9oLCBbZHN0aW5dKQo+ PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUJfbCwgQl9oLCBbZHN0aW4sIDE2XSkKPj4gKwlDUFlfTUMo OTk5OGYsIHN0cAlFX2wsIEVfaCwgW2RzdGluLCAzMl0pCj4+ICsJQ1BZX01DKDk5OThmLCBzdHAJ Rl9sLCBGX2gsIFtkc3RpbiwgNDhdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUNfbCwgQ19oLCBb ZHN0ZW5kLCAtMzJdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCURfbCwgRF9oLCBbZHN0ZW5kLCAt MTZdKQo+PiArCW1vdiB4MCwgIzAKPj4gKwlyZXQKPj4gKwo+PiArCS5wMmFsaWduIDQKPj4gKwkv KiBDb3B5IG1vcmUgdGhhbiAxMjggYnl0ZXMuICAqLwo+PiArTChjb3B5X2xvbmcpOgo+PiArCS8q IFVzZSBiYWNrd2FyZHMgY29weSBpZiB0aGVyZSBpcyBhbiBvdmVybGFwLiAgKi8KPj4gKwlzdWIJ dG1wMSwgZHN0aW4sIHNyYwo+PiArCWNiegl0bXAxLCBMKGNvcHkwKQo+PiArCWNtcAl0bXAxLCBj b3VudAo+PiArCWIubG8JTChjb3B5X2xvbmdfYmFja3dhcmRzKQo+PiArCj4+ICsJLyogQ29weSAx NiBieXRlcyBhbmQgdGhlbiBhbGlnbiBkc3QgdG8gMTYtYnl0ZSBhbGlnbm1lbnQuICAqLwo+PiAr Cj4+ICsJQ1BZX01DKDk5OThmLCBsZHAJRF9sLCBEX2gsIFtzcmNdKQo+PiArCWFuZAl0bXAxLCBk c3RpbiwgMTUKPj4gKwliaWMJZHN0LCBkc3RpbiwgMTUKPj4gKwlzdWIJc3JjLCBzcmMsIHRtcDEK Pj4gKwlhZGQJY291bnQsIGNvdW50LCB0bXAxCS8qIENvdW50IGlzIG5vdyAxNiB0b28gbGFyZ2Uu ICAqLwo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUFfbCwgQV9oLCBbc3JjLCAxNl0pCj4+ICsJQ1BZ X01DKDk5OThmLCBzdHAJRF9sLCBEX2gsIFtkc3Rpbl0pCj4+ICsJQ1BZX01DKDk5OThmLCBsZHAJ Ql9sLCBCX2gsIFtzcmMsIDMyXSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlDX2wsIENfaCwgW3Ny YywgNDhdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCURfbCwgRF9oLCBbc3JjLCA2NF0hKQo+PiAr CXN1YnMJY291bnQsIGNvdW50LCAxMjggKyAxNgkvKiBUZXN0IGFuZCByZWFkanVzdCBjb3VudC4g ICovCj4+ICsJYi5scwlMKGNvcHk2NF9mcm9tX2VuZCkKPj4gKwo+PiArTChsb29wNjQpOgo+PiAr CUNQWV9NQyg5OTk4Ziwgc3RwCUFfbCwgQV9oLCBbZHN0LCAxNl0pCj4+ICsJQ1BZX01DKDk5OThm LCBsZHAJQV9sLCBBX2gsIFtzcmMsIDE2XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlCX2wsIEJf aCwgW2RzdCwgMzJdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUJfbCwgQl9oLCBbc3JjLCAzMl0p Cj4+ICsJQ1BZX01DKDk5OThmLCBzdHAJQ19sLCBDX2gsIFtkc3QsIDQ4XSkKPj4gKwlDUFlfTUMo OTk5OGYsIGxkcAlDX2wsIENfaCwgW3NyYywgNDhdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCURf bCwgRF9oLCBbZHN0LCA2NF0hKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCURfbCwgRF9oLCBbc3Jj LCA2NF0hKQo+PiArCXN1YnMJY291bnQsIGNvdW50LCA2NAo+PiArCWIuaGkJTChsb29wNjQpCj4+ ICsKPj4gKwkvKiBXcml0ZSB0aGUgbGFzdCBpdGVyYXRpb24gYW5kIGNvcHkgNjQgYnl0ZXMgZnJv bSB0aGUgZW5kLiAgKi8KPj4gK0woY29weTY0X2Zyb21fZW5kKToKPj4gKwlDUFlfTUMoOTk5OGYs IGxkcAlFX2wsIEVfaCwgW3NyY2VuZCwgLTY0XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlBX2ws IEFfaCwgW2RzdCwgMTZdKQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUFfbCwgQV9oLCBbc3JjZW5k LCAtNDhdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUJfbCwgQl9oLCBbZHN0LCAzMl0pCj4+ICsJ Q1BZX01DKDk5OThmLCBsZHAJQl9sLCBCX2gsIFtzcmNlbmQsIC0zMl0pCj4+ICsJQ1BZX01DKDk5 OThmLCBzdHAJQ19sLCBDX2gsIFtkc3QsIDQ4XSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlDX2ws IENfaCwgW3NyY2VuZCwgLTE2XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlEX2wsIERfaCwgW2Rz dCwgNjRdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUVfbCwgRV9oLCBbZHN0ZW5kLCAtNjRdKQo+ PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUFfbCwgQV9oLCBbZHN0ZW5kLCAtNDhdKQo+PiArCUNQWV9N Qyg5OTk4Ziwgc3RwCUJfbCwgQl9oLCBbZHN0ZW5kLCAtMzJdKQo+PiArCUNQWV9NQyg5OTk4Ziwg c3RwCUNfbCwgQ19oLCBbZHN0ZW5kLCAtMTZdKQo+PiArCW1vdiB4MCwgIzAKPj4gKwlyZXQKPj4g Kwo+PiArCS5wMmFsaWduIDQKPj4gKwo+PiArCS8qIExhcmdlIGJhY2t3YXJkcyBjb3B5IGZvciBv dmVybGFwcGluZyBjb3BpZXMuCj4+ICsJICAgQ29weSAxNiBieXRlcyBhbmQgdGhlbiBhbGlnbiBk c3QgdG8gMTYtYnl0ZSBhbGlnbm1lbnQuICAqLwo+PiArTChjb3B5X2xvbmdfYmFja3dhcmRzKToK Pj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlEX2wsIERfaCwgW3NyY2VuZCwgLTE2XSkKPj4gKwlhbmQJ dG1wMSwgZHN0ZW5kLCAxNQo+PiArCXN1YglzcmNlbmQsIHNyY2VuZCwgdG1wMQo+PiArCXN1Yglj b3VudCwgY291bnQsIHRtcDEKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlBX2wsIEFfaCwgW3NyY2Vu ZCwgLTE2XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlEX2wsIERfaCwgW2RzdGVuZCwgLTE2XSkK Pj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlCX2wsIEJfaCwgW3NyY2VuZCwgLTMyXSkKPj4gKwlDUFlf TUMoOTk5OGYsIGxkcAlDX2wsIENfaCwgW3NyY2VuZCwgLTQ4XSkKPj4gKwlDUFlfTUMoOTk5OGYs IGxkcAlEX2wsIERfaCwgW3NyY2VuZCwgLTY0XSEpCj4+ICsJc3ViCWRzdGVuZCwgZHN0ZW5kLCB0 bXAxCj4+ICsJc3Vicwljb3VudCwgY291bnQsIDEyOAo+PiArCWIubHMJTChjb3B5NjRfZnJvbV9z dGFydCkKPj4gKwo+PiArTChsb29wNjRfYmFja3dhcmRzKToKPj4gKwlDUFlfTUMoOTk5OGYsIHN0 cAlBX2wsIEFfaCwgW2RzdGVuZCwgLTE2XSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlBX2wsIEFf aCwgW3NyY2VuZCwgLTE2XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlCX2wsIEJfaCwgW2RzdGVu ZCwgLTMyXSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlCX2wsIEJfaCwgW3NyY2VuZCwgLTMyXSkK Pj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlDX2wsIENfaCwgW2RzdGVuZCwgLTQ4XSkKPj4gKwlDUFlf TUMoOTk5OGYsIGxkcAlDX2wsIENfaCwgW3NyY2VuZCwgLTQ4XSkKPj4gKwlDUFlfTUMoOTk5OGYs IHN0cAlEX2wsIERfaCwgW2RzdGVuZCwgLTY0XSEpCj4+ICsJQ1BZX01DKDk5OThmLCBsZHAJRF9s LCBEX2gsIFtzcmNlbmQsIC02NF0hKQo+PiArCXN1YnMJY291bnQsIGNvdW50LCA2NAo+PiArCWIu aGkJTChsb29wNjRfYmFja3dhcmRzKQo+PiArCj4+ICsJLyogV3JpdGUgdGhlIGxhc3QgaXRlcmF0 aW9uIGFuZCBjb3B5IDY0IGJ5dGVzIGZyb20gdGhlIHN0YXJ0LiAgKi8KPj4gK0woY29weTY0X2Zy b21fc3RhcnQpOgo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUdfbCwgR19oLCBbc3JjLCA0OF0pCj4+ ICsJQ1BZX01DKDk5OThmLCBzdHAJQV9sLCBBX2gsIFtkc3RlbmQsIC0xNl0pCj4+ICsJQ1BZX01D KDk5OThmLCBsZHAJQV9sLCBBX2gsIFtzcmMsIDMyXSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlC X2wsIEJfaCwgW2RzdGVuZCwgLTMyXSkKPj4gKwlDUFlfTUMoOTk5OGYsIGxkcAlCX2wsIEJfaCwg W3NyYywgMTZdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUNfbCwgQ19oLCBbZHN0ZW5kLCAtNDhd KQo+PiArCUNQWV9NQyg5OTk4ZiwgbGRwCUNfbCwgQ19oLCBbc3JjXSkKPj4gKwlDUFlfTUMoOTk5 OGYsIHN0cAlEX2wsIERfaCwgW2RzdGVuZCwgLTY0XSkKPj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlH X2wsIEdfaCwgW2RzdGluLCA0OF0pCj4+ICsJQ1BZX01DKDk5OThmLCBzdHAJQV9sLCBBX2gsIFtk c3RpbiwgMzJdKQo+PiArCUNQWV9NQyg5OTk4Ziwgc3RwCUJfbCwgQl9oLCBbZHN0aW4sIDE2XSkK Pj4gKwlDUFlfTUMoOTk5OGYsIHN0cAlDX2wsIENfaCwgW2RzdGluXSkKPj4gKwltb3YgeDAsICMw Cj4+ICsJcmV0Cj4+ICsKPj4gKzk5OTg6CW1vdiB4MCwgIy1FRkFVTFQKPj4gKwlyZXQKPj4gK1NZ TV9GVU5DX0VORChfX3BpX21lbWNweV9tY3MpCj4+ICsKPj4gK1NZTV9GVU5DX0FMSUFTKF9fbWVt Y3B5X21jcywgX19waV9tZW1jcHlfbWNzKQo+PiArRVhQT1JUX1NZTUJPTChfX21lbWNweV9tY3Mp Cj4+ICtTWU1fRlVOQ19BTElBU19XRUFLKG1lbWNweV9tY3MsIF9fbWVtY3B5X21jcykKPj4gK0VY UE9SVF9TWU1CT0wobWVtY3B5X21jcykKPj4gZGlmZiAtLWdpdCBhL21tL2thc2FuL3NoYWRvdy5j IGIvbW0va2FzYW4vc2hhZG93LmMKPj4gaW5kZXggOWVmODRmMzE4MzNmLi5lNjUxOWZkMzI5YjIg MTAwNjQ0Cj4+IC0tLSBhL21tL2thc2FuL3NoYWRvdy5jCj4+ICsrKyBiL21tL2thc2FuL3NoYWRv dy5jCj4+IEBAIC03OSw2ICs3OSwxOCBAQCB2b2lkICptZW1jcHkodm9pZCAqZGVzdCwgY29uc3Qg dm9pZCAqc3JjLCBzaXplX3QgbGVuKQo+PiAgIH0KPj4gICAjZW5kaWYKPj4gICAKPj4gKyNpZmRl ZiBfX0hBVkVfQVJDSF9NRU1DUFlfTUMKPj4gKyN1bmRlZiBtZW1jcHlfbWNzCj4+ICtpbnQgbWVt Y3B5X21jcyh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBsZW4pCj4+ICt7Cj4+ ICsJaWYgKCFjaGVja19tZW1vcnlfcmVnaW9uKCh1bnNpZ25lZCBsb25nKXNyYywgbGVuLCBmYWxz ZSwgX1JFVF9JUF8pIHx8Cj4+ICsJICAgICFjaGVja19tZW1vcnlfcmVnaW9uKCh1bnNpZ25lZCBs b25nKWRlc3QsIGxlbiwgdHJ1ZSwgX1JFVF9JUF8pKQo+PiArCQlyZXR1cm4gKHVuc2lnbmVkIGxv bmcpbGVuOwo+PiArCj4+ICsJcmV0dXJuIF9fbWVtY3B5X21jcyhkZXN0LCBzcmMsIGxlbik7Cj4+ ICt9Cj4+ICsjZW5kaWYKPj4gKwo+PiAgIHZvaWQgKl9fYXNhbl9tZW1zZXQodm9pZCAqYWRkciwg aW50IGMsIHNzaXplX3QgbGVuKQo+PiAgIHsKPj4gICAJaWYgKCFrYXNhbl9jaGVja19yYW5nZShh ZGRyLCBsZW4sIHRydWUsIF9SRVRfSVBfKSkKPj4gLS0gCj4+IDIuMjUuMQo+Pgo+IC4KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK