From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 5/5] drm/amdgpu: add independent DMA-buf export v3 Date: Mon, 25 Jun 2018 09:46:21 +0200 Message-ID: <20180625074621.GJ2958@phenom.ffwll.local> References: <20180601120020.11520-1-christian.koenig@amd.com> <20180601120020.11520-5-christian.koenig@amd.com> <20180618082857.GY3438@phenom.ffwll.local> <64382bf8-9539-6fa5-3f95-a3b627e4684d@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <64382bf8-9539-6fa5-3f95-a3b627e4684d-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: christian.koenig-5C7GfCeVMHo@public.gmane.org Cc: linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org T24gRnJpLCBKdW4gMjIsIDIwMTggYXQgMDM6Mzk6MjVQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxOC4wNi4yMDE4IHVtIDEwOjI4IHNjaHJpZWIgRGFuaWVsIFZldHRlcjoK PiA+IE9uIEZyaSwgSnVuIDAxLCAyMDE4IGF0IDAyOjAwOjIwUE0gKzAyMDAsIENocmlzdGlhbiBL w7ZuaWcgd3JvdGU6Cj4gPiA+IFRoZSBjYWNoaW5nIG9mIFNHVCdzIGRvbmUgYnkgdGhlIERSTSBj b2RlIGlzIGFjdHVhbGx5IHF1aXRlIGhhcm1mdWwgYW5kCj4gPiA+IHNob3VsZCBwcm9iYWJseSBy ZW1vdmVkIGFsdG9nZXRoZXIgaW4gdGhlIGxvbmcgdGVybS4KPiA+IEhtLCB3aHkgaXMgaXQgaGFy bWZ1bD8gV2UndmUgZG9uZSBpdCBiZWNhdXNlIGl0J3MgZXhwZW5zaXZlLCBhbmQgcGVvcGxlCj4g PiBzdGFydGVkIHNjcmVhbWluZyBhYm91dCB0aGUgb3ZlcmhlYWQgLi4uIGhlbmNlIHRoZSBjYWNo aW5nLgo+IAo+IEl0J3MgYSBiYWQgaWRlYSBiZWNhdXNlIGl0IGFydGlmaWNpYWxseSBleHRlbmRz IHRoZSBsaWZldGltZSBvZiB0aGUgbWFwcGluZywKPiB3aGljaCBpcyBleGFjdGx5IHdoYXQgd2Ug d2FudCB0byBhdm9pZCB3aGVuIHdlIGNyZWF0ZSB0aGUgbWFwcGluZ3MKPiBkeW5hbWljYWxseSBh bmQgb25seSBhcyBsb25nIGFzIG5lY2Vzc2FyeS4KPiAKPiBBbmQgYWN0dWFsbHkgY2hlY2tpbmcg dGhlIG1haWwgaGlzdG9yeSBJIGNvdWxkIG9ubHkgZmluZCBpbmRpY2F0b3JzIHRoYXQKPiBwZW9w bGUgdGhvdWdodCBpdCB3b3VsZCBoZWxwLiBJIGhhdmVuJ3QgZm91bmQgYW55IGV2aWRlbmNlIHRo YXQgYW55Ym9keQo+IGFjdHVhbGx5IGNoZWNrZWQgaWYgdGhhdCBoZWxwcyBvciBub3QuCgpIbSwg SSBkbyBoYXZlIHNvbWUgbWVtb3JpZXMgb2YgcGVvcGxlIGJlaW5nIHJlYWxseSB1cHNldCBhYm91 dCB0aGUKY29uc3RhbnRseSByZXdyaXRpbmcgb2YgSU9NTVUgcGFnZXRhYmxlcy4gVGhpcyB3YXMg Zm9yIGRpc3BsYXktb25seQpkcml2ZXJzIHdoZXJlIGZvcmNpbmcgZXZlcnlvbmUgdG8gaGF2ZSB0 aGVpciBvd24gcHJpdmF0ZSBjYWNoaW5nCmltcGxlbWVudGF0aW9uIGlzIGEgYml0IHNpbGx5LgoK PiA+IERvaW5nIGFuIGFtZGdwdSBjb3B5cGFzdGEgc2VlbXMgbGlrZSB3b3JraW5nIGFyb3VuZCBp c3N1ZXMgaW4gc2hhcmVkIGNvZGUuCj4gCj4gQ29tcGxldGVseSBhZ3JlZSwgYnV0IEkgZG9uJ3Qg d2FudCB0byBwdXNoIHRoYXQgcG9saWN5IHRvIGV2ZXJ5Ym9keSBqdXN0Cj4geWV0Lgo+IAo+IFdo ZW4gd2UgZmluZCB0aGF0IHRoaXMgaXMgcmVhbGx5IHRoZSByaWdodCBkaXJlY3Rpb24gSSBjYW4g Y29udmVydCBSYWRlb24gYXMKPiB3ZWxsLCBtb3ZlIG1vcmUgY29tcG9uZW50IGZ1bmN0aW9uYWxp dHkgbG9naWMgaW50byBjb21tb24gY29kZSBhbmQgd2hlbgo+IHRoYXQncyBkb25lIHJpcCBvdXQg dGhpcyBtaWRkbGUgbGF5ZXIgYmVjYXVzZSBpdCBqdXN0IGJlY29tZXMgc3VwZXJmbHVvdXMuCgpJ IGV4cGVjdCB1cHNldCBwZW9wbGUgaWYgd2UgcmVtb3ZlIHRoZSBtYXBwaW5nIGNhY2hpbmcuIE1h eWJlIHdlIHNob3VsZApjaGFuZ2UgaXQgdG8gbm90IGNhY2hlIHRoZSBtYXBwaW5nIGlmIHRoZSBl eHBvcnRlciBoYXMgdGhlIGR5bmFtaWMKdW5iaW5kaW5nIHN0dWZmIHN1cHBvcnRlZD8gT3IgbWF5 YmUgZXZlbiB3aGVuIGJvdGggZXhwb3J0ZXIgYW5kIGltcG9ydGVyCmhhdmUgaXQgc3VwcG9ydGVk LgoKV3J0IHRoZSBtaWRsYXllcjogVGhhdCdzIGJlY2F1c2UgbnZpZGlhIGJsb2IgKyBFWFBPUlRf U1lNQk9MX0dQTCA6LSkKCkNoZWVycywgRGFuaWVsCgoKPiAKPiBDaHJpc3RpYW4uCj4gCj4gPiAt RGFuaWVsCj4gPiAKPiA+ID4gU3RhcnQgYnkgcHJvdmlkaW5nIGEgc2VwYXJhdGUgRE1BLWJ1ZiBl eHBvcnQgaW1wbGVtZW50YXRpb24gaW4gYW1kZ3B1LiBUaGlzIGlzCj4gPiA+IGFsc28gYSBwcmVy ZXF1aXNpdGUgb2YgdW5waW5uZWQgRE1BLWJ1ZiBoYW5kbGluZy4KPiA+ID4gCj4gPiA+IHYyOiBm aXggdW5pbnRlbmRlZCByZWN1cnNpb24sIHJlbW92ZSBkZWJ1Z2dpbmcgbGVmdG92ZXJzCj4gPiA+ IHYzOiBzcGxpdCBvdXQgZnJvbSB1bnBpbm5lZCBETUEtYnVmIHdvcmsKPiA+ID4gCj4gPiA+IFNp Z25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K PiA+ID4gLS0tCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggICAg ICAgfCAgMSAtCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5j ICAgfCAgMSAtCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ByaW1l LmMgfCA3MyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ICAgMyBmaWxlcyBj aGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4gPiA+IGluZGV4IDJkNzUwMDkyMWMwYi4uOTNk YzU3ZDc0ZmMyIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+ ID4gPiBAQCAtMzczLDcgKzM3Myw2IEBAIGludCBhbWRncHVfZ2VtX29iamVjdF9vcGVuKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLAo+ID4gPiAgIHZvaWQgYW1kZ3B1X2dlbV9vYmplY3RfY2xv c2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCj4gPiA+ICAgCQkJCXN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2KTsKPiA+ID4gICB1bnNpZ25lZCBsb25nIGFtZGdwdV9nZW1fdGltZW91dCh1 aW50NjRfdCB0aW1lb3V0X25zKTsKPiA+ID4gLXN0cnVjdCBzZ190YWJsZSAqYW1kZ3B1X2dlbV9w cmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ID4gPiAgIHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqCj4gPiA+ICAgYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnRfc2df dGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gICAJCQkJIHN0cnVjdCBkbWFfYnVm X2F0dGFjaG1lbnQgKmF0dGFjaCwKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kcnYuYwo+ID4gPiBpbmRleCBiMGJmMmYyNGRhNDguLjI3MGI4YWQ5MjdlYSAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+ID4gPiBAQCAtOTA3 LDcgKzkwNyw2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBrbXNfZHJpdmVyID0gewo+ID4g PiAgIAkuZ2VtX3ByaW1lX2V4cG9ydCA9IGFtZGdwdV9nZW1fcHJpbWVfZXhwb3J0LAo+ID4gPiAg IAkuZ2VtX3ByaW1lX2ltcG9ydCA9IGFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0LAo+ID4gPiAgIAku Z2VtX3ByaW1lX3Jlc19vYmogPSBhbWRncHVfZ2VtX3ByaW1lX3Jlc19vYmosCj4gPiA+IC0JLmdl bV9wcmltZV9nZXRfc2dfdGFibGUgPSBhbWRncHVfZ2VtX3ByaW1lX2dldF9zZ190YWJsZSwKPiA+ ID4gICAJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBhbWRncHVfZ2VtX3ByaW1lX2ltcG9y dF9zZ190YWJsZSwKPiA+ID4gICAJLmdlbV9wcmltZV92bWFwID0gYW1kZ3B1X2dlbV9wcmltZV92 bWFwLAo+ID4gPiAgIAkuZ2VtX3ByaW1lX3Z1bm1hcCA9IGFtZGdwdV9nZW1fcHJpbWVfdnVubWFw LAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3By aW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwo+ID4gPiBp bmRleCBhMTU2YjM4OTFhM2YuLjBjNWE3NWIwNjY0OCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMKPiA+ID4gQEAgLTMyLDE0ICszMiw2IEBA Cj4gPiA+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyBhbWRncHVfZG1hYnVmX29w czsKPiA+ID4gLXN0cnVjdCBzZ190YWJsZSAqYW1kZ3B1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gPiA+IC17Cj4gPiA+IC0Jc3RydWN0IGFtZGdw dV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gPiA+IC0JaW50IG5wYWdlcyA9IGJv LT50Ym8ubnVtX3BhZ2VzOwo+ID4gPiAtCj4gPiA+IC0JcmV0dXJuIGRybV9wcmltZV9wYWdlc190 b19zZyhiby0+dGJvLnR0bS0+cGFnZXMsIG5wYWdlcyk7Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ID4g ICB2b2lkICphbWRncHVfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop Cj4gPiA+ICAgewo+ID4gPiAgIAlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGdlbV90b19hbWRncHVf Ym8ob2JqKTsKPiA+ID4gQEAgLTEzMiwyMyArMTI0LDE3IEBAIGFtZGdwdV9nZW1fcHJpbWVfaW1w b3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICAgCXJldHVybiBFUlJf UFRSKHJldCk7Cj4gPiA+ICAgfQo+ID4gPiAtc3RhdGljIGludCBhbWRncHVfZ2VtX21hcF9hdHRh Y2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gPiA+IC0JCQkJIHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCkKPiA+ID4gK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKgo+ID4gPiAr YW1kZ3B1X2dlbV9tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gs Cj4gPiA+ICsJCSAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gPiA+ICAgewo+ ID4gPiArCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmID0gYXR0YWNoLT5kbWFidWY7Cj4gPiA+ICAg CXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zi0+cHJpdjsKPiA+ID4gICAJc3Ry dWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gPiA+ICAgCXN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8uYmRldik7Cj4g PiA+ICsJc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gPiA+ICAgCWxvbmcgcjsKPiA+ID4gLQlyID0g ZHJtX2dlbV9tYXBfYXR0YWNoKGRtYV9idWYsIGF0dGFjaCk7Cj4gPiA+IC0JaWYgKHIpCj4gPiA+ IC0JCXJldHVybiByOwo+ID4gPiAtCj4gPiA+IC0JciA9IGFtZGdwdV9ib19yZXNlcnZlKGJvLCBm YWxzZSk7Cj4gPiA+IC0JaWYgKHVubGlrZWx5KHIgIT0gMCkpCj4gPiA+IC0JCWdvdG8gZXJyb3Jf ZGV0YWNoOwo+ID4gPiAtCj4gPiA+IC0KPiA+ID4gICAJaWYgKGF0dGFjaC0+ZGV2LT5kcml2ZXIg IT0gYWRldi0+ZGV2LT5kcml2ZXIpIHsKPiA+ID4gICAJCS8qCj4gPiA+ICAgCQkgKiBXYWl0IGZv ciBhbGwgc2hhcmVkIGZlbmNlcyB0byBjb21wbGV0ZSBiZWZvcmUgd2Ugc3dpdGNoIHRvIGZ1dHVy ZQo+ID4gPiBAQCAtMTU5LDQ2ICsxNDUsNTMgQEAgc3RhdGljIGludCBhbWRncHVfZ2VtX21hcF9h dHRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gPiA+ICAgCQkJCQkJCU1BWF9TQ0hFRFVM RV9USU1FT1VUKTsKPiA+ID4gICAJCWlmICh1bmxpa2VseShyIDwgMCkpIHsKPiA+ID4gICAJCQlE Uk1fREVCVUdfUFJJTUUoIkZlbmNlIHdhaXQgZmFpbGVkOiAlbGlcbiIsIHIpOwo+ID4gPiAtCQkJ Z290byBlcnJvcl91bnJlc2VydmU7Cj4gPiA+ICsJCQlyZXR1cm4gRVJSX1BUUihyKTsKPiA+ID4g ICAJCX0KPiA+ID4gICAJfQo+ID4gPiAgIAkvKiBwaW4gYnVmZmVyIGludG8gR1RUICovCj4gPiA+ ICAgCXIgPSBhbWRncHVfYm9fcGluKGJvLCBBTURHUFVfR0VNX0RPTUFJTl9HVFQsIE5VTEwpOwo+ ID4gPiAgIAlpZiAocikKPiA+ID4gLQkJZ290byBlcnJvcl91bnJlc2VydmU7Cj4gPiA+ICsJCXJl dHVybiBFUlJfUFRSKHIpOwo+ID4gPiArCj4gPiA+ICsJc2d0ID0gZHJtX3ByaW1lX3BhZ2VzX3Rv X3NnKGJvLT50Ym8udHRtLT5wYWdlcywgYm8tPnRiby5udW1fcGFnZXMpOwo+ID4gPiArCWlmIChJ U19FUlIoc2d0KSkKPiA+ID4gKwkJcmV0dXJuIHNndDsKPiA+ID4gKwo+ID4gPiArCWlmICghZG1h X21hcF9zZ19hdHRycyhhdHRhY2gtPmRldiwgc2d0LT5zZ2wsIHNndC0+bmVudHMsIGRpciwKPiA+ ID4gKwkJCSAgICAgIERNQV9BVFRSX1NLSVBfQ1BVX1NZTkMpKQo+ID4gPiArCQlnb3RvIGVycm9y X2ZyZWU7Cj4gPiA+ICAgCWlmIChhdHRhY2gtPmRldi0+ZHJpdmVyICE9IGFkZXYtPmRldi0+ZHJp dmVyKQo+ID4gPiAgIAkJYm8tPnByaW1lX3NoYXJlZF9jb3VudCsrOwo+ID4gPiAtZXJyb3JfdW5y ZXNlcnZlOgo+ID4gPiAtCWFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+ID4gPiArCXJldHVybiBz Z3Q7Cj4gPiA+IC1lcnJvcl9kZXRhY2g6Cj4gPiA+IC0JaWYgKHIpCj4gPiA+IC0JCWRybV9nZW1f bWFwX2RldGFjaChkbWFfYnVmLCBhdHRhY2gpOwo+ID4gPiAtCXJldHVybiByOwo+ID4gPiArZXJy b3JfZnJlZToKPiA+ID4gKwlzZ19mcmVlX3RhYmxlKHNndCk7Cj4gPiA+ICsJa2ZyZWUoc2d0KTsK PiA+ID4gKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ID4gICB9Cj4gPiA+IC1zdGF0aWMg dm9pZCBhbWRncHVfZ2VtX21hcF9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gPiA+ IC0JCQkJICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4gPiA+ICtzdGF0aWMg dm9pZCBhbWRncHVfZ2VtX3VubWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq YXR0YWNoLAo+ID4gPiArCQkJCSAgICAgc3RydWN0IHNnX3RhYmxlICpzZ3QsCj4gPiA+ICsJCQkJ ICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gPiA+ICAgewo+ID4gPiArCXN0cnVj dCBkbWFfYnVmICpkbWFfYnVmID0gYXR0YWNoLT5kbWFidWY7Cj4gPiA+ICAgCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zi0+cHJpdjsKPiA+ID4gICAJc3RydWN0IGFtZGdwdV9i byAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gPiA+ICAgCXN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8uYmRldik7Cj4gPiA+IC0JaW50IHJl dCA9IDA7Cj4gPiA+IC0KPiA+ID4gLQlyZXQgPSBhbWRncHVfYm9fcmVzZXJ2ZShibywgdHJ1ZSk7 Cj4gPiA+IC0JaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKPiA+ID4gLQkJZ290byBlcnJvcjsKPiA+ ID4gICAJYW1kZ3B1X2JvX3VucGluKGJvKTsKPiA+ID4gKwo+ID4gPiAgIAlpZiAoYXR0YWNoLT5k ZXYtPmRyaXZlciAhPSBhZGV2LT5kZXYtPmRyaXZlciAmJiBiby0+cHJpbWVfc2hhcmVkX2NvdW50 KQo+ID4gPiAgIAkJYm8tPnByaW1lX3NoYXJlZF9jb3VudC0tOwo+ID4gPiAtCWFtZGdwdV9ib191 bnJlc2VydmUoYm8pOwo+ID4gPiAtZXJyb3I6Cj4gPiA+IC0JZHJtX2dlbV9tYXBfZGV0YWNoKGRt YV9idWYsIGF0dGFjaCk7Cj4gPiA+ICsJaWYgKHNndCkgewo+ID4gPiArCQlkbWFfdW5tYXBfc2co YXR0YWNoLT5kZXYsIHNndC0+c2dsLCBzZ3QtPm5lbnRzLCBkaXIpOwo+ID4gPiArCQlzZ19mcmVl X3RhYmxlKHNndCk7Cj4gPiA+ICsJCWtmcmVlKHNndCk7Cj4gPiA+ICsJfQo+ID4gPiAgIH0KPiA+ ID4gICBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICphbWRncHVfZ2VtX3ByaW1lX3Jlc19vYmoo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gPiA+IEBAIC0yMzcsMTAgKzIzMCw4IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X2dlbV9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFf YnVmLAo+ID4gPiAgIH0KPiA+ID4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGFt ZGdwdV9kbWFidWZfb3BzID0gewo+ID4gPiAtCS5hdHRhY2ggPSBhbWRncHVfZ2VtX21hcF9hdHRh Y2gsCj4gPiA+IC0JLmRldGFjaCA9IGFtZGdwdV9nZW1fbWFwX2RldGFjaCwKPiA+ID4gLQkubWFw X2RtYV9idWYgPSBkcm1fZ2VtX21hcF9kbWFfYnVmLAo+ID4gPiAtCS51bm1hcF9kbWFfYnVmID0g ZHJtX2dlbV91bm1hcF9kbWFfYnVmLAo+ID4gPiArCS5tYXBfZG1hX2J1ZiA9IGFtZGdwdV9nZW1f bWFwX2RtYV9idWYsCj4gPiA+ICsJLnVubWFwX2RtYV9idWYgPSBhbWRncHVfZ2VtX3VubWFwX2Rt YV9idWYsCj4gPiA+ICAgCS5yZWxlYXNlID0gZHJtX2dlbV9kbWFidWZfcmVsZWFzZSwKPiA+ID4g ICAJLmJlZ2luX2NwdV9hY2Nlc3MgPSBhbWRncHVfZ2VtX2JlZ2luX2NwdV9hY2Nlc3MsCj4gPiA+ ICAgCS5tYXAgPSBkcm1fZ2VtX2RtYWJ1Zl9rbWFwLAo+ID4gPiAtLSAKPiA+ID4gMi4xNC4xCj4g PiA+IAo+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+ID4gPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK