From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40138.outbound.protection.outlook.com [40.107.4.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 92E1522526484 for ; Wed, 4 Apr 2018 14:23:55 -0700 (PDT) Date: Wed, 4 Apr 2018 14:23:41 -0700 From: Andrei Vagin Subject: Re: [v8, 11/18] mm, dax: enable filesystems to trigger dev_pagemap ->page_free callbacks Message-ID: <20180404212340.GA12737@outlook.office365.com> References: <152246898837.36038.26895928842345061.stgit@dwillia2-desk3.amr.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <152246898837.36038.26895928842345061.stgit@dwillia2-desk3.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Dan Williams Cc: Michal Hocko , Jan Kara , snitzer@redhat.com, linux-nvdimm@lists.01.org, david@fromorbit.com, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, =?utf-8?B?SsOpcsO0bWU=?= Glisse , linux-fsdevel@vger.kernel.org, Christoph Hellwig List-ID: SGkgRGFuLAoKSSBjYXRjaCB0aGUgZm9sbG93aW5nIGJ1ZyBvbiB0aGUgbGludXgtbmV4dCAyMDE4 MDQwNC4gZ2l0IGJpc2VjdCBicm91Z2h0IG1lIHRvIHRoaXMgY29tbWl0OgoKY29tbWl0IDhlNGQx Y2NjNTI4NmQyYzNkYTY1MTViOTIzMjNhMzUyOWFhNjQ0OTYgKEhFQUQsIHJlZnMvYmlzZWN0L2Jh ZCkKQXV0aG9yOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KRGF0ZTog ICBTYXQgT2N0IDIxIDE0OjQxOjEzIDIwMTcgLTA3MDAKCiAgICBtbSwgZGF4OiBlbmFibGUgZmls ZXN5c3RlbXMgdG8gdHJpZ2dlciBkZXZfcGFnZW1hcCAtPnBhZ2VfZnJlZSBjYWxsYmFja3MKCgpb ICAgMTEuMjc4NzY4XSBCVUc6IHVuYWJsZSB0byBoYW5kbGUga2VybmVsIE5VTEwgcG9pbnRlciBk ZXJlZmVyZW5jZSBhdCAwMDAwMDAwMDAwMDAwNDQwClsgICAxMS4yNzk5OTldIElQOiBmc19kYXhf cmVsZWFzZSsweDUvMHg5MApbICAgMTEuMjgwNTg3XSBQR0QgMCBQNEQgMCAKWyAgIDExLjI4MDk3 M10gT29wczogMDAwMCBbIzFdIFNNUCBQVEkKWyAgIDExLjI4MTUwMF0gTW9kdWxlcyBsaW5rZWQg aW46ClsgICAxMS4yODE5NjhdIENQVTogMSBQSUQ6IDEgQ29tbTogc3dhcHBlci8wIE5vdCB0YWlu dGVkIDQuMTYuMC1yYzQtMDAxOTMtZzhlNGQxY2NjNTI4NiAjNwpbICAgMTEuMjgzMTYzXSBIYXJk d2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyAx LjEwLjItMS5mYzI2IDA0LzAxLzIwMTQKWyAgIDExLjI4NDQxOF0gUklQOiAwMDEwOmZzX2RheF9y ZWxlYXNlKzB4NS8weDkwClsgICAxMS4yODUwNjhdIFJTUDogMDAwMDpmZmZmYjE0ODAwNjJmYmQ4 IEVGTEFHUzogMDAwMTAyODcKWyAgIDExLjI4NTg0NV0gUkFYOiAwMDAwMDAwMDAwMDAwMDAxIFJC WDogZmZmZjllMmNiODIzYzA4OCBSQ1g6IDAwMDAwMDAwMDAwMDAwMDMKWyAgIDExLjI4Njg5Nl0g UkRYOiAwMDAwMDAwMDAwMDAwMDAwIFJTSTogZmZmZjllMmNiODIzYzA4OCBSREk6IDAwMDAwMDAw MDAwMDAwMDAKWyAgIDExLjI4Nzk4MF0gUkJQOiBmZmZmYjE0ODAwNjJmY2Q4IFIwODogMDAwMDAw MDAwMDAwMDAwMSBSMDk6IDAwMDAwMDAwMDAwMDAwMDAKWyAgIDExLjI4OTE0N10gUjEwOiBmZmZm YjE0ODAwNjJmYjIwIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6IDAwMDAwMDAwZmZmZmZmZWEK WyAgIDExLjI5MDU3Nl0gUjEzOiAwMDAwMDAwMDAwMDAwMDAwIFIxNDogMDAwMDAwMDAwMDAwMDAw MCBSMTU6IGZmZmY5ZTJjYjgyM2EwNDgKWyAgIDExLjI5MTYzMF0gRlM6ICAwMDAwMDAwMDAwMDAw MDAwKDAwMDApIEdTOmZmZmY5ZTJjYmZkMDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAw MApbICAgMTEuMjkyNzgxXSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAw MDgwMDUwMDMzClsgICAxMS4yOTM2MDJdIENSMjogMDAwMDAwMDAwMDAwMDQ0MCBDUjM6IDAwMDAw MDAwN2QyMWUwMDEgQ1I0OiAwMDAwMDAwMDAwMzYwNmUwClsgICAxMS4yOTQ4MTddIERSMDogMDAw MDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAw ClsgICAxMS4yOTY4MjddIERSMzogMDAwMDAwMDAwMDAwMDAwMCBEUjY6IDAwMDAwMDAwZmZmZTBm ZjAgRFI3OiAwMDAwMDAwMDAwMDAwNDAwClsgICAxMS4yOTgyOTNdIENhbGwgVHJhY2U6ClsgICAx MS4yOTg3MjhdICBleHQ0X2ZpbGxfc3VwZXIrMHgzMWIvMHgzOWQwClsgICAxMS4yOTk0NDFdICA/ IHNnZXRfdXNlcm5zKzB4MTU1LzB4NTAwClsgICAxMS4zMDAxNDRdICA/IHZzbnByaW50ZisweDI1 My8weDRiMApbICAgMTEuMzAxMjIzXSAgPyBleHQ0X2NhbGN1bGF0ZV9vdmVyaGVhZCsweDRhMC8w eDRhMApbICAgMTEuMzAxODAxXSAgPyBzbnByaW50ZisweDQ1LzB4NzAKWyAgIDExLjMwMjIxNF0g ID8gZXh0NF9jYWxjdWxhdGVfb3ZlcmhlYWQrMHg0YTAvMHg0YTAKWyAgIDExLjMwMjgyMl0gIG1v dW50X2JkZXYrMHgxN2IvMHgxYjAKWyAgIDExLjMwMzMzMl0gIG1vdW50X2ZzKzB4MzUvMHgxNTAK WyAgIDExLjMwMzgwM10gIHZmc19rZXJuX21vdW50LnBhcnQuMjUrMHg1NC8weDE1MApbICAgMTEu MzA0NDQzXSAgZG9fbW91bnQrMHg2MjAvMHhkNjAKWyAgIDExLjMwNDkzNV0gID8gbWVtZHVwX3Vz ZXIrMHgzZS8weDcwClsgICAxMS4zMDU0NThdICBTeVNfbW91bnQrMHg4MC8weGQwClsgICAxMS4z MDU5MzFdICBtb3VudF9ibG9ja19yb290KzB4MTA1LzB4MmI3ClsgICAxMS4zMDY1MTJdICA/IFN5 U19ta25vZCsweDE2Yi8weDFmMApbICAgMTEuMzA3MDM1XSAgPyBzZXRfZGVidWdfcm9kYXRhKzB4 MTEvMHgxMQpbICAgMTEuMzA3NjE2XSAgcHJlcGFyZV9uYW1lc3BhY2UrMHgxMzUvMHgxNmIKWyAg IDExLjMwODIxNV0gIGtlcm5lbF9pbml0X2ZyZWVhYmxlKzB4MjcxLzB4Mjk3ClsgICAxMS4zMDg4 MzhdICA/IHJlc3RfaW5pdCsweGQwLzB4ZDAKWyAgIDExLjMwOTMyMl0gIGtlcm5lbF9pbml0KzB4 YS8weDExMApbICAgMTEuMzA5ODIxXSAgcmV0X2Zyb21fZm9yaysweDNhLzB4NTAKWyAgIDExLjMx MDM0N10gQ29kZTogYTUgNDUgMzEgZWQgZTggNWQgNWUgMzYgMDAgZWIgZDcgNDggYzcgYzcgMjAg NDggMmYgYTUgZTggNGYgNWUgMzYgMDAgZWIgYzkgMGYgMWYgMDAgNjYgMmUgMGYgMWYgODQgMDAg MDAgMDAgMDAgMDAgMGYgMWYgNDQgMDAgMDAgPDQ4PiA4YiA4NyA0MCAwNCAwMCAwMCA0OCA4YiA0 MCAxOCA0OCA4NSBjMCA3NCAwNSBlOSBjNiA3ZSA2MCAwMCAKWyAgIDExLjMxMzE2OF0gUklQOiBm c19kYXhfcmVsZWFzZSsweDUvMHg5MCBSU1A6IGZmZmZiMTQ4MDA2MmZiZDgKWyAgIDExLjMxMzk5 MV0gQ1IyOiAwMDAwMDAwMDAwMDAwNDQwClsgICAxMS4zMTQ0NzVdIC0tLVsgZW5kIHRyYWNlIDhh Y2JiMTliNzQ0MDk2NjUgXS0tLQoKCk9uIEZyaSwgTWFyIDMwLCAyMDE4IGF0IDA5OjAzOjA4UE0g LTA3MDAsIERhbiBXaWxsaWFtcyB3cm90ZToKPiBJbiBvcmRlciB0byByZXNvbHZlIGNvbGxpc2lv bnMgYmV0d2VlbiBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIERNQSB0bwo+IERBWCBtYXBwZWQg cGFnZXMgd2UgbmVlZCBhIGNhbGxiYWNrIHdoZW4gRE1BIGNvbXBsZXRlcy4gV2l0aCBhIGNhbGxi YWNrCj4gd2UgY2FuIGhvbGQgb2ZmIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyB3aGlsZSBETUEgaXMg aW4tZmxpZ2h0IGFuZCB0aGVuCj4gcmVzdW1lIHRob3NlIG9wZXJhdGlvbnMgd2hlbiB0aGUgbGFz dCBwdXRfcGFnZSgpIG9jY3VycyBvbiBhIERNQSBwYWdlLgo+IAo+IFJlY2FsbCB0aGF0IHRoZSAn c3RydWN0IHBhZ2UnIGVudHJpZXMgZm9yIERBWCBtZW1vcnkgYXJlIGNyZWF0ZWQgd2l0aAo+IGRl dm1fbWVtcmVtYXBfcGFnZXMoKS4gVGhhdCByb3V0aW5lIGFycmFuZ2VzIGZvciB0aGUgcGFnZXMg dG8gYmUKPiBhbGxvY2F0ZWQsIGJ1dCBuZXZlciBvbmxpbmVkLCBzbyBhIERBWCBwYWdlIGlzIERN QS1pZGxlIHdoZW4gaXRzCj4gcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgb25lLgo+IAo+IEFsc28g cmVjYWxsIHRoYXQgdGhlIEhNTSBzdWItc3lzdGVtIGFkZGVkIGluZnJhc3RydWN0dXJlIHRvIHRy YXAgdGhlCj4gcGFnZS1pZGxlICgyLXRvLTEgcmVmZXJlbmNlIGNvdW50KSB0cmFuc2l0aW9uIG9m IHRoZSBwYWdlcyBhbGxvY2F0ZWQgYnkKPiBkZXZtX21lbXJlbWFwX3BhZ2VzKCkgYW5kIHRyaWdn ZXIgYSBjYWxsYmFjayB2aWEgdGhlICdzdHJ1Y3QKPiBkZXZfcGFnZW1hcCcgYXNzb2NpYXRlZCB3 aXRoIHRoZSBwYWdlIHJhbmdlLiBXaGVyZWFzIHRoZSBITU0gY2FsbGJhY2tzCj4gYXJlIGdvaW5n IHRvIGEgZGV2aWNlIGRyaXZlciB0byBtYW5hZ2UgYm91bmNlIHBhZ2VzIGluIGRldmljZS1tZW1v cnkgaW4KPiB0aGUgZmlsZXN5c3RlbS1kYXggY2FzZSB3ZSB3aWxsIGNhbGwgYmFjayB0byBmaWxl c3lzdGVtIHNwZWNpZmllZAo+IGNhbGxiYWNrLgo+IAo+IFNpbmNlIHRoZSBjYWxsYmFjayBpcyBu b3Qga25vd24gYXQgZGV2bV9tZW1yZW1hcF9wYWdlcygpIHRpbWUgd2UgYXJyYW5nZQo+IGZvciB0 aGUgZmlsZXN5c3RlbSB0byBpbnN0YWxsIGl0IGF0IG1vdW50IHRpbWUuIE5vIGZ1bmN0aW9uYWwg Y2hhbmdlcwo+IGFyZSBleHBlY3RlZCBhcyB0aGlzIG9ubHkgcmVnaXN0ZXJzIGEgbm9wIGhhbmRs ZXIgZm9yIHRoZSAtPnBhZ2VfZnJlZSgpCj4gZXZlbnQgZm9yIGRldmljZS1tYXBwZWQgcGFnZXMu Cj4gCj4gQ2M6IE1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgo+IFJldmlld2VkLWJ5OiAi SsOpcsO0bWUgR2xpc3NlIiA8amdsaXNzZUByZWRoYXQuY29tPgo+IFJldmlld2VkLWJ5OiBDaHJp c3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KPiBSZXZpZXdlZC1ieTogSmFuIEthcmEgPGphY2tA c3VzZS5jej4KPiBTaWduZWQtb2ZmLWJ5OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGlu dGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9kYXgvc3VwZXIuYyAgIHwgICAyMSArKysrKysrKysr Ky0tLS0tLS0tLS0KPiAgZHJpdmVycy9udmRpbW0vcG1lbS5jIHwgICAgMyArKy0KPiAgZnMvZXh0 Mi9zdXBlci5jICAgICAgIHwgICAgNiArKystLS0KPiAgZnMvZXh0NC9zdXBlci5jICAgICAgIHwg ICAgNiArKystLS0KPiAgZnMveGZzL3hmc19zdXBlci5jICAgIHwgICAyMCArKysrKysrKysrLS0t LS0tLS0tLQo+ICBpbmNsdWRlL2xpbnV4L2RheC5oICAgfCAgIDIzICsrKysrKysrKysrKysrLS0t LS0tLS0tCj4gIDYgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGF4L3N1cGVyLmMgYi9kcml2ZXJzL2RheC9z dXBlci5jCj4gaW5kZXggYzRjZjI4NGRmZTFjLi43ZDI2MGYxMThhMzkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9kYXgvc3VwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZGF4L3N1cGVyLmMKPiBAQCAtNjMs MTYgKzYzLDYgQEAgaW50IGJkZXZfZGF4X3Bnb2ZmKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYs IHNlY3Rvcl90IHNlY3Rvciwgc2l6ZV90IHNpemUsCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChiZGV2 X2RheF9wZ29mZik7Cj4gIAo+IC0jaWYgSVNfRU5BQkxFRChDT05GSUdfRlNfREFYKQo+IC1zdHJ1 Y3QgZGF4X2RldmljZSAqZnNfZGF4X2dldF9ieV9iZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKmJk ZXYpCj4gLXsKPiAtCWlmICghYmxrX3F1ZXVlX2RheChiZGV2LT5iZF9xdWV1ZSkpCj4gLQkJcmV0 dXJuIE5VTEw7Cj4gLQlyZXR1cm4gZnNfZGF4X2dldF9ieV9ob3N0KGJkZXYtPmJkX2Rpc2stPmRp c2tfbmFtZSk7Cj4gLX0KPiAtRVhQT1JUX1NZTUJPTF9HUEwoZnNfZGF4X2dldF9ieV9iZGV2KTsK PiAtI2VuZGlmCj4gLQo+ICAvKioKPiAgICogX19iZGV2X2RheF9zdXBwb3J0ZWQoKSAtIENoZWNr IGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgZGF4IGZvciBmaWxlc3lzdGVtCj4gICAqIEBzYjogVGhl IHN1cGVyYmxvY2sgb2YgdGhlIGRldmljZQo+IEBAIC01NzksNiArNTY5LDE3IEBAIHN0cnVjdCBk YXhfZGV2aWNlICphbGxvY19kYXgodm9pZCAqcHJpdmF0ZSwgY29uc3QgY2hhciAqX19ob3N0LAo+ ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKGFsbG9jX2RheCk7Cj4gIAo+ICtzdHJ1Y3QgZGF4X2Rl dmljZSAqYWxsb2NfZGF4X2Rldm1hcCh2b2lkICpwcml2YXRlLCBjb25zdCBjaGFyICpob3N0LAo+ ICsJCWNvbnN0IHN0cnVjdCBkYXhfb3BlcmF0aW9ucyAqb3BzLCBzdHJ1Y3QgZGV2X3BhZ2VtYXAg KnBnbWFwKQo+ICt7Cj4gKwlzdHJ1Y3QgZGF4X2RldmljZSAqZGF4X2RldiA9IGFsbG9jX2RheChw cml2YXRlLCBob3N0LCBvcHMpOwo+ICsKPiArCWlmIChkYXhfZGV2KQo+ICsJCWRheF9kZXYtPnBn bWFwID0gcGdtYXA7Cj4gKwlyZXR1cm4gZGF4X2RldjsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQ TChhbGxvY19kYXhfZGV2bWFwKTsKPiArCj4gIHZvaWQgcHV0X2RheChzdHJ1Y3QgZGF4X2Rldmlj ZSAqZGF4X2RldikKPiAgewo+ICAJaWYgKCFkYXhfZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L252ZGltbS9wbWVtLmMgYi9kcml2ZXJzL252ZGltbS9wbWVtLmMKPiBpbmRleCAwNmY4ZGNjNTJj YTYuLmU2ZDczNTFmMzM3OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL252ZGltbS9wbWVtLmMKPiAr KysgYi9kcml2ZXJzL252ZGltbS9wbWVtLmMKPiBAQCAtNDA4LDcgKzQwOCw4IEBAIHN0YXRpYyBp bnQgcG1lbV9hdHRhY2hfZGlzayhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAludmRpbW1fYmFkYmxv Y2tzX3BvcHVsYXRlKG5kX3JlZ2lvbiwgJnBtZW0tPmJiLCAmYmJfcmVzKTsKPiAgCWRpc2stPmJi ID0gJnBtZW0tPmJiOwo+ICAKPiAtCWRheF9kZXYgPSBhbGxvY19kYXgocG1lbSwgZGlzay0+ZGlz a19uYW1lLCAmcG1lbV9kYXhfb3BzKTsKPiArCWRheF9kZXYgPSBhbGxvY19kYXhfZGV2bWFwKHBt ZW0sIGRpc2stPmRpc2tfbmFtZSwgJnBtZW1fZGF4X29wcywKPiArCQkJJnBtZW0tPnBnbWFwKTsK PiAgCWlmICghZGF4X2Rldikgewo+ICAJCXB1dF9kaXNrKGRpc2spOwo+ICAJCXJldHVybiAtRU5P TUVNOwo+IGRpZmYgLS1naXQgYS9mcy9leHQyL3N1cGVyLmMgYi9mcy9leHQyL3N1cGVyLmMKPiBp bmRleCA3NjY2YzA2NWI5NmYuLjZhZTIwZTMxOWJjNCAxMDA2NDQKPiAtLS0gYS9mcy9leHQyL3N1 cGVyLmMKPiArKysgYi9mcy9leHQyL3N1cGVyLmMKPiBAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRp YyB2b2lkIGV4dDJfcHV0X3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYikKPiAgCWJyZWxz ZSAoc2JpLT5zX3NiaCk7Cj4gIAlzYi0+c19mc19pbmZvID0gTlVMTDsKPiAgCWtmcmVlKHNiaS0+ c19ibG9ja2dyb3VwX2xvY2spOwo+IC0JZnNfcHV0X2RheChzYmktPnNfZGF4ZGV2KTsKPiArCWZz X2RheF9yZWxlYXNlKHNiaS0+c19kYXhkZXYsIHNiKTsKPiAgCWtmcmVlKHNiaSk7Cj4gIH0KPiAg Cj4gQEAgLTgxNyw3ICs4MTcsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBkZXNjcmlwdG9yX2xv YyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAo+ICAKPiAgc3RhdGljIGludCBleHQyX2ZpbGxfc3Vw ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKPiAgewo+ IC0Jc3RydWN0IGRheF9kZXZpY2UgKmRheF9kZXYgPSBmc19kYXhfZ2V0X2J5X2JkZXYoc2ItPnNf YmRldik7Cj4gKwlzdHJ1Y3QgZGF4X2RldmljZSAqZGF4X2RldiA9IGZzX2RheF9jbGFpbV9iZGV2 KHNiLT5zX2JkZXYsIHNiKTsKPiAgCXN0cnVjdCBidWZmZXJfaGVhZCAqIGJoOwo+ICAJc3RydWN0 IGV4dDJfc2JfaW5mbyAqIHNiaTsKPiAgCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogZXM7Cj4g QEAgLTEyMTMsNyArMTIxMyw3IEBAIHN0YXRpYyBpbnQgZXh0Ml9maWxsX3N1cGVyKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCj4gIAlrZnJlZShzYmktPnNf YmxvY2tncm91cF9sb2NrKTsKPiAgCWtmcmVlKHNiaSk7Cj4gIGZhaWxlZDoKPiAtCWZzX3B1dF9k YXgoZGF4X2Rldik7Cj4gKwlmc19kYXhfcmVsZWFzZShkYXhfZGV2LCBzYik7Cj4gIAlyZXR1cm4g cmV0Owo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1 cGVyLmMKPiBpbmRleCAzOWJmNDY0YzM1ZjEuLjMxNWEzMjM3MjllMyAxMDA2NDQKPiAtLS0gYS9m cy9leHQ0L3N1cGVyLmMKPiArKysgYi9mcy9leHQ0L3N1cGVyLmMKPiBAQCAtOTUyLDcgKzk1Miw3 IEBAIHN0YXRpYyB2b2lkIGV4dDRfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCj4g IAlpZiAoc2JpLT5zX2Noa3N1bV9kcml2ZXIpCj4gIAkJY3J5cHRvX2ZyZWVfc2hhc2goc2JpLT5z X2Noa3N1bV9kcml2ZXIpOwo+ICAJa2ZyZWUoc2JpLT5zX2Jsb2NrZ3JvdXBfbG9jayk7Cj4gLQlm c19wdXRfZGF4KHNiaS0+c19kYXhkZXYpOwo+ICsJZnNfZGF4X3JlbGVhc2Uoc2JpLT5zX2RheGRl diwgc2IpOwo+ICAJa2ZyZWUoc2JpKTsKPiAgfQo+ICAKPiBAQCAtMzM5OCw3ICszMzk4LDcgQEAg c3RhdGljIHZvaWQgZXh0NF9zZXRfcmVzdl9jbHVzdGVycyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi KQo+ICAKPiAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKPiAgewo+IC0Jc3RydWN0IGRheF9kZXZpY2UgKmRh eF9kZXYgPSBmc19kYXhfZ2V0X2J5X2JkZXYoc2ItPnNfYmRldik7Cj4gKwlzdHJ1Y3QgZGF4X2Rl dmljZSAqZGF4X2RldiA9IGZzX2RheF9jbGFpbV9iZGV2KHNiLT5zX2JkZXYsIHNiKTsKPiAgCWNo YXIgKm9yaWdfZGF0YSA9IGtzdHJkdXAoZGF0YSwgR0ZQX0tFUk5FTCk7Cj4gIAlzdHJ1Y3QgYnVm ZmVyX2hlYWQgKmJoOwo+ICAJc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzID0gTlVMTDsKPiBA QCAtNDQwOCw3ICs0NDA4LDcgQEAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1 cGVyX2Jsb2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKPiAgb3V0X2ZyZWVfYmFzZToK PiAgCWtmcmVlKHNiaSk7Cj4gIAlrZnJlZShvcmlnX2RhdGEpOwo+IC0JZnNfcHV0X2RheChkYXhf ZGV2KTsKPiArCWZzX2RheF9yZWxlYXNlKGRheF9kZXYsIHNiKTsKPiAgCXJldHVybiBlcnIgPyBl cnIgOiByZXQ7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfc3VwZXIuYyBiL2Zz L3hmcy94ZnNfc3VwZXIuYwo+IGluZGV4IDkzNTg4ZWEzZDNkMi4uZWY3ZGQ3MTQ4YzBiIDEwMDY0 NAo+IC0tLSBhL2ZzL3hmcy94ZnNfc3VwZXIuYwo+ICsrKyBiL2ZzL3hmcy94ZnNfc3VwZXIuYwo+ IEBAIC03MjQsNyArNzI0LDcgQEAgeGZzX2Nsb3NlX2RldmljZXMoCj4gIAo+ICAJCXhmc19mcmVl X2J1ZnRhcmcobXAsIG1wLT5tX2xvZ2Rldl90YXJncCk7Cj4gIAkJeGZzX2Jsa2Rldl9wdXQobG9n ZGV2KTsKPiAtCQlmc19wdXRfZGF4KGRheF9sb2dkZXYpOwo+ICsJCWZzX2RheF9yZWxlYXNlKGRh eF9sb2dkZXYsIG1wKTsKPiAgCX0KPiAgCWlmIChtcC0+bV9ydGRldl90YXJncCkgewo+ICAJCXN0 cnVjdCBibG9ja19kZXZpY2UgKnJ0ZGV2ID0gbXAtPm1fcnRkZXZfdGFyZ3AtPmJ0X2JkZXY7Cj4g QEAgLTczMiwxMCArNzMyLDEwIEBAIHhmc19jbG9zZV9kZXZpY2VzKAo+ICAKPiAgCQl4ZnNfZnJl ZV9idWZ0YXJnKG1wLCBtcC0+bV9ydGRldl90YXJncCk7Cj4gIAkJeGZzX2Jsa2Rldl9wdXQocnRk ZXYpOwo+IC0JCWZzX3B1dF9kYXgoZGF4X3J0ZGV2KTsKPiArCQlmc19kYXhfcmVsZWFzZShkYXhf cnRkZXYsIG1wKTsKPiAgCX0KPiAgCXhmc19mcmVlX2J1ZnRhcmcobXAsIG1wLT5tX2RkZXZfdGFy Z3ApOwo+IC0JZnNfcHV0X2RheChkYXhfZGRldik7Cj4gKwlmc19kYXhfcmVsZWFzZShkYXhfZGRl diwgbXApOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC03NTMsOSArNzUzLDkgQEAgeGZzX29wZW5fZGV2 aWNlcygKPiAgCXN0cnVjdCB4ZnNfbW91bnQJKm1wKQo+ICB7Cj4gIAlzdHJ1Y3QgYmxvY2tfZGV2 aWNlCSpkZGV2ID0gbXAtPm1fc3VwZXItPnNfYmRldjsKPiAtCXN0cnVjdCBkYXhfZGV2aWNlCSpk YXhfZGRldiA9IGZzX2RheF9nZXRfYnlfYmRldihkZGV2KTsKPiAtCXN0cnVjdCBkYXhfZGV2aWNl CSpkYXhfbG9nZGV2ID0gTlVMTCwgKmRheF9ydGRldiA9IE5VTEw7Cj4gKwlzdHJ1Y3QgZGF4X2Rl dmljZQkqZGF4X2RkZXYgPSBmc19kYXhfY2xhaW1fYmRldihkZGV2LCBtcCk7Cj4gIAlzdHJ1Y3Qg YmxvY2tfZGV2aWNlCSpsb2dkZXYgPSBOVUxMLCAqcnRkZXYgPSBOVUxMOwo+ICsJc3RydWN0IGRh eF9kZXZpY2UJKmRheF9sb2dkZXYgPSBOVUxMLCAqZGF4X3J0ZGV2ID0gTlVMTDsKPiAgCWludAkJ CWVycm9yOwo+ICAKPiAgCS8qCj4gQEAgLTc2NSw3ICs3NjUsNyBAQCB4ZnNfb3Blbl9kZXZpY2Vz KAo+ICAJCWVycm9yID0geGZzX2Jsa2Rldl9nZXQobXAsIG1wLT5tX2xvZ25hbWUsICZsb2dkZXYp Owo+ICAJCWlmIChlcnJvcikKPiAgCQkJZ290byBvdXQ7Cj4gLQkJZGF4X2xvZ2RldiA9IGZzX2Rh eF9nZXRfYnlfYmRldihsb2dkZXYpOwo+ICsJCWRheF9sb2dkZXYgPSBmc19kYXhfY2xhaW1fYmRl dihsb2dkZXYsIG1wKTsKPiAgCX0KPiAgCj4gIAlpZiAobXAtPm1fcnRuYW1lKSB7Cj4gQEAgLTc3 OSw3ICs3NzksNyBAQCB4ZnNfb3Blbl9kZXZpY2VzKAo+ICAJCQllcnJvciA9IC1FSU5WQUw7Cj4g IAkJCWdvdG8gb3V0X2Nsb3NlX3J0ZGV2Owo+ICAJCX0KPiAtCQlkYXhfcnRkZXYgPSBmc19kYXhf Z2V0X2J5X2JkZXYocnRkZXYpOwo+ICsJCWRheF9ydGRldiA9IGZzX2RheF9jbGFpbV9iZGV2KHJ0 ZGV2LCBtcCk7Cj4gIAl9Cj4gIAo+ICAJLyoKPiBAQCAtODEzLDE0ICs4MTMsMTQgQEAgeGZzX29w ZW5fZGV2aWNlcygKPiAgCXhmc19mcmVlX2J1ZnRhcmcobXAsIG1wLT5tX2RkZXZfdGFyZ3ApOwo+ ICAgb3V0X2Nsb3NlX3J0ZGV2Ogo+ICAJeGZzX2Jsa2Rldl9wdXQocnRkZXYpOwo+IC0JZnNfcHV0 X2RheChkYXhfcnRkZXYpOwo+ICsJZnNfZGF4X3JlbGVhc2UoZGF4X3J0ZGV2LCBtcCk7Cj4gICBv dXRfY2xvc2VfbG9nZGV2Ogo+ICAJaWYgKGxvZ2RldiAmJiBsb2dkZXYgIT0gZGRldikgewo+ICAJ CXhmc19ibGtkZXZfcHV0KGxvZ2Rldik7Cj4gLQkJZnNfcHV0X2RheChkYXhfbG9nZGV2KTsKPiAr CQlmc19kYXhfcmVsZWFzZShkYXhfbG9nZGV2LCBtcCk7Cj4gIAl9Cj4gICBvdXQ6Cj4gLQlmc19w dXRfZGF4KGRheF9kZGV2KTsKPiArCWZzX2RheF9yZWxlYXNlKGRheF9kZGV2LCBtcCk7Cj4gIAly ZXR1cm4gZXJyb3I7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGF4Lmgg Yi9pbmNsdWRlL2xpbnV4L2RheC5oCj4gaW5kZXggZTlkNTlhNmIwNmUxLi5hODhmZjAwOWUyYTEg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9kYXguaAo+ICsrKyBiL2luY2x1ZGUvbGludXgv ZGF4LmgKPiBAQCAtMzIsNiArMzIsOCBAQCBleHRlcm4gc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBk YXhfYXR0cmlidXRlX2dyb3VwOwo+ICBzdHJ1Y3QgZGF4X2RldmljZSAqZGF4X2dldF9ieV9ob3N0 KGNvbnN0IGNoYXIgKmhvc3QpOwo+ICBzdHJ1Y3QgZGF4X2RldmljZSAqYWxsb2NfZGF4KHZvaWQg KnByaXZhdGUsIGNvbnN0IGNoYXIgKmhvc3QsCj4gIAkJY29uc3Qgc3RydWN0IGRheF9vcGVyYXRp b25zICpvcHMpOwo+ICtzdHJ1Y3QgZGF4X2RldmljZSAqYWxsb2NfZGF4X2Rldm1hcCh2b2lkICpw cml2YXRlLCBjb25zdCBjaGFyICpob3N0LAo+ICsJCWNvbnN0IHN0cnVjdCBkYXhfb3BlcmF0aW9u cyAqb3BzLCBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKTsKPiAgdm9pZCBwdXRfZGF4KHN0cnVj dCBkYXhfZGV2aWNlICpkYXhfZGV2KTsKPiAgdm9pZCBraWxsX2RheChzdHJ1Y3QgZGF4X2Rldmlj ZSAqZGF4X2Rldik7Cj4gIHZvaWQgZGF4X3dyaXRlX2NhY2hlKHN0cnVjdCBkYXhfZGV2aWNlICpk YXhfZGV2LCBib29sIHdjKTsKPiBAQCAtNTAsNiArNTIsMTIgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgZGF4X2RldmljZSAqYWxsb2NfZGF4KHZvaWQgKnByaXZhdGUsIGNvbnN0IGNoYXIgKmhvc3Qs Cj4gIAkgKi8KPiAgCXJldHVybiBOVUxMOwo+ICB9Cj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRh eF9kZXZpY2UgKmFsbG9jX2RheF9kZXZtYXAodm9pZCAqcHJpdmF0ZSwKPiArCQljb25zdCBjaGFy ICpob3N0LCBjb25zdCBzdHJ1Y3QgZGF4X29wZXJhdGlvbnMgKm9wcywKPiArCQlzdHJ1Y3QgZGV2 X3BhZ2VtYXAgKnBnbWFwKQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICBzdGF0aWMgaW5s aW5lIHZvaWQgcHV0X2RheChzdHJ1Y3QgZGF4X2RldmljZSAqZGF4X2RldikKPiAgewo+ICB9Cj4g QEAgLTc5LDEyICs4Nyw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRheF9kZXZpY2UgKmZzX2Rh eF9nZXRfYnlfaG9zdChjb25zdCBjaGFyICpob3N0KQo+ICAJcmV0dXJuIGRheF9nZXRfYnlfaG9z dChob3N0KTsKPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSB2b2lkIGZzX3B1dF9kYXgoc3RydWN0 IGRheF9kZXZpY2UgKmRheF9kZXYpCj4gLXsKPiAtCXB1dF9kYXgoZGF4X2Rldik7Cj4gLX0KPiAt Cj4gLXN0cnVjdCBkYXhfZGV2aWNlICpmc19kYXhfZ2V0X2J5X2JkZXYoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldik7Cj4gK3N0cnVjdCBkYXhfZGV2aWNlICpmc19kYXhfY2xhaW1fYmRldihzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCB2b2lkICpvd25lcik7Cj4gK3ZvaWQgZnNfZGF4X3JlbGVh c2Uoc3RydWN0IGRheF9kZXZpY2UgKmRheF9kZXYsIHZvaWQgKm93bmVyKTsKPiAgaW50IGRheF93 cml0ZWJhY2tfbWFwcGluZ19yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKPiAg CQlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndi Yyk7Cj4gIHN0cnVjdCBkYXhfZGV2aWNlICpmc19kYXhfY2xhaW0oc3RydWN0IGRheF9kZXZpY2Ug KmRheF9kZXYsIHZvaWQgKm93bmVyKTsKPiBAQCAtMTAwLDEzICsxMDQsMTQgQEAgc3RhdGljIGlu bGluZSBzdHJ1Y3QgZGF4X2RldmljZSAqZnNfZGF4X2dldF9ieV9ob3N0KGNvbnN0IGNoYXIgKmhv c3QpCj4gIAlyZXR1cm4gTlVMTDsKPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSB2b2lkIGZzX3B1 dF9kYXgoc3RydWN0IGRheF9kZXZpY2UgKmRheF9kZXYpCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGRheF9kZXZpY2UgKmZzX2RheF9jbGFpbV9iZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYs Cj4gKwkJdm9pZCAqb3duZXIpCj4gIHsKPiArCXJldHVybiBOVUxMOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgaW5saW5lIHN0cnVjdCBkYXhfZGV2aWNlICpmc19kYXhfZ2V0X2J5X2JkZXYoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldikKPiArc3RhdGljIGlubGluZSB2b2lkIGZzX2RheF9yZWxlYXNlKHN0 cnVjdCBkYXhfZGV2aWNlICpkYXhfZGV2LCB2b2lkICpvd25lcikKPiAgewo+IC0JcmV0dXJuIE5V TEw7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgaW50IGRheF93cml0ZWJhY2tfbWFwcGluZ19y YW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbnZkaW1tIG1haWxpbmcgbGlzdApMaW51 eC1udmRpbW1AbGlzdHMuMDEub3JnCmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtbnZkaW1tCg==