From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 1/4] dma-buf: change DMA-buf locking convention Date: Mon, 16 Sep 2019 14:23:13 +0200 Message-ID: <88f748d2-43de-ae2a-b895-40d8b3be5c78@gmail.com> References: <20190829142917.13058-1-christian.koenig@amd.com> <20190829142917.13058-2-christian.koenig@amd.com> <20190903080522.GM2112@phenom.ffwll.local> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter 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 UGluZz8gQW55IGZ1cnRoZXIgY29tbWVudCBvbiB0aGlzIG9yIGNhbid0IHdlIG1lcmdlIGF0IGxl YXN0IHRoZSBsb2NraW5nIApjaGFuZ2U/CgpDaHJpc3RpYW4uCgpBbSAxMS4wOS4xOSB1bSAxMjo1 MyBzY2hyaWViIENocmlzdGlhbiBLw7ZuaWc6Cj4gQW0gMDMuMDkuMTkgdW0gMTA6MDUgc2Nocmll YiBEYW5pZWwgVmV0dGVyOgo+PiBPbiBUaHUsIEF1ZyAyOSwgMjAxOSBhdCAwNDoyOToxNFBNICsw MjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4gVGhpcyBwYXRjaCBpcyBhIHN0cmlwcGVk IGRvd24gdmVyc2lvbiBvZiB0aGUgbG9ja2luZyBjaGFuZ2VzCj4+PiBuZWNlc3NhcnkgdG8gc3Vw cG9ydCBkeW5hbWljIERNQS1idWYgaGFuZGxpbmcuCj4+Pgo+Pj4gRm9yIGNvbXBhdGliaWxpdHkg d2UgY2FjaGUgdGhlIERNQS1idWYgbWFwcGluZyBhcyBzb29uIGFzCj4+PiBleHBvcnRlci9pbXBv cnRlciBkaXNhZ3JlZSBvbiB0aGUgZHluYW1pYyBoYW5kbGluZy4KPj4+Cj4+PiBTaWduZWQtb2Zm LWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+PiAtLS0K Pj4+IMKgIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgfCA5MCAKPj4+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQo+Pj4gwqAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmjC oMKgIHwgNTEgKysrKysrKysrKysrKysrKysrKysrLQo+Pj4gwqAgMiBmaWxlcyBjaGFuZ2VkLCAx MzMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPj4+IGlu ZGV4IDQzM2Q5MWQ3MTBlNC4uNjUwNTJkNTI2MDJiIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9k bWEtYnVmL2RtYS1idWYuYwo+Pj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+Pj4g QEAgLTUyNSw2ICs1MjUsMTAgQEAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0 IHN0cnVjdCAKPj4+IGRtYV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKQo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDC oCArwqDCoMKgIGlmIChXQVJOX09OKGV4cF9pbmZvLT5vcHMtPmNhY2hlX3NndF9tYXBwaW5nICYm Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHBfaW5mby0+b3BzLT5keW5hbWljX21hcHBp bmcpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+Pj4gKwo+ Pj4gwqDCoMKgwqDCoCBpZiAoIXRyeV9tb2R1bGVfZ2V0KGV4cF9pbmZvLT5vd25lcikpCj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7Cj4+PiDCoCBAQCAtNjQ1 LDEwICs2NDksMTEgQEAgdm9pZCBkbWFfYnVmX3B1dChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ Pj4gwqAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQpOwo+Pj4gwqAgwqAgLyoqCj4+PiAt ICogZG1hX2J1Zl9hdHRhY2ggLSBBZGQgdGhlIGRldmljZSB0byBkbWFfYnVmJ3MgYXR0YWNobWVu dHMgbGlzdDsgCj4+PiBvcHRpb25hbGx5LAo+Pj4gKyAqIGRtYV9idWZfZHluYW1pY19hdHRhY2gg LSBBZGQgdGhlIGRldmljZSB0byBkbWFfYnVmJ3MgYXR0YWNobWVudHMgCj4+PiBsaXN0OyBvcHRp b25hbGx5LAo+Pj4gwqDCoCAqIGNhbGxzIGF0dGFjaCgpIG9mIGRtYV9idWZfb3BzIHRvIGFsbG93 IGRldmljZS1zcGVjaWZpYyBhdHRhY2ggCj4+PiBmdW5jdGlvbmFsaXR5Cj4+PiAtICogQGRtYWJ1 ZjrCoMKgwqAgW2luXcKgwqDCoCBidWZmZXIgdG8gYXR0YWNoIGRldmljZSB0by4KPj4+IC0gKiBA ZGV2OsKgwqDCoCBbaW5dwqDCoMKgIGRldmljZSB0byBiZSBhdHRhY2hlZC4KPj4+ICsgKiBAZG1h YnVmOsKgwqDCoMKgwqDCoMKgIFtpbl3CoMKgwqAgYnVmZmVyIHRvIGF0dGFjaCBkZXZpY2UgdG8u Cj4+PiArICogQGRldjrCoMKgwqDCoMKgwqDCoCBbaW5dwqDCoMKgIGRldmljZSB0byBiZSBhdHRh Y2hlZC4KPj4+ICsgKiBAZHluYW1pY19tYXBwaW5nOsKgwqDCoCBbaW5dwqDCoMKgIGNhbGxpbmcg Y29udmVudGlvbiBmb3IgbWFwL3VubWFwCj4+PiDCoMKgICoKPj4+IMKgwqAgKiBSZXR1cm5zIHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgcG9pbnRlciBmb3IgdGhpcyBhdHRhY2htZW50LiAKPj4+ IEF0dGFjaG1lbnRzCj4+PiDCoMKgICogbXVzdCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgZG1h X2J1Zl9kZXRhY2goKS4KPj4+IEBAIC02NjIsOCArNjY3LDkgQEAgRVhQT1JUX1NZTUJPTF9HUEwo ZG1hX2J1Zl9wdXQpOwo+Pj4gwqDCoCAqIGFjY2Vzc2libGUgdG8gQGRldiwgYW5kIGNhbm5vdCBi ZSBtb3ZlZCB0byBhIG1vcmUgc3VpdGFibGUgCj4+PiBwbGFjZS4gVGhpcyBpcwo+Pj4gwqDCoCAq IGluZGljYXRlZCB3aXRoIHRoZSBlcnJvciBjb2RlIC1FQlVTWS4KPj4+IMKgwqAgKi8KPj4+IC1z dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgZGV2aWNlICpkZXYpCj4+PiArc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqCj4+PiAr ZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2 aWNlICpkZXYsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGR5bmFtaWNf bWFwcGluZykKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoOwo+Pj4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+Pj4gQEAgLTY3Nyw2ICs2ODMsNyBA QCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgCj4+PiBk bWFfYnVmICpkbWFidWYsCj4+PiDCoCDCoMKgwqDCoMKgIGF0dGFjaC0+ZGV2ID0gZGV2Owo+Pj4g wqDCoMKgwqDCoCBhdHRhY2gtPmRtYWJ1ZiA9IGRtYWJ1ZjsKPj4+ICvCoMKgwqAgYXR0YWNoLT5k eW5hbWljX21hcHBpbmcgPSBkeW5hbWljX21hcHBpbmc7Cj4+PiDCoCDCoMKgwqDCoMKgIG11dGV4 X2xvY2soJmRtYWJ1Zi0+bG9jayk7Cj4+PiDCoCBAQCAtNjg1LDE2ICs2OTIsNjQgQEAgc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAKPj4+ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIGVycl9hdHRhY2g7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+ICvCoMKg wqAgZG1hX3Jlc3ZfbG9jayhkbWFidWYtPnJlc3YsIE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCBsaXN0 X2FkZCgmYXR0YWNoLT5ub2RlLCAmZG1hYnVmLT5hdHRhY2htZW50cyk7Cj4+PiArwqDCoMKgIGRt YV9yZXN2X3VubG9jayhkbWFidWYtPnJlc3YpOwo+Pj4gwqAgwqDCoMKgwqDCoCBtdXRleF91bmxv Y2soJmRtYWJ1Zi0+bG9jayk7Cj4+PiDCoCArwqDCoMKgIC8qIFdoZW4gZWl0aGVyIHRoZSBpbXBv cnRlciBvciB0aGUgZXhwb3J0ZXIgY2FuJ3QgaGFuZGxlIGR5bmFtaWMKPj4+ICvCoMKgwqDCoCAq IG1hcHBpbmdzIHdlIGNhY2hlIHRoZSBtYXBwaW5nIGhlcmUgdG8gYXZvaWQgaXNzdWVzIHdpdGgg dGhlCj4+PiArwqDCoMKgwqAgKiByZXNlcnZhdGlvbiBvYmplY3QgbG9jay4KPj4+ICvCoMKgwqDC oCAqLwo+Pj4gK8KgwqDCoCBpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMoYXR0YWNo KSAhPQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRtYV9idWZfaXNfZHluYW1pYyhkbWFidWYpKSB7Cj4+ PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4+PiArCj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBO VUxMKTsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCBzZ3QgPSBkbWFidWYtPm9wcy0+bWFwX2Rt YV9idWYoYXR0YWNoLCBETUFfQklESVJFQ1RJT05BTCk7Cj4+IE5vdyB3ZSdyZSBiYWNrIHRvIGVu Zm9yY2luZyBETUFfQklESSwgd2hpY2ggd29ya3MgbmljZWx5IGFyb3VuZCB0aGUKPj4gbG9ja2lu ZyBwYWluLCBidXQgYXBwYXJlbnRseSB1cHNldHMgdGhlIGFybS1zb2MgZm9sa3Mgd2hvIHdhbnQg dG8gCj4+IGNvbnRyb2wKPj4gdGhpcyBiZXR0ZXIuCj4KPiBUYWtlIGFub3RoZXIgbG9vayBhdCBk bWFfYnVmX21hcF9hdHRhY2htZW50KCksIHdlIHN0aWxsIHRyeSB0byBnZXQgdGhlIAo+IGNhY2hp bmcgdGhlcmUgZm9yIEFSTS4KPgo+IFdoYXQgd2UgZG8gaGVyZSBpcyB0byBiaWRpcmVjdGlvbmFs bHkgbWFwIHRoZSBidWZmZXIgdG8gYXZvaWQgdGhlIAo+IGxvY2tpbmcgaHlkcmEgd2hlbiBpbXBv cnRlciBhbmQgZXhwb3J0ZXIgZGlzYWdyZWUgb24gbG9ja2luZy4KPgo+IFNvIHRoZSBBUk0gZm9s a3MgY2FuIGVhc2lseSBhdm9pZCB0aGF0IGJ5IHN3aXRjaGluZyB0byBkeW5hbWljIGxvY2tpbmcg Cj4gZm9yIGJvdGguCj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+PiBUaGF0J3Mgd2h5IHlv dXIgcHJldmlvdXMgdmVyc2lvbiBtb3ZlZCB0aGUgY2FjaGluZyBpbnRvCj4+IG1hcC91bm1hcF9z Zywgd2hpY2ggcmVzdXJyZWN0ZWQgdGhlIGxvY2tpbmcgaHlkcmEuCj4+Cj4+IEkgdGhpbmsgd2Un cmUgZ29pbmcgYSBiaXQgaW4gY2lyY2xlcyBoZXJlLCBhbmQgSSBkb24ndCBoYXZlIGEgZ29vZCBp ZGVhCj4+IGVpdGhlciA6LS8KPj4gLURhbmllbAo+Pgo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICgh c2d0KQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2d0ID0gRVJSX1BUUigtRU5PTUVNKTsK Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSKHNndCkpIHsKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldCA9IFBUUl9FUlIoc2d0KTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gZXJyX3VubG9jazsKPj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+PiArwqDCoMKgwqDCoMKg wqAgaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+Pj4g K8KgwqDCoMKgwqDCoMKgIGF0dGFjaC0+c2d0ID0gc2d0Owo+Pj4gK8KgwqDCoMKgwqDCoMKgIGF0 dGFjaC0+ZGlyID0gRE1BX0JJRElSRUNUSU9OQUw7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+IMKg wqDCoMKgwqAgcmV0dXJuIGF0dGFjaDsKPj4+IMKgIMKgIGVycl9hdHRhY2g6Cj4+PiDCoMKgwqDC oMKgIGtmcmVlKGF0dGFjaCk7Cj4+PiDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmZG1hYnVmLT5s b2NrKTsKPj4+IMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+ICsKPj4+ICtlcnJf dW5sb2NrOgo+Pj4gK8KgwqDCoCBpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVm KSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJl c3YpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBkbWFfYnVmX2RldGFjaChkbWFidWYsIGF0dGFjaCk7Cj4+ PiArwqDCoMKgIHJldHVybiBFUlJfUFRSKHJldCk7Cj4+PiArfQo+Pj4gK0VYUE9SVF9TWU1CT0xf R1BMKGRtYV9idWZfZHluYW1pY19hdHRhY2gpOwo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIGRtYV9i dWZfYXR0YWNoIC0gV3JhcHBlciBmb3IgZG1hX2J1Zl9keW5hbWljX2F0dGFjaAo+Pj4gKyAqIEBk bWFidWY6wqDCoMKgIFtpbl3CoMKgwqAgYnVmZmVyIHRvIGF0dGFjaCBkZXZpY2UgdG8uCj4+PiAr ICogQGRldjrCoMKgwqAgW2luXcKgwqDCoCBkZXZpY2UgdG8gYmUgYXR0YWNoZWQuCj4+PiArICoK Pj4+ICsgKiBXcmFwcGVyIHRvIGNhbGwgZG1hX2J1Zl9keW5hbWljX2F0dGFjaCgpIGZvciBkcml2 ZXJzIHdoaWNoIHN0aWxsIAo+Pj4gdXNlIGEgc3RhdGljCj4+PiArICogbWFwcGluZy4KPj4+ICsg Ki8KPj4+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+PiArewo+Pj4gK8KgwqDCoCByZXR1cm4gZG1h X2J1Zl9keW5hbWljX2F0dGFjaChkbWFidWYsIGRldiwgZmFsc2UpOwo+Pj4gwqAgfQo+Pj4gwqAg RVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9hdHRhY2gpOwo+Pj4gwqAgQEAgLTcxMSwxMSArNzY2 LDIwIEBAIHZvaWQgZG1hX2J1Zl9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgCj4+PiBz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4+PiDCoMKgwqDCoMKgIGlmIChXQVJO X09OKCFkbWFidWYgfHwgIWF0dGFjaCkpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+ Pj4gwqAgLcKgwqDCoCBpZiAoYXR0YWNoLT5zZ3QpCj4+PiArwqDCoMKgIGlmIChhdHRhY2gtPnNn dCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5k bWFidWYpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX3Jlc3ZfbG9jayhhdHRhY2gt PmRtYWJ1Zi0+cmVzdiwgTlVMTCk7Cj4+PiArCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hYnVm LT5vcHMtPnVubWFwX2RtYV9idWYoYXR0YWNoLCBhdHRhY2gtPnNndCwgYXR0YWNoLT5kaXIpOwo+ Pj4gwqAgK8KgwqDCoMKgwqDCoMKgIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFi dWYpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX3Jlc3ZfdW5sb2NrKGF0dGFjaC0+ ZG1hYnVmLT5yZXN2KTsKPj4+ICvCoMKgwqAgfQo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCBtdXRleF9s b2NrKCZkbWFidWYtPmxvY2spOwo+Pj4gK8KgwqDCoCBkbWFfcmVzdl9sb2NrKGRtYWJ1Zi0+cmVz diwgTlVMTCk7Cj4+PiDCoMKgwqDCoMKgIGxpc3RfZGVsKCZhdHRhY2gtPm5vZGUpOwo+Pj4gK8Kg wqDCoCBkbWFfcmVzdl91bmxvY2soZG1hYnVmLT5yZXN2KTsKPj4+IMKgwqDCoMKgwqAgaWYgKGRt YWJ1Zi0+b3BzLT5kZXRhY2gpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hYnVmLT5vcHMtPmRl dGFjaChkbWFidWYsIGF0dGFjaCk7Cj4+PiDCoCBAQCAtNzQ5LDYgKzgxMyw5IEBAIHN0cnVjdCBz Z190YWJsZSAqZG1hX2J1Zl9tYXBfYXR0YWNobWVudChzdHJ1Y3QgCj4+PiBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaCwKPj4+IMKgwqDCoMKgwqAgaWYgKFdBUk5fT04oIWF0dGFjaCB8fCAhYXR0 YWNoLT5kbWFidWYpKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FSU5W QUwpOwo+Pj4gwqAgK8KgwqDCoCBpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMoYXR0 YWNoKSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl9hc3NlcnRfaGVsZChhdHRhY2gtPmRt YWJ1Zi0+cmVzdik7Cj4+PiArCj4+PiDCoMKgwqDCoMKgIGlmIChhdHRhY2gtPnNndCkgewo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFR3byBtYXBw aW5ncyB3aXRoIGRpZmZlcmVudCBkaXJlY3Rpb25zIGZvciB0aGUgc2FtZQo+Pj4gQEAgLTc2MSw2 ICs4MjgsOSBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0 IAo+Pj4gZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIGF0dGFjaC0+c2d0Owo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCArwqDCoMKgIGlmIChk bWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRt YV9yZXN2X2Fzc2VydF9oZWxkKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPj4+ICsKPj4+IMKgwqDC oMKgwqAgc2dfdGFibGUgPSBhdHRhY2gtPmRtYWJ1Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRhY2gs IGRpcmVjdGlvbik7Cj4+PiDCoMKgwqDCoMKgIGlmICghc2dfdGFibGUpCj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgc2dfdGFibGUgPSBFUlJfUFRSKC1FTk9NRU0pOwo+Pj4gQEAgLTc5Myw5ICs4NjMs MTUgQEAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc3RydWN0IAo+Pj4gZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gsCj4+PiDCoMKgwqDCoMKgIGlmIChXQVJOX09OKCFhdHRhY2ggfHwg IWF0dGFjaC0+ZG1hYnVmIHx8ICFzZ190YWJsZSkpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+Pj4gwqAgK8KgwqDCoCBpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMoYXR0 YWNoKSkKPj4+ICvCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl9hc3NlcnRfaGVsZChhdHRhY2gtPmRt YWJ1Zi0+cmVzdik7Cj4+PiArCj4+PiDCoMKgwqDCoMKgIGlmIChhdHRhY2gtPnNndCA9PSBzZ190 YWJsZSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+PiDCoCArwqDCoMKgIGlmIChk bWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRt YV9yZXN2X2Fzc2VydF9oZWxkKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPj4+ICsKPj4+IMKgwqDC oMKgwqAgYXR0YWNoLT5kbWFidWYtPm9wcy0+dW5tYXBfZG1hX2J1ZihhdHRhY2gsIHNnX3RhYmxl LCBkaXJlY3Rpb24pOwo+Pj4gwqAgfQo+Pj4gwqAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl91 bm1hcF9hdHRhY2htZW50KTsKPj4+IEBAIC0xMjE5LDEwICsxMjk1LDEyIEBAIHN0YXRpYyBpbnQg ZG1hX2J1Zl9kZWJ1Z19zaG93KHN0cnVjdCAKPj4+IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQp Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc2VxX3B1dHMocywgIlx0QXR0YWNoZWQgRGV2aWNlczpc biIpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGF0dGFjaF9jb3VudCA9IDA7Cj4+PiDCoCArwqDC oMKgwqDCoMKgwqAgZG1hX3Jlc3ZfbG9jayhidWZfb2JqLT5yZXN2LCBOVUxMKTsKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KGF0dGFjaF9vYmosICZidWZfb2JqLT5h dHRhY2htZW50cywgCj4+PiBub2RlKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz ZXFfcHJpbnRmKHMsICJcdCVzXG4iLCBkZXZfbmFtZShhdHRhY2hfb2JqLT5kZXYpKTsKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF0dGFjaF9jb3VudCsrOwo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIH0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYnVmX29iai0+cmVz dik7Cj4+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihzLCAiVG90YWwgJWQgZGV2 aWNlcyBhdHRhY2hlZFxuXG4iLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhdHRhY2hfY291bnQpOwo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5o IGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPj4+IGluZGV4IGVjMjEyY2IyN2ZkYy4uYThmOGIy YjgxMmZkIDEwMDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPj4+ICsrKyBi L2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4+PiBAQCAtNDIsNiArNDIsMTcgQEAgc3RydWN0IGRt YV9idWZfb3BzIHsKPj4+IMKgwqDCoMKgwqDCoMKgICovCj4+PiDCoMKgwqDCoMKgIGJvb2wgY2Fj aGVfc2d0X21hcHBpbmc7Cj4+PiDCoCArwqDCoMKgIC8qKgo+Pj4gK8KgwqDCoMKgICogQGR5bmFt aWNfbWFwcGluZzoKPj4+ICvCoMKgwqDCoCAqCj4+PiArwqDCoMKgwqAgKiBJZiB0cnVlIHRoZSBm cmFtZXdvcmsgbWFrZXMgc3VyZSB0aGF0IHRoZSBtYXAvdW5tYXBfZG1hX2J1Zgo+Pj4gK8KgwqDC oMKgICogY2FsbGJhY2tzIGFyZSBhbHdheXMgY2FsbGVkIHdpdGggdGhlIGRtYV9yZXN2IG9iamVj dCBsb2NrZWQuCj4+PiArwqDCoMKgwqAgKgo+Pj4gK8KgwqDCoMKgICogSWYgZmFsc2UgdGhlIGZy YW1ld29yayBtYWtlcyB1cmUgdGhhdCB0aGUgbWFwL3VubWFwX2RtYV9idWYKPj4+ICvCoMKgwqDC oCAqIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aXRob3V0IHRoZSBkbWFfcmVzdiBvYmpl Y3QgbG9ja2VkLgo+Pj4gK8KgwqDCoMKgICovCj4+PiArwqDCoMKgIGJvb2wgZHluYW1pY19tYXBw aW5nOwo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCAvKioKPj4+IMKgwqDCoMKgwqDCoCAqIEBhdHRhY2g6 Cj4+PiDCoMKgwqDCoMKgwqAgKgo+Pj4gQEAgLTEwOSw2ICsxMjAsOSBAQCBzdHJ1Y3QgZG1hX2J1 Zl9vcHMgewo+Pj4gwqDCoMKgwqDCoMKgICogYW55IG90aGVyIGtpbmQgb2Ygc2hhcmluZyB0aGF0 IHRoZSBleHBvcnRlciBtaWdodCB3aXNoIHRvIG1ha2UKPj4+IMKgwqDCoMKgwqDCoCAqIGF2YWls YWJsZSB0byBidWZmZXItdXNlcnMuCj4+PiDCoMKgwqDCoMKgwqAgKgo+Pj4gK8KgwqDCoMKgICog VGhpcyBpcyBhbHdheXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2Vk IHdoZW4KPj4+ICvCoMKgwqDCoCAqIHRoZSBkeW5hbWljX21hcHBpbmcgZmxhZyBpcyB0cnVlLgo+ Pj4gK8KgwqDCoMKgICoKPj4+IMKgwqDCoMKgwqDCoCAqIFJldHVybnM6Cj4+PiDCoMKgwqDCoMKg wqAgKgo+Pj4gwqDCoMKgwqDCoMKgICogQSAmc2dfdGFibGUgc2NhdHRlciBsaXN0IG9mIG9yIHRo ZSBiYWNraW5nIHN0b3JhZ2Ugb2YgdGhlIAo+Pj4gRE1BIGJ1ZmZlciwKPj4+IEBAIC0zMjcsNiAr MzQxLDggQEAgc3RydWN0IGRtYV9idWYgewo+Pj4gwqDCoCAqIEBzZ3Q6IGNhY2hlZCBtYXBwaW5n Lgo+Pj4gwqDCoCAqIEBkaXI6IGRpcmVjdGlvbiBvZiBjYWNoZWQgbWFwcGluZy4KPj4+IMKgwqAg KiBAcHJpdjogZXhwb3J0ZXIgc3BlY2lmaWMgYXR0YWNobWVudCBkYXRhLgo+Pj4gKyAqIEBkeW5h bWljX21hcHBpbmc6IHRydWUgaWYgZG1hX2J1Zl9tYXAvdW5tYXBfYXR0YWNobWVudCgpIGlzIAo+ Pj4gY2FsbGVkIHdpdGggdGhlCj4+PiArICogZG1hX3Jlc3YgbG9jayBoZWxkLgo+Pj4gwqDCoCAq Cj4+PiDCoMKgICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQgaW5mb3JtYXRp b24gYmV0d2VlbiB0aGUgCj4+PiBkbWFfYnVmIGJ1ZmZlcgo+Pj4gwqDCoCAqIGFuZCBpdHMgdXNl ciBkZXZpY2UocykuIFRoZSBsaXN0IGNvbnRhaW5zIG9uZSBhdHRhY2htZW50IHN0cnVjdCAKPj4+ IHBlciBkZXZpY2UKPj4+IEBAIC0zNDMsNiArMzU5LDcgQEAgc3RydWN0IGRtYV9idWZfYXR0YWNo bWVudCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPj4+IMKgwqDCoMKg wqAgc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4+PiDCoMKgwqDCoMKgIGVudW0gZG1hX2RhdGFfZGly ZWN0aW9uIGRpcjsKPj4+ICvCoMKgwqAgYm9vbCBkeW5hbWljX21hcHBpbmc7Cj4+PiDCoMKgwqDC oMKgIHZvaWQgKnByaXY7Cj4+PiDCoCB9Owo+Pj4gwqAgQEAgLTM5NCwxMCArNDExLDM5IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBnZXRfZG1hX2J1ZihzdHJ1Y3QgCj4+PiBkbWFfYnVmICpkbWFidWYp Cj4+PiDCoMKgwqDCoMKgIGdldF9maWxlKGRtYWJ1Zi0+ZmlsZSk7Cj4+PiDCoCB9Cj4+PiDCoCAr LyoqCj4+PiArICogZG1hX2J1Zl9pc19keW5hbWljIC0gY2hlY2sgaWYgYSBETUEtYnVmIHVzZXMg ZHluYW1pYyBtYXBwaW5ncy4KPj4+ICsgKiBAZG1hYnVmOiB0aGUgRE1BLWJ1ZiB0byBjaGVjawo+ Pj4gKyAqCj4+PiArICogUmV0dXJucyB0cnVlIGlmIGEgRE1BLWJ1ZiBleHBvcnRlciB3YW50cyB0 byBiZSBjYWxsZWQgd2l0aCB0aGUgCj4+PiBkbWFfcmVzdgo+Pj4gKyAqIGxvY2tlZCwgZmFsc2Ug aWYgaXQgZG9lc24ndCB3YW50cyB0byBiZSBjYWxsZWQgd2l0aCB0aGUgbG9jayBoZWxkLgo+Pj4g KyAqLwo+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBkbWFfYnVmX2lzX2R5bmFtaWMoc3RydWN0IGRt YV9idWYgKmRtYWJ1ZikKPj4+ICt7Cj4+PiArwqDCoMKgIHJldHVybiBkbWFidWYtPm9wcy0+ZHlu YW1pY19tYXBwaW5nOwo+Pj4gK30KPj4+ICsKPj4+ICsvKioKPj4+ICsgKiBkbWFfYnVmX2F0dGFj aG1lbnRfaXNfZHluYW1pYyAtIGNoZWNrIGlmIGEgRE1BLWJ1ZiBhdHRhY2htZW50IAo+Pj4gdXNl cyBkeW5hbWljCj4+PiArICogbWFwcGluc2cKPj4+ICsgKiBAYXR0YWNoOiB0aGUgRE1BLWJ1ZiBh dHRhY2htZW50IHRvIGNoZWNrCj4+PiArICoKPj4+ICsgKiBSZXR1cm5zIHRydWUgaWYgYSBETUEt YnVmIGltcG9ydGVyIHdhbnRzIHRvIGNhbGwgdGhlIG1hcC91bm1hcCAKPj4+IGZ1bmN0aW9ucyB3 aXRoCj4+PiArICogdGhlIGRtYV9yZXN2IGxvY2sgaGVsZC4KPj4+ICsgKi8KPj4+ICtzdGF0aWMg aW5saW5lIGJvb2wKPj4+ICtkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHluYW1pYyhzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4+PiArewo+Pj4gK8KgwqDCoCByZXR1cm4gYXR0YWNo LT5keW5hbWljX21hcHBpbmc7Cj4+PiArfQo+Pj4gKwo+Pj4gwqAgc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqZG1hX2J1Zl9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRldmljZSAqZGV2KTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGRldmljZSAqZGV2KTsKPj4+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICoKPj4+ICtkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0 cnVjdCBkZXZpY2UgKmRldiwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wg ZHluYW1pY19tYXBwaW5nKTsKPj4+IMKgIHZvaWQgZG1hX2J1Zl9kZXRhY2goc3RydWN0IGRtYV9i dWYgKmRtYWJ1ZiwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqZG1hYnVmX2F0dGFjaCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpOwo+Pj4gwqAgwqAgc3RydWN0 IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0IHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZv IAo+Pj4gKmV4cF9pbmZvKTsKPj4+IMKgIEBAIC00MDksNiArNDU1LDcgQEAgc3RydWN0IHNnX3Rh YmxlICpkbWFfYnVmX21hcF9hdHRhY2htZW50KHN0cnVjdCAKPj4+IGRtYV9idWZfYXR0YWNobWVu dCAqLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uKTsKPj4+IMKgIHZvaWQgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50 KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwgc3RydWN0IAo+Pj4gc2dfdGFibGUgKiwKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBkbWFfZGF0YV9kaXJlY3Rp b24pOwo+Pj4gK3ZvaWQgZG1hX2J1Zl9tb3ZlX25vdGlmeShzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1 Zik7Cj4+PiDCoCBpbnQgZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpk bWFfYnVmLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gZG1h X2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4+PiDCoCBpbnQgZG1hX2J1Zl9lbmRfY3B1X2FjY2Vzcyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+IC0tIAo+Pj4gMi4xNy4xCj4+Pgo+CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=