From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 03/12] dma-buf: lock the reservation object during (un)map_dma_buf v3 Date: Wed, 17 Apr 2019 16:26:32 +0200 Message-ID: <20190417142632.GF13337@phenom.ffwll.local> References: <20190416183841.1577-1-christian.koenig@amd.com> <20190416183841.1577-4-christian.koenig@amd.com> <20190417140804.GD13337@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: christian.koenig@amd.com Cc: linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org List-Id: amd-gfx.lists.freedesktop.org T24gV2VkLCBBcHIgMTcsIDIwMTkgYXQgMDQ6MTQ6MzJQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxNy4wNC4xOSB1bSAxNjowOCBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4g PiBPbiBUdWUsIEFwciAxNiwgMjAxOSBhdCAwODozODozMlBNICswMjAwLCBDaHJpc3RpYW4gS8O2 bmlnIHdyb3RlOgo+ID4gPiBNYWtlIGl0IG1hbmRhdG9yeSBmb3IgZHluYW1pYyBkbWEtYnVmIGNh bGxiYWNrcyB0byBiZSBjYWxsZWQgd2l0aCB0aGUKPiA+ID4gcmVzZXJ2YXRpb24gbG9jayBoZWxk Lgo+ID4gPiAKPiA+ID4gRm9yIHN0YXRpYyBkbWEtYnVmIGV4cG9ydGVycyB3ZSBzdGlsbCBoYXZl IHRoZSBmYWxsYmFjayBvZiB1c2luZyBjYWNoZWQgc2d0Lgo+ID4gPiAKPiA+ID4gdjI6IHJlb3Jk ZXJlZAo+ID4gPiB2MzogcmViYXNlZCBvbiBzZ3QgY2FjaGluZwo+ID4gPiB2NDogdXNlIHRoZSBj YWNoZWQgc2d0IHdoZW4gcG9zc2libGUKPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IENocmlz dGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiA+IEkgdGhpbmsgdGhlcmUn cyBhIGJpdCBhIHJlYmFzZSBjaGFvcyBnb2luZyBvbjoKPiA+IC0gc29tZSBjb21tZW50cyBsZWZ0 IGJlaGluZCB3aXRoIG5vX3NndF9jYWNoZSwgd2hpY2ggSSBjYW4ndCBmaW5kIGFueW1vcmUKPiA+ IC0gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSByZXdvcmsgb2YgZG1hX2J1Zl9hdHRhY2ggc2hvdWxk IGltbyBiZSBzcGxpdCBvdXQKPiAKPiBBaCwgY3JhcCB0aG91Z2h0IEkndmUgZ290IGFsbCBvZiB0 aG9zZS4gR29pbmcgdG8gZml4IHRoYXQuCj4gCj4gPiBOZXh0IGlzc3VlIGlzIHRoYXQgdGhlIHJl c2VydmF0aW9uIG9iamVjdCBsb2NraW5nIGlzIHN0aWxsIGluIHRoZSBwYXRoIG9mCj4gPiBkbWFf YnVmX21hcCwgc28gcHJvYmFibHkgc3RpbGwgZ29pbmcgdG8gcmVzdWx0IGluIHRvbnMgb2YgbG9j a2RlcCBzcGxhdHMuCj4gPiBFeGNlcHQgdGhlIGk5MTUrYW1kZ3B1IHBhdGggc2hvdWxkIG5vdyB3 b3JrIGR1ZSB0byB0aGUgZmFzdHBhdGguCj4gCj4gSSBhY3R1YWxseSBmb3VuZCBhIHNvbHV0aW9u IGZvciB0aGF0IDopCj4gCj4gVGhlIGlkZWEgaXMgbm93IHRoYXQgd2UgYWx3YXlzIGNhY2hlIHRo ZSBzZ3QgaW4gdGhlIGF0dGFjaG1lbnQgdW5sZXNzIHRoZQo+IGR5bmFtaWMgZmxhZyAocHJldmlv dXNseSBub19zZ3RfY2FjaGUgZmxhZykgaXMgc2V0LiBBbmQgdGhpcyBjYWNoZWQgc2d0IGlzCj4g Y3JlYXRlZCB3aXRob3V0IGhvbGRpbmcgdGhlIGxvY2suCgpZZWFoIEkgdGhpbmsgdGhhdCBpZGVh IHdvcmtzLgoKPiBXZSBlaXRoZXIgbmVlZCB0byBkb2N1bWVudCB0aGF0IHJlYWxseSB3ZWxsIG9y IG1heWJlIHNwbGl0IHRoZSBtYXBwaW5nCj4gY2FsbGJhY2tzIGludG8gbWFwL3VubWFwIGFuZCBt YXBfbG9jay91bm1hcF9sb2NrZWQuIE9waW5pb25zPwoKSSB0aGluayB0aGUgaW1wbGVtZW50YXRp b24gZG9lc24ndC4gRXhwb3J0ZXIgY2FuJ3QgZGVjaWRlIG9uIGl0cyBvd24Kd2hldGhlciBkeW5h bWljL3N0YXRpYyBpcyB3aGF0J3MgbmVlZGVkLCB3ZSBuZWVkIHRvIGRlY2lkZSB0aGF0IGZvciBl YWNoCmF0dGFjaG1lbnQsIHRha2luZyBib3RoIGV4cG9ydGVyIGFuZCBpbXBvcnRlciBjYXBhYmls aXRpZXMgaW50byBhY2NvdW50LgoKSSB0aGluayBpZiB3ZSBkbyB0aGF0LCB0aGVuIGl0IHNob3Vs ZCB3b3JrIG91dC4gSSByZXBsaWVkIG9uIHRoZSBwaW4vdW5waW4KaW50ZXJmYWNlIHBhdGNoIHdp dGggc29tZSBtb3JlIGNvbmNyZXRlIHRob3VnaHRzLiBNYXliZSBiZXN0IHRvIGNvbnRpbnVlCnRo YXQgZGlzY3Vzc2lvbiB0aGVyZSwgd2l0aCBtb3JlIGNvbnRleHQuCi1EYW5pZWwKCj4gPiBOb3Qg c3VyZSB0aGF0J3MgYSBzb2x1dGlvbiB0aGF0IHJlYWxseSB3b3JrcywganVzdCBoaWRlcyB0aGF0 Cj4gPiBmdW5kYW1lbnRhbGx5IHdlIHN0aWxsIGhhdmUgdGhhdCBpc3N1ZSBvZiBpbmNvbXBhdGli bGUgbG9ja2luZyBjaGFpbnMKPiA+IGJldHdlZW4gZGlmZmVyZW50IGRyaXZlcnMuCj4gCj4gV2Ug Y2FuIG5vdyBtYWtlIGEgc2xvdyB0cmFuc2l0aW9uIGJldHdlZW4gc3RhdGljIGFuZCBkeW5hbWlj IERNQS1idWYKPiBoYW5kbGluZywgc28gb25seSBkcml2ZXIgd2hvIGNhbiBkbyB0aGUgbG9ja2lu ZyB3aWxsIGJlIGFmZmVjdGVkLgo+IAo+IENocmlzdGlhbi4KPiAKPiA+IC1EYW5pZWwKPiA+IAo+ ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jICAgICAgICAgICAgICAg ICAgICAgfCAyNCArKysrKysrKysrLS0tLS0tLS0tCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2Fy bWFkYS9hcm1hZGFfZ2VtLmMgICAgICAgICAgIHwgIDYgKysrKy0KPiA+ID4gICBkcml2ZXJzL2dw dS9kcm0vZHJtX3ByaW1lLmMgICAgICAgICAgICAgICAgICAgfCAgNiArKysrLQo+ID4gPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jICAgICAgICB8ICA2ICsrKystCj4g PiA+ICAgZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jICAgICAgICAgICAgICAgICAgIHwgIDYg KysrKy0KPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYyAgICAgICAgICAg ICAgfCAgNiArKysrLQo+ID4gPiAgIC4uLi9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1kbWEt Y29udGlnLmMgICB8ICA2ICsrKystCj4gPiA+ICAgLi4uL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIv dmlkZW9idWYyLWRtYS1zZy5jIHwgIDYgKysrKy0KPiA+ID4gICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvdGVncmEtdmRlL3RlZ3JhLXZkZS5jICAgfCAgNiArKysrLQo+ID4gPiAgIGluY2x1ZGUvbGlu dXgvZG1hLWJ1Zi5oICAgICAgICAgICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKyst LQo+ID4gPiAgIDEwIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9u cygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMg Yi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gPiA+IGluZGV4IGVmNDgwZTVmYjIzOS4uODNj OTJiZmQ5NjRjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4g PiA+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiA+ID4gQEAgLTUzMiw4ICs1MzIs OSBAQCBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4gPiA+ICAgLyoqCj4gPiA+ICAg ICogZG1hX2J1Zl9hdHRhY2ggLSBBZGQgdGhlIGRldmljZSB0byBkbWFfYnVmJ3MgYXR0YWNobWVu dHMgbGlzdDsgb3B0aW9uYWxseSwKPiA+ID4gICAgKiBjYWxscyBhdHRhY2goKSBvZiBkbWFfYnVm X29wcyB0byBhbGxvdyBkZXZpY2Utc3BlY2lmaWMgYXR0YWNoIGZ1bmN0aW9uYWxpdHkKPiA+ID4g LSAqIEBkbWFidWY6CVtpbl0JYnVmZmVyIHRvIGF0dGFjaCBkZXZpY2UgdG8uCj4gPiA+IC0gKiBA ZGV2OglbaW5dCWRldmljZSB0byBiZSBhdHRhY2hlZC4KPiA+ID4gKyAqIEBpbmZvOglbaW5dCWhv bGRzIGFsbCB0aGUgYXR0YWNoIHJlbGF0ZWQgaW5mb3JtYXRpb24gcHJvdmlkZWQKPiA+ID4gKyAq CQkJYnkgdGhlIGltcG9ydGVyLiBzZWUgJnN0cnVjdCBkbWFfYnVmX2F0dGFjaF9pbmZvCj4gPiA+ ICsgKgkJCWZvciBmdXJ0aGVyIGRldGFpbHMuCj4gPiA+ICAgICoKPiA+ID4gICAgKiBSZXR1cm5z IHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgcG9pbnRlciBmb3IgdGhpcyBhdHRhY2htZW50LiBB dHRhY2htZW50cwo+ID4gPiAgICAqIG11c3QgYmUgY2xlYW5lZCB1cCBieSBjYWxsaW5nIGRtYV9i dWZfZGV0YWNoKCkuCj4gPiA+IEBAIC01NDcsMjAgKzU0OCwyMCBAQCBFWFBPUlRfU1lNQk9MX0dQ TChkbWFfYnVmX3B1dCk7Cj4gPiA+ICAgICogYWNjZXNzaWJsZSB0byBAZGV2LCBhbmQgY2Fubm90 IGJlIG1vdmVkIHRvIGEgbW9yZSBzdWl0YWJsZSBwbGFjZS4gVGhpcyBpcwo+ID4gPiAgICAqIGlu ZGljYXRlZCB3aXRoIHRoZSBlcnJvciBjb2RlIC1FQlVTWS4KPiA+ID4gICAgKi8KPiA+ID4gLXN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpk bWFidWYsCj4gPiA+IC0JCQkJCSAgc3RydWN0IGRldmljZSAqZGV2KQo+ID4gPiArc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRhY2goY29uc3Qgc3RydWN0IGRtYV9idWZfYXR0 YWNoX2luZm8gKmluZm8pCj4gPiA+ICAgewo+ID4gPiArCXN0cnVjdCBkbWFfYnVmICpkbWFidWYg PSBpbmZvLT5kbWFidWY7Cj4gPiA+ICAgCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFj aDsKPiA+ID4gICAJaW50IHJldDsKPiA+ID4gLQlpZiAoV0FSTl9PTighZG1hYnVmIHx8ICFkZXYp KQo+ID4gPiArCWlmIChXQVJOX09OKCFkbWFidWYgfHwgIWluZm8tPmRldikpCj4gPiA+ICAgCQly ZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiA+ID4gICAJYXR0YWNoID0ga3phbGxvYyhzaXplb2Yo KmF0dGFjaCksIEdGUF9LRVJORUwpOwo+ID4gPiAgIAlpZiAoIWF0dGFjaCkKPiA+ID4gICAJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gPiAtCWF0dGFjaC0+ZGV2ID0gZGV2Owo+ID4gPiAr CWF0dGFjaC0+ZGV2ID0gaW5mby0+ZGV2Owo+ID4gPiAgIAlhdHRhY2gtPmRtYWJ1ZiA9IGRtYWJ1 ZjsKPiA+ID4gICAJbXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsKPiA+ID4gQEAgLTY4OCw5ICs2 ODksOSBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4gPiAgIAlpZiAoYXR0YWNoLT5zZ3QpCj4gPiA+ ICAgCQlyZXR1cm4gYXR0YWNoLT5zZ3Q7Cj4gPiA+IC0Jc2dfdGFibGUgPSBhdHRhY2gtPmRtYWJ1 Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRhY2gsIGRpcmVjdGlvbik7Cj4gPiA+IC0JaWYgKCFzZ190 YWJsZSkKPiA+ID4gLQkJc2dfdGFibGUgPSBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gPiArCXJlc2Vy dmF0aW9uX29iamVjdF9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiA+ID4gKwlz Z190YWJsZSA9IGRtYV9idWZfbWFwX2F0dGFjaG1lbnRfbG9ja2VkKGF0dGFjaCwgZGlyZWN0aW9u KTsKPiA+ID4gKwlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2 KTsKPiA+ID4gICAJcmV0dXJuIHNnX3RhYmxlOwo+ID4gPiAgIH0KPiA+ID4gQEAgLTc0NCw4ICs3 NDUsOSBAQCB2b2lkIGRtYV9idWZfdW5tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50ICphdHRhY2gsCj4gPiA+ICAgCWlmIChhdHRhY2gtPnNndCA9PSBzZ190YWJsZSkKPiA+ ID4gICAJCXJldHVybjsKPiA+ID4gLQlhdHRhY2gtPmRtYWJ1Zi0+b3BzLT51bm1hcF9kbWFfYnVm KGF0dGFjaCwgc2dfdGFibGUsCj4gPiA+IC0JCQkJCQlkaXJlY3Rpb24pOwo+ID4gPiArCXJlc2Vy dmF0aW9uX29iamVjdF9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiA+ID4gKwlk bWFfYnVmX3VubWFwX2F0dGFjaG1lbnRfbG9ja2VkKGF0dGFjaCwgc2dfdGFibGUsIGRpcmVjdGlv bik7Cj4gPiA+ICsJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVz dik7Cj4gPiA+ICAgfQo+ID4gPiAgIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfdW5tYXBfYXR0 YWNobWVudCk7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFk YV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRhX2dlbS5jCj4gPiA+IGluZGV4 IDY0MmQwZTcwZDBmOC4uMTljNDc4MjEwMzJmIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJt YWRhL2FybWFkYV9nZW0uYwo+ID4gPiBAQCAtNTAxLDYgKzUwMSwxMCBAQCBhcm1hZGFfZ2VtX3By aW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwKPiA+ID4gICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKgo+ID4gPiAgIGFybWFkYV9nZW1f cHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkbWFfYnVmICpidWYp Cj4gPiA+ICAgewo+ID4gPiArCXN0cnVjdCBkbWFfYnVmX2F0dGFjaF9pbmZvIGF0dGFjaF9pbmZv ID0gewo+ID4gPiArCQkuZGV2ID0gZGV2LT5kZXYsCj4gPiA+ICsJCS5kbWFidWYgPSBidWYKPiA+ ID4gKwl9Owo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gPiA+ ICAgCXN0cnVjdCBhcm1hZGFfZ2VtX29iamVjdCAqZG9iajsKPiA+ID4gQEAgLTUxNiw3ICs1MjAs NyBAQCBhcm1hZGFfZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZG1hX2J1ZiAqYnVmKQo+ID4gPiAgIAkJfQo+ID4gPiAgIAl9Cj4gPiA+IC0JYXR0YWNoID0g ZG1hX2J1Zl9hdHRhY2goYnVmLCBkZXYtPmRldik7Cj4gPiA+ICsJYXR0YWNoID0gZG1hX2J1Zl9h dHRhY2goJmF0dGFjaF9pbmZvKTsKPiA+ID4gICAJaWYgKElTX0VSUihhdHRhY2gpKQo+ID4gPiAg IAkJcmV0dXJuIEVSUl9DQVNUKGF0dGFjaCk7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKPiA+ID4gaW5k ZXggMjMxZTNmNmQ1ZjQxLi4xZmFkZjVkNWVkMzMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fcHJpbWUuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1l LmMKPiA+ID4gQEAgLTcwOSw2ICs3MDksMTAgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpkcm1f Z2VtX3ByaW1lX2ltcG9ydF9kZXYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gICAJCQkJ CSAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ID4gICAJCQkJCSAgICBzdHJ1Y3QgZGV2 aWNlICphdHRhY2hfZGV2KQo+ID4gPiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hf aW5mbyBhdHRhY2hfaW5mbyA9IHsKPiA+ID4gKwkJLmRldiA9IGF0dGFjaF9kZXYsCj4gPiA+ICsJ CS5kbWFidWYgPSBkbWFfYnVmCj4gPiA+ICsJfTsKPiA+ID4gICAJc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNoOwo+ID4gPiAgIAlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiA+ID4gICAJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiA+IEBAIC03MjksNyArNzMzLDcgQEAgc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpkcm1fZ2VtX3ByaW1lX2ltcG9ydF9kZXYoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+ID4gICAJaWYgKCFkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX2ltcG9ydF9z Z190YWJsZSkKPiA+ID4gICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gPiAtCWF0dGFj aCA9IGRtYV9idWZfYXR0YWNoKGRtYV9idWYsIGF0dGFjaF9kZXYpOwo+ID4gPiArCWF0dGFjaCA9 IGRtYV9idWZfYXR0YWNoKCZhdHRhY2hfaW5mbyk7Cj4gPiA+ICAgCWlmIChJU19FUlIoYXR0YWNo KSkKPiA+ID4gICAJCXJldHVybiBFUlJfQ0FTVChhdHRhY2gpOwo+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+ID4gPiBpbmRleCA4MmUyY2ExN2E0NDEuLmFhN2Y2ODVi ZDZjYSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1h YnVmLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMK PiA+ID4gQEAgLTI3Nyw2ICsyNzcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3RfZG1hYnVmX29wcyA9IHsKPiA+ID4gICBzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmk5MTVfZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4gPiAgIAkJCQkJICAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKPiA+ID4g ICB7Cj4gPiA+ICsJc3RydWN0IGRtYV9idWZfYXR0YWNoX2luZm8gYXR0YWNoX2luZm8gPSB7Cj4g PiA+ICsJCS5kZXYgPSBkZXYtPmRldiwKPiA+ID4gKwkJLmRtYWJ1ZiA9IGRtYV9idWYKPiA+ID4g Kwl9Owo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gPiA+ICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiA+ICAgCWludCByZXQ7Cj4gPiA+ IEBAIC0yOTUsNyArMjk5LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICppOTE1X2dlbV9wcmlt ZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gICAJfQo+ID4gPiAgIAkvKiBu ZWVkIHRvIGF0dGFjaCAqLwo+ID4gPiAtCWF0dGFjaCA9IGRtYV9idWZfYXR0YWNoKGRtYV9idWYs IGRldi0+ZGV2KTsKPiA+ID4gKwlhdHRhY2ggPSBkbWFfYnVmX2F0dGFjaCgmYXR0YWNoX2luZm8p Owo+ID4gPiAgIAlpZiAoSVNfRVJSKGF0dGFjaCkpCj4gPiA+ICAgCQlyZXR1cm4gRVJSX0NBU1Qo YXR0YWNoKTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYwo+ID4gPiBpbmRleCA0ZjgwMTAwZmY1ZjMuLjhl NmI2Yzg3OWFkZCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5j Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYwo+ID4gPiBAQCAtMzMyLDYg KzMzMiwxMCBAQCBzdHJ1Y3QgdGVncmFfYm8gKnRlZ3JhX2JvX2NyZWF0ZV93aXRoX2hhbmRsZShz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPiA+ICAgc3RhdGljIHN0cnVjdCB0ZWdyYV9ibyAqdGVn cmFfYm9faW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4gPiA+ICAgCQkJCQlzdHJ1Y3Qg ZG1hX2J1ZiAqYnVmKQo+ID4gPiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfaW5m byBhdHRhY2hfaW5mbyA9IHsKPiA+ID4gKwkJLmRldiA9IGRybS0+ZGV2LAo+ID4gPiArCQkuZG1h YnVmID0gYnVmCj4gPiA+ICsJfTsKPiA+ID4gICAJc3RydWN0IHRlZ3JhX2RybSAqdGVncmEgPSBk cm0tPmRldl9wcml2YXRlOwo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRh Y2g7Cj4gPiA+ICAgCXN0cnVjdCB0ZWdyYV9ibyAqYm87Cj4gPiA+IEBAIC0zNDEsNyArMzQ1LDcg QEAgc3RhdGljIHN0cnVjdCB0ZWdyYV9ibyAqdGVncmFfYm9faW1wb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sCj4gPiA+ICAgCWlmIChJU19FUlIoYm8pKQo+ID4gPiAgIAkJcmV0dXJuIGJvOwo+ ID4gPiAtCWF0dGFjaCA9IGRtYV9idWZfYXR0YWNoKGJ1ZiwgZHJtLT5kZXYpOwo+ID4gPiArCWF0 dGFjaCA9IGRtYV9idWZfYXR0YWNoKCZhdHRhY2hfaW5mbyk7Cj4gPiA+ICAgCWlmIChJU19FUlIo YXR0YWNoKSkgewo+ID4gPiAgIAkJZXJyID0gUFRSX0VSUihhdHRhY2gpOwo+ID4gPiAgIAkJZ290 byBmcmVlOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZG1hYnVm LmMgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYwo+ID4gPiBpbmRleCA1NTZmNjI2 NjJhYTkuLjg2YjkyOGY5NzQyZiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Vk bC91ZGxfZG1hYnVmLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZG1hYnVm LmMKPiA+ID4gQEAgLTIyNiw2ICsyMjYsMTAgQEAgc3RhdGljIGludCB1ZGxfcHJpbWVfY3JlYXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICp1 ZGxfZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiAgIAkJCQlz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKPiA+ID4gICB7Cj4gPiA+ICsJc3RydWN0IGRtYV9idWZf YXR0YWNoX2luZm8gYXR0YWNoX2luZm8gPSB7Cj4gPiA+ICsJCS5kZXYgPSBkZXYtPmRldiwKPiA+ ID4gKwkJLmRtYWJ1ZiA9IGRtYV9idWYKPiA+ID4gKwl9Owo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gPiA+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2c7Cj4gPiA+ ICAgCXN0cnVjdCB1ZGxfZ2VtX29iamVjdCAqdW9iajsKPiA+ID4gQEAgLTIzMyw3ICsyMzcsNyBA QCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnVkbF9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gPiA+ICAgCS8qIG5lZWQgdG8gYXR0YWNoICovCj4gPiA+ICAgCWdldF9k ZXZpY2UoZGV2LT5kZXYpOwo+ID4gPiAtCWF0dGFjaCA9IGRtYV9idWZfYXR0YWNoKGRtYV9idWYs IGRldi0+ZGV2KTsKPiA+ID4gKwlhdHRhY2ggPSBkbWFfYnVmX2F0dGFjaCgmYXR0YWNoX2luZm8p Owo+ID4gPiAgIAlpZiAoSVNfRVJSKGF0dGFjaCkpIHsKPiA+ID4gICAJCXB1dF9kZXZpY2UoZGV2 LT5kZXYpOwo+ID4gPiAgIAkJcmV0dXJuIEVSUl9DQVNUKGF0dGFjaCk7Cj4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWRtYS1jb250aWcu YyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItZG1hLWNvbnRpZy5j Cj4gPiA+IGluZGV4IGFmZjBhYjdiZjgzZC4uMWYyNjg3YjVlYjBlIDEwMDY0NAo+ID4gPiAtLS0g YS9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWRtYS1jb250aWcuYwo+ ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWRtYS1j b250aWcuYwo+ID4gPiBAQCAtNjc2LDYgKzY3NiwxMCBAQCBzdGF0aWMgdm9pZCB2YjJfZGNfZGV0 YWNoX2RtYWJ1Zih2b2lkICptZW1fcHJpdikKPiA+ID4gICBzdGF0aWMgdm9pZCAqdmIyX2RjX2F0 dGFjaF9kbWFidWYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZG1hX2J1ZiAqZGJ1ZiwKPiA+ ID4gICAJdW5zaWduZWQgbG9uZyBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkbWFfZGly KQo+ID4gPiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfaW5mbyBhdHRhY2hfaW5m byA9IHsKPiA+ID4gKwkJLmRldiA9IGRldiwKPiA+ID4gKwkJLmRtYWJ1ZiA9IGRidWYKPiA+ID4g Kwl9Owo+ID4gPiAgIAlzdHJ1Y3QgdmIyX2RjX2J1ZiAqYnVmOwo+ID4gPiAgIAlzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICpkYmE7Cj4gPiA+IEBAIC02OTEsNyArNjk1LDcgQEAgc3RhdGljIHZv aWQgKnZiMl9kY19hdHRhY2hfZG1hYnVmKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRtYV9i dWYgKmRidWYsCj4gPiA+ICAgCWJ1Zi0+ZGV2ID0gZGV2Owo+ID4gPiAgIAkvKiBjcmVhdGUgYXR0 YWNobWVudCBmb3IgdGhlIGRtYWJ1ZiB3aXRoIHRoZSB1c2VyIGRldmljZSAqLwo+ID4gPiAtCWRi YSA9IGRtYV9idWZfYXR0YWNoKGRidWYsIGJ1Zi0+ZGV2KTsKPiA+ID4gKwlkYmEgPSBkbWFfYnVm X2F0dGFjaCgmYXR0YWNoX2luZm8pOwo+ID4gPiAgIAlpZiAoSVNfRVJSKGRiYSkpIHsKPiA+ID4g ICAJCXByX2VycigiZmFpbGVkIHRvIGF0dGFjaCBkbWFidWZcbiIpOwo+ID4gPiAgIAkJa2ZyZWUo YnVmKTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92 aWRlb2J1ZjItZG1hLXNnLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9i dWYyLWRtYS1zZy5jCj4gPiA+IGluZGV4IDAxNWU3MzcwOTVjZC4uY2JkNjI2ZDIzOTNhIDEwMDY0 NAo+ID4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWRt YS1zZy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1 ZjItZG1hLXNnLmMKPiA+ID4gQEAgLTYwOCw2ICs2MDgsMTAgQEAgc3RhdGljIHZvaWQgdmIyX2Rt YV9zZ19kZXRhY2hfZG1hYnVmKHZvaWQgKm1lbV9wcml2KQo+ID4gPiAgIHN0YXRpYyB2b2lkICp2 YjJfZG1hX3NnX2F0dGFjaF9kbWFidWYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZG1hX2J1 ZiAqZGJ1ZiwKPiA+ID4gICAJdW5zaWduZWQgbG9uZyBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVj dGlvbiBkbWFfZGlyKQo+ID4gPiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfaW5m byBhdHRhY2hfaW5mbyA9IHsKPiA+ID4gKwkJLmRldiA9IGRldiwKPiA+ID4gKwkJLmRtYWJ1ZiA9 IGRidWYKPiA+ID4gKwl9Owo+ID4gPiAgIAlzdHJ1Y3QgdmIyX2RtYV9zZ19idWYgKmJ1ZjsKPiA+ ID4gICAJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZGJhOwo+ID4gPiBAQCAtNjIzLDcgKzYy Nyw3IEBAIHN0YXRpYyB2b2lkICp2YjJfZG1hX3NnX2F0dGFjaF9kbWFidWYoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgZG1hX2J1ZiAqZGJ1ZiwKPiA+ID4gICAJYnVmLT5kZXYgPSBkZXY7Cj4g PiA+ICAgCS8qIGNyZWF0ZSBhdHRhY2htZW50IGZvciB0aGUgZG1hYnVmIHdpdGggdGhlIHVzZXIg ZGV2aWNlICovCj4gPiA+IC0JZGJhID0gZG1hX2J1Zl9hdHRhY2goZGJ1ZiwgYnVmLT5kZXYpOwo+ ID4gPiArCWRiYSA9IGRtYV9idWZfYXR0YWNoKCZhdHRhY2hfaW5mbyk7Cj4gPiA+ICAgCWlmIChJ U19FUlIoZGJhKSkgewo+ID4gPiAgIAkJcHJfZXJyKCJmYWlsZWQgdG8gYXR0YWNoIGRtYWJ1Zlxu Iik7Cj4gPiA+ICAgCQlrZnJlZShidWYpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFn aW5nL21lZGlhL3RlZ3JhLXZkZS90ZWdyYS12ZGUuYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS90 ZWdyYS12ZGUvdGVncmEtdmRlLmMKPiA+ID4gaW5kZXggYWE2YzZiYmE5NjFlLi41YTEwYzFmYWNj MjcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS90ZWdyYS12ZGUvdGVn cmEtdmRlLmMKPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3RlZ3JhLXZkZS90ZWdy YS12ZGUuYwo+ID4gPiBAQCAtNTY4LDYgKzU2OCwxMCBAQCBzdGF0aWMgaW50IHRlZ3JhX3ZkZV9h dHRhY2hfZG1hYnVmKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gICAJCQkJICAgc2l6ZV90ICpz aXplLAo+ID4gPiAgIAkJCQkgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkbWFfZGlyKQo+ID4g PiAgIHsKPiA+ID4gKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfaW5mbyBhdHRhY2hfaW5mbyA9IHsK PiA+ID4gKwkJLmRldiA9IGRldiwKPiA+ID4gKwkJLmRtYWJ1ZiA9IGRtYWJ1Zgo+ID4gPiArCX07 Cj4gPiA+ICAgCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQ7Cj4gPiA+ICAg CXN0cnVjdCBkbWFfYnVmICpkbWFidWY7Cj4gPiA+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2d0Owo+ ID4gPiBAQCAtNTkxLDcgKzU5NSw3IEBAIHN0YXRpYyBpbnQgdGVncmFfdmRlX2F0dGFjaF9kbWFi dWYoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICAg CX0KPiA+ID4gLQlhdHRhY2htZW50ID0gZG1hX2J1Zl9hdHRhY2goZG1hYnVmLCBkZXYpOwo+ID4g PiArCWF0dGFjaG1lbnQgPSBkbWFfYnVmX2F0dGFjaCgmYXR0YWNoX2luZm8pOwo+ID4gPiAgIAlp ZiAoSVNfRVJSKGF0dGFjaG1lbnQpKSB7Cj4gPiA+ICAgCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBhdHRhY2ggZG1hYnVmXG4iKTsKPiA+ID4gICAJCWVyciA9IFBUUl9FUlIoYXR0YWNobWVudCk7 Cj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaCBiL2luY2x1ZGUvbGlu dXgvZG1hLWJ1Zi5oCj4gPiA+IGluZGV4IDE4YTc4YmU1MzU0MS4uN2UyMzc1OGRiM2E0IDEwMDY0 NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+ID4gPiArKysgYi9pbmNsdWRl L2xpbnV4L2RtYS1idWYuaAo+ID4gPiBAQCAtMTI4LDYgKzEyOCw5IEBAIHN0cnVjdCBkbWFfYnVm X29wcyB7Cj4gPiA+ICAgCSAqIGFueSBvdGhlciBraW5kIG9mIHNoYXJpbmcgdGhhdCB0aGUgZXhw b3J0ZXIgbWlnaHQgd2lzaCB0byBtYWtlCj4gPiA+ICAgCSAqIGF2YWlsYWJsZSB0byBidWZmZXIt dXNlcnMuCj4gPiA+ICAgCSAqCj4gPiA+ICsJICogVGhpcyBpcyBhbHdheXMgY2FsbGVkIHdpdGgg dGhlIGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkIHdoZW4KPiA+ID4gKwkgKiBub19zZ3RfY2Fj aGUgaXMgdHJ1ZS4KPiA+ID4gKwkgKgo+ID4gPiAgIAkgKiBSZXR1cm5zOgo+ID4gPiAgIAkgKgo+ ID4gPiAgIAkgKiBBICZzZ190YWJsZSBzY2F0dGVyIGxpc3Qgb2Ygb3IgdGhlIGJhY2tpbmcgc3Rv cmFnZSBvZiB0aGUgRE1BIGJ1ZmZlciwKPiA+ID4gQEAgLTE0OCw2ICsxNTEsOSBAQCBzdHJ1Y3Qg ZG1hX2J1Zl9vcHMgewo+ID4gPiAgIAkgKiBJdCBzaG91bGQgYWxzbyB1bnBpbiB0aGUgYmFja2lu ZyBzdG9yYWdlIGlmIHRoaXMgaXMgdGhlIGxhc3QgbWFwcGluZwo+ID4gPiAgIAkgKiBvZiB0aGUg RE1BIGJ1ZmZlciwgaXQgdGhlIGV4cG9ydGVyIHN1cHBvcnRzIGJhY2tpbmcgc3RvcmFnZQo+ID4g PiAgIAkgKiBtaWdyYXRpb24uCj4gPiA+ICsJICoKPiA+ID4gKwkgKiBUaGlzIGlzIGFsd2F5cyBj YWxsZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBsb2NrZWQgd2hlbgo+ID4gPiArCSAq IG5vX3NndF9jYWNoZSBpcyB0cnVlLgo+ID4gPiAgIAkgKi8KPiA+ID4gICAJdm9pZCAoKnVubWFw X2RtYV9idWYpKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwKPiA+ID4gICAJCQkgICAgICBz dHJ1Y3Qgc2dfdGFibGUgKiwKPiA+ID4gQEAgLTM3MCw2ICszNzYsMTkgQEAgc3RydWN0IGRtYV9i dWZfZXhwb3J0X2luZm8gewo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5mbyBuYW1l ID0geyAuZXhwX25hbWUgPSBLQlVJTERfTU9ETkFNRSwgXAo+ID4gPiAgIAkJCQkJIC5vd25lciA9 IFRISVNfTU9EVUxFIH0KPiA+ID4gKy8qKgo+ID4gPiArICogc3RydWN0IGRtYV9idWZfYXR0YWNo X2luZm8gLSBob2xkcyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYXR0YWNoIHRvIGEgZG1hX2J1Zgo+ ID4gPiArICogQGRtYWJ1ZjoJdGhlIGV4cG9ydGVkIGRtYV9idWYKPiA+ID4gKyAqIEBkZXY6CXRo ZSBkZXZpY2Ugd2hpY2ggd2FudHMgdG8gaW1wb3J0IHRoZSBhdHRhY2htZW50Cj4gPiA+ICsgKgo+ ID4gPiArICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRv IGF0dGFjaCB0byBhIGJ1ZmZlci4gVXNlZAo+ID4gPiArICogd2l0aCBkbWFfYnVmX2F0dGFjaCgp IG9ubHkuCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBkbWFfYnVmX2F0dGFjaF9pbmZvIHsKPiA+ ID4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsK PiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gICAvKioKPiA+ID4gICAgKiBnZXRfZG1hX2J1ZiAtIGNv bnZlbmllbmNlIHdyYXBwZXIgZm9yIGdldF9maWxlLgo+ID4gPiAgICAqIEBkbWFidWY6CVtpbl0J cG9pbnRlciB0byBkbWFfYnVmCj4gPiA+IEBAIC0zODQsOCArNDAzLDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIGdldF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCj4gPiA+ICAgCWdldF9m aWxlKGRtYWJ1Zi0+ZmlsZSk7Cj4gPiA+ICAgfQo+ID4gPiAtc3RydWN0IGRtYV9idWZfYXR0YWNo bWVudCAqZG1hX2J1Zl9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiA+ID4gLQkJCQkJ CQlzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gPiArc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq Cj4gPiA+ICtkbWFfYnVmX2F0dGFjaChjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfaW5mbyAq aW5mbyk7Cj4gPiA+ICAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVm LAo+ID4gPiAgIAkJCQlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFidWZfYXR0YWNoKTsK PiA+ID4gLS0gCj4gPiA+IDIuMTcuMQo+ID4gPiAKPiA+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ ID4gPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs