From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 3/4] drm/amdgpu: add independent DMA-buf export v3 Date: Tue, 3 Jul 2018 13:35:25 +0200 Message-ID: <5e0980eb-795b-b1af-2b79-f8116d5023a3@gmail.com> References: <20180622141103.1787-1-christian.koenig@amd.com> <20180622141103.1787-4-christian.koenig@amd.com> <5B34B132.3060504@amd.com> 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: <5B34B132.3060504@amd.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zhang, Jerry (Junwei)" , daniel@ffwll.ch, sumit.semwal@linaro.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW0gMjguMDYuMjAxOCB1bSAxMTo1OCBzY2hyaWViIFpoYW5nLCBKZXJyeSAoSnVud2VpKToKPiBP biAwNi8yMi8yMDE4IDEwOjExIFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBUaGUgY2Fj aGluZyBvZiBTR1QncyBkb25lIGJ5IHRoZSBEUk0gY29kZSBpcyBhY3R1YWxseSBxdWl0ZSBoYXJt ZnVsIGFuZAo+PiBzaG91bGQgcHJvYmFibHkgcmVtb3ZlZCBhbHRvZ2V0aGVyIGluIHRoZSBsb25n IHRlcm0uCj4+Cj4+IFN0YXJ0IGJ5IHByb3ZpZGluZyBhIHNlcGFyYXRlIERNQS1idWYgZXhwb3J0 IGltcGxlbWVudGF0aW9uIGluIAo+PiBhbWRncHUuIFRoaXMgaXMKPj4gYWxzbyBhIHByZXJlcXVp c2l0ZSBvZiB1bnBpbm5lZCBETUEtYnVmIGhhbmRsaW5nLgo+Pgo+PiB2MjogZml4IHVuaW50ZW5k ZWQgcmVjdXJzaW9uLCByZW1vdmUgZGVidWdnaW5nIGxlZnRvdmVycwo+PiB2Mzogc3BsaXQgb3V0 IGZyb20gdW5waW5uZWQgRE1BLWJ1ZiB3b3JrCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlh biBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5owqDCoMKgwqDCoMKgIHzCoCAxIC0KPj4gwqAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jwqDCoCB8wqAgMSAtCj4+IMKgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wcmltZS5jIHwgOTQgCj4+ICsrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0KPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRp b25zKCspLCA1NyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdS5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCj4+IGluZGV4IGQ4ZTBjYzA4ZjlkYi4uNWU3MWFmOGRkM2E3IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+PiBAQCAtMzczLDcgKzM3Myw2IEBAIGludCBhbWRn cHVfZ2VtX29iamVjdF9vcGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAKPj4gKm9iaiwKPj4gwqAg dm9pZCBhbWRncHVfZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdik7Cj4+IMKgIHVuc2lnbmVkIGxvbmcgYW1kZ3B1X2dlbV90aW1lb3V0KHVpbnQ2NF90 IHRpbWVvdXRfbnMpOwo+PiAtc3RydWN0IHNnX3RhYmxlICphbWRncHVfZ2VtX3ByaW1lX2dldF9z Z190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgCj4+ICpvYmopOwo+PiDCoCBzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKgo+PiDCoCBhbWRncHVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIAo+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+PiBpbmRleCBhNTQ5NDgzMDMyYjAuLmNkZjBiZTg1 ZDM2MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Ry di5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+PiBA QCAtOTE5LDcgKzkxOSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBrbXNfZHJpdmVyID0g ewo+PiDCoMKgwqDCoMKgIC5nZW1fcHJpbWVfZXhwb3J0ID0gYW1kZ3B1X2dlbV9wcmltZV9leHBv cnQsCj4+IMKgwqDCoMKgwqAgLmdlbV9wcmltZV9pbXBvcnQgPSBhbWRncHVfZ2VtX3ByaW1lX2lt cG9ydCwKPj4gwqDCoMKgwqDCoCAuZ2VtX3ByaW1lX3Jlc19vYmogPSBhbWRncHVfZ2VtX3ByaW1l X3Jlc19vYmosCj4+IC3CoMKgwqAgLmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSBhbWRncHVfZ2Vt X3ByaW1lX2dldF9zZ190YWJsZSwKPgo+IEkgbWF5IG1pc3Mgc29tZSBwYXRjaGVzIG9yIGltcG9y dGFudCBpbmZvLgo+Cj4gRXZlbiBhcHBsaWVkIHRoZSBzZXJpZXMgb2YgcGF0Y2gsIEkgc3RpbGwg Y291bGQgZmluZCBiZWxvdyBjb2RlIGluIAo+IGRybV9nZW1fbWFwX2RtYV9idWYoKS4KPiBJbiB0 aGlzIGNhc2UsIGl0IHdpbGwgY2F1c2UgTlVMTCBwb2ludGVyIGFjY2Vzcy4gUGxlYXNlIGhlbHAg bWUgb3V0IG9mIAo+IGhlcmUuCj4ge3t7Cj4gc2d0ID0gb2JqLT5kZXYtPmRyaXZlci0+Z2VtX3By aW1lX2dldF9zZ190YWJsZShvYmopOwo+IH19fQoKVGFrZSBhIGxvb2sgYXQgdGhlIGNoYW5nZSBh IGJpdCBmdXJ0aGVyIGRvd24uCgo+Cj4gSmVycnkKPgo+PiDCoMKgwqDCoMKgIC5nZW1fcHJpbWVf aW1wb3J0X3NnX3RhYmxlID0gYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUsCj4+IMKg wqDCoMKgwqAgLmdlbV9wcmltZV92bWFwID0gYW1kZ3B1X2dlbV9wcmltZV92bWFwLAo+PiDCoMKg wqDCoMKgIC5nZW1fcHJpbWVfdnVubWFwID0gYW1kZ3B1X2dlbV9wcmltZV92dW5tYXAsCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYyAKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwo+PiBpbmRleCBiMjI4 NmJjNDFhZWMuLjAzOGE4Yzg0ODhiNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ByaW1lLmMKPj4gQEAgLTQwLDIyICs0MCw2IEBACj4+Cj4+IMKgIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgYW1kZ3B1X2RtYWJ1Zl9vcHM7Cj4+Cj4+IC0vKioKPj4g LSAqIGFtZGdwdV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlIC0gJmRybV9kcml2ZXIuZ2VtX3ByaW1l X2dldF9zZ190YWJsZQo+PiAtICogaW1wbGVtZW50YXRpb24KPj4gLSAqIEBvYmo6IEdFTSBidWZm ZXIgb2JqZWN0Cj4+IC0gKgo+PiAtICogUmV0dXJuczoKPj4gLSAqIEEgc2NhdHRlci9nYXRoZXIg dGFibGUgZm9yIHRoZSBwaW5uZWQgcGFnZXMgb2YgdGhlIGJ1ZmZlciAKPj4gb2JqZWN0J3MgbWVt b3J5Lgo+PiAtICovCj4+IC1zdHJ1Y3Qgc2dfdGFibGUgKmFtZGdwdV9nZW1fcHJpbWVfZ2V0X3Nn X3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAKPj4gKm9iaikKPj4gLXsKPj4gLcKgwqDCoCBz dHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGdlbV90b19hbWRncHVfYm8ob2JqKTsKPj4gLcKgwqDCoCBp bnQgbnBhZ2VzID0gYm8tPnRiby5udW1fcGFnZXM7Cj4+IC0KPj4gLcKgwqDCoCByZXR1cm4gZHJt X3ByaW1lX3BhZ2VzX3RvX3NnKGJvLT50Ym8udHRtLT5wYWdlcywgbnBhZ2VzKTsKPj4gLX0KPj4g LQo+PiDCoCAvKioKPj4gwqDCoCAqIGFtZGdwdV9nZW1fcHJpbWVfdm1hcCAtICZkbWFfYnVmX29w cy52bWFwIGltcGxlbWVudGF0aW9uCj4+IMKgwqAgKiBAb2JqOiBHRU0gYnVmZmVyIG9iamVjdAo+ PiBAQCAtMTg5LDM1ICsxNzMsMjkgQEAgYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUo c3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYsCj4+IMKgIH0KPj4KPj4gwqAgLyoqCj4+IC0gKiBh bWRncHVfZ2VtX21hcF9hdHRhY2ggLSAmZG1hX2J1Zl9vcHMuYXR0YWNoIGltcGxlbWVudGF0aW9u Cj4+IC0gKiBAZG1hX2J1Zjogc2hhcmVkIERNQSBidWZmZXIKPj4gLSAqIEB0YXJnZXRfZGV2OiB0 YXJnZXQgZGV2aWNlCj4+ICsgKiBhbWRncHVfZ2VtX21hcF9kbWFfYnVmIC0gJmRtYV9idWZfb3Bz Lm1hcF9kbWFfYnVmIGltcGxlbWVudGF0aW9uCj4+IMKgwqAgKiBAYXR0YWNoOiBETUEtYnVmIGF0 dGFjaG1lbnQKPj4gKyAqIEBkaXI6IERNQSBkaXJlY3Rpb24KPj4gwqDCoCAqCj4+IMKgwqAgKiBN YWtlcyBzdXJlIHRoYXQgdGhlIHNoYXJlZCBETUEgYnVmZmVyIGNhbiBiZSBhY2Nlc3NlZCBieSB0 aGUgCj4+IHRhcmdldCBkZXZpY2UuCj4+IMKgwqAgKiBGb3Igbm93LCBzaW1wbHkgcGlucyBpdCB0 byB0aGUgR1RUIGRvbWFpbiwgd2hlcmUgaXQgc2hvdWxkIGJlIAo+PiBhY2Nlc3NpYmxlIGJ5Cj4+ IMKgwqAgKiBhbGwgRE1BIGRldmljZXMuCj4+IMKgwqAgKgo+PiDCoMKgICogUmV0dXJuczoKPj4g LSAqIDAgb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLgo+PiArICogc2dfdGFibGUg ZmlsbGVkIHdpdGggdGhlIERNQSBhZGRyZXNzZXMgdG8gdXNlIG9yIEVSUl9QUlQgd2l0aCAKPj4g bmVnYXRpdmUgZXJyb3IKPj4gKyAqIGNvZGUuCj4+IMKgwqAgKi8KPj4gLXN0YXRpYyBpbnQgYW1k Z3B1X2dlbV9tYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNo KQo+PiArc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCj4+ICthbWRncHVfZ2VtX21hcF9kbWFfYnVm KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+PiDCoCB7Cj4+ICvCoMKg wqAgc3RydWN0IGRtYV9idWYgKmRtYV9idWYgPSBhdHRhY2gtPmRtYWJ1ZjsKPj4gwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWYtPnByaXY7Cj4+IMKgwqDCoMKg wqAgc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4+IMKgwqDC oMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPnRi by5iZGV2KTsKPj4gK8KgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPj4gwqDCoMKgwqDCoCBs b25nIHI7Cj4+Cj4+IC3CoMKgwqAgciA9IGRybV9nZW1fbWFwX2F0dGFjaChkbWFfYnVmLCBhdHRh Y2gpOwo+PiAtwqDCoMKgIGlmIChyKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+IC0K Pj4gLcKgwqDCoCByID0gYW1kZ3B1X2JvX3Jlc2VydmUoYm8sIGZhbHNlKTsKPj4gLcKgwqDCoCBp ZiAodW5saWtlbHkociAhPSAwKSkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3JfZGV0YWNo Owo+PiAtCj4+IC0KPj4gwqDCoMKgwqDCoCBpZiAoYXR0YWNoLT5kZXYtPmRyaXZlciAhPSBhZGV2 LT5kZXYtPmRyaXZlcikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBXYWl0IGZvciBhbGwgc2hhcmVkIGZlbmNlcyB0byBjb21wbGV0ZSBiZWZvcmUg d2Ugc3dpdGNoIAo+PiB0byBmdXR1cmUKPj4gQEAgLTIyOCw1NCArMjA2LDYyIEBAIHN0YXRpYyBp bnQgYW1kZ3B1X2dlbV9tYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmIAo+PiAqZG1hX2J1ZiwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodW5saWtl bHkociA8IDApKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9ERUJVR19QUklN RSgiRmVuY2Ugd2FpdCBmYWlsZWQ6ICVsaVxuIiwgcik7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdvdG8gZXJyb3JfdW5yZXNlcnZlOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gRVJSX1BUUihyKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+ Cj4+IMKgwqDCoMKgwqAgLyogcGluIGJ1ZmZlciBpbnRvIEdUVCAqLwo+PiDCoMKgwqDCoMKgIHIg PSBhbWRncHVfYm9fcGluKGJvLCBBTURHUFVfR0VNX0RPTUFJTl9HVFQsIE5VTEwpOwo+PiDCoMKg wqDCoMKgIGlmIChyKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl91bnJlc2VydmU7Cj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRVJSX1BUUihyKTsKPj4gKwo+PiArwqDCoMKgIHNndCA9 IGRybV9wcmltZV9wYWdlc190b19zZyhiby0+dGJvLnR0bS0+cGFnZXMsIGJvLT50Ym8ubnVtX3Bh Z2VzKTsKPj4gK8KgwqDCoCBpZiAoSVNfRVJSKHNndCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gc2d0Owo+PiArCj4+ICvCoMKgwqAgaWYgKCFkbWFfbWFwX3NnX2F0dHJzKGF0dGFjaC0+ZGV2 LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgZGlyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBETUFfQVRUUl9TS0lQX0NQVV9TWU5DKSkKPj4gK8KgwqDCoMKgwqDCoMKgIGdv dG8gZXJyb3JfZnJlZTsKPj4KPj4gwqDCoMKgwqDCoCBpZiAoYXR0YWNoLT5kZXYtPmRyaXZlciAh PSBhZGV2LT5kZXYtPmRyaXZlcikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJvLT5wcmltZV9zaGFy ZWRfY291bnQrKzsKPj4KPj4gLWVycm9yX3VucmVzZXJ2ZToKPj4gLcKgwqDCoCBhbWRncHVfYm9f dW5yZXNlcnZlKGJvKTsKPj4gK8KgwqDCoCByZXR1cm4gc2d0Owo+Pgo+PiAtZXJyb3JfZGV0YWNo Ogo+PiAtwqDCoMKgIGlmIChyKQo+PiAtwqDCoMKgwqDCoMKgwqAgZHJtX2dlbV9tYXBfZGV0YWNo KGRtYV9idWYsIGF0dGFjaCk7Cj4+IC3CoMKgwqAgcmV0dXJuIHI7Cj4+ICtlcnJvcl9mcmVlOgo+ PiArwqDCoMKgIHNnX2ZyZWVfdGFibGUoc2d0KTsKPj4gK8KgwqDCoCBrZnJlZShzZ3QpOwo+PiAr wqDCoMKgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+PiDCoCB9Cj4+Cj4+IMKgIC8qKgo+PiAt ICogYW1kZ3B1X2dlbV9tYXBfZGV0YWNoIC0gJmRtYV9idWZfb3BzLmRldGFjaCBpbXBsZW1lbnRh dGlvbgo+PiAtICogQGRtYV9idWY6IHNoYXJlZCBETUEgYnVmZmVyCj4+ICsgKiBhbWRncHVfZ2Vt X3VubWFwX2RtYV9idWYgLSAmZG1hX2J1Zl9vcHMudW5tYXBfZG1hX2J1ZiBpbXBsZW1lbnRhdGlv bgo+PiDCoMKgICogQGF0dGFjaDogRE1BLWJ1ZiBhdHRhY2htZW50Cj4+ICsgKiBAc2d0OiBzZ190 YWJsZSB0byB1bm1hcAo+PiArICogQGRpcjogRE1BIGRpcmVjdGlvbgo+PiDCoMKgICoKPj4gwqDC oCAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gYSBzaGFyZWQgRE1BIGJ1ZmZlciBubyBsb25nZXIgbmVl ZHMgdG8gYmUgCj4+IGFjY2Vzc2libGUgYnkKPj4gwqDCoCAqIHRoZSBvdGhlciBkZXZpY2UuIEZv ciBub3csIHNpbXBseSB1bnBpbnMgdGhlIGJ1ZmZlciBmcm9tIEdUVC4KPj4gwqDCoCAqLwo+PiAt c3RhdGljIHZvaWQgYW1kZ3B1X2dlbV9tYXBfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVm LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gpCj4+ICtzdGF0aWMgdm9pZCBhbWRncHVfZ2VtX3VubWFwX2RtYV9i dWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBkbWFfZGF0YV9kaXJlY3Rp b24gZGlyKQo+PiDCoCB7Cj4+ICvCoMKgwqAgc3RydWN0IGRtYV9idWYgKmRtYV9idWYgPSBhdHRh Y2gtPmRtYWJ1ZjsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRt YV9idWYtPnByaXY7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9f YW1kZ3B1X2JvKG9iaik7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBhbWRncHVfdHRtX2FkZXYoYm8tPnRiby5iZGV2KTsKPj4gLcKgwqDCoCBpbnQgcmV0ID0gMDsK Pj4gLQo+PiAtwqDCoMKgIHJldCA9IGFtZGdwdV9ib19yZXNlcnZlKGJvLCB0cnVlKTsKPj4gLcKg wqDCoCBpZiAodW5saWtlbHkocmV0ICE9IDApKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBlcnJv cjsKPj4KPj4gwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5waW4oYm8pOwo+PiArCj4+IMKgwqDCoMKg wqAgaWYgKGF0dGFjaC0+ZGV2LT5kcml2ZXIgIT0gYWRldi0+ZGV2LT5kcml2ZXIgJiYgCj4+IGJv LT5wcmltZV9zaGFyZWRfY291bnQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBiby0+cHJpbWVfc2hh cmVkX2NvdW50LS07Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+Cj4+IC1l cnJvcjoKPj4gLcKgwqDCoCBkcm1fZ2VtX21hcF9kZXRhY2goZG1hX2J1ZiwgYXR0YWNoKTsKPj4g K8KgwqDCoCBpZiAoc2d0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkbWFfdW5tYXBfc2coYXR0YWNo LT5kZXYsIHNndC0+c2dsLCBzZ3QtPm5lbnRzLCBkaXIpOwo+PiArwqDCoMKgwqDCoMKgwqAgc2df ZnJlZV90YWJsZShzZ3QpOwo+PiArwqDCoMKgwqDCoMKgwqAga2ZyZWUoc2d0KTsKPj4gK8KgwqDC oCB9Cj4+IMKgIH0KPj4KPj4gwqAgLyoqCj4+IEBAIC0zMzMsMTAgKzMxOSw4IEBAIHN0YXRpYyBp bnQgYW1kZ3B1X2dlbV9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCAKPj4gZG1hX2J1ZiAqZG1hX2J1 ZiwKPj4gwqAgfQo+Pgo+PiDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGFtZGdw dV9kbWFidWZfb3BzID0gewo+PiAtwqDCoMKgIC5hdHRhY2ggPSBhbWRncHVfZ2VtX21hcF9hdHRh Y2gsCj4+IC3CoMKgwqAgLmRldGFjaCA9IGFtZGdwdV9nZW1fbWFwX2RldGFjaCwKPj4gLcKgwqDC oCAubWFwX2RtYV9idWYgPSBkcm1fZ2VtX21hcF9kbWFfYnVmLAo+PiAtwqDCoMKgIC51bm1hcF9k bWFfYnVmID0gZHJtX2dlbV91bm1hcF9kbWFfYnVmLAoKSGVyZSB3ZSBhcmUgc3RvcHBpbmcgdG8g dXNlIGRybV9nZW1fbWFwX2RtYV9idWYoKSwgc28gd2UgZG9uJ3QgbmVlZCAKYW1kZ3B1X2dlbV9w cmltZV9nZXRfc2dfdGFibGUoKSBhbnkgbW9yZSBlaXRoZXIuCgpDaHJpc3RpYW4uCgo+PiArwqDC oMKgIC5tYXBfZG1hX2J1ZiA9IGFtZGdwdV9nZW1fbWFwX2RtYV9idWYsCj4+ICvCoMKgwqAgLnVu bWFwX2RtYV9idWYgPSBhbWRncHVfZ2VtX3VubWFwX2RtYV9idWYsCj4+IMKgwqDCoMKgwqAgLnJl bGVhc2UgPSBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNlLAo+PiDCoMKgwqDCoMKgIC5iZWdpbl9jcHVf YWNjZXNzID0gYW1kZ3B1X2dlbV9iZWdpbl9jcHVfYWNjZXNzLAo+PiDCoMKgwqDCoMKgIC5tYXAg PSBkcm1fZ2VtX2RtYWJ1Zl9rbWFwLAo+PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==