From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kara Subject: Re: [PATCH v7 17/24] mm/gup: track FOLL_PIN pages Date: Thu, 21 Nov 2019 10:39:41 +0100 Message-ID: <20191121093941.GA18190@quack2.suse.cz> References: <20191121071354.456618-1-jhubbard@nvidia.com> <20191121071354.456618-18-jhubbard@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id C14D36EC43 for ; Thu, 21 Nov 2019 09:39:45 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191121071354.456618-18-jhubbard@nvidia.com> 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, LKML , 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, =?iso-8859-1?B?Suly9G1l?= Glisse , Al Viro , Dan Williams , Mauro Carvalho Chehab List-Id: dri-devel@lists.freedesktop.org T24gV2VkIDIwLTExLTE5IDIzOjEzOjQ3LCBKb2huIEh1YmJhcmQgd3JvdGU6Cj4gQWRkIHRyYWNr aW5nIG9mIHBhZ2VzIHRoYXQgd2VyZSBwaW5uZWQgdmlhIEZPTExfUElOLgo+IAo+IEFzIG1lbnRp b25lZCBpbiB0aGUgRk9MTF9QSU4gZG9jdW1lbnRhdGlvbiwgY2FsbGVycyB3aG8gZWZmZWN0aXZl bHkgc2V0Cj4gRk9MTF9QSU4gYXJlIHJlcXVpcmVkIHRvIHVsdGltYXRlbHkgZnJlZSBzdWNoIHBh Z2VzIHZpYSBwdXRfdXNlcl9wYWdlKCkuCj4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIEZPTExf R0VULCBhbmQgbWF5IGJlIHRob3VnaHQgb2YgYXMgIkZPTExfR0VUCj4gZm9yIERJTyBhbmQvb3Ig UkRNQSB1c2UiLgo+IAo+IFBhZ2VzIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCB2aWEgRk9MTF9QSU4g YXJlIGlkZW50aWZpYWJsZSB2aWEgYQo+IG5ldyBmdW5jdGlvbiBjYWxsOgo+IAo+ICAgIGJvb2wg cGFnZV9kbWFfcGlubmVkKHN0cnVjdCBwYWdlICpwYWdlKTsKPiAKPiBXaGF0IHRvIGRvIGluIHJl c3BvbnNlIHRvIGVuY291bnRlcmluZyBzdWNoIGEgcGFnZSwgaXMgbGVmdCB0byBsYXRlcgo+IHBh dGNoc2V0cy4gVGhlcmUgaXMgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGluIFsxXSwgWzJdLCBhbmQg WzNdLgo+IAo+IFRoaXMgYWxzbyBjaGFuZ2VzIGEgQlVHX09OKCksIHRvIGEgV0FSTl9PTigpLCBp biBmb2xsb3dfcGFnZV9tYXNrKCkuCj4gCj4gWzFdIFNvbWUgc2xvdyBwcm9ncmVzcyBvbiBnZXRf dXNlcl9wYWdlcygpIChBcHIgMiwgMjAxOSk6Cj4gICAgIGh0dHBzOi8vbHduLm5ldC9BcnRpY2xl cy83ODQ1NzQvCj4gWzJdIERNQSBhbmQgZ2V0X3VzZXJfcGFnZXMoKSAoTFBDOiBEZWMgMTIsIDIw MTgpOgo+ICAgICBodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNzc0NDExLwo+IFszXSBUaGUgdHJv dWJsZSB3aXRoIGdldF91c2VyX3BhZ2VzKCkgKEFwciAzMCwgMjAxOCk6Cj4gICAgIGh0dHBzOi8v bHduLm5ldC9BcnRpY2xlcy83NTMwMjcvCj4gCj4gU3VnZ2VzdGVkLWJ5OiBKYW4gS2FyYSA8amFj a0BzdXNlLmN6Pgo+IFN1Z2dlc3RlZC1ieTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhh dC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEuY29t PgoKVGhhbmtzIGZvciB0aGUgcGF0Y2ghIFdlIGFyZSBtb3N0bHkgZ2V0dGluZyB0aGVyZS4gU29t ZSBzbWFsbGVyIGNvbW1lbnRzCmJlbG93LgoKPiArLyoqCj4gKyAqIHRyeV9waW5fY29tcG91bmRf aGVhZCgpIC0gbWFyayBhIGNvbXBvdW5kIHBhZ2UgYXMgYmVpbmcgdXNlZCBieQo+ICsgKiBwaW5f dXNlcl9wYWdlcyooKS4KPiArICoKPiArICogVGhpcyBpcyB0aGUgRk9MTF9QSU4gY291bnRlcnBh cnQgdG8gdHJ5X2dldF9jb21wb3VuZF9oZWFkKCkuCj4gKyAqCj4gKyAqIEBwYWdlOglwb2ludGVy IHRvIHBhZ2UgdG8gYmUgbWFya2VkCj4gKyAqIEBSZXR1cm46CXRydWUgZm9yIHN1Y2Nlc3MsIGZh bHNlIGZvciBmYWlsdXJlCj4gKyAqLwo+ICtfX211c3RfY2hlY2sgYm9vbCB0cnlfcGluX2NvbXBv dW5kX2hlYWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCByZWZzKQo+ICt7Cj4gKwlwYWdlID0gdHJ5 X2dldF9jb21wb3VuZF9oZWFkKHBhZ2UsIEdVUF9QSU5fQ09VTlRJTkdfQklBUyAqIHJlZnMpOwo+ ICsJaWYgKCFwYWdlKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlfX3VwZGF0ZV9wcm9jX3Zt c3RhdChwYWdlLCBOUl9GT0xMX1BJTl9SRVFVRVNURUQsIHJlZnMpOwo+ICsJcmV0dXJuIHRydWU7 Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfREVWX1BBR0VNQVBfT1BTCj4gK3N0YXRpYyBib29s IF9fcHV0X2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKClByb2Jh Ymx5IGNhbGwgdGhpcyBfX3VucGluX2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZSgpPyBUbyBtYXRj aCB0aGUgbGF0ZXIKY29udmVyc2lvbiBvZiBwdXRfdXNlcl9wYWdlKCkgdG8gdW5waW5fdXNlcl9w YWdlKCk/Cgo+ICt7Cj4gKwlib29sIGlzX2Rldm1hcCA9IHBhZ2VfaXNfZGV2bWFwX21hbmFnZWQo cGFnZSk7Cj4gKwo+ICsJaWYgKGlzX2Rldm1hcCkgewo+ICsJCWludCBjb3VudCA9IHBhZ2VfcmVm X3N1Yl9yZXR1cm4ocGFnZSwgR1VQX1BJTl9DT1VOVElOR19CSUFTKTsKPiArCj4gKwkJX191cGRh dGVfcHJvY192bXN0YXQocGFnZSwgTlJfRk9MTF9QSU5fUkVUVVJORUQsIDEpOwo+ICsJCS8qCj4g KwkJICogZGV2bWFwIHBhZ2UgcmVmY291bnRzIGFyZSAxLWJhc2VkLCByYXRoZXIgdGhhbiAwLWJh c2VkOiBpZgo+ICsJCSAqIHJlZmNvdW50IGlzIDEsIHRoZW4gdGhlIHBhZ2UgaXMgZnJlZSBhbmQg dGhlIHJlZmNvdW50IGlzCj4gKwkJICogc3RhYmxlIGJlY2F1c2Ugbm9ib2R5IGhvbGRzIGEgcmVm ZXJlbmNlIG9uIHRoZSBwYWdlLgo+ICsJCSAqLwo+ICsJCWlmIChjb3VudCA9PSAxKQo+ICsJCQlm cmVlX2Rldm1hcF9tYW5hZ2VkX3BhZ2UocGFnZSk7Cj4gKwkJZWxzZSBpZiAoIWNvdW50KQo+ICsJ CQlfX3B1dF9wYWdlKHBhZ2UpOwo+ICsJfQo+ICsKPiArCXJldHVybiBpc19kZXZtYXA7Cj4gK30K PiArI2Vsc2UKPiArc3RhdGljIGJvb2wgX19wdXRfZGV2bWFwX21hbmFnZWRfdXNlcl9wYWdlKHN0 cnVjdCBwYWdlICpwYWdlKQo+ICt7Cj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArI2VuZGlmIC8q IENPTkZJR19ERVZfUEFHRU1BUF9PUFMgKi8KPiArCj4gKy8qKgo+ICsgKiBwdXRfdXNlcl9wYWdl KCkgLSByZWxlYXNlIGEgZG1hLXBpbm5lZCBwYWdlCj4gKyAqIEBwYWdlOiAgICAgICAgICAgIHBv aW50ZXIgdG8gcGFnZSB0byBiZSByZWxlYXNlZAo+ICsgKgo+ICsgKiBQYWdlcyB0aGF0IHdlcmUg cGlubmVkIHZpYSBwaW5fdXNlcl9wYWdlcyooKSBtdXN0IGJlIHJlbGVhc2VkIHZpYSBlaXRoZXIK PiArICogcHV0X3VzZXJfcGFnZSgpLCBvciBvbmUgb2YgdGhlIHB1dF91c2VyX3BhZ2VzKigpIHJv dXRpbmVzLiBUaGlzIGlzIHNvIHRoYXQKPiArICogc3VjaCBwYWdlcyBjYW4gYmUgc2VwYXJhdGVs eSB0cmFja2VkIGFuZCB1bmlxdWVseSBoYW5kbGVkLiBJbiBwYXJ0aWN1bGFyLAo+ICsgKiBpbnRl cmFjdGlvbnMgd2l0aCBSRE1BIGFuZCBmaWxlc3lzdGVtcyBuZWVkIHNwZWNpYWwgaGFuZGxpbmcu Cj4gKyAqLwo+ICt2b2lkIHB1dF91c2VyX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCj4gK3sKPiAr CXBhZ2UgPSBjb21wb3VuZF9oZWFkKHBhZ2UpOwo+ICsKPiArCS8qCj4gKwkgKiBGb3IgZGV2bWFw IG1hbmFnZWQgcGFnZXMgd2UgbmVlZCB0byBjYXRjaCByZWZjb3VudCB0cmFuc2l0aW9uIGZyb20K PiArCSAqIEdVUF9QSU5fQ09VTlRJTkdfQklBUyB0byAxLCB3aGVuIHJlZmNvdW50IHJlYWNoIG9u ZSBpdCBtZWFucyB0aGUKPiArCSAqIHBhZ2UgaXMgZnJlZSBhbmQgd2UgbmVlZCB0byBpbmZvcm0g dGhlIGRldmljZSBkcml2ZXIgdGhyb3VnaAo+ICsJICogY2FsbGJhY2suIFNlZSBpbmNsdWRlL2xp bnV4L21lbXJlbWFwLmggYW5kIEhNTSBmb3IgZGV0YWlscy4KPiArCSAqLwo+ICsJaWYgKF9fcHV0 X2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZShwYWdlKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYg KHBhZ2VfcmVmX3N1Yl9hbmRfdGVzdChwYWdlLCBHVVBfUElOX0NPVU5USU5HX0JJQVMpKQo+ICsJ CV9fcHV0X3BhZ2UocGFnZSk7Cj4gKwo+ICsJX191cGRhdGVfcHJvY192bXN0YXQocGFnZSwgTlJf Rk9MTF9QSU5fUkVUVVJORUQsIDEpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wocHV0X3VzZXJfcGFn ZSk7Cj4gKwo+ICAvKioKPiAgICogcHV0X3VzZXJfcGFnZXNfZGlydHlfbG9jaygpIC0gcmVsZWFz ZSBhbmQgb3B0aW9uYWxseSBkaXJ0eSBndXAtcGlubmVkIHBhZ2VzCj4gICAqIEBwYWdlczogIGFy cmF5IG9mIHBhZ2VzIHRvIGJlIG1heWJlIG1hcmtlZCBkaXJ0eSwgYW5kIGRlZmluaXRlbHkgcmVs ZWFzZWQuCj4gQEAgLTIzNywxMCArMzI3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqZm9sbG93 X3BhZ2VfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ICAJfQo+ICAKPiAgCXBhZ2Ug PSB2bV9ub3JtYWxfcGFnZSh2bWEsIGFkZHJlc3MsIHB0ZSk7Cj4gLQlpZiAoIXBhZ2UgJiYgcHRl X2Rldm1hcChwdGUpICYmIChmbGFncyAmIEZPTExfR0VUKSkgewo+ICsJaWYgKCFwYWdlICYmIHB0 ZV9kZXZtYXAocHRlKSAmJiAoZmxhZ3MgJiAoRk9MTF9HRVQgfCBGT0xMX1BJTikpKSB7Cj4gIAkJ LyoKPiAtCQkgKiBPbmx5IHJldHVybiBkZXZpY2UgbWFwcGluZyBwYWdlcyBpbiB0aGUgRk9MTF9H RVQgY2FzZSBzaW5jZQo+IC0JCSAqIHRoZXkgYXJlIG9ubHkgdmFsaWQgd2hpbGUgaG9sZGluZyB0 aGUgcGdtYXAgcmVmZXJlbmNlLgo+ICsJCSAqIE9ubHkgcmV0dXJuIGRldmljZSBtYXBwaW5nIHBh Z2VzIGluIHRoZSBGT0xMX0dFVCBvciBGT0xMX1BJTgo+ICsJCSAqIGNhc2Ugc2luY2UgdGhleSBh cmUgb25seSB2YWxpZCB3aGlsZSBob2xkaW5nIHRoZSBwZ21hcAo+ICsJCSAqIHJlZmVyZW5jZS4K PiAgCQkgKi8KPiAgCQkqcGdtYXAgPSBnZXRfZGV2X3BhZ2VtYXAocHRlX3BmbihwdGUpLCAqcGdt YXApOwo+ICAJCWlmICgqcGdtYXApCj4gQEAgLTI4Myw2ICszNzQsMTEgQEAgc3RhdGljIHN0cnVj dCBwYWdlICpmb2xsb3dfcGFnZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCj4gIAkJ CXBhZ2UgPSBFUlJfUFRSKC1FTk9NRU0pOwo+ICAJCQlnb3RvIG91dDsKPiAgCQl9Cj4gKwl9IGVs c2UgaWYgKGZsYWdzICYgRk9MTF9QSU4pIHsKPiArCQlpZiAodW5saWtlbHkoIXRyeV9waW5fcGFn ZShwYWdlKSkpIHsKPiArCQkJcGFnZSA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gKwkJCWdvdG8gb3V0 Owo+ICsJCX0KClVzZSBncmFiX3BhZ2UoKSBoZXJlPwoKPiAgCX0KPiAgCWlmIChmbGFncyAmIEZP TExfVE9VQ0gpIHsKPiAgCQlpZiAoKGZsYWdzICYgRk9MTF9XUklURSkgJiYKPiBAQCAtMTg5MCw5 ICsyMDAwLDE1IEBAIHN0YXRpYyBpbnQgZ3VwX3B0ZV9yYW5nZShwbWRfdCBwbWQsIHVuc2lnbmVk IGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCj4gIAkJVk1fQlVHX09OKCFwZm5fdmFsaWQo cHRlX3BmbihwdGUpKSk7Cj4gIAkJcGFnZSA9IHB0ZV9wYWdlKHB0ZSk7Cj4gIAo+IC0JCWhlYWQg PSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQocGFnZSwgMSk7Cj4gLQkJaWYgKCFoZWFkKQo+IC0JCQln b3RvIHB0ZV91bm1hcDsKPiArCQlpZiAoZmxhZ3MgJiBGT0xMX1BJTikgewo+ICsJCQloZWFkID0g cGFnZTsKPiArCQkJaWYgKHVubGlrZWx5KCF0cnlfcGluX3BhZ2UoaGVhZCkpKQo+ICsJCQkJZ290 byBwdGVfdW5tYXA7Cj4gKwkJfSBlbHNlIHsKPiArCQkJaGVhZCA9IHRyeV9nZXRfY29tcG91bmRf aGVhZChwYWdlLCAxKTsKPiArCQkJaWYgKCFoZWFkKQo+ICsJCQkJZ290byBwdGVfdW5tYXA7Cj4g KwkJfQoKV2h5IGRvbid0IHlvdSB1c2UgZ3JhYl9wYWdlKCkgaGVyZT8gQWxzbyB5b3Ugc2VlbSB0 byBsb29zZSB0aGUgaGVhZCA9CmNvbXBvdW5kX2hlYWQocGFnZSkgaW5kaXJlY3Rpb24gaGVyZSBm b3IgdGhlIEZPTExfUElOIGNhc2U/Cgo+ICAKPiAgCQlpZiAodW5saWtlbHkocHRlX3ZhbChwdGUp ICE9IHB0ZV92YWwoKnB0ZXApKSkgewo+ICAJCQlwdXRfcGFnZShoZWFkKTsKPiBAQCAtMTk0Niwx MiArMjA2MiwyMCBAQCBzdGF0aWMgaW50IF9fZ3VwX2RldmljZV9odWdlKHVuc2lnbmVkIGxvbmcg cGZuLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gIAo+ICAJCXBnbWFwID0gZ2V0X2Rldl9wYWdlbWFw KHBmbiwgcGdtYXApOwo+ICAJCWlmICh1bmxpa2VseSghcGdtYXApKSB7Cj4gLQkJCXVuZG9fZGV2 X3BhZ2VtYXAobnIsIG5yX3N0YXJ0LCBwYWdlcyk7Cj4gKwkJCXVuZG9fZGV2X3BhZ2VtYXAobnIs IG5yX3N0YXJ0LCBmbGFncywgcGFnZXMpOwo+ICAJCQlyZXR1cm4gMDsKPiAgCQl9Cj4gIAkJU2V0 UGFnZVJlZmVyZW5jZWQocGFnZSk7Cj4gIAkJcGFnZXNbKm5yXSA9IHBhZ2U7Cj4gLQkJZ2V0X3Bh Z2UocGFnZSk7Cj4gKwo+ICsJCWlmIChmbGFncyAmIEZPTExfUElOKSB7Cj4gKwkJCWlmICh1bmxp a2VseSghdHJ5X3Bpbl9wYWdlKHBhZ2UpKSkgewo+ICsJCQkJdW5kb19kZXZfcGFnZW1hcChuciwg bnJfc3RhcnQsIGZsYWdzLCBwYWdlcyk7Cj4gKwkJCQlyZXR1cm4gMDsKPiArCQkJfQo+ICsJCX0g ZWxzZQo+ICsJCQlnZXRfcGFnZShwYWdlKTsKPiArCgpVc2UgZ3JhYl9wYWdlKCkgaGVyZT8KCj4g IAkJKCpucikrKzsKPiAgCQlwZm4rKzsKPiAgCX0gd2hpbGUgKGFkZHIgKz0gUEFHRV9TSVpFLCBh ZGRyICE9IGVuZCk7Ci4uLgo+IEBAIC0yMDI1LDEyICsyMTQ5LDMxIEBAIHN0YXRpYyBpbnQgX19y ZWNvcmRfc3VicGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgYWRkciwKPiAg CXJldHVybiBucjsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgcHV0X2NvbXBvdW5kX2hlYWQoc3Ry dWN0IHBhZ2UgKnBhZ2UsIGludCByZWZzKQo+ICtzdGF0aWMgYm9vbCBncmFiX2NvbXBvdW5kX2hl YWQoc3RydWN0IHBhZ2UgKmhlYWQsIGludCByZWZzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gIHsK PiArCWlmIChmbGFncyAmIEZPTExfUElOKSB7Cj4gKwkJaWYgKHVubGlrZWx5KCF0cnlfcGluX2Nv bXBvdW5kX2hlYWQoaGVhZCwgcmVmcykpKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9IGVsc2Ug ewo+ICsJCWhlYWQgPSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQoaGVhZCwgcmVmcyk7Cj4gKwkJaWYg KCFoZWFkKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHB1dF9jb21wb3VuZF9oZWFkKHN0cnVjdCBwYWdlICpwYWdl LCBpbnQgcmVmcywgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4gKwlzdHJ1Y3QgcGFnZSAqaGVh ZCA9IGNvbXBvdW5kX2hlYWQocGFnZSk7Cj4gKwo+ICsJaWYgKGZsYWdzICYgRk9MTF9QSU4pCj4g KwkJcmVmcyAqPSBHVVBfUElOX0NPVU5USU5HX0JJQVM7Cj4gKwo+ICAJLyogRG8gYSBnZXRfcGFn ZSgpIGZpcnN0LCBpbiBjYXNlIHJlZnMgPT0gcGFnZS0+X3JlZmNvdW50ICovCj4gLQlnZXRfcGFn ZShwYWdlKTsKPiAtCXBhZ2VfcmVmX3N1YihwYWdlLCByZWZzKTsKPiAtCXB1dF9wYWdlKHBhZ2Up Owo+ICsJZ2V0X3BhZ2UoaGVhZCk7Cj4gKwlwYWdlX3JlZl9zdWIoaGVhZCwgcmVmcyk7Cj4gKwlw dXRfcGFnZShoZWFkKTsKPiAgfQo+ICAKPiAgI2lmZGVmIENPTkZJR19BUkNIX0hBU19IVUdFUEQK PiBAQCAtMjA2NCwxNCArMjIwNywxMyBAQCBzdGF0aWMgaW50IGd1cF9odWdlcHRlKHB0ZV90ICpw dGVwLCB1bnNpZ25lZCBsb25nIHN6LCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gIAo+ICAJaGVhZCA9 IHB0ZV9wYWdlKHB0ZSk7Cj4gIAlwYWdlID0gaGVhZCArICgoYWRkciAmIChzei0xKSkgPj4gUEFH RV9TSElGVCk7Cj4gLQlyZWZzID0gX19yZWNvcmRfc3VicGFnZXMocGFnZSwgYWRkciwgZW5kLCBw YWdlcyArICpucik7Cj4gKwlyZWZzID0gcmVjb3JkX3N1YnBhZ2VzKHBhZ2UsIGFkZHIsIGVuZCwg cGFnZXMgKyAqbnIpOwo+ICAKPiAtCWhlYWQgPSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQoaGVhZCwg cmVmcyk7Cj4gLQlpZiAoIWhlYWQpCj4gKwlpZiAoIWdyYWJfY29tcG91bmRfaGVhZChoZWFkLCBy ZWZzLCBmbGFncykpCgpBcmUgeW91IHN1cmUgdGhpcyBpcyBjb3JyZWN0PyBIaXN0b3JpY2FsbHkg d2Ugc2VlbSB0byBoYXZlIGFsd2F5cyBoYWQgbG9naWMKbGlrZToKCgloZWFkID0gY29tcG91bmRf aGVhZChwdGVfcGFnZSAvIHBtZF9wYWdlIC8gLi4uIChvcmlnKSkKCmluIHRoaXMgY29kZS4gQW5k IHlvdSByZW1vdmVkIHRoaXMgbm93LiBMb29raW5nIGF0IHRoZSBjb2RlIEknbSBub3Qgc3VyZQp3 aGV0aGVyIHRoZSBjb21wb3VuZF9oZWFkKCkgaW5kaXJlY3Rpb24gaXMgcmVhbGx5IG5lZWRlZCBv ciBub3QuIFdlIHNlZW0gdG8KaGF2ZSBhbHJlYWR5IGh1Z2UgcGFnZSBoZWFkIGluIHRoZSBwYWdl IHRhYmxlIGJ1dCBtYXliZSB0aGVyZSdzIHNvbWUgc3VidGxlCmNhc2UgSSdtIG1pc3NpbmcuIFNv IEknZCBiZSBjYWxtZXIgaWYgd2UgbGVmdCB0aGUgaGVhZD1jb21wb3VuZF9oZWFkKC4uLikKaW4g dGhlIGNvZGUgYnV0IGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQsIEknZCBsaWtlIHRv IHNlZSBBY2sgZnJvbQpzb21lb25lIGFjdHVhbGx5IGZhbWlsaWFyIHdpdGggaHVnZSBwYWdlcyAt IGUuZy4gS2lyaWxsIFNodXRlbW92Li4uCgpBbmQgZXZlbiBpZiB3ZSBmaW5kIG91dCB0aGF0IGNv bXBvdW5kX2hlYWQoKSBpbmRpcmVjdGlvbiBpc24ndCByZWFsbHkKbmVlZGVkLCB0aGF0IGlzIGJp ZyBlbm91Z2ggY2hhbmdlIGluIHRoZSBsb2dpYyB0aGF0IGl0IHdvdWxkIGRlc2VydmUgdG8gYmUK ZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoIChpZiBvbmx5IGZvciBkZWJ1Z2dpbmcgYnkgYmlzZWN0 aW9uIHB1cnBvc2VzKS4KCj4gZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdl X21lbW9yeS5jCj4gaW5kZXggMTNjYzkzNzg1MDA2Li45ODFhOWVhMGI4M2YgMTAwNjQ0Cj4gLS0t IGEvbW0vaHVnZV9tZW1vcnkuYwo+ICsrKyBiL21tL2h1Z2VfbWVtb3J5LmMKLi4uCj4gQEAgLTUw MzQsOCArNTA1MiwyMCBAQCBmb2xsb3dfaHVnZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVu c2lnbmVkIGxvbmcgYWRkcmVzcywKPiAgCXB0ZSA9IGh1Z2VfcHRlcF9nZXQoKHB0ZV90ICopcG1k KTsKPiAgCWlmIChwdGVfcHJlc2VudChwdGUpKSB7Cj4gIAkJcGFnZSA9IHBtZF9wYWdlKCpwbWQp ICsgKChhZGRyZXNzICYgflBNRF9NQVNLKSA+PiBQQUdFX1NISUZUKTsKPiArCj4gIAkJaWYgKGZs YWdzICYgRk9MTF9HRVQpCj4gIAkJCWdldF9wYWdlKHBhZ2UpOwo+ICsJCWVsc2UgaWYgKGZsYWdz ICYgRk9MTF9QSU4pIHsKPiArCQkJLyoKPiArCQkJICogdHJ5X3Bpbl9wYWdlKCkgaXMgbm90IGFj dHVhbGx5IGV4cGVjdGVkIHRvIGZhaWwKPiArCQkJICogaGVyZSBiZWNhdXNlIHdlIGhvbGQgdGhl IHB0bC4KPiArCQkJICovCj4gKwkJCWlmICh1bmxpa2VseSghdHJ5X3Bpbl9wYWdlKHBhZ2UpKSkg ewo+ICsJCQkJV0FSTl9PTl9PTkNFKDEpOwo+ICsJCQkJcGFnZSA9IE5VTEw7Cj4gKwkJCQlnb3Rv IG91dDsKPiArCQkJfQo+ICsJCX0KClVzZSBncmFiX3BhZ2UoKSBoZXJlPwoKCQkJCQkJCQlIb256 YQotLSAKSmFuIEthcmEgPGphY2tAc3VzZS5jb20+ClNVU0UgTGFicywgQ1IKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 B5876C432C3 for ; Thu, 21 Nov 2019 09:39:47 +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 902A720715 for ; Thu, 21 Nov 2019 09:39:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 902A720715 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.cz 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 D77586EC43; Thu, 21 Nov 2019 09:39:46 +0000 (UTC) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id C14D36EC43 for ; Thu, 21 Nov 2019 09:39:45 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 5D6CCB12B; Thu, 21 Nov 2019 09:39:43 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id EADB11E47FC; Thu, 21 Nov 2019 10:39:41 +0100 (CET) Date: Thu, 21 Nov 2019 10:39:41 +0100 From: Jan Kara To: John Hubbard Subject: Re: [PATCH v7 17/24] mm/gup: track FOLL_PIN pages Message-ID: <20191121093941.GA18190@quack2.suse.cz> References: <20191121071354.456618-1-jhubbard@nvidia.com> <20191121071354.456618-18-jhubbard@nvidia.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191121071354.456618-18-jhubbard@nvidia.com> User-Agent: Mutt/1.10.1 (2018-07-13) 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, LKML , 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, =?iso-8859-1?B?Suly9G1l?= Glisse , Al Viro , Dan Williams , Mauro Carvalho Chehab , bpf@vger.kernel.org, Magnus Karlsson , Jens Axboe , netdev@vger.kernel.org, Alex Williamson , 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: <20191121093941.Xtu47aR0Acls2h--QwXAVkkJFnBjMQsH5t-pC6ymyDQ@z> T24gV2VkIDIwLTExLTE5IDIzOjEzOjQ3LCBKb2huIEh1YmJhcmQgd3JvdGU6Cj4gQWRkIHRyYWNr aW5nIG9mIHBhZ2VzIHRoYXQgd2VyZSBwaW5uZWQgdmlhIEZPTExfUElOLgo+IAo+IEFzIG1lbnRp b25lZCBpbiB0aGUgRk9MTF9QSU4gZG9jdW1lbnRhdGlvbiwgY2FsbGVycyB3aG8gZWZmZWN0aXZl bHkgc2V0Cj4gRk9MTF9QSU4gYXJlIHJlcXVpcmVkIHRvIHVsdGltYXRlbHkgZnJlZSBzdWNoIHBh Z2VzIHZpYSBwdXRfdXNlcl9wYWdlKCkuCj4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIEZPTExf R0VULCBhbmQgbWF5IGJlIHRob3VnaHQgb2YgYXMgIkZPTExfR0VUCj4gZm9yIERJTyBhbmQvb3Ig UkRNQSB1c2UiLgo+IAo+IFBhZ2VzIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCB2aWEgRk9MTF9QSU4g YXJlIGlkZW50aWZpYWJsZSB2aWEgYQo+IG5ldyBmdW5jdGlvbiBjYWxsOgo+IAo+ICAgIGJvb2wg cGFnZV9kbWFfcGlubmVkKHN0cnVjdCBwYWdlICpwYWdlKTsKPiAKPiBXaGF0IHRvIGRvIGluIHJl c3BvbnNlIHRvIGVuY291bnRlcmluZyBzdWNoIGEgcGFnZSwgaXMgbGVmdCB0byBsYXRlcgo+IHBh dGNoc2V0cy4gVGhlcmUgaXMgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGluIFsxXSwgWzJdLCBhbmQg WzNdLgo+IAo+IFRoaXMgYWxzbyBjaGFuZ2VzIGEgQlVHX09OKCksIHRvIGEgV0FSTl9PTigpLCBp biBmb2xsb3dfcGFnZV9tYXNrKCkuCj4gCj4gWzFdIFNvbWUgc2xvdyBwcm9ncmVzcyBvbiBnZXRf dXNlcl9wYWdlcygpIChBcHIgMiwgMjAxOSk6Cj4gICAgIGh0dHBzOi8vbHduLm5ldC9BcnRpY2xl cy83ODQ1NzQvCj4gWzJdIERNQSBhbmQgZ2V0X3VzZXJfcGFnZXMoKSAoTFBDOiBEZWMgMTIsIDIw MTgpOgo+ICAgICBodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNzc0NDExLwo+IFszXSBUaGUgdHJv dWJsZSB3aXRoIGdldF91c2VyX3BhZ2VzKCkgKEFwciAzMCwgMjAxOCk6Cj4gICAgIGh0dHBzOi8v bHduLm5ldC9BcnRpY2xlcy83NTMwMjcvCj4gCj4gU3VnZ2VzdGVkLWJ5OiBKYW4gS2FyYSA8amFj a0BzdXNlLmN6Pgo+IFN1Z2dlc3RlZC1ieTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhh dC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEuY29t PgoKVGhhbmtzIGZvciB0aGUgcGF0Y2ghIFdlIGFyZSBtb3N0bHkgZ2V0dGluZyB0aGVyZS4gU29t ZSBzbWFsbGVyIGNvbW1lbnRzCmJlbG93LgoKPiArLyoqCj4gKyAqIHRyeV9waW5fY29tcG91bmRf aGVhZCgpIC0gbWFyayBhIGNvbXBvdW5kIHBhZ2UgYXMgYmVpbmcgdXNlZCBieQo+ICsgKiBwaW5f dXNlcl9wYWdlcyooKS4KPiArICoKPiArICogVGhpcyBpcyB0aGUgRk9MTF9QSU4gY291bnRlcnBh cnQgdG8gdHJ5X2dldF9jb21wb3VuZF9oZWFkKCkuCj4gKyAqCj4gKyAqIEBwYWdlOglwb2ludGVy IHRvIHBhZ2UgdG8gYmUgbWFya2VkCj4gKyAqIEBSZXR1cm46CXRydWUgZm9yIHN1Y2Nlc3MsIGZh bHNlIGZvciBmYWlsdXJlCj4gKyAqLwo+ICtfX211c3RfY2hlY2sgYm9vbCB0cnlfcGluX2NvbXBv dW5kX2hlYWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCByZWZzKQo+ICt7Cj4gKwlwYWdlID0gdHJ5 X2dldF9jb21wb3VuZF9oZWFkKHBhZ2UsIEdVUF9QSU5fQ09VTlRJTkdfQklBUyAqIHJlZnMpOwo+ ICsJaWYgKCFwYWdlKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlfX3VwZGF0ZV9wcm9jX3Zt c3RhdChwYWdlLCBOUl9GT0xMX1BJTl9SRVFVRVNURUQsIHJlZnMpOwo+ICsJcmV0dXJuIHRydWU7 Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfREVWX1BBR0VNQVBfT1BTCj4gK3N0YXRpYyBib29s IF9fcHV0X2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKClByb2Jh Ymx5IGNhbGwgdGhpcyBfX3VucGluX2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZSgpPyBUbyBtYXRj aCB0aGUgbGF0ZXIKY29udmVyc2lvbiBvZiBwdXRfdXNlcl9wYWdlKCkgdG8gdW5waW5fdXNlcl9w YWdlKCk/Cgo+ICt7Cj4gKwlib29sIGlzX2Rldm1hcCA9IHBhZ2VfaXNfZGV2bWFwX21hbmFnZWQo cGFnZSk7Cj4gKwo+ICsJaWYgKGlzX2Rldm1hcCkgewo+ICsJCWludCBjb3VudCA9IHBhZ2VfcmVm X3N1Yl9yZXR1cm4ocGFnZSwgR1VQX1BJTl9DT1VOVElOR19CSUFTKTsKPiArCj4gKwkJX191cGRh dGVfcHJvY192bXN0YXQocGFnZSwgTlJfRk9MTF9QSU5fUkVUVVJORUQsIDEpOwo+ICsJCS8qCj4g KwkJICogZGV2bWFwIHBhZ2UgcmVmY291bnRzIGFyZSAxLWJhc2VkLCByYXRoZXIgdGhhbiAwLWJh c2VkOiBpZgo+ICsJCSAqIHJlZmNvdW50IGlzIDEsIHRoZW4gdGhlIHBhZ2UgaXMgZnJlZSBhbmQg dGhlIHJlZmNvdW50IGlzCj4gKwkJICogc3RhYmxlIGJlY2F1c2Ugbm9ib2R5IGhvbGRzIGEgcmVm ZXJlbmNlIG9uIHRoZSBwYWdlLgo+ICsJCSAqLwo+ICsJCWlmIChjb3VudCA9PSAxKQo+ICsJCQlm cmVlX2Rldm1hcF9tYW5hZ2VkX3BhZ2UocGFnZSk7Cj4gKwkJZWxzZSBpZiAoIWNvdW50KQo+ICsJ CQlfX3B1dF9wYWdlKHBhZ2UpOwo+ICsJfQo+ICsKPiArCXJldHVybiBpc19kZXZtYXA7Cj4gK30K PiArI2Vsc2UKPiArc3RhdGljIGJvb2wgX19wdXRfZGV2bWFwX21hbmFnZWRfdXNlcl9wYWdlKHN0 cnVjdCBwYWdlICpwYWdlKQo+ICt7Cj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArI2VuZGlmIC8q IENPTkZJR19ERVZfUEFHRU1BUF9PUFMgKi8KPiArCj4gKy8qKgo+ICsgKiBwdXRfdXNlcl9wYWdl KCkgLSByZWxlYXNlIGEgZG1hLXBpbm5lZCBwYWdlCj4gKyAqIEBwYWdlOiAgICAgICAgICAgIHBv aW50ZXIgdG8gcGFnZSB0byBiZSByZWxlYXNlZAo+ICsgKgo+ICsgKiBQYWdlcyB0aGF0IHdlcmUg cGlubmVkIHZpYSBwaW5fdXNlcl9wYWdlcyooKSBtdXN0IGJlIHJlbGVhc2VkIHZpYSBlaXRoZXIK PiArICogcHV0X3VzZXJfcGFnZSgpLCBvciBvbmUgb2YgdGhlIHB1dF91c2VyX3BhZ2VzKigpIHJv dXRpbmVzLiBUaGlzIGlzIHNvIHRoYXQKPiArICogc3VjaCBwYWdlcyBjYW4gYmUgc2VwYXJhdGVs eSB0cmFja2VkIGFuZCB1bmlxdWVseSBoYW5kbGVkLiBJbiBwYXJ0aWN1bGFyLAo+ICsgKiBpbnRl cmFjdGlvbnMgd2l0aCBSRE1BIGFuZCBmaWxlc3lzdGVtcyBuZWVkIHNwZWNpYWwgaGFuZGxpbmcu Cj4gKyAqLwo+ICt2b2lkIHB1dF91c2VyX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCj4gK3sKPiAr CXBhZ2UgPSBjb21wb3VuZF9oZWFkKHBhZ2UpOwo+ICsKPiArCS8qCj4gKwkgKiBGb3IgZGV2bWFw IG1hbmFnZWQgcGFnZXMgd2UgbmVlZCB0byBjYXRjaCByZWZjb3VudCB0cmFuc2l0aW9uIGZyb20K PiArCSAqIEdVUF9QSU5fQ09VTlRJTkdfQklBUyB0byAxLCB3aGVuIHJlZmNvdW50IHJlYWNoIG9u ZSBpdCBtZWFucyB0aGUKPiArCSAqIHBhZ2UgaXMgZnJlZSBhbmQgd2UgbmVlZCB0byBpbmZvcm0g dGhlIGRldmljZSBkcml2ZXIgdGhyb3VnaAo+ICsJICogY2FsbGJhY2suIFNlZSBpbmNsdWRlL2xp bnV4L21lbXJlbWFwLmggYW5kIEhNTSBmb3IgZGV0YWlscy4KPiArCSAqLwo+ICsJaWYgKF9fcHV0 X2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZShwYWdlKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYg KHBhZ2VfcmVmX3N1Yl9hbmRfdGVzdChwYWdlLCBHVVBfUElOX0NPVU5USU5HX0JJQVMpKQo+ICsJ CV9fcHV0X3BhZ2UocGFnZSk7Cj4gKwo+ICsJX191cGRhdGVfcHJvY192bXN0YXQocGFnZSwgTlJf Rk9MTF9QSU5fUkVUVVJORUQsIDEpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wocHV0X3VzZXJfcGFn ZSk7Cj4gKwo+ICAvKioKPiAgICogcHV0X3VzZXJfcGFnZXNfZGlydHlfbG9jaygpIC0gcmVsZWFz ZSBhbmQgb3B0aW9uYWxseSBkaXJ0eSBndXAtcGlubmVkIHBhZ2VzCj4gICAqIEBwYWdlczogIGFy cmF5IG9mIHBhZ2VzIHRvIGJlIG1heWJlIG1hcmtlZCBkaXJ0eSwgYW5kIGRlZmluaXRlbHkgcmVs ZWFzZWQuCj4gQEAgLTIzNywxMCArMzI3LDExIEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqZm9sbG93 X3BhZ2VfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ICAJfQo+ICAKPiAgCXBhZ2Ug PSB2bV9ub3JtYWxfcGFnZSh2bWEsIGFkZHJlc3MsIHB0ZSk7Cj4gLQlpZiAoIXBhZ2UgJiYgcHRl X2Rldm1hcChwdGUpICYmIChmbGFncyAmIEZPTExfR0VUKSkgewo+ICsJaWYgKCFwYWdlICYmIHB0 ZV9kZXZtYXAocHRlKSAmJiAoZmxhZ3MgJiAoRk9MTF9HRVQgfCBGT0xMX1BJTikpKSB7Cj4gIAkJ LyoKPiAtCQkgKiBPbmx5IHJldHVybiBkZXZpY2UgbWFwcGluZyBwYWdlcyBpbiB0aGUgRk9MTF9H RVQgY2FzZSBzaW5jZQo+IC0JCSAqIHRoZXkgYXJlIG9ubHkgdmFsaWQgd2hpbGUgaG9sZGluZyB0 aGUgcGdtYXAgcmVmZXJlbmNlLgo+ICsJCSAqIE9ubHkgcmV0dXJuIGRldmljZSBtYXBwaW5nIHBh Z2VzIGluIHRoZSBGT0xMX0dFVCBvciBGT0xMX1BJTgo+ICsJCSAqIGNhc2Ugc2luY2UgdGhleSBh cmUgb25seSB2YWxpZCB3aGlsZSBob2xkaW5nIHRoZSBwZ21hcAo+ICsJCSAqIHJlZmVyZW5jZS4K PiAgCQkgKi8KPiAgCQkqcGdtYXAgPSBnZXRfZGV2X3BhZ2VtYXAocHRlX3BmbihwdGUpLCAqcGdt YXApOwo+ICAJCWlmICgqcGdtYXApCj4gQEAgLTI4Myw2ICszNzQsMTEgQEAgc3RhdGljIHN0cnVj dCBwYWdlICpmb2xsb3dfcGFnZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCj4gIAkJ CXBhZ2UgPSBFUlJfUFRSKC1FTk9NRU0pOwo+ICAJCQlnb3RvIG91dDsKPiAgCQl9Cj4gKwl9IGVs c2UgaWYgKGZsYWdzICYgRk9MTF9QSU4pIHsKPiArCQlpZiAodW5saWtlbHkoIXRyeV9waW5fcGFn ZShwYWdlKSkpIHsKPiArCQkJcGFnZSA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gKwkJCWdvdG8gb3V0 Owo+ICsJCX0KClVzZSBncmFiX3BhZ2UoKSBoZXJlPwoKPiAgCX0KPiAgCWlmIChmbGFncyAmIEZP TExfVE9VQ0gpIHsKPiAgCQlpZiAoKGZsYWdzICYgRk9MTF9XUklURSkgJiYKPiBAQCAtMTg5MCw5 ICsyMDAwLDE1IEBAIHN0YXRpYyBpbnQgZ3VwX3B0ZV9yYW5nZShwbWRfdCBwbWQsIHVuc2lnbmVk IGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCj4gIAkJVk1fQlVHX09OKCFwZm5fdmFsaWQo cHRlX3BmbihwdGUpKSk7Cj4gIAkJcGFnZSA9IHB0ZV9wYWdlKHB0ZSk7Cj4gIAo+IC0JCWhlYWQg PSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQocGFnZSwgMSk7Cj4gLQkJaWYgKCFoZWFkKQo+IC0JCQln b3RvIHB0ZV91bm1hcDsKPiArCQlpZiAoZmxhZ3MgJiBGT0xMX1BJTikgewo+ICsJCQloZWFkID0g cGFnZTsKPiArCQkJaWYgKHVubGlrZWx5KCF0cnlfcGluX3BhZ2UoaGVhZCkpKQo+ICsJCQkJZ290 byBwdGVfdW5tYXA7Cj4gKwkJfSBlbHNlIHsKPiArCQkJaGVhZCA9IHRyeV9nZXRfY29tcG91bmRf aGVhZChwYWdlLCAxKTsKPiArCQkJaWYgKCFoZWFkKQo+ICsJCQkJZ290byBwdGVfdW5tYXA7Cj4g KwkJfQoKV2h5IGRvbid0IHlvdSB1c2UgZ3JhYl9wYWdlKCkgaGVyZT8gQWxzbyB5b3Ugc2VlbSB0 byBsb29zZSB0aGUgaGVhZCA9CmNvbXBvdW5kX2hlYWQocGFnZSkgaW5kaXJlY3Rpb24gaGVyZSBm b3IgdGhlIEZPTExfUElOIGNhc2U/Cgo+ICAKPiAgCQlpZiAodW5saWtlbHkocHRlX3ZhbChwdGUp ICE9IHB0ZV92YWwoKnB0ZXApKSkgewo+ICAJCQlwdXRfcGFnZShoZWFkKTsKPiBAQCAtMTk0Niwx MiArMjA2MiwyMCBAQCBzdGF0aWMgaW50IF9fZ3VwX2RldmljZV9odWdlKHVuc2lnbmVkIGxvbmcg cGZuLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gIAo+ICAJCXBnbWFwID0gZ2V0X2Rldl9wYWdlbWFw KHBmbiwgcGdtYXApOwo+ICAJCWlmICh1bmxpa2VseSghcGdtYXApKSB7Cj4gLQkJCXVuZG9fZGV2 X3BhZ2VtYXAobnIsIG5yX3N0YXJ0LCBwYWdlcyk7Cj4gKwkJCXVuZG9fZGV2X3BhZ2VtYXAobnIs IG5yX3N0YXJ0LCBmbGFncywgcGFnZXMpOwo+ICAJCQlyZXR1cm4gMDsKPiAgCQl9Cj4gIAkJU2V0 UGFnZVJlZmVyZW5jZWQocGFnZSk7Cj4gIAkJcGFnZXNbKm5yXSA9IHBhZ2U7Cj4gLQkJZ2V0X3Bh Z2UocGFnZSk7Cj4gKwo+ICsJCWlmIChmbGFncyAmIEZPTExfUElOKSB7Cj4gKwkJCWlmICh1bmxp a2VseSghdHJ5X3Bpbl9wYWdlKHBhZ2UpKSkgewo+ICsJCQkJdW5kb19kZXZfcGFnZW1hcChuciwg bnJfc3RhcnQsIGZsYWdzLCBwYWdlcyk7Cj4gKwkJCQlyZXR1cm4gMDsKPiArCQkJfQo+ICsJCX0g ZWxzZQo+ICsJCQlnZXRfcGFnZShwYWdlKTsKPiArCgpVc2UgZ3JhYl9wYWdlKCkgaGVyZT8KCj4g IAkJKCpucikrKzsKPiAgCQlwZm4rKzsKPiAgCX0gd2hpbGUgKGFkZHIgKz0gUEFHRV9TSVpFLCBh ZGRyICE9IGVuZCk7Ci4uLgo+IEBAIC0yMDI1LDEyICsyMTQ5LDMxIEBAIHN0YXRpYyBpbnQgX19y ZWNvcmRfc3VicGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgYWRkciwKPiAg CXJldHVybiBucjsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgcHV0X2NvbXBvdW5kX2hlYWQoc3Ry dWN0IHBhZ2UgKnBhZ2UsIGludCByZWZzKQo+ICtzdGF0aWMgYm9vbCBncmFiX2NvbXBvdW5kX2hl YWQoc3RydWN0IHBhZ2UgKmhlYWQsIGludCByZWZzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gIHsK PiArCWlmIChmbGFncyAmIEZPTExfUElOKSB7Cj4gKwkJaWYgKHVubGlrZWx5KCF0cnlfcGluX2Nv bXBvdW5kX2hlYWQoaGVhZCwgcmVmcykpKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9IGVsc2Ug ewo+ICsJCWhlYWQgPSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQoaGVhZCwgcmVmcyk7Cj4gKwkJaWYg KCFoZWFkKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHB1dF9jb21wb3VuZF9oZWFkKHN0cnVjdCBwYWdlICpwYWdl LCBpbnQgcmVmcywgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4gKwlzdHJ1Y3QgcGFnZSAqaGVh ZCA9IGNvbXBvdW5kX2hlYWQocGFnZSk7Cj4gKwo+ICsJaWYgKGZsYWdzICYgRk9MTF9QSU4pCj4g KwkJcmVmcyAqPSBHVVBfUElOX0NPVU5USU5HX0JJQVM7Cj4gKwo+ICAJLyogRG8gYSBnZXRfcGFn ZSgpIGZpcnN0LCBpbiBjYXNlIHJlZnMgPT0gcGFnZS0+X3JlZmNvdW50ICovCj4gLQlnZXRfcGFn ZShwYWdlKTsKPiAtCXBhZ2VfcmVmX3N1YihwYWdlLCByZWZzKTsKPiAtCXB1dF9wYWdlKHBhZ2Up Owo+ICsJZ2V0X3BhZ2UoaGVhZCk7Cj4gKwlwYWdlX3JlZl9zdWIoaGVhZCwgcmVmcyk7Cj4gKwlw dXRfcGFnZShoZWFkKTsKPiAgfQo+ICAKPiAgI2lmZGVmIENPTkZJR19BUkNIX0hBU19IVUdFUEQK PiBAQCAtMjA2NCwxNCArMjIwNywxMyBAQCBzdGF0aWMgaW50IGd1cF9odWdlcHRlKHB0ZV90ICpw dGVwLCB1bnNpZ25lZCBsb25nIHN6LCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gIAo+ICAJaGVhZCA9 IHB0ZV9wYWdlKHB0ZSk7Cj4gIAlwYWdlID0gaGVhZCArICgoYWRkciAmIChzei0xKSkgPj4gUEFH RV9TSElGVCk7Cj4gLQlyZWZzID0gX19yZWNvcmRfc3VicGFnZXMocGFnZSwgYWRkciwgZW5kLCBw YWdlcyArICpucik7Cj4gKwlyZWZzID0gcmVjb3JkX3N1YnBhZ2VzKHBhZ2UsIGFkZHIsIGVuZCwg cGFnZXMgKyAqbnIpOwo+ICAKPiAtCWhlYWQgPSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQoaGVhZCwg cmVmcyk7Cj4gLQlpZiAoIWhlYWQpCj4gKwlpZiAoIWdyYWJfY29tcG91bmRfaGVhZChoZWFkLCBy ZWZzLCBmbGFncykpCgpBcmUgeW91IHN1cmUgdGhpcyBpcyBjb3JyZWN0PyBIaXN0b3JpY2FsbHkg d2Ugc2VlbSB0byBoYXZlIGFsd2F5cyBoYWQgbG9naWMKbGlrZToKCgloZWFkID0gY29tcG91bmRf aGVhZChwdGVfcGFnZSAvIHBtZF9wYWdlIC8gLi4uIChvcmlnKSkKCmluIHRoaXMgY29kZS4gQW5k IHlvdSByZW1vdmVkIHRoaXMgbm93LiBMb29raW5nIGF0IHRoZSBjb2RlIEknbSBub3Qgc3VyZQp3 aGV0aGVyIHRoZSBjb21wb3VuZF9oZWFkKCkgaW5kaXJlY3Rpb24gaXMgcmVhbGx5IG5lZWRlZCBv ciBub3QuIFdlIHNlZW0gdG8KaGF2ZSBhbHJlYWR5IGh1Z2UgcGFnZSBoZWFkIGluIHRoZSBwYWdl IHRhYmxlIGJ1dCBtYXliZSB0aGVyZSdzIHNvbWUgc3VidGxlCmNhc2UgSSdtIG1pc3NpbmcuIFNv IEknZCBiZSBjYWxtZXIgaWYgd2UgbGVmdCB0aGUgaGVhZD1jb21wb3VuZF9oZWFkKC4uLikKaW4g dGhlIGNvZGUgYnV0IGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQsIEknZCBsaWtlIHRv IHNlZSBBY2sgZnJvbQpzb21lb25lIGFjdHVhbGx5IGZhbWlsaWFyIHdpdGggaHVnZSBwYWdlcyAt IGUuZy4gS2lyaWxsIFNodXRlbW92Li4uCgpBbmQgZXZlbiBpZiB3ZSBmaW5kIG91dCB0aGF0IGNv bXBvdW5kX2hlYWQoKSBpbmRpcmVjdGlvbiBpc24ndCByZWFsbHkKbmVlZGVkLCB0aGF0IGlzIGJp ZyBlbm91Z2ggY2hhbmdlIGluIHRoZSBsb2dpYyB0aGF0IGl0IHdvdWxkIGRlc2VydmUgdG8gYmUK ZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoIChpZiBvbmx5IGZvciBkZWJ1Z2dpbmcgYnkgYmlzZWN0 aW9uIHB1cnBvc2VzKS4KCj4gZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdl X21lbW9yeS5jCj4gaW5kZXggMTNjYzkzNzg1MDA2Li45ODFhOWVhMGI4M2YgMTAwNjQ0Cj4gLS0t IGEvbW0vaHVnZV9tZW1vcnkuYwo+ICsrKyBiL21tL2h1Z2VfbWVtb3J5LmMKLi4uCj4gQEAgLTUw MzQsOCArNTA1MiwyMCBAQCBmb2xsb3dfaHVnZV9wbWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVu c2lnbmVkIGxvbmcgYWRkcmVzcywKPiAgCXB0ZSA9IGh1Z2VfcHRlcF9nZXQoKHB0ZV90ICopcG1k KTsKPiAgCWlmIChwdGVfcHJlc2VudChwdGUpKSB7Cj4gIAkJcGFnZSA9IHBtZF9wYWdlKCpwbWQp ICsgKChhZGRyZXNzICYgflBNRF9NQVNLKSA+PiBQQUdFX1NISUZUKTsKPiArCj4gIAkJaWYgKGZs YWdzICYgRk9MTF9HRVQpCj4gIAkJCWdldF9wYWdlKHBhZ2UpOwo+ICsJCWVsc2UgaWYgKGZsYWdz ICYgRk9MTF9QSU4pIHsKPiArCQkJLyoKPiArCQkJICogdHJ5X3Bpbl9wYWdlKCkgaXMgbm90IGFj dHVhbGx5IGV4cGVjdGVkIHRvIGZhaWwKPiArCQkJICogaGVyZSBiZWNhdXNlIHdlIGhvbGQgdGhl IHB0bC4KPiArCQkJICovCj4gKwkJCWlmICh1bmxpa2VseSghdHJ5X3Bpbl9wYWdlKHBhZ2UpKSkg ewo+ICsJCQkJV0FSTl9PTl9PTkNFKDEpOwo+ICsJCQkJcGFnZSA9IE5VTEw7Cj4gKwkJCQlnb3Rv IG91dDsKPiArCQkJfQo+ICsJCX0KClVzZSBncmFiX3BhZ2UoKSBoZXJlPwoKCQkJCQkJCQlIb256 YQotLSAKSmFuIEthcmEgPGphY2tAc3VzZS5jb20+ClNVU0UgTGFicywgQ1IKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs