From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 02/12] dma-buf: add explicit buffer pinning v2 Date: Tue, 30 Apr 2019 15:59:37 +0200 Message-ID: <20190430135937.GS3271@phenom.ffwll.local> References: <20190426123638.40221-1-christian.koenig@amd.com> <20190426123638.40221-2-christian.koenig@amd.com> <20190429084048.GL3271@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0133D89148 for ; Tue, 30 Apr 2019 13:59:45 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id e56so6103473ede.7 for ; Tue, 30 Apr 2019 06:59:45 -0700 (PDT) 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: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMzAsIDIwMTkgYXQgMDM6NDI6MjJQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAyOS4wNC4xOSB1bSAxMDo0MCBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4g PiBPbiBGcmksIEFwciAyNiwgMjAxOSBhdCAwMjozNjoyOFBNICswMjAwLCBDaHJpc3RpYW4gS8O2 bmlnIHdyb3RlOgo+ID4gPiBBZGQgb3B0aW9uYWwgZXhwbGljaXQgcGlubmluZyBjYWxsYmFja3Mg aW5zdGVhZCBvZiBpbXBsaWNpdGx5IGFzc3VtZSB0aGUKPiA+ID4gZXhwb3J0ZXIgcGlucyB0aGUg YnVmZmVyIHdoZW4gYSBtYXBwaW5nIGlzIGNyZWF0ZWQuCj4gPiA+IAo+ID4gPiB2MjogbW92ZSBp biBwYXRjaHNldCBhbmQgcGluIHRoZSBkbWEtYnVmIGluIHRoZSBvbGQgbWFwcGluZyBjb2RlIHBh dGhzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0 aWFuLmtvZW5pZ0BhbWQuY29tPgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL2RtYS1idWYvZG1h LWJ1Zi5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiA+ ICAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmggICB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysr KystLS0tLQo+ID4gPiAgIDIgZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgNyBkZWxl dGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1 Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ID4gPiBpbmRleCA1MGI0YzZhZjA0Yzcu LjA2NTZkY2YyODliZSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYu Ywo+ID4gPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gPiA+IEBAIC01MjksNiAr NTI5LDQxIEBAIHZvaWQgZG1hX2J1Zl9wdXQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKPiA+ID4g ICB9Cj4gPiA+ICAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQpOwo+ID4gPiArLyoqCj4g PiA+ICsgKiBkbWFfYnVmX3BpbiAtIExvY2sgZG93biB0aGUgRE1BLWJ1Zgo+ID4gPiArICoKPiA+ ID4gKyAqIEBkbWFidWY6CVtpbl0JRE1BLWJ1ZiB0byBsb2NrIGRvd24uCj4gPiA+ICsgKgo+ID4g PiArICogUmV0dXJuczoKPiA+ID4gKyAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29k ZSBvbiBmYWlsdXJlLgo+ID4gPiArICovCj4gPiA+ICtpbnQgZG1hX2J1Zl9waW4oc3RydWN0IGRt YV9idWYgKmRtYWJ1ZikKPiA+IEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgb24gdGhlIGF0dGFjaG1l bnQsIG5vdCBvbiB0aGUgYnVmZmVyLiBPciBpcyB0aGUKPiA+IGlkZWEgdGhhdCBhIHBpbiBpcyBm b3IgdGhlIGVudGlyZSBidWZmZXIsIGFuZCBhbGwgc3Vic2VxdWVudAo+ID4gZG1hX2J1Zl9tYXBf YXR0YWNobWVudCBtdXN0IHdvcmsgZm9yIGFsbCBhdHRhY2htZW50cz8gSSB0aGluayB0aGlzIG1h dHRlcnMKPiA+IGZvciBzdWZmaWNpZW50bHkgY29udHJpdmVkIHAycCBzY2VuYXJpb3MuCj4gCj4g VGhpcyBpcyBpbmRlZWQgZm9yIHRoZSBETUEtYnVmLCBjYXVzZSB3ZSBhcmUgcGlubmluZyB0aGUg dW5kZXJseWluZyBiYWNraW5nCj4gc3RvcmUgYW5kIG5vdCBqdXN0IG9uZSBhdHRhY2htZW50LgoK WW91IGNhbid0IG1vdmUgdGhlIGJ1ZmZlciBlaXRoZXIgd2F5LCBzbyBmcm9tIHRoYXQgcG9pbnQg dGhlcmUncyBubwpkaWZmZXJlbmNlLiBJIG1vcmUgbWVhbnQgZnJvbSBhbiBhY2NvdW50L2FwaSBw b2ludCBvZiB2aWV3IG9mIHdoZXRoZXIgaXQncwpvayB0byBwaW4gYSBidWZmZXIgeW91IGhhdmVu J3QgZXZlbiBhdHRhY2hlZCB0byB5ZXQuIEZyb20gdGhlIGNvZGUgaXQKc2VlbXMgbGlrZSBmaXJz dCB5b3UgYWx3YXlzIHdhbnQgdG8gYXR0YWNoLCBoZW5jZSBpdCB3b3VsZCBtYWtlIHNlbnNlIHRv CnB1dCB0aGUgcGluL3VucGluIG9udG8gdGhlIGF0dGFjaG1lbnQuIFRoYXQgbWlnaHQgYWxzbyBo ZWxwIHdpdGgKZGVidWdnaW5nLCB3ZSBjb3VsZCBjaGVjayB3aGV0aGVyIGV2ZXJ5b25lIGJhbGFu Y2VzIHRoZWlyIHBpbi91bnBpbgpjb3JyZWN0bHkgKGluc3RlYWQgb2YganVzdCBjb3VudGluZyBm b3IgdGhlIG92ZXJhbGwgZG1hLWJ1ZikuCgpUaGVyZSdzIGFsc28gYSBzbGlnaHQgc2VtYW50aWMg ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgcGluIG9uIGFuIGF0dGFjaG1lbnQKKHdoaWNoIHdvdWxkIG1l YW4gdGhpcyBhdHRhY2htZW50IGlzIGFsd2F5cyBnb2luZyB0byBiZSBtYXBwYWJsZSBhbmQgd29u dAptb3ZlIGFyb3VuZCksIHdoZXJlYXMgYSBwaW4gb24gdGhlIGVudGlyZSBkbWEtYnVmIG1lYW5z IHRoZSBlbnRpcmUgZG1hLWJ1ZgphbmQgYWxsIGl0J3MgYXR0YWNobWVudCBtdXN0IGFsd2F5cyBi ZSBtYXBwYWJsZS4gT3RvaCwgZ2xvYmFsIHBpbiBpcwpwcm9iYWJseSBlYXNpZXIsIHlvdSBqdXN0 IG5lZWQgdG8gY2hlY2sgYWxsIGN1cnJlbnQgYXR0YWNobWVudHMgYWdhaW4Kd2hldGhlciB0aGV5 IHN0aWxsIHdvcmsgb3Igd2hldGhlciB5b3UgbWlnaHQgbmVlZCB0byBtb3ZlIHRoZSBidWZmZXIK YXJvdW5kIHRvIGEgbW9yZSBzdWl0YWJsZSBwbGFjZSAoZS5nLiBpZiB5b3Ugbm90IGFsbCBjYW4g ZG8gcDJwIGl0IG5lZWRzCnRvIGdvIGludG8gc3lzdGVtIHJhbSBiZWZvcmUgaXQncyBwaW5uZWQp LgoKRm9yIHRoZSBiYWNraW5nIHN0b3JhZ2UgeW91IG9ubHkgd2FudCBvbmUgcGVyLWJvIC0+cGlu bmVkX2NvdW50LCB0aGF0J3MKY2xlYXIsIG15IHN1Z2dlc3Rpb24gd2FzIG1vcmUgYWJvdXQgd2hl dGhlciBoYXZpbmcgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAp3aG8ncyBwaW5uaW5nIGlzIHVzZWZ1 bC4gRXhwb3J0ZXJzIGNhbiBhbHdheXMganVzdCBpZ25vcmUgdGhhdCBhZGRlZAppbmZvcm1hdGlv bi4KCj4gS2V5IHBvaW50IGlzIEkgd2FudCB0byBjYWxsIHRoaXMgaW4gdGhlIGV4cG9ydGVyIGl0 c2VsZiBpbiB0aGUgbG9uZyBydW4uCj4gRS5nLiB0aGF0IHRoZSBleHBvcnRlciBzdG9wcyB3b3Jr aW5nIHdpdGggaXRzIGludGVybmFsIHNwZWNpYWwgaGFuZGxpbmcKPiBmdW5jdGlvbnMgYW5kIHVz ZXMgdGhpcyBvbmUgaW5zdGVhZC4KCkhtLCBub3QgZXhhY3RseSBmb2xsb3dpbmcgd2h5IHRoZSBl eHBvcnRlciBuZWVkcyB0byBjYWxsCmRtYV9idWZfcGluL3VucGluLCBpbnN0ZWFkIG9mIHdoYXRl dmVyIGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoYXQuIE9yIGRvCnlvdSBtZWFuIHRoYXQgeW91IHdh bnQgYSAtPnBpbm5lZF9jb3VudCBpbiBkbWFfYnVmIGl0c2VsZiwgc28gdGhhdCB0aGVyZSdzCm9u bHkgb25lIGJvb2sta2VlcGluZyBmb3IgdGhpcz8KCj4gPiBFaXRoZXIgd2F5LCBkb2NzIG5lZWQg dG8gY2xhcmlmeSB0aGlzLgo+IAo+IEdvaW5nIHRvIGFkZCBhIGJpdCBtb3JlIGhlcmUuCj4gCj4g PiAKPiA+ID4gK3sKPiA+ID4gKwlpbnQgcmV0ID0gMDsKPiA+ID4gKwo+ID4gPiArCXJlc2VydmF0 aW9uX29iamVjdF9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+ID4gPiArCj4gPiA+ICsJaWYg KGRtYWJ1Zi0+b3BzLT5waW4pCj4gPiA+ICsJCXJldCA9IGRtYWJ1Zi0+b3BzLT5waW4oZG1hYnVm KTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lN Qk9MX0dQTChkbWFfYnVmX3Bpbik7Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogZG1hX2J1 Zl91bnBpbiAtIFJlbW92ZSBsb2NrIGZyb20gRE1BLWJ1Zgo+ID4gPiArICoKPiA+ID4gKyAqIEBk bWFidWY6CVtpbl0JRE1BLWJ1ZiB0byB1bmxvY2suCj4gPiA+ICsgKi8KPiA+ID4gK3ZvaWQgZG1h X2J1Zl91bnBpbihzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ID4gPiArewo+ID4gPiArCXJlc2Vy dmF0aW9uX29iamVjdF9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+ID4gPiArCj4gPiA+ICsJ aWYgKGRtYWJ1Zi0+b3BzLT51bnBpbikKPiA+ID4gKwkJZG1hYnVmLT5vcHMtPnVucGluKGRtYWJ1 Zik7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3VucGluKTsKPiA+ ID4gKwo+ID4gPiAgIC8qKgo+ID4gPiAgICAqIGRtYV9idWZfYXR0YWNoIC0gQWRkIHRoZSBkZXZp Y2UgdG8gZG1hX2J1ZidzIGF0dGFjaG1lbnRzIGxpc3Q7IG9wdGlvbmFsbHksCj4gPiA+ICAgICog Y2FsbHMgYXR0YWNoKCkgb2YgZG1hX2J1Zl9vcHMgdG8gYWxsb3cgZGV2aWNlLXNwZWNpZmljIGF0 dGFjaCBmdW5jdGlvbmFsaXR5Cj4gPiA+IEBAIC01NDgsNyArNTgzLDggQEAgRVhQT1JUX1NZTUJP TF9HUEwoZG1hX2J1Zl9wdXQpOwo+ID4gPiAgICAqIGFjY2Vzc2libGUgdG8gQGRldiwgYW5kIGNh bm5vdCBiZSBtb3ZlZCB0byBhIG1vcmUgc3VpdGFibGUgcGxhY2UuIFRoaXMgaXMKPiA+ID4gICAg KiBpbmRpY2F0ZWQgd2l0aCB0aGUgZXJyb3IgY29kZSAtRUJVU1kuCj4gPiA+ICAgICovCj4gPiA+ IC1zdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChjb25zdCBzdHJ1Y3Qg ZG1hX2J1Zl9hdHRhY2hfaW5mbyAqaW5mbykKPiA+ID4gK3N0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKgo+ID4gPiArZG1hX2J1Zl9hdHRhY2goY29uc3Qgc3RydWN0IGRtYV9idWZfYXR0YWNoX2lu Zm8gKmluZm8pCj4gPiA+ICAgewo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmID0gaW5m by0+ZG1hYnVmOwo+ID4gPiAgIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4g PiA+IEBAIC02MjUsMTIgKzY2MSwxOSBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0 dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4gPiAgIAkJCQkJ ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQo+ID4gPiAgIHsKPiA+ID4gICAJc3Ry dWN0IHNnX3RhYmxlICpzZ190YWJsZTsKPiA+ID4gKwlpbnQgcjsKPiA+ID4gICAJbWlnaHRfc2xl ZXAoKTsKPiA+ID4gICAJaWYgKFdBUk5fT04oIWF0dGFjaCB8fCAhYXR0YWNoLT5kbWFidWYpKQo+ ID4gPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gPiA+ICsJcmVzZXJ2YXRpb25fb2Jq ZWN0X2xvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YsIE5VTEwpOwo+ID4gPiArCXIgPSBkbWFfYnVm X3BpbihhdHRhY2gtPmRtYWJ1Zik7Cj4gPiA+ICsJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhh dHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4gPiBUaGlzIGFkZHMgYW4gdW5jb25kaXRpb25hbCByZXNl cnZhdCBsb2NrIHRvIG1hcC91bm1hcCwgd2hpY2ggaXMgdGhpbmsKPiA+IHBpc3NlcyBvZmYgZHJp dmVycy4gVGhpcyBnZXRzIGZpeGVkIGxhdGVyIG9uIHdpdGggdGhlIGNhY2hpbmcsIGJ1dCBtZWFu cwo+ID4gdGhlIHNlcmllcyBpcyBicm9rZW4gaGVyZS4KPiA+IAo+ID4gQWxzbywgdGhhdCBzdXBl ci1maW5lIGdyYWluZWQgc3BsaXQtdXAgbWFrZXMgaXQgaGFyZGVyIGZvciBtZSB0byByZXZpZXcK PiA+IHRoZSBkb2NzLCBzaW5jZSBvbmx5IHVudGlsIHRoZSB2ZXJ5IGVuZCBhcmUgYWxsIHRoZSBi aXRzIHByZXNlbnQgZm9yIGZ1bGwKPiA+IGR5bmFtaWMgZG1hLWJ1ZiBtYXBwaW5ncy4KPiA+IAo+ ID4gSSB0aGluayBpdCdkIGJlIGJlc3QgdG8gc3F1YXNoIGFsbCB0aGUgcGF0Y2hlcyBmcm9tIHBp biB1cCB0byB0aGUgb25lIHRoYXQKPiA+IGFkZHMgdGhlIGludmFsaWRhdGUgY2FsbGJhY2sgaW50 byBvbmUgcGF0Y2guIEl0J3MgYWxsIGNoYW5nZXMgdG8KPiA+IGRtYS1idWYuW2hjXSBvbmx5IGFu eXdheS4gSWYgdGhhdCBpcyB0b28gYmlnIHdlIGNhbiB0aGluayBhYm91dCBob3cgdG8KPiA+IHNw bGl0IGl0IHVwIGFnYWluLCBidXQgYXQgbGVhc3QgZm9yIG1lIHRoZSBjdXJyZW50IHNwbGl0dGlu ZyBkb2Vzbid0IG1ha2UKPiA+IHNlbnNlIGF0IGFsbC4KPiAKPiBGaW5lIHdpdGggbWUsIGlmIHlv dSB0aGluayB0aGF0IGlzIGVhc2llciB0byByZXZpZXcuIEl0IGp1c3QgZ2F2ZSBtZSBhIGJpZwo+ IGhlYWRhY2hlIHRvIGFkZCBhbGwgdGhhdCBsb2dpYyBhdCB0aGUgc2FtZSB0aW1lLgoKSSB0aGlu ayB0aGUgYmlnIGhlYWRhY2hlIGlzIHVuYXZvaWRhYmxlLCBzaW5jZSBpdCdzIGFsbCBsaW5rZWQg dmVyeQpjbG9zZWx5IHRvZ2V0aGVyLiBIZW5jZSB3aHkgSSB0aGluayB0aGlzIGlzIGVhc2llciB0 byByZXZpZXcsIGRlZmFjdG8gaXQncwpkbWEtYnVmIHYyLiBUcmVhdGluZyBpdCBhcyBhIGNsZWFu LXNsYXRlIHRoaW5nIChidXQgd2l0aCBiYWNrd2FyZHMgY29tcGF0KQppbnN0ZWFkIG9mIGFzIGFu IGV2b2x1dGlvbiBmZWVscyBiZXR0ZXIgKGFmdGVyIHRoZSBmaXJzdCBmZXcgYXR0ZW1wdHMgb2Yg YQpzcGxpdCB1cCBzZXJpZXMpLgoKQ2hlZXJzLCBEYW5pZWwKCgo+IAo+ID4gCj4gPiA+ICsJaWYg KHIpCj4gPiA+ICsJCXJldHVybiBFUlJfUFRSKHIpOwo+ID4gPiArCj4gPiA+ICAgCXNnX3RhYmxl ID0gYXR0YWNoLT5kbWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNoLCBkaXJlY3Rpb24pOwo+ ID4gPiAgIAlpZiAoIXNnX3RhYmxlKQo+ID4gPiAgIAkJc2dfdGFibGUgPSBFUlJfUFRSKC1FTk9N RU0pOwo+ID4gTGVha3MgdGhlIHBpbiBpZiB3ZSBmYWlsIGhlcmUuCj4gCj4gR29pbmcgdG8gZml4 IHRoYXQuCj4gCj4gPiAKPiA+ID4gQEAgLTY2MCw2ICs3MDMsMTAgQEAgdm9pZCBkbWFfYnVmX3Vu bWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4gPiAg IAlhdHRhY2gtPmRtYWJ1Zi0+b3BzLT51bm1hcF9kbWFfYnVmKGF0dGFjaCwgc2dfdGFibGUsCj4g PiA+ICAgCQkJCQkJZGlyZWN0aW9uKTsKPiA+ID4gKwo+ID4gPiArCXJlc2VydmF0aW9uX29iamVj dF9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiA+ID4gKwlkbWFfYnVmX3VucGlu KGF0dGFjaC0+ZG1hYnVmKTsKPiA+ID4gKwlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFj aC0+ZG1hYnVmLT5yZXN2KTsKPiA+ID4gICB9Cj4gPiA+ICAgRVhQT1JUX1NZTUJPTF9HUEwoZG1h X2J1Zl91bm1hcF9hdHRhY2htZW50KTsKPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv ZG1hLWJ1Zi5oIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiA+ID4gaW5kZXggMmMzMTJkZmQz MWExLi4wMzIxOTM5YjFjM2QgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLWJ1 Zi5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gPiA+IEBAIC01MSw2ICs1 MSwzNCBAQCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50Owo+ID4gPiAgICAqIEB2dW5tYXA6IFtv cHRpb25hbF0gdW5tYXBzIGEgdm1hcCBmcm9tIHRoZSBidWZmZXIKPiA+ID4gICAgKi8KPiA+ID4g ICBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBwaW46Cj4gPiA+ ICsJICoKPiA+ID4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX3BpbiBhbmQgbGV0cyB0 aGUgZXhwb3J0ZXIga25vdyB0aGF0IHRoZQo+ID4gPiArCSAqIERNQS1idWYgY2FuJ3QgYmUgbW92 ZWQgYW55IG1vcmUuCj4gPiA+ICsJICoKPiA+ID4gKwkgKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHRo ZSBkbWFidWYtPnJlc3Ygb2JqZWN0IGxvY2tlZC4KPiA+ID4gKwkgKgo+ID4gPiArCSAqIFRoaXMg Y2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiA+ICsJICoKPiA+ID4gKwkgKiBSZXR1cm5zOgo+ID4g PiArCSAqCj4gPiA+ICsJICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCj4gPiA+ICsJICovCj4gPiA+ICsJaW50ICgqcGluKShzdHJ1Y3QgZG1hX2J1ZiAqKTsK PiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEB1bnBpbjoKPiA+ID4gKwkgKgo+ID4gPiAr CSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5waW4gYW5kIGxldHMgdGhlIGV4cG9ydGVy IGtub3cgdGhhdCB0aGUKPiA+ID4gKwkgKiBETUEtYnVmIGNhbiBiZSBtb3ZlZCBhZ2Fpbi4KPiA+ ID4gKwkgKgo+ID4gPiArCSAqIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVzdiBv YmplY3QgbG9ja2VkLgo+ID4gPiArCSAqCj4gPiA+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbC4KPiA+ICJUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBidXQgbXVzdCBiZSBwcm92aWRl ZCBpZiBAcGluIGlzLiIgU2FtZSBmb3IKPiA+IEBwaW4gSSB0aGluaywgcGx1cyB3b3VsZCBiZSBn b29kIHRvIGNoZWNrIGluIGRtYV9idWZfZXhwb3J0IHRoYXQgeW91IGhhdmUKPiA+IGJvdGggb3Ig bmVpdGhlciB3aXRoCj4gPiAKPiA+IAlXQVJOX09OKCEhZXhwX2luZm8tPm9wcy0+cGluID09ICEh ZXhwX2luZm8tPm9wcy0+dW5waW4pOwo+ID4gCj4gPiA+ICsJICovCj4gPiA+ICsJdm9pZCAoKnVu cGluKShzdHJ1Y3QgZG1hX2J1ZiAqKTsKPiA+ID4gKwo+ID4gPiAgIAkvKioKPiA+ID4gICAJICog QGF0dGFjaDoKPiA+ID4gICAJICoKPiA+ID4gQEAgLTk1LDkgKzEyMyw3IEBAIHN0cnVjdCBkbWFf YnVmX29wcyB7Cj4gPiA+ICAgCSAqCj4gPiA+ICAgCSAqIFRoaXMgaXMgY2FsbGVkIGJ5IGRtYV9i dWZfbWFwX2F0dGFjaG1lbnQoKSBhbmQgaXMgdXNlZCB0byBtYXAgYQo+ID4gPiAgIAkgKiBzaGFy ZWQgJmRtYV9idWYgaW50byBkZXZpY2UgYWRkcmVzcyBzcGFjZSwgYW5kIGl0IGlzIG1hbmRhdG9y eS4gSXQKPiA+ID4gLQkgKiBjYW4gb25seSBiZSBjYWxsZWQgaWYgQGF0dGFjaCBoYXMgYmVlbiBj YWxsZWQgc3VjY2Vzc2Z1bGx5LiBUaGlzCj4gPiA+IC0JICogZXNzZW50aWFsbHkgcGlucyB0aGUg RE1BIGJ1ZmZlciBpbnRvIHBsYWNlLCBhbmQgaXQgY2Fubm90IGJlIG1vdmVkCj4gPiA+IC0JICog YW55IG1vcmUKPiA+ID4gKwkgKiBjYW4gb25seSBiZSBjYWxsZWQgaWYgQGF0dGFjaCBoYXMgYmVl biBjYWxsZWQgc3VjY2Vzc2Z1bGx5Lgo+ID4gSSB0aGluayBkcm9wcGluZyB0aGlzIG91dHJpZ2h0 IGlzbid0IGNvcnJlY3QsIHNpbmNlIGZvciBhbGwgY3VycmVudAo+ID4gZG1hLWJ1ZiBleHBvcnRl cnMgaXQncyBzdGlsbCB3aGF0IHRoZXkgc2hvdWxkIGJlIGRvaW5nLiBXZSBqdXN0IG5lZWQgdG8K PiA+IG1ha2UgdGhpcyBjb25kaXRpb25hbCBvbiBAcGluIGFuZCBAdW5waW4gbm90IGJlaW5nIHBy ZXNlbnQ6Cj4gPiAKPiA+IAkiSWYgQHBpbiBhbmQgQHVucGluIGFyZSBub3QgcHJvdmlkZWQgdGhp cyBlc3NlbnRpYWxseSBwaW5zIHRoZSBETUEKPiA+IAlidWZmZXIgaW50byBwbGFjZSwgYW5kIGl0 IGNhbm5vdCBiZSBtb3ZlZCBhbnkgbW9yZS4iCj4gPiAKPiA+ID4gICAJICoKPiA+ID4gICAJICog VGhpcyBjYWxsIG1heSBzbGVlcCwgZS5nLiB3aGVuIHRoZSBiYWNraW5nIHN0b3JhZ2UgZmlyc3Qg bmVlZHMgdG8gYmUKPiA+ID4gICAJICogYWxsb2NhdGVkLCBvciBtb3ZlZCB0byBhIGxvY2F0aW9u IHN1aXRhYmxlIGZvciBhbGwgY3VycmVudGx5IGF0dGFjaGVkCj4gPiA+IEBAIC0xMzUsOSArMTYx LDYgQEAgc3RydWN0IGRtYV9idWZfb3BzIHsKPiA+ID4gICAJICoKPiA+ID4gICAJICogVGhpcyBp cyBjYWxsZWQgYnkgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KCkgYW5kIHNob3VsZCB1bm1hcCBh bmQKPiA+ID4gICAJICogcmVsZWFzZSB0aGUgJnNnX3RhYmxlIGFsbG9jYXRlZCBpbiBAbWFwX2Rt YV9idWYsIGFuZCBpdCBpcyBtYW5kYXRvcnkuCj4gPiBTYW1lIGhlcmUsIGFkZCBhICJJZiBAcGlu IGFuZCBAdW5waW4gYXJlIG5vdCBwcm92aWRlZCB0aGlzIHNob3VsZCAuLi4iCj4gPiBxdWFsaWZp ZXIgaW5zdGVhZCBvZiBkZWxldGluZy4KPiA+IAo+ID4gQ2hlZXJzLCBEYW5pZWwKPiA+IAo+ID4g Cj4gPiA+IC0JICogSXQgc2hvdWxkIGFsc28gdW5waW4gdGhlIGJhY2tpbmcgc3RvcmFnZSBpZiB0 aGlzIGlzIHRoZSBsYXN0IG1hcHBpbmcKPiA+ID4gLQkgKiBvZiB0aGUgRE1BIGJ1ZmZlciwgaXQg dGhlIGV4cG9ydGVyIHN1cHBvcnRzIGJhY2tpbmcgc3RvcmFnZQo+ID4gPiAtCSAqIG1pZ3JhdGlv bi4KPiA+ID4gICAJICovCj4gPiA+ICAgCXZvaWQgKCp1bm1hcF9kbWFfYnVmKShzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICosCj4gPiA+ICAgCQkJICAgICAgc3RydWN0IHNnX3RhYmxlICosCj4g PiA+IEBAIC0zODYsNiArNDA5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldF9kbWFfYnVmKHN0 cnVjdCBkbWFfYnVmICpkbWFidWYpCj4gPiA+ICAgCWdldF9maWxlKGRtYWJ1Zi0+ZmlsZSk7Cj4g PiA+ICAgfQo+ID4gPiAraW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpOwo+ ID4gPiArdm9pZCBkbWFfYnVmX3VucGluKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpOwo+ID4gPiAr Cj4gPiA+ICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqCj4gPiA+ICAgZG1hX2J1Zl9hdHRh Y2goY29uc3Qgc3RydWN0IGRtYV9idWZfYXR0YWNoX2luZm8gKmluZm8pOwo+ID4gPiAgIHZvaWQg ZG1hX2J1Zl9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiA+ID4gLS0gCj4gPiA+IDIu MTcuMQo+ID4gPiAKPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiA+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gPiBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs