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=-10.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 3B595C433E1 for ; Wed, 15 Jul 2020 11:14:47 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id EA4AE20658 for ; Wed, 15 Jul 2020 11:14:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EA4AE20658 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=hisilicon.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 33B816B0002; Wed, 15 Jul 2020 07:14:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2EB096B0003; Wed, 15 Jul 2020 07:14:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 200BA6B0005; Wed, 15 Jul 2020 07:14:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0026.hostedemail.com [216.40.44.26]) by kanga.kvack.org (Postfix) with ESMTP id 0A36F6B0002 for ; Wed, 15 Jul 2020 07:14:46 -0400 (EDT) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 9AE6321F0 for ; Wed, 15 Jul 2020 11:14:45 +0000 (UTC) X-FDA: 77040052530.10.coach44_130444326ef9 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin10.hostedemail.com (Postfix) with ESMTP id 6FD8B16A0DE for ; Wed, 15 Jul 2020 11:14:45 +0000 (UTC) X-HE-Tag: coach44_130444326ef9 X-Filterd-Recvd-Size: 11642 Received: from huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Wed, 15 Jul 2020 11:14:44 +0000 (UTC) Received: from dggemi402-hub.china.huawei.com (unknown [172.30.72.53]) by Forcepoint Email with ESMTP id 0DA7AD49919B108F93EB; Wed, 15 Jul 2020 19:14:41 +0800 (CST) Received: from DGGEMI421-HUB.china.huawei.com (10.1.199.150) by dggemi402-hub.china.huawei.com (10.3.17.135) with Microsoft SMTP Server (TLS) id 14.3.487.0; Wed, 15 Jul 2020 19:14:40 +0800 Received: from DGGEMI525-MBS.china.huawei.com ([169.254.6.52]) by dggemi421-hub.china.huawei.com ([10.1.199.150]) with mapi id 14.03.0487.000; Wed, 15 Jul 2020 19:14:33 +0800 From: "Song Bao Hua (Barry Song)" To: Mike Kravetz , "akpm@linux-foundation.org" CC: "x86@kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Linuxarm , "linux-arm-kernel@lists.infradead.org" , Roman Gushchin , Catalin Marinas , Will Deacon , Thomas Gleixner , Ingo Molnar , Borislav Petkov , H.Peter Anvin , "Mike Rapoport" , Anshuman Khandual , Jonathan Cameron Subject: RE: [PATCH v3] mm/hugetlb: split hugetlb_cma in nodes with memory Thread-Topic: [PATCH v3] mm/hugetlb: split hugetlb_cma in nodes with memory Thread-Index: AQHWVrNOII3K0DiIcUm2dR5kgjKtYKkHN1yAgAFLiIA= Date: Wed, 15 Jul 2020 11:14:32 +0000 Message-ID: References: <20200710120950.37716-1-song.bao.hua@hisilicon.com> <359ea1d0-b1fd-d09f-d28a-a44655834277@oracle.com> In-Reply-To: <359ea1d0-b1fd-d09f-d28a-a44655834277@oracle.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.200.117] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 6FD8B16A0DE X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWlrZSBLcmF2ZXR6IFtt YWlsdG86bWlrZS5rcmF2ZXR6QG9yYWNsZS5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVseSAx NSwgMjAyMCAxMToyMSBBTQ0KPiBUbzogU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKSA8c29uZy5i YW8uaHVhQGhpc2lsaWNvbi5jb20+Ow0KPiBha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnDQo+IENj OiB4ODZAa2VybmVsLm9yZzsgbGludXgtbW1Aa3ZhY2sub3JnOyBsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnOw0KPiBMaW51eGFybSA8bGludXhhcm1AaHVhd2VpLmNvbT47IGxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsNCj4gUm9tYW4gR3VzaGNoaW4gPGd1cm9AZmIuY29t PjsgQ2F0YWxpbiBNYXJpbmFzDQo+IDxjYXRhbGluLm1hcmluYXNAYXJtLmNvbT47IFdpbGwgRGVh Y29uIDx3aWxsQGtlcm5lbC5vcmc+OyBUaG9tYXMgR2xlaXhuZXINCj4gPHRnbHhAbGludXRyb25p eC5kZT47IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPjsgQm9yaXNsYXYgUGV0a292DQo+ IDxicEBhbGllbjguZGU+OyBILlBldGVyIEFudmluIDxocGFAenl0b3IuY29tPjsgTWlrZSBSYXBv cG9ydA0KPiA8cnBwdEBsaW51eC5pYm0uY29tPjsgQW5zaHVtYW4gS2hhbmR1YWwNCj4gPGFuc2h1 bWFuLmtoYW5kdWFsQGFybS5jb20+OyBKb25hdGhhbiBDYW1lcm9uDQo+IDxqb25hdGhhbi5jYW1l cm9uQGh1YXdlaS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjNdIG1tL2h1Z2V0bGI6IHNw bGl0IGh1Z2V0bGJfY21hIGluIG5vZGVzIHdpdGggbWVtb3J5DQo+IA0KPiBPbiA3LzEwLzIwIDU6 MDkgQU0sIEJhcnJ5IFNvbmcgd3JvdGU6DQo+ID4gT25saW5lIG5vZGVzIGFyZSBub3QgbmVjZXNz YXJpbHkgbWVtb3J5IGNvbnRhaW5pbmcgbm9kZXMuIFNwbGl0dGluZw0KPiA+IGh1Z2VfY21hIGlu IG9ubGluZSBub2RlcyBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbnQgaHVnZXRsYl9jbWEgc2l6ZQ0K PiA+IHdpdGggdXNlciBzZXR0aW5nLiBGb3IgZXhhbXBsZSwgZm9yIG9uZSBzeXN0ZW0gd2l0aCA0 IG51bWEgbm9kZXMgYW5kDQo+ID4gb25seSBvbmUgb2YgdGhlbSBoYXMgbWVtb3J5LCBpZiB1c2Vy cyBzZXQgaHVnZXRsYl9jbWEgdG8gNEdCLCBpdCB3aWxsDQo+ID4gc3BsaXQgaW50byBmb3VyIDFH Qi4gU28gb25seSB0aGUgbm9kZSB3aXRoIG1lbW9yeSB3aWxsIGdldCAxR0IgQ01BLg0KPiA+IEFs bCBvdGhlciB0aHJlZSBub2RlcyBnZXQgbm90aGluZy4gVGhhdCBtZWFucyB0aGUgd2hvbGUgc3lz dGVtIGdldHMNCj4gPiBvbmx5IDFHQiBDTUEgd2hpbGUgdXNlcnMgYXNrIGZvciA0R0IuDQo+ID4N Cj4gPiBUaHVzLCBpdCBpcyBtb3JlIHNlbnNpYmxlIHRvIHNwbGl0IGh1Z2V0bGJfY21hIGluIG5v ZGVzIHdpdGggbWVtb3J5Lg0KPiA+IEZvciB0aGUgYWJvdmUgY2FzZSwgdGhlIG9ubHkgbm9kZSB3 aXRoIG1lbW9yeSB3aWxsIHJlc2VydmUgNEdCIGNtYQ0KPiA+IHdoaWNoIGlzIHNhbWUgd2l0aCB1 c2VyIHNldHRpbmcgaW4gYm9vdGFyZ3MuIEluIG9yZGVyIHRvIHNwbGl0IGNtYQ0KPiA+IGluIG5v ZGVzIHdpdGggbWVtb3J5LCBodWdldGxiX2NtYV9yZXNlcnZlKCkgc2hvdWxkIHNjYW4gb3ZlciB0 aG9zZQ0KPiA+IG5vZGVzIHdpdGggTl9NRU1PUlkgc3RhdGUgcmF0aGVyIHRoYW4gTl9PTkxJTkUg c3RhdGUuIFRoYXQgbWVhbnMNCj4gPiB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5 IGFmdGVyIGFyY2ggY29kZSBoYXMgZmluaXNoZWQNCj4gPiBzZXR0aW5nIHRoZSBOX01FTU9SWSBz dGF0ZSBvZiBub2Rlcy4NCj4gPg0KPiA+IFRoZSBwcm9ibGVtIGlzIGFsd2F5cyB0aGVyZSBpZiBO X09OTElORSAhPSBOX01FTU9SWS4gSXQgaXMgYSBnZW5lcmFsDQo+ID4gcHJvYmxlbSB0byBhbGwg cGxhdGZvcm1zLiBCdXQgdGhlcmUgaXMgc29tZSB0cml2aWFsIGRpZmZlcmVuY2UgYW1vbmcNCj4g PiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcy4NCj4gPiBGb3IgZXhhbXBsZSwgZm9yIEFSTTY0LCBi ZWZvcmUgaHVnZXRsYl9jbWFfcmVzZXJ2ZSgpIGlzIGNhbGxlZCwgYWxsDQo+ID4gbm9kZXMgaGF2 ZSBnb3QgTl9PTkxJTkUgc3RhdGUuIFNvIGh1Z2V0bGIgd2lsbCBnZXQgaW5jb25zaXN0ZW50IGNt YQ0KPiA+IHNpemUgd2hlbiBzb21lIG9ubGluZSBub2RlcyBoYXZlIG5vIG1lbW9yeS4gRm9yIHg4 NiBjYXNlLCB0aGUgcHJvYmxlbQ0KPiA+IGlzIGhpZGRlbiBiZWNhdXNlIFg4NiBoYXBwZW5zIHRv IGp1c3Qgc2V0IE5fT05MSU5FIG9uIHRoZSBub2RlcyB3aXRoDQo+ID4gbWVtb3J5IHdoZW4gaHVn ZXRsYl9jbWFfcmVzZXJ2ZSgpIGlzIGNhbGxlZC4NCj4gPg0KPiA+IEFueXdheSwgdGhpcyBwYXRj aCBtb3ZlcyB0byBzY2FuIE5fTUVNT1JZIGluIGh1Z2V0bGJfY21hX3Jlc2VydmUoKQ0KPiA+IGFu ZCBsZXRzIGJvdGggeDg2IGFuZCBBUk02NCBjYWxsIHRoZSBmdW5jdGlvbiBhZnRlciBOX01FTU9S WSBzdGF0ZQ0KPiA+IGlzIHJlYWR5LiBJdCBhbHNvIGRvY3VtZW50cyB0aGUgcmVxdWlyZW1lbnQg aW4gdGhlIGRlZmluaXRpb24gb2YNCj4gPiBodWdldGxiX2NtYV9yZXNlcnZlKCkuDQo+ID4NCj4g PiBDYzogUm9tYW4gR3VzaGNoaW4gPGd1cm9AZmIuY29tPg0KPiA+IENjOiBDYXRhbGluIE1hcmlu YXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPg0KPiA+IENjOiBXaWxsIERlYWNvbiA8d2lsbEBr ZXJuZWwub3JnPg0KPiA+IENjOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4N Cj4gPiBDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+DQo+ID4gQ2M6IEJvcmlzbGF2 IFBldGtvdiA8YnBAYWxpZW44LmRlPg0KPiA+IENjOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9y LmNvbT4NCj4gPiBDYzogTWlrZSBLcmF2ZXR6IDxtaWtlLmtyYXZldHpAb3JhY2xlLmNvbT4NCj4g PiBDYzogTWlrZSBSYXBvcG9ydCA8cnBwdEBsaW51eC5pYm0uY29tPg0KPiA+IENjOiBBbmRyZXcg TW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPg0KPiA+IENjOiBBbnNodW1hbiBLaGFu ZHVhbCA8YW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbT4NCj4gPiBDYzogSm9uYXRoYW4gQ2FtZXJv biA8am9uYXRoYW4uY2FtZXJvbkBodWF3ZWkuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEJhcnJ5 IFNvbmcgPHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPg0KPiANCj4gSSBhZ3JlZSB3ZSBzaG91 bGQgb25seSBiZSBjb25jZXJuZWQgd2l0aCBOX01FTU9SWSBub2RlcyBmb3IgdGhlIENNQQ0KPiBy ZXNlcnZhdGlvbnMuICBIb3dldmVyLCB0aGlzIHBhdGNoIGdvdCBtZSB0aGlua2luZzoNCj4gLSBE byB3ZSByZWFsbHkgaGF2ZSB0byBpbml0aWF0ZSB0aGUgQ01BIHJlc2VydmF0aW9ucyBmcm9tIGFy Y2ggc3BlY2lmaWMgY29kZT8NCj4gLSBDYW4gd2UgbW92ZSB0aGUgY2FsbCB0byByZXNlcnZlIENN QSBhIGxpdHRsZSBsYXRlciBpbnRvIGh1Z2V0bGIgYXJjaA0KPiAgIGluZGVwZW5kZW50IGNvZGU/ DQo+IA0KPiBJIGtub3cgdGhlIGNtYV9kZWNsYXJlX2NvbnRpZ3VvdXNfbmlkKCkgcm91dGluZSBz YXlzIGl0IHNob3VsZCBiZSBjYWxsZWQNCj4gZnJvbSBhcmNoIHNwZWNpZmljIGNvZGUuICBIb3dl dmVyLCB1bmxlc3MgSSBhbSBtaXNzaW5nIHNvbWV0aGluZyB0aGF0IHNlZW1zDQo+IG1vc3RseSBh Ym91dCB0aW1pbmcuDQo+IA0KPiBXaGF0IGFib3V0IGEgY2hhbmdlIGxpa2UgdGhpcyBvbiB0b3Ag b2YgdGhpcyBwYXRjaD8NCj4gDQo+IEZyb20gNzJiNWI5YTYyM2Y4NzExYWQ3Zjc5ZjFhOGY5MTA5 MDYyNDVmNWQwNyBNb24gU2VwIDE3IDAwOjAwOjAwDQo+IDIwMDENCj4gRnJvbTogTWlrZSBLcmF2 ZXR6IDxtaWtlLmtyYXZldHpAb3JhY2xlLmNvbT4NCj4gRGF0ZTogVHVlLCAxNCBKdWwgMjAyMCAx NTo1NDo0NiAtMDcwMA0KPiBTdWJqZWN0OiBbUEFUQ0hdIGh1Z2V0bGI6IG1vdmUgY21hIGFsbG9j YXRpb24gY2FsbCB0byBhcmNoIGluZGVwZW5kZW50IGNvZGUNCj4gDQo+IEluc3RlYWQgb2YgY2Fs bGluZyBodWdldGxiX2NtYV9yZXNlcnZlKCkgZnJvbSBhcmNoIHNwZWNpZmljIGNvZGUsDQo+IGNh bGwgZnJvbSBhcmNoIGluZGVwZW5kZW50IGNvZGUgd2hlbiBhIGdpZ2FudGljIHBhZ2UgaHN0YXRl IGlzDQo+IGNyZWF0ZWQuICBUaGlzIGlzIGxhdGUgZW5vdWdoIGluIHRoZSBpbml0IHByb2Nlc3Mg dGhhdCBhbGwgbnVtYQ0KPiBtZW1vcnkgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGluaXRpYWxpemVk LiAgQW5kLCBpdCBpcyBlYXJseSBlbm91Z2gNCj4gdG8gc3RpbGwgdXNlIGVhcmx5IG1lbW9yeSBh bGxvY2F0b3IuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaWtlIEtyYXZldHogPG1pa2Uua3JhdmV0 ekBvcmFjbGUuY29tPg0KPiAtLS0NCj4gIGFyY2gvYXJtNjQvbW0vaW5pdC5jICAgIHwgMTAgLS0t LS0tLS0tLQ0KPiAgYXJjaC94ODYva2VybmVsL3NldHVwLmMgfCAgOSAtLS0tLS0tLS0NCj4gIG1t L2h1Z2V0bGIuYyAgICAgICAgICAgIHwgIDggKysrKysrKy0NCj4gIDMgZmlsZXMgY2hhbmdlZCwg NyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9hcmNo L2FybTY0L21tL2luaXQuYyBiL2FyY2gvYXJtNjQvbW0vaW5pdC5jDQo+IGluZGV4IDc5ODA2NzMy ZjRiNC4uZmYwZmY1ODRkZGU5IDEwMDY0NA0KPiAtLS0gYS9hcmNoL2FybTY0L21tL2luaXQuYw0K PiArKysgYi9hcmNoL2FybTY0L21tL2luaXQuYw0KPiBAQCAtNDI3LDE2ICs0MjcsNiBAQCB2b2lk IF9faW5pdCBib290bWVtX2luaXQodm9pZCkNCj4gIAlzcGFyc2VfaW5pdCgpOw0KPiAgCXpvbmVf c2l6ZXNfaW5pdChtaW4sIG1heCk7DQo+IA0KPiAtCS8qDQo+IC0JICogbXVzdCBiZSBkb25lIGFm dGVyIHpvbmVfc2l6ZXNfaW5pdCgpIHdoaWNoIGNhbGxzIGZyZWVfYXJlYV9pbml0KCkNCj4gLQkg KiB0aGF0IGNhbGxzIG5vZGVfc2V0X3N0YXRlKCkgdG8gaW5pdGlhbGl6ZSBub2RlX3N0YXRlc1tO X01FTU9SWV0NCj4gLQkgKiBiZWNhdXNlIGh1Z2V0bGJfY21hX3Jlc2VydmUoKSB3aWxsIHNjYW4g b3ZlciBub2RlcyB3aXRoIE5fTUVNT1JZDQo+IC0JICogc3RhdGUNCj4gLQkgKi8NCj4gLSNpZmRl ZiBDT05GSUdfQVJNNjRfNEtfUEFHRVMNCj4gLQlodWdldGxiX2NtYV9yZXNlcnZlKFBVRF9TSElG VCAtIFBBR0VfU0hJRlQpOw0KPiAtI2VuZGlmDQo+IC0NCj4gIAltZW1ibG9ja19kdW1wX2FsbCgp Ow0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jIGIvYXJj aC94ODYva2VybmVsL3NldHVwLmMNCj4gaW5kZXggYTFhOTcxMjA5MGFlLi4xMTFjODQ2N2ZhZmEg MTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jDQo+ICsrKyBiL2FyY2gveDg2 L2tlcm5lbC9zZXR1cC5jDQo+IEBAIC0xMTc3LDE1ICsxMTc3LDYgQEAgdm9pZCBfX2luaXQgc2V0 dXBfYXJjaChjaGFyICoqY21kbGluZV9wKQ0KPiANCj4gIAl4ODZfaW5pdC5wYWdpbmcucGFnZXRh YmxlX2luaXQoKTsNCj4gDQo+IC0JLyoNCj4gLQkgKiBtdXN0IGJlIGRvbmUgYWZ0ZXIgem9uZV9z aXplc19pbml0KCkgd2hpY2ggY2FsbHMgZnJlZV9hcmVhX2luaXQoKQ0KPiAtCSAqIHRoYXQgY2Fs bHMgbm9kZV9zZXRfc3RhdGUoKSB0byBpbml0aWFsaXplIG5vZGVfc3RhdGVzW05fTUVNT1JZXQ0K PiAtCSAqIGJlY2F1c2UgaHVnZXRsYl9jbWFfcmVzZXJ2ZSgpIHdpbGwgc2NhbiBvdmVyIG5vZGVz IHdpdGggTl9NRU1PUlkNCj4gLQkgKiBzdGF0ZQ0KPiAtCSAqLw0KPiAtCWlmIChib290X2NwdV9o YXMoWDg2X0ZFQVRVUkVfR0JQQUdFUykpDQo+IC0JCWh1Z2V0bGJfY21hX3Jlc2VydmUoUFVEX1NI SUZUIC0gUEFHRV9TSElGVCk7DQo+IC0NCj4gIAlrYXNhbl9pbml0KCk7DQo+IA0KPiAgCS8qDQo+ IGRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmMNCj4gaW5kZXggZjI0YWNi M2FmNzQxLi5hMDAwN2QxZDEyZDIgMTAwNjQ0DQo+IC0tLSBhL21tL2h1Z2V0bGIuYw0KPiArKysg Yi9tbS9odWdldGxiLmMNCj4gQEAgLTMyNzMsNiArMzI3Myw5IEBAIHZvaWQgX19pbml0IGh1Z2V0 bGJfYWRkX2hzdGF0ZSh1bnNpZ25lZCBpbnQgb3JkZXIpDQo+ICAJc25wcmludGYoaC0+bmFtZSwg SFNUQVRFX05BTUVfTEVOLCAiaHVnZXBhZ2VzLSVsdWtCIiwNCj4gIAkJCQkJaHVnZV9wYWdlX3Np emUoaCkvMTAyNCk7DQo+IA0KPiArCWlmIChvcmRlciA+PSBNQVhfT1JERVIgJiYgaHVnZXRsYl9j bWFfc2l6ZSkNCj4gKwkJaHVnZXRsYl9jbWFfcmVzZXJ2ZShvcmRlcik7DQoNCkhlbGxvLCBNaWtl LA0KSSBhbSBub3Qgc3VyZSBpZiBpdCBpcyBuZWNlc3NhcmlseSBjb3JyZWN0IGFzIHRoZSBvcmRl ciBmb3IgZ2lnYW50aWMgcGFnZXMgaXMgYXJjaC1kZXBlbmRlbnQ6DQpodHRwczovL2xrbWwub3Jn L2xrbWwvMjAyMC83LzEvMTQNCg0KPiArDQo+ICAJcGFyc2VkX2hzdGF0ZSA9IGg7DQo+ICB9DQo+ IA0KPiBAQCAtNTY0Nyw3ICs1NjUwLDEwIEBAIHZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2Vy dmUoaW50IG9yZGVyKQ0KPiAgCXVuc2lnbmVkIGxvbmcgc2l6ZSwgcmVzZXJ2ZWQsIHBlcl9ub2Rl Ow0KPiAgCWludCBuaWQ7DQo+IA0KPiAtCWNtYV9yZXNlcnZlX2NhbGxlZCA9IHRydWU7DQo+ICsJ aWYgKGNtYV9yZXNlcnZlX2NhbGxlZCkNCj4gKwkJcmV0dXJuOw0KPiArCWVsc2UNCj4gKwkJY21h X3Jlc2VydmVfY2FsbGVkID0gdHJ1ZTsNCj4gDQo+ICAJaWYgKCFodWdldGxiX2NtYV9zaXplKQ0K PiAgCQlyZXR1cm47DQoNClRoYW5rcw0KQmFycnkNCg0K