From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/5] dma-buf: add dynamic DMA-buf handling v14 Date: Tue, 5 Nov 2019 11:20:45 +0100 Message-ID: <20191105102045.GC10326@phenom.ffwll.local> References: <20191029104049.9011-1-christian.koenig@amd.com> <20191029104049.9011-2-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20191029104049.9011-2-christian.koenig@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: linaro-mm-sig@lists.linaro.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMjksIDIwMTkgYXQgMTE6NDA6NDVBTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBPbiB0aGUgZXhwb3J0ZXIgc2lkZSB3ZSBhZGQgb3B0aW9uYWwgZXhwbGljaXQg cGlubmluZyBjYWxsYmFja3MuIFdoaWNoIGFyZQo+IGNhbGxlZCB3aGVuIHRoZSBpbXBvcnRlciBk b2Vzbid0IGltcGxlbWVudCBkeW5hbWljIGhhbmRsaW5nLCBtb3ZlIG5vdGlmaWNhdGlvbgo+IG9y IG5lZWQgdGhlIERNQS1idWYgbG9ja2VkIGluIHBsYWNlIGZvciBpdHMgdXNlIGNhc2UuCj4gCj4g T24gdGhlIGltcG9ydGVyIHNpZGUgd2UgYWRkIGFuIG9wdGlvbmFsIG1vdmVfbm90aWZ5IGNhbGxi YWNrLiBUaGlzIGNhbGxiYWNrIGlzCj4gdXNlZCBieSB0aGUgZXhwb3J0ZXIgdG8gaW5mb3JtIHRo ZSBpbXBvcnRlcnMgdGhhdCB0aGVpciBtYXBwaW5ncyBzaG91bGQgYmUKPiBkZXN0cm95ZWQgYXMg c29vbiBhcyBwb3NzaWJsZS4KPiAKPiBUaGlzIGFsbG93cyB0aGUgZXhwb3J0ZXIgdG8gcHJvdmlk ZSB0aGUgbWFwcGluZ3Mgd2l0aG91dCB0aGUgbmVlZCB0byBwaW4KPiB0aGUgYmFja2luZyBzdG9y ZS4KPiAKPiB2MjogZG9uJ3QgdHJ5IHRvIGludmFsaWRhdGUgbWFwcGluZ3Mgd2hlbiB0aGUgY2Fs bGJhY2sgaXMgTlVMTCwKPiAgICAgbG9jayB0aGUgcmVzZXJ2YXRpb24gb2JqIHdoaWxlIHVzaW5n IHRoZSBhdHRhY2htZW50cywKPiAgICAgYWRkIGhlbHBlciB0byBzZXQgdGhlIGNhbGxiYWNrCj4g djM6IG1vdmUgZmxhZyBmb3IgaW52YWxpZGF0aW9uIHN1cHBvcnQgaW50byB0aGUgRE1BLWJ1ZiwK PiAgICAgdXNlIG5ldyBhdHRhY2hfaW5mbyBzdHJ1Y3R1cmUgdG8gc2V0IHRoZSBjYWxsYmFjawo+ IHY0OiB1c2UgaW1wb3J0ZXJfcHJpdiBmaWVsZCBpbnN0ZWFkIG9mIG1hbmdsaW5nIGV4cG9ydGVy IHByaXYuCj4gdjU6IGRyb3AgaW52YWxpZGF0aW9uX3N1cHBvcnRlZCBmbGFnCj4gdjY6IHNxdWFz aCB0b2dldGhlciB3aXRoIHBpbi91bnBpbiBjaGFuZ2VzCj4gdjc6IHBpbi91bnBpbiB0YWtlcyBh biBhdHRhY2htZW50IG5vdwo+IHY4OiBudWtlIGRtYV9idWZfYXR0YWNobWVudF8obWFwfHVubWFw KV9sb2NrZWQsCj4gICAgIGV2ZXJ5dGhpbmcgaXMgbm93IGhhbmRsZWQgYmFja3dhcmQgY29tcGF0 aWJsZQo+IHY5OiBhbHdheXMgY2FjaGUgd2hlbiBleHBvcnQvaW1wb3J0ZXIgZG9uJ3QgYWdyZWUg b24gZHluYW1pYyBoYW5kbGluZwo+IHYxMDogbWluaW1hbCBzdHlsZSBjbGVhbnVwCj4gdjExOiBk cm9wIGF1dG9tYXRpY2FsbHkgcmUtZW50cnkgYXZvaWRhbmNlCj4gdjEyOiByZW5hbWUgY2FsbGJh Y2sgdG8gbW92ZV9ub3RpZnkKPiB2MTM6IGFkZCBtaWdodF9sb2NrIGluIGFwcHJvcHJpYXRlIHBs YWNlcwo+IHYxNDogcmViYXNlIG9uIHNlcGFyYXRlZCBsb2NraW5nIGNoYW5nZQo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KCkJ1 bmNoIG9mIG5pdHBpY2tzL3NhZmV0eSBjaGVjayBjb21tZW50cyBoZXJlLCBJJ2xsIHBvc3QgdGhl IGJpZyBxdWVzdGlvbgpzdHVmZiBvbiB0aGUgY292ZXIgbGV0dGVyLgoKPiAtLS0KPiAgZHJpdmVy cy9kbWEtYnVmL2RtYS1idWYuYyAgICAgICAgICAgICAgICAgICB8IDEwNiArKysrKysrKysrKysr KysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIHwg ICA2ICstCj4gIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oICAgICAgICAgICAgICAgICAgICAgfCAg NzggKysrKysrKysrKysrLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwg MjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVm LmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gaW5kZXggZDM3N2I0Y2E2NmJmLi5jZTI5 M2NlZTc2ZWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ICsrKyBi L2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiBAQCAtNTI5LDYgKzUyOSwxMCBAQCBzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoY29uc3Qgc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8g KmV4cF9pbmZvKQo+ICAJCSAgICBleHBfaW5mby0+b3BzLT5keW5hbWljX21hcHBpbmcpKQo+ICAJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICAKPiArCWlmIChXQVJOX09OKCFleHBfaW5mby0+ b3BzLT5keW5hbWljX21hcHBpbmcgJiYKPiArCQkgICAgKGV4cF9pbmZvLT5vcHMtPnBpbiB8fCBl eHBfaW5mby0+b3BzLT51bnBpbikpKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwoKSW1v IG1ha2UgdGhpcyBzdHJvbmdlciwgaGF2ZSBhIGR5bmFtaWMgbWFwcGluZyBpZmYgdGhlcmUncyBi b3RoIGEgcGluIGFuZAp1bnBpbiBmdW5jdGlvbi4gT3RoZXJ3aXNlIHRoaXMgZG9lc24ndCBtYWtl IGEgbG90IG9mIHNlbnNlIHRvIG1lLgoKPiArCj4gIAlpZiAoIXRyeV9tb2R1bGVfZ2V0KGV4cF9p bmZvLT5vd25lcikpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7Cj4gIAo+IEBAIC02NTMs NyArNjU3LDggQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQpOwo+ICAgKiBjYWxscyBh dHRhY2goKSBvZiBkbWFfYnVmX29wcyB0byBhbGxvdyBkZXZpY2Utc3BlY2lmaWMgYXR0YWNoIGZ1 bmN0aW9uYWxpdHkKPiAgICogQGRtYWJ1ZjoJCVtpbl0JYnVmZmVyIHRvIGF0dGFjaCBkZXZpY2Ug dG8uCj4gICAqIEBkZXY6CQlbaW5dCWRldmljZSB0byBiZSBhdHRhY2hlZC4KPiAtICogQGR5bmFt aWNfbWFwcGluZzoJW2luXQljYWxsaW5nIGNvbnZlbnRpb24gZm9yIG1hcC91bm1hcAo+ICsgKiBA aW1wb3J0ZXJfb3BzCVtpbl0JaW1wb3J0ZXIgb3BlcmF0aW9ucyBmb3IgdGhlIGF0dGFjaG1lbnQK PiArICogQGltcG9ydGVyX3ByaXYJW2luXQlpbXBvcnRlciBwcml2YXRlIHBvaW50ZXIgZm9yIHRo ZSBhdHRhY2htZW50Cj4gICAqCj4gICAqIFJldHVybnMgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCBwb2ludGVyIGZvciB0aGlzIGF0dGFjaG1lbnQuIEF0dGFjaG1lbnRzCj4gICAqIG11c3QgYmUg Y2xlYW5lZCB1cCBieSBjYWxsaW5nIGRtYV9idWZfZGV0YWNoKCkuCj4gQEAgLTY2OSw3ICs2NzQs OCBAQCBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4gICAqLwo+ICBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICoKPiAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gLQkJICAgICAgIGJvb2wgZHluYW1pY19t YXBwaW5nKQo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzICppbXBv cnRlcl9vcHMsCj4gKwkJICAgICAgIHZvaWQgKmltcG9ydGVyX3ByaXYpCj4gIHsKPiAgCXN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKPiAgCWludCByZXQ7Cj4gQEAgLTY4Myw3ICs2 ODksOCBAQCBkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0 cnVjdCBkZXZpY2UgKmRldiwKPiAgCj4gIAlhdHRhY2gtPmRldiA9IGRldjsKPiAgCWF0dGFjaC0+ ZG1hYnVmID0gZG1hYnVmOwo+IC0JYXR0YWNoLT5keW5hbWljX21hcHBpbmcgPSBkeW5hbWljX21h cHBpbmc7Cj4gKwlhdHRhY2gtPmltcG9ydGVyX29wcyA9IGltcG9ydGVyX29wczsKPiArCWF0dGFj aC0+aW1wb3J0ZXJfcHJpdiA9IGltcG9ydGVyX3ByaXY7Cj4gIAo+ICAJaWYgKGRtYWJ1Zi0+b3Bz LT5hdHRhY2gpIHsKPiAgCQlyZXQgPSBkbWFidWYtPm9wcy0+YXR0YWNoKGRtYWJ1ZiwgYXR0YWNo KTsKPiBAQCAtNzAyLDE1ICs3MDksMTkgQEAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAkgICAgZG1hX2J1Zl9pc19k eW5hbWljKGRtYWJ1ZikpIHsKPiAgCQlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiAgCj4gLQkJaWYg KGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCj4gKwkJaWYgKGRtYV9idWZfaXNf ZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpIHsKPiAgCQkJZG1hX3Jlc3ZfbG9jayhhdHRhY2gtPmRt YWJ1Zi0+cmVzdiwgTlVMTCk7Cj4gKwkJCXJldCA9IGRtYV9idWZfcGluKGF0dGFjaCk7Cj4gKwkJ CWlmIChyZXQpCj4gKwkJCQlnb3RvIGVycl91bmxvY2s7Cj4gKwkJfQo+ICAKPiAgCQlzZ3QgPSBk bWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNoLCBETUFfQklESVJFQ1RJT05BTCk7Cj4gIAkJ aWYgKCFzZ3QpCj4gIAkJCXNndCA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gIAkJaWYgKElTX0VSUihz Z3QpKSB7Cj4gIAkJCXJldCA9IFBUUl9FUlIoc2d0KTsKPiAtCQkJZ290byBlcnJfdW5sb2NrOwo+ ICsJCQlnb3RvIGVycl91bnBpbjsKPiAgCQl9Cj4gIAkJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhh dHRhY2gtPmRtYWJ1ZikpCj4gIAkJCWRtYV9yZXN2X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVz dik7Cj4gQEAgLTcyNCw2ICs3MzUsMTAgQEAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAlrZnJlZShhdHRhY2gpOwo+ ICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgCj4gK2Vycl91bnBpbjoKPiArCWlmIChkbWFfYnVm X2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ICsJCWRtYV9idWZfdW5waW4oYXR0YWNoKTsK PiArCj4gIGVycl91bmxvY2s6Cj4gIAlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1h YnVmKSkKPiAgCQlkbWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+IEBAIC03 NDQsNyArNzU5LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9keW5hbWljX2F0dGFjaCk7 Cj4gIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsCj4gIAkJCQkJICBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAtCXJldHVy biBkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKGRtYWJ1ZiwgZGV2LCBmYWxzZSk7Cj4gKwlyZXR1cm4g ZG1hX2J1Zl9keW5hbWljX2F0dGFjaChkbWFidWYsIGRldiwgTlVMTCwgTlVMTCk7Cj4gIH0KPiAg RVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9hdHRhY2gpOwo+ICAKPiBAQCAtNzY3LDggKzc4Miwx MCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPiAgCj4gIAkJZG1hYnVmLT5vcHMtPnVubWFwX2Rt YV9idWYoYXR0YWNoLCBhdHRhY2gtPnNndCwgYXR0YWNoLT5kaXIpOwo+ICAKPiAtCQlpZiAoZG1h X2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCQlpZiAoZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSkgewo+ICsJCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7Cj4gIAkJ CWRtYV9yZXN2X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4gKwkJfQo+ICAJfQo+ICAK PiAgCWRtYV9yZXN2X2xvY2soZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiBAQCAtNzgxLDYgKzc5OCw0 NCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChkbWFf YnVmX2RldGFjaCk7Cj4gIAo+ICsvKioKPiArICogZG1hX2J1Zl9waW4gLSBMb2NrIGRvd24gdGhl IERNQS1idWYKPiArICoKPiArICogQGF0dGFjaDoJW2luXQlhdHRhY2htZW50IHdoaWNoIHNob3Vs ZCBiZSBwaW5uZWQKPiArICoKPiArICogUmV0dXJuczoKPiArICogMCBvbiBzdWNjZXNzLCBuZWdh dGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZG1hX2J1Zl9waW4oc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmID0gYXR0YWNoLT5kbWFidWY7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlkbWFfcmVz dl9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+ICsKPiArCWlmIChkbWFidWYtPm9wcy0+cGlu KQo+ICsJCXJldCA9IGRtYWJ1Zi0+b3BzLT5waW4oYXR0YWNoKTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfcGluKTsKPiArCj4gKy8qKgo+ICsg KiBkbWFfYnVmX3VucGluIC0gUmVtb3ZlIGxvY2sgZnJvbSBETUEtYnVmCj4gKyAqCj4gKyAqIEBh dHRhY2g6CVtpbl0JYXR0YWNobWVudCB3aGljaCBzaG91bGQgYmUgdW5waW5uZWQKPiArICovCj4g K3ZvaWQgZG1hX2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4g K3sKPiArCXN0cnVjdCBkbWFfYnVmICpkbWFidWYgPSBhdHRhY2gtPmRtYWJ1ZjsKPiArCj4gKwlk bWFfcmVzdl9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+ICsKPiArCWlmIChkbWFidWYtPm9w cy0+dW5waW4pCj4gKwkJZG1hYnVmLT5vcHMtPnVucGluKGF0dGFjaCk7Cj4gK30KPiArRVhQT1JU X1NZTUJPTF9HUEwoZG1hX2J1Zl91bnBpbik7Cj4gKwo+ICAvKioKPiAgICogZG1hX2J1Zl9tYXBf YXR0YWNobWVudCAtIFJldHVybnMgdGhlIHNjYXR0ZXJsaXN0IHRhYmxlIG9mIHRoZSBhdHRhY2ht ZW50Owo+ICAgKiBtYXBwZWQgaW50byBfZGV2aWNlXyBhZGRyZXNzIHNwYWNlLiBJcyBhIHdyYXBw ZXIgZm9yIG1hcF9kbWFfYnVmKCkgb2YgdGhlCj4gQEAgLTgwMCw2ICs4NTUsNyBAQCBzdHJ1Y3Qg c2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoLAo+ICAJCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKPiAg ewo+ICAJc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZTsKPiArCWludCByOwo+ICAKPiAgCW1pZ2h0 X3NsZWVwKCk7Cj4gIAo+IEBAIC04MjEsMTMgKzg3NywyMyBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRt YV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ ICAJCXJldHVybiBhdHRhY2gtPnNndDsKPiAgCX0KPiAgCj4gLQlpZiAoZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5k bWFidWYpKSB7Cj4gIAkJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFidWYtPnJlc3Yp Owo+ICsJCWlmICghYXR0YWNoLT5pbXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KSB7CgpJbW8ganVz dCByZXF1aXJlIC0+bW92ZV9ub3RpZnkgZm9yIGltcG9ydGVycyB0aGF0IGdpdmUgeW91IGFuIG9w cwpmdW5jdGlvbi4gRG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSB0byBhbGxvdyBkeW5hbWljIHdp dGhvdXQgc3VwcG9ydAotPm1vdmVfbm90aWZ5LgoKPiArCQkJciA9IGRtYV9idWZfcGluKGF0dGFj aCk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIEVSUl9QVFIocik7Cj4gKwkJfQo+ICsJfQo+ ICAKPiAgCXNnX3RhYmxlID0gYXR0YWNoLT5kbWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNo LCBkaXJlY3Rpb24pOwo+ICAJaWYgKCFzZ190YWJsZSkKPiAgCQlzZ190YWJsZSA9IEVSUl9QVFIo LUVOT01FTSk7Cj4gIAo+ICsJaWYgKElTX0VSUihzZ190YWJsZSkgJiYgZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSAmJgo+ICsJICAgICFhdHRhY2gtPmltcG9ydGVyX29wcy0+bW92 ZV9ub3RpZnkpCj4gKwkJZG1hX2J1Zl91bnBpbihhdHRhY2gpOwo+ICsKPiAgCWlmICghSVNfRVJS KHNnX3RhYmxlKSAmJiBhdHRhY2gtPmRtYWJ1Zi0+b3BzLT5jYWNoZV9zZ3RfbWFwcGluZykgewo+ ICAJCWF0dGFjaC0+c2d0ID0gc2dfdGFibGU7Cj4gIAkJYXR0YWNoLT5kaXIgPSBkaXJlY3Rpb247 Cj4gQEAgLTg2Niw5ICs5MzIsMzMgQEAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ICAJCWRtYV9yZXN2X2Fzc2VydF9oZWxk KGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiAgCj4gIAlhdHRhY2gtPmRtYWJ1Zi0+b3BzLT51bm1h cF9kbWFfYnVmKGF0dGFjaCwgc2dfdGFibGUsIGRpcmVjdGlvbik7Cj4gKwo+ICsJaWYgKGRtYV9i dWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikgJiYKPiArCSAgICAhYXR0YWNoLT5pbXBvcnRl cl9vcHMtPm1vdmVfbm90aWZ5KQo+ICsJCWRtYV9idWZfdW5waW4oYXR0YWNoKTsKPiAgfQo+ICBF WFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQpOwo+ICAKPiArLyoqCj4g KyAqIGRtYV9idWZfbW92ZV9ub3RpZnkgLSBub3RpZnkgYXR0YWNobWVudHMgdGhhdCBETUEtYnVm IGlzIG1vdmluZwo+ICsgKgo+ICsgKiBAZG1hYnVmOglbaW5dCWJ1ZmZlciB3aGljaCBpcyBtb3Zp bmcKPiArICoKPiArICogSW5mb3JtcyBhbGwgYXR0YWNobWVuc3QgdGhhdCB0aGV5IG5lZWQgdG8g ZGVzdHJveSBhbmQgcmVjcmVhdGVkIGFsbCB0aGVpcgo+ICsgKiBtYXBwaW5ncy4KPiArICovCj4g K3ZvaWQgZG1hX2J1Zl9tb3ZlX25vdGlmeShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICt7Cj4g KwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gKwo+ICsJZG1hX3Jlc3ZfYXNz ZXJ0X2hlbGQoZG1hYnVmLT5yZXN2KTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF0dGFj aCwgJmRtYWJ1Zi0+YXR0YWNobWVudHMsIG5vZGUpCj4gKwkJaWYgKGF0dGFjaC0+aW1wb3J0ZXJf b3BzICYmIGF0dGFjaC0+aW1wb3J0ZXJfb3BzLT5tb3ZlX25vdGlmeSkKPiArCQkJYXR0YWNoLT5p bXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KGF0dGFjaCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9H UEwoZG1hX2J1Zl9tb3ZlX25vdGlmeSk7Cj4gKwo+ICAvKioKPiAgICogRE9DOiBjcHUgYWNjZXNz Cj4gICAqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k bWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCj4g aW5kZXggZDViY2RmZWZiYWQ2Li44ZTVhNjgxMDc1NTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMKPiBAQCAtNDE1LDYgKzQxNSw5IEBAIGFtZGdw dV9kbWFfYnVmX2NyZWF0ZV9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRtYV9i dWYgKmRtYV9idWYpCj4gIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyBhbWRncHVfZG1hX2J1Zl9hdHRhY2hfb3Bz ID0gewo+ICt9Owo+ICsKPiAgLyoqCj4gICAqIGFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0IC0gJmRy bV9kcml2ZXIuZ2VtX3ByaW1lX2ltcG9ydCBpbXBsZW1lbnRhdGlvbgo+ICAgKiBAZGV2OiBEUk0g ZGV2aWNlCj4gQEAgLTQ0Nyw3ICs0NTAsOCBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmFtZGdw dV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAoSVNfRVJS KG9iaikpCj4gIAkJcmV0dXJuIG9iajsKPiAgCj4gLQlhdHRhY2ggPSBkbWFfYnVmX2R5bmFtaWNf YXR0YWNoKGRtYV9idWYsIGRldi0+ZGV2LCB0cnVlKTsKPiArCWF0dGFjaCA9IGRtYV9idWZfZHlu YW1pY19hdHRhY2goZG1hX2J1ZiwgZGV2LT5kZXYsCj4gKwkJCQkJJmFtZGdwdV9kbWFfYnVmX2F0 dGFjaF9vcHMsIE5VTEwpOwo+ICAJaWYgKElTX0VSUihhdHRhY2gpKSB7Cj4gIAkJZHJtX2dlbV9v YmplY3RfcHV0KG9iaik7Cj4gIAkJcmV0dXJuIEVSUl9DQVNUKGF0dGFjaCk7Cj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiBp bmRleCBhZjczZjgzNWM1MWMuLjc0NTZiYjkzNzYzNSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xp bnV4L2RtYS1idWYuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gQEAgLTkzLDE0 ICs5Myw0MCBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+ICAJICovCj4gIAl2b2lkICgqZGV0YWNo KShzdHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICopOwo+ICAKPiAr CS8qKgo+ICsJICogQHBpbjoKPiArCSAqCj4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVm X3BpbiBhbmQgbGV0cyB0aGUgZXhwb3J0ZXIga25vdyB0aGF0IHRoZQo+ICsJICogRE1BLWJ1ZiBj YW4ndCBiZSBtb3ZlZCBhbnkgbW9yZS4KCkkgdGhpbmsgd2Ugc2hvdWxkIGFkZCBhIHdhcm5pbmcg aGVyZSB0aGF0IHBpbm5pbmcgaXMgb25seSBvayBmb3IgbGltaXRlZAp1c2UtY2FzZXMgKGxpa2Ug c2Nhbm91dCBvciBzaW1pbGFyKSwgYW5kIG5vdCBhcyBwYXJ0IG9mIGdlbmVyYWwgYnVmZmVyCm1h bmFnZW1lbnQuCgppOTE1IHVzZXMgdGVtcG9yYXJ5IHBpbnMgdGhyb3VnaCBpdCdzIGV4ZWNidWYg bWFuYWdlbWVudCAoYW5kIGV2ZXJ5d2hlcmUKZWxzZSksIHNvIHdlIGhhdmUgYSBfbG90XyBvZiBw ZW9wbGUgaW4gZHJpLWRldmVsIHdpdGggcXVpdGUgZGlmZmVyZW50CmlkZWFzIG9mIHdoYXQgdGhp cyBtaWdodCBiZSBmb3IgOi0pCgo+ICsJICoKPiArCSAqIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhl IGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgb3B0aW9uYWwuCj4gKwkgKgo+ICsJICogUmV0dXJuczoKPiArCSAqCj4gKwkgKiAwIG9uIHN1 Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArCSAqLwo+ICsJaW50ICgq cGluKShzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpOwo+ICsKPiArCS8qKgo+ICsJ ICogQHVucGluOgo+ICsJICoKPiArCSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5waW4g YW5kIGxldHMgdGhlIGV4cG9ydGVyIGtub3cgdGhhdCB0aGUKPiArCSAqIERNQS1idWYgY2FuIGJl IG1vdmVkIGFnYWluLgo+ICsJICoKPiArCSAqIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1 Zi0+cmVzdiBvYmplY3QgbG9ja2VkLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0 aW9uYWwuCj4gKwkgKi8KPiArCXZvaWQgKCp1bnBpbikoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoKTsKPiArCj4gIAkvKioKPiAgCSAqIEBtYXBfZG1hX2J1ZjoKPiAgCSAqCj4gIAkg KiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX21hcF9hdHRhY2htZW50KCkgYW5kIGlzIHVzZWQg dG8gbWFwIGEKPiAgCSAqIHNoYXJlZCAmZG1hX2J1ZiBpbnRvIGRldmljZSBhZGRyZXNzIHNwYWNl LCBhbmQgaXQgaXMgbWFuZGF0b3J5LiBJdAo+IC0JICogY2FuIG9ubHkgYmUgY2FsbGVkIGlmIEBh dHRhY2ggaGFzIGJlZW4gY2FsbGVkIHN1Y2Nlc3NmdWxseS4gVGhpcwo+IC0JICogZXNzZW50aWFs bHkgcGlucyB0aGUgRE1BIGJ1ZmZlciBpbnRvIHBsYWNlLCBhbmQgaXQgY2Fubm90IGJlIG1vdmVk Cj4gLQkgKiBhbnkgbW9yZQo+ICsJICogY2FuIG9ubHkgYmUgY2FsbGVkIGlmIEBhdHRhY2ggaGFz IGJlZW4gY2FsbGVkIHN1Y2Nlc3NmdWxseS4KPiAgCSAqCj4gIAkgKiBUaGlzIGNhbGwgbWF5IHNs ZWVwLCBlLmcuIHdoZW4gdGhlIGJhY2tpbmcgc3RvcmFnZSBmaXJzdCBuZWVkcyB0byBiZQo+ICAJ ICogYWxsb2NhdGVkLCBvciBtb3ZlZCB0byBhIGxvY2F0aW9uIHN1aXRhYmxlIGZvciBhbGwgY3Vy cmVudGx5IGF0dGFjaGVkCj4gQEAgLTE0MSw5ICsxNjcsNiBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMg ewo+ICAJICoKPiAgCSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5tYXBfYXR0YWNobWVu dCgpIGFuZCBzaG91bGQgdW5tYXAgYW5kCj4gIAkgKiByZWxlYXNlIHRoZSAmc2dfdGFibGUgYWxs b2NhdGVkIGluIEBtYXBfZG1hX2J1ZiwgYW5kIGl0IGlzIG1hbmRhdG9yeS4KPiAtCSAqIEl0IHNo b3VsZCBhbHNvIHVucGluIHRoZSBiYWNraW5nIHN0b3JhZ2UgaWYgdGhpcyBpcyB0aGUgbGFzdCBt YXBwaW5nCj4gLQkgKiBvZiB0aGUgRE1BIGJ1ZmZlciwgaXQgdGhlIGV4cG9ydGVyIHN1cHBvcnRz IGJhY2tpbmcgc3RvcmFnZQo+IC0JICogbWlncmF0aW9uLgoKVGhpcyBpcyBzdGlsbCB2YWxpZCBm b3Igbm9uLWR5bmFtaWMgZXhwb3J0ZXJzLiBJbW8ga2VlcCBidXQgY2xhcmlmeSB0aGF0LgoKPiAg CSAqLwo+ICAJdm9pZCAoKnVubWFwX2RtYV9idWYpKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KiwKPiAgCQkJICAgICAgc3RydWN0IHNnX3RhYmxlICosCj4gQEAgLTMzNiw2ICszNTksMzQgQEAg c3RydWN0IGRtYV9idWYgewo+ICAJfSBjYl9leGNsLCBjYl9zaGFyZWQ7Cj4gIH07Cj4gIAo+ICsv KioKPiArICogc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyAtIGltcG9ydGVyIG9wZXJhdGlvbnMg Zm9yIGFuIGF0dGFjaG1lbnQKPiArICogQG1vdmVfbm90aWZ5OiBbb3B0aW9uYWxdIG5vdGlmaWNh dGlvbiB0aGF0IHRoZSBETUEtYnVmIGlzIG1vdmluZwo+ICsgKgo+ICsgKiBBdHRhY2htZW50IG9w ZXJhdGlvbnMgaW1wbGVtZW50ZWQgYnkgdGhlIGltcG9ydGVyLgo+ICsgKi8KPiArc3RydWN0IGRt YV9idWZfYXR0YWNoX29wcyB7Cj4gKwkvKioKPiArCSAqIEBtb3ZlX25vdGlmeQo+ICsJICoKPiAr CSAqIElmIHRoaXMgY2FsbGJhY2sgaXMgcHJvdmlkZWQgdGhlIGZyYW1ld29yayBjYW4gYXZvaWQg cGlubmluZyB0aGUKPiArCSAqIGJhY2tpbmcgc3RvcmUgd2hpbGUgbWFwcGluZ3MgZXhpc3RzLgo+ ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggdGhlIGxvY2sgb2YgdGhl IHJlc2VydmF0aW9uIG9iamVjdAo+ICsJICogYXNzb2NpYXRlZCB3aXRoIHRoZSBkbWFfYnVmIGhl bGQgYW5kIHRoZSBtYXBwaW5nIGZ1bmN0aW9uIG11c3QgYmUKPiArCSAqIGNhbGxlZCB3aXRoIHRo aXMgbG9jayBoZWxkIGFzIHdlbGwuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IG5vIG1hcHBpbmcKPiAr CSAqIGlzIGNyZWF0ZWQgY29uY3VycmVudGx5IHdpdGggYW4gb25nb2luZyBtb3ZlIG9wZXJhdGlv bi4KPiArCSAqCj4gKwkgKiBNYXBwaW5ncyBzdGF5IHZhbGlkIGFuZCBhcmUgbm90IGRpcmVjdGx5 IGFmZmVjdGVkIGJ5IHRoaXMgY2FsbGJhY2suCj4gKwkgKiBCdXQgdGhlIERNQS1idWYgY2FuIG5v dyBiZSBpbiBhIGRpZmZlcmVudCBwaHlzaWNhbCBsb2NhdGlvbiwgc28gYWxsCj4gKwkgKiBtYXBw aW5ncyBzaG91bGQgYmUgZGVzdHJveWVkIGFuZCByZS1jcmVhdGVkIGFzIHNvb24gYXMgcG9zc2li bGUuCj4gKwkgKgo+ICsJICogTmV3IG1hcHBpbmdzIGNhbiBiZSBjcmVhdGVkIGFmdGVyIHRoaXMg Y2FsbGJhY2sgcmV0dXJucywgYW5kIHdpbGwKPiArCSAqIHBvaW50IHRvIHRoZSBuZXcgbG9jYXRp b24gb2YgdGhlIERNQS1idWYuCj4gKwkgKi8KPiArCXZvaWQgKCptb3ZlX25vdGlmeSkoc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPiArfTsKPiArCj4gIC8qKgo+ICAgKiBzdHJ1 Y3QgZG1hX2J1Zl9hdHRhY2htZW50IC0gaG9sZHMgZGV2aWNlLWJ1ZmZlciBhdHRhY2htZW50IGRh dGEKPiAgICogQGRtYWJ1ZjogYnVmZmVyIGZvciB0aGlzIGF0dGFjaG1lbnQuCj4gQEAgLTM0NCw4 ICszOTUsOSBAQCBzdHJ1Y3QgZG1hX2J1ZiB7Cj4gICAqIEBzZ3Q6IGNhY2hlZCBtYXBwaW5nLgo+ ICAgKiBAZGlyOiBkaXJlY3Rpb24gb2YgY2FjaGVkIG1hcHBpbmcuCj4gICAqIEBwcml2OiBleHBv cnRlciBzcGVjaWZpYyBhdHRhY2htZW50IGRhdGEuCj4gLSAqIEBkeW5hbWljX21hcHBpbmc6IHRy dWUgaWYgZG1hX2J1Zl9tYXAvdW5tYXBfYXR0YWNobWVudCgpIGlzIGNhbGxlZCB3aXRoIHRoZQo+ IC0gKiBkbWFfcmVzdiBsb2NrIGhlbGQuCj4gKyAqIEBpbXBvcnRlcl9vcHM6IGltcG9ydGVyIG9w ZXJhdGlvbnMgZm9yIHRoaXMgYXR0YWNobWVudCwgaWYgcHJvdmlkZWQKPiArICogZG1hX2J1Zl9t YXAvdW5tYXBfYXR0YWNobWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGRtYV9yZXN2IGxv Y2sgaGVsZC4KPiArICogQGltcG9ydGVyX3ByaXY6IGltcG9ydGVyIHNwZWNpZmljIGF0dGFjaG1l bnQgZGF0YS4KPiAgICoKPiAgICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQg aW5mb3JtYXRpb24gYmV0d2VlbiB0aGUgZG1hX2J1ZiBidWZmZXIKPiAgICogYW5kIGl0cyB1c2Vy IGRldmljZShzKS4gVGhlIGxpc3QgY29udGFpbnMgb25lIGF0dGFjaG1lbnQgc3RydWN0IHBlciBk ZXZpY2UKPiBAQCAtMzYyLDcgKzQxNCw4IEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgewo+ ICAJc3RydWN0IGxpc3RfaGVhZCBub2RlOwo+ICAJc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gIAll bnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXI7Cj4gLQlib29sIGR5bmFtaWNfbWFwcGluZzsKPiAr CWNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgKmltcG9ydGVyX29wczsKPiArCXZvaWQg KmltcG9ydGVyX3ByaXY7Cj4gIAl2b2lkICpwcml2Owo+ICB9Owo+ICAKPiBAQCAtNDM4LDE2ICs0 OTEsMTkgQEAgc3RhdGljIGlubGluZSBib29sIGRtYV9idWZfaXNfZHluYW1pYyhzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmKQo+ICBzdGF0aWMgaW5saW5lIGJvb2wKPiAgZG1hX2J1Zl9hdHRhY2htZW50 X2lzX2R5bmFtaWMoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICB7Cj4gLQly ZXR1cm4gYXR0YWNoLT5keW5hbWljX21hcHBpbmc7Cj4gKwlyZXR1cm4gISFhdHRhY2gtPmltcG9y dGVyX29wczsKCkhtIHdoeSBub3QgZG8gdGhlIHNhbWUgZm9yIGV4cG9ydGVycywgYW5kIG1ha2Ug dGhlbSBkeW5hbWljIGlmZiB0aGV5IGhhdmUKcGluL3VucGluPwotRGFuaWVsCgo+ICB9Cj4gIAo+ ICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmLAo+ICAJCQkJCSAgc3RydWN0IGRldmljZSAqZGV2KTsKPiAgc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqCj4gIGRtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYg KmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2LAo+IC0JCSAgICAgICBib29sIGR5bmFtaWNfbWFw cGluZyk7Cj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgKmltcG9y dGVyX29wcywKPiArCQkgICAgICAgdm9pZCAqaW1wb3J0ZXJfcHJpdik7Cj4gIHZvaWQgZG1hX2J1 Zl9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiAgCQkgICAgc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqYXR0YWNoKTsKPiAraW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCk7Cj4gK3ZvaWQgZG1hX2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gpOwo+ICAKPiAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0 KGNvbnN0IHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvICpleHBfaW5mbyk7Cj4gIAo+IC0tIAo+ IDIuMTcuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbA== 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, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 187C7C010A4 for ; Tue, 5 Nov 2019 10:20:54 +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 E5A8E217F5 for ; Tue, 5 Nov 2019 10:20:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E5A8E217F5 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8A5276E9B1; Tue, 5 Nov 2019 10:20:50 +0000 (UTC) Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by gabe.freedesktop.org (Postfix) with ESMTPS id 590836E9B0 for ; Tue, 5 Nov 2019 10:20:49 +0000 (UTC) Received: by mail-wm1-x344.google.com with SMTP id z26so7019328wmi.4 for ; Tue, 05 Nov 2019 02:20:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=KAoSWrCtJnVcpstcf4OAoLsbVOrNLD5KlvPrGo8r4jM=; b=diHAGfAN6xV3f1rXze7GnLcoJSXudwZQejRPMty0FlLcGVhhvkHyojEALnVLRzmD9G exUEpAe7XtOaHYo/kfdC9vTYz+C1BtheT+caCBoca4+dG9OBLxrtjkHWaun+xnQG0+yx Ng6e/LUrsPcAsSuGQMdlXNgwhL/oRCBPBQShDAygWJVqbCipTn5GIAxd65Q/WgllrPh0 d1B8/kzP1WxQcMJ2vOSvB0xmkYPTJfz35mQ3kOn8ZYmD4u1vZ7Q8BEVVxnpelxnPD1D9 qvTR5ZAwbzSDm5yrnFK0FIKD1jzUiz9ppEqW77nawXVKccD2VGtU+oDzg4dWlajEQjVB dOEA== X-Gm-Message-State: APjAAAXiHMIS87B1koVtnwOboZa5lK0AuKzhtlOzdlitS/MJeSu7K8go Hqqmths76cU++z4XOq8iVQxJnA== X-Google-Smtp-Source: APXvYqzh+bZx0x2hJ6H+2IUfINTGiZ1oaO9YVHm71WlEh7IuXsiNNUiGVu3CyaQNHQlVPhBeRqLCZQ== X-Received: by 2002:a1c:3d08:: with SMTP id k8mr3222367wma.119.1572949247668; Tue, 05 Nov 2019 02:20:47 -0800 (PST) Received: from phenom.ffwll.local (212-51-149-96.fiber7.init7.net. [212.51.149.96]) by smtp.gmail.com with ESMTPSA id b186sm18453928wmb.21.2019.11.05.02.20.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Nov 2019 02:20:46 -0800 (PST) Date: Tue, 5 Nov 2019 11:20:45 +0100 From: Daniel Vetter To: Christian =?iso-8859-1?Q?K=F6nig?= Message-ID: <20191105102045.GC10326@phenom.ffwll.local> References: <20191029104049.9011-1-christian.koenig@amd.com> <20191029104049.9011-2-christian.koenig@amd.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191029104049.9011-2-christian.koenig@amd.com> X-Operating-System: Linux phenom 5.2.0-3-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=KAoSWrCtJnVcpstcf4OAoLsbVOrNLD5KlvPrGo8r4jM=; b=JuI5XtOHY7LoQsFTk4jDywK1uRw9ELtW9NVKlljlL0uip+bxZ3EmWUqCZ/qItEwHon TqMW1TLORQUJ2llAwjXH1IA5k/wQlvhuQAm0X2SdDnGZsiVEvybqQC9iyaV5C+CSaolV rdZ9nnPbxreo7pK+h06nzBIoQ+bW6SDsQsNEw= Subject: Re: [Intel-gfx] [PATCH 1/5] dma-buf: add dynamic DMA-buf handling v14 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linaro-mm-sig@lists.linaro.org, intel-gfx@lists.freedesktop.org, sumit.semwal@linaro.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191105102045.8-0eQiYsntNfMOloYOARnGuCA_jVIehkOW88mujG9Mo@z> T24gVHVlLCBPY3QgMjksIDIwMTkgYXQgMTE6NDA6NDVBTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBPbiB0aGUgZXhwb3J0ZXIgc2lkZSB3ZSBhZGQgb3B0aW9uYWwgZXhwbGljaXQg cGlubmluZyBjYWxsYmFja3MuIFdoaWNoIGFyZQo+IGNhbGxlZCB3aGVuIHRoZSBpbXBvcnRlciBk b2Vzbid0IGltcGxlbWVudCBkeW5hbWljIGhhbmRsaW5nLCBtb3ZlIG5vdGlmaWNhdGlvbgo+IG9y IG5lZWQgdGhlIERNQS1idWYgbG9ja2VkIGluIHBsYWNlIGZvciBpdHMgdXNlIGNhc2UuCj4gCj4g T24gdGhlIGltcG9ydGVyIHNpZGUgd2UgYWRkIGFuIG9wdGlvbmFsIG1vdmVfbm90aWZ5IGNhbGxi YWNrLiBUaGlzIGNhbGxiYWNrIGlzCj4gdXNlZCBieSB0aGUgZXhwb3J0ZXIgdG8gaW5mb3JtIHRo ZSBpbXBvcnRlcnMgdGhhdCB0aGVpciBtYXBwaW5ncyBzaG91bGQgYmUKPiBkZXN0cm95ZWQgYXMg c29vbiBhcyBwb3NzaWJsZS4KPiAKPiBUaGlzIGFsbG93cyB0aGUgZXhwb3J0ZXIgdG8gcHJvdmlk ZSB0aGUgbWFwcGluZ3Mgd2l0aG91dCB0aGUgbmVlZCB0byBwaW4KPiB0aGUgYmFja2luZyBzdG9y ZS4KPiAKPiB2MjogZG9uJ3QgdHJ5IHRvIGludmFsaWRhdGUgbWFwcGluZ3Mgd2hlbiB0aGUgY2Fs bGJhY2sgaXMgTlVMTCwKPiAgICAgbG9jayB0aGUgcmVzZXJ2YXRpb24gb2JqIHdoaWxlIHVzaW5n IHRoZSBhdHRhY2htZW50cywKPiAgICAgYWRkIGhlbHBlciB0byBzZXQgdGhlIGNhbGxiYWNrCj4g djM6IG1vdmUgZmxhZyBmb3IgaW52YWxpZGF0aW9uIHN1cHBvcnQgaW50byB0aGUgRE1BLWJ1ZiwK PiAgICAgdXNlIG5ldyBhdHRhY2hfaW5mbyBzdHJ1Y3R1cmUgdG8gc2V0IHRoZSBjYWxsYmFjawo+ IHY0OiB1c2UgaW1wb3J0ZXJfcHJpdiBmaWVsZCBpbnN0ZWFkIG9mIG1hbmdsaW5nIGV4cG9ydGVy IHByaXYuCj4gdjU6IGRyb3AgaW52YWxpZGF0aW9uX3N1cHBvcnRlZCBmbGFnCj4gdjY6IHNxdWFz aCB0b2dldGhlciB3aXRoIHBpbi91bnBpbiBjaGFuZ2VzCj4gdjc6IHBpbi91bnBpbiB0YWtlcyBh biBhdHRhY2htZW50IG5vdwo+IHY4OiBudWtlIGRtYV9idWZfYXR0YWNobWVudF8obWFwfHVubWFw KV9sb2NrZWQsCj4gICAgIGV2ZXJ5dGhpbmcgaXMgbm93IGhhbmRsZWQgYmFja3dhcmQgY29tcGF0 aWJsZQo+IHY5OiBhbHdheXMgY2FjaGUgd2hlbiBleHBvcnQvaW1wb3J0ZXIgZG9uJ3QgYWdyZWUg b24gZHluYW1pYyBoYW5kbGluZwo+IHYxMDogbWluaW1hbCBzdHlsZSBjbGVhbnVwCj4gdjExOiBk cm9wIGF1dG9tYXRpY2FsbHkgcmUtZW50cnkgYXZvaWRhbmNlCj4gdjEyOiByZW5hbWUgY2FsbGJh Y2sgdG8gbW92ZV9ub3RpZnkKPiB2MTM6IGFkZCBtaWdodF9sb2NrIGluIGFwcHJvcHJpYXRlIHBs YWNlcwo+IHYxNDogcmViYXNlIG9uIHNlcGFyYXRlZCBsb2NraW5nIGNoYW5nZQo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KCkJ1 bmNoIG9mIG5pdHBpY2tzL3NhZmV0eSBjaGVjayBjb21tZW50cyBoZXJlLCBJJ2xsIHBvc3QgdGhl IGJpZyBxdWVzdGlvbgpzdHVmZiBvbiB0aGUgY292ZXIgbGV0dGVyLgoKPiAtLS0KPiAgZHJpdmVy cy9kbWEtYnVmL2RtYS1idWYuYyAgICAgICAgICAgICAgICAgICB8IDEwNiArKysrKysrKysrKysr KysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIHwg ICA2ICstCj4gIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oICAgICAgICAgICAgICAgICAgICAgfCAg NzggKysrKysrKysrKysrLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwg MjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVm LmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gaW5kZXggZDM3N2I0Y2E2NmJmLi5jZTI5 M2NlZTc2ZWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ICsrKyBi L2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiBAQCAtNTI5LDYgKzUyOSwxMCBAQCBzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoY29uc3Qgc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8g KmV4cF9pbmZvKQo+ICAJCSAgICBleHBfaW5mby0+b3BzLT5keW5hbWljX21hcHBpbmcpKQo+ICAJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICAKPiArCWlmIChXQVJOX09OKCFleHBfaW5mby0+ b3BzLT5keW5hbWljX21hcHBpbmcgJiYKPiArCQkgICAgKGV4cF9pbmZvLT5vcHMtPnBpbiB8fCBl eHBfaW5mby0+b3BzLT51bnBpbikpKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwoKSW1v IG1ha2UgdGhpcyBzdHJvbmdlciwgaGF2ZSBhIGR5bmFtaWMgbWFwcGluZyBpZmYgdGhlcmUncyBi b3RoIGEgcGluIGFuZAp1bnBpbiBmdW5jdGlvbi4gT3RoZXJ3aXNlIHRoaXMgZG9lc24ndCBtYWtl IGEgbG90IG9mIHNlbnNlIHRvIG1lLgoKPiArCj4gIAlpZiAoIXRyeV9tb2R1bGVfZ2V0KGV4cF9p bmZvLT5vd25lcikpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7Cj4gIAo+IEBAIC02NTMs NyArNjU3LDggQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQpOwo+ICAgKiBjYWxscyBh dHRhY2goKSBvZiBkbWFfYnVmX29wcyB0byBhbGxvdyBkZXZpY2Utc3BlY2lmaWMgYXR0YWNoIGZ1 bmN0aW9uYWxpdHkKPiAgICogQGRtYWJ1ZjoJCVtpbl0JYnVmZmVyIHRvIGF0dGFjaCBkZXZpY2Ug dG8uCj4gICAqIEBkZXY6CQlbaW5dCWRldmljZSB0byBiZSBhdHRhY2hlZC4KPiAtICogQGR5bmFt aWNfbWFwcGluZzoJW2luXQljYWxsaW5nIGNvbnZlbnRpb24gZm9yIG1hcC91bm1hcAo+ICsgKiBA aW1wb3J0ZXJfb3BzCVtpbl0JaW1wb3J0ZXIgb3BlcmF0aW9ucyBmb3IgdGhlIGF0dGFjaG1lbnQK PiArICogQGltcG9ydGVyX3ByaXYJW2luXQlpbXBvcnRlciBwcml2YXRlIHBvaW50ZXIgZm9yIHRo ZSBhdHRhY2htZW50Cj4gICAqCj4gICAqIFJldHVybnMgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCBwb2ludGVyIGZvciB0aGlzIGF0dGFjaG1lbnQuIEF0dGFjaG1lbnRzCj4gICAqIG11c3QgYmUg Y2xlYW5lZCB1cCBieSBjYWxsaW5nIGRtYV9idWZfZGV0YWNoKCkuCj4gQEAgLTY2OSw3ICs2NzQs OCBAQCBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4gICAqLwo+ICBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICoKPiAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gLQkJICAgICAgIGJvb2wgZHluYW1pY19t YXBwaW5nKQo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzICppbXBv cnRlcl9vcHMsCj4gKwkJICAgICAgIHZvaWQgKmltcG9ydGVyX3ByaXYpCj4gIHsKPiAgCXN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKPiAgCWludCByZXQ7Cj4gQEAgLTY4Myw3ICs2 ODksOCBAQCBkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0 cnVjdCBkZXZpY2UgKmRldiwKPiAgCj4gIAlhdHRhY2gtPmRldiA9IGRldjsKPiAgCWF0dGFjaC0+ ZG1hYnVmID0gZG1hYnVmOwo+IC0JYXR0YWNoLT5keW5hbWljX21hcHBpbmcgPSBkeW5hbWljX21h cHBpbmc7Cj4gKwlhdHRhY2gtPmltcG9ydGVyX29wcyA9IGltcG9ydGVyX29wczsKPiArCWF0dGFj aC0+aW1wb3J0ZXJfcHJpdiA9IGltcG9ydGVyX3ByaXY7Cj4gIAo+ICAJaWYgKGRtYWJ1Zi0+b3Bz LT5hdHRhY2gpIHsKPiAgCQlyZXQgPSBkbWFidWYtPm9wcy0+YXR0YWNoKGRtYWJ1ZiwgYXR0YWNo KTsKPiBAQCAtNzAyLDE1ICs3MDksMTkgQEAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAkgICAgZG1hX2J1Zl9pc19k eW5hbWljKGRtYWJ1ZikpIHsKPiAgCQlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiAgCj4gLQkJaWYg KGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCj4gKwkJaWYgKGRtYV9idWZfaXNf ZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpIHsKPiAgCQkJZG1hX3Jlc3ZfbG9jayhhdHRhY2gtPmRt YWJ1Zi0+cmVzdiwgTlVMTCk7Cj4gKwkJCXJldCA9IGRtYV9idWZfcGluKGF0dGFjaCk7Cj4gKwkJ CWlmIChyZXQpCj4gKwkJCQlnb3RvIGVycl91bmxvY2s7Cj4gKwkJfQo+ICAKPiAgCQlzZ3QgPSBk bWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNoLCBETUFfQklESVJFQ1RJT05BTCk7Cj4gIAkJ aWYgKCFzZ3QpCj4gIAkJCXNndCA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gIAkJaWYgKElTX0VSUihz Z3QpKSB7Cj4gIAkJCXJldCA9IFBUUl9FUlIoc2d0KTsKPiAtCQkJZ290byBlcnJfdW5sb2NrOwo+ ICsJCQlnb3RvIGVycl91bnBpbjsKPiAgCQl9Cj4gIAkJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhh dHRhY2gtPmRtYWJ1ZikpCj4gIAkJCWRtYV9yZXN2X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVz dik7Cj4gQEAgLTcyNCw2ICs3MzUsMTAgQEAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAlrZnJlZShhdHRhY2gpOwo+ ICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgCj4gK2Vycl91bnBpbjoKPiArCWlmIChkbWFfYnVm X2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ICsJCWRtYV9idWZfdW5waW4oYXR0YWNoKTsK PiArCj4gIGVycl91bmxvY2s6Cj4gIAlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1h YnVmKSkKPiAgCQlkbWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+IEBAIC03 NDQsNyArNzU5LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9keW5hbWljX2F0dGFjaCk7 Cj4gIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsCj4gIAkJCQkJICBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAtCXJldHVy biBkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKGRtYWJ1ZiwgZGV2LCBmYWxzZSk7Cj4gKwlyZXR1cm4g ZG1hX2J1Zl9keW5hbWljX2F0dGFjaChkbWFidWYsIGRldiwgTlVMTCwgTlVMTCk7Cj4gIH0KPiAg RVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9hdHRhY2gpOwo+ICAKPiBAQCAtNzY3LDggKzc4Miwx MCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPiAgCj4gIAkJZG1hYnVmLT5vcHMtPnVubWFwX2Rt YV9idWYoYXR0YWNoLCBhdHRhY2gtPnNndCwgYXR0YWNoLT5kaXIpOwo+ICAKPiAtCQlpZiAoZG1h X2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCQlpZiAoZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSkgewo+ICsJCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7Cj4gIAkJ CWRtYV9yZXN2X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4gKwkJfQo+ICAJfQo+ICAK PiAgCWRtYV9yZXN2X2xvY2soZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiBAQCAtNzgxLDYgKzc5OCw0 NCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChkbWFf YnVmX2RldGFjaCk7Cj4gIAo+ICsvKioKPiArICogZG1hX2J1Zl9waW4gLSBMb2NrIGRvd24gdGhl IERNQS1idWYKPiArICoKPiArICogQGF0dGFjaDoJW2luXQlhdHRhY2htZW50IHdoaWNoIHNob3Vs ZCBiZSBwaW5uZWQKPiArICoKPiArICogUmV0dXJuczoKPiArICogMCBvbiBzdWNjZXNzLCBuZWdh dGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZG1hX2J1Zl9waW4oc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmID0gYXR0YWNoLT5kbWFidWY7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlkbWFfcmVz dl9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+ICsKPiArCWlmIChkbWFidWYtPm9wcy0+cGlu KQo+ICsJCXJldCA9IGRtYWJ1Zi0+b3BzLT5waW4oYXR0YWNoKTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfcGluKTsKPiArCj4gKy8qKgo+ICsg KiBkbWFfYnVmX3VucGluIC0gUmVtb3ZlIGxvY2sgZnJvbSBETUEtYnVmCj4gKyAqCj4gKyAqIEBh dHRhY2g6CVtpbl0JYXR0YWNobWVudCB3aGljaCBzaG91bGQgYmUgdW5waW5uZWQKPiArICovCj4g K3ZvaWQgZG1hX2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4g K3sKPiArCXN0cnVjdCBkbWFfYnVmICpkbWFidWYgPSBhdHRhY2gtPmRtYWJ1ZjsKPiArCj4gKwlk bWFfcmVzdl9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+ICsKPiArCWlmIChkbWFidWYtPm9w cy0+dW5waW4pCj4gKwkJZG1hYnVmLT5vcHMtPnVucGluKGF0dGFjaCk7Cj4gK30KPiArRVhQT1JU X1NZTUJPTF9HUEwoZG1hX2J1Zl91bnBpbik7Cj4gKwo+ICAvKioKPiAgICogZG1hX2J1Zl9tYXBf YXR0YWNobWVudCAtIFJldHVybnMgdGhlIHNjYXR0ZXJsaXN0IHRhYmxlIG9mIHRoZSBhdHRhY2ht ZW50Owo+ICAgKiBtYXBwZWQgaW50byBfZGV2aWNlXyBhZGRyZXNzIHNwYWNlLiBJcyBhIHdyYXBw ZXIgZm9yIG1hcF9kbWFfYnVmKCkgb2YgdGhlCj4gQEAgLTgwMCw2ICs4NTUsNyBAQCBzdHJ1Y3Qg c2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoLAo+ICAJCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKPiAg ewo+ICAJc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZTsKPiArCWludCByOwo+ICAKPiAgCW1pZ2h0 X3NsZWVwKCk7Cj4gIAo+IEBAIC04MjEsMTMgKzg3NywyMyBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRt YV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ ICAJCXJldHVybiBhdHRhY2gtPnNndDsKPiAgCX0KPiAgCj4gLQlpZiAoZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5k bWFidWYpKSB7Cj4gIAkJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFidWYtPnJlc3Yp Owo+ICsJCWlmICghYXR0YWNoLT5pbXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KSB7CgpJbW8ganVz dCByZXF1aXJlIC0+bW92ZV9ub3RpZnkgZm9yIGltcG9ydGVycyB0aGF0IGdpdmUgeW91IGFuIG9w cwpmdW5jdGlvbi4gRG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSB0byBhbGxvdyBkeW5hbWljIHdp dGhvdXQgc3VwcG9ydAotPm1vdmVfbm90aWZ5LgoKPiArCQkJciA9IGRtYV9idWZfcGluKGF0dGFj aCk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIEVSUl9QVFIocik7Cj4gKwkJfQo+ICsJfQo+ ICAKPiAgCXNnX3RhYmxlID0gYXR0YWNoLT5kbWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNo LCBkaXJlY3Rpb24pOwo+ICAJaWYgKCFzZ190YWJsZSkKPiAgCQlzZ190YWJsZSA9IEVSUl9QVFIo LUVOT01FTSk7Cj4gIAo+ICsJaWYgKElTX0VSUihzZ190YWJsZSkgJiYgZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSAmJgo+ICsJICAgICFhdHRhY2gtPmltcG9ydGVyX29wcy0+bW92 ZV9ub3RpZnkpCj4gKwkJZG1hX2J1Zl91bnBpbihhdHRhY2gpOwo+ICsKPiAgCWlmICghSVNfRVJS KHNnX3RhYmxlKSAmJiBhdHRhY2gtPmRtYWJ1Zi0+b3BzLT5jYWNoZV9zZ3RfbWFwcGluZykgewo+ ICAJCWF0dGFjaC0+c2d0ID0gc2dfdGFibGU7Cj4gIAkJYXR0YWNoLT5kaXIgPSBkaXJlY3Rpb247 Cj4gQEAgLTg2Niw5ICs5MzIsMzMgQEAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ICAJCWRtYV9yZXN2X2Fzc2VydF9oZWxk KGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiAgCj4gIAlhdHRhY2gtPmRtYWJ1Zi0+b3BzLT51bm1h cF9kbWFfYnVmKGF0dGFjaCwgc2dfdGFibGUsIGRpcmVjdGlvbik7Cj4gKwo+ICsJaWYgKGRtYV9i dWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikgJiYKPiArCSAgICAhYXR0YWNoLT5pbXBvcnRl cl9vcHMtPm1vdmVfbm90aWZ5KQo+ICsJCWRtYV9idWZfdW5waW4oYXR0YWNoKTsKPiAgfQo+ICBF WFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQpOwo+ICAKPiArLyoqCj4g KyAqIGRtYV9idWZfbW92ZV9ub3RpZnkgLSBub3RpZnkgYXR0YWNobWVudHMgdGhhdCBETUEtYnVm IGlzIG1vdmluZwo+ICsgKgo+ICsgKiBAZG1hYnVmOglbaW5dCWJ1ZmZlciB3aGljaCBpcyBtb3Zp bmcKPiArICoKPiArICogSW5mb3JtcyBhbGwgYXR0YWNobWVuc3QgdGhhdCB0aGV5IG5lZWQgdG8g ZGVzdHJveSBhbmQgcmVjcmVhdGVkIGFsbCB0aGVpcgo+ICsgKiBtYXBwaW5ncy4KPiArICovCj4g K3ZvaWQgZG1hX2J1Zl9tb3ZlX25vdGlmeShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICt7Cj4g KwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gKwo+ICsJZG1hX3Jlc3ZfYXNz ZXJ0X2hlbGQoZG1hYnVmLT5yZXN2KTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF0dGFj aCwgJmRtYWJ1Zi0+YXR0YWNobWVudHMsIG5vZGUpCj4gKwkJaWYgKGF0dGFjaC0+aW1wb3J0ZXJf b3BzICYmIGF0dGFjaC0+aW1wb3J0ZXJfb3BzLT5tb3ZlX25vdGlmeSkKPiArCQkJYXR0YWNoLT5p bXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KGF0dGFjaCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9H UEwoZG1hX2J1Zl9tb3ZlX25vdGlmeSk7Cj4gKwo+ICAvKioKPiAgICogRE9DOiBjcHUgYWNjZXNz Cj4gICAqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k bWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCj4g aW5kZXggZDViY2RmZWZiYWQ2Li44ZTVhNjgxMDc1NTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMKPiBAQCAtNDE1LDYgKzQxNSw5IEBAIGFtZGdw dV9kbWFfYnVmX2NyZWF0ZV9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRtYV9i dWYgKmRtYV9idWYpCj4gIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyBhbWRncHVfZG1hX2J1Zl9hdHRhY2hfb3Bz ID0gewo+ICt9Owo+ICsKPiAgLyoqCj4gICAqIGFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0IC0gJmRy bV9kcml2ZXIuZ2VtX3ByaW1lX2ltcG9ydCBpbXBsZW1lbnRhdGlvbgo+ICAgKiBAZGV2OiBEUk0g ZGV2aWNlCj4gQEAgLTQ0Nyw3ICs0NTAsOCBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmFtZGdw dV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAoSVNfRVJS KG9iaikpCj4gIAkJcmV0dXJuIG9iajsKPiAgCj4gLQlhdHRhY2ggPSBkbWFfYnVmX2R5bmFtaWNf YXR0YWNoKGRtYV9idWYsIGRldi0+ZGV2LCB0cnVlKTsKPiArCWF0dGFjaCA9IGRtYV9idWZfZHlu YW1pY19hdHRhY2goZG1hX2J1ZiwgZGV2LT5kZXYsCj4gKwkJCQkJJmFtZGdwdV9kbWFfYnVmX2F0 dGFjaF9vcHMsIE5VTEwpOwo+ICAJaWYgKElTX0VSUihhdHRhY2gpKSB7Cj4gIAkJZHJtX2dlbV9v YmplY3RfcHV0KG9iaik7Cj4gIAkJcmV0dXJuIEVSUl9DQVNUKGF0dGFjaCk7Cj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiBp bmRleCBhZjczZjgzNWM1MWMuLjc0NTZiYjkzNzYzNSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xp bnV4L2RtYS1idWYuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gQEAgLTkzLDE0 ICs5Myw0MCBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+ICAJICovCj4gIAl2b2lkICgqZGV0YWNo KShzdHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICopOwo+ICAKPiAr CS8qKgo+ICsJICogQHBpbjoKPiArCSAqCj4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVm X3BpbiBhbmQgbGV0cyB0aGUgZXhwb3J0ZXIga25vdyB0aGF0IHRoZQo+ICsJICogRE1BLWJ1ZiBj YW4ndCBiZSBtb3ZlZCBhbnkgbW9yZS4KCkkgdGhpbmsgd2Ugc2hvdWxkIGFkZCBhIHdhcm5pbmcg aGVyZSB0aGF0IHBpbm5pbmcgaXMgb25seSBvayBmb3IgbGltaXRlZAp1c2UtY2FzZXMgKGxpa2Ug c2Nhbm91dCBvciBzaW1pbGFyKSwgYW5kIG5vdCBhcyBwYXJ0IG9mIGdlbmVyYWwgYnVmZmVyCm1h bmFnZW1lbnQuCgppOTE1IHVzZXMgdGVtcG9yYXJ5IHBpbnMgdGhyb3VnaCBpdCdzIGV4ZWNidWYg bWFuYWdlbWVudCAoYW5kIGV2ZXJ5d2hlcmUKZWxzZSksIHNvIHdlIGhhdmUgYSBfbG90XyBvZiBw ZW9wbGUgaW4gZHJpLWRldmVsIHdpdGggcXVpdGUgZGlmZmVyZW50CmlkZWFzIG9mIHdoYXQgdGhp cyBtaWdodCBiZSBmb3IgOi0pCgo+ICsJICoKPiArCSAqIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhl IGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgb3B0aW9uYWwuCj4gKwkgKgo+ICsJICogUmV0dXJuczoKPiArCSAqCj4gKwkgKiAwIG9uIHN1 Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArCSAqLwo+ICsJaW50ICgq cGluKShzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpOwo+ICsKPiArCS8qKgo+ICsJ ICogQHVucGluOgo+ICsJICoKPiArCSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5waW4g YW5kIGxldHMgdGhlIGV4cG9ydGVyIGtub3cgdGhhdCB0aGUKPiArCSAqIERNQS1idWYgY2FuIGJl IG1vdmVkIGFnYWluLgo+ICsJICoKPiArCSAqIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1 Zi0+cmVzdiBvYmplY3QgbG9ja2VkLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0 aW9uYWwuCj4gKwkgKi8KPiArCXZvaWQgKCp1bnBpbikoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoKTsKPiArCj4gIAkvKioKPiAgCSAqIEBtYXBfZG1hX2J1ZjoKPiAgCSAqCj4gIAkg KiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX21hcF9hdHRhY2htZW50KCkgYW5kIGlzIHVzZWQg dG8gbWFwIGEKPiAgCSAqIHNoYXJlZCAmZG1hX2J1ZiBpbnRvIGRldmljZSBhZGRyZXNzIHNwYWNl LCBhbmQgaXQgaXMgbWFuZGF0b3J5LiBJdAo+IC0JICogY2FuIG9ubHkgYmUgY2FsbGVkIGlmIEBh dHRhY2ggaGFzIGJlZW4gY2FsbGVkIHN1Y2Nlc3NmdWxseS4gVGhpcwo+IC0JICogZXNzZW50aWFs bHkgcGlucyB0aGUgRE1BIGJ1ZmZlciBpbnRvIHBsYWNlLCBhbmQgaXQgY2Fubm90IGJlIG1vdmVk Cj4gLQkgKiBhbnkgbW9yZQo+ICsJICogY2FuIG9ubHkgYmUgY2FsbGVkIGlmIEBhdHRhY2ggaGFz IGJlZW4gY2FsbGVkIHN1Y2Nlc3NmdWxseS4KPiAgCSAqCj4gIAkgKiBUaGlzIGNhbGwgbWF5IHNs ZWVwLCBlLmcuIHdoZW4gdGhlIGJhY2tpbmcgc3RvcmFnZSBmaXJzdCBuZWVkcyB0byBiZQo+ICAJ ICogYWxsb2NhdGVkLCBvciBtb3ZlZCB0byBhIGxvY2F0aW9uIHN1aXRhYmxlIGZvciBhbGwgY3Vy cmVudGx5IGF0dGFjaGVkCj4gQEAgLTE0MSw5ICsxNjcsNiBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMg ewo+ICAJICoKPiAgCSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5tYXBfYXR0YWNobWVu dCgpIGFuZCBzaG91bGQgdW5tYXAgYW5kCj4gIAkgKiByZWxlYXNlIHRoZSAmc2dfdGFibGUgYWxs b2NhdGVkIGluIEBtYXBfZG1hX2J1ZiwgYW5kIGl0IGlzIG1hbmRhdG9yeS4KPiAtCSAqIEl0IHNo b3VsZCBhbHNvIHVucGluIHRoZSBiYWNraW5nIHN0b3JhZ2UgaWYgdGhpcyBpcyB0aGUgbGFzdCBt YXBwaW5nCj4gLQkgKiBvZiB0aGUgRE1BIGJ1ZmZlciwgaXQgdGhlIGV4cG9ydGVyIHN1cHBvcnRz IGJhY2tpbmcgc3RvcmFnZQo+IC0JICogbWlncmF0aW9uLgoKVGhpcyBpcyBzdGlsbCB2YWxpZCBm b3Igbm9uLWR5bmFtaWMgZXhwb3J0ZXJzLiBJbW8ga2VlcCBidXQgY2xhcmlmeSB0aGF0LgoKPiAg CSAqLwo+ICAJdm9pZCAoKnVubWFwX2RtYV9idWYpKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KiwKPiAgCQkJICAgICAgc3RydWN0IHNnX3RhYmxlICosCj4gQEAgLTMzNiw2ICszNTksMzQgQEAg c3RydWN0IGRtYV9idWYgewo+ICAJfSBjYl9leGNsLCBjYl9zaGFyZWQ7Cj4gIH07Cj4gIAo+ICsv KioKPiArICogc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyAtIGltcG9ydGVyIG9wZXJhdGlvbnMg Zm9yIGFuIGF0dGFjaG1lbnQKPiArICogQG1vdmVfbm90aWZ5OiBbb3B0aW9uYWxdIG5vdGlmaWNh dGlvbiB0aGF0IHRoZSBETUEtYnVmIGlzIG1vdmluZwo+ICsgKgo+ICsgKiBBdHRhY2htZW50IG9w ZXJhdGlvbnMgaW1wbGVtZW50ZWQgYnkgdGhlIGltcG9ydGVyLgo+ICsgKi8KPiArc3RydWN0IGRt YV9idWZfYXR0YWNoX29wcyB7Cj4gKwkvKioKPiArCSAqIEBtb3ZlX25vdGlmeQo+ICsJICoKPiAr CSAqIElmIHRoaXMgY2FsbGJhY2sgaXMgcHJvdmlkZWQgdGhlIGZyYW1ld29yayBjYW4gYXZvaWQg cGlubmluZyB0aGUKPiArCSAqIGJhY2tpbmcgc3RvcmUgd2hpbGUgbWFwcGluZ3MgZXhpc3RzLgo+ ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggdGhlIGxvY2sgb2YgdGhl IHJlc2VydmF0aW9uIG9iamVjdAo+ICsJICogYXNzb2NpYXRlZCB3aXRoIHRoZSBkbWFfYnVmIGhl bGQgYW5kIHRoZSBtYXBwaW5nIGZ1bmN0aW9uIG11c3QgYmUKPiArCSAqIGNhbGxlZCB3aXRoIHRo aXMgbG9jayBoZWxkIGFzIHdlbGwuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IG5vIG1hcHBpbmcKPiAr CSAqIGlzIGNyZWF0ZWQgY29uY3VycmVudGx5IHdpdGggYW4gb25nb2luZyBtb3ZlIG9wZXJhdGlv bi4KPiArCSAqCj4gKwkgKiBNYXBwaW5ncyBzdGF5IHZhbGlkIGFuZCBhcmUgbm90IGRpcmVjdGx5 IGFmZmVjdGVkIGJ5IHRoaXMgY2FsbGJhY2suCj4gKwkgKiBCdXQgdGhlIERNQS1idWYgY2FuIG5v dyBiZSBpbiBhIGRpZmZlcmVudCBwaHlzaWNhbCBsb2NhdGlvbiwgc28gYWxsCj4gKwkgKiBtYXBw aW5ncyBzaG91bGQgYmUgZGVzdHJveWVkIGFuZCByZS1jcmVhdGVkIGFzIHNvb24gYXMgcG9zc2li bGUuCj4gKwkgKgo+ICsJICogTmV3IG1hcHBpbmdzIGNhbiBiZSBjcmVhdGVkIGFmdGVyIHRoaXMg Y2FsbGJhY2sgcmV0dXJucywgYW5kIHdpbGwKPiArCSAqIHBvaW50IHRvIHRoZSBuZXcgbG9jYXRp b24gb2YgdGhlIERNQS1idWYuCj4gKwkgKi8KPiArCXZvaWQgKCptb3ZlX25vdGlmeSkoc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPiArfTsKPiArCj4gIC8qKgo+ICAgKiBzdHJ1 Y3QgZG1hX2J1Zl9hdHRhY2htZW50IC0gaG9sZHMgZGV2aWNlLWJ1ZmZlciBhdHRhY2htZW50IGRh dGEKPiAgICogQGRtYWJ1ZjogYnVmZmVyIGZvciB0aGlzIGF0dGFjaG1lbnQuCj4gQEAgLTM0NCw4 ICszOTUsOSBAQCBzdHJ1Y3QgZG1hX2J1ZiB7Cj4gICAqIEBzZ3Q6IGNhY2hlZCBtYXBwaW5nLgo+ ICAgKiBAZGlyOiBkaXJlY3Rpb24gb2YgY2FjaGVkIG1hcHBpbmcuCj4gICAqIEBwcml2OiBleHBv cnRlciBzcGVjaWZpYyBhdHRhY2htZW50IGRhdGEuCj4gLSAqIEBkeW5hbWljX21hcHBpbmc6IHRy dWUgaWYgZG1hX2J1Zl9tYXAvdW5tYXBfYXR0YWNobWVudCgpIGlzIGNhbGxlZCB3aXRoIHRoZQo+ IC0gKiBkbWFfcmVzdiBsb2NrIGhlbGQuCj4gKyAqIEBpbXBvcnRlcl9vcHM6IGltcG9ydGVyIG9w ZXJhdGlvbnMgZm9yIHRoaXMgYXR0YWNobWVudCwgaWYgcHJvdmlkZWQKPiArICogZG1hX2J1Zl9t YXAvdW5tYXBfYXR0YWNobWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGRtYV9yZXN2IGxv Y2sgaGVsZC4KPiArICogQGltcG9ydGVyX3ByaXY6IGltcG9ydGVyIHNwZWNpZmljIGF0dGFjaG1l bnQgZGF0YS4KPiAgICoKPiAgICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQg aW5mb3JtYXRpb24gYmV0d2VlbiB0aGUgZG1hX2J1ZiBidWZmZXIKPiAgICogYW5kIGl0cyB1c2Vy IGRldmljZShzKS4gVGhlIGxpc3QgY29udGFpbnMgb25lIGF0dGFjaG1lbnQgc3RydWN0IHBlciBk ZXZpY2UKPiBAQCAtMzYyLDcgKzQxNCw4IEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgewo+ ICAJc3RydWN0IGxpc3RfaGVhZCBub2RlOwo+ICAJc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gIAll bnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXI7Cj4gLQlib29sIGR5bmFtaWNfbWFwcGluZzsKPiAr CWNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgKmltcG9ydGVyX29wczsKPiArCXZvaWQg KmltcG9ydGVyX3ByaXY7Cj4gIAl2b2lkICpwcml2Owo+ICB9Owo+ICAKPiBAQCAtNDM4LDE2ICs0 OTEsMTkgQEAgc3RhdGljIGlubGluZSBib29sIGRtYV9idWZfaXNfZHluYW1pYyhzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmKQo+ICBzdGF0aWMgaW5saW5lIGJvb2wKPiAgZG1hX2J1Zl9hdHRhY2htZW50 X2lzX2R5bmFtaWMoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICB7Cj4gLQly ZXR1cm4gYXR0YWNoLT5keW5hbWljX21hcHBpbmc7Cj4gKwlyZXR1cm4gISFhdHRhY2gtPmltcG9y dGVyX29wczsKCkhtIHdoeSBub3QgZG8gdGhlIHNhbWUgZm9yIGV4cG9ydGVycywgYW5kIG1ha2Ug dGhlbSBkeW5hbWljIGlmZiB0aGV5IGhhdmUKcGluL3VucGluPwotRGFuaWVsCgo+ICB9Cj4gIAo+ ICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmLAo+ICAJCQkJCSAgc3RydWN0IGRldmljZSAqZGV2KTsKPiAgc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqCj4gIGRtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYg KmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2LAo+IC0JCSAgICAgICBib29sIGR5bmFtaWNfbWFw cGluZyk7Cj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgKmltcG9y dGVyX29wcywKPiArCQkgICAgICAgdm9pZCAqaW1wb3J0ZXJfcHJpdik7Cj4gIHZvaWQgZG1hX2J1 Zl9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiAgCQkgICAgc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqYXR0YWNoKTsKPiAraW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCk7Cj4gK3ZvaWQgZG1hX2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gpOwo+ICAKPiAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0 KGNvbnN0IHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvICpleHBfaW5mbyk7Cj4gIAo+IC0tIAo+ IDIuMTcuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==