From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: [PATCH v2 05/18] mm/gup: introduce pin_user_pages*() and FOLL_PIN Date: Mon, 4 Nov 2019 14:52:48 -0500 Message-ID: <20191104195248.GA7731@redhat.com> References: <20191103211813.213227-1-jhubbard@nvidia.com> <20191103211813.213227-6-jhubbard@nvidia.com> <20191104173325.GD5134@redhat.com> <20191104191811.GI5134@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A4566E855 for ; Mon, 4 Nov 2019 19:53:08 +0000 (UTC) In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Hubbard Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Christoph Hellwig , Jason Gunthorpe , Vlastimil Babka , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , linux-media@vger.kernel.org, Shuah Khan , linux-block@vger.kernel.org, Alex Williamson , Al Viro , Dan Williams , Mauro Carvalho Chehab , bpf@vger.kernel.org, Magnus List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBOb3YgMDQsIDIwMTkgYXQgMTE6MzA6MzJBTSAtMDgwMCwgSm9obiBIdWJiYXJkIHdy b3RlOgo+IE9uIDExLzQvMTkgMTE6MTggQU0sIEplcm9tZSBHbGlzc2Ugd3JvdGU6Cj4gPiBPbiBN b24sIE5vdiAwNCwgMjAxOSBhdCAxMTowNDozOEFNIC0wODAwLCBKb2huIEh1YmJhcmQgd3JvdGU6 Cj4gPj4gT24gMTEvNC8xOSA5OjMzIEFNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+ID4+IC4uLgo+ ID4+Pgo+ID4+PiBGZXcgbml0cGljayBiZWxvd3MsIG5vbmV0aGVsZXNzOgo+ID4+Pgo+ID4+PiBS ZXZpZXdlZC1ieTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gPj4+IFsu Li5dCj4gPj4+PiArCj4gPj4+PiArQ0FTRSAzOiBPRFAKPiA+Pj4+ICstLS0tLS0tLS0tLQo+ID4+ Pj4gKyhNZWxsYW5veC9JbmZpbmliYW5kIE9uIERlbWFuZCBQYWdpbmc6IHRoZSBoYXJkd2FyZSBz dXBwb3J0cwo+ID4+Pj4gK3JlcGxheWFibGUgcGFnZSBmYXVsdGluZykuIFRoZXJlIGFyZSBHVVAg cmVmZXJlbmNlcyB0byBwYWdlcyBzZXJ2aW5nIGFzIERNQQo+ID4+Pj4gK2J1ZmZlcnMuIEZvciBP RFAsIE1NVSBub3RpZmllcnMgYXJlIHVzZWQgdG8gc3luY2hyb25pemUgd2l0aCBwYWdlX21rY2xl YW4oKQo+ID4+Pj4gK2FuZCBtdW5tYXAoKS4gVGhlcmVmb3JlLCBub3JtYWwgR1VQIGNhbGxzIGFy ZSBzdWZmaWNpZW50LCBzbyBuZWl0aGVyIGZsYWcKPiA+Pj4+ICtuZWVkcyB0byBiZSBzZXQuCj4g Pj4+Cj4gPj4+IEkgd291bGQgbm90IGluY2x1ZGUgT0RQIG9yIGFueXRoaW5nIGxpa2UgaXQgaGVy ZSwgdGhleSBkbyBub3QgdXNlCj4gPj4+IEdVUCBhbnltb3JlIGFuZCBpIGJlbGlldmUgaXQgaXMg bW9yZSBjb25mdXNpbmcgaGVyZS4gSSB3b3VsZCBob3ctCj4gPj4+IGV2ZXIgaW5jbHVkZSBzb21l IHRleHQgaW4gdGhpcyBkb2N1bWVudGF0aW9uIGV4cGxhaW5pbmcgdGhhdCBoYXJkLQo+ID4+PiB3 YXJlIHRoYXQgc3VwcG9ydCBwYWdlIGZhdWx0IGlzIHN1cGVyaW9yIGFzIGl0IGRvZXMgbm90IGlu Y3VyIGFueQo+ID4+PiBvZiB0aGUgaXNzdWVzIGRlc2NyaWJlZCBoZXJlLgo+ID4+Cj4gPj4gT0ss IGFncmVlZCwgaGVyZSdzIGEgbmV3IHdyaXRlIHVwIHRoYXQgSSdsbCBwdXQgaW4gdjM6Cj4gPj4K PiA+Pgo+ID4+IENBU0UgMzogT0RQCj4gPj4gLS0tLS0tLS0tLS0KPiA+IAo+ID4gT0RQIGlzIFJE TUEsIG1heWJlIEhhcmR3YXJlIHdpdGggcGFnZSBmYXVsdCBzdXBwb3J0IGluc3RlYWQKPiA+IAo+ ID4+IEFkdmFuY2VkLCBidXQgbm9uLUNQVSAoRE1BKSBoYXJkd2FyZSB0aGF0IHN1cHBvcnRzIHJl cGxheWFibGUgcGFnZSBmYXVsdHMuCj4gCj4gT0ssIHNvOgo+IAo+ICAgICAiUkRNQSBoYXJkd2Fy ZSB3aXRoIHBhZ2UgZmF1bHRpbmcgc3VwcG9ydC4iCj4gCj4gZm9yIHRoZSBmaXJzdCBzZW50ZW5j ZS4KCkkgd291bGQgZHJvcCBSRE1BIGNvbXBsZXRlbHksIFJETUEgaXMganVzdCBvbmUgZXhhbXBs ZSwgdGhleSBhcmUgR1BVLCBGUEdBIGFuZApvdGhlcnMgdGhhdCBhcmUgaW4gdGhhdCBjYXRlZ29y eS4gU2VlIGJlbG93Cgo+IAo+IAo+ID4+IEhlcmUsIGEgd2VsbC13cml0dGVuIGRyaXZlciBkb2Vz bid0IG5vcm1hbGx5IG5lZWQgdG8gcGluIHBhZ2VzIGF0IGFsbC4gSG93ZXZlciwKPiA+PiBpZiB0 aGUgZHJpdmVyIGRvZXMgY2hvb3NlIHRvIGRvIHNvLCBpdCBjYW4gcmVnaXN0ZXIgTU1VIG5vdGlm aWVycyBmb3IgdGhlIHJhbmdlLAo+ID4+IGFuZCB3aWxsIGJlIGNhbGxlZCBiYWNrIHVwb24gaW52 YWxpZGF0aW9uLiBFaXRoZXIgd2F5IChhdm9pZGluZyBwYWdlIHBpbm5pbmcsIG9yCj4gPj4gdXNp bmcgTU1VIG5vdGlmaWVycyB0byB1bnBpbiB1cG9uIHJlcXVlc3QpLCB0aGVyZSBpcyBwcm9wZXIg c3luY2hyb25pemF0aW9uIHdpdGggCj4gPj4gYm90aCBmaWxlc3lzdGVtIGFuZCBtbSAocGFnZV9t a2NsZWFuKCksIG11bm1hcCgpLCBldGMpLgo+ID4+Cj4gPj4gVGhlcmVmb3JlLCBuZWl0aGVyIGZs YWcgbmVlZHMgdG8gYmUgc2V0Lgo+ID4gCj4gPiBJbiBmYWN0IEdVUCBzaG91bGQgbmV2ZXIgYmUg dXNlIHdpdGggdGhvc2UuCj4gCj4gCj4gWWVzLiBUaGUgbmV4dCBwYXJhZ3JhcGggc2F5cyB0aGF0 LCBidXQgbWF5YmUgbm90IHN0cm9uZyBlbm91Z2guCj4gCj4gCj4gPj4KPiA+PiBJdCdzIHdvcnRo IG1lbnRpb25pbmcgaGVyZSB0aGF0IHBpbm5pbmcgcGFnZXMgc2hvdWxkIG5vdCBiZSB0aGUgZmly c3QgZGVzaWduCj4gPj4gY2hvaWNlLiBJZiBwYWdlIGZhdWx0IGNhcGFibGUgaGFyZHdhcmUgaXMg YXZhaWxhYmxlLCB0aGVuIHRoZSBzb2Z0d2FyZSBzaG91bGQKPiA+PiBiZSB3cml0dGVuIHNvIHRo YXQgaXQgZG9lcyBub3QgcGluIHBhZ2VzLiBUaGlzIGFsbG93cyBtbSBhbmQgZmlsZXN5c3RlbXMg dG8KPiA+PiBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgYW5kIHJlbGlhYmx5Lgo+IAo+IEhlcmUn cyB3aGF0IHdlIGhhdmUgYWZ0ZXIgdGhlIGFib3ZlIGNoYW5nZXM6Cj4gCj4gQ0FTRSAzOiBPRFAK PiAtLS0tLS0tLS0tLQo+IFJETUEgaGFyZHdhcmUgd2l0aCBwYWdlIGZhdWx0aW5nIHN1cHBvcnQu IEhlcmUsIGEgd2VsbC13cml0dGVuIGRyaXZlciBkb2Vzbid0CgpDQVNFMzogSGFyZHdhcmUgd2l0 aCBwYWdlIGZhdWx0IHN1cHBvcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgpIZXJlLCBhIHdlbGwtd3JpdHRlbiAuLi4uCgoKPiBub3JtYWxseSBuZWVkIHRvIHBpbiBw YWdlcyBhdCBhbGwuIEhvd2V2ZXIsIGlmIHRoZSBkcml2ZXIgZG9lcyBjaG9vc2UgdG8gZG8gc28s Cj4gaXQgY2FuIHJlZ2lzdGVyIE1NVSBub3RpZmllcnMgZm9yIHRoZSByYW5nZSwgYW5kIHdpbGwg YmUgY2FsbGVkIGJhY2sgdXBvbgo+IGludmFsaWRhdGlvbi4gRWl0aGVyIHdheSAoYXZvaWRpbmcg cGFnZSBwaW5uaW5nLCBvciB1c2luZyBNTVUgbm90aWZpZXJzIHRvIHVucGluCj4gdXBvbiByZXF1 ZXN0KSwgdGhlcmUgaXMgcHJvcGVyIHN5bmNocm9uaXphdGlvbiB3aXRoIGJvdGggZmlsZXN5c3Rl bSBhbmQgbW0KPiAocGFnZV9ta2NsZWFuKCksIG11bm1hcCgpLCBldGMpLgo+IAo+IFRoZXJlZm9y ZSwgbmVpdGhlciBmbGFnIG5lZWRzIHRvIGJlIHNldC4KPiAKPiBJbiB0aGlzIGNhc2UsIGlkZWFs bHksIG5laXRoZXIgZ2V0X3VzZXJfcGFnZXMoKSBub3IgcGluX3VzZXJfcGFnZXMoKSBzaG91bGQg YmUgCj4gY2FsbGVkLiBJbnN0ZWFkLCB0aGUgc29mdHdhcmUgc2hvdWxkIGJlIHdyaXR0ZW4gc28g dGhhdCBpdCBkb2VzIG5vdCBwaW4gcGFnZXMuIAo+IFRoaXMgYWxsb3dzIG1tIGFuZCBmaWxlc3lz dGVtcyB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgYW5kIHJlbGlhYmx5Lgo+IAo+ID4+PiBb Li4uXQo+ID4+Pgo+ID4+Pj4gQEAgLTEwMTQsNyArMTAxOCwxNiBAQCBzdGF0aWMgX19hbHdheXNf aW5saW5lIGxvbmcgX19nZXRfdXNlcl9wYWdlc19sb2NrZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0 c2ssCj4gPj4+PiAgCQlCVUdfT04oKmxvY2tlZCAhPSAxKTsKPiA+Pj4+ICAJfQo+ID4+Pj4gIAo+ ID4+Pj4gLQlpZiAocGFnZXMpCj4gPj4+PiArCS8qCj4gPj4+PiArCSAqIEZPTExfUElOIGFuZCBG T0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBUcmFkaXRpb25hbCBiZWhhdmlvcgo+ID4+ Pj4gKwkgKiBpcyB0byBzZXQgRk9MTF9HRVQgaWYgdGhlIGNhbGxlciB3YW50cyBwYWdlc1tdIGZp bGxlZCBpbiAoYnV0IGhhcwo+ID4+Pj4gKwkgKiBjYXJlbGVzc2x5IGZhaWxlZCB0byBzcGVjaWZ5 IEZPTExfR0VUKSwgc28ga2VlcCBkb2luZyB0aGF0LCBidXQgb25seQo+ID4+Pj4gKwkgKiBmb3Ig Rk9MTF9HRVQsIG5vdCBmb3IgdGhlIG5ld2VyIEZPTExfUElOLgo+ID4+Pj4gKwkgKgo+ID4+Pj4g KwkgKiBGT0xMX1BJTiBhbHdheXMgZXhwZWN0cyBwYWdlcyB0byBiZSBub24tbnVsbCwgYnV0IG5v IG5lZWQgdG8gYXNzZXJ0Cj4gPj4+PiArCSAqIHRoYXQgaGVyZSwgYXMgYW55IGZhaWx1cmVzIHdp bGwgYmUgb2J2aW91cyBlbm91Z2guCj4gPj4+PiArCSAqLwo+ID4+Pj4gKwlpZiAocGFnZXMgJiYg IShmbGFncyAmIEZPTExfUElOKSkKPiA+Pj4+ICAJCWZsYWdzIHw9IEZPTExfR0VUOwo+ID4+Pgo+ ID4+PiBEaWQgeW91IGxvb2sgYXQgdXNlciB0aGF0IGhhdmUgcGFnZXMgYW5kIG5vdCBGT0xMX0dF VCBzZXQgPwo+ID4+PiBJIGJlbGlldmUgaXQgd291bGQgYmUgYmV0dGVyIHRvIGZpcnN0IGZpeCB0 aGVtIHRvIGVuZCB1cAo+ID4+PiB3aXRoIEZPTExfR0VUIHNldCBhbmQgdGhlbiBlcnJvciBvdXQg aWYgcGFnZXMgaXMgIT0gTlVMTCBidXQKPiA+Pj4gbm9yIEZPTExfR0VUIG9yIEZPTExfUElOIGlz IHNldC4KPiA+Pj4KPiA+Pgo+ID4+IEkgd2FzIHBlcmhhcHMgb3Zlcmx5IGNhdXRpb3VzLCBhbmQg ZGlkbid0IGdvIHRoZXJlLiBIb3dldmVyLCBpdCdzIHByb2JhYmx5Cj4gPj4gZG9hYmxlLCBnaXZl biB0aGF0IHRoZXJlIHdhcyBhbHJlYWR5IHRoZSBmb2xsb3dpbmcgaW4gX19nZXRfdXNlcl9wYWdl cygpOgo+ID4+Cj4gPj4gICAgIFZNX0JVR19PTighIXBhZ2VzICE9ICEhKGd1cF9mbGFncyAmIEZP TExfR0VUKSk7Cj4gPj4KPiA+PiAuLi53aGljaCB3aWxsIGhhdmUgY29uZGl0aW9uZWQgcGVvcGxl IGFuZCBjb2RlIHRvIHNldCBGT0xMX0dFVCB0b2dldGhlciB3aXRoCj4gPj4gcGFnZXMuIFNvIEkg YWdyZWUgdGhhdCB0aGUgdGltZSBpcyByaWdodC4KPiA+Pgo+ID4+IEluIG9yZGVyIHRvIG1ha2Ug YmlzZWN0aW5nIGZ1dHVyZSBmYWlsdXJlcyBzaW1wbGVyLCBJIGNhbiBpbnNlcnQgYSBwYXRjaCBy aWdodCAKPiA+PiBiZWZvcmUgdGhpcyBvbmUsIHRoYXQgY2hhbmdlcyB0aGUgRk9MTF9HRVQgc2V0 dGluZyBpbnRvIGFuIGFzc2VydCwgbGlrZSB0aGlzOgo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL21t L2d1cC5jIGIvbW0vZ3VwLmMKPiA+PiBpbmRleCA4ZjIzNmEzMzVhZTkuLmJlMzM4OTYxZTgwZCAx MDA2NDQKPiA+PiAtLS0gYS9tbS9ndXAuYwo+ID4+ICsrKyBiL21tL2d1cC5jCj4gPj4gQEAgLTEw MTQsOCArMTAxNCw4IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBfX2dldF91c2VyX3Bh Z2VzX2xvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKPiA+PiAgICAgICAgICAgICAgICAg QlVHX09OKCpsb2NrZWQgIT0gMSk7Cj4gPj4gICAgICAgICB9Cj4gPj4gIAo+ID4+IC0gICAgICAg aWYgKHBhZ2VzKQo+ID4+IC0gICAgICAgICAgICAgICBmbGFncyB8PSBGT0xMX0dFVDsKPiA+PiAr ICAgICAgIGlmIChwYWdlcyAmJiBXQVJOX09OX09OQ0UoIShndXBfZmxhZ3MgJiBGT0xMX0dFVCkp KQo+ID4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiAgCj4gPj4gICAgICAg ICBwYWdlc19kb25lID0gMDsKPiA+PiAgICAgICAgIGxvY2tfZHJvcHBlZCA9IGZhbHNlOwo+ID4+ Cj4gPj4KPiA+PiAuLi5hbmQgdGhlbiBhZGQgaW4gRk9MTF9QSU4sIHdpdGggdGhpcyBwYXRjaC4K PiA+IAo+ID4gbG9va3MgZ29vZCBidXQgZG91YmxlIGNoZWNrIHRoYXQgaXQgc2hvdWxkIG5vdCBo YXBwZW5zLCBpIHdpbGwgdHJ5Cj4gPiB0byBjaGVjayBvbiBteSBzaWRlIHRvby4KPiAKPiBZZXMs IEknbGwgbG9vay4KPiAKPiAuLi4KPiA+Pj4+ICsJICovCj4gPj4+PiArCWd1cF9mbGFncyB8PSBG T0xMX1JFTU9URSB8IEZPTExfUElOOwo+ID4+Pgo+ID4+PiBXb3VsZG4ndCBpdCBiZSBiZXR0ZXIg dG8gbm90IGFkZCBwaW5fbG9uZ3Rlcm1fcGFnZXNfcmVtb3RlKCkgdW50aWwKPiA+Pj4gaXQgY2Fu IGJlIHByb3Blcmx5IGltcGxlbWVudGVkID8KPiA+Pj4KPiA+Pgo+ID4+IFdlbGwsIHRoZSBwcm9i bGVtIGlzIHRoYXQgSSBuZWVkIGVhY2ggY2FsbCBzaXRlIHRoYXQgcmVxdWlyZXMgRk9MTF9QSU4K PiA+PiB0byB1c2UgYSBwcm9wZXIgd3JhcHBlci4gSXQncyB0aGUgRk9MTF9QSU4gdGhhdCBpcyB0 aGUgZm9jdXMgaGVyZSwgYmVjYXVzZQo+ID4+IHRoZXJlIGlzIGEgaGFyZCwgYnJpZ2h0IHJ1bGUs IHdoaWNoIGlzOiBpZiBhbmQgb25seSBpZiBhIGNhbGxlciBzZXRzCj4gPj4gRk9MTF9QSU4sIHRo ZW4gdGhlIGRtYS1wYWdlIHRyYWNraW5nIGhhcHBlbnMsIGFuZCBwdXRfdXNlcl9wYWdlKCkgbXVz dAo+ID4+IGJlIGNhbGxlZC4KPiA+Pgo+ID4+IFNvIHRoaXMgbGVhdmVzIG1lIHdpdGggb25seSB0 d28gcmVhc29uYWJsZSBjaG9pY2VzOgo+ID4+Cj4gPj4gYSkgQ29udmVydCB0aGUgY2FsbCBzaXRl IGFzIGFib3ZlOiBwaW5fbG9uZ3Rlcm1fcGFnZXNfcmVtb3RlKCksIHdoaWNoIHNldHMKPiA+PiBG T0xMX1BJTiAodGhlIGtleSBwb2ludCEpLCBhbmQgbGVhdmVzIHRoZSBGT0xMX0xPTkdURVJNIHNp dHVhdGlvbiBleGFjdGx5Cj4gPj4gYXMgaXQgaGFzIGJlZW4gc28gZmFyLiBXaGVuIHRoZSBGT0xM X0xPTkdURVJNIHNpdHVhdGlvbiBpcyBmaXhlZCwgdGhlIGNhbGwKPiA+PiBzaXRlICptaWdodCog bm90IG5lZWQgYW55IGNoYW5nZXMgdG8gYWRvcHQgdGhlIHdvcmtpbmcgZ3VwLmMgY29kZS4KPiA+ Pgo+ID4+IGIpIENvbnZlcnQgdGhlIGNhbGwgc2l0ZSB0byBwaW5fdXNlcl9wYWdlc19yZW1vdGUo KSwgd2hpY2ggYWxzbyBzZXRzCj4gPj4gRk9MTF9QSU4sIGFuZCBhbHNvIGxlYXZlcyB0aGUgRk9M TF9MT05HVEVSTSBzaXR1YXRpb24gZXhhY3RseSBhcyBiZWZvcmUuCj4gPj4gVGhlcmUgd291bGQg YWxzbyBiZSBhIGNvbW1lbnQgYXQgdGhlIGNhbGwgc2l0ZSwgdG8gdGhlIGVmZmVjdCBvZiwgInRo aXMKPiA+PiBpcyB0aGUgd3JvbmcgY2FsbCB0byBtYWtlOiBpdCByZWFsbHkgcmVxdWlyZXMgRk9M TF9MT05HVEVSTSBiZWhhdmlvciIuCj4gPj4KPiA+PiBXaGVuIHRoZSBGT0xMX0xPTkdURVJNIHNp dHVhdGlvbiBpcyBmaXhlZCwgdGhlIGNhbGwgc2l0ZSB3aWxsIG5lZWQgdG8gYmUKPiA+PiBjaGFu Z2VkIHRvIHBpbl9sb25ndGVybV9wYWdlc19yZW1vdGUoKS4KPiA+Pgo+ID4+IFNvIHlvdSBjYW4g cHJvYmFibHkgc2VlIHdoeSBJIHBpY2tlZCAoYSkuCj4gPiAKPiA+IEJ1dCByaWdodCBub3cgbm9i b2R5IGhhcyBGT0xMX0xPTkdURVJNIGFuZCBGT0xMX1JFTU9URS4gU28geW91IHNob3VsZAo+ID4g bmV2ZXIgaGF2ZSB0aGUgbmVlZCBmb3IgcGluX2xvbmd0ZXJtX3BhZ2VzX3JlbW90ZSgpLiBNeSBm ZWFyIGlzIHRoYXQKPiA+IGxvbmd0ZXJtIGhhcyBpbXBsaWNhdGlvbiBhbmQgaXQgd291bGQgYmUg YmV0dGVyIHRvIG5vdCBkcm9wIHRoaXMgaW1wbGljYXRpb24KPiA+IGJ5IGFkZGluZyBhIHdyYXBw ZXIgdGhhdCBkb2VzIG5vdCBkbyB3aGF0IHRoZSBuYW1lIHNheXMuCj4gPiAKPiA+IFNvIGRvIG5v dCBpbnRyb2R1Y2UgcGluX2xvbmd0ZXJtX3BhZ2VzX3JlbW90ZSgpIHVudGlsIGl0cyBmaXJzdCB1 c2VyCj4gPiBoYXBwZW5zLiBUaGlzIGlzIG9wdGlvbiBjKQo+ID4gCj4gCj4gQWxtb3N0IGZvcmdv dCwgdGhvdWdoOiB0aGVyZSBpcyBhbHJlYWR5IGFub3RoZXIgdXNlcjogSW5maW5pYmFuZDoKPiAK PiBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jOjY0NjogICAgICAgICBucGFnZXMg PSBwaW5fbG9uZ3Rlcm1fcGFnZXNfcmVtb3RlKG93bmluZ19wcm9jZXNzLCBvd25pbmdfbW0sCgpv ZHAgZG8gbm90IG5lZWQgdGhhdCwgaSB0aG91Z2h0IHRoZSBITU0gY29udmVydGlvbiB3YXMgYWxy ZWFkeSB1cHN0cmVhbQpidXQgc2VlbXMgbm90LCBpbiBhbnkgY2FzZSBvZHAgZG8gbm90IG5lZWQg dGhlIGxvbmd0ZXJtIGNhc2UgaXQgb25seQpzbyBiZXN0IGlzIHRvIHJldmVydCB0aGF0IHVzZXIg dG8gZ3VwX2Zhc3Qgb3Igc29tZXRoaW5nIHVudGlsIGl0IGdldApjb252ZXJ0ZWQgdG8gSE1NLgoK Q2hlZXJzLApKw6lyw7RtZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVs 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=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 01550CA9EB5 for ; Mon, 4 Nov 2019 19:53:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D83692089C for ; Mon, 4 Nov 2019 19:53:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D83692089C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 44A7D6E855; Mon, 4 Nov 2019 19:53:09 +0000 (UTC) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A4566E855 for ; Mon, 4 Nov 2019 19:53:08 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-92-ZQL91USHOcmTk___p7nkiA-1; Mon, 04 Nov 2019 14:53:03 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 760D1107ACC2; Mon, 4 Nov 2019 19:52:58 +0000 (UTC) Received: from redhat.com (unknown [10.20.6.178]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E8A5B1FC; Mon, 4 Nov 2019 19:52:49 +0000 (UTC) Date: Mon, 4 Nov 2019 14:52:48 -0500 From: Jerome Glisse To: John Hubbard Subject: Re: [PATCH v2 05/18] mm/gup: introduce pin_user_pages*() and FOLL_PIN Message-ID: <20191104195248.GA7731@redhat.com> References: <20191103211813.213227-1-jhubbard@nvidia.com> <20191103211813.213227-6-jhubbard@nvidia.com> <20191104173325.GD5134@redhat.com> <20191104191811.GI5134@redhat.com> MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/1.12.1 (2019-06-15) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-MC-Unique: ZQL91USHOcmTk___p7nkiA-1 X-Mimecast-Spam-Score: 0 Content-Disposition: inline X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572897187; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5YqXY05LcZm45Xoi2n7UBvKIcNMM7euzmr8OM5rBxks=; b=LUW4vh9DupPlwYYAvMF55kZVVVFWE5LTVgcI6qTLMGAv0rM1uq6knqm6oneXGw1pmdE9yO 2gxroMmOMOeP2KxyWk4bUFpYENWCTdD45CJ5A/zESEu9E4VCB0GZIOIPckGwcTXSZgBkwZ vGXCQuhogjiN32Ln2RlaMOAF6laugS4= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Christoph Hellwig , Jason Gunthorpe , Vlastimil Babka , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , linux-media@vger.kernel.org, Shuah Khan , linux-block@vger.kernel.org, Alex Williamson , Al Viro , Dan Williams , Mauro Carvalho Chehab , bpf@vger.kernel.org, Magnus Karlsson , Jens Axboe , netdev@vger.kernel.org, LKML , linux-fsdevel@vger.kernel.org, Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S . Miller" , Mike Kravetz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191104195248.PHlnsSWawiyp2SyCs526ooEovT1olPyJVvVLcDarW9c@z> T24gTW9uLCBOb3YgMDQsIDIwMTkgYXQgMTE6MzA6MzJBTSAtMDgwMCwgSm9obiBIdWJiYXJkIHdy b3RlOgo+IE9uIDExLzQvMTkgMTE6MTggQU0sIEplcm9tZSBHbGlzc2Ugd3JvdGU6Cj4gPiBPbiBN b24sIE5vdiAwNCwgMjAxOSBhdCAxMTowNDozOEFNIC0wODAwLCBKb2huIEh1YmJhcmQgd3JvdGU6 Cj4gPj4gT24gMTEvNC8xOSA5OjMzIEFNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+ID4+IC4uLgo+ ID4+Pgo+ID4+PiBGZXcgbml0cGljayBiZWxvd3MsIG5vbmV0aGVsZXNzOgo+ID4+Pgo+ID4+PiBS ZXZpZXdlZC1ieTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gPj4+IFsu Li5dCj4gPj4+PiArCj4gPj4+PiArQ0FTRSAzOiBPRFAKPiA+Pj4+ICstLS0tLS0tLS0tLQo+ID4+ Pj4gKyhNZWxsYW5veC9JbmZpbmliYW5kIE9uIERlbWFuZCBQYWdpbmc6IHRoZSBoYXJkd2FyZSBz dXBwb3J0cwo+ID4+Pj4gK3JlcGxheWFibGUgcGFnZSBmYXVsdGluZykuIFRoZXJlIGFyZSBHVVAg cmVmZXJlbmNlcyB0byBwYWdlcyBzZXJ2aW5nIGFzIERNQQo+ID4+Pj4gK2J1ZmZlcnMuIEZvciBP RFAsIE1NVSBub3RpZmllcnMgYXJlIHVzZWQgdG8gc3luY2hyb25pemUgd2l0aCBwYWdlX21rY2xl YW4oKQo+ID4+Pj4gK2FuZCBtdW5tYXAoKS4gVGhlcmVmb3JlLCBub3JtYWwgR1VQIGNhbGxzIGFy ZSBzdWZmaWNpZW50LCBzbyBuZWl0aGVyIGZsYWcKPiA+Pj4+ICtuZWVkcyB0byBiZSBzZXQuCj4g Pj4+Cj4gPj4+IEkgd291bGQgbm90IGluY2x1ZGUgT0RQIG9yIGFueXRoaW5nIGxpa2UgaXQgaGVy ZSwgdGhleSBkbyBub3QgdXNlCj4gPj4+IEdVUCBhbnltb3JlIGFuZCBpIGJlbGlldmUgaXQgaXMg bW9yZSBjb25mdXNpbmcgaGVyZS4gSSB3b3VsZCBob3ctCj4gPj4+IGV2ZXIgaW5jbHVkZSBzb21l IHRleHQgaW4gdGhpcyBkb2N1bWVudGF0aW9uIGV4cGxhaW5pbmcgdGhhdCBoYXJkLQo+ID4+PiB3 YXJlIHRoYXQgc3VwcG9ydCBwYWdlIGZhdWx0IGlzIHN1cGVyaW9yIGFzIGl0IGRvZXMgbm90IGlu Y3VyIGFueQo+ID4+PiBvZiB0aGUgaXNzdWVzIGRlc2NyaWJlZCBoZXJlLgo+ID4+Cj4gPj4gT0ss IGFncmVlZCwgaGVyZSdzIGEgbmV3IHdyaXRlIHVwIHRoYXQgSSdsbCBwdXQgaW4gdjM6Cj4gPj4K PiA+Pgo+ID4+IENBU0UgMzogT0RQCj4gPj4gLS0tLS0tLS0tLS0KPiA+IAo+ID4gT0RQIGlzIFJE TUEsIG1heWJlIEhhcmR3YXJlIHdpdGggcGFnZSBmYXVsdCBzdXBwb3J0IGluc3RlYWQKPiA+IAo+ ID4+IEFkdmFuY2VkLCBidXQgbm9uLUNQVSAoRE1BKSBoYXJkd2FyZSB0aGF0IHN1cHBvcnRzIHJl cGxheWFibGUgcGFnZSBmYXVsdHMuCj4gCj4gT0ssIHNvOgo+IAo+ICAgICAiUkRNQSBoYXJkd2Fy ZSB3aXRoIHBhZ2UgZmF1bHRpbmcgc3VwcG9ydC4iCj4gCj4gZm9yIHRoZSBmaXJzdCBzZW50ZW5j ZS4KCkkgd291bGQgZHJvcCBSRE1BIGNvbXBsZXRlbHksIFJETUEgaXMganVzdCBvbmUgZXhhbXBs ZSwgdGhleSBhcmUgR1BVLCBGUEdBIGFuZApvdGhlcnMgdGhhdCBhcmUgaW4gdGhhdCBjYXRlZ29y eS4gU2VlIGJlbG93Cgo+IAo+IAo+ID4+IEhlcmUsIGEgd2VsbC13cml0dGVuIGRyaXZlciBkb2Vz bid0IG5vcm1hbGx5IG5lZWQgdG8gcGluIHBhZ2VzIGF0IGFsbC4gSG93ZXZlciwKPiA+PiBpZiB0 aGUgZHJpdmVyIGRvZXMgY2hvb3NlIHRvIGRvIHNvLCBpdCBjYW4gcmVnaXN0ZXIgTU1VIG5vdGlm aWVycyBmb3IgdGhlIHJhbmdlLAo+ID4+IGFuZCB3aWxsIGJlIGNhbGxlZCBiYWNrIHVwb24gaW52 YWxpZGF0aW9uLiBFaXRoZXIgd2F5IChhdm9pZGluZyBwYWdlIHBpbm5pbmcsIG9yCj4gPj4gdXNp bmcgTU1VIG5vdGlmaWVycyB0byB1bnBpbiB1cG9uIHJlcXVlc3QpLCB0aGVyZSBpcyBwcm9wZXIg c3luY2hyb25pemF0aW9uIHdpdGggCj4gPj4gYm90aCBmaWxlc3lzdGVtIGFuZCBtbSAocGFnZV9t a2NsZWFuKCksIG11bm1hcCgpLCBldGMpLgo+ID4+Cj4gPj4gVGhlcmVmb3JlLCBuZWl0aGVyIGZs YWcgbmVlZHMgdG8gYmUgc2V0Lgo+ID4gCj4gPiBJbiBmYWN0IEdVUCBzaG91bGQgbmV2ZXIgYmUg dXNlIHdpdGggdGhvc2UuCj4gCj4gCj4gWWVzLiBUaGUgbmV4dCBwYXJhZ3JhcGggc2F5cyB0aGF0 LCBidXQgbWF5YmUgbm90IHN0cm9uZyBlbm91Z2guCj4gCj4gCj4gPj4KPiA+PiBJdCdzIHdvcnRo IG1lbnRpb25pbmcgaGVyZSB0aGF0IHBpbm5pbmcgcGFnZXMgc2hvdWxkIG5vdCBiZSB0aGUgZmly c3QgZGVzaWduCj4gPj4gY2hvaWNlLiBJZiBwYWdlIGZhdWx0IGNhcGFibGUgaGFyZHdhcmUgaXMg YXZhaWxhYmxlLCB0aGVuIHRoZSBzb2Z0d2FyZSBzaG91bGQKPiA+PiBiZSB3cml0dGVuIHNvIHRo YXQgaXQgZG9lcyBub3QgcGluIHBhZ2VzLiBUaGlzIGFsbG93cyBtbSBhbmQgZmlsZXN5c3RlbXMg dG8KPiA+PiBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgYW5kIHJlbGlhYmx5Lgo+IAo+IEhlcmUn cyB3aGF0IHdlIGhhdmUgYWZ0ZXIgdGhlIGFib3ZlIGNoYW5nZXM6Cj4gCj4gQ0FTRSAzOiBPRFAK PiAtLS0tLS0tLS0tLQo+IFJETUEgaGFyZHdhcmUgd2l0aCBwYWdlIGZhdWx0aW5nIHN1cHBvcnQu IEhlcmUsIGEgd2VsbC13cml0dGVuIGRyaXZlciBkb2Vzbid0CgpDQVNFMzogSGFyZHdhcmUgd2l0 aCBwYWdlIGZhdWx0IHN1cHBvcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgpIZXJlLCBhIHdlbGwtd3JpdHRlbiAuLi4uCgoKPiBub3JtYWxseSBuZWVkIHRvIHBpbiBw YWdlcyBhdCBhbGwuIEhvd2V2ZXIsIGlmIHRoZSBkcml2ZXIgZG9lcyBjaG9vc2UgdG8gZG8gc28s Cj4gaXQgY2FuIHJlZ2lzdGVyIE1NVSBub3RpZmllcnMgZm9yIHRoZSByYW5nZSwgYW5kIHdpbGwg YmUgY2FsbGVkIGJhY2sgdXBvbgo+IGludmFsaWRhdGlvbi4gRWl0aGVyIHdheSAoYXZvaWRpbmcg cGFnZSBwaW5uaW5nLCBvciB1c2luZyBNTVUgbm90aWZpZXJzIHRvIHVucGluCj4gdXBvbiByZXF1 ZXN0KSwgdGhlcmUgaXMgcHJvcGVyIHN5bmNocm9uaXphdGlvbiB3aXRoIGJvdGggZmlsZXN5c3Rl bSBhbmQgbW0KPiAocGFnZV9ta2NsZWFuKCksIG11bm1hcCgpLCBldGMpLgo+IAo+IFRoZXJlZm9y ZSwgbmVpdGhlciBmbGFnIG5lZWRzIHRvIGJlIHNldC4KPiAKPiBJbiB0aGlzIGNhc2UsIGlkZWFs bHksIG5laXRoZXIgZ2V0X3VzZXJfcGFnZXMoKSBub3IgcGluX3VzZXJfcGFnZXMoKSBzaG91bGQg YmUgCj4gY2FsbGVkLiBJbnN0ZWFkLCB0aGUgc29mdHdhcmUgc2hvdWxkIGJlIHdyaXR0ZW4gc28g dGhhdCBpdCBkb2VzIG5vdCBwaW4gcGFnZXMuIAo+IFRoaXMgYWxsb3dzIG1tIGFuZCBmaWxlc3lz dGVtcyB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgYW5kIHJlbGlhYmx5Lgo+IAo+ID4+PiBb Li4uXQo+ID4+Pgo+ID4+Pj4gQEAgLTEwMTQsNyArMTAxOCwxNiBAQCBzdGF0aWMgX19hbHdheXNf aW5saW5lIGxvbmcgX19nZXRfdXNlcl9wYWdlc19sb2NrZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0 c2ssCj4gPj4+PiAgCQlCVUdfT04oKmxvY2tlZCAhPSAxKTsKPiA+Pj4+ICAJfQo+ID4+Pj4gIAo+ ID4+Pj4gLQlpZiAocGFnZXMpCj4gPj4+PiArCS8qCj4gPj4+PiArCSAqIEZPTExfUElOIGFuZCBG T0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBUcmFkaXRpb25hbCBiZWhhdmlvcgo+ID4+ Pj4gKwkgKiBpcyB0byBzZXQgRk9MTF9HRVQgaWYgdGhlIGNhbGxlciB3YW50cyBwYWdlc1tdIGZp bGxlZCBpbiAoYnV0IGhhcwo+ID4+Pj4gKwkgKiBjYXJlbGVzc2x5IGZhaWxlZCB0byBzcGVjaWZ5 IEZPTExfR0VUKSwgc28ga2VlcCBkb2luZyB0aGF0LCBidXQgb25seQo+ID4+Pj4gKwkgKiBmb3Ig Rk9MTF9HRVQsIG5vdCBmb3IgdGhlIG5ld2VyIEZPTExfUElOLgo+ID4+Pj4gKwkgKgo+ID4+Pj4g KwkgKiBGT0xMX1BJTiBhbHdheXMgZXhwZWN0cyBwYWdlcyB0byBiZSBub24tbnVsbCwgYnV0IG5v IG5lZWQgdG8gYXNzZXJ0Cj4gPj4+PiArCSAqIHRoYXQgaGVyZSwgYXMgYW55IGZhaWx1cmVzIHdp bGwgYmUgb2J2aW91cyBlbm91Z2guCj4gPj4+PiArCSAqLwo+ID4+Pj4gKwlpZiAocGFnZXMgJiYg IShmbGFncyAmIEZPTExfUElOKSkKPiA+Pj4+ICAJCWZsYWdzIHw9IEZPTExfR0VUOwo+ID4+Pgo+ ID4+PiBEaWQgeW91IGxvb2sgYXQgdXNlciB0aGF0IGhhdmUgcGFnZXMgYW5kIG5vdCBGT0xMX0dF VCBzZXQgPwo+ID4+PiBJIGJlbGlldmUgaXQgd291bGQgYmUgYmV0dGVyIHRvIGZpcnN0IGZpeCB0 aGVtIHRvIGVuZCB1cAo+ID4+PiB3aXRoIEZPTExfR0VUIHNldCBhbmQgdGhlbiBlcnJvciBvdXQg aWYgcGFnZXMgaXMgIT0gTlVMTCBidXQKPiA+Pj4gbm9yIEZPTExfR0VUIG9yIEZPTExfUElOIGlz IHNldC4KPiA+Pj4KPiA+Pgo+ID4+IEkgd2FzIHBlcmhhcHMgb3Zlcmx5IGNhdXRpb3VzLCBhbmQg ZGlkbid0IGdvIHRoZXJlLiBIb3dldmVyLCBpdCdzIHByb2JhYmx5Cj4gPj4gZG9hYmxlLCBnaXZl biB0aGF0IHRoZXJlIHdhcyBhbHJlYWR5IHRoZSBmb2xsb3dpbmcgaW4gX19nZXRfdXNlcl9wYWdl cygpOgo+ID4+Cj4gPj4gICAgIFZNX0JVR19PTighIXBhZ2VzICE9ICEhKGd1cF9mbGFncyAmIEZP TExfR0VUKSk7Cj4gPj4KPiA+PiAuLi53aGljaCB3aWxsIGhhdmUgY29uZGl0aW9uZWQgcGVvcGxl IGFuZCBjb2RlIHRvIHNldCBGT0xMX0dFVCB0b2dldGhlciB3aXRoCj4gPj4gcGFnZXMuIFNvIEkg YWdyZWUgdGhhdCB0aGUgdGltZSBpcyByaWdodC4KPiA+Pgo+ID4+IEluIG9yZGVyIHRvIG1ha2Ug YmlzZWN0aW5nIGZ1dHVyZSBmYWlsdXJlcyBzaW1wbGVyLCBJIGNhbiBpbnNlcnQgYSBwYXRjaCBy aWdodCAKPiA+PiBiZWZvcmUgdGhpcyBvbmUsIHRoYXQgY2hhbmdlcyB0aGUgRk9MTF9HRVQgc2V0 dGluZyBpbnRvIGFuIGFzc2VydCwgbGlrZSB0aGlzOgo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL21t L2d1cC5jIGIvbW0vZ3VwLmMKPiA+PiBpbmRleCA4ZjIzNmEzMzVhZTkuLmJlMzM4OTYxZTgwZCAx MDA2NDQKPiA+PiAtLS0gYS9tbS9ndXAuYwo+ID4+ICsrKyBiL21tL2d1cC5jCj4gPj4gQEAgLTEw MTQsOCArMTAxNCw4IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBfX2dldF91c2VyX3Bh Z2VzX2xvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKPiA+PiAgICAgICAgICAgICAgICAg QlVHX09OKCpsb2NrZWQgIT0gMSk7Cj4gPj4gICAgICAgICB9Cj4gPj4gIAo+ID4+IC0gICAgICAg aWYgKHBhZ2VzKQo+ID4+IC0gICAgICAgICAgICAgICBmbGFncyB8PSBGT0xMX0dFVDsKPiA+PiAr ICAgICAgIGlmIChwYWdlcyAmJiBXQVJOX09OX09OQ0UoIShndXBfZmxhZ3MgJiBGT0xMX0dFVCkp KQo+ID4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiAgCj4gPj4gICAgICAg ICBwYWdlc19kb25lID0gMDsKPiA+PiAgICAgICAgIGxvY2tfZHJvcHBlZCA9IGZhbHNlOwo+ID4+ Cj4gPj4KPiA+PiAuLi5hbmQgdGhlbiBhZGQgaW4gRk9MTF9QSU4sIHdpdGggdGhpcyBwYXRjaC4K PiA+IAo+ID4gbG9va3MgZ29vZCBidXQgZG91YmxlIGNoZWNrIHRoYXQgaXQgc2hvdWxkIG5vdCBo YXBwZW5zLCBpIHdpbGwgdHJ5Cj4gPiB0byBjaGVjayBvbiBteSBzaWRlIHRvby4KPiAKPiBZZXMs IEknbGwgbG9vay4KPiAKPiAuLi4KPiA+Pj4+ICsJICovCj4gPj4+PiArCWd1cF9mbGFncyB8PSBG T0xMX1JFTU9URSB8IEZPTExfUElOOwo+ID4+Pgo+ID4+PiBXb3VsZG4ndCBpdCBiZSBiZXR0ZXIg dG8gbm90IGFkZCBwaW5fbG9uZ3Rlcm1fcGFnZXNfcmVtb3RlKCkgdW50aWwKPiA+Pj4gaXQgY2Fu IGJlIHByb3Blcmx5IGltcGxlbWVudGVkID8KPiA+Pj4KPiA+Pgo+ID4+IFdlbGwsIHRoZSBwcm9i bGVtIGlzIHRoYXQgSSBuZWVkIGVhY2ggY2FsbCBzaXRlIHRoYXQgcmVxdWlyZXMgRk9MTF9QSU4K PiA+PiB0byB1c2UgYSBwcm9wZXIgd3JhcHBlci4gSXQncyB0aGUgRk9MTF9QSU4gdGhhdCBpcyB0 aGUgZm9jdXMgaGVyZSwgYmVjYXVzZQo+ID4+IHRoZXJlIGlzIGEgaGFyZCwgYnJpZ2h0IHJ1bGUs IHdoaWNoIGlzOiBpZiBhbmQgb25seSBpZiBhIGNhbGxlciBzZXRzCj4gPj4gRk9MTF9QSU4sIHRo ZW4gdGhlIGRtYS1wYWdlIHRyYWNraW5nIGhhcHBlbnMsIGFuZCBwdXRfdXNlcl9wYWdlKCkgbXVz dAo+ID4+IGJlIGNhbGxlZC4KPiA+Pgo+ID4+IFNvIHRoaXMgbGVhdmVzIG1lIHdpdGggb25seSB0 d28gcmVhc29uYWJsZSBjaG9pY2VzOgo+ID4+Cj4gPj4gYSkgQ29udmVydCB0aGUgY2FsbCBzaXRl IGFzIGFib3ZlOiBwaW5fbG9uZ3Rlcm1fcGFnZXNfcmVtb3RlKCksIHdoaWNoIHNldHMKPiA+PiBG T0xMX1BJTiAodGhlIGtleSBwb2ludCEpLCBhbmQgbGVhdmVzIHRoZSBGT0xMX0xPTkdURVJNIHNp dHVhdGlvbiBleGFjdGx5Cj4gPj4gYXMgaXQgaGFzIGJlZW4gc28gZmFyLiBXaGVuIHRoZSBGT0xM X0xPTkdURVJNIHNpdHVhdGlvbiBpcyBmaXhlZCwgdGhlIGNhbGwKPiA+PiBzaXRlICptaWdodCog bm90IG5lZWQgYW55IGNoYW5nZXMgdG8gYWRvcHQgdGhlIHdvcmtpbmcgZ3VwLmMgY29kZS4KPiA+ Pgo+ID4+IGIpIENvbnZlcnQgdGhlIGNhbGwgc2l0ZSB0byBwaW5fdXNlcl9wYWdlc19yZW1vdGUo KSwgd2hpY2ggYWxzbyBzZXRzCj4gPj4gRk9MTF9QSU4sIGFuZCBhbHNvIGxlYXZlcyB0aGUgRk9M TF9MT05HVEVSTSBzaXR1YXRpb24gZXhhY3RseSBhcyBiZWZvcmUuCj4gPj4gVGhlcmUgd291bGQg YWxzbyBiZSBhIGNvbW1lbnQgYXQgdGhlIGNhbGwgc2l0ZSwgdG8gdGhlIGVmZmVjdCBvZiwgInRo aXMKPiA+PiBpcyB0aGUgd3JvbmcgY2FsbCB0byBtYWtlOiBpdCByZWFsbHkgcmVxdWlyZXMgRk9M TF9MT05HVEVSTSBiZWhhdmlvciIuCj4gPj4KPiA+PiBXaGVuIHRoZSBGT0xMX0xPTkdURVJNIHNp dHVhdGlvbiBpcyBmaXhlZCwgdGhlIGNhbGwgc2l0ZSB3aWxsIG5lZWQgdG8gYmUKPiA+PiBjaGFu Z2VkIHRvIHBpbl9sb25ndGVybV9wYWdlc19yZW1vdGUoKS4KPiA+Pgo+ID4+IFNvIHlvdSBjYW4g cHJvYmFibHkgc2VlIHdoeSBJIHBpY2tlZCAoYSkuCj4gPiAKPiA+IEJ1dCByaWdodCBub3cgbm9i b2R5IGhhcyBGT0xMX0xPTkdURVJNIGFuZCBGT0xMX1JFTU9URS4gU28geW91IHNob3VsZAo+ID4g bmV2ZXIgaGF2ZSB0aGUgbmVlZCBmb3IgcGluX2xvbmd0ZXJtX3BhZ2VzX3JlbW90ZSgpLiBNeSBm ZWFyIGlzIHRoYXQKPiA+IGxvbmd0ZXJtIGhhcyBpbXBsaWNhdGlvbiBhbmQgaXQgd291bGQgYmUg YmV0dGVyIHRvIG5vdCBkcm9wIHRoaXMgaW1wbGljYXRpb24KPiA+IGJ5IGFkZGluZyBhIHdyYXBw ZXIgdGhhdCBkb2VzIG5vdCBkbyB3aGF0IHRoZSBuYW1lIHNheXMuCj4gPiAKPiA+IFNvIGRvIG5v dCBpbnRyb2R1Y2UgcGluX2xvbmd0ZXJtX3BhZ2VzX3JlbW90ZSgpIHVudGlsIGl0cyBmaXJzdCB1 c2VyCj4gPiBoYXBwZW5zLiBUaGlzIGlzIG9wdGlvbiBjKQo+ID4gCj4gCj4gQWxtb3N0IGZvcmdv dCwgdGhvdWdoOiB0aGVyZSBpcyBhbHJlYWR5IGFub3RoZXIgdXNlcjogSW5maW5pYmFuZDoKPiAK PiBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jOjY0NjogICAgICAgICBucGFnZXMg PSBwaW5fbG9uZ3Rlcm1fcGFnZXNfcmVtb3RlKG93bmluZ19wcm9jZXNzLCBvd25pbmdfbW0sCgpv ZHAgZG8gbm90IG5lZWQgdGhhdCwgaSB0aG91Z2h0IHRoZSBITU0gY29udmVydGlvbiB3YXMgYWxy ZWFkeSB1cHN0cmVhbQpidXQgc2VlbXMgbm90LCBpbiBhbnkgY2FzZSBvZHAgZG8gbm90IG5lZWQg dGhlIGxvbmd0ZXJtIGNhc2UgaXQgb25seQpzbyBiZXN0IGlzIHRvIHJldmVydCB0aGF0IHVzZXIg dG8gZ3VwX2Zhc3Qgb3Igc29tZXRoaW5nIHVudGlsIGl0IGdldApjb252ZXJ0ZWQgdG8gSE1NLgoK Q2hlZXJzLApKw6lyw7RtZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVs