From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-bn3nam01on0057.outbound.protection.outlook.com ([104.47.33.57]:6296 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726080AbeJXNye (ORCPT ); Wed, 24 Oct 2018 09:54:34 -0400 From: "Huang, Ray" To: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "amd-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "linux-media@vger.kernel.org" , "linaro-mm-sig@lists.linaro.org" , "Daenzer, Michel" CC: Daniel Vetter , Chris Wilson , "Zhang, Jerry" Subject: RE: [PATCH 1/8] dma-buf: remove shared fence staging in reservation object Date: Wed, 24 Oct 2018 05:12:47 +0000 Message-ID: References: <20181004131250.2373-1-christian.koenig@amd.com> <30ba1fc8-58d5-1c75-406e-d10e68ec4b18@gmail.com> <42ee3d74-9dac-6573-448c-c70ea28cb9ff@gmail.com> In-Reply-To: <42ee3d74-9dac-6573-448c-c70ea28cb9ff@gmail.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org List-ID: Q2hyaXN0aWFuLCBJIHdpbGwgdGFrZSBhIGxvb2sgYXQgdGhlbSBsYXRlci4NCg0KVGhhbmtzLA0K UmF5DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQ2hyaXN0aWFuIEvD tm5pZyBbbWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tXQ0KPiBTZW50OiBU dWVzZGF5LCBPY3RvYmVyIDIzLCAyMDE4IDg6MjAgUE0NCj4gVG86IGFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBsaW51eC0NCj4g bWVkaWFAdmdlci5rZXJuZWwub3JnOyBsaW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmc7IEh1 YW5nLCBSYXkNCj4gPFJheS5IdWFuZ0BhbWQuY29tPjsgRGFlbnplciwgTWljaGVsIDxNaWNoZWwu RGFlbnplckBhbWQuY29tPg0KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPjsg Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ow0KPiBaaGFuZywgSmVycnkg PEplcnJ5LlpoYW5nQGFtZC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS84XSBkbWEtYnVm OiByZW1vdmUgc2hhcmVkIGZlbmNlIHN0YWdpbmcgaW4NCj4gcmVzZXJ2YXRpb24gb2JqZWN0DQo+ IA0KPiBQaW5nIG9uY2UgbW9yZSEgQWRkaW5nIGEgZmV3IG1vcmUgQU1EIHBlb3BsZS4NCj4gDQo+ IEFueSBjb21tZW50cyBvbiB0aGlzPw0KPiANCj4gVGhhbmtzLA0KPiBDaHJpc3RpYW4uDQo+IA0K PiBBbSAxMi4xMC4xOCB1bSAxMDoyMiBzY2hyaWViIENocmlzdGlhbiBLw7ZuaWc6DQo+ID4gUGlu ZyEgQWRkaW5nIGEgZmV3IHBlb3BsZSBkaXJlY3RseSBhbmQgbW9yZSBtYWlsaW5nIGxpc3RzLg0K PiA+DQo+ID4gQ2FuIEkgZ2V0IGFuIGFja2VkLWJ5L3JiIGZvciB0aGlzPyBJdCdzIG9ubHkgYSBj bGVhbnVwIGFuZCBub3QgbXVjaA0KPiA+IGZ1bmN0aW9uYWwgY2hhbmdlLg0KPiA+DQo+ID4gUmVn YXJkcywNCj4gPiBDaHJpc3RpYW4uDQo+ID4NCj4gPiBBbSAwNC4xMC4yMDE4IHVtIDE1OjEyIHNj aHJpZWIgQ2hyaXN0aWFuIEvDtm5pZzoNCj4gPj4gTm8gbmVlZCBmb3IgdGhhdCBhbnkgbW9yZS4g SnVzdCByZXBsYWNlIHRoZSBsaXN0IHdoZW4gdGhlcmUgaXNuJ3QNCj4gPj4gZW5vdWdoIHJvb20g YW55IG1vcmUgZm9yIHRoZSBhZGRpdGlvbmFsIGZlbmNlLg0KPiA+Pg0KPiA+PiBTaWduZWQtb2Zm LWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+DQo+ID4+IC0t LQ0KPiA+PiDCoCBkcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYyB8IDE3OA0KPiA+PiArKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4gwqAgaW5jbHVkZS9s aW51eC9yZXNlcnZhdGlvbi5owqDCoCB8wqDCoCA0IC0NCj4gPj4gwqAgMiBmaWxlcyBjaGFuZ2Vk LCA1OCBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pDQo+ID4+DQo+ID4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+PiBiL2RyaXZlcnMvZG1hLWJ1 Zi9yZXNlcnZhdGlvbi5jIGluZGV4IDZjOTVmNjFhMzJlNy4uNTgyNWZjMzM2YTEzDQo+ID4+IDEw MDY0NA0KPiA+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+PiArKysg Yi9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+PiBAQCAtNjgsMTA1ICs2OCwyMyBA QCBFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZyk7DQo+ID4+IMKgwqAg Ki8NCj4gPj4gwqAgaW50IHJlc2VydmF0aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZChzdHJ1Y3Qg cmVzZXJ2YXRpb25fb2JqZWN0DQo+ID4+ICpvYmopDQo+ID4+IMKgIHsNCj4gPj4gLcKgwqDCoCBz dHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKmZvYmosICpvbGQ7DQo+ID4+IC3CoMKgwqAg dTMyIG1heDsNCj4gPj4gK8KgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKm9s ZCwgKm5ldzsNCj4gPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaSwgaiwgaywgbWF4Ow0KPiA+PiDC oCDCoMKgwqDCoMKgIG9sZCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfbGlzdChvYmopOw0KPiA+ PiDCoCDCoMKgwqDCoMKgIGlmIChvbGQgJiYgb2xkLT5zaGFyZWRfbWF4KSB7DQo+ID4+IC3CoMKg wqDCoMKgwqDCoCBpZiAob2xkLT5zaGFyZWRfY291bnQgPCBvbGQtPnNoYXJlZF9tYXgpIHsNCj4g Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogcGVyZm9ybSBhbiBpbi1wbGFjZSB1cGRhdGUg Ki8NCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUob2JqLT5zdGFnZWQpOw0KPiA+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvYmotPnN0YWdlZCA9IE5VTEw7DQo+ID4+ICvCoMKg wqDCoMKgwqDCoCBpZiAob2xkLT5zaGFyZWRfY291bnQgPCBvbGQtPnNoYXJlZF9tYXgpDQo+ID4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiA+PiAtwqDCoMKgwqDCoMKg wqAgfSBlbHNlDQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlDQo+ID4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG1heCA9IG9sZC0+c2hhcmVkX21heCAqIDI7DQo+ID4+IC3CoMKgwqAgfSBl bHNlDQo+ID4+IC3CoMKgwqDCoMKgwqDCoCBtYXggPSA0Ow0KPiA+PiAtDQo+ID4+IC3CoMKgwqAg LyoNCj4gPj4gLcKgwqDCoMKgICogcmVzaXplIG9iai0+c3RhZ2VkIG9yIGFsbG9jYXRlIGlmIGl0 IGRvZXNuJ3QgZXhpc3QsDQo+ID4+IC3CoMKgwqDCoCAqIG5vb3AgaWYgYWxyZWFkeSBjb3JyZWN0 IHNpemUNCj4gPj4gLcKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAgZm9iaiA9IGtyZWFsbG9jKG9i ai0+c3RhZ2VkLCBvZmZzZXRvZih0eXBlb2YoKmZvYmopLA0KPiA+PiBzaGFyZWRbbWF4XSksDQo+ ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdGUF9LRVJORUwpOw0KPiA+PiAtwqDCoMKgIGlm ICghZm9iaikNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOw0KPiA+PiAtDQo+ ID4+IC3CoMKgwqAgb2JqLT5zdGFnZWQgPSBmb2JqOw0KPiA+PiAtwqDCoMKgIGZvYmotPnNoYXJl ZF9tYXggPSBtYXg7DQo+ID4+IC3CoMKgwqAgcmV0dXJuIDA7DQo+ID4+IC19DQo+ID4+IC1FWFBP UlRfU1lNQk9MKHJlc2VydmF0aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZCk7DQo+ID4+IC0NCj4g Pj4gLXN0YXRpYyB2b2lkDQo+ID4+IC1yZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9pbnBs YWNlKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QNCj4gPj4gKm9iaiwNCj4gPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2Jq ZWN0X2xpc3QgKmZvYmosDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpIC17DQo+ID4+IC3CoMKgwqAgc3RydWN0 IGRtYV9mZW5jZSAqc2lnbmFsZWQgPSBOVUxMOw0KPiA+PiAtwqDCoMKgIHUzMiBpLCBzaWduYWxl ZF9pZHg7DQo+ID4+IC0NCj4gPj4gLcKgwqDCoCBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsNCj4gPj4g LQ0KPiA+PiAtwqDCoMKgIHByZWVtcHRfZGlzYWJsZSgpOw0KPiA+PiAtwqDCoMKgIHdyaXRlX3Nl cWNvdW50X2JlZ2luKCZvYmotPnNlcSk7DQo+ID4+IC0NCj4gPj4gLcKgwqDCoCBmb3IgKGkgPSAw OyBpIDwgZm9iai0+c2hhcmVkX2NvdW50OyArK2kpIHsNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsNCj4gPj4gLQ0KPiA+PiAtwqDCoMKgwqDCoMKgwqAg b2xkX2ZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmb2JqLT5zaGFyZWRbaV0sDQo+ ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2Vy dmF0aW9uX29iamVjdF9oZWxkKG9iaikpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqDCoMKgwqDCoCBp ZiAob2xkX2ZlbmNlLT5jb250ZXh0ID09IGZlbmNlLT5jb250ZXh0KSB7DQo+ID4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIG1lbW9yeSBiYXJyaWVyIGlzIGFkZGVkIGJ5IHdyaXRlX3NlcWNv dW50X2JlZ2luICovDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJDVV9JTklUX1BPSU5U RVIoZm9iai0+c2hhcmVkW2ldLCBmZW5jZSk7DQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHdyaXRlX3NlcWNvdW50X2VuZCgmb2JqLT5zZXEpOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwcmVlbXB0X2VuYWJsZSgpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRtYV9mZW5jZV9wdXQob2xkX2ZlbmNlKTsNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgfQ0KPiA+PiAtDQo+ID4+IC3CoMKgwqDC oMKgwqDCoCBpZiAoIXNpZ25hbGVkICYmIGRtYV9mZW5jZV9pc19zaWduYWxlZChvbGRfZmVuY2Up KSB7DQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ25hbGVkID0gb2xkX2ZlbmNlOw0K PiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWduYWxlZF9pZHggPSBpOw0KPiA+PiAtwqDC oMKgwqDCoMKgwqAgfQ0KPiA+PiAtwqDCoMKgIH0NCj4gPj4gLQ0KPiA+PiAtwqDCoMKgIC8qDQo+ ID4+IC3CoMKgwqDCoCAqIG1lbW9yeSBiYXJyaWVyIGlzIGFkZGVkIGJ5IHdyaXRlX3NlcWNvdW50 X2JlZ2luLA0KPiA+PiAtwqDCoMKgwqAgKiBmb2JqLT5zaGFyZWRfY291bnQgaXMgcHJvdGVjdGVk IGJ5IHRoaXMgbG9jayB0b28NCj4gPj4gLcKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAgaWYgKHNp Z25hbGVkKSB7DQo+ID4+IC3CoMKgwqDCoMKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKGZvYmotPnNo YXJlZFtzaWduYWxlZF9pZHhdLCBmZW5jZSk7DQo+ID4+IMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4g Pj4gLcKgwqDCoMKgwqDCoMKgIEJVR19PTihmb2JqLT5zaGFyZWRfY291bnQgPj0gZm9iai0+c2hh cmVkX21heCk7DQo+ID4+IC0gUkNVX0lOSVRfUE9JTlRFUihmb2JqLT5zaGFyZWRbZm9iai0+c2hh cmVkX2NvdW50XSwgZmVuY2UpOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgZm9iai0+c2hhcmVkX2Nv dW50Kys7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBtYXggPSA0Ow0KPiA+PiDCoMKgwqDCoMKgIH0N Cj4gPj4gwqAgLcKgwqDCoCB3cml0ZV9zZXFjb3VudF9lbmQoJm9iai0+c2VxKTsNCj4gPj4gLcKg wqDCoCBwcmVlbXB0X2VuYWJsZSgpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqAgZG1hX2ZlbmNlX3B1 dChzaWduYWxlZCk7DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gLXN0YXRpYyB2b2lkDQo+ID4+IC1y ZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9yZXBsYWNlKHN0cnVjdCByZXNlcnZhdGlvbl9v YmplY3QNCj4gPj4gKm9iaiwNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKm9sZCwNCj4gPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRp b25fb2JqZWN0X2xpc3QgKmZvYmosDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpIC17DQo+ID4+IC3CoMKgwqAg dW5zaWduZWQgaSwgaiwgazsNCj4gPj4gLQ0KPiA+PiAtwqDCoMKgIGRtYV9mZW5jZV9nZXQoZmVu Y2UpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqAgaWYgKCFvbGQpIHsNCj4gPj4gLcKgwqDCoMKgwqDC oMKgIFJDVV9JTklUX1BPSU5URVIoZm9iai0+c2hhcmVkWzBdLCBmZW5jZSk7DQo+ID4+IC3CoMKg wqDCoMKgwqDCoCBmb2JqLT5zaGFyZWRfY291bnQgPSAxOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAg Z290byBkb25lOw0KPiA+PiAtwqDCoMKgIH0NCj4gPj4gK8KgwqDCoCBuZXcgPSBrbWFsbG9jKG9m ZnNldG9mKHR5cGVvZigqbmV3KSwgc2hhcmVkW21heF0pLCBHRlBfS0VSTkVMKTsNCj4gPj4gK8Kg wqDCoCBpZiAoIW5ldykNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOw0KPiA+ PiDCoCDCoMKgwqDCoMKgIC8qDQo+ID4+IMKgwqDCoMKgwqDCoCAqIG5vIG5lZWQgdG8gYnVtcCBm ZW5jZSByZWZjb3VudHMsIHJjdV9yZWFkIGFjY2VzcyBAQCAtMTc0LDQ2DQo+ID4+ICs5Miw0NSBA QCByZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9yZXBsYWNlKHN0cnVjdA0KPiA+PiByZXNl cnZhdGlvbl9vYmplY3QgKm9iaiwNCj4gPj4gwqDCoMKgwqDCoMKgICogcmVmZXJlbmNlcyBmcm9t IHRoZSBvbGQgc3RydWN0IGFyZSBjYXJyaWVkIG92ZXIgdG8NCj4gPj4gwqDCoMKgwqDCoMKgICog dGhlIG5ldy4NCj4gPj4gwqDCoMKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAgZm9yIChpID0gMCwg aiA9IDAsIGsgPSBmb2JqLT5zaGFyZWRfbWF4OyBpIDwgb2xkLT5zaGFyZWRfY291bnQ7DQo+ID4+ ICsraSkgew0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqY2hlY2s7DQo+ ID4+ICvCoMKgwqAgZm9yIChpID0gMCwgaiA9IDAsIGsgPSBtYXg7IGkgPCAob2xkID8gb2xkLT5z aGFyZWRfY291bnQgOiAwKTsNCj4gPj4gKytpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZTsNCj4gPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGNoZWNrID0gcmN1 X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvbGQtPnNoYXJlZFtpXSwNCj4gPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzZXJ2YXRpb25fb2JqZWN0X2hl bGQob2JqKSk7DQo+ID4+IC0NCj4gPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChjaGVjay0+Y29udGV4 dCA9PSBmZW5jZS0+Y29udGV4dCB8fA0KPiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFf ZmVuY2VfaXNfc2lnbmFsZWQoY2hlY2spKQ0KPiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBS Q1VfSU5JVF9QT0lOVEVSKGZvYmotPnNoYXJlZFstLWtdLCBjaGVjayk7DQo+ID4+ICvCoMKgwqDC oMKgwqDCoCBmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQob2xkLT5zaGFyZWRbaV0s DQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXNlcnZhdGlvbl9vYmplY3RfaGVsZChvYmopKTsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIGlm IChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKQ0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBSQ1VfSU5JVF9QT0lOVEVSKG5ldy0+c2hhcmVkWy0ta10sIGZlbmNlKTsNCj4gPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGVsc2UNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUkNVX0lO SVRfUE9JTlRFUihmb2JqLT5zaGFyZWRbaisrXSwgY2hlY2spOw0KPiA+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKG5ldy0+c2hhcmVkW2orK10sIGZlbmNlKTsNCj4g Pj4gwqDCoMKgwqDCoCB9DQo+ID4+IC3CoMKgwqAgZm9iai0+c2hhcmVkX2NvdW50ID0gajsNCj4g Pj4gLcKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKGZvYmotPnNoYXJlZFtmb2JqLT5zaGFyZWRfY291 bnRdLCBmZW5jZSk7DQo+ID4+IC3CoMKgwqAgZm9iai0+c2hhcmVkX2NvdW50Kys7DQo+ID4+ICvC oMKgwqAgbmV3LT5zaGFyZWRfY291bnQgPSBqOw0KPiA+PiArwqDCoMKgIG5ldy0+c2hhcmVkX21h eCA9IG1heDsNCj4gPj4gwqAgLWRvbmU6DQo+ID4+IMKgwqDCoMKgwqAgcHJlZW1wdF9kaXNhYmxl KCk7DQo+ID4+IMKgwqDCoMKgwqAgd3JpdGVfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsNCj4g Pj4gwqDCoMKgwqDCoCAvKg0KPiA+PiDCoMKgwqDCoMKgwqAgKiBSQ1VfSU5JVF9QT0lOVEVSIGNh biBiZSB1c2VkIGhlcmUsDQo+ID4+IMKgwqDCoMKgwqDCoCAqIHNlcWNvdW50IHByb3ZpZGVzIHRo ZSBuZWNlc3NhcnkgYmFycmllcnMNCj4gPj4gwqDCoMKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAg UkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlLCBmb2JqKTsNCj4gPj4gK8KgwqDCoCBSQ1VfSU5J VF9QT0lOVEVSKG9iai0+ZmVuY2UsIG5ldyk7DQo+ID4+IMKgwqDCoMKgwqAgd3JpdGVfc2VxY291 bnRfZW5kKCZvYmotPnNlcSk7DQo+ID4+IMKgwqDCoMKgwqAgcHJlZW1wdF9lbmFibGUoKTsNCj4g Pj4gwqAgwqDCoMKgwqDCoCBpZiAoIW9sZCkNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybjsN Cj4gPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiA+PiDCoCDCoMKgwqDCoMKgIC8qIERy b3AgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIHNpZ25hbGVkIGZlbmNlcyAqLw0KPiA+PiAtwqDCoMKg IGZvciAoaSA9IGs7IGkgPCBmb2JqLT5zaGFyZWRfbWF4OyArK2kpIHsNCj4gPj4gLcKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmY7DQo+ID4+ICvCoMKgwqAgZm9yIChpID0gazsgaSA8 IG5ldy0+c2hhcmVkX21heDsgKytpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsNCj4gPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGYgPSByY3VfZGVyZWZlcmVu Y2VfcHJvdGVjdGVkKGZvYmotPnNoYXJlZFtpXSwNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2VydmF0aW9uX29iamVjdF9oZWxkKG9i aikpOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgZG1hX2ZlbmNlX3B1dChmKTsNCj4gPj4gK8KgwqDC oMKgwqDCoMKgIGZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuZXctPnNoYXJlZFtp XSwNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJlc2VydmF0aW9uX29iamVjdF9oZWxkKG9iaikpOw0KPiA+PiArwqDCoMKgwqDCoMKgwqAg ZG1hX2ZlbmNlX3B1dChmZW5jZSk7DQo+ID4+IMKgwqDCoMKgwqAgfQ0KPiA+PiDCoMKgwqDCoMKg IGtmcmVlX3JjdShvbGQsIHJjdSk7DQo+ID4+ICsNCj4gPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4g Pj4gwqAgfQ0KPiA+PiArRVhQT1JUX1NZTUJPTChyZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9z aGFyZWQpOw0KPiA+PiDCoCDCoCAvKioNCj4gPj4gwqDCoCAqIHJlc2VydmF0aW9uX29iamVjdF9h ZGRfc2hhcmVkX2ZlbmNlIC0gQWRkIGEgZmVuY2UgdG8gYSBzaGFyZWQNCj4gPj4gc2xvdCBAQCAt MjI2LDE1ICsxNDMsMzkgQEANCj4gPj4gcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfcmVw bGFjZShzdHJ1Y3QNCj4gPj4gcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmosDQo+ID4+IMKgIHZvaWQg cmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVuY2Uoc3RydWN0IHJlc2VydmF0aW9uX29i amVjdA0KPiA+PiAqb2JqLA0KPiA+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkNCj4gPj4gwqAgew0KPiA+PiAtwqDC oMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqb2xkLCAqZm9iaiA9IG9iai0+c3Rh Z2VkOw0KPiA+PiArwqDCoMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqZm9iajsN Cj4gPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaTsNCj4gPj4gwqAgLcKgwqDCoCBvbGQgPSByZXNl cnZhdGlvbl9vYmplY3RfZ2V0X2xpc3Qob2JqKTsNCj4gPj4gLcKgwqDCoCBvYmotPnN0YWdlZCA9 IE5VTEw7DQo+ID4+ICvCoMKgwqAgZG1hX2ZlbmNlX2dldChmZW5jZSk7DQo+ID4+ICsNCj4gPj4g K8KgwqDCoCBmb2JqID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9saXN0KG9iaik7DQo+ID4+IMKg IC3CoMKgwqAgaWYgKCFmb2JqKQ0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgcmVzZXJ2YXRpb25fb2Jq ZWN0X2FkZF9zaGFyZWRfaW5wbGFjZShvYmosIG9sZCwgZmVuY2UpOw0KPiA+PiAtwqDCoMKgIGVs c2UNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHJlc2VydmF0aW9uX29iamVjdF9hZGRfc2hhcmVkX3Jl cGxhY2Uob2JqLCBvbGQsIGZvYmosDQo+ID4+IGZlbmNlKTsNCj4gPj4gK8KgwqDCoCBwcmVlbXB0 X2Rpc2FibGUoKTsNCj4gPj4gK8KgwqDCoCB3cml0ZV9zZXFjb3VudF9iZWdpbigmb2JqLT5zZXEp Ow0KPiA+PiArDQo+ID4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGZvYmotPnNoYXJlZF9jb3Vu dDsgKytpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICpvbGRfZmVu Y2U7DQo+ID4+ICsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9mZW5jZSA9IHJjdV9kZXJlZmVy ZW5jZV9wcm90ZWN0ZWQoZm9iai0+c2hhcmVkW2ldLA0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXNlcnZhdGlvbl9vYmpl Y3RfaGVsZChvYmopKTsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChvbGRfZmVuY2UtPmNvbnRl eHQgPT0gZmVuY2UtPmNvbnRleHQgfHwNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1h X2ZlbmNlX2lzX3NpZ25hbGVkKG9sZF9mZW5jZSkpIHsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOw0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIHJlcGxhY2U7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+ID4+ICvCoMKgwqAg fQ0KPiA+PiArDQo+ID4+ICvCoMKgwqAgQlVHX09OKGZvYmotPnNoYXJlZF9jb3VudCA+PSBmb2Jq LT5zaGFyZWRfbWF4KTsNCj4gPj4gK8KgwqDCoCBmb2JqLT5zaGFyZWRfY291bnQrKzsNCj4gPj4g Kw0KPiA+PiArcmVwbGFjZToNCj4gPj4gK8KgwqDCoCAvKg0KPiA+PiArwqDCoMKgwqAgKiBtZW1v cnkgYmFycmllciBpcyBhZGRlZCBieSB3cml0ZV9zZXFjb3VudF9iZWdpbiwNCj4gPj4gK8KgwqDC oMKgICogZm9iai0+c2hhcmVkX2NvdW50IGlzIHByb3RlY3RlZCBieSB0aGlzIGxvY2sgdG9vDQo+ ID4+ICvCoMKgwqDCoCAqLw0KPiA+PiArwqDCoMKgIFJDVV9JTklUX1BPSU5URVIoZm9iai0+c2hh cmVkW2ldLCBmZW5jZSk7DQo+ID4+ICvCoMKgwqAgd3JpdGVfc2VxY291bnRfZW5kKCZvYmotPnNl cSk7DQo+ID4+ICvCoMKgwqAgcHJlZW1wdF9lbmFibGUoKTsNCj4gPj4gwqAgfQ0KPiA+PiDCoCBF WFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX29iamVjdF9hZGRfc2hhcmVkX2ZlbmNlKTsNCj4gPj4g wqAgQEAgLTM0Myw5ICsyODQsNiBAQCBpbnQgcmVzZXJ2YXRpb25fb2JqZWN0X2NvcHlfZmVuY2Vz KHN0cnVjdA0KPiA+PiByZXNlcnZhdGlvbl9vYmplY3QgKmRzdCwNCj4gPj4gwqDCoMKgwqDCoCBu ZXcgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZzcmMtPmZlbmNlX2V4Y2wpOw0KPiA+PiDCoMKg wqDCoMKgIHJjdV9yZWFkX3VubG9jaygpOw0KPiA+PiDCoCAtwqDCoMKgIGtmcmVlKGRzdC0+c3Rh Z2VkKTsNCj4gPj4gLcKgwqDCoCBkc3QtPnN0YWdlZCA9IE5VTEw7DQo+ID4+IC0NCj4gPj4gwqDC oMKgwqDCoCBzcmNfbGlzdCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfbGlzdChkc3QpOw0KPiA+ PiDCoMKgwqDCoMKgIG9sZCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbChkc3QpOw0KPiA+ PiDCoCBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oDQo+ID4+IGIvaW5j bHVkZS9saW51eC9yZXNlcnZhdGlvbi5oIGluZGV4IDAyMTY2ZTgxNWFmYi4uNTRjZjY3NzNhMTRj IDEwMDY0NA0KPiA+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgNCj4gPj4gKysr IGIvaW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oDQo+ID4+IEBAIC02OCw3ICs2OCw2IEBAIHN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCB7DQo+ID4+IMKgwqAgKiBAc2VxOiBzZXF1ZW5j ZSBjb3VudCBmb3IgbWFuYWdpbmcgUkNVIHJlYWQtc2lkZSBzeW5jaHJvbml6YXRpb24NCj4gPj4g wqDCoCAqIEBmZW5jZV9leGNsOiB0aGUgZXhjbHVzaXZlIGZlbmNlLCBpZiB0aGVyZSBpcyBvbmUg Y3VycmVudGx5DQo+ID4+IMKgwqAgKiBAZmVuY2U6IGxpc3Qgb2YgY3VycmVudCBzaGFyZWQgZmVu Y2VzDQo+ID4+IC0gKiBAc3RhZ2VkOiBzdGFnZWQgY29weSBvZiBzaGFyZWQgZmVuY2VzIGZvciBS Q1UgdXBkYXRlcw0KPiA+PiDCoMKgICovDQo+ID4+IMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3Qgew0KPiA+PiDCoMKgwqDCoMKgIHN0cnVjdCB3d19tdXRleCBsb2NrOw0KPiA+PiBAQCAtNzYs NyArNzUsNiBAQCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0IHsNCj4gPj4gwqAgwqDCoMKgwqDC oCBzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5jZV9leGNsOw0KPiA+PiDCoMKgwqDCoMKgIHN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCBfX3JjdSAqZmVuY2U7DQo+ID4+IC3CoMKgwqAg c3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpzdGFnZWQ7DQo+ID4+IMKgIH07DQo+ID4+ IMKgIMKgICNkZWZpbmUgcmVzZXJ2YXRpb25fb2JqZWN0X2hlbGQob2JqKQ0KPiA+PiBsb2NrZGVw X2lzX2hlbGQoJihvYmopLT5sb2NrLmJhc2UpDQo+ID4+IEBAIC05NSw3ICs5Myw2IEBAIHJlc2Vy dmF0aW9uX29iamVjdF9pbml0KHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QNCj4gPj4gKm9iaikN Cj4gPj4gwqDCoMKgwqDCoCBfX3NlcWNvdW50X2luaXQoJm9iai0+c2VxLCByZXNlcnZhdGlvbl9z ZXFjb3VudF9zdHJpbmcsDQo+ID4+ICZyZXNlcnZhdGlvbl9zZXFjb3VudF9jbGFzcyk7DQo+ID4+ IMKgwqDCoMKgwqAgUkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlLCBOVUxMKTsNCj4gPj4gwqDC oMKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKG9iai0+ZmVuY2VfZXhjbCwgTlVMTCk7DQo+ID4+IC3C oMKgwqAgb2JqLT5zdGFnZWQgPSBOVUxMOw0KPiA+PiDCoCB9DQo+ID4+IMKgIMKgIC8qKg0KPiA+ PiBAQCAtMTI0LDcgKzEyMSw2IEBAIHJlc2VydmF0aW9uX29iamVjdF9maW5pKHN0cnVjdCByZXNl cnZhdGlvbl9vYmplY3QNCj4gPj4gKm9iaikNCj4gPj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGtm cmVlKGZvYmopOw0KPiA+PiDCoMKgwqDCoMKgIH0NCj4gPj4gLcKgwqDCoCBrZnJlZShvYmotPnN0 YWdlZCk7DQo+ID4+IMKgIMKgwqDCoMKgwqAgd3dfbXV0ZXhfZGVzdHJveSgmb2JqLT5sb2NrKTsN Cj4gPj4gwqAgfQ0KPiA+DQoNCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Huang, Ray" Subject: RE: [PATCH 1/8] dma-buf: remove shared fence staging in reservation object Date: Wed, 24 Oct 2018 05:12:47 +0000 Message-ID: References: <20181004131250.2373-1-christian.koenig@amd.com> <30ba1fc8-58d5-1c75-406e-d10e68ec4b18@gmail.com> <42ee3d74-9dac-6573-448c-c70ea28cb9ff@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <42ee3d74-9dac-6573-448c-c70ea28cb9ff-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org" , "Daenzer, Michel" Cc: "Zhang, Jerry" , Daniel Vetter , Chris Wilson List-Id: dri-devel@lists.freedesktop.org Q2hyaXN0aWFuLCBJIHdpbGwgdGFrZSBhIGxvb2sgYXQgdGhlbSBsYXRlci4NCg0KVGhhbmtzLA0K UmF5DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQ2hyaXN0aWFuIEvD tm5pZyBbbWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tXQ0KPiBTZW50OiBU dWVzZGF5LCBPY3RvYmVyIDIzLCAyMDE4IDg6MjAgUE0NCj4gVG86IGFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBsaW51eC0NCj4g bWVkaWFAdmdlci5rZXJuZWwub3JnOyBsaW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmc7IEh1 YW5nLCBSYXkNCj4gPFJheS5IdWFuZ0BhbWQuY29tPjsgRGFlbnplciwgTWljaGVsIDxNaWNoZWwu RGFlbnplckBhbWQuY29tPg0KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPjsg Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ow0KPiBaaGFuZywgSmVycnkg PEplcnJ5LlpoYW5nQGFtZC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS84XSBkbWEtYnVm OiByZW1vdmUgc2hhcmVkIGZlbmNlIHN0YWdpbmcgaW4NCj4gcmVzZXJ2YXRpb24gb2JqZWN0DQo+ IA0KPiBQaW5nIG9uY2UgbW9yZSEgQWRkaW5nIGEgZmV3IG1vcmUgQU1EIHBlb3BsZS4NCj4gDQo+ IEFueSBjb21tZW50cyBvbiB0aGlzPw0KPiANCj4gVGhhbmtzLA0KPiBDaHJpc3RpYW4uDQo+IA0K PiBBbSAxMi4xMC4xOCB1bSAxMDoyMiBzY2hyaWViIENocmlzdGlhbiBLw7ZuaWc6DQo+ID4gUGlu ZyEgQWRkaW5nIGEgZmV3IHBlb3BsZSBkaXJlY3RseSBhbmQgbW9yZSBtYWlsaW5nIGxpc3RzLg0K PiA+DQo+ID4gQ2FuIEkgZ2V0IGFuIGFja2VkLWJ5L3JiIGZvciB0aGlzPyBJdCdzIG9ubHkgYSBj bGVhbnVwIGFuZCBub3QgbXVjaA0KPiA+IGZ1bmN0aW9uYWwgY2hhbmdlLg0KPiA+DQo+ID4gUmVn YXJkcywNCj4gPiBDaHJpc3RpYW4uDQo+ID4NCj4gPiBBbSAwNC4xMC4yMDE4IHVtIDE1OjEyIHNj aHJpZWIgQ2hyaXN0aWFuIEvDtm5pZzoNCj4gPj4gTm8gbmVlZCBmb3IgdGhhdCBhbnkgbW9yZS4g SnVzdCByZXBsYWNlIHRoZSBsaXN0IHdoZW4gdGhlcmUgaXNuJ3QNCj4gPj4gZW5vdWdoIHJvb20g YW55IG1vcmUgZm9yIHRoZSBhZGRpdGlvbmFsIGZlbmNlLg0KPiA+Pg0KPiA+PiBTaWduZWQtb2Zm LWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+DQo+ID4+IC0t LQ0KPiA+PiDCoCBkcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYyB8IDE3OA0KPiA+PiArKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4gwqAgaW5jbHVkZS9s aW51eC9yZXNlcnZhdGlvbi5owqDCoCB8wqDCoCA0IC0NCj4gPj4gwqAgMiBmaWxlcyBjaGFuZ2Vk LCA1OCBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pDQo+ID4+DQo+ID4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+PiBiL2RyaXZlcnMvZG1hLWJ1 Zi9yZXNlcnZhdGlvbi5jIGluZGV4IDZjOTVmNjFhMzJlNy4uNTgyNWZjMzM2YTEzDQo+ID4+IDEw MDY0NA0KPiA+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+PiArKysg Yi9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYw0KPiA+PiBAQCAtNjgsMTA1ICs2OCwyMyBA QCBFWFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX3NlcWNvdW50X3N0cmluZyk7DQo+ID4+IMKgwqAg Ki8NCj4gPj4gwqAgaW50IHJlc2VydmF0aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZChzdHJ1Y3Qg cmVzZXJ2YXRpb25fb2JqZWN0DQo+ID4+ICpvYmopDQo+ID4+IMKgIHsNCj4gPj4gLcKgwqDCoCBz dHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKmZvYmosICpvbGQ7DQo+ID4+IC3CoMKgwqAg dTMyIG1heDsNCj4gPj4gK8KgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKm9s ZCwgKm5ldzsNCj4gPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaSwgaiwgaywgbWF4Ow0KPiA+PiDC oCDCoMKgwqDCoMKgIG9sZCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfbGlzdChvYmopOw0KPiA+ PiDCoCDCoMKgwqDCoMKgIGlmIChvbGQgJiYgb2xkLT5zaGFyZWRfbWF4KSB7DQo+ID4+IC3CoMKg wqDCoMKgwqDCoCBpZiAob2xkLT5zaGFyZWRfY291bnQgPCBvbGQtPnNoYXJlZF9tYXgpIHsNCj4g Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogcGVyZm9ybSBhbiBpbi1wbGFjZSB1cGRhdGUg Ki8NCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUob2JqLT5zdGFnZWQpOw0KPiA+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvYmotPnN0YWdlZCA9IE5VTEw7DQo+ID4+ICvCoMKg wqDCoMKgwqDCoCBpZiAob2xkLT5zaGFyZWRfY291bnQgPCBvbGQtPnNoYXJlZF9tYXgpDQo+ID4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiA+PiAtwqDCoMKgwqDCoMKg wqAgfSBlbHNlDQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlDQo+ID4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG1heCA9IG9sZC0+c2hhcmVkX21heCAqIDI7DQo+ID4+IC3CoMKgwqAgfSBl bHNlDQo+ID4+IC3CoMKgwqDCoMKgwqDCoCBtYXggPSA0Ow0KPiA+PiAtDQo+ID4+IC3CoMKgwqAg LyoNCj4gPj4gLcKgwqDCoMKgICogcmVzaXplIG9iai0+c3RhZ2VkIG9yIGFsbG9jYXRlIGlmIGl0 IGRvZXNuJ3QgZXhpc3QsDQo+ID4+IC3CoMKgwqDCoCAqIG5vb3AgaWYgYWxyZWFkeSBjb3JyZWN0 IHNpemUNCj4gPj4gLcKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAgZm9iaiA9IGtyZWFsbG9jKG9i ai0+c3RhZ2VkLCBvZmZzZXRvZih0eXBlb2YoKmZvYmopLA0KPiA+PiBzaGFyZWRbbWF4XSksDQo+ ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdGUF9LRVJORUwpOw0KPiA+PiAtwqDCoMKgIGlm ICghZm9iaikNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOw0KPiA+PiAtDQo+ ID4+IC3CoMKgwqAgb2JqLT5zdGFnZWQgPSBmb2JqOw0KPiA+PiAtwqDCoMKgIGZvYmotPnNoYXJl ZF9tYXggPSBtYXg7DQo+ID4+IC3CoMKgwqAgcmV0dXJuIDA7DQo+ID4+IC19DQo+ID4+IC1FWFBP UlRfU1lNQk9MKHJlc2VydmF0aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZCk7DQo+ID4+IC0NCj4g Pj4gLXN0YXRpYyB2b2lkDQo+ID4+IC1yZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9pbnBs YWNlKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QNCj4gPj4gKm9iaiwNCj4gPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2Jq ZWN0X2xpc3QgKmZvYmosDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpIC17DQo+ID4+IC3CoMKgwqAgc3RydWN0 IGRtYV9mZW5jZSAqc2lnbmFsZWQgPSBOVUxMOw0KPiA+PiAtwqDCoMKgIHUzMiBpLCBzaWduYWxl ZF9pZHg7DQo+ID4+IC0NCj4gPj4gLcKgwqDCoCBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsNCj4gPj4g LQ0KPiA+PiAtwqDCoMKgIHByZWVtcHRfZGlzYWJsZSgpOw0KPiA+PiAtwqDCoMKgIHdyaXRlX3Nl cWNvdW50X2JlZ2luKCZvYmotPnNlcSk7DQo+ID4+IC0NCj4gPj4gLcKgwqDCoCBmb3IgKGkgPSAw OyBpIDwgZm9iai0+c2hhcmVkX2NvdW50OyArK2kpIHsNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsNCj4gPj4gLQ0KPiA+PiAtwqDCoMKgwqDCoMKgwqAg b2xkX2ZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmb2JqLT5zaGFyZWRbaV0sDQo+ ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2Vy dmF0aW9uX29iamVjdF9oZWxkKG9iaikpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqDCoMKgwqDCoCBp ZiAob2xkX2ZlbmNlLT5jb250ZXh0ID09IGZlbmNlLT5jb250ZXh0KSB7DQo+ID4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIG1lbW9yeSBiYXJyaWVyIGlzIGFkZGVkIGJ5IHdyaXRlX3NlcWNv dW50X2JlZ2luICovDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJDVV9JTklUX1BPSU5U RVIoZm9iai0+c2hhcmVkW2ldLCBmZW5jZSk7DQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHdyaXRlX3NlcWNvdW50X2VuZCgmb2JqLT5zZXEpOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwcmVlbXB0X2VuYWJsZSgpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRtYV9mZW5jZV9wdXQob2xkX2ZlbmNlKTsNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgfQ0KPiA+PiAtDQo+ID4+IC3CoMKgwqDC oMKgwqDCoCBpZiAoIXNpZ25hbGVkICYmIGRtYV9mZW5jZV9pc19zaWduYWxlZChvbGRfZmVuY2Up KSB7DQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ25hbGVkID0gb2xkX2ZlbmNlOw0K PiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWduYWxlZF9pZHggPSBpOw0KPiA+PiAtwqDC oMKgwqDCoMKgwqAgfQ0KPiA+PiAtwqDCoMKgIH0NCj4gPj4gLQ0KPiA+PiAtwqDCoMKgIC8qDQo+ ID4+IC3CoMKgwqDCoCAqIG1lbW9yeSBiYXJyaWVyIGlzIGFkZGVkIGJ5IHdyaXRlX3NlcWNvdW50 X2JlZ2luLA0KPiA+PiAtwqDCoMKgwqAgKiBmb2JqLT5zaGFyZWRfY291bnQgaXMgcHJvdGVjdGVk IGJ5IHRoaXMgbG9jayB0b28NCj4gPj4gLcKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAgaWYgKHNp Z25hbGVkKSB7DQo+ID4+IC3CoMKgwqDCoMKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKGZvYmotPnNo YXJlZFtzaWduYWxlZF9pZHhdLCBmZW5jZSk7DQo+ID4+IMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4g Pj4gLcKgwqDCoMKgwqDCoMKgIEJVR19PTihmb2JqLT5zaGFyZWRfY291bnQgPj0gZm9iai0+c2hh cmVkX21heCk7DQo+ID4+IC0gUkNVX0lOSVRfUE9JTlRFUihmb2JqLT5zaGFyZWRbZm9iai0+c2hh cmVkX2NvdW50XSwgZmVuY2UpOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgZm9iai0+c2hhcmVkX2Nv dW50Kys7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBtYXggPSA0Ow0KPiA+PiDCoMKgwqDCoMKgIH0N Cj4gPj4gwqAgLcKgwqDCoCB3cml0ZV9zZXFjb3VudF9lbmQoJm9iai0+c2VxKTsNCj4gPj4gLcKg wqDCoCBwcmVlbXB0X2VuYWJsZSgpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqAgZG1hX2ZlbmNlX3B1 dChzaWduYWxlZCk7DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gLXN0YXRpYyB2b2lkDQo+ID4+IC1y ZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9yZXBsYWNlKHN0cnVjdCByZXNlcnZhdGlvbl9v YmplY3QNCj4gPj4gKm9iaiwNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKm9sZCwNCj4gPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVzZXJ2YXRp b25fb2JqZWN0X2xpc3QgKmZvYmosDQo+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpIC17DQo+ID4+IC3CoMKgwqAg dW5zaWduZWQgaSwgaiwgazsNCj4gPj4gLQ0KPiA+PiAtwqDCoMKgIGRtYV9mZW5jZV9nZXQoZmVu Y2UpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqAgaWYgKCFvbGQpIHsNCj4gPj4gLcKgwqDCoMKgwqDC oMKgIFJDVV9JTklUX1BPSU5URVIoZm9iai0+c2hhcmVkWzBdLCBmZW5jZSk7DQo+ID4+IC3CoMKg wqDCoMKgwqDCoCBmb2JqLT5zaGFyZWRfY291bnQgPSAxOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAg Z290byBkb25lOw0KPiA+PiAtwqDCoMKgIH0NCj4gPj4gK8KgwqDCoCBuZXcgPSBrbWFsbG9jKG9m ZnNldG9mKHR5cGVvZigqbmV3KSwgc2hhcmVkW21heF0pLCBHRlBfS0VSTkVMKTsNCj4gPj4gK8Kg wqDCoCBpZiAoIW5ldykNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOw0KPiA+ PiDCoCDCoMKgwqDCoMKgIC8qDQo+ID4+IMKgwqDCoMKgwqDCoCAqIG5vIG5lZWQgdG8gYnVtcCBm ZW5jZSByZWZjb3VudHMsIHJjdV9yZWFkIGFjY2VzcyBAQCAtMTc0LDQ2DQo+ID4+ICs5Miw0NSBA QCByZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9yZXBsYWNlKHN0cnVjdA0KPiA+PiByZXNl cnZhdGlvbl9vYmplY3QgKm9iaiwNCj4gPj4gwqDCoMKgwqDCoMKgICogcmVmZXJlbmNlcyBmcm9t IHRoZSBvbGQgc3RydWN0IGFyZSBjYXJyaWVkIG92ZXIgdG8NCj4gPj4gwqDCoMKgwqDCoMKgICog dGhlIG5ldy4NCj4gPj4gwqDCoMKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAgZm9yIChpID0gMCwg aiA9IDAsIGsgPSBmb2JqLT5zaGFyZWRfbWF4OyBpIDwgb2xkLT5zaGFyZWRfY291bnQ7DQo+ID4+ ICsraSkgew0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqY2hlY2s7DQo+ ID4+ICvCoMKgwqAgZm9yIChpID0gMCwgaiA9IDAsIGsgPSBtYXg7IGkgPCAob2xkID8gb2xkLT5z aGFyZWRfY291bnQgOiAwKTsNCj4gPj4gKytpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZTsNCj4gPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGNoZWNrID0gcmN1 X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChvbGQtPnNoYXJlZFtpXSwNCj4gPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzZXJ2YXRpb25fb2JqZWN0X2hl bGQob2JqKSk7DQo+ID4+IC0NCj4gPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChjaGVjay0+Y29udGV4 dCA9PSBmZW5jZS0+Y29udGV4dCB8fA0KPiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFf ZmVuY2VfaXNfc2lnbmFsZWQoY2hlY2spKQ0KPiA+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBS Q1VfSU5JVF9QT0lOVEVSKGZvYmotPnNoYXJlZFstLWtdLCBjaGVjayk7DQo+ID4+ICvCoMKgwqDC oMKgwqDCoCBmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQob2xkLT5zaGFyZWRbaV0s DQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXNlcnZhdGlvbl9vYmplY3RfaGVsZChvYmopKTsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIGlm IChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKQ0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBSQ1VfSU5JVF9QT0lOVEVSKG5ldy0+c2hhcmVkWy0ta10sIGZlbmNlKTsNCj4gPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGVsc2UNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUkNVX0lO SVRfUE9JTlRFUihmb2JqLT5zaGFyZWRbaisrXSwgY2hlY2spOw0KPiA+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKG5ldy0+c2hhcmVkW2orK10sIGZlbmNlKTsNCj4g Pj4gwqDCoMKgwqDCoCB9DQo+ID4+IC3CoMKgwqAgZm9iai0+c2hhcmVkX2NvdW50ID0gajsNCj4g Pj4gLcKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKGZvYmotPnNoYXJlZFtmb2JqLT5zaGFyZWRfY291 bnRdLCBmZW5jZSk7DQo+ID4+IC3CoMKgwqAgZm9iai0+c2hhcmVkX2NvdW50Kys7DQo+ID4+ICvC oMKgwqAgbmV3LT5zaGFyZWRfY291bnQgPSBqOw0KPiA+PiArwqDCoMKgIG5ldy0+c2hhcmVkX21h eCA9IG1heDsNCj4gPj4gwqAgLWRvbmU6DQo+ID4+IMKgwqDCoMKgwqAgcHJlZW1wdF9kaXNhYmxl KCk7DQo+ID4+IMKgwqDCoMKgwqAgd3JpdGVfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsNCj4g Pj4gwqDCoMKgwqDCoCAvKg0KPiA+PiDCoMKgwqDCoMKgwqAgKiBSQ1VfSU5JVF9QT0lOVEVSIGNh biBiZSB1c2VkIGhlcmUsDQo+ID4+IMKgwqDCoMKgwqDCoCAqIHNlcWNvdW50IHByb3ZpZGVzIHRo ZSBuZWNlc3NhcnkgYmFycmllcnMNCj4gPj4gwqDCoMKgwqDCoMKgICovDQo+ID4+IC3CoMKgwqAg UkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlLCBmb2JqKTsNCj4gPj4gK8KgwqDCoCBSQ1VfSU5J VF9QT0lOVEVSKG9iai0+ZmVuY2UsIG5ldyk7DQo+ID4+IMKgwqDCoMKgwqAgd3JpdGVfc2VxY291 bnRfZW5kKCZvYmotPnNlcSk7DQo+ID4+IMKgwqDCoMKgwqAgcHJlZW1wdF9lbmFibGUoKTsNCj4g Pj4gwqAgwqDCoMKgwqDCoCBpZiAoIW9sZCkNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybjsN Cj4gPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiA+PiDCoCDCoMKgwqDCoMKgIC8qIERy b3AgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIHNpZ25hbGVkIGZlbmNlcyAqLw0KPiA+PiAtwqDCoMKg IGZvciAoaSA9IGs7IGkgPCBmb2JqLT5zaGFyZWRfbWF4OyArK2kpIHsNCj4gPj4gLcKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmY7DQo+ID4+ICvCoMKgwqAgZm9yIChpID0gazsgaSA8 IG5ldy0+c2hhcmVkX21heDsgKytpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsNCj4gPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGYgPSByY3VfZGVyZWZlcmVu Y2VfcHJvdGVjdGVkKGZvYmotPnNoYXJlZFtpXSwNCj4gPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2VydmF0aW9uX29iamVjdF9oZWxkKG9i aikpOw0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgZG1hX2ZlbmNlX3B1dChmKTsNCj4gPj4gK8KgwqDC oMKgwqDCoMKgIGZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuZXctPnNoYXJlZFtp XSwNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJlc2VydmF0aW9uX29iamVjdF9oZWxkKG9iaikpOw0KPiA+PiArwqDCoMKgwqDCoMKgwqAg ZG1hX2ZlbmNlX3B1dChmZW5jZSk7DQo+ID4+IMKgwqDCoMKgwqAgfQ0KPiA+PiDCoMKgwqDCoMKg IGtmcmVlX3JjdShvbGQsIHJjdSk7DQo+ID4+ICsNCj4gPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4g Pj4gwqAgfQ0KPiA+PiArRVhQT1JUX1NZTUJPTChyZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9z aGFyZWQpOw0KPiA+PiDCoCDCoCAvKioNCj4gPj4gwqDCoCAqIHJlc2VydmF0aW9uX29iamVjdF9h ZGRfc2hhcmVkX2ZlbmNlIC0gQWRkIGEgZmVuY2UgdG8gYSBzaGFyZWQNCj4gPj4gc2xvdCBAQCAt MjI2LDE1ICsxNDMsMzkgQEANCj4gPj4gcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfcmVw bGFjZShzdHJ1Y3QNCj4gPj4gcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmosDQo+ID4+IMKgIHZvaWQg cmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVuY2Uoc3RydWN0IHJlc2VydmF0aW9uX29i amVjdA0KPiA+PiAqb2JqLA0KPiA+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkNCj4gPj4gwqAgew0KPiA+PiAtwqDC oMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqb2xkLCAqZm9iaiA9IG9iai0+c3Rh Z2VkOw0KPiA+PiArwqDCoMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqZm9iajsN Cj4gPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaTsNCj4gPj4gwqAgLcKgwqDCoCBvbGQgPSByZXNl cnZhdGlvbl9vYmplY3RfZ2V0X2xpc3Qob2JqKTsNCj4gPj4gLcKgwqDCoCBvYmotPnN0YWdlZCA9 IE5VTEw7DQo+ID4+ICvCoMKgwqAgZG1hX2ZlbmNlX2dldChmZW5jZSk7DQo+ID4+ICsNCj4gPj4g K8KgwqDCoCBmb2JqID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9saXN0KG9iaik7DQo+ID4+IMKg IC3CoMKgwqAgaWYgKCFmb2JqKQ0KPiA+PiAtwqDCoMKgwqDCoMKgwqAgcmVzZXJ2YXRpb25fb2Jq ZWN0X2FkZF9zaGFyZWRfaW5wbGFjZShvYmosIG9sZCwgZmVuY2UpOw0KPiA+PiAtwqDCoMKgIGVs c2UNCj4gPj4gLcKgwqDCoMKgwqDCoMKgIHJlc2VydmF0aW9uX29iamVjdF9hZGRfc2hhcmVkX3Jl cGxhY2Uob2JqLCBvbGQsIGZvYmosDQo+ID4+IGZlbmNlKTsNCj4gPj4gK8KgwqDCoCBwcmVlbXB0 X2Rpc2FibGUoKTsNCj4gPj4gK8KgwqDCoCB3cml0ZV9zZXFjb3VudF9iZWdpbigmb2JqLT5zZXEp Ow0KPiA+PiArDQo+ID4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGZvYmotPnNoYXJlZF9jb3Vu dDsgKytpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICpvbGRfZmVu Y2U7DQo+ID4+ICsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIG9sZF9mZW5jZSA9IHJjdV9kZXJlZmVy ZW5jZV9wcm90ZWN0ZWQoZm9iai0+c2hhcmVkW2ldLA0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXNlcnZhdGlvbl9vYmpl Y3RfaGVsZChvYmopKTsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChvbGRfZmVuY2UtPmNvbnRl eHQgPT0gZmVuY2UtPmNvbnRleHQgfHwNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1h X2ZlbmNlX2lzX3NpZ25hbGVkKG9sZF9mZW5jZSkpIHsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOw0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIHJlcGxhY2U7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+ID4+ICvCoMKgwqAg fQ0KPiA+PiArDQo+ID4+ICvCoMKgwqAgQlVHX09OKGZvYmotPnNoYXJlZF9jb3VudCA+PSBmb2Jq LT5zaGFyZWRfbWF4KTsNCj4gPj4gK8KgwqDCoCBmb2JqLT5zaGFyZWRfY291bnQrKzsNCj4gPj4g Kw0KPiA+PiArcmVwbGFjZToNCj4gPj4gK8KgwqDCoCAvKg0KPiA+PiArwqDCoMKgwqAgKiBtZW1v cnkgYmFycmllciBpcyBhZGRlZCBieSB3cml0ZV9zZXFjb3VudF9iZWdpbiwNCj4gPj4gK8KgwqDC oMKgICogZm9iai0+c2hhcmVkX2NvdW50IGlzIHByb3RlY3RlZCBieSB0aGlzIGxvY2sgdG9vDQo+ ID4+ICvCoMKgwqDCoCAqLw0KPiA+PiArwqDCoMKgIFJDVV9JTklUX1BPSU5URVIoZm9iai0+c2hh cmVkW2ldLCBmZW5jZSk7DQo+ID4+ICvCoMKgwqAgd3JpdGVfc2VxY291bnRfZW5kKCZvYmotPnNl cSk7DQo+ID4+ICvCoMKgwqAgcHJlZW1wdF9lbmFibGUoKTsNCj4gPj4gwqAgfQ0KPiA+PiDCoCBF WFBPUlRfU1lNQk9MKHJlc2VydmF0aW9uX29iamVjdF9hZGRfc2hhcmVkX2ZlbmNlKTsNCj4gPj4g wqAgQEAgLTM0Myw5ICsyODQsNiBAQCBpbnQgcmVzZXJ2YXRpb25fb2JqZWN0X2NvcHlfZmVuY2Vz KHN0cnVjdA0KPiA+PiByZXNlcnZhdGlvbl9vYmplY3QgKmRzdCwNCj4gPj4gwqDCoMKgwqDCoCBu ZXcgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZzcmMtPmZlbmNlX2V4Y2wpOw0KPiA+PiDCoMKg wqDCoMKgIHJjdV9yZWFkX3VubG9jaygpOw0KPiA+PiDCoCAtwqDCoMKgIGtmcmVlKGRzdC0+c3Rh Z2VkKTsNCj4gPj4gLcKgwqDCoCBkc3QtPnN0YWdlZCA9IE5VTEw7DQo+ID4+IC0NCj4gPj4gwqDC oMKgwqDCoCBzcmNfbGlzdCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfbGlzdChkc3QpOw0KPiA+ PiDCoMKgwqDCoMKgIG9sZCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbChkc3QpOw0KPiA+ PiDCoCBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oDQo+ID4+IGIvaW5j bHVkZS9saW51eC9yZXNlcnZhdGlvbi5oIGluZGV4IDAyMTY2ZTgxNWFmYi4uNTRjZjY3NzNhMTRj IDEwMDY0NA0KPiA+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgNCj4gPj4gKysr IGIvaW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oDQo+ID4+IEBAIC02OCw3ICs2OCw2IEBAIHN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCB7DQo+ID4+IMKgwqAgKiBAc2VxOiBzZXF1ZW5j ZSBjb3VudCBmb3IgbWFuYWdpbmcgUkNVIHJlYWQtc2lkZSBzeW5jaHJvbml6YXRpb24NCj4gPj4g wqDCoCAqIEBmZW5jZV9leGNsOiB0aGUgZXhjbHVzaXZlIGZlbmNlLCBpZiB0aGVyZSBpcyBvbmUg Y3VycmVudGx5DQo+ID4+IMKgwqAgKiBAZmVuY2U6IGxpc3Qgb2YgY3VycmVudCBzaGFyZWQgZmVu Y2VzDQo+ID4+IC0gKiBAc3RhZ2VkOiBzdGFnZWQgY29weSBvZiBzaGFyZWQgZmVuY2VzIGZvciBS Q1UgdXBkYXRlcw0KPiA+PiDCoMKgICovDQo+ID4+IMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3Qgew0KPiA+PiDCoMKgwqDCoMKgIHN0cnVjdCB3d19tdXRleCBsb2NrOw0KPiA+PiBAQCAtNzYs NyArNzUsNiBAQCBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0IHsNCj4gPj4gwqAgwqDCoMKgwqDC oCBzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5jZV9leGNsOw0KPiA+PiDCoMKgwqDCoMKgIHN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCBfX3JjdSAqZmVuY2U7DQo+ID4+IC3CoMKgwqAg c3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpzdGFnZWQ7DQo+ID4+IMKgIH07DQo+ID4+ IMKgIMKgICNkZWZpbmUgcmVzZXJ2YXRpb25fb2JqZWN0X2hlbGQob2JqKQ0KPiA+PiBsb2NrZGVw X2lzX2hlbGQoJihvYmopLT5sb2NrLmJhc2UpDQo+ID4+IEBAIC05NSw3ICs5Myw2IEBAIHJlc2Vy dmF0aW9uX29iamVjdF9pbml0KHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QNCj4gPj4gKm9iaikN Cj4gPj4gwqDCoMKgwqDCoCBfX3NlcWNvdW50X2luaXQoJm9iai0+c2VxLCByZXNlcnZhdGlvbl9z ZXFjb3VudF9zdHJpbmcsDQo+ID4+ICZyZXNlcnZhdGlvbl9zZXFjb3VudF9jbGFzcyk7DQo+ID4+ IMKgwqDCoMKgwqAgUkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlLCBOVUxMKTsNCj4gPj4gwqDC oMKgwqDCoCBSQ1VfSU5JVF9QT0lOVEVSKG9iai0+ZmVuY2VfZXhjbCwgTlVMTCk7DQo+ID4+IC3C oMKgwqAgb2JqLT5zdGFnZWQgPSBOVUxMOw0KPiA+PiDCoCB9DQo+ID4+IMKgIMKgIC8qKg0KPiA+ PiBAQCAtMTI0LDcgKzEyMSw2IEBAIHJlc2VydmF0aW9uX29iamVjdF9maW5pKHN0cnVjdCByZXNl cnZhdGlvbl9vYmplY3QNCj4gPj4gKm9iaikNCj4gPj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGtm cmVlKGZvYmopOw0KPiA+PiDCoMKgwqDCoMKgIH0NCj4gPj4gLcKgwqDCoCBrZnJlZShvYmotPnN0 YWdlZCk7DQo+ID4+IMKgIMKgwqDCoMKgwqAgd3dfbXV0ZXhfZGVzdHJveSgmb2JqLT5sb2NrKTsN Cj4gPj4gwqAgfQ0KPiA+DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eAo=