From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Intel-gfx] [PATCH 1/6] dma-buf: add dynamic DMA-buf handling v10 Date: Fri, 21 Jun 2019 11:20:22 +0200 Message-ID: <20190621092022.GB12905@phenom.ffwll.local> References: <20190618115455.1253-1-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: <20190618115455.1253-1-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: intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMTgsIDIwMTkgYXQgMDE6NTQ6NTBQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBPbiB0aGUgZXhwb3J0ZXIgc2lkZSB3ZSBhZGQgb3B0aW9uYWwgZXhwbGljaXQg cGlubmluZyBjYWxsYmFja3MuIElmIHRob3NlCj4gY2FsbGJhY2tzIGFyZSBpbXBsZW1lbnRlZCB0 aGUgZnJhbWV3b3JrIG5vIGxvbmdlciBjYWNoZXMgc2cgdGFibGVzIGFuZCB0aGUKPiBtYXAvdW5t YXAgY2FsbGJhY2tzIGFyZSBhbHdheXMgY2FsbGVkIHdpdGggdGhlIGxvY2sgb2YgdGhlIHJlc2Vy dmF0aW9uIG9iamVjdAo+IGhlbGQuCj4gCj4gT24gdGhlIGltcG9ydGVyIHNpZGUgd2UgYWRkIGFu IG9wdGlvbmFsIGludmFsaWRhdGUgY2FsbGJhY2suIFRoaXMgY2FsbGJhY2sgaXMKPiB1c2VkIGJ5 IHRoZSBleHBvcnRlciB0byBpbmZvcm0gdGhlIGltcG9ydGVycyB0aGF0IHRoZWlyIG1hcHBpbmdz IHNob3VsZCBiZQo+IGRlc3Ryb3llZCBhcyBzb29uIGFzIHBvc3NpYmxlLgo+IAo+IFRoaXMgYWxs b3dzIHRoZSBleHBvcnRlciB0byBwcm92aWRlIHRoZSBtYXBwaW5ncyB3aXRob3V0IHRoZSBuZWVk IHRvIHBpbgo+IHRoZSBiYWNraW5nIHN0b3JlLgo+IAo+IHYyOiBkb24ndCB0cnkgdG8gaW52YWxp ZGF0ZSBtYXBwaW5ncyB3aGVuIHRoZSBjYWxsYmFjayBpcyBOVUxMLAo+ICAgICBsb2NrIHRoZSBy ZXNlcnZhdGlvbiBvYmogd2hpbGUgdXNpbmcgdGhlIGF0dGFjaG1lbnRzLAo+ICAgICBhZGQgaGVs cGVyIHRvIHNldCB0aGUgY2FsbGJhY2sKPiB2MzogbW92ZSBmbGFnIGZvciBpbnZhbGlkYXRpb24g c3VwcG9ydCBpbnRvIHRoZSBETUEtYnVmLAo+ICAgICB1c2UgbmV3IGF0dGFjaF9pbmZvIHN0cnVj dHVyZSB0byBzZXQgdGhlIGNhbGxiYWNrCj4gdjQ6IHVzZSBpbXBvcnRlcl9wcml2IGZpZWxkIGlu c3RlYWQgb2YgbWFuZ2xpbmcgZXhwb3J0ZXIgcHJpdi4KPiB2NTogZHJvcCBpbnZhbGlkYXRpb25f c3VwcG9ydGVkIGZsYWcKPiB2Njogc3F1YXNoIHRvZ2V0aGVyIHdpdGggcGluL3VucGluIGNoYW5n ZXMKPiB2NzogcGluL3VucGluIHRha2VzIGFuIGF0dGFjaG1lbnQgbm93Cj4gdjg6IG51a2UgZG1h X2J1Zl9hdHRhY2htZW50XyhtYXB8dW5tYXApX2xvY2tlZCwKPiAgICAgZXZlcnl0aGluZyBpcyBu b3cgaGFuZGxlZCBiYWNrd2FyZCBjb21wYXRpYmxlCj4gdjk6IGFsd2F5cyBjYWNoZSB3aGVuIGV4 cG9ydC9pbXBvcnRlciBkb24ndCBhZ3JlZSBvbiBkeW5hbWljIGhhbmRsaW5nCj4gdjEwOiBtaW5p bWFsIHN0eWxlIGNsZWFudXAKPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxj aHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVm LmMgfCAxODggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgaW5jbHVk ZS9saW51eC9kbWEtYnVmLmggICB8IDEwOSArKysrKysrKysrKysrKysrKysrKy0tCj4gIDIgZmls ZXMgY2hhbmdlZCwgMjgzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1i dWYuYwo+IGluZGV4IDZjMTVkZWI1ZDRhZC4uOWM5Yzk1YTg4NjU1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5j Cj4gQEAgLTUzMSw2ICs1MzEsOSBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoY29u c3Qgc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKQo+ICAJCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOwo+ICAJfQo+ICAKPiArCWlmIChXQVJOX09OKGV4cF9pbmZvLT5vcHMtPmNh Y2hlX3NndF9tYXBwaW5nICYmIGV4cF9pbmZvLT5vcHMtPnBpbikpCj4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7Cj4gKwo+ICAJaWYgKCF0cnlfbW9kdWxlX2dldChleHBfaW5mby0+b3duZXIp KQo+ICAJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwo+ICAKPiBAQCAtNjUxLDEwICs2NTQsMTIg QEAgdm9pZCBkbWFfYnVmX3B1dChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4gIAo+ICAvKioKPiAtICogZG1hX2J1Zl9hdHRhY2ggLSBB ZGQgdGhlIGRldmljZSB0byBkbWFfYnVmJ3MgYXR0YWNobWVudHMgbGlzdDsgb3B0aW9uYWxseSwK PiArICogZG1hX2J1Zl9keW5hbWljX2F0dGFjaCAtIEFkZCB0aGUgZGV2aWNlIHRvIGRtYV9idWYn cyBhdHRhY2htZW50cyBsaXN0OyBvcHRpb25hbGx5LAo+ICAgKiBjYWxscyBhdHRhY2goKSBvZiBk bWFfYnVmX29wcyB0byBhbGxvdyBkZXZpY2Utc3BlY2lmaWMgYXR0YWNoIGZ1bmN0aW9uYWxpdHkK PiAtICogQGRtYWJ1ZjoJW2luXQlidWZmZXIgdG8gYXR0YWNoIGRldmljZSB0by4KPiAtICogQGRl djoJW2luXQlkZXZpY2UgdG8gYmUgYXR0YWNoZWQuCj4gKyAqIEBkbWFidWY6CQlbaW5dCWJ1ZmZl ciB0byBhdHRhY2ggZGV2aWNlIHRvLgo+ICsgKiBAZGV2OgkJW2luXQlkZXZpY2UgdG8gYmUgYXR0 YWNoZWQuCj4gKyAqIEBpbXBvcnRlcl9vcHMJW2luXQlpbXBvcnRlciBvcGVyYXRpb25zIGZvciB0 aGUgYXR0YWNobWVudAo+ICsgKiBAaW1wb3J0ZXJfcHJpdglbaW5dCWltcG9ydGVyIHByaXZhdGUg cG9pbnRlciBmb3IgdGhlIGF0dGFjaG1lbnQKPiAgICoKPiAgICogUmV0dXJucyBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50IHBvaW50ZXIgZm9yIHRoaXMgYXR0YWNobWVudC4gQXR0YWNobWVudHMK PiAgICogbXVzdCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgZG1hX2J1Zl9kZXRhY2goKS4KPiBA QCAtNjY4LDggKzY3MywxMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4gICAq IGFjY2Vzc2libGUgdG8gQGRldiwgYW5kIGNhbm5vdCBiZSBtb3ZlZCB0byBhIG1vcmUgc3VpdGFi bGUgcGxhY2UuIFRoaXMgaXMKPiAgICogaW5kaWNhdGVkIHdpdGggdGhlIGVycm9yIGNvZGUgLUVC VVNZLgo+ICAgKi8KPiAtc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRhY2go c3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiAtCQkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldikKPiAr c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqCj4gK2RtYV9idWZfZHluYW1pY19hdHRhY2goc3Ry dWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCSAgICAgICBjb25z dCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzICppbXBvcnRlcl9vcHMsCj4gKwkJICAgICAgIHZv aWQgKmltcG9ydGVyX3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0 dGFjaDsKPiAgCWludCByZXQ7Cj4gQEAgLTY4Myw2ICs2OTAsOCBAQCBzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+ICAKPiAg CWF0dGFjaC0+ZGV2ID0gZGV2Owo+ICAJYXR0YWNoLT5kbWFidWYgPSBkbWFidWY7Cj4gKwlhdHRh Y2gtPmltcG9ydGVyX29wcyA9IGltcG9ydGVyX29wczsKPiArCWF0dGFjaC0+aW1wb3J0ZXJfcHJp diA9IGltcG9ydGVyX3ByaXY7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsKPiAg Cj4gQEAgLTY5MSwxNiArNzAwLDcyIEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9i dWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gIAkJaWYgKHJldCkKPiAgCQkJZ290 byBlcnJfYXR0YWNoOwo+ICAJfQo+ICsJcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2soZG1hYnVmLT5y ZXN2LCBOVUxMKTsKPiAgCWxpc3RfYWRkKCZhdHRhY2gtPm5vZGUsICZkbWFidWYtPmF0dGFjaG1l bnRzKTsKPiArCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soZG1hYnVmLT5yZXN2KTsKPiAgCj4g IAltdXRleF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7Cj4gIAo+ICsJLyogV2hlbiBlaXRoZXIgdGhl IGltcG9ydGVyIG9yIHRoZSBleHBvcnRlciBjYW4ndCBoYW5kbGUgZHluYW1pYwo+ICsJICogbWFw cGluZ3Mgd2UgY2FjaGUgdGhlIG1hcHBpbmcgaGVyZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCB0aGUK PiArCSAqIHJlc2VydmF0aW9uIG9iamVjdCBsb2NrLgo+ICsJICovCj4gKwlpZiAoZG1hX2J1Zl9h dHRhY2htZW50X2lzX2R5bmFtaWMoYXR0YWNoKSAhPQo+ICsJICAgIGRtYV9idWZfaXNfZHluYW1p YyhkbWFidWYpKSB7Cj4gKwkJc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gKwo+ICsJCWlmIChkbWFf YnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKSB7Cj4gKwkJCXJlc2VydmF0aW9uX29iamVj dF9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiArCQkJcmV0ID0gZG1hX2J1Zl9w aW4oYXR0YWNoKTsKPiArCQkJaWYgKHJldCkKPiArCQkJCWdvdG8gZXJyX3VubG9jazsKPiArCQl9 Cj4gKwo+ICsJCXNndCA9IGRtYWJ1Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRhY2gsIERNQV9CSURJ UkVDVElPTkFMKTsKPiArCQlpZiAoIXNndCkKPiArCQkJc2d0ID0gRVJSX1BUUigtRU5PTUVNKTsK PiArCQlpZiAoSVNfRVJSKHNndCkpIHsKPiArCQkJcmV0ID0gUFRSX0VSUihzZ3QpOwo+ICsJCQln b3RvIGVycl91bnBpbjsKPiArCQl9Cj4gKwkJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gt PmRtYWJ1ZikpCj4gKwkJCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soYXR0YWNoLT5kbWFidWYt PnJlc3YpOwo+ICsJCWF0dGFjaC0+c2d0ID0gc2d0Owo+ICsJCWF0dGFjaC0+ZGlyID0gRE1BX0JJ RElSRUNUSU9OQUw7Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIGF0dGFjaDsKPiAgCj4gIGVycl9hdHRh Y2g6Cj4gIAlrZnJlZShhdHRhY2gpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkbWFidWYtPmxvY2spOwo+ ICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCj4gK2Vycl91bnBpbjoKPiArCWlmIChkbWFfYnVm X2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ICsJCWRtYV9idWZfdW5waW4oYXR0YWNoKTsK PiArCj4gK2Vycl91bmxvY2s6Cj4gKwlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1h YnVmKSkKPiArCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2 KTsKPiArCj4gKwlkbWFfYnVmX2RldGFjaChkbWFidWYsIGF0dGFjaCk7Cj4gKwlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfZHluYW1pY19hdHRh Y2gpOwo+ICsKPiArLyoqCj4gKyAqIGRtYV9idWZfYXR0YWNoIC0gV3JhcHBlciBmb3IgZG1hX2J1 Zl9keW5hbWljX2F0dGFjaAo+ICsgKiBAZG1hYnVmOglbaW5dCWJ1ZmZlciB0byBhdHRhY2ggZGV2 aWNlIHRvLgo+ICsgKiBAZGV2OglbaW5dCWRldmljZSB0byBiZSBhdHRhY2hlZC4KPiArICoKPiAr ICogV3JhcHBlciB0byBjYWxsIGRtYV9idWZfZHluYW1pY19hdHRhY2goKSBmb3IgZHJpdmVycyB3 aGljaCBzdGlsbCB1c2UgYSBzdGF0aWMKPiArICogbWFwcGluZy4KPiArICovCj4gK3N0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs Cj4gKwkJCQkJICBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXJldHVybiBkbWFfYnVmX2R5 bmFtaWNfYXR0YWNoKGRtYWJ1ZiwgZGV2LCBOVUxMLCBOVUxMKTsKPiAgfQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChkbWFfYnVmX2F0dGFjaCk7Cj4gIAo+IEBAIC03MTcsMTEgKzc4MiwyMiBAQCB2b2lk IGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCkKPiAgCWlmIChXQVJOX09OKCFkbWFidWYgfHwgIWF0dGFjaCkpCj4g IAkJcmV0dXJuOwo+ICAKPiAtCWlmIChhdHRhY2gtPnNndCkKPiArCWlmIChhdHRhY2gtPnNndCkg ewo+ICsJCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ICsJCQlyZXNl cnZhdGlvbl9vYmplY3RfbG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdiwgTlVMTCk7Cj4gKwo+ICAJ CWRtYWJ1Zi0+b3BzLT51bm1hcF9kbWFfYnVmKGF0dGFjaCwgYXR0YWNoLT5zZ3QsIGF0dGFjaC0+ ZGlyKTsKPiAgCj4gKwkJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpIHsK PiArCQkJZG1hX2J1Zl91bnBpbihhdHRhY2gpOwo+ICsJCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5s b2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJbXV0ZXhfbG9j aygmZG1hYnVmLT5sb2NrKTsKPiArCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKGRtYWJ1Zi0+cmVz diwgTlVMTCk7Cj4gIAlsaXN0X2RlbCgmYXR0YWNoLT5ub2RlKTsKPiArCXJlc2VydmF0aW9uX29i amVjdF91bmxvY2soZG1hYnVmLT5yZXN2KTsKPiAgCWlmIChkbWFidWYtPm9wcy0+ZGV0YWNoKQo+ ICAJCWRtYWJ1Zi0+b3BzLT5kZXRhY2goZG1hYnVmLCBhdHRhY2gpOwo+ICAKPiBAQCAtNzMwLDYg KzgwNiw0NCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQ TChkbWFfYnVmX2RldGFjaCk7Cj4gIAo+ICsvKioKPiArICogZG1hX2J1Zl9waW4gLSBMb2NrIGRv d24gdGhlIERNQS1idWYKPiArICoKPiArICogQGF0dGFjaDoJW2luXQlhdHRhY2htZW50IHdoaWNo IHNob3VsZCBiZSBwaW5uZWQKPiArICoKPiArICogUmV0dXJuczoKPiArICogMCBvbiBzdWNjZXNz LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZG1hX2J1Zl9w aW4oc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmID0gYXR0YWNoLT5kbWFidWY7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwly ZXNlcnZhdGlvbl9vYmplY3RfYXNzZXJ0X2hlbGQoZG1hYnVmLT5yZXN2KTsKPiArCj4gKwlpZiAo ZG1hYnVmLT5vcHMtPnBpbikKPiArCQlyZXQgPSBkbWFidWYtPm9wcy0+cGluKGF0dGFjaCk7Cj4g Kwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3Bpbik7 Cj4gKwo+ICsvKioKPiArICogZG1hX2J1Zl91bnBpbiAtIFJlbW92ZSBsb2NrIGZyb20gRE1BLWJ1 Zgo+ICsgKgo+ICsgKiBAYXR0YWNoOglbaW5dCWF0dGFjaG1lbnQgd2hpY2ggc2hvdWxkIGJlIHVu cGlubmVkCj4gKyAqLwo+ICt2b2lkIGRtYV9idWZfdW5waW4oc3RydWN0IGRtYV9idWZfYXR0YWNo bWVudCAqYXR0YWNoKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmID0gYXR0YWNoLT5k bWFidWY7Cj4gKwo+ICsJcmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKGRtYWJ1Zi0+cmVz dik7Cj4gKwo+ICsJaWYgKGRtYWJ1Zi0+b3BzLT51bnBpbikKPiArCQlkbWFidWYtPm9wcy0+dW5w aW4oYXR0YWNoKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3VucGluKTsKPiAr Cj4gIC8qKgo+ICAgKiBkbWFfYnVmX21hcF9hdHRhY2htZW50IC0gUmV0dXJucyB0aGUgc2NhdHRl cmxpc3QgdGFibGUgb2YgdGhlIGF0dGFjaG1lbnQ7Cj4gICAqIG1hcHBlZCBpbnRvIF9kZXZpY2Vf IGFkZHJlc3Mgc3BhY2UuIElzIGEgd3JhcHBlciBmb3IgbWFwX2RtYV9idWYoKSBvZiB0aGUKPiBA QCAtNzQ5LDYgKzg2Myw3IEBAIHN0cnVjdCBzZ190YWJsZSAqZG1hX2J1Zl9tYXBfYXR0YWNobWVu dChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4gIAkJCQkJZW51bSBkbWFfZGF0 YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQo+ICB7Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxl Owo+ICsJaW50IHI7Cj4gIAo+ICAJbWlnaHRfc2xlZXAoKTsKPiAgCj4gQEAgLTc2NywxMCArODgy LDM4IEBAIHN0cnVjdCBzZ190YWJsZSAqZG1hX2J1Zl9tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4gIAkJcmV0dXJuIGF0dGFjaC0+c2d0Owo+ICAJfQo+ ICAKPiArCWlmIChkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHluYW1pYyhhdHRhY2gpKSB7Cj4gKwkJ cmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiAr Cj4gKwkJLyoKPiArCQkgKiBNYXBwaW5nIGEgRE1BLWJ1ZiBjYW4gdHJpZ2dlciBpdHMgaW52YWxp ZGF0aW9uLCBwcmV2ZW50Cj4gKwkJICogc2VuZGluZyB0aGlzIGV2ZW50IHRvIHRoZSBjYWxsZXIg YnkgdGVtcG9yYXJ5IHJlbW92aW5nCj4gKwkJICogdGhpcyBhdHRhY2htZW50IGZyb20gdGhlIGxp c3QuCj4gKwkJICovCj4gKwkJbGlzdF9kZWwoJmF0dGFjaC0+bm9kZSk7CgpJJ20gc3RpbGwgaHVu ZyB1cCBhYm91dCB0aGlzLCB0aGF0IHN0aWxsIGZlZWxzIGxpa2UgbGVha2luZyByYW5kb20gdHRt CmltcGxlbWVudGF0aW9uIGRldGFpbHMgaW50byB0aGUgZG1hLWJ1ZiBpbnRlcmZhY2VzLiBBbmQg aXQncyBhc3ltbWV0cmljOgoKLSBXaGVuIGFjcXVpcmluZyBhIGJ1ZmZlciBtYXBwaW5nICh3aGV0 aGVyIHAycCBvciBzeXN0ZW0gbWVtb3J5IHNnIG9yCiAgd2hhdGV2ZXIpIHdlIGFsd2F5cyBoYXZl IHRvIHdhaXQgZm9yIHBlbmRpbmcgZmVuY2VzIGJlZm9yZSB3ZSBjYW4gYWNjZXNzCiAgdGhlIGJ1 ZmZlci4gQXQgbGVhc3QgZm9yIGZ1bGwgZHluYW1pYyBkbWEtYnVmIGFjY2Vzcy4KCi0gU2FtZSBp cyB0cnVlIHdoZW4gZHJvcHBpbmcgYSBtYXBwaW5nOiBXZSBjb3VsZCBkcm9wIHRoZSBtYXBwaW5n CiAgaW1tZWRpYXRlbHksIGJ1dCBvbmx5IGFjdHVhbGx5IHJlbGVhc2UgaXQgd2hlbiB0aGF0IGZl bmNlIGhhcyBzaWduYWxsZWQuCiAgVGhlbiB0aGlzIGhhY2sgaGVyZSB3b3VsZG4ndCBiZSBuZWNl c3NhcnkuCgpJdCBmZWVscyBhIGJpdCBsaWtlIHRoaXMgaXMganVzdCBhbiBhcnRpZmFjdCBvZiBo b3cgdHRtIGN1cnJlbnRseSBkb2VzIGJvCm1vdmVzIHdpdGggdGhlIHNoYWRvdyBiby4gVGhlcmUn cyBvdGhlciB3YXlzIHRvIGZpeCB0aGF0LCB5b3UgY291bGQganVzdApoYXZlIGEgbWVtb3J5IG1h bmFnZXIgcmVzZXJ2YXRpb24gb2YgYSBnaXZlbiByYW5nZSBvciB3aGF0ZXZlciBhbmQgYQpyZWxl YXNlIGZlbmNlIGZyb20gd2hlbiBpdCdzIGFjdHVhbGx5IGdvb2QgdG8gdXNlLgoKSW1vIHRoZSBi ZWxvdyBzZW1hbnRpY3Mgd291bGQgYmUgbXVjaCBjbGVhbmVyOgoKLSBpbnZhbGlkYXRlIG1heSBh ZGQgbmV3IGZlbmNlcwotIGludmFsaWRhdGUgX211c3RfIHVubWFwIGl0cyBtYXBwaW5ncwotIGFu IHVubWFwIG11c3Qgd2FpdCBmb3IgY3VycmVudCBmZW5jZXMgYmVmb3JlIHRoZSBtYXBwaW5nIGNh biBiZQogIHJlbGVhc2VkLgoKSW1vIHRoZXJlJ3Mgbm8gcmVhc29uIHdoeSB1bm1hcCBpcyBzcGVj aWFsLCBhbmQgdGhlIG9ubHkgdGhpbmcgd2hlcmUgd2UKZG9uJ3QgdXNlIGZlbmNlcyB0byBnYXRl IGFjY2VzcyB0byByZXNvdXJjZXMvbWVtb3J5IHdoZW4gaXQncyBpbiB0aGUKcHJvY2VzcyBvZiBn ZXR0aW5nIG1vdmVkIGFyb3VuZC4KCmJ0dyB0aGlzIGlzIGxpa2UgdGhlIDJuZCBvciAzcmQgdGlt ZSBJJ20gdHlwaW5nIHRoaXMsIGhhdmVuJ3Qgc2VlbiB5b3VyCnRob3VnaHRzIG9uIHRoaXMgeWV0 LgoKVGhhbmtzLCBEYW5pZWwKCj4gKwo+ICsJfSBlbHNlIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMo YXR0YWNoLT5kbWFidWYpKSB7Cj4gKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2soYXR0YWNoLT5k bWFidWYtPnJlc3YsIE5VTEwpOwo+ICsJCXIgPSBkbWFfYnVmX3BpbihhdHRhY2gpOwo+ICsJCWlm IChyKSB7Cj4gKwkJCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJl c3YpOwo+ICsJCQlyZXR1cm4gRVJSX1BUUihyKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJc2dfdGFi bGUgPSBhdHRhY2gtPmRtYWJ1Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRhY2gsIGRpcmVjdGlvbik7 Cj4gIAlpZiAoIXNnX3RhYmxlKQo+ICAJCXNnX3RhYmxlID0gRVJSX1BUUigtRU5PTUVNKTsKPiAg Cj4gKwlpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMoYXR0YWNoKSkgewo+ICsJCWxp c3RfYWRkKCZhdHRhY2gtPm5vZGUsICZhdHRhY2gtPmRtYWJ1Zi0+YXR0YWNobWVudHMpOwo+ICsK PiArCX0gZWxzZSBpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkgewo+ICsJ CWlmIChJU19FUlIoc2dfdGFibGUpKQo+ICsJCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7Cj4gKwkJ cmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4gKwl9Cj4g Kwo+ICAJaWYgKCFJU19FUlIoc2dfdGFibGUpICYmIGF0dGFjaC0+ZG1hYnVmLT5vcHMtPmNhY2hl X3NndF9tYXBwaW5nKSB7Cj4gIAkJYXR0YWNoLT5zZ3QgPSBzZ190YWJsZTsKPiAgCQlhdHRhY2gt PmRpciA9IGRpcmVjdGlvbjsKPiBAQCAtODAyLDEwICs5NDUsNDEgQEAgdm9pZCBkbWFfYnVmX3Vu bWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ICAJaWYg KGF0dGFjaC0+c2d0ID09IHNnX3RhYmxlKQo+ICAJCXJldHVybjsKPiAgCj4gKwlpZiAoZG1hX2J1 Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMoYXR0YWNoKSkKPiArCQlyZXNlcnZhdGlvbl9vYmplY3Rf YXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+ICsJZWxzZSBpZiAoZG1hX2J1Zl9p c19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCQlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhh dHRhY2gtPmRtYWJ1Zi0+cmVzdiwgTlVMTCk7Cj4gKwo+ICAJYXR0YWNoLT5kbWFidWYtPm9wcy0+ dW5tYXBfZG1hX2J1ZihhdHRhY2gsIHNnX3RhYmxlLCBkaXJlY3Rpb24pOwo+ICsKPiArCWlmIChk bWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpICYmCj4gKwkgICAgIWRtYV9idWZfYXR0 YWNobWVudF9pc19keW5hbWljKGF0dGFjaCkpIHsKPiArCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7 Cj4gKwkJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4g Kwl9Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KTsK PiAgCj4gKy8qKgo+ICsgKiBkbWFfYnVmX2ludmFsaWRhdGVfbWFwcGluZ3MgLSBpbnZhbGlkYXRl IGFsbCBtYXBwaW5ncyBvZiB0aGlzIGRtYV9idWYKPiArICoKPiArICogQGRtYWJ1ZjoJW2luXQli dWZmZXIgd2hpY2ggbWFwcGluZ3Mgc2hvdWxkIGJlIGludmFsaWRhdGVkCj4gKyAqCj4gKyAqIElu Zm9ybXMgYWxsIGF0dGFjaG1lbnN0IHRoYXQgdGhleSBuZWVkIHRvIGRlc3Ryb3kgYW5kIHJlY3Jl YXRlZCBhbGwgdGhlaXIKPiArICogbWFwcGluZ3MuCj4gKyAqLwo+ICt2b2lkIGRtYV9idWZfaW52 YWxpZGF0ZV9tYXBwaW5ncyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gKwo+ICsJcmVzZXJ2YXRpb25fb2JqZWN0X2Fz c2VydF9oZWxkKGRtYWJ1Zi0+cmVzdik7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShhdHRh Y2gsICZkbWFidWYtPmF0dGFjaG1lbnRzLCBub2RlKQo+ICsJCWlmIChhdHRhY2gtPmltcG9ydGVy X29wcyAmJiBhdHRhY2gtPmltcG9ydGVyX29wcy0+aW52YWxpZGF0ZSkKPiArCQkJYXR0YWNoLT5p bXBvcnRlcl9vcHMtPmludmFsaWRhdGUoYXR0YWNoKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQ TChkbWFfYnVmX2ludmFsaWRhdGVfbWFwcGluZ3MpOwo+ICsKPiAgLyoqCj4gICAqIERPQzogY3B1 IGFjY2Vzcwo+ICAgKgo+IEBAIC0xMjI1LDEwICsxMzk5LDEyIEBAIHN0YXRpYyBpbnQgZG1hX2J1 Zl9kZWJ1Z19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKQo+ICAJCXNlcV9w dXRzKHMsICJcdEF0dGFjaGVkIERldmljZXM6XG4iKTsKPiAgCQlhdHRhY2hfY291bnQgPSAwOwo+ ICAKPiArCQlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhidWZfb2JqLT5yZXN2LCBOVUxMKTsKPiAg CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF0dGFjaF9vYmosICZidWZfb2JqLT5hdHRhY2htZW50cywg bm9kZSkgewo+ICAJCQlzZXFfcHJpbnRmKHMsICJcdCVzXG4iLCBkZXZfbmFtZShhdHRhY2hfb2Jq LT5kZXYpKTsKPiAgCQkJYXR0YWNoX2NvdW50Kys7Cj4gIAkJfQo+ICsJCXJlc2VydmF0aW9uX29i amVjdF91bmxvY2soYnVmX29iai0+cmVzdik7Cj4gIAo+ICAJCXNlcV9wcmludGYocywgIlRvdGFs ICVkIGRldmljZXMgYXR0YWNoZWRcblxuIiwKPiAgCQkJCWF0dGFjaF9jb3VudCk7Cj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgK PiBpbmRleCAwMWFkNWI5NDJhNmYuLmY5Yzk2YmY1NmJjOCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRl L2xpbnV4L2RtYS1idWYuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gQEAgLTky LDE0ICs5Miw0MCBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+ICAJICovCj4gIAl2b2lkICgqZGV0 YWNoKShzdHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICopOwo+ICAK PiArCS8qKgo+ICsJICogQHBpbjoKPiArCSAqCj4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFf YnVmX3BpbiBhbmQgbGV0cyB0aGUgZXhwb3J0ZXIga25vdyB0aGF0IHRoZQo+ICsJICogRE1BLWJ1 ZiBjYW4ndCBiZSBtb3ZlZCBhbnkgbW9yZS4KPiArCSAqCj4gKwkgKiBUaGlzIGlzIGNhbGxlZCB3 aXRoIHRoZSBkbWFidWYtPnJlc3Ygb2JqZWN0IGxvY2tlZC4KPiArCSAqCj4gKwkgKiBUaGlzIGNh bGxiYWNrIGlzIG9wdGlvbmFsLgo+ICsJICoKPiArCSAqIFJldHVybnM6Cj4gKwkgKgo+ICsJICog MCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKwkgKi8KPiAr CWludCAoKnBpbikoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPiArCj4gKwkv KioKPiArCSAqIEB1bnBpbjoKPiArCSAqCj4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVm X3VucGluIGFuZCBsZXRzIHRoZSBleHBvcnRlciBrbm93IHRoYXQgdGhlCj4gKwkgKiBETUEtYnVm IGNhbiBiZSBtb3ZlZCBhZ2Fpbi4KPiArCSAqCj4gKwkgKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHRo ZSBkbWFidWYtPnJlc3Ygb2JqZWN0IGxvY2tlZC4KPiArCSAqCj4gKwkgKiBUaGlzIGNhbGxiYWNr IGlzIG9wdGlvbmFsLgo+ICsJICovCj4gKwl2b2lkICgqdW5waW4pKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCk7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAbWFwX2RtYV9idWY6Cj4gIAkg Kgo+ICAJICogVGhpcyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl9tYXBfYXR0YWNobWVudCgpIGFuZCBp cyB1c2VkIHRvIG1hcCBhCj4gIAkgKiBzaGFyZWQgJmRtYV9idWYgaW50byBkZXZpY2UgYWRkcmVz cyBzcGFjZSwgYW5kIGl0IGlzIG1hbmRhdG9yeS4gSXQKPiAtCSAqIGNhbiBvbmx5IGJlIGNhbGxl ZCBpZiBAYXR0YWNoIGhhcyBiZWVuIGNhbGxlZCBzdWNjZXNzZnVsbHkuIFRoaXMKPiAtCSAqIGVz c2VudGlhbGx5IHBpbnMgdGhlIERNQSBidWZmZXIgaW50byBwbGFjZSwgYW5kIGl0IGNhbm5vdCBi ZSBtb3ZlZAo+IC0JICogYW55IG1vcmUKPiArCSAqIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiBAYXR0 YWNoIGhhcyBiZWVuIGNhbGxlZCBzdWNjZXNzZnVsbHkuCj4gIAkgKgo+ICAJICogVGhpcyBjYWxs IG1heSBzbGVlcCwgZS5nLiB3aGVuIHRoZSBiYWNraW5nIHN0b3JhZ2UgZmlyc3QgbmVlZHMgdG8g YmUKPiAgCSAqIGFsbG9jYXRlZCwgb3IgbW92ZWQgdG8gYSBsb2NhdGlvbiBzdWl0YWJsZSBmb3Ig YWxsIGN1cnJlbnRseSBhdHRhY2hlZAo+IEBAIC0xMjAsNiArMTQ2LDkgQEAgc3RydWN0IGRtYV9i dWZfb3BzIHsKPiAgCSAqIGFueSBvdGhlciBraW5kIG9mIHNoYXJpbmcgdGhhdCB0aGUgZXhwb3J0 ZXIgbWlnaHQgd2lzaCB0byBtYWtlCj4gIAkgKiBhdmFpbGFibGUgdG8gYnVmZmVyLXVzZXJzLgo+ ICAJICoKPiArCSAqIFRoaXMgaXMgYWx3YXlzIGNhbGxlZCB3aXRoIHRoZSBkbWFidWYtPnJlc3Yg b2JqZWN0IGxvY2tlZCB3aGVuCj4gKwkgKiB0aGUgcGluL3VucGluIGNhbGxiYWNrcyBhcmUgaW1w bGVtZW50ZWQuCj4gKwkgKgo+ICAJICogUmV0dXJuczoKPiAgCSAqCj4gIAkgKiBBICZzZ190YWJs ZSBzY2F0dGVyIGxpc3Qgb2Ygb3IgdGhlIGJhY2tpbmcgc3RvcmFnZSBvZiB0aGUgRE1BIGJ1ZmZl ciwKPiBAQCAtMTM3LDkgKzE2Niw2IEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4gIAkgKgo+ICAJ ICogVGhpcyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KCkgYW5kIHNob3Vs ZCB1bm1hcCBhbmQKPiAgCSAqIHJlbGVhc2UgdGhlICZzZ190YWJsZSBhbGxvY2F0ZWQgaW4gQG1h cF9kbWFfYnVmLCBhbmQgaXQgaXMgbWFuZGF0b3J5Lgo+IC0JICogSXQgc2hvdWxkIGFsc28gdW5w aW4gdGhlIGJhY2tpbmcgc3RvcmFnZSBpZiB0aGlzIGlzIHRoZSBsYXN0IG1hcHBpbmcKPiAtCSAq IG9mIHRoZSBETUEgYnVmZmVyLCBpdCB0aGUgZXhwb3J0ZXIgc3VwcG9ydHMgYmFja2luZyBzdG9y YWdlCj4gLQkgKiBtaWdyYXRpb24uCj4gIAkgKi8KPiAgCXZvaWQgKCp1bm1hcF9kbWFfYnVmKShz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosCj4gIAkJCSAgICAgIHN0cnVjdCBzZ190YWJsZSAq LAo+IEBAIC0zMzAsNiArMzU2LDM1IEBAIHN0cnVjdCBkbWFfYnVmIHsKPiAgCX0gY2JfZXhjbCwg Y2Jfc2hhcmVkOwo+ICB9Owo+ICAKPiArLyoqCj4gKyAqIHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9v cHMgLSBpbXBvcnRlciBvcGVyYXRpb25zIGZvciBhbiBhdHRhY2htZW50Cj4gKyAqIEBpbnZhbGlk YXRlOiBbb3B0aW9uYWxdIGludmFsaWRhdGUgYWxsIG1hcHBpbmdzIG1hZGUgdXNpbmcgdGhpcyBh dHRhY2htZW50Lgo+ICsgKgo+ICsgKiBBdHRhY2htZW50IG9wZXJhdGlvbnMgaW1wbGVtZW50ZWQg YnkgdGhlIGltcG9ydGVyLgo+ICsgKi8KPiArc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyB7Cj4g KwkvKioKPiArCSAqIEBpbnZhbGlkYXRlOgo+ICsJICoKPiArCSAqIElmIHRoZSBpbnZhbGlkYXRl IGNhbGxiYWNrIGlzIHByb3ZpZGVkIHRoZSBmcmFtZXdvcmsgY2FuIGF2b2lkCj4gKwkgKiBwaW5u aW5nIHRoZSBiYWNraW5nIHN0b3JlIHdoaWxlIG1hcHBpbmdzIGV4aXN0cy4KPiArCSAqCj4gKwkg KiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIHRoZSBsb2NrIG9mIHRoZSByZXNlcnZhdGlv biBvYmplY3QKPiArCSAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgZG1hX2J1ZiBoZWxkIGFuZCB0aGUg bWFwcGluZyBmdW5jdGlvbiBtdXN0IGJlCj4gKwkgKiBjYWxsZWQgd2l0aCB0aGlzIGxvY2sgaGVs ZCBhcyB3ZWxsLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCBubyBtYXBwaW5nCj4gKwkgKiBpcyBjcmVh dGVkIGNvbmN1cnJlbnRseSB3aXRoIGFuIG9uZ29pbmcgaW52YWxpZGF0aW9uLgo+ICsJICoKPiAr CSAqIEFmdGVyIHRoZSBjYWxsYmFjayBhbGwgZXhpc3RpbmcgbWFwcGluZ3MgYXJlIHN0aWxsIHZh bGlkIHVudGlsIGFsbAo+ICsJICogZmVuY2VzIGluIHRoZSBkbWFfYnVmcyByZXNlcnZhdGlvbiBv YmplY3QgYXJlIHNpZ25hbGVkLiBBZnRlciBnZXR0aW5nIGFuCj4gKwkgKiBpbnZhbGlkYXRpb24g Y2FsbGJhY2sgYWxsIG1hcHBpbmdzIHNob3VsZCBiZSBkZXN0cm95ZWQgYnkgdGhlIGltcG9ydGVy IHVzaW5nCj4gKwkgKiB0aGUgbm9ybWFsIGRtYV9idWZfdW5tYXBfYXR0YWNobWVudCgpIGZ1bmN0 aW9uIGFzIHNvb24gYXMgcG9zc2libGUuCj4gKwkgKgo+ICsJICogTmV3IG1hcHBpbmdzIGNhbiBi ZSBjcmVhdGVkIGltbWVkaWF0ZWx5LCBidXQgY2FuJ3QgYmUgdXNlZCBiZWZvcmUgdGhlCj4gKwkg KiBleGNsdXNpdmUgZmVuY2UgaW4gdGhlIGRtYV9idWZzIHJlc2VydmF0aW9uIG9iamVjdCBpcyBz aWduYWxlZC4KPiArCSAqLwo+ICsJdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCk7Cj4gK307Cj4gKwo+ICAvKioKPiAgICogc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAtIGhvbGRzIGRldmljZS1idWZmZXIgYXR0YWNobWVudCBkYXRhCj4gICAqIEBk bWFidWY6IGJ1ZmZlciBmb3IgdGhpcyBhdHRhY2htZW50Lgo+IEBAIC0zMzgsNiArMzkzLDggQEAg c3RydWN0IGRtYV9idWYgewo+ICAgKiBAc2d0OiBjYWNoZWQgbWFwcGluZy4KPiAgICogQGRpcjog ZGlyZWN0aW9uIG9mIGNhY2hlZCBtYXBwaW5nLgo+ICAgKiBAcHJpdjogZXhwb3J0ZXIgc3BlY2lm aWMgYXR0YWNobWVudCBkYXRhLgo+ICsgKiBAaW1wb3J0ZXJfb3BzOiBpbXBvcnRlciBvcGVyYXRp b25zIGZvciB0aGlzIGF0dGFjaG1lbnQuCj4gKyAqIEBpbXBvcnRlcl9wcml2OiBpbXBvcnRlciBz cGVjaWZpYyBhdHRhY2htZW50IGRhdGEuCj4gICAqCj4gICAqIFRoaXMgc3RydWN0dXJlIGhvbGRz IHRoZSBhdHRhY2htZW50IGluZm9ybWF0aW9uIGJldHdlZW4gdGhlIGRtYV9idWYgYnVmZmVyCj4g ICAqIGFuZCBpdHMgdXNlciBkZXZpY2UocykuIFRoZSBsaXN0IGNvbnRhaW5zIG9uZSBhdHRhY2ht ZW50IHN0cnVjdCBwZXIgZGV2aWNlCj4gQEAgLTM1NSw2ICs0MTIsOSBAQCBzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50IHsKPiAgCXN0cnVjdCBzZ190YWJsZSAqc2d0Owo+ICAJZW51bSBkbWFfZGF0 YV9kaXJlY3Rpb24gZGlyOwo+ICAJdm9pZCAqcHJpdjsKPiArCj4gKwljb25zdCBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2hfb3BzICppbXBvcnRlcl9vcHM7Cj4gKwl2b2lkICppbXBvcnRlcl9wcml2Owo+ ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTQwNSwxMCArNDY1LDQyIEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBnZXRfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICAJZ2V0X2ZpbGUoZG1hYnVm LT5maWxlKTsKPiAgfQo+ICAKPiArLyoqCj4gKyAqIGRtYV9idWZfaXNfZHluYW1pYyAtIGNoZWNr IGlmIGEgRE1BLWJ1ZiB1c2VzIGR5bmFtaWMgbWFwcGluZ3MuCj4gKyAqIEBkbWFidWY6IHRoZSBE TUEtYnVmIHRvIGNoZWNrCj4gKyAqCj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBhIERNQS1idWYgZXhw b3J0ZXIgd2FudHMgdG8gY3JlYXRlIGR5bmFtaWMgc2cgdGFibGUgbWFwcGluZ3MKPiArICogZm9y IGVhY2ggYXR0YWNobWVudC4gRmFsc2UgaWYgb25seSBhIHNpbmdsZSBzdGF0aWMgc2cgdGFibGUg c2hvdWxkIGJlIHVzZWQuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZG1hX2J1Zl9pc19k eW5hbWljKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCj4gK3sKPiArCXJldHVybiAhIWRtYWJ1Zi0+ b3BzLT5waW47Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHlu YW1pYyAtIGNoZWNrIGlmIGEgRE1BLWJ1ZiBhdHRhY2htZW50IHVzZXMgZHluYW1pYwo+ICsgKiBt YXBwaW5zZwo+ICsgKiBAYXR0YWNoOiB0aGUgRE1BLWJ1ZiBhdHRhY2htZW50IHRvIGNoZWNrCj4g KyAqCj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBhIERNQS1idWYgaW1wb3J0ZXIgd2FudHMgdG8gdXNl IGR5bmFtaWMgc2cgdGFibGUgbWFwcGluZ3MgYW5kCj4gKyAqIGNhbGxzIHRoZSBtYXAvdW5tYXAg ZnVuY3Rpb25zIHdpdGggdGhlIHJlc2VydmF0aW9uIG9iamVjdCBsb2NrZWQuCj4gKyAqLwo+ICtz dGF0aWMgaW5saW5lIGJvb2wKPiArZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMoc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ICt7Cj4gKwlyZXR1cm4gYXR0YWNoLT5pbXBv cnRlcl9vcHMgJiYgYXR0YWNoLT5pbXBvcnRlcl9vcHMtPmludmFsaWRhdGU7Cj4gK30KPiArCj4g IHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVm ICpkbWFidWYsCj4gLQkJCQkJCQlzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICsJCQkJCSAgc3RydWN0 IGRldmljZSAqZGV2KTsKPiArc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqCj4gK2RtYV9idWZf ZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2 LAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzICppbXBvcnRlcl9v cHMsCj4gKwkJICAgICAgIHZvaWQgKmltcG9ydGVyX3ByaXYpOwo+ICB2b2lkIGRtYV9idWZfZGV0 YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gLQkJCQlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2ht ZW50ICpkbWFidWZfYXR0YWNoKTsKPiArCQkgICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq YXR0YWNoKTsKPiAraW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0 dGFjaCk7Cj4gK3ZvaWQgZG1hX2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2gpOwo+ICAKPiAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0IHN0cnVj dCBkbWFfYnVmX2V4cG9ydF9pbmZvICpleHBfaW5mbyk7Cj4gIAo+IEBAIC00MjAsNiArNTEyLDcg QEAgc3RydWN0IHNnX3RhYmxlICpkbWFfYnVmX21hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVm X2F0dGFjaG1lbnQgKiwKPiAgCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4gIHZvaWQg ZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwgc3Ry dWN0IHNnX3RhYmxlICosCj4gIAkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4gK3ZvaWQg ZG1hX2J1Zl9pbnZhbGlkYXRlX21hcHBpbmdzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKTsKPiAg aW50IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAg CQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpOwo+ICBpbnQgZG1hX2J1Zl9lbmRf Y3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiAtLSAKPiAyLjE3LjEKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWw=