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 A50AFC4167B for ; Wed, 29 Nov 2023 12:30:09 +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-Transfer-Encoding:Content-Type: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=rQ5Ktf+tMmYF0MAnFgK2XqgikVieZPgQE/k4GubqVaM=; b=z8Ck6VNBa2alxV YfWBfKjgN2Qwa6lEqvRYp7esIJcQ7RnppQqXX8esGDAyiFoSpfITw0iIt3sifc2HEKMaPevhRL7ze B0StNiIadmXJqHvixjY/Ajv+fy1N99QHFNhA6O8V1IBfXe1dptvTh5wfrTEwPx8p4q1KswN6vwYaB VPQ3y/9Jmh8Xw7TUCfPYtLlNhDc/yfHzrixQulNLnbxYrEVGC8vW+EOKI90P8ffVy//Yv1XUkyY0u DqJkzuE1ZgWqL2n0MiDegaSGRfxYLxLkO0ynLu9LCKZZJzjcYIQqc2R77yHwNpnbKZsAEdWtmTvjD UOMiXncNxceDG5LzT0Fg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8JhJ-008JwV-1X; Wed, 29 Nov 2023 12:29:45 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8JhF-008JvI-32 for linux-arm-kernel@lists.infradead.org; Wed, 29 Nov 2023 12:29:43 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 645A62F4; Wed, 29 Nov 2023 04:30:26 -0800 (PST) Received: from [10.57.70.211] (unknown [10.57.70.211]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E85733F5A1; Wed, 29 Nov 2023 04:29:35 -0800 (PST) Message-ID: <02d85331-eaa0-4d76-a3d6-ea5eb18b683c@arm.com> Date: Wed, 29 Nov 2023 12:29:34 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 01/14] mm: Batch-copy PTE ranges during fork() Content-Language: en-GB To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, andreyknvl@gmail.com, anshuman.khandual@arm.com, ardb@kernel.org, catalin.marinas@arm.com, david@redhat.com, dvyukov@google.com, glider@google.com, james.morse@arm.com, jhubbard@nvidia.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mark.rutland@arm.com, maz@kernel.org, oliver.upton@linux.dev, ryabinin.a.a@gmail.com, suzuki.poulose@arm.com, vincenzo.frascino@arm.com, wangkefeng.wang@huawei.com, will@kernel.org, willy@infradead.org, yuzenghui@huawei.com, yuzhao@google.com, ziy@nvidia.com References: <20231115163018.1303287-2-ryan.roberts@arm.com> <20231127055414.9015-1-v-songbaohua@oppo.com> <755343a1-ce94-4d38-8317-0925e2dae3bc@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231129_042942_072637_FBD05988 X-CRM114-Status: GOOD ( 30.60 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjgvMTEvMjAyMyAxOTowMCwgQmFycnkgU29uZyB3cm90ZToKPiBPbiBXZWQsIE5vdiAyOSwg MjAyMyBhdCAxMjowMOKAr0FNIFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2JlcnRzQGFybS5jb20+IHdy b3RlOgo+Pgo+PiBPbiAyOC8xMS8yMDIzIDAwOjExLCBCYXJyeSBTb25nIHdyb3RlOgo+Pj4gT24g TW9uLCBOb3YgMjcsIDIwMjMgYXQgMTA6MjTigK9QTSBSeWFuIFJvYmVydHMgPHJ5YW4ucm9iZXJ0 c0Bhcm0uY29tPiB3cm90ZToKPj4+Pgo+Pj4+IE9uIDI3LzExLzIwMjMgMDU6NTQsIEJhcnJ5IFNv bmcgd3JvdGU6Cj4+Pj4+PiArY29weV9wcmVzZW50X3B0ZXMoc3RydWN0IHZtX2FyZWFfc3RydWN0 ICpkc3Rfdm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnNyY192bWEsCj4+Pj4+PiArICAgICAg ICAgICAgICBwdGVfdCAqZHN0X3B0ZSwgcHRlX3QgKnNyY19wdGUsCj4+Pj4+PiArICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAo+Pj4+Pj4gKyAgICAg ICAgICAgICAgaW50ICpyc3MsIHN0cnVjdCBmb2xpbyAqKnByZWFsbG9jKQo+Pj4+Pj4gIHsKPj4+ Pj4+ICAgICAgc3RydWN0IG1tX3N0cnVjdCAqc3JjX21tID0gc3JjX3ZtYS0+dm1fbW07Cj4+Pj4+ PiAgICAgIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MgPSBzcmNfdm1hLT52bV9mbGFnczsKPj4+Pj4+ ICAgICAgcHRlX3QgcHRlID0gcHRlcF9nZXQoc3JjX3B0ZSk7Cj4+Pj4+PiAgICAgIHN0cnVjdCBw YWdlICpwYWdlOwo+Pj4+Pj4gICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlvOwo+Pj4+Pj4gKyAgICBp bnQgbnIgPSAxOwo+Pj4+Pj4gKyAgICBib29sIGFub247Cj4+Pj4+PiArICAgIGJvb2wgYW55X2Rp cnR5ID0gcHRlX2RpcnR5KHB0ZSk7Cj4+Pj4+PiArICAgIGludCBpOwo+Pj4+Pj4KPj4+Pj4+ICAg ICAgcGFnZSA9IHZtX25vcm1hbF9wYWdlKHNyY192bWEsIGFkZHIsIHB0ZSk7Cj4+Pj4+PiAtICAg IGlmIChwYWdlKQo+Pj4+Pj4gKyAgICBpZiAocGFnZSkgewo+Pj4+Pj4gICAgICAgICAgICAgIGZv bGlvID0gcGFnZV9mb2xpbyhwYWdlKTsKPj4+Pj4+IC0gICAgaWYgKHBhZ2UgJiYgZm9saW9fdGVz dF9hbm9uKGZvbGlvKSkgewo+Pj4+Pj4gLSAgICAgICAgICAgIC8qCj4+Pj4+PiAtICAgICAgICAg ICAgICogSWYgdGhpcyBwYWdlIG1heSBoYXZlIGJlZW4gcGlubmVkIGJ5IHRoZSBwYXJlbnQgcHJv Y2VzcywKPj4+Pj4+IC0gICAgICAgICAgICAgKiBjb3B5IHRoZSBwYWdlIGltbWVkaWF0ZWx5IGZv ciB0aGUgY2hpbGQgc28gdGhhdCB3ZSdsbCBhbHdheXMKPj4+Pj4+IC0gICAgICAgICAgICAgKiBn dWFyYW50ZWUgdGhlIHBpbm5lZCBwYWdlIHdvbid0IGJlIHJhbmRvbWx5IHJlcGxhY2VkIGluIHRo ZQo+Pj4+Pj4gLSAgICAgICAgICAgICAqIGZ1dHVyZS4KPj4+Pj4+IC0gICAgICAgICAgICAgKi8K Pj4+Pj4+IC0gICAgICAgICAgICBmb2xpb19nZXQoZm9saW8pOwo+Pj4+Pj4gLSAgICAgICAgICAg IGlmICh1bmxpa2VseShwYWdlX3RyeV9kdXBfYW5vbl9ybWFwKHBhZ2UsIGZhbHNlLCBzcmNfdm1h KSkpIHsKPj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgIC8qIFBhZ2UgbWF5IGJlIHBpbm5lZCwg d2UgaGF2ZSB0byBjb3B5LiAqLwo+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgZm9saW9fcHV0 KGZvbGlvKTsKPj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb3B5X3ByZXNlbnRf cGFnZShkc3Rfdm1hLCBzcmNfdm1hLCBkc3RfcHRlLCBzcmNfcHRlLAo+Pj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsIHJzcywgcHJlYWxsb2Ms IHBhZ2UpOwo+Pj4+Pj4gKyAgICAgICAgICAgIGFub24gPSBmb2xpb190ZXN0X2Fub24oZm9saW8p Owo+Pj4+Pj4gKyAgICAgICAgICAgIG5yID0gZm9saW9fbnJfcGFnZXNfY29udF9tYXBwZWQoZm9s aW8sIHBhZ2UsIHNyY19wdGUsIGFkZHIsCj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbmQsIHB0ZSwgJmFueV9kaXJ0eSk7Cj4+Pj4+Cj4+Pj4+IGlu IGNhc2Ugd2UgaGF2ZSBhIGxhcmdlIGZvbGlvIHdpdGggMTYgQ09OVFBURSBiYXNlcGFnZXMsIGFu ZCB1c2Vyc3BhY2UKPj4+Pj4gZG8gbWFkdmlzZShhZGRyICsgNEtCICogNSwgRE9OVE5FRUQpOwo+ Pj4+Cj4+Pj4gbml0OiBpZiB5b3UgYXJlIG9mZnNldHRpbmcgYnkgNSBwYWdlcyBmcm9tIGFkZHIs IHRoZW4gYmVsb3cgSSB0aGluayB5b3UgbWVhbgo+Pj4+IHBhZ2UwfnBhZ2U0IGFuZCBwYWdlNn4x NT8KPj4+Pgo+Pj4+Pgo+Pj4+PiB0aHVzLCB0aGUgNHRoIGJhc2VwYWdlIG9mIFBURSBiZWNvbWVz IFBURV9OT05FIGFuZCBmb2xpb19ucl9wYWdlc19jb250X21hcHBlZCgpCj4+Pj4+IHdpbGwgcmV0 dXJuIDE1LiBpbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBjb3B5IHBhZ2UwfnBhZ2UzIGFuZCBwYWdl NX5wYWdlMTUuCj4+Pj4KPj4+PiBObyBJIGRvbid0IHRoaW5rIGZvbGlvX25yX3BhZ2VzX2NvbnRf bWFwcGVkKCkgd2lsbCByZXR1cm4gMTU7IHRoYXQncyBjZXJ0YWlubHkKPj4+PiBub3QgaG93IGl0 cyBpbnRlbmRlZCB0byB3b3JrLiBUaGUgZnVuY3Rpb24gaXMgc2Nhbm5pbmcgZm9yd2FyZHMgZnJv bSB0aGUgY3VycmVudAo+Pj4+IHB0ZSB1bnRpbCBpdCBmaW5kcyB0aGUgZmlyc3QgcHRlIHRoYXQg ZG9lcyBub3QgZml0IGluIHRoZSBiYXRjaCAtIGVpdGhlciBiZWNhdXNlCj4+Pj4gaXQgbWFwcyBh IFBGTiB0aGF0IGlzIG5vdCBjb250aWd1b3VzLCBvciBiZWNhdXNlIHRoZSBwZXJtaXNzaW9ucyBh cmUgZGlmZmVyZW50Cj4+Pj4gKGFsdGhvdWdoIHRoaXMgaXMgYmVpbmcgcmVsYXhlZCBhIGJpdDsg c2VlIGNvbnZlcnNhdGlvbiB3aXRoIERhdmlkSCBhZ2FpbnN0IHRoaXMKPj4+PiBzYW1lIHBhdGNo KS4KPj4+Pgo+Pj4+IFNvIHRoZSBmaXJzdCB0aW1lIHRocm91Z2ggdGhpcyBsb29wLCBmb2xpb19u cl9wYWdlc19jb250X21hcHBlZCgpIHdpbGwgcmV0dXJuIDUsCj4+Pj4gKHBhZ2UwfnBhZ2U0KSB0 aGVuIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCB3ZSB3aWxsIGdvIHRocm91Z2ggdGhl Cj4+Pj4gIXByZXNlbnQgcGF0aCBhbmQgcHJvY2VzcyB0aGUgc2luZ2xlIHN3YXAgbWFya2VyLiBU aGVuIHRoZSAzcmQgdGltZSB0aHJvdWdoIHRoZQo+Pj4+IGxvb3AgZm9saW9fbnJfcGFnZXNfY29u dF9tYXBwZWQoKSB3aWxsIHJldHVybiAxMC4KPj4+Cj4+PiBvbmUgY2FzZSB3ZSBoYXZlIG1ldCBi eSBydW5uaW5nIGh1bmRyZWRzIG9mIHJlYWwgcGhvbmVzIGlzIGFzIGJlbG93LAo+Pj4KPj4+Cj4+ PiBzdGF0aWMgaW50Cj4+PiBjb3B5X3B0ZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRz dF92bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqc3JjX3ZtYSwKPj4+ICAgICAgICAgICAgICAg IHBtZF90ICpkc3RfcG1kLCBwbWRfdCAqc3JjX3BtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAo+Pj4g ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQpCj4+PiB7Cj4+PiAgICAgICAgIC4uLgo+ Pj4gICAgICAgICBkc3RfcHRlID0gcHRlX2FsbG9jX21hcF9sb2NrKGRzdF9tbSwgZHN0X3BtZCwg YWRkciwgJmRzdF9wdGwpOwo+Pj4gICAgICAgICBpZiAoIWRzdF9wdGUpIHsKPj4+ICAgICAgICAg ICAgICAgICByZXQgPSAtRU5PTUVNOwo+Pj4gICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+Pj4g ICAgICAgICB9Cj4+PiAgICAgICAgIHNyY19wdGUgPSBwdGVfb2Zmc2V0X21hcF9ub2xvY2soc3Jj X21tLCBzcmNfcG1kLCBhZGRyLCAmc3JjX3B0bCk7Cj4+PiAgICAgICAgIGlmICghc3JjX3B0ZSkg ewo+Pj4gICAgICAgICAgICAgICAgIHB0ZV91bm1hcF91bmxvY2soZHN0X3B0ZSwgZHN0X3B0bCk7 Cj4+PiAgICAgICAgICAgICAgICAgLyogcmV0ID09IDAgKi8KPj4+ICAgICAgICAgICAgICAgICBn b3RvIG91dDsKPj4+ICAgICAgICAgfQo+Pj4gICAgICAgICBzcGluX2xvY2tfbmVzdGVkKHNyY19w dGwsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKPj4+ICAgICAgICAgb3JpZ19zcmNfcHRlID0gc3Jj X3B0ZTsKPj4+ICAgICAgICAgb3JpZ19kc3RfcHRlID0gZHN0X3B0ZTsKPj4+ICAgICAgICAgYXJj aF9lbnRlcl9sYXp5X21tdV9tb2RlKCk7Cj4+Pgo+Pj4gICAgICAgICBkbyB7Cj4+PiAgICAgICAg ICAgICAgICAgLyoKPj4+ICAgICAgICAgICAgICAgICAgKiBXZSBhcmUgaG9sZGluZyB0d28gbG9j a3MgYXQgdGhpcyBwb2ludCAtIGVpdGhlciBvZiB0aGVtCj4+PiAgICAgICAgICAgICAgICAgICog Y291bGQgZ2VuZXJhdGUgbGF0ZW5jaWVzIGluIGFub3RoZXIgdGFzayBvbiBhbm90aGVyIENQVS4K Pj4+ICAgICAgICAgICAgICAgICAgKi8KPj4+ICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3Mg Pj0gMzIpIHsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzID0gMDsKPj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkX3Jlc2NoZWQoKSB8fAo+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNwaW5fbmVlZGJyZWFrKHNyY19wdGwpIHx8IHNwaW5fbmVlZGJy ZWFrKGRzdF9wdGwpKQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK Pj4+ICAgICAgICAgICAgICAgICB9Cj4+PiAgICAgICAgICAgICAgICAgcHRlbnQgPSBwdGVwX2dl dChzcmNfcHRlKTsKPj4+ICAgICAgICAgICAgICAgICBpZiAocHRlX25vbmUocHRlbnQpKSB7Cj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcysrOwo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7Cj4+PiAgICAgICAgICAgICAgICAgfQo+Pj4KPj4+IHRoZSBhYm92 ZSBpdGVyYXRpb24gY2FuIGJyZWFrIHdoZW4gcHJvZ3Jlc3MgPiA9MzIuIGZvciBleGFtcGxlLCBh dCB0aGUKPj4+IGJlZ2lubmluZywKPj4+IGlmIGFsbCBQVEVzIGFyZSBub25lLCB3ZSBicmVhayB3 aGVuIHByb2dyZXNzID49MzIsIGFuZCB3ZSBicmVhayB3aGVuIHdlCj4+PiBhcmUgaW4gdGhlIDh0 aCBwdGUgb2YgMTZQVEVzIHdoaWNoIG1pZ2h0IGJlY29tZSBDT05UUFRFIGFmdGVyIHdlIHJlbGVh c2UKPj4+IFBUTC4KPj4+Cj4+PiBzaW5jZSB3ZSBhcmUgcmVsZWFzaW5nIFBUTHMsIG5leHQgdGlt ZSB3aGVuIHdlIGdldCBQVEwsIHRob3NlIHB0ZV9ub25lKCkgbWlnaHQKPj4+IGJlY29tZSBwdGVf Y29udCgpLCB0aGVuIGFyZSB5b3UgZ29pbmcgdG8gY29weSBDT05UUFRFIGZyb20gOHRoIHB0ZSwK Pj4+IHRodXMsIGltbWVkaWF0ZWx5Cj4+PiBicmVhayB0aGUgY29uc2lzdGVudCBDT05QVEVzIHJ1 bGUgb2YgaGFyZHdhcmU/Cj4+Pgo+Pj4gcHRlMCAtIHB0ZV9ub25lCj4+PiBwdGUxIC0gcHRlX25v bmUKPj4+IC4uLgo+Pj4gcHRlNyAtIHB0ZV9ub25lCj4+Pgo+Pj4gcHRlOCAtIHB0ZV9jb250Cj4+ PiAuLi4KPj4+IHB0ZTE1IC0gcHRlX2NvbnQKPj4+Cj4+PiBzbyB3ZSBkaWQgc29tZSBtb2RpZmlj YXRpb24gdG8gYXZvaWQgYSBicmVhayBpbiB0aGUgbWlkZGxlIG9mIFBURXMKPj4+IHdoaWNoIGNh biBwb3RlbnRpYWxseQo+Pj4gYmVjb21lIENPTlRQRS4KPj4+IGRvIHsKPj4+ICAgICAgICAgICAg ICAgICAvKgo+Pj4gICAgICAgICAgICAgICAgICogV2UgYXJlIGhvbGRpbmcgdHdvIGxvY2tzIGF0 IHRoaXMgcG9pbnQgLSBlaXRoZXIgb2YgdGhlbQo+Pj4gICAgICAgICAgICAgICAgICogY291bGQg Z2VuZXJhdGUgbGF0ZW5jaWVzIGluIGFub3RoZXIgdGFzayBvbiBhbm90aGVyIENQVS4KPj4+ICAg ICAgICAgICAgICAgICAqLwo+Pj4gICAgICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+PSAzMikg ewo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IDA7Cj4+PiAj aWZkZWYgQ09ORklHX0NPTlRfUFRFX0hVR0VQQUdFCj4+PiAgICAgICAgICAgICAgICAgLyoKPj4+ ICAgICAgICAgICAgICAgICAqIFhYWDogZG9uJ3QgcmVsZWFzZSBwdGwgYXQgYW4gdW5saWduZWQg YWRkcmVzcyBhcwo+Pj4gY29udF9wdGUgbWlnaHQgZm9ybSB3aGlsZQo+Pj4gICAgICAgICAgICAg ICAgICogcHRsIGlzIHJlbGVhc2VkLCB0aGlzIGNhdXNlcyBkb3VibGUtbWFwCj4+PiAgICAgICAg ICAgICAgICAgKi8KPj4+ICAgICAgICAgICAgICAgICBpZiAoIXZtYV9pc19jaHBfYW5vbnltb3Vz KHNyY192bWEpIHx8Cj4+PiAgICAgICAgICAgICAgICAgICAgKHZtYV9pc19jaHBfYW5vbnltb3Vz KHNyY192bWEpICYmIElTX0FMSUdORUQoYWRkciwKPj4+IEhQQUdFX0NPTlRfUFRFX1NJWkUpKSkK Pj4+ICNlbmRpZgo+Pj4gICAgICAgICAgICAgICAgIGlmIChuZWVkX3Jlc2NoZWQoKSB8fAo+Pj4g ICAgICAgICAgICAgICAgICAgIHNwaW5fbmVlZGJyZWFrKHNyY19wdGwpIHx8IHNwaW5fbmVlZGJy ZWFrKGRzdF9wdGwpKQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK Pj4+IH0KPj4+Cj4+PiBXZSBjb3VsZCBvbmx5IHJlcHJvZHVjZSB0aGUgYWJvdmUgaXNzdWUgYnkg cnVubmluZyB0aG91c2FuZHMgb2YgcGhvbmVzLgo+Pj4KPj4+IERvZXMgeW91ciBjb2RlIHN1cnZp dmUgZnJvbSB0aGlzIHByb2JsZW0/Cj4+Cj4+IFllcyBJJ20gY29uZmlkZW50IG15IGNvZGUgaXMg c2FmZSBhZ2FpbnN0IHRoaXM7IGFzIEkgc2FpZCBiZWZvcmUsIHRoZSBDT05UX1BURQo+PiBiaXQg aXMgbm90IGJsaW5kbHkgImNvcGllZCIgZnJvbSBwYXJlbnQgdG8gY2hpbGQgcHRlLiBBcyBmYXIg YXMgdGhlIGNvcmUtbW0gaXMKPj4gY29uY2VybmVkLCB0aGVyZSBpcyBubyBDT05UX1BURSBiaXQ7 IHRoZXkgYXJlIGp1c3QgcmVndWxhciBQVEVzLiBTbyB0aGUgY29kZQo+PiB3aWxsIHNlZSBzb21l IHB0ZV9ub25lKCkgZW50cmllcyBmb2xsb3dlZCBieSBzb21lIHB0ZV9wcmVzZW50KCkgZW50cmll cy4gQW5kCj4+IHdoZW4gY2FsbGluZyBzZXRfcHRlcygpIG9uIHRoZSBjaGlsZCwgdGhlIGFyY2gg Y29kZSB3aWxsIGV2YWx1YXRlIHRoZSBjdXJyZW50Cj4+IHN0YXRlIG9mIHRoZSBwZ3RhYmxlIGFs b25nIHdpdGggdGhlIG5ldyBzZXRfcHRlcygpIHJlcXVlc3QgYW5kIGRldGVybWluZSB3aGVyZQo+ PiBpdCBzaG91bGQgaW5zZXJ0IHRoZSBDT05UX1BURSBiaXQuCj4gCj4geWVwLCBpIGhhdmUgcmVh ZCB2ZXJ5IGNhcmVmdWxseSBhbmQgdGhpbmsgeW91ciBjb2RlIGlzIHNhZmUgaGVyZS4gVGhlCj4g b25seSBwcm9ibGVtCj4gaXMgdGhhdCB0aGUgY29kZSBjYW4gcmFuZG9tbHkgdW5mb2xkIHBhcmVu dCBwcm9jZXNzZXMnIENPTlBURSB3aGlsZSBzZXR0aW5nCj4gd3Jwcm90ZWN0IGluIHRoZSBtaWRk bGUgb2YgYSBsYXJnZSBmb2xpbyB3aGlsZSBpdCBhY3R1YWxseSBzaG91bGQga2VlcCBDT05UCj4g Yml0IGFzIGFsbCBQVEVzIGNhbiBiZSBzdGlsbCBjb25zaXN0ZW50IGlmIHdlIHNldCBwcm90ZWN0 IGZyb20gdGhlIDFzdCBQVEUuCj4gCj4gd2hpbGUgQSBmb3JrcyBCLCAgcHJvZ3Jlc3MgPj0gMzIg bWlnaHQgaW50ZXJydXB0IGluIHRoZSBtaWRkbGUgb2YgYQo+IG5ldyBDT05UUFRFIGZvbGlvIHdo aWNoIGlzIGZvcm1pbmcsIGFzIHdlIGhhdmUgdG8gc2V0IHdycHJvdGVjdCB0byBwYXJlbnQgQSwK PiB0aGlzIHBhcmVudCBpbW1lZGlhdGVseSBsb3NlcyBDT05UIGJpdC4gdGhpcyBpcyAgc2FkLiBi dXQgaSBjYW4ndCBmaW5kIGEKPiBnb29kIHdheSB0byByZXNvbHZlIGl0IHVubGVzcyBDT05UIGlz IGV4cG9zZWQgdG8gbW0tY29yZS4gYW55IGlkZWEgb24KPiB0aGlzPwoKTm8gdGhpcyBpcyBub3Qg dGhlIGNhc2U7IGNvcHlfcHJlc2VudF9wdGVzKCkgd2lsbCBjb3B5IGFzIG1hbnkgcHRlcyBhcyBh cmUKcGh5c2NpYWxseSBjb250aWd1b3VzIGFuZCBiZWxvbmcgdG8gdGhlIHNhbWUgZm9saW8gKHdo aWNoIHVzdWFsbHkgbWVhbnMgInRoZQp3aG9sZSBmb2xpbyIgLSB0aGUgb25seSB0aW1lIGl0IGRv ZXNuJ3QgaXMgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUgdm1hKS4gV2UKd2lsbCB0aGVuIHJl dHVybiB0byB0aGUgbWFpbiBsb29wIGFuZCBtb3ZlIGZvcndhcmRzIGJ5IHRoZSBudW1iZXIgb2Yg cHRlcyB0aGF0CndlcmUgc2VydmljZWQsIGluY2x1ZGluZzoKCnByb2dyZXNzICs9IDggKiByZXQ7 CgpUaGF0IG1pZ2h0IGdvIGFib3ZlIDMyLCBzbyB3ZSB3aWxsIGZsYXNoIHRoZSBsb2NrLiBCdXQg d2UgaGF2ZW4ndCBkb25lIHRoYXQgaW4KdGhlIG1pZGRsZSBvZiBhIGxhcmdlIGZvbGlvLiBTbyB0 aGUgY29udHB0ZS1uZXNzIHNob3VsZCBiZSBwcmVzZXJ2ZWQuCgo+IAo+IE91ciBjb2RlWzFdIHJl c29sdmVzIHRoaXMgYnkgb25seSBicmVha2luZyBhdCB0aGUgYWxpZ25lZCBhZGRyZXNzCj4gCj4g aWYgKHByb2dyZXNzID49IDMyKSB7Cj4gICAgICBwcm9ncmVzcyA9IDA7Cj4gICAgICAjaWZkZWYg Q09ORklHX0NPTlRfUFRFX0hVR0VQQUdFCj4gICAgICAvKgo+ICAgICAgICogWFhYOiBkb24ndCBy ZWxlYXNlIHB0bCBhdCBhbiB1bmxpZ25lZCBhZGRyZXNzIGFzIGNvbnRfcHRlCj4gbWlnaHQgZm9y bSB3aGlsZQo+ICAgICAgICogcHRsIGlzIHJlbGVhc2VkLCB0aGlzIGNhdXNlcyBkb3VibGUtbWFw Cj4gICAgICAqLwo+ICAgICBpZiAoIXZtYV9pc19jaHBfYW5vbnltb3VzKHNyY192bWEpIHx8Cj4g ICAgICAgICAodm1hX2lzX2NocF9hbm9ueW1vdXMoc3JjX3ZtYSkgJiYgSVNfQUxJR05FRChhZGRy LAo+IEhQQUdFX0NPTlRfUFRFX1NJWkUpKSkKPiAgICAgI2VuZGlmCj4gICAgICAgICBpZiAobmVl ZF9yZXNjaGVkKCkgfHwKPiAgICAgICAgICAgIHNwaW5fbmVlZGJyZWFrKHNyY19wdGwpIHx8IHNw aW5fbmVlZGJyZWFrKGRzdF9wdGwpKQo+ICAgICAgICAgICAgICBicmVhazsKPiB9Cj4gCj4gWzFd IGh0dHBzOi8vZ2l0aHViLmNvbS9PbmVQbHVzT1NTL2FuZHJvaWRfa2VybmVsX29uZXBsdXNfc204 NTUwL2Jsb2Ivb25lcGx1cy9zbTg1NTBfdV8xNC4wLjBfb25lcGx1czExL21tL21lbW9yeS5jI0wx MTgwCj4gCj4gCj4gVGhhbmtzCj4gQmFycnkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==