From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/4] dma-buf: change DMA-buf locking convention Date: Tue, 17 Sep 2019 14:31:50 +0200 Message-ID: <20190917123150.GM3958@phenom.ffwll.local> References: <20190829142917.13058-1-christian.koenig@amd.com> <20190829142917.13058-2-christian.koenig@amd.com> <20190903080522.GM2112@phenom.ffwll.local> <88f748d2-43de-ae2a-b895-40d8b3be5c78@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <88f748d2-43de-ae2a-b895-40d8b3be5c78@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: christian.koenig@amd.com Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMTYsIDIwMTkgYXQgMDI6MjM6MTNQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBQaW5nPyBBbnkgZnVydGhlciBjb21tZW50IG9uIHRoaXMgb3IgY2FuJ3Qgd2Ug bWVyZ2UgYXQgbGVhc3QgdGhlIGxvY2tpbmcKPiBjaGFuZ2U/CgpJIHdhcyBhdCBwbHVtYmVycyAu Li4KPiAKPiBDaHJpc3RpYW4uCj4gCj4gQW0gMTEuMDkuMTkgdW0gMTI6NTMgc2NocmllYiBDaHJp c3RpYW4gS8O2bmlnOgo+ID4gQW0gMDMuMDkuMTkgdW0gMTA6MDUgc2NocmllYiBEYW5pZWwgVmV0 dGVyOgo+ID4gPiBPbiBUaHUsIEF1ZyAyOSwgMjAxOSBhdCAwNDoyOToxNFBNICswMjAwLCBDaHJp c3RpYW4gS8O2bmlnIHdyb3RlOgo+ID4gPiA+IFRoaXMgcGF0Y2ggaXMgYSBzdHJpcHBlZCBkb3du IHZlcnNpb24gb2YgdGhlIGxvY2tpbmcgY2hhbmdlcwo+ID4gPiA+IG5lY2Vzc2FyeSB0byBzdXBw b3J0IGR5bmFtaWMgRE1BLWJ1ZiBoYW5kbGluZy4KPiA+ID4gPiAKPiA+ID4gPiBGb3IgY29tcGF0 aWJpbGl0eSB3ZSBjYWNoZSB0aGUgRE1BLWJ1ZiBtYXBwaW5nIGFzIHNvb24gYXMKPiA+ID4gPiBl eHBvcnRlci9pbXBvcnRlciBkaXNhZ3JlZSBvbiB0aGUgZHluYW1pYyBoYW5kbGluZy4KPiA+ID4g PiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29l bmlnQGFtZC5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gwqAgZHJpdmVycy9kbWEtYnVmL2RtYS1i dWYuYyB8IDkwCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t Cj4gPiA+ID4gwqAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmjCoMKgIHwgNTEgKysrKysrKysrKysr KysrKysrKysrLQo+ID4gPiA+IMKgIDIgZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1h LWJ1Zi9kbWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gPiA+ID4gaW5kZXgg NDMzZDkxZDcxMGU0Li42NTA1MmQ1MjYwMmIgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9k bWEtYnVmL2RtYS1idWYuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMK PiA+ID4gPiBAQCAtNTI1LDYgKzUyNSwxMCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBv cnQoY29uc3Qgc3RydWN0Cj4gPiA+ID4gZG1hX2J1Zl9leHBvcnRfaW5mbyAqZXhwX2luZm8pCj4g PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gPiA+ IMKgwqDCoMKgwqAgfQo+ID4gPiA+IMKgICvCoMKgwqAgaWYgKFdBUk5fT04oZXhwX2luZm8tPm9w cy0+Y2FjaGVfc2d0X21hcHBpbmcgJiYKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl eHBfaW5mby0+b3BzLT5keW5hbWljX21hcHBpbmcpKQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiA+ID4gPiArCj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAo IXRyeV9tb2R1bGVfZ2V0KGV4cF9pbmZvLT5vd25lcikpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwo+ID4gPiA+IMKgIEBAIC02NDUsMTAgKzY0OSwx MSBAQCB2b2lkIGRtYV9idWZfcHV0KHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCj4gPiA+ID4gwqAg RVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQpOwo+ID4gPiA+IMKgIMKgIC8qKgo+ID4gPiA+ IC0gKiBkbWFfYnVmX2F0dGFjaCAtIEFkZCB0aGUgZGV2aWNlIHRvIGRtYV9idWYncyBhdHRhY2ht ZW50cwo+ID4gPiA+IGxpc3Q7IG9wdGlvbmFsbHksCj4gPiA+ID4gKyAqIGRtYV9idWZfZHluYW1p Y19hdHRhY2ggLSBBZGQgdGhlIGRldmljZSB0byBkbWFfYnVmJ3MKPiA+ID4gPiBhdHRhY2htZW50 cyBsaXN0OyBvcHRpb25hbGx5LAo+ID4gPiA+IMKgwqAgKiBjYWxscyBhdHRhY2goKSBvZiBkbWFf YnVmX29wcyB0byBhbGxvdyBkZXZpY2Utc3BlY2lmaWMKPiA+ID4gPiBhdHRhY2ggZnVuY3Rpb25h bGl0eQo+ID4gPiA+IC0gKiBAZG1hYnVmOsKgwqDCoCBbaW5dwqDCoMKgIGJ1ZmZlciB0byBhdHRh Y2ggZGV2aWNlIHRvLgo+ID4gPiA+IC0gKiBAZGV2OsKgwqDCoCBbaW5dwqDCoMKgIGRldmljZSB0 byBiZSBhdHRhY2hlZC4KPiA+ID4gPiArICogQGRtYWJ1ZjrCoMKgwqDCoMKgwqDCoCBbaW5dwqDC oMKgIGJ1ZmZlciB0byBhdHRhY2ggZGV2aWNlIHRvLgo+ID4gPiA+ICsgKiBAZGV2OsKgwqDCoMKg wqDCoMKgIFtpbl3CoMKgwqAgZGV2aWNlIHRvIGJlIGF0dGFjaGVkLgo+ID4gPiA+ICsgKiBAZHlu YW1pY19tYXBwaW5nOsKgwqDCoCBbaW5dwqDCoMKgIGNhbGxpbmcgY29udmVudGlvbiBmb3IgbWFw L3VubWFwCj4gPiA+ID4gwqDCoCAqCj4gPiA+ID4gwqDCoCAqIFJldHVybnMgc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCBwb2ludGVyIGZvciB0aGlzCj4gPiA+ID4gYXR0YWNobWVudC4gQXR0YWNo bWVudHMKPiA+ID4gPiDCoMKgICogbXVzdCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgZG1hX2J1 Zl9kZXRhY2goKS4KPiA+ID4gPiBAQCAtNjYyLDggKzY2Nyw5IEBAIEVYUE9SVF9TWU1CT0xfR1BM KGRtYV9idWZfcHV0KTsKPiA+ID4gPiDCoMKgICogYWNjZXNzaWJsZSB0byBAZGV2LCBhbmQgY2Fu bm90IGJlIG1vdmVkIHRvIGEgbW9yZSBzdWl0YWJsZQo+ID4gPiA+IHBsYWNlLiBUaGlzIGlzCj4g PiA+ID4gwqDCoCAqIGluZGljYXRlZCB3aXRoIHRoZSBlcnJvciBjb2RlIC1FQlVTWS4KPiA+ID4g PiDCoMKgICovCj4gPiA+ID4gLXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0 YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiA+ID4gK3N0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKgo+ID4gPiA+ICtkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKHN0 cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGR5bmFtaWNfbWFwcGluZykKPiA+ID4gPiDCoCB7 Cj4gPiA+ID4gwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4g PiA+ID4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+ID4gPiA+IEBAIC02NzcsNiArNjgzLDcgQEAgc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudAo+ID4gPiA+ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmLAo+ID4gPiA+IMKgIMKgwqDCoMKgwqAgYXR0YWNoLT5kZXYgPSBkZXY7Cj4g PiA+ID4gwqDCoMKgwqDCoCBhdHRhY2gtPmRtYWJ1ZiA9IGRtYWJ1ZjsKPiA+ID4gPiArwqDCoMKg IGF0dGFjaC0+ZHluYW1pY19tYXBwaW5nID0gZHluYW1pY19tYXBwaW5nOwo+ID4gPiA+IMKgIMKg wqDCoMKgwqAgbXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsKPiA+ID4gPiDCoCBAQCAtNjg1LDE2 ICs2OTIsNjQgQEAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudAo+ID4gPiA+ICpkbWFfYnVmX2F0 dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAocmV0KQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2F0dGFj aDsKPiA+ID4gPiDCoMKgwqDCoMKgIH0KPiA+ID4gPiArwqDCoMKgIGRtYV9yZXN2X2xvY2soZG1h YnVmLT5yZXN2LCBOVUxMKTsKPiA+ID4gPiDCoMKgwqDCoMKgIGxpc3RfYWRkKCZhdHRhY2gtPm5v ZGUsICZkbWFidWYtPmF0dGFjaG1lbnRzKTsKPiA+ID4gPiArwqDCoMKgIGRtYV9yZXN2X3VubG9j ayhkbWFidWYtPnJlc3YpOwo+ID4gPiA+IMKgIMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZkbWFi dWYtPmxvY2spOwo+ID4gPiA+IMKgICvCoMKgwqAgLyogV2hlbiBlaXRoZXIgdGhlIGltcG9ydGVy IG9yIHRoZSBleHBvcnRlciBjYW4ndCBoYW5kbGUgZHluYW1pYwo+ID4gPiA+ICvCoMKgwqDCoCAq IG1hcHBpbmdzIHdlIGNhY2hlIHRoZSBtYXBwaW5nIGhlcmUgdG8gYXZvaWQgaXNzdWVzIHdpdGgg dGhlCj4gPiA+ID4gK8KgwqDCoMKgICogcmVzZXJ2YXRpb24gb2JqZWN0IGxvY2suCj4gPiA+ID4g K8KgwqDCoMKgICovCj4gPiA+ID4gK8KgwqDCoCBpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5 bmFtaWMoYXR0YWNoKSAhPQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBkbWFfYnVmX2lzX2R5bmFt aWMoZG1hYnVmKSkgewo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNn dDsKPiA+ID4gPiArCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGlmIChkbWFfYnVmX2lzX2R5bmFt aWMoYXR0YWNoLT5kbWFidWYpKQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9y ZXN2X2xvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YsIE5VTEwpOwo+ID4gPiA+ICsKPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqAgc2d0ID0gZG1hYnVmLT5vcHMtPm1hcF9kbWFfYnVmKGF0dGFjaCwgRE1B X0JJRElSRUNUSU9OQUwpOwo+ID4gPiBOb3cgd2UncmUgYmFjayB0byBlbmZvcmNpbmcgRE1BX0JJ REksIHdoaWNoIHdvcmtzIG5pY2VseSBhcm91bmQgdGhlCj4gPiA+IGxvY2tpbmcgcGFpbiwgYnV0 IGFwcGFyZW50bHkgdXBzZXRzIHRoZSBhcm0tc29jIGZvbGtzIHdobyB3YW50IHRvCj4gPiA+IGNv bnRyb2wKPiA+ID4gdGhpcyBiZXR0ZXIuCj4gPiAKPiA+IFRha2UgYW5vdGhlciBsb29rIGF0IGRt YV9idWZfbWFwX2F0dGFjaG1lbnQoKSwgd2Ugc3RpbGwgdHJ5IHRvIGdldCB0aGUKPiA+IGNhY2hp bmcgdGhlcmUgZm9yIEFSTS4KPiA+IAo+ID4gV2hhdCB3ZSBkbyBoZXJlIGlzIHRvIGJpZGlyZWN0 aW9uYWxseSBtYXAgdGhlIGJ1ZmZlciB0byBhdm9pZCB0aGUKPiA+IGxvY2tpbmcgaHlkcmEgd2hl biBpbXBvcnRlciBhbmQgZXhwb3J0ZXIgZGlzYWdyZWUgb24gbG9ja2luZy4KPiA+IAo+ID4gU28g dGhlIEFSTSBmb2xrcyBjYW4gZWFzaWx5IGF2b2lkIHRoYXQgYnkgc3dpdGNoaW5nIHRvIGR5bmFt aWMgbG9ja2luZwo+ID4gZm9yIGJvdGguCgpTbyB5b3Ugc3RpbGwgYnJlYWsgdGhlIGNvbnRyYWN0 IGJldHdlZW4gaW1wb3J0ZXIgYW5kIGV4cG9ydGVyLCBleGNlcHQgbm90CmZvciBhbnl0aGluZyB0 aGF0J3MgcnVuIGluIGludGVsLWdmeC1jaSBzbyBhbGwgaXMgZ29vZD8KClRoZSBvdGhlciBpc3N1 ZSB3aXRoICJ3ZSBzb2x2ZSB0aGlzIHdpdGggY2FjaGluZyB0aGUgbWFwcGluZyI6IEN1cnJlbnRs eQptYXAvdW5tYXAgZmx1c2ggKGF0IGxlYXN0IG9uIGFybSwgYXQgbGVhc3Qgb24gY2FzZXMgd2hl cmUgaXQgbWF0dGVycykuIElmCnlvdSBqdXN0IHJldHVybiB0aGUgY2FjaGVkIHNnLCB0aGVuIHdl IGRvbid0IGRvIHRoZSBmbHVzaGluZyBhbnltb3JlLAp3aGljaCBtaWdodCBicmVhayBpbXBvcnRl cnMvZXhwb3J0ZXJzIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGp1c3QKZ2l2aW5nIHRoZW0g dGhlIHdyb25nIG1hcHBpbmcuIFRoZXJlJ3MgemVybyBkaWZmZXJlbmNlcyBiZXR3ZWVuIGEgQklE SSwKVE9fQ1BVLCBvciBUT19ERVZJQ0UgbWFwcGluZywgdGhlIG9ubHkgcGxhY2VzIHdoZXJlIHRo aXMgbWF0dGVycyBpcyBmb3IKY2FjaGUgZmx1c2hpbmcuCgpTbyBoZXJlJ3Mgc29tZXRoaW5nIHRo YXQgY291bGQgYWN0dWFsbHkgd29yazoKLSBXZSBjYWNoZSB0aGUgbWFwcGluZy4KLSBXZSBjYWNo ZSBhIGJpZGlyZWN0aW9uYWwgbWFwcGluZy4KLSBXZSBwdXQgdGhlIHJpZ2h0IGRtYV9zZ19zeW5j X2Zvcl9jcHUvZGV2aWNlIGNhbGxzIGluIHBsYWNlIGZvciBtYXAvdW5tYXAKICB0byBnaXZlIGN1 cnJlbnQgaW1wb3J0ZXJzL2V4cG9ydGVycyB0aGUgc2FtZSBiZWhhdmlvdXIgdGhleSdyZSB1c2Vk IHRvCiAgbm93LgoKQW5kIHllcyB0aGUgY2FjaGluZyB3ZSd2ZSBsaWZ0ZWQgbWlnaHQgaGF2ZSBi cm9rZW4gc29tZXRoaW5nIHNvbWV3aGVyZQphbHJlYWR5LiBCdXQgZ2VuZXJhbGx5IHlvdSBvbmx5 IGhlYXIgYWJvdXQgdGhhdCBsb25nIHRpbWUgYWZ0ZXIgYmVjYXVzZQphcm0gdmVuZG9ycyByb2xs IGZvcndhcmQgb25jZSBldmVyeSBmZXcgeWVhcnMuIE9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCi1E YW5pZWwKCj4gPiAKPiA+IFJlZ2FyZHMsCj4gPiBDaHJpc3RpYW4uCj4gPiAKPiA+ID4gVGhhdCdz IHdoeSB5b3VyIHByZXZpb3VzIHZlcnNpb24gbW92ZWQgdGhlIGNhY2hpbmcgaW50bwo+ID4gPiBt YXAvdW5tYXBfc2csIHdoaWNoIHJlc3VycmVjdGVkIHRoZSBsb2NraW5nIGh5ZHJhLgo+ID4gPiAK PiA+ID4gSSB0aGluayB3ZSdyZSBnb2luZyBhIGJpdCBpbiBjaXJjbGVzIGhlcmUsIGFuZCBJIGRv bid0IGhhdmUgYSBnb29kIGlkZWEKPiA+ID4gZWl0aGVyIDotLwo+ID4gPiAtRGFuaWVsCj4gPiA+ IAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIXNndCkKPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzZ3QgPSBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oCBpZiAoSVNfRVJSKHNndCkpIHsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQg PSBQVFJfRVJSKHNndCk7Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJf dW5sb2NrOwo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg IGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRtYV9yZXN2X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgIGF0dGFjaC0+c2d0ID0gc2d0Owo+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoCBhdHRhY2gtPmRpciA9IERNQV9CSURJUkVDVElPTkFMOwo+ID4gPiA+ICvCoMKgwqAg fQo+ID4gPiA+ICsKPiA+ID4gPiDCoMKgwqDCoMKgIHJldHVybiBhdHRhY2g7Cj4gPiA+ID4gwqAg wqAgZXJyX2F0dGFjaDoKPiA+ID4gPiDCoMKgwqDCoMKgIGtmcmVlKGF0dGFjaCk7Cj4gPiA+ID4g wqDCoMKgwqDCoCBtdXRleF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7Cj4gPiA+ID4gwqDCoMKgwqDC oCByZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gPiA+ICsKPiA+ID4gPiArZXJyX3VubG9jazoKPiA+ ID4gPiArwqDCoMKgIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJlc3Yp Owo+ID4gPiA+ICsKPiA+ID4gPiArwqDCoMKgIGRtYV9idWZfZGV0YWNoKGRtYWJ1ZiwgYXR0YWNo KTsKPiA+ID4gPiArwqDCoMKgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4gPiA+ID4gK30KPiA+ID4g PiArRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9keW5hbWljX2F0dGFjaCk7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsvKioKPiA+ID4gPiArICogZG1hX2J1Zl9hdHRhY2ggLSBXcmFwcGVyIGZvciBkbWFf YnVmX2R5bmFtaWNfYXR0YWNoCj4gPiA+ID4gKyAqIEBkbWFidWY6wqDCoMKgIFtpbl3CoMKgwqAg YnVmZmVyIHRvIGF0dGFjaCBkZXZpY2UgdG8uCj4gPiA+ID4gKyAqIEBkZXY6wqDCoMKgIFtpbl3C oMKgwqAgZGV2aWNlIHRvIGJlIGF0dGFjaGVkLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBXcmFw cGVyIHRvIGNhbGwgZG1hX2J1Zl9keW5hbWljX2F0dGFjaCgpIGZvciBkcml2ZXJzIHdoaWNoCj4g PiA+ID4gc3RpbGwgdXNlIGEgc3RhdGljCj4gPiA+ID4gKyAqIG1hcHBpbmcuCj4gPiA+ID4gKyAq Lwo+ID4gPiA+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1 Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRldmljZSAqZGV2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gK8Kg wqDCoCByZXR1cm4gZG1hX2J1Zl9keW5hbWljX2F0dGFjaChkbWFidWYsIGRldiwgZmFsc2UpOwo+ ID4gPiA+IMKgIH0KPiA+ID4gPiDCoCBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX2F0dGFjaCk7 Cj4gPiA+ID4gwqAgQEAgLTcxMSwxMSArNzY2LDIwIEBAIHZvaWQgZG1hX2J1Zl9kZXRhY2goc3Ry dWN0IGRtYV9idWYKPiA+ID4gPiAqZG1hYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2gpCj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAoV0FSTl9PTighZG1hYnVmIHx8ICFhdHRhY2gp KQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4gPiA+ID4gwqAgLcKgwqDCoCBp ZiAoYXR0YWNoLT5zZ3QpCj4gPiA+ID4gK8KgwqDCoCBpZiAoYXR0YWNoLT5zZ3QpIHsKPiA+ID4g PiArwqDCoMKgwqDCoMKgwqAgaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1Zikp Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX3Jlc3ZfbG9jayhhdHRhY2gtPmRt YWJ1Zi0+cmVzdiwgTlVMTCk7Cj4gPiA+ID4gKwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCBk bWFidWYtPm9wcy0+dW5tYXBfZG1hX2J1ZihhdHRhY2gsIGF0dGFjaC0+c2d0LCBhdHRhY2gtPmRp cik7Cj4gPiA+ID4gwqAgK8KgwqDCoMKgwqDCoMKgIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0 YWNoLT5kbWFidWYpKQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9yZXN2X3Vu bG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4gPiA+ID4gK8KgwqDCoCB9Cj4gPiA+ID4gKwo+ ID4gPiA+IMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsKPiA+ID4gPiArwqDC oMKgIGRtYV9yZXN2X2xvY2soZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiA+ID4gPiDCoMKgwqDCoMKg IGxpc3RfZGVsKCZhdHRhY2gtPm5vZGUpOwo+ID4gPiA+ICvCoMKgwqAgZG1hX3Jlc3ZfdW5sb2Nr KGRtYWJ1Zi0+cmVzdik7Cj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAoZG1hYnVmLT5vcHMtPmRldGFj aCkKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hYnVmLT5vcHMtPmRldGFjaChkbWFidWYs IGF0dGFjaCk7Cj4gPiA+ID4gwqAgQEAgLTc0OSw2ICs4MTMsOSBAQCBzdHJ1Y3Qgc2dfdGFibGUK PiA+ID4gPiAqZG1hX2J1Zl9tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICphdHRhY2gsCj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAoV0FSTl9PTighYXR0YWNoIHx8ICFhdHRh Y2gtPmRtYWJ1ZikpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1F SU5WQUwpOwo+ID4gPiA+IMKgICvCoMKgwqAgaWYgKGRtYV9idWZfYXR0YWNobWVudF9pc19keW5h bWljKGF0dGFjaCkpCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGRtYV9yZXN2X2Fzc2VydF9oZWxk KGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiA+ID4gPiArCj4gPiA+ID4gwqDCoMKgwqDCoCBpZiAo YXR0YWNoLT5zZ3QpIHsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIFR3byBtYXBwaW5ncyB3aXRoIGRpZmZlcmVudCBkaXJlY3Rpb25z IGZvciB0aGUgc2FtZQo+ID4gPiA+IEBAIC03NjEsNiArODI4LDkgQEAgc3RydWN0IHNnX3RhYmxl Cj4gPiA+ID4gKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoLAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gYXR0YWNoLT5zZ3Q7 Cj4gPiA+ID4gwqDCoMKgwqDCoCB9Cj4gPiA+ID4gwqAgK8KgwqDCoCBpZiAoZG1hX2J1Zl9pc19k eW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgZG1hX3Jlc3Zf YXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+ID4gPiA+ICsKPiA+ID4gPiDCoMKg wqDCoMKgIHNnX3RhYmxlID0gYXR0YWNoLT5kbWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNo LCBkaXJlY3Rpb24pOwo+ID4gPiA+IMKgwqDCoMKgwqAgaWYgKCFzZ190YWJsZSkKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqAgc2dfdGFibGUgPSBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gPiA+IEBA IC03OTMsOSArODYzLDE1IEBAIHZvaWQgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KHN0cnVjdAo+ ID4gPiA+IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4gPiA+IMKgwqDCoMKgwqAgaWYg KFdBUk5fT04oIWF0dGFjaCB8fCAhYXR0YWNoLT5kbWFidWYgfHwgIXNnX3RhYmxlKSkKPiA+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+ID4gPiA+IMKgICvCoMKgwqAgaWYgKGRtYV9i dWZfYXR0YWNobWVudF9pc19keW5hbWljKGF0dGFjaCkpCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg IGRtYV9yZXN2X2Fzc2VydF9oZWxkKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiA+ID4gPiArCj4g PiA+ID4gwqDCoMKgwqDCoCBpZiAoYXR0YWNoLT5zZ3QgPT0gc2dfdGFibGUpCj4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPiA+ID4gPiDCoCArwqDCoMKgIGlmIChkbWFfYnVmX2lz X2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBkbWFfcmVz dl9hc3NlcnRfaGVsZChhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4gPiA+ID4gKwo+ID4gPiA+IMKg wqDCoMKgwqAgYXR0YWNoLT5kbWFidWYtPm9wcy0+dW5tYXBfZG1hX2J1ZihhdHRhY2gsIHNnX3Rh YmxlLCBkaXJlY3Rpb24pOwo+ID4gPiA+IMKgIH0KPiA+ID4gPiDCoCBFWFBPUlRfU1lNQk9MX0dQ TChkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQpOwo+ID4gPiA+IEBAIC0xMjE5LDEwICsxMjk1LDEy IEBAIHN0YXRpYyBpbnQgZG1hX2J1Zl9kZWJ1Z19zaG93KHN0cnVjdAo+ID4gPiA+IHNlcV9maWxl ICpzLCB2b2lkICp1bnVzZWQpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHNlcV9wdXRzKHMs ICJcdEF0dGFjaGVkIERldmljZXM6XG4iKTsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgYXR0 YWNoX2NvdW50ID0gMDsKPiA+ID4gPiDCoCArwqDCoMKgwqDCoMKgwqAgZG1hX3Jlc3ZfbG9jayhi dWZfb2JqLT5yZXN2LCBOVUxMKTsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9mb3Jf ZWFjaF9lbnRyeShhdHRhY2hfb2JqLCAmYnVmX29iai0+YXR0YWNobWVudHMsCj4gPiA+ID4gbm9k ZSkgewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlcV9wcmludGYocywgIlx0 JXNcbiIsIGRldl9uYW1lKGF0dGFjaF9vYmotPmRldikpOwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGF0dGFjaF9jb3VudCsrOwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGRtYV9yZXN2X3VubG9jayhidWZfb2JqLT5yZXN2KTsK PiA+ID4gPiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihzLCAiVG90YWwgJWQgZGV2 aWNlcyBhdHRhY2hlZFxuXG4iLAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYXR0YWNoX2NvdW50KTsKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9k bWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+ID4gPiA+IGluZGV4IGVjMjEyY2Iy N2ZkYy4uYThmOGIyYjgxMmZkIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1h LWJ1Zi5oCj4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiA+ID4gPiBAQCAt NDIsNiArNDIsMTcgQEAgc3RydWN0IGRtYV9idWZfb3BzIHsKPiA+ID4gPiDCoMKgwqDCoMKgwqDC oCAqLwo+ID4gPiA+IMKgwqDCoMKgwqAgYm9vbCBjYWNoZV9zZ3RfbWFwcGluZzsKPiA+ID4gPiDC oCArwqDCoMKgIC8qKgo+ID4gPiA+ICvCoMKgwqDCoCAqIEBkeW5hbWljX21hcHBpbmc6Cj4gPiA+ ID4gK8KgwqDCoMKgICoKPiA+ID4gPiArwqDCoMKgwqAgKiBJZiB0cnVlIHRoZSBmcmFtZXdvcmsg bWFrZXMgc3VyZSB0aGF0IHRoZSBtYXAvdW5tYXBfZG1hX2J1Zgo+ID4gPiA+ICvCoMKgwqDCoCAq IGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aXRoIHRoZSBkbWFfcmVzdiBvYmplY3QgbG9j a2VkLgo+ID4gPiA+ICvCoMKgwqDCoCAqCj4gPiA+ID4gK8KgwqDCoMKgICogSWYgZmFsc2UgdGhl IGZyYW1ld29yayBtYWtlcyB1cmUgdGhhdCB0aGUgbWFwL3VubWFwX2RtYV9idWYKPiA+ID4gPiAr wqDCoMKgwqAgKiBjYWxsYmFja3MgYXJlIGFsd2F5cyBjYWxsZWQgd2l0aG91dCB0aGUgZG1hX3Jl c3Ygb2JqZWN0IGxvY2tlZC4KPiA+ID4gPiArwqDCoMKgwqAgKi8KPiA+ID4gPiArwqDCoMKgIGJv b2wgZHluYW1pY19tYXBwaW5nOwo+ID4gPiA+ICsKPiA+ID4gPiDCoMKgwqDCoMKgIC8qKgo+ID4g PiA+IMKgwqDCoMKgwqDCoCAqIEBhdHRhY2g6Cj4gPiA+ID4gwqDCoMKgwqDCoMKgICoKPiA+ID4g PiBAQCAtMTA5LDYgKzEyMCw5IEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4gPiA+ID4gwqDCoMKg wqDCoMKgICogYW55IG90aGVyIGtpbmQgb2Ygc2hhcmluZyB0aGF0IHRoZSBleHBvcnRlciBtaWdo dCB3aXNoIHRvIG1ha2UKPiA+ID4gPiDCoMKgwqDCoMKgwqAgKiBhdmFpbGFibGUgdG8gYnVmZmVy LXVzZXJzLgo+ID4gPiA+IMKgwqDCoMKgwqDCoCAqCj4gPiA+ID4gK8KgwqDCoMKgICogVGhpcyBp cyBhbHdheXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkIHdoZW4K PiA+ID4gPiArwqDCoMKgwqAgKiB0aGUgZHluYW1pY19tYXBwaW5nIGZsYWcgaXMgdHJ1ZS4KPiA+ ID4gPiArwqDCoMKgwqAgKgo+ID4gPiA+IMKgwqDCoMKgwqDCoCAqIFJldHVybnM6Cj4gPiA+ID4g wqDCoMKgwqDCoMKgICoKPiA+ID4gPiDCoMKgwqDCoMKgwqAgKiBBICZzZ190YWJsZSBzY2F0dGVy IGxpc3Qgb2Ygb3IgdGhlIGJhY2tpbmcgc3RvcmFnZSBvZgo+ID4gPiA+IHRoZSBETUEgYnVmZmVy LAo+ID4gPiA+IEBAIC0zMjcsNiArMzQxLDggQEAgc3RydWN0IGRtYV9idWYgewo+ID4gPiA+IMKg wqAgKiBAc2d0OiBjYWNoZWQgbWFwcGluZy4KPiA+ID4gPiDCoMKgICogQGRpcjogZGlyZWN0aW9u IG9mIGNhY2hlZCBtYXBwaW5nLgo+ID4gPiA+IMKgwqAgKiBAcHJpdjogZXhwb3J0ZXIgc3BlY2lm aWMgYXR0YWNobWVudCBkYXRhLgo+ID4gPiA+ICsgKiBAZHluYW1pY19tYXBwaW5nOiB0cnVlIGlm IGRtYV9idWZfbWFwL3VubWFwX2F0dGFjaG1lbnQoKSBpcwo+ID4gPiA+IGNhbGxlZCB3aXRoIHRo ZQo+ID4gPiA+ICsgKiBkbWFfcmVzdiBsb2NrIGhlbGQuCj4gPiA+ID4gwqDCoCAqCj4gPiA+ID4g wqDCoCAqIFRoaXMgc3RydWN0dXJlIGhvbGRzIHRoZSBhdHRhY2htZW50IGluZm9ybWF0aW9uIGJl dHdlZW4gdGhlCj4gPiA+ID4gZG1hX2J1ZiBidWZmZXIKPiA+ID4gPiDCoMKgICogYW5kIGl0cyB1 c2VyIGRldmljZShzKS4gVGhlIGxpc3QgY29udGFpbnMgb25lIGF0dGFjaG1lbnQKPiA+ID4gPiBz dHJ1Y3QgcGVyIGRldmljZQo+ID4gPiA+IEBAIC0zNDMsNiArMzU5LDcgQEAgc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCB7Cj4gPiA+ID4gwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7 Cj4gPiA+ID4gwqDCoMKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiA+ID4gPiDCoMKgwqDC oMKgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcjsKPiA+ID4gPiArwqDCoMKgIGJvb2wgZHlu YW1pY19tYXBwaW5nOwo+ID4gPiA+IMKgwqDCoMKgwqAgdm9pZCAqcHJpdjsKPiA+ID4gPiDCoCB9 Owo+ID4gPiA+IMKgIEBAIC0zOTQsMTAgKzQxMSwzOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0 X2RtYV9idWYoc3RydWN0Cj4gPiA+ID4gZG1hX2J1ZiAqZG1hYnVmKQo+ID4gPiA+IMKgwqDCoMKg wqAgZ2V0X2ZpbGUoZG1hYnVmLT5maWxlKTsKPiA+ID4gPiDCoCB9Cj4gPiA+ID4gwqAgKy8qKgo+ ID4gPiA+ICsgKiBkbWFfYnVmX2lzX2R5bmFtaWMgLSBjaGVjayBpZiBhIERNQS1idWYgdXNlcyBk eW5hbWljIG1hcHBpbmdzLgo+ID4gPiA+ICsgKiBAZG1hYnVmOiB0aGUgRE1BLWJ1ZiB0byBjaGVj awo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBSZXR1cm5zIHRydWUgaWYgYSBETUEtYnVmIGV4cG9y dGVyIHdhbnRzIHRvIGJlIGNhbGxlZCB3aXRoCj4gPiA+ID4gdGhlIGRtYV9yZXN2Cj4gPiA+ID4g KyAqIGxvY2tlZCwgZmFsc2UgaWYgaXQgZG9lc24ndCB3YW50cyB0byBiZSBjYWxsZWQgd2l0aCB0 aGUgbG9jayBoZWxkLgo+ID4gPiA+ICsgKi8KPiA+ID4gPiArc3RhdGljIGlubGluZSBib29sIGRt YV9idWZfaXNfZHluYW1pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ID4gPiA+ICt7Cj4gPiA+ ID4gK8KgwqDCoCByZXR1cm4gZG1hYnVmLT5vcHMtPmR5bmFtaWNfbWFwcGluZzsKPiA+ID4gPiAr fQo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAqIGRtYV9idWZfYXR0YWNobWVudF9p c19keW5hbWljIC0gY2hlY2sgaWYgYSBETUEtYnVmCj4gPiA+ID4gYXR0YWNobWVudCB1c2VzIGR5 bmFtaWMKPiA+ID4gPiArICogbWFwcGluc2cKPiA+ID4gPiArICogQGF0dGFjaDogdGhlIERNQS1i dWYgYXR0YWNobWVudCB0byBjaGVjawo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBSZXR1cm5zIHRy dWUgaWYgYSBETUEtYnVmIGltcG9ydGVyIHdhbnRzIHRvIGNhbGwgdGhlCj4gPiA+ID4gbWFwL3Vu bWFwIGZ1bmN0aW9ucyB3aXRoCj4gPiA+ID4gKyAqIHRoZSBkbWFfcmVzdiBsb2NrIGhlbGQuCj4g PiA+ID4gKyAqLwo+ID4gPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiA+ID4gPiArZG1hX2J1Zl9h dHRhY2htZW50X2lzX2R5bmFtaWMoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ ID4gPiA+ICt7Cj4gPiA+ID4gK8KgwqDCoCByZXR1cm4gYXR0YWNoLT5keW5hbWljX21hcHBpbmc7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gwqAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqZG1hX2J1Zl9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiA+ID4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk ZXZpY2UgKmRldik7Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gPiA+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50ICoKPiA+ID4gPiArZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYm9vbCBkeW5hbWljX21hcHBpbmcpOwo+ID4gPiA+IMKgIHZvaWQgZG1hX2J1Zl9k ZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOwo+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KmF0dGFjaCk7Cj4gPiA+ID4gwqAgwqAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0KGNv bnN0IHN0cnVjdAo+ID4gPiA+IGRtYV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKTsKPiA+ID4g PiDCoCBAQCAtNDA5LDYgKzQ1NSw3IEBAIHN0cnVjdCBzZ190YWJsZQo+ID4gPiA+ICpkbWFfYnVm X21hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwKPiA+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24pOwo+ID4gPiA+IMKgIHZvaWQgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKiwKPiA+ID4gPiBzdHJ1Y3Qgc2dfdGFibGUgKiwKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9u KTsKPiA+ID4gPiArdm9pZCBkbWFfYnVmX21vdmVfbm90aWZ5KHN0cnVjdCBkbWFfYnVmICpkbWFf YnVmKTsKPiA+ID4gPiDCoCBpbnQgZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFf YnVmICpkbWFfYnVmLAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpOwo+ID4gPiA+IMKgIGludCBkbWFfYnVmX2Vu ZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gPiA+IC0tIAo+ID4gPiA+ IDIuMTcuMQo+ID4gPiA+IAo+ID4gCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdp bmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs