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=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 40CF1C433DB for ; Mon, 8 Feb 2021 20:52:36 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 2C42C64E6C for ; Mon, 8 Feb 2021 20:52:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2C42C64E6C 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 66BEE6B0005; Mon, 8 Feb 2021 15:52:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5F5EA6B006C; Mon, 8 Feb 2021 15:52:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4E4C76B006E; Mon, 8 Feb 2021 15:52:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0172.hostedemail.com [216.40.44.172]) by kanga.kvack.org (Postfix) with ESMTP id 363A06B0005 for ; Mon, 8 Feb 2021 15:52:34 -0500 (EST) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 027E7DDEB for ; Mon, 8 Feb 2021 20:52:34 +0000 (UTC) X-FDA: 77796299028.01.top14_0a08f7027601 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin01.hostedemail.com (Postfix) with ESMTP id CBE8A100A88B7 for ; Mon, 8 Feb 2021 20:52:33 +0000 (UTC) X-HE-Tag: top14_0a08f7027601 X-Filterd-Recvd-Size: 15568 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf28.hostedemail.com (Postfix) with ESMTP for ; Mon, 8 Feb 2021 20:52:32 +0000 (UTC) Received: from DGGEMM405-HUB.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4DZJ8d2ZynzY5GK; Tue, 9 Feb 2021 04:51:13 +0800 (CST) Received: from dggpemm100009.china.huawei.com (7.185.36.113) by DGGEMM405-HUB.china.huawei.com (10.3.20.213) with Microsoft SMTP Server (TLS) id 14.3.498.0; Tue, 9 Feb 2021 04:52:28 +0800 Received: from dggemi761-chm.china.huawei.com (10.1.198.147) by dggpemm100009.china.huawei.com (7.185.36.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2106.2; Tue, 9 Feb 2021 04:52:28 +0800 Received: from dggemi761-chm.china.huawei.com ([10.9.49.202]) by dggemi761-chm.china.huawei.com ([10.9.49.202]) with mapi id 15.01.2106.006; Tue, 9 Feb 2021 04:52:27 +0800 From: "Song Bao Hua (Barry Song)" To: David Hildenbrand , Matthew Wilcox CC: "Wangzhou (B)" , "linux-kernel@vger.kernel.org" , "iommu@lists.linux-foundation.org" , "linux-mm@kvack.org" , "linux-arm-kernel@lists.infradead.org" , "linux-api@vger.kernel.org" , Andrew Morton , Alexander Viro , "gregkh@linuxfoundation.org" , "jgg@ziepe.ca" , "kevin.tian@intel.com" , "jean-philippe@linaro.org" , "eric.auger@redhat.com" , "Liguozhu (Kenneth)" , "zhangfei.gao@linaro.org" , "chensihang (A)" Subject: RE: [RFC PATCH v3 1/2] mempinfd: Add new syscall to provide memory pin Thread-Topic: [RFC PATCH v3 1/2] mempinfd: Add new syscall to provide memory pin Thread-Index: AQHW/SrsWWMRpilf2UC1Pz29QqsBVqpMsX2AgACQE1D//7IVAIAAi2xQ///nWQCAAKIUUP//g9YAACWAGnA= Date: Mon, 8 Feb 2021 20:52:27 +0000 Message-ID: <62e7a7cbe6ce4f2e8b220032e25a0aab@hisilicon.com> References: <1612685884-19514-1-git-send-email-wangzhou1@hisilicon.com> <1612685884-19514-2-git-send-email-wangzhou1@hisilicon.com> <20210207213409.GL308988@casper.infradead.org> <20210208013056.GM308988@casper.infradead.org> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.200.92] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected 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: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRGF2aWQgSGlsZGVuYnJh bmQgW21haWx0bzpkYXZpZEByZWRoYXQuY29tXQ0KPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDgs IDIwMjEgMTE6MzcgUE0NCj4gVG86IFNvbmcgQmFvIEh1YSAoQmFycnkgU29uZykgPHNvbmcuYmFv Lmh1YUBoaXNpbGljb24uY29tPjsgTWF0dGhldyBXaWxjb3gNCj4gPHdpbGx5QGluZnJhZGVhZC5v cmc+DQo+IENjOiBXYW5nemhvdSAoQikgPHdhbmd6aG91MUBoaXNpbGljb24uY29tPjsgbGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5v cmc7IGxpbnV4LW1tQGt2YWNrLm9yZzsNCj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnOyBsaW51eC1hcGlAdmdlci5rZXJuZWwub3JnOyBBbmRyZXcNCj4gTW9ydG9uIDxha3Bt QGxpbnV4LWZvdW5kYXRpb24ub3JnPjsgQWxleGFuZGVyIFZpcm8gPHZpcm9AemVuaXYubGludXgu b3JnLnVrPjsNCj4gZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IGpnZ0B6aWVwZS5jYTsga2V2 aW4udGlhbkBpbnRlbC5jb207DQo+IGplYW4tcGhpbGlwcGVAbGluYXJvLm9yZzsgZXJpYy5hdWdl ckByZWRoYXQuY29tOyBMaWd1b3podSAoS2VubmV0aCkNCj4gPGxpZ3Vvemh1QGhpc2lsaWNvbi5j b20+OyB6aGFuZ2ZlaS5nYW9AbGluYXJvLm9yZzsgY2hlbnNpaGFuZyAoQSkNCj4gPGNoZW5zaWhh bmcxQGhpc2lsaWNvbi5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIHYzIDEvMl0gbWVt cGluZmQ6IEFkZCBuZXcgc3lzY2FsbCB0byBwcm92aWRlIG1lbW9yeQ0KPiBwaW4NCj4gDQo+IE9u IDA4LjAyLjIxIDExOjEzLCBTb25nIEJhbyBIdWEgKEJhcnJ5IFNvbmcpIHdyb3RlOg0KPiA+DQo+ ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogb3duZXItbGlu dXgtbW1Aa3ZhY2sub3JnIFttYWlsdG86b3duZXItbGludXgtbW1Aa3ZhY2sub3JnXSBPbiBCZWhh bGYNCj4gT2YNCj4gPj4gRGF2aWQgSGlsZGVuYnJhbmQNCj4gPj4gU2VudDogTW9uZGF5LCBGZWJy dWFyeSA4LCAyMDIxIDk6MjIgUE0NCj4gPj4gVG86IFNvbmcgQmFvIEh1YSAoQmFycnkgU29uZykg PHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPjsgTWF0dGhldyBXaWxjb3gNCj4gPj4gPHdpbGx5 QGluZnJhZGVhZC5vcmc+DQo+ID4+IENjOiBXYW5nemhvdSAoQikgPHdhbmd6aG91MUBoaXNpbGlj b24uY29tPjsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gPj4gaW9tbXVAbGlzdHMu bGludXgtZm91bmRhdGlvbi5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZzsNCj4gPj4gbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1hcGlAdmdlci5rZXJuZWwub3JnOyBB bmRyZXcNCj4gPj4gTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPjsgQWxleGFuZGVy IFZpcm8NCj4gPHZpcm9AemVuaXYubGludXgub3JnLnVrPjsNCj4gPj4gZ3JlZ2toQGxpbnV4Zm91 bmRhdGlvbi5vcmc7IGpnZ0B6aWVwZS5jYTsga2V2aW4udGlhbkBpbnRlbC5jb207DQo+ID4+IGpl YW4tcGhpbGlwcGVAbGluYXJvLm9yZzsgZXJpYy5hdWdlckByZWRoYXQuY29tOyBMaWd1b3podSAo S2VubmV0aCkNCj4gPj4gPGxpZ3Vvemh1QGhpc2lsaWNvbi5jb20+OyB6aGFuZ2ZlaS5nYW9AbGlu YXJvLm9yZzsgY2hlbnNpaGFuZyAoQSkNCj4gPj4gPGNoZW5zaWhhbmcxQGhpc2lsaWNvbi5jb20+ DQo+ID4+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIHYzIDEvMl0gbWVtcGluZmQ6IEFkZCBuZXcg c3lzY2FsbCB0byBwcm92aWRlIG1lbW9yeQ0KPiA+PiBwaW4NCj4gPj4NCj4gPj4gT24gMDguMDIu MjEgMDM6MjcsIFNvbmcgQmFvIEh1YSAoQmFycnkgU29uZykgd3JvdGU6DQo+ID4+Pg0KPiA+Pj4N Cj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IG93bmVyLWxp bnV4LW1tQGt2YWNrLm9yZyBbbWFpbHRvOm93bmVyLWxpbnV4LW1tQGt2YWNrLm9yZ10gT24NCj4g QmVoYWxmDQo+ID4+IE9mDQo+ID4+Pj4gTWF0dGhldyBXaWxjb3gNCj4gPj4+PiBTZW50OiBNb25k YXksIEZlYnJ1YXJ5IDgsIDIwMjEgMjozMSBQTQ0KPiA+Pj4+IFRvOiBTb25nIEJhbyBIdWEgKEJh cnJ5IFNvbmcpIDxzb25nLmJhby5odWFAaGlzaWxpY29uLmNvbT4NCj4gPj4+PiBDYzogV2FuZ3po b3UgKEIpIDx3YW5nemhvdTFAaGlzaWxpY29uLmNvbT47DQo+IGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc7DQo+ID4+Pj4gaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmc7IGxpbnV4 LW1tQGt2YWNrLm9yZzsNCj4gPj4+PiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmc7IGxpbnV4LWFwaUB2Z2VyLmtlcm5lbC5vcmc7IEFuZHJldw0KPiA+Pj4+IE1vcnRvbiA8YWtw bUBsaW51eC1mb3VuZGF0aW9uLm9yZz47IEFsZXhhbmRlciBWaXJvDQo+ID4+IDx2aXJvQHplbml2 LmxpbnV4Lm9yZy51az47DQo+ID4+Pj4gZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IGpnZ0B6 aWVwZS5jYTsga2V2aW4udGlhbkBpbnRlbC5jb207DQo+ID4+Pj4gamVhbi1waGlsaXBwZUBsaW5h cm8ub3JnOyBlcmljLmF1Z2VyQHJlZGhhdC5jb207IExpZ3Vvemh1IChLZW5uZXRoKQ0KPiA+Pj4+ IDxsaWd1b3podUBoaXNpbGljb24uY29tPjsgemhhbmdmZWkuZ2FvQGxpbmFyby5vcmc7IGNoZW5z aWhhbmcgKEEpDQo+ID4+Pj4gPGNoZW5zaWhhbmcxQGhpc2lsaWNvbi5jb20+DQo+ID4+Pj4gU3Vi amVjdDogUmU6IFtSRkMgUEFUQ0ggdjMgMS8yXSBtZW1waW5mZDogQWRkIG5ldyBzeXNjYWxsIHRv IHByb3ZpZGUgbWVtb3J5DQo+ID4+Pj4gcGluDQo+ID4+Pj4NCj4gPj4+PiBPbiBTdW4sIEZlYiAw NywgMjAyMSBhdCAxMDoyNDoyOFBNICswMDAwLCBTb25nIEJhbyBIdWEgKEJhcnJ5IFNvbmcpIHdy b3RlOg0KPiA+Pj4+Pj4+IEluIGhpZ2gtcGVyZm9ybWFuY2UgSS9PIGNhc2VzLCBhY2NlbGVyYXRv cnMgbWlnaHQgd2FudCB0byBwZXJmb3JtDQo+ID4+Pj4+Pj4gSS9PIG9uIGEgbWVtb3J5IHdpdGhv dXQgSU8gcGFnZSBmYXVsdHMgd2hpY2ggY2FuIHJlc3VsdCBpbiBkcmFtYXRpY2FsbHkNCj4gPj4+ Pj4+PiBpbmNyZWFzZWQgbGF0ZW5jeS4gQ3VycmVudCBtZW1vcnkgcmVsYXRlZCBBUElzIGNvdWxk IG5vdCBhY2hpZXZlIHRoaXMNCj4gPj4+Pj4+PiByZXF1aXJlbWVudCwgZS5nLiBtbG9jayBjYW4g b25seSBhdm9pZCBtZW1vcnkgdG8gc3dhcCB0byBiYWNrdXAgZGV2aWNlLA0KPiA+Pj4+Pj4+IHBh Z2UgbWlncmF0aW9uIGNhbiBzdGlsbCB0cmlnZ2VyIElPIHBhZ2UgZmF1bHQuDQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gV2VsbCAuLi4gd2UgaGF2ZSB0d28gcmVxdWlyZW1lbnRzLiAgVGhlIGFwcGxpY2F0 aW9uIHdhbnRzIHRvIG5vdCB0YWtlDQo+ID4+Pj4+PiBwYWdlIGZhdWx0cy4gIFRoZSBzeXN0ZW0g d2FudHMgdG8gbW92ZSB0aGUgYXBwbGljYXRpb24gdG8gYSBkaWZmZXJlbnQNCj4gPj4+Pj4+IE5V TUEgbm9kZSBpbiBvcmRlciB0byBvcHRpbWlzZSBvdmVyYWxsIHBlcmZvcm1hbmNlLiAgV2h5IHNo b3VsZCB0aGUNCj4gPj4+Pj4+IGFwcGxpY2F0aW9uJ3MgZGVzaXJlcyB0YWtlIHByZWNlZGVuY2Ug b3ZlciB0aGUga2VybmVsJ3MgZGVzaXJlcz8gIEFuZA0KPiB3aHkNCj4gPj4+Pj4+IHNob3VsZCBp dCBiZSBkb25lIHRoaXMgd2F5IHJhdGhlciB0aGFuIGJ5IHRoZSBzeXNhZG1pbiB1c2luZyBudW1h Y3RsDQo+IHRvDQo+ID4+Pj4+PiBsb2NrIHRoZSBhcHBsaWNhdGlvbiB0byBhIHBhcnRpY3VsYXIg bm9kZT8NCj4gPj4+Pj4NCj4gPj4+Pj4gTlVNQSBiYWxhbmNlciBpcyBqdXN0IG9uZSBvZiBtYW55 IHJlYXNvbnMgZm9yIHBhZ2UgbWlncmF0aW9uLiBFdmVuIG9uZQ0KPiA+Pj4+PiBzaW1wbGUgYWxs b2NfcGFnZXMoKSBjYW4gY2F1c2UgbWVtb3J5IG1pZ3JhdGlvbiBpbiBqdXN0IHNpbmdsZSBOVU1B DQo+ID4+Pj4+IG5vZGUgb3IgVU1BIHN5c3RlbS4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIG90aGVy IHJlYXNvbnMgZm9yIHBhZ2UgbWlncmF0aW9uIGluY2x1ZGUgYnV0IGFyZSBub3QgbGltaXRlZCB0 bzoNCj4gPj4+Pj4gKiBtZW1vcnkgbW92ZSBkdWUgdG8gQ01BDQo+ID4+Pj4+ICogbWVtb3J5IG1v dmUgZHVlIHRvIGh1Z2UgcGFnZXMgY3JlYXRpb24NCj4gPj4+Pj4NCj4gPj4+Pj4gSGFyZGx5IHdl IGNhbiBhc2sgdXNlcnMgdG8gZGlzYWJsZSB0aGUgQ09NUEFDVElPTiwgQ01BIGFuZCBIdWdlIFBh Z2UNCj4gPj4+Pj4gaW4gdGhlIHdob2xlIHN5c3RlbS4NCj4gPj4+Pg0KPiA+Pj4+IFlvdSdyZSBk b2RnaW5nIHRoZSBxdWVzdGlvbi4gIFNob3VsZCB0aGUgQ01BIGFsbG9jYXRpb24gZmFpbCBiZWNh dXNlDQo+ID4+Pj4gYW5vdGhlciBhcHBsaWNhdGlvbiBpcyB1c2luZyBTVkE/DQo+ID4+Pj4NCj4g Pj4+PiBJIHdvdWxkIHNheSBuby4NCj4gPj4+DQo+ID4+PiBJIHdvdWxkIHNheSBubyBhcyB3ZWxs Lg0KPiA+Pj4NCj4gPj4+IFdoaWxlIElPTU1VIGlzIGVuYWJsZWQsIENNQSBhbG1vc3QgaGFzIG9u ZSB1c2VyIG9ubHk6IElPTU1VIGRyaXZlcg0KPiA+Pj4gYXMgb3RoZXIgZHJpdmVycyB3aWxsIGRl cGVuZCBvbiBpb21tdSB0byB1c2Ugbm9uLWNvbnRpZ3VvdXMgbWVtb3J5DQo+ID4+PiB0aG91Z2gg dGhleSBhcmUgc3RpbGwgY2FsbGluZyBkbWFfYWxsb2NfY29oZXJlbnQoKS4NCj4gPj4+DQo+ID4+ PiBJbiBpb21tdSBkcml2ZXIsIGRtYV9hbGxvY19jb2hlcmVudCBpcyBjYWxsZWQgZHVyaW5nIGlu aXRpYWxpemF0aW9uDQo+ID4+PiBhbmQgdGhlcmUgaXMgbm8gbmV3IGFsbG9jYXRpb24gYWZ0ZXJ3 YXJkcy4gU28gaXQgd291bGRuJ3QgY2F1c2UNCj4gPj4+IHJ1bnRpbWUgaW1wYWN0IG9uIFNWQSBw ZXJmb3JtYW5jZS4gRXZlbiB0aGVyZSBpcyBuZXcgYWxsb2NhdGlvbnMsDQo+ID4+PiBDTUEgd2ls bCBmYWxsIGJhY2sgdG8gZ2VuZXJhbCBhbGxvY19wYWdlcygpIGFuZCBpb21tdSBkcml2ZXJzIGFy ZQ0KPiA+Pj4gYWxtb3N0IGFsbG9jYXRpbmcgc21hbGwgbWVtb3J5IGZvciBjb21tYW5kIHF1ZXVl cy4NCj4gPj4+DQo+ID4+PiBTbyBJIHdvdWxkIHNheSBnZW5lcmFsIGNvbXBvdW5kIHBhZ2VzLCBo dWdlIHBhZ2VzLCBlc3BlY2lhbGx5DQo+ID4+PiB0cmFuc3BhcmVudCBodWdlIHBhZ2VzLCB3b3Vs ZCBiZSBiaWdnZXIgY29uY2VybnMgdGhhbiBDTUEgZm9yDQo+ID4+PiBpbnRlcm5hbCBwYWdlIG1p Z3JhdGlvbiB3aXRoaW4gb25lIE5VTUEuDQo+ID4+Pg0KPiA+Pj4gTm90IGxpa2UgQ01BLCBnZW5l cmFsIGFsbG9jX3BhZ2VzKCkgY2FuIGdldCBtZW1vcnkgYnkgbW92aW5nDQo+ID4+PiBwYWdlcyBv dGhlciB0aGFuIHRob3NlIHBpbm5lZC4NCj4gPj4+DQo+ID4+PiBBbmQgdGhlcmUgaXMgbm8gZ3Vh cmFudGVlIHdlIGNhbiBhbHdheXMgYmluZCB0aGUgbWVtb3J5IG9mDQo+ID4+PiBTVkEgYXBwbGlj YXRpb25zIHRvIHNpbmdsZSBvbmUgTlVNQSwgc28gTlVNQSBiYWxhbmNpbmcgaXMNCj4gPj4+IHN0 aWxsIGEgY29uY2Vybi4NCj4gPj4+DQo+ID4+PiBCdXQgSSBhZ3JlZSB3ZSBuZWVkIGEgd2F5IHRv IG1ha2UgQ01BIHN1Y2Nlc3Mgd2hpbGUgdGhlIHVzZXJzcGFjZQ0KPiA+Pj4gcGFnZXMgYXJlIHBp bm5lZC4gU2luY2UgcGluIGhhcyBiZWVuIHZpcmFsIGluIG1hbnkgZHJpdmVycywgSQ0KPiA+Pj4g YXNzdW1lIHRoZXJlIGlzIGEgd2F5IHRvIGhhbmRsZSB0aGlzLiBPdGhlcndpc2UsIEFQSXMgbGlr ZQ0KPiA+Pj4gVjRMMl9NRU1PUllfVVNFUlBUUlsxXSB3aWxsIHBvc3NpYmx5IG1ha2UgQ01BIGZh aWwgYXMgdGhlcmUNCj4gPj4+IGlzIG5vIGd1YXJhbnRlZSB0aGF0IHVzZXJzc3BhY2Ugd2lsbCBh bGxvY2F0ZSB1bm1vdmFibGUgbWVtb3J5DQo+ID4+PiBhbmQgdGhlcmUgaXMgbm8gZ3VhcmFudGVl IHRoZSBmYWxsYmFjayBwYXRoLSBhbGxvY19wYWdlcygpIGNhbg0KPiA+Pj4gc3VjY2VlZCB3aGls ZSBhbGxvY2F0aW5nIGJpZyBtZW1vcnkuDQo+ID4+Pg0KPiA+Pg0KPiA+PiBMb25nIHRlcm0gcGlu bmluZ3MgY2Fubm90IGdvIG9udG8gQ01BLXJlc2VydmVkIG1lbW9yeSwgYW5kIHRoZXJlIGlzDQo+ ID4+IHNpbWlsYXIgd29yayB0byBhbHNvIGZpeCBaT05FX01PVkFCTEUgaW4gdGhhdCByZWdhcmQu DQo+ID4+DQo+ID4+DQo+IGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAyMTAxMjUxOTQ3NTEu MTI3NTMxNi0xLXBhc2hhLnRhdGFzaGluQHNvbGVlbi5jDQo+ID4+IG9tDQo+ID4+DQo+ID4+IE9u ZSBvZiB0aGUgcmVhc29ucyBJIGRldGVzdCB1c2luZyBsb25nIHRlcm0gcGlubmluZyBvZiBwYWdl cyB3aGVyZSBpdA0KPiA+PiBjb3VsZCBiZSBhdm9pZGVkLiBUYWtlIFZGSU8gYW5kIFJETUEgYXMg YW4gZXhhbXBsZTogdGhlc2UgdGhpbmdzDQo+ID4+IGN1cnJlbnRseSBjYW4ndCB3b3JrIHdpdGhv dXQgdGhlbS4NCj4gPj4NCj4gPj4gV2hhdCBJIHJlYWQgaGVyZTogIkRNQSBwZXJmb3JtYW5jZSB3 aWxsIGJlIGFmZmVjdGVkIHNldmVyZWx5Ii4gVGhhdCBkb2VzDQo+ID4+IG5vdCBzb3VuZCBsaWtl IGEgY29tcGVsbGluZyBhcmd1bWVudCB0byBtZSBmb3IgbG9uZyB0ZXJtIHBpbm5pbmdzLg0KPiA+ PiBQbGVhc2UgZmluZCBhbm90aGVyIHdheSB0byBhY2hpZXZlIHRoZSBzYW1lIGdvYWwgd2l0aG91 dCBsb25nIHRlcm0NCj4gPj4gcGlubmluZ3MgY29udHJvbGxlZCBieSB1c2VyIHNwYWNlIC0gZS5n LiwgY29udHJvbGxpbmcgd2hlbiBtaWdyYXRpb24NCj4gPj4gYWN0dWFsbHkgaGFwcGVucy4NCj4g Pj4NCj4gPj4gRm9yIGV4YW1wbGUsIENNQS9hbGxvY19jb250aWdfcmFuZ2UoKS9tZW1vcnkgdW5w bHVnIGFyZSBjb3JuZXIgY2FzZXMNCj4gPj4gdGhhdCBoYXBwZW4gcmFyZWx5LCB5b3Ugc2hvdWxk bid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlbSBtZXNzaW5nIHdpdGgNCj4gPj4geW91ciBETUEg cGVyZm9ybWFuY2UuDQo+ID4NCj4gPiBJIGFncmVlIENNQS9hbGxvY19jb250aWdfcmFuZ2UoKS9t ZW1vcnkgdW5wbHVnIHdvdWxkIGJlIGNvcm5lciBjYXNlcywNCj4gPiB0aGUgbWFqb3IgY2FzZXMg d291bGQgYmUgVEhQLCBOVU1BIGJhbGFuY2luZyB3aGlsZSB3ZSBjb3VsZCB0b3RhbGx5DQo+ID4g ZGlzYWJsZSB0aGVtIGJ1dCBpdCBzZWVtcyBpbnNlbnNpYmxlIHRvIGRvIHRoYXQgb25seSBiZWNh dXNlIHRoZXJlIGlzDQo+ID4gYSBwcm9jZXNzIHVzaW5nIFNWQSBpbiB0aGUgc3lzdGVtLg0KPiAN Cj4gQ2FuJ3QgeW91IHVzZSBodWdlIHBhZ2VzIGluIHlvdXIgYXBwbGljYXRpb24gdGhhdCB1c2Vz IFNWQSBhbmQgcHJldmVudA0KPiBUSFAvTlVNQSBiYWxhbmNpbmcgZnJvbSBraWNraW5nIGluPw0K DQpZZXMuIFRoYXQncyBleGFjdGx5IHdlIGhhdmUgZG9uZSBpbiB1c2Vyc3BhY2UgZm9yIHRoZSBh cHBsaWNhdGlvbnMgd2hpY2gNCmNhbiBkaXJlY3RseSBjYWxsIFVBREsgKHRoZSB1c2VyLXNwYWNl IGFjY2VsZXJhdG9yIGZyYW1ld29yayBiYXNlZCBvbg0KdWFjY2UpIHRvIHVzZSBhY2NlbGVyYXRv cnMgZm9yIHppcCwgZW5jcnlwdGlvbjoNCg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rDQogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8DQogfGFwcGxpY2F0aW9ucyB1c2luZyBhY2NlbGVyYXRvcnMgICAgICAgICAgICB8DQog Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQoNCg0KICAgICBh bGxvYyBmcm9tIHBvb2wgICAgICAgICAgICAgZnJlZSB0byBwb29sDQogICAgICAgICAgICsgICAg ICAgICAgICAgICAgICAgICAgKysNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg fA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg fA0KICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg fA0KKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKw0KfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAgICAgIEh1Z2VUTEIgbWVtb3J5IHBv b2wgICAgICAgICAgICAgICAgICAgfA0KfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfA0KfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KDQpU aG9zZSBhcHBsaWNhdGlvbnMgY2FuIGdldCBtZW1vcnkgZnJvbSB0aGUgaHVnZXRsYiBwb29sIGFu ZCBhdm9pZA0KSU8gcGFnZSBmYXVsdHMuDQoNClRoZSBwcm9ibGVtIGlzIHRoYXQgbm90IGV2ZXJ5 IGFwcGxpY2F0aW9uIGNhbiBkbyB0aGlzLiBNYW55IGFwcGxpY2F0aW9ucw0Kc3VjaCBhcyBOZ2lu eCwgQ2VwaCwgIGFyZSBqdXN0IGNhbGxpbmcgemxpYi9vcGVuc3NsIHRvIHVzZSBhY2NlbGVyYXRv cnMsDQp0aGV5IGFyZSBub3QgY2FsbGluZyB0aGUgVUFESyBwb29sIGJhc2VkIG9uIEh1Z2VUTEIg YW5kIHRoZXkgYXJlIG5vdA0KY3VzdG9taXplZC4NCg0KInZtLmNvbXBhY3RfdW5ldmljdGFibGVf YWxsb3dlZD0wICsgbWxvY2sgKyBudW1hX2JhbGFuY2luZyBkaXNhYmxpbmciDQp3aGljaCBEYXZp ZCBSaWVudGplcyBtZW50aW9uZWQgc2VlbSB0byBiZSBhIGdvb2QgZGlyZWN0aW9uIHRvDQppbnZl c3RpZ2F0ZSBvbi4gYnV0IGl0IHdvdWxkIGJlIGJldHRlciBpZiB0aG9zZSBzZXR0aW5ncyBvbmx5 IGFmZmVjdA0KdGhlIHNwZWNpZmljIHByb2Nlc3MgdXNpbmcgU1ZBLg0KDQo+IA0KPiAtLQ0KPiBU aGFua3MsDQo+IA0KPiBEYXZpZCAvIGRoaWxkZW5iDQoNClRoYW5rcw0KQmFycnkNCg==