From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 1/6] dma-buf: add dynamic DMA-buf handling v13 Date: Tue, 16 Jul 2019 16:21:53 +0200 Message-ID: References: <20190626122310.1498-1-christian.koenig@amd.com> <20190626122933.GK12905@phenom.ffwll.local> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190626122933.GK12905-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Daniel Vetter Cc: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMjYuMDYuMTkgdW0gMTQ6Mjkgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFdlZCwgSnVu IDI2LCAyMDE5IGF0IDAyOjIzOjA1UE0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+ IE9uIHRoZSBleHBvcnRlciBzaWRlIHdlIGFkZCBvcHRpb25hbCBleHBsaWNpdCBwaW5uaW5nIGNh bGxiYWNrcy4gSWYgdGhvc2UKPj4gY2FsbGJhY2tzIGFyZSBpbXBsZW1lbnRlZCB0aGUgZnJhbWV3 b3JrIG5vIGxvbmdlciBjYWNoZXMgc2cgdGFibGVzIGFuZCB0aGUKPj4gbWFwL3VubWFwIGNhbGxi YWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aXRoIHRoZSBsb2NrIG9mIHRoZSByZXNlcnZhdGlvbiBv YmplY3QKPj4gaGVsZC4KPj4KPj4gT24gdGhlIGltcG9ydGVyIHNpZGUgd2UgYWRkIGFuIG9wdGlv bmFsIGludmFsaWRhdGUgY2FsbGJhY2suIFRoaXMgY2FsbGJhY2sgaXMKPj4gdXNlZCBieSB0aGUg ZXhwb3J0ZXIgdG8gaW5mb3JtIHRoZSBpbXBvcnRlcnMgdGhhdCB0aGVpciBtYXBwaW5ncyBzaG91 bGQgYmUKPj4gZGVzdHJveWVkIGFzIHNvb24gYXMgcG9zc2libGUuCj4+Cj4+IFRoaXMgYWxsb3dz IHRoZSBleHBvcnRlciB0byBwcm92aWRlIHRoZSBtYXBwaW5ncyB3aXRob3V0IHRoZSBuZWVkIHRv IHBpbgo+PiB0aGUgYmFja2luZyBzdG9yZS4KPj4KPj4gdjI6IGRvbid0IHRyeSB0byBpbnZhbGlk YXRlIG1hcHBpbmdzIHdoZW4gdGhlIGNhbGxiYWNrIGlzIE5VTEwsCj4+ICAgICAgbG9jayB0aGUg cmVzZXJ2YXRpb24gb2JqIHdoaWxlIHVzaW5nIHRoZSBhdHRhY2htZW50cywKPj4gICAgICBhZGQg aGVscGVyIHRvIHNldCB0aGUgY2FsbGJhY2sKPj4gdjM6IG1vdmUgZmxhZyBmb3IgaW52YWxpZGF0 aW9uIHN1cHBvcnQgaW50byB0aGUgRE1BLWJ1ZiwKPj4gICAgICB1c2UgbmV3IGF0dGFjaF9pbmZv IHN0cnVjdHVyZSB0byBzZXQgdGhlIGNhbGxiYWNrCj4+IHY0OiB1c2UgaW1wb3J0ZXJfcHJpdiBm aWVsZCBpbnN0ZWFkIG9mIG1hbmdsaW5nIGV4cG9ydGVyIHByaXYuCj4+IHY1OiBkcm9wIGludmFs aWRhdGlvbl9zdXBwb3J0ZWQgZmxhZwo+PiB2Njogc3F1YXNoIHRvZ2V0aGVyIHdpdGggcGluL3Vu cGluIGNoYW5nZXMKPj4gdjc6IHBpbi91bnBpbiB0YWtlcyBhbiBhdHRhY2htZW50IG5vdwo+PiB2 ODogbnVrZSBkbWFfYnVmX2F0dGFjaG1lbnRfKG1hcHx1bm1hcClfbG9ja2VkLAo+PiAgICAgIGV2 ZXJ5dGhpbmcgaXMgbm93IGhhbmRsZWQgYmFja3dhcmQgY29tcGF0aWJsZQo+PiB2OTogYWx3YXlz IGNhY2hlIHdoZW4gZXhwb3J0L2ltcG9ydGVyIGRvbid0IGFncmVlIG9uIGR5bmFtaWMgaGFuZGxp bmcKPj4gdjEwOiBtaW5pbWFsIHN0eWxlIGNsZWFudXAKPj4gdjExOiBkcm9wIGF1dG9tYXRpY2Fs bHkgcmUtZW50cnkgYXZvaWRhbmNlCj4+IHYxMjogcmVuYW1lIGNhbGxiYWNrIHRvIG1vdmVfbm90 aWZ5Cj4+IHYxMzogYWRkIG1pZ2h0X2xvY2sgaW4gYXBwcm9wcmlhdGUgcGxhY2VzCj4gdjE0IHdp dGggZG1hYnVmLT5sb2NrIGdvbmU/CgpTbyBqdXN0IGJhY2sgZnJvbSB2YWNhdGlvbiBhbmQgZG91 YmxlIGNoZWNrZWQgdGhhdC4gSXQgYWxtb3N0IHdvcmtzIGJ1dCAKbm90IHF1aXRlIHlldCBiZWNh dXNlIHdlIHN0aWxsIG5lZWQgdGhlIGxvY2sgdG8gcHJvdGVjdGVkIGFnYWluc3QgCmNvbmN1cnJl bnQgdm1hcCBvcGVyYXRpb25zLgoKQW5kIEknbSBub3Qgc3VyZSB5ZXQgaWYgd2UgY2FuIHVzZSB0 aGUgcmVzZXJ2YXRpb24gb2JqZWN0IHRoZXJlIGFzIHdlbGwuIApHb2luZyB0byBkbyB0cnkgaW4g YSBzZXBhcmF0ZSBwYXRjaCBhZnRlciB0aGlzIG9uZSBsYW5kZWQuCgo+Cj4gQWxzbyBJIGxvb2tl ZCBhdCBDSSByZXN1bHRzIGFuZCBzdHVmZiwgSSBndWVzcyB5b3UgaW5kZWVkIGRpZG4ndCBicmVh ayB0aGUKPiB3b3JsZCBiZWNhdXNlIENocmlzIFdpbHNvbiBoYXMgZmF1Z2h0IGJhY2sgc3RydWN0 X211dGV4IGZhciBlbm91Z2ggYnkgbm93Lgo+Cj4gT3RoZXIgaXNzdWUgaXMgdGhhdCBzaW5jZSAy IHdlZWtzIG9yIHNvIG91ciBDSSBzdGFydGVkIGZpbHRlcmluZyBhbGwKPiBsb2NrZGVwIHNwbGF0 cywgc28geW91IG5lZWQgdG8gZGlnIGludG8gcmVzdWx0cyB5b3Vyc2VsZi4KPgo+IGJ0dyBvbiB0 aGF0LCBJIHRoaW5rIGluIHRoZSBlbmQgdGhlIHJlc2VydmF0aW9uX29iaiBsb2NraW5nIHdpbGwg YXQgYmVzdAo+IGJlIGNvbnNpc3RlbnQgYmV0d2VlbiBhbWRncHUgYW5kIGk5MTU6IEkganVzdCBy ZW1lbWJlcmVkIHRoYXQgYWxsIG90aGVyCj4gdHRtIGRyaXZlcnMgaGF2ZSB0aGUgbW1hcF9zZW0g dnMgcmVzdl9vYmogbG9ja2luZyB0aGUgd3Jvbmcgd2F5IHJvdW5kLCBhbmQKPiB0aGUgdHJ5bG9j ayBpbiB0dG1fYm9fZmF1bHQuIFNvIHRoYXQgcGFydCBhbG9uZSBpcyBob3BlbGVzcywgYnV0IEkg Z3Vlc3MKPiBzaW5jZSByYWRlb24ua28gaXMgYWJhbmRvbndhcmUgbm8gb25lIHdpbGwgZXZlciBm aXggdGhhdC4KPgo+IFNvIEkgdGhpbmsgaW4gdGhlIGVuZCBpdCBib2lscyBkb3duIHRvIHdoZXRo ZXIgdGhhdCdzIGdvb2QgZW5vdWdoIHRvIGxhbmQKPiBpdCwgb3Igbm90LgoKV2VsbCBjYW4geW91 IGdpdmUgbWUgYW4gcmIgdGhlbj8gSSBtZWFuIGF0IHNvbWUgcG9pbnQgSSBoYXZlIHRvIHB1c2gg aXQgCnRvIGRybS1taXNjLW5leHQuCgpDaHJpc3RpYW4uCgo+IC1EYW5pZWwKPgo+PiBTaWduZWQt b2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+IC0t LQo+PiAgIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgfCAxODMgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0KPj4gICBpbmNsdWRlL2xpbnV4L2RtYS1idWYuaCAgIHwgMTA4 ICsrKysrKysrKysrKysrKysrKysrLS0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDI3NyBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1 Zi9kbWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4+IGluZGV4IDZjMTVkZWI1 ZDRhZC4uYmQ4NjExZmEyY2ZhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1 Zi5jCj4+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPj4gQEAgLTUzMSw2ICs1MzEs OSBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoY29uc3Qgc3RydWN0IGRtYV9idWZf ZXhwb3J0X2luZm8gKmV4cF9pbmZvKQo+PiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4+ ICAgCX0KPj4gICAKPj4gKwlpZiAoV0FSTl9PTihleHBfaW5mby0+b3BzLT5jYWNoZV9zZ3RfbWFw cGluZyAmJiBleHBfaW5mby0+b3BzLT5waW4pKQo+PiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFM KTsKPj4gKwo+PiAgIAlpZiAoIXRyeV9tb2R1bGVfZ2V0KGV4cF9pbmZvLT5vd25lcikpCj4+ICAg CQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKPj4gICAKPj4gQEAgLTY1MSwxMCArNjU0LDEyIEBA IHZvaWQgZG1hX2J1Zl9wdXQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKPj4gICBFWFBPUlRfU1lN Qk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4+ICAgCj4+ICAgLyoqCj4+IC0gKiBkbWFfYnVmX2F0dGFj aCAtIEFkZCB0aGUgZGV2aWNlIHRvIGRtYV9idWYncyBhdHRhY2htZW50cyBsaXN0OyBvcHRpb25h bGx5LAo+PiArICogZG1hX2J1Zl9keW5hbWljX2F0dGFjaCAtIEFkZCB0aGUgZGV2aWNlIHRvIGRt YV9idWYncyBhdHRhY2htZW50cyBsaXN0OyBvcHRpb25hbGx5LAo+PiAgICAqIGNhbGxzIGF0dGFj aCgpIG9mIGRtYV9idWZfb3BzIHRvIGFsbG93IGRldmljZS1zcGVjaWZpYyBhdHRhY2ggZnVuY3Rp b25hbGl0eQo+PiAtICogQGRtYWJ1ZjoJW2luXQlidWZmZXIgdG8gYXR0YWNoIGRldmljZSB0by4K Pj4gLSAqIEBkZXY6CVtpbl0JZGV2aWNlIHRvIGJlIGF0dGFjaGVkLgo+PiArICogQGRtYWJ1ZjoJ CVtpbl0JYnVmZmVyIHRvIGF0dGFjaCBkZXZpY2UgdG8uCj4+ICsgKiBAZGV2OgkJW2luXQlkZXZp Y2UgdG8gYmUgYXR0YWNoZWQuCj4+ICsgKiBAaW1wb3J0ZXJfb3BzCVtpbl0JaW1wb3J0ZXIgb3Bl cmF0aW9ucyBmb3IgdGhlIGF0dGFjaG1lbnQKPj4gKyAqIEBpbXBvcnRlcl9wcml2CVtpbl0JaW1w b3J0ZXIgcHJpdmF0ZSBwb2ludGVyIGZvciB0aGUgYXR0YWNobWVudAo+PiAgICAqCj4+ICAgICog UmV0dXJucyBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50IHBvaW50ZXIgZm9yIHRoaXMgYXR0YWNo bWVudC4gQXR0YWNobWVudHMKPj4gICAgKiBtdXN0IGJlIGNsZWFuZWQgdXAgYnkgY2FsbGluZyBk bWFfYnVmX2RldGFjaCgpLgo+PiBAQCAtNjY4LDggKzY3MywxMCBAQCBFWFBPUlRfU1lNQk9MX0dQ TChkbWFfYnVmX3B1dCk7Cj4+ICAgICogYWNjZXNzaWJsZSB0byBAZGV2LCBhbmQgY2Fubm90IGJl IG1vdmVkIHRvIGEgbW9yZSBzdWl0YWJsZSBwbGFjZS4gVGhpcyBpcwo+PiAgICAqIGluZGljYXRl ZCB3aXRoIHRoZSBlcnJvciBjb2RlIC1FQlVTWS4KPj4gICAgKi8KPj4gLXN0cnVjdCBkbWFfYnVm X2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4+IC0J CQkJCSAgc3RydWN0IGRldmljZSAqZGV2KQo+PiArc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq Cj4+ICtkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVj dCBkZXZpY2UgKmRldiwKPj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9v cHMgKmltcG9ydGVyX29wcywKPj4gKwkJICAgICAgIHZvaWQgKmltcG9ydGVyX3ByaXYpCj4+ICAg ewo+PiAgIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4+ICAgCWludCByZXQ7 Cj4+IEBAIC02ODMsNiArNjkwLDggQEAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1 Zl9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPj4gICAKPj4gICAJYXR0YWNoLT5kZXYg PSBkZXY7Cj4+ICAgCWF0dGFjaC0+ZG1hYnVmID0gZG1hYnVmOwo+PiArCWF0dGFjaC0+aW1wb3J0 ZXJfb3BzID0gaW1wb3J0ZXJfb3BzOwo+PiArCWF0dGFjaC0+aW1wb3J0ZXJfcHJpdiA9IGltcG9y dGVyX3ByaXY7Cj4+ICAgCj4+ICAgCW11dGV4X2xvY2soJmRtYWJ1Zi0+bG9jayk7Cj4+ICAgCj4+ IEBAIC02OTEsMTYgKzcwMCw3MiBAQCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVm X2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+PiAgIAkJaWYgKHJldCkKPj4gICAJCQln b3RvIGVycl9hdHRhY2g7Cj4+ICAgCX0KPj4gKwlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhkbWFi dWYtPnJlc3YsIE5VTEwpOwo+PiAgIAlsaXN0X2FkZCgmYXR0YWNoLT5ub2RlLCAmZG1hYnVmLT5h dHRhY2htZW50cyk7Cj4+ICsJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhkbWFidWYtPnJlc3Yp Owo+PiAgIAo+PiAgIAltdXRleF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7Cj4+ICAgCj4+ICsJLyog V2hlbiBlaXRoZXIgdGhlIGltcG9ydGVyIG9yIHRoZSBleHBvcnRlciBjYW4ndCBoYW5kbGUgZHlu YW1pYwo+PiArCSAqIG1hcHBpbmdzIHdlIGNhY2hlIHRoZSBtYXBwaW5nIGhlcmUgdG8gYXZvaWQg aXNzdWVzIHdpdGggdGhlCj4+ICsJICogcmVzZXJ2YXRpb24gb2JqZWN0IGxvY2suCj4+ICsJICov Cj4+ICsJaWYgKGRtYV9idWZfYXR0YWNobWVudF9pc19keW5hbWljKGF0dGFjaCkgIT0KPj4gKwkg ICAgZG1hX2J1Zl9pc19keW5hbWljKGRtYWJ1ZikpIHsKPj4gKwkJc3RydWN0IHNnX3RhYmxlICpz Z3Q7Cj4+ICsKPj4gKwkJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpIHsK Pj4gKwkJCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBOVUxM KTsKPj4gKwkJCXJldCA9IGRtYV9idWZfcGluKGF0dGFjaCk7Cj4+ICsJCQlpZiAocmV0KQo+PiAr CQkJCWdvdG8gZXJyX3VubG9jazsKPj4gKwkJfQo+PiArCj4+ICsJCXNndCA9IGRtYWJ1Zi0+b3Bz LT5tYXBfZG1hX2J1ZihhdHRhY2gsIERNQV9CSURJUkVDVElPTkFMKTsKPj4gKwkJaWYgKCFzZ3Qp Cj4+ICsJCQlzZ3QgPSBFUlJfUFRSKC1FTk9NRU0pOwo+PiArCQlpZiAoSVNfRVJSKHNndCkpIHsK Pj4gKwkJCXJldCA9IFBUUl9FUlIoc2d0KTsKPj4gKwkJCWdvdG8gZXJyX3VucGluOwo+PiArCQl9 Cj4+ICsJCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+PiArCQkJcmVz ZXJ2YXRpb25fb2JqZWN0X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4+ICsJCWF0dGFj aC0+c2d0ID0gc2d0Owo+PiArCQlhdHRhY2gtPmRpciA9IERNQV9CSURJUkVDVElPTkFMOwo+PiAr CX0KPj4gKwo+PiAgIAlyZXR1cm4gYXR0YWNoOwo+PiAgIAo+PiAgIGVycl9hdHRhY2g6Cj4+ICAg CWtmcmVlKGF0dGFjaCk7Cj4+ICAgCW11dGV4X3VubG9jaygmZG1hYnVmLT5sb2NrKTsKPj4gICAJ cmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gKwo+PiArZXJyX3VucGluOgo+PiArCWlmIChkbWFfYnVm X2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+PiArCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7 Cj4+ICsKPj4gK2Vycl91bmxvY2s6Cj4+ICsJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gt PmRtYWJ1ZikpCj4+ICsJCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soYXR0YWNoLT5kbWFidWYt PnJlc3YpOwo+PiArCj4+ICsJZG1hX2J1Zl9kZXRhY2goZG1hYnVmLCBhdHRhY2gpOwo+PiArCXJl dHVybiBFUlJfUFRSKHJldCk7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX2R5 bmFtaWNfYXR0YWNoKTsKPj4gKwo+PiArLyoqCj4+ICsgKiBkbWFfYnVmX2F0dGFjaCAtIFdyYXBw ZXIgZm9yIGRtYV9idWZfZHluYW1pY19hdHRhY2gKPj4gKyAqIEBkbWFidWY6CVtpbl0JYnVmZmVy IHRvIGF0dGFjaCBkZXZpY2UgdG8uCj4+ICsgKiBAZGV2OglbaW5dCWRldmljZSB0byBiZSBhdHRh Y2hlZC4KPj4gKyAqCj4+ICsgKiBXcmFwcGVyIHRvIGNhbGwgZG1hX2J1Zl9keW5hbWljX2F0dGFj aCgpIGZvciBkcml2ZXJzIHdoaWNoIHN0aWxsIHVzZSBhIHN0YXRpYwo+PiArICogbWFwcGluZy4K Pj4gKyAqLwo+PiArc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRhY2goc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwKPj4gKwkJCQkJICBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7 Cj4+ICsJcmV0dXJuIGRtYV9idWZfZHluYW1pY19hdHRhY2goZG1hYnVmLCBkZXYsIE5VTEwsIE5V TEwpOwo+PiAgIH0KPj4gICBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX2F0dGFjaCk7Cj4+ICAg Cj4+IEBAIC03MTcsMTEgKzc4MiwyMiBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPj4gICAJaWYg KFdBUk5fT04oIWRtYWJ1ZiB8fCAhYXR0YWNoKSkKPj4gICAJCXJldHVybjsKPj4gICAKPj4gLQlp ZiAoYXR0YWNoLT5zZ3QpCj4+ICsJaWYgKGF0dGFjaC0+c2d0KSB7Cj4+ICsJCWlmIChkbWFfYnVm X2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+PiArCQkJcmVzZXJ2YXRpb25fb2JqZWN0X2xv Y2soYXR0YWNoLT5kbWFidWYtPnJlc3YsIE5VTEwpOwo+PiArCj4+ICAgCQlkbWFidWYtPm9wcy0+ dW5tYXBfZG1hX2J1ZihhdHRhY2gsIGF0dGFjaC0+c2d0LCBhdHRhY2gtPmRpcik7Cj4+ICAgCj4+ ICsJCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKSB7Cj4+ICsJCQlkbWFf YnVmX3VucGluKGF0dGFjaCk7Cj4+ICsJCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFj aC0+ZG1hYnVmLT5yZXN2KTsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiAgIAltdXRleF9sb2NrKCZk bWFidWYtPmxvY2spOwo+PiArCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKGRtYWJ1Zi0+cmVzdiwg TlVMTCk7Cj4+ICAgCWxpc3RfZGVsKCZhdHRhY2gtPm5vZGUpOwo+PiArCXJlc2VydmF0aW9uX29i amVjdF91bmxvY2soZG1hYnVmLT5yZXN2KTsKPj4gICAJaWYgKGRtYWJ1Zi0+b3BzLT5kZXRhY2gp Cj4+ICAgCQlkbWFidWYtPm9wcy0+ZGV0YWNoKGRtYWJ1ZiwgYXR0YWNoKTsKPj4gICAKPj4gQEAg LTczMCw2ICs4MDYsNDQgQEAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1h YnVmLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4+ICAgfQo+PiAgIEVYUE9S VF9TWU1CT0xfR1BMKGRtYV9idWZfZGV0YWNoKTsKPj4gICAKPj4gKy8qKgo+PiArICogZG1hX2J1 Zl9waW4gLSBMb2NrIGRvd24gdGhlIERNQS1idWYKPj4gKyAqCj4+ICsgKiBAYXR0YWNoOglbaW5d CWF0dGFjaG1lbnQgd2hpY2ggc2hvdWxkIGJlIHBpbm5lZAo+PiArICoKPj4gKyAqIFJldHVybnM6 Cj4+ICsgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPj4g KyAqLwo+PiAraW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFj aCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmID0gYXR0YWNoLT5kbWFidWY7Cj4+ ICsJaW50IHJldCA9IDA7Cj4+ICsKPj4gKwlyZXNlcnZhdGlvbl9vYmplY3RfYXNzZXJ0X2hlbGQo ZG1hYnVmLT5yZXN2KTsKPj4gKwo+PiArCWlmIChkbWFidWYtPm9wcy0+cGluKQo+PiArCQlyZXQg PSBkbWFidWYtPm9wcy0+cGluKGF0dGFjaCk7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+ PiArRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9waW4pOwo+PiArCj4+ICsvKioKPj4gKyAqIGRt YV9idWZfdW5waW4gLSBSZW1vdmUgbG9jayBmcm9tIERNQS1idWYKPj4gKyAqCj4+ICsgKiBAYXR0 YWNoOglbaW5dCWF0dGFjaG1lbnQgd2hpY2ggc2hvdWxkIGJlIHVucGlubmVkCj4+ICsgKi8KPj4g K3ZvaWQgZG1hX2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4+ ICt7Cj4+ICsJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiA9IGF0dGFjaC0+ZG1hYnVmOwo+PiArCj4+ ICsJcmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKGRtYWJ1Zi0+cmVzdik7Cj4+ICsKPj4g KwlpZiAoZG1hYnVmLT5vcHMtPnVucGluKQo+PiArCQlkbWFidWYtPm9wcy0+dW5waW4oYXR0YWNo KTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfdW5waW4pOwo+PiArCj4+ICAg LyoqCj4+ICAgICogZG1hX2J1Zl9tYXBfYXR0YWNobWVudCAtIFJldHVybnMgdGhlIHNjYXR0ZXJs aXN0IHRhYmxlIG9mIHRoZSBhdHRhY2htZW50Owo+PiAgICAqIG1hcHBlZCBpbnRvIF9kZXZpY2Vf IGFkZHJlc3Mgc3BhY2UuIElzIGEgd3JhcHBlciBmb3IgbWFwX2RtYV9idWYoKSBvZiB0aGUKPj4g QEAgLTc0OSw2ICs4NjMsNyBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1l bnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+PiAgIAkJCQkJZW51bSBkbWFf ZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQo+PiAgIHsKPj4gICAJc3RydWN0IHNnX3RhYmxlICpz Z190YWJsZTsKPj4gKwlpbnQgcjsKPj4gICAKPj4gICAJbWlnaHRfc2xlZXAoKTsKPj4gICAKPj4g QEAgLTc2NywxMCArODgyLDMxIEBAIHN0cnVjdCBzZ190YWJsZSAqZG1hX2J1Zl9tYXBfYXR0YWNo bWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4+ICAgCQlyZXR1cm4gYXR0 YWNoLT5zZ3Q7Cj4+ICAgCX0KPj4gICAKPj4gKwlpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5 bmFtaWMoYXR0YWNoKSkgewo+PiArCQlyZXNlcnZhdGlvbl9vYmplY3RfYXNzZXJ0X2hlbGQoYXR0 YWNoLT5kbWFidWYtPnJlc3YpOwo+PiArCj4+ICsJfSBlbHNlIGlmIChkbWFfYnVmX2lzX2R5bmFt aWMoYXR0YWNoLT5kbWFidWYpKSB7Cj4+ICsJCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKGF0dGFj aC0+ZG1hYnVmLT5yZXN2LCBOVUxMKTsKPj4gKwkJciA9IGRtYV9idWZfcGluKGF0dGFjaCk7Cj4+ ICsJCWlmIChyKSB7Cj4+ICsJCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1h YnVmLT5yZXN2KTsKPj4gKwkJCXJldHVybiBFUlJfUFRSKHIpOwo+PiArCQl9Cj4+ICsJfSBlbHNl IHsKPj4gKwkJbWlnaHRfbG9jaygmYXR0YWNoLT5kbWFidWYtPnJlc3YtPmxvY2suYmFzZSk7Cj4+ ICsJfQo+PiArCj4+ICAgCXNnX3RhYmxlID0gYXR0YWNoLT5kbWFidWYtPm9wcy0+bWFwX2RtYV9i dWYoYXR0YWNoLCBkaXJlY3Rpb24pOwo+PiAgIAlpZiAoIXNnX3RhYmxlKQo+PiAgIAkJc2dfdGFi bGUgPSBFUlJfUFRSKC1FTk9NRU0pOwo+PiAgIAo+PiArCWlmICghZG1hX2J1Zl9hdHRhY2htZW50 X2lzX2R5bmFtaWMoYXR0YWNoKSAmJgo+PiArCSAgICBkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNo LT5kbWFidWYpKSB7Cj4+ICsJCWlmIChJU19FUlIoc2dfdGFibGUpKQo+PiArCQkJZG1hX2J1Zl91 bnBpbihhdHRhY2gpOwo+PiArCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1h YnVmLT5yZXN2KTsKPj4gKwl9Cj4+ICsKPj4gICAJaWYgKCFJU19FUlIoc2dfdGFibGUpICYmIGF0 dGFjaC0+ZG1hYnVmLT5vcHMtPmNhY2hlX3NndF9tYXBwaW5nKSB7Cj4+ICAgCQlhdHRhY2gtPnNn dCA9IHNnX3RhYmxlOwo+PiAgIAkJYXR0YWNoLT5kaXIgPSBkaXJlY3Rpb247Cj4+IEBAIC04MDIs MTAgKzkzOCw0MyBAQCB2b2lkIGRtYV9idWZfdW5tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2gsCj4+ICAgCWlmIChhdHRhY2gtPnNndCA9PSBzZ190YWJsZSkK Pj4gICAJCXJldHVybjsKPj4gICAKPj4gKwlpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFt aWMoYXR0YWNoKSkKPj4gKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKGF0dGFjaC0+ ZG1hYnVmLT5yZXN2KTsKPj4gKwllbHNlIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5k bWFidWYpKQo+PiArCQlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVz diwgTlVMTCk7Cj4+ICsJZWxzZQo+PiArCQltaWdodF9sb2NrKCZhdHRhY2gtPmRtYWJ1Zi0+cmVz di0+bG9jay5iYXNlKTsKPj4gKwo+PiAgIAlhdHRhY2gtPmRtYWJ1Zi0+b3BzLT51bm1hcF9kbWFf YnVmKGF0dGFjaCwgc2dfdGFibGUsIGRpcmVjdGlvbik7Cj4+ICsKPj4gKwlpZiAoZG1hX2J1Zl9p c19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSAmJgo+PiArCSAgICAhZG1hX2J1Zl9hdHRhY2htZW50 X2lzX2R5bmFtaWMoYXR0YWNoKSkgewo+PiArCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7Cj4+ICsJ CXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+PiArCX0K Pj4gICB9Cj4+ICAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KTsK Pj4gICAKPj4gKy8qKgo+PiArICogZG1hX2J1Zl9tb3ZlX25vdGlmeSAtIG5vdGlmeSBhdHRhY2ht ZW50cyB0aGF0IERNQS1idWYgaXMgbW92aW5nCj4+ICsgKgo+PiArICogQGRtYWJ1ZjoJW2luXQli dWZmZXIgd2hpY2ggaXMgbW92aW5nCj4+ICsgKgo+PiArICogSW5mb3JtcyBhbGwgYXR0YWNobWVu c3QgdGhhdCB0aGV5IG5lZWQgdG8gZGVzdHJveSBhbmQgcmVjcmVhdGVkIGFsbCB0aGVpcgo+PiAr ICogbWFwcGluZ3MuCj4+ICsgKi8KPj4gK3ZvaWQgZG1hX2J1Zl9tb3ZlX25vdGlmeShzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmKQo+PiArewo+PiArCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0 dGFjaDsKPj4gKwo+PiArCXJlc2VydmF0aW9uX29iamVjdF9hc3NlcnRfaGVsZChkbWFidWYtPnJl c3YpOwo+PiArCj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShhdHRhY2gsICZkbWFidWYtPmF0dGFj aG1lbnRzLCBub2RlKQo+PiArCQlpZiAoYXR0YWNoLT5pbXBvcnRlcl9vcHMgJiYgYXR0YWNoLT5p bXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KQo+PiArCQkJYXR0YWNoLT5pbXBvcnRlcl9vcHMtPm1v dmVfbm90aWZ5KGF0dGFjaCk7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX21v dmVfbm90aWZ5KTsKPj4gKwo+PiAgIC8qKgo+PiAgICAqIERPQzogY3B1IGFjY2Vzcwo+PiAgICAq Cj4+IEBAIC0xMjI1LDEwICsxMzk0LDEyIEBAIHN0YXRpYyBpbnQgZG1hX2J1Zl9kZWJ1Z19zaG93 KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKQo+PiAgIAkJc2VxX3B1dHMocywgIlx0 QXR0YWNoZWQgRGV2aWNlczpcbiIpOwo+PiAgIAkJYXR0YWNoX2NvdW50ID0gMDsKPj4gICAKPj4g KwkJcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2soYnVmX29iai0+cmVzdiwgTlVMTCk7Cj4+ICAgCQls aXN0X2Zvcl9lYWNoX2VudHJ5KGF0dGFjaF9vYmosICZidWZfb2JqLT5hdHRhY2htZW50cywgbm9k ZSkgewo+PiAgIAkJCXNlcV9wcmludGYocywgIlx0JXNcbiIsIGRldl9uYW1lKGF0dGFjaF9vYmot PmRldikpOwo+PiAgIAkJCWF0dGFjaF9jb3VudCsrOwo+PiAgIAkJfQo+PiArCQlyZXNlcnZhdGlv bl9vYmplY3RfdW5sb2NrKGJ1Zl9vYmotPnJlc3YpOwo+PiAgIAo+PiAgIAkJc2VxX3ByaW50Zihz LCAiVG90YWwgJWQgZGV2aWNlcyBhdHRhY2hlZFxuXG4iLAo+PiAgIAkJCQlhdHRhY2hfY291bnQp Owo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4 L2RtYS1idWYuaAo+PiBpbmRleCAwMWFkNWI5NDJhNmYuLmNjYWQyZmMxZjY0MCAxMDA2NDQKPj4g LS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEt YnVmLmgKPj4gQEAgLTkyLDE0ICs5Miw0MCBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+PiAgIAkg Ki8KPj4gICAJdm9pZCAoKmRldGFjaCkoc3RydWN0IGRtYV9idWYgKiwgc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqKTsKPj4gICAKPj4gKwkvKioKPj4gKwkgKiBAcGluOgo+PiArCSAqCj4+ICsJ ICogVGhpcyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl9waW4gYW5kIGxldHMgdGhlIGV4cG9ydGVyIGtu b3cgdGhhdCB0aGUKPj4gKwkgKiBETUEtYnVmIGNhbid0IGJlIG1vdmVkIGFueSBtb3JlLgo+PiAr CSAqCj4+ICsJICogVGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBs b2NrZWQuCj4+ICsJICoKPj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLgo+PiArCSAq Cj4+ICsJICogUmV0dXJuczoKPj4gKwkgKgo+PiArCSAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+PiArCSAqLwo+PiArCWludCAoKnBpbikoc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEB1bnBpbjoK Pj4gKwkgKgo+PiArCSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5waW4gYW5kIGxldHMg dGhlIGV4cG9ydGVyIGtub3cgdGhhdCB0aGUKPj4gKwkgKiBETUEtYnVmIGNhbiBiZSBtb3ZlZCBh Z2Fpbi4KPj4gKwkgKgo+PiArCSAqIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVz diBvYmplY3QgbG9ja2VkLgo+PiArCSAqCj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25h bC4KPj4gKwkgKi8KPj4gKwl2b2lkICgqdW5waW4pKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KmF0dGFjaCk7Cj4+ICsKPj4gICAJLyoqCj4+ICAgCSAqIEBtYXBfZG1hX2J1ZjoKPj4gICAJICoK Pj4gICAJICogVGhpcyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl9tYXBfYXR0YWNobWVudCgpIGFuZCBp cyB1c2VkIHRvIG1hcCBhCj4+ICAgCSAqIHNoYXJlZCAmZG1hX2J1ZiBpbnRvIGRldmljZSBhZGRy ZXNzIHNwYWNlLCBhbmQgaXQgaXMgbWFuZGF0b3J5LiBJdAo+PiAtCSAqIGNhbiBvbmx5IGJlIGNh bGxlZCBpZiBAYXR0YWNoIGhhcyBiZWVuIGNhbGxlZCBzdWNjZXNzZnVsbHkuIFRoaXMKPj4gLQkg KiBlc3NlbnRpYWxseSBwaW5zIHRoZSBETUEgYnVmZmVyIGludG8gcGxhY2UsIGFuZCBpdCBjYW5u b3QgYmUgbW92ZWQKPj4gLQkgKiBhbnkgbW9yZQo+PiArCSAqIGNhbiBvbmx5IGJlIGNhbGxlZCBp ZiBAYXR0YWNoIGhhcyBiZWVuIGNhbGxlZCBzdWNjZXNzZnVsbHkuCj4+ICAgCSAqCj4+ICAgCSAq IFRoaXMgY2FsbCBtYXkgc2xlZXAsIGUuZy4gd2hlbiB0aGUgYmFja2luZyBzdG9yYWdlIGZpcnN0 IG5lZWRzIHRvIGJlCj4+ICAgCSAqIGFsbG9jYXRlZCwgb3IgbW92ZWQgdG8gYSBsb2NhdGlvbiBz dWl0YWJsZSBmb3IgYWxsIGN1cnJlbnRseSBhdHRhY2hlZAo+PiBAQCAtMTIwLDYgKzE0Niw5IEBA IHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4+ICAgCSAqIGFueSBvdGhlciBraW5kIG9mIHNoYXJpbmcg dGhhdCB0aGUgZXhwb3J0ZXIgbWlnaHQgd2lzaCB0byBtYWtlCj4+ICAgCSAqIGF2YWlsYWJsZSB0 byBidWZmZXItdXNlcnMuCj4+ICAgCSAqCj4+ICsJICogVGhpcyBpcyBhbHdheXMgY2FsbGVkIHdp dGggdGhlIGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkIHdoZW4KPj4gKwkgKiB0aGUgcGluL3Vu cGluIGNhbGxiYWNrcyBhcmUgaW1wbGVtZW50ZWQuCj4+ICsJICoKPj4gICAJICogUmV0dXJuczoK Pj4gICAJICoKPj4gICAJICogQSAmc2dfdGFibGUgc2NhdHRlciBsaXN0IG9mIG9yIHRoZSBiYWNr aW5nIHN0b3JhZ2Ugb2YgdGhlIERNQSBidWZmZXIsCj4+IEBAIC0xMzcsOSArMTY2LDYgQEAgc3Ry dWN0IGRtYV9idWZfb3BzIHsKPj4gICAJICoKPj4gICAJICogVGhpcyBpcyBjYWxsZWQgYnkgZG1h X2J1Zl91bm1hcF9hdHRhY2htZW50KCkgYW5kIHNob3VsZCB1bm1hcCBhbmQKPj4gICAJICogcmVs ZWFzZSB0aGUgJnNnX3RhYmxlIGFsbG9jYXRlZCBpbiBAbWFwX2RtYV9idWYsIGFuZCBpdCBpcyBt YW5kYXRvcnkuCj4+IC0JICogSXQgc2hvdWxkIGFsc28gdW5waW4gdGhlIGJhY2tpbmcgc3RvcmFn ZSBpZiB0aGlzIGlzIHRoZSBsYXN0IG1hcHBpbmcKPj4gLQkgKiBvZiB0aGUgRE1BIGJ1ZmZlciwg aXQgdGhlIGV4cG9ydGVyIHN1cHBvcnRzIGJhY2tpbmcgc3RvcmFnZQo+PiAtCSAqIG1pZ3JhdGlv bi4KPj4gICAJICovCj4+ICAgCXZvaWQgKCp1bm1hcF9kbWFfYnVmKShzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICosCj4+ICAgCQkJICAgICAgc3RydWN0IHNnX3RhYmxlICosCj4+IEBAIC0zMzAs NiArMzU2LDM0IEBAIHN0cnVjdCBkbWFfYnVmIHsKPj4gICAJfSBjYl9leGNsLCBjYl9zaGFyZWQ7 Cj4+ICAgfTsKPj4gICAKPj4gKy8qKgo+PiArICogc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyAt IGltcG9ydGVyIG9wZXJhdGlvbnMgZm9yIGFuIGF0dGFjaG1lbnQKPj4gKyAqIEBtb3ZlX25vdGlm eTogW29wdGlvbmFsXSBub3RpZmljYXRpb24gdGhhdCB0aGUgRE1BLWJ1ZiBpcyBtb3ZpbmcKPj4g KyAqCj4+ICsgKiBBdHRhY2htZW50IG9wZXJhdGlvbnMgaW1wbGVtZW50ZWQgYnkgdGhlIGltcG9y dGVyLgo+PiArICovCj4+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzIHsKPj4gKwkvKioKPj4g KwkgKiBAbW92ZV9ub3RpZnkKPj4gKwkgKgo+PiArCSAqIElmIHRoaXMgY2FsbGJhY2sgaXMgcHJv dmlkZWQgdGhlIGZyYW1ld29yayBjYW4gYXZvaWQgcGlubmluZyB0aGUKPj4gKwkgKiBiYWNraW5n IHN0b3JlIHdoaWxlIG1hcHBpbmdzIGV4aXN0cy4KPj4gKwkgKgo+PiArCSAqIFRoaXMgY2FsbGJh Y2sgaXMgY2FsbGVkIHdpdGggdGhlIGxvY2sgb2YgdGhlIHJlc2VydmF0aW9uIG9iamVjdAo+PiAr CSAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgZG1hX2J1ZiBoZWxkIGFuZCB0aGUgbWFwcGluZyBmdW5j dGlvbiBtdXN0IGJlCj4+ICsJICogY2FsbGVkIHdpdGggdGhpcyBsb2NrIGhlbGQgYXMgd2VsbC4g VGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gbWFwcGluZwo+PiArCSAqIGlzIGNyZWF0ZWQgY29uY3Vy cmVudGx5IHdpdGggYW4gb25nb2luZyBtb3ZlIG9wZXJhdGlvbi4KPj4gKwkgKgo+PiArCSAqIE1h cHBpbmdzIHN0YXkgdmFsaWQgYW5kIGFyZSBub3QgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBj YWxsYmFjay4KPj4gKwkgKiBCdXQgdGhlIERNQS1idWYgY2FuIG5vdyBiZSBpbiBhIGRpZmZlcmVu dCBwaHlzaWNhbCBsb2NhdGlvbiwgc28gYWxsCj4+ICsJICogbWFwcGluZ3Mgc2hvdWxkIGJlIGRl c3Ryb3llZCBhbmQgcmUtY3JlYXRlZCBhcyBzb29uIGFzIHBvc3NpYmxlLgo+PiArCSAqCj4+ICsJ ICogTmV3IG1hcHBpbmdzIGNhbiBiZSBjcmVhdGVkIGFmdGVyIHRoaXMgY2FsbGJhY2sgcmV0dXJu cywgYW5kIHdpbGwKPj4gKwkgKiBwb2ludCB0byB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZSBETUEt YnVmLgo+PiArCSAqLwo+PiArCXZvaWQgKCptb3ZlX25vdGlmeSkoc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNoKTsKPj4gK307Cj4+ICsKPj4gICAvKioKPj4gICAgKiBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50IC0gaG9sZHMgZGV2aWNlLWJ1ZmZlciBhdHRhY2htZW50IGRhdGEKPj4g ICAgKiBAZG1hYnVmOiBidWZmZXIgZm9yIHRoaXMgYXR0YWNobWVudC4KPj4gQEAgLTMzOCw2ICsz OTIsOCBAQCBzdHJ1Y3QgZG1hX2J1ZiB7Cj4+ICAgICogQHNndDogY2FjaGVkIG1hcHBpbmcuCj4+ ICAgICogQGRpcjogZGlyZWN0aW9uIG9mIGNhY2hlZCBtYXBwaW5nLgo+PiAgICAqIEBwcml2OiBl eHBvcnRlciBzcGVjaWZpYyBhdHRhY2htZW50IGRhdGEuCj4+ICsgKiBAaW1wb3J0ZXJfb3BzOiBp bXBvcnRlciBvcGVyYXRpb25zIGZvciB0aGlzIGF0dGFjaG1lbnQuCj4+ICsgKiBAaW1wb3J0ZXJf cHJpdjogaW1wb3J0ZXIgc3BlY2lmaWMgYXR0YWNobWVudCBkYXRhLgo+PiAgICAqCj4+ICAgICog VGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQgaW5mb3JtYXRpb24gYmV0d2VlbiB0 aGUgZG1hX2J1ZiBidWZmZXIKPj4gICAgKiBhbmQgaXRzIHVzZXIgZGV2aWNlKHMpLiBUaGUgbGlz dCBjb250YWlucyBvbmUgYXR0YWNobWVudCBzdHJ1Y3QgcGVyIGRldmljZQo+PiBAQCAtMzU1LDYg KzQxMSw5IEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgewo+PiAgIAlzdHJ1Y3Qgc2dfdGFi bGUgKnNndDsKPj4gICAJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyOwo+PiAgIAl2b2lkICpw cml2Owo+PiArCj4+ICsJY29uc3Qgc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyAqaW1wb3J0ZXJf b3BzOwo+PiArCXZvaWQgKmltcG9ydGVyX3ByaXY7Cj4+ICAgfTsKPj4gICAKPj4gICAvKioKPj4g QEAgLTQwNSwxMCArNDY0LDQyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfZG1hX2J1ZihzdHJ1 Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+PiAgIAlnZXRfZmlsZShkbWFidWYtPmZpbGUpOwo+PiAgIH0K Pj4gICAKPj4gKy8qKgo+PiArICogZG1hX2J1Zl9pc19keW5hbWljIC0gY2hlY2sgaWYgYSBETUEt YnVmIHVzZXMgZHluYW1pYyBtYXBwaW5ncy4KPj4gKyAqIEBkbWFidWY6IHRoZSBETUEtYnVmIHRv IGNoZWNrCj4+ICsgKgo+PiArICogUmV0dXJucyB0cnVlIGlmIGEgRE1BLWJ1ZiBleHBvcnRlciB3 YW50cyB0byBjcmVhdGUgZHluYW1pYyBzZyB0YWJsZSBtYXBwaW5ncwo+PiArICogZm9yIGVhY2gg YXR0YWNobWVudC4gRmFsc2UgaWYgb25seSBhIHNpbmdsZSBzdGF0aWMgc2cgdGFibGUgc2hvdWxk IGJlIHVzZWQuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBkbWFfYnVmX2lzX2R5bmFt aWMoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKPj4gK3sKPj4gKwlyZXR1cm4gISFkbWFidWYtPm9w cy0+cGluOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGRtYV9idWZfYXR0YWNobWVudF9pc19k eW5hbWljIC0gY2hlY2sgaWYgYSBETUEtYnVmIGF0dGFjaG1lbnQgdXNlcyBkeW5hbWljCj4+ICsg KiBtYXBwaW5zZwo+PiArICogQGF0dGFjaDogdGhlIERNQS1idWYgYXR0YWNobWVudCB0byBjaGVj awo+PiArICoKPj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBhIERNQS1idWYgaW1wb3J0ZXIgd2FudHMg dG8gdXNlIGR5bmFtaWMgc2cgdGFibGUgbWFwcGluZ3MgYW5kCj4+ICsgKiBjYWxscyB0aGUgbWFw L3VubWFwIGZ1bmN0aW9ucyB3aXRoIHRoZSByZXNlcnZhdGlvbiBvYmplY3QgbG9ja2VkLgo+PiAr ICovCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wKPj4gK2RtYV9idWZfYXR0YWNobWVudF9pc19keW5h bWljKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPj4gK3sKPj4gKwlyZXR1cm4g YXR0YWNoLT5pbXBvcnRlcl9vcHMgJiYgYXR0YWNoLT5pbXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5 Owo+PiArfQo+PiArCj4+ICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRh Y2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPj4gLQkJCQkJCQlzdHJ1Y3QgZGV2aWNlICpkZXYp Owo+PiArCQkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldik7Cj4+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50ICoKPj4gK2RtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1 Ziwgc3RydWN0IGRldmljZSAqZGV2LAo+PiArCQkgICAgICAgY29uc3Qgc3RydWN0IGRtYV9idWZf YXR0YWNoX29wcyAqaW1wb3J0ZXJfb3BzLAo+PiArCQkgICAgICAgdm9pZCAqaW1wb3J0ZXJfcHJp dik7Cj4+ICAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+PiAt CQkJCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOwo+PiArCQkgICAg c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPj4gK2ludCBkbWFfYnVmX3Bpbihz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpOwo+PiArdm9pZCBkbWFfYnVmX3VucGlu KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4+ICAgCj4+ICAgc3RydWN0IGRt YV9idWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0IHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvICpl eHBfaW5mbyk7Cj4+ICAgCj4+IEBAIC00MjAsNiArNTExLDcgQEAgc3RydWN0IHNnX3RhYmxlICpk bWFfYnVmX21hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwKPj4gICAJ CQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uKTsKPj4gICB2b2lkIGRtYV9idWZfdW5tYXBfYXR0 YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosIHN0cnVjdCBzZ190YWJsZSAqLAo+ PiAgIAkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4+ICt2b2lkIGRtYV9idWZfbW92ZV9u b3RpZnkoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpOwo+PiAgIGludCBkbWFfYnVmX2JlZ2luX2Nw dV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4+ICAgCQkJICAgICBlbnVtIGRtYV9k YXRhX2RpcmVjdGlvbiBkaXIpOwo+PiAgIGludCBkbWFfYnVmX2VuZF9jcHVfYWNjZXNzKHN0cnVj dCBkbWFfYnVmICpkbWFfYnVmLAo+PiAtLSAKPj4gMi4xNy4xCj4+Cj4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4