From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: Re: [PATCH 02/10] dma-buf: add new dma_fence_chain container v3 Date: Tue, 4 Dec 2018 12:19:43 +0000 Message-ID: References: <20181204115948.15202-1-christian.koenig@amd.com> <20181204115948.15202-2-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181204115948.15202-2-christian.koenig@amd.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org DQoNCuWcqCAyMDE4LzEyLzQgMTk6NTksIENocmlzdGlhbiBLw7ZuaWcg5YaZ6YGTOg0KPiBMb2Nr bGVzcyBjb250YWluZXIgaW1wbGVtZW50YXRpb24gc2ltaWxhciB0byBhIGRtYV9mZW5jZV9hcnJh eSwgYnV0IHdpdGgNCj4gb25seSB0d28gZWxlbWVudHMgcGVyIG5vZGUgYW5kIGF1dG9tYXRpYyBn YXJiYWdlIGNvbGxlY3Rpb24uDQo+DQo+IHYyOiBwcm9wZXJseSBkb2N1bWVudCBkbWFfZmVuY2Vf Y2hhaW5fZm9yX2VhY2gsIGFkZCBkbWFfZmVuY2VfY2hhaW5fZmluZF9zZXFubywNCj4gICAgICBk cm9wIHByZXYgcmVmZXJlbmNlIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gaWYgaXQncyBub3Qg YSBjaGFpbiBmZW5jZS4NCj4gdjM6IHVzZSBoZWFkIGFuZCBpdGVyYXRvciBmb3IgZG1hX2ZlbmNl X2NoYWluX2Zvcl9lYWNoDQo+DQo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNo cmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4NCg0KUmV2aWV3ZWQtYnk6IENodW5taW5nIFpob3UgPGRh dmlkMS56aG91QGFtZC5jb20+DQoNCj4gLS0tDQo+ICAgZHJpdmVycy9kbWEtYnVmL01ha2VmaWxl ICAgICAgICAgIHwgICAzICstDQo+ICAgZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5j IHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgaW5jbHVk ZS9saW51eC9kbWEtZmVuY2UtY2hhaW4uaCAgIHwgIDgxICsrKysrKysrKysrKysNCj4gICAzIGZp bGVzIGNoYW5nZWQsIDMxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYw0KPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2RtYS1mZW5jZS1jaGFpbi5oDQo+DQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1idWYvTWFrZWZp bGUNCj4gaW5kZXggMDkxM2E2Y2NhYjVhLi4xZjAwNmUwODNlYjkgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUN Cj4gQEAgLTEsNCArMSw1IEBADQo+IC1vYmoteSA6PSBkbWEtYnVmLm8gZG1hLWZlbmNlLm8gZG1h LWZlbmNlLWFycmF5Lm8gcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vDQo+ICtvYmoteSA6PSBk bWEtYnVmLm8gZG1hLWZlbmNlLm8gZG1hLWZlbmNlLWFycmF5Lm8gZG1hLWZlbmNlLWNoYWluLm8g XA0KPiArCSByZXNlcnZhdGlvbi5vIHNlcW5vLWZlbmNlLm8NCj4gICBvYmotJChDT05GSUdfU1lO Q19GSUxFKQkJKz0gc3luY19maWxlLm8NCj4gICBvYmotJChDT05GSUdfU1dfU1lOQykJCSs9IHN3 X3N5bmMubyBzeW5jX2RlYnVnLm8NCj4gICBvYmotJChDT05GSUdfVURNQUJVRikJCSs9IHVkbWFi dWYubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5jIGIv ZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWVjMjM0ZDY2MDgxDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5jDQo+IEBAIC0wLDAgKzEsMjM0 IEBADQo+ICsvKg0KPiArICogZmVuY2UtY2hhaW46IGNoYWluIGZlbmNlcyB0b2dldGhlciBpbiBh IHRpbWVsaW5lDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDE4IEFkdmFuY2VkIE1pY3Jv IERldmljZXMsIEluYy4NCj4gKyAqIEF1dGhvcnM6DQo+ICsgKglDaHJpc3RpYW4gS8O2bmlnIDxj aHJpc3RpYW4ua29lbmlnQGFtZC5jb20+DQo+ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCj4g KyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAyIGFzIHB1Ymxpc2hlZCBieQ0KPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4NCj4gKyAqDQo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQNCj4gKyAqIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcg0K PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KPiArICogbW9yZSBkZXRhaWxzLg0KPiArICovDQo+ICsN Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UtY2hhaW4uaD4NCj4gKw0KPiArc3RhdGljIGJv b2wgZG1hX2ZlbmNlX2NoYWluX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2UpOw0KPiArDQo+ICsvKioNCj4gKyAqIGRtYV9mZW5jZV9jaGFpbl9nZXRfcHJldiAtIHVzZSBS Q1UgdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyBmZW5jZQ0KPiArICogQGNoYWlu OiBjaGFpbiBub2RlIHRvIGdldCB0aGUgcHJldmlvdXMgbm9kZSBmcm9tDQo+ICsgKg0KPiArICog VXNlIGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUgdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2 aW91cyBmZW5jZSBvZiB0aGUNCj4gKyAqIGNoYWluIG5vZGUuDQo+ICsgKi8NCj4gK3N0YXRpYyBz dHJ1Y3QgZG1hX2ZlbmNlICpkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYoc3RydWN0IGRtYV9mZW5j ZV9jaGFpbiAqY2hhaW4pDQo+ICt7DQo+ICsJc3RydWN0IGRtYV9mZW5jZSAqcHJldjsNCj4gKw0K PiArCXJjdV9yZWFkX2xvY2soKTsNCj4gKwlwcmV2ID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgm Y2hhaW4tPnByZXYpOw0KPiArCXJjdV9yZWFkX3VubG9jaygpOw0KPiArCXJldHVybiBwcmV2Ow0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAqIGRtYV9mZW5jZV9jaGFpbl93YWxrIC0gY2hhaW4gd2Fs a2luZyBmdW5jdGlvbg0KPiArICogQGZlbmNlOiBjdXJyZW50IGNoYWluIG5vZGUNCj4gKyAqDQo+ ICsgKiBXYWxrIHRoZSBjaGFpbiB0byB0aGUgbmV4dCBub2RlLiBSZXR1cm5zIHRoZSBuZXh0IGZl bmNlIG9yIE5VTEwgaWYgd2UgYXJlIGF0DQo+ICsgKiB0aGUgZW5kIG9mIHRoZSBjaGFpbi4gR2Fy YmFnZSBjb2xsZWN0cyBjaGFpbiBub2RlcyB3aGljaCBhcmUgYWxyZWFkeQ0KPiArICogc2lnbmFs ZWQuDQo+ICsgKi8NCj4gK3N0cnVjdCBkbWFfZmVuY2UgKmRtYV9mZW5jZV9jaGFpbl93YWxrKHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQ0KPiArew0KPiArCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4g KmNoYWluLCAqcHJldl9jaGFpbjsNCj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlICpwcmV2LCAqcmVwbGFj ZW1lbnQsICp0bXA7DQo+ICsNCj4gKwljaGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7 DQo+ICsJaWYgKCFjaGFpbikgew0KPiArCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsNCj4gKwkJcmV0 dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJd2hpbGUgKChwcmV2ID0gZG1hX2ZlbmNlX2NoYWlu X2dldF9wcmV2KGNoYWluKSkpIHsNCj4gKw0KPiArCQlwcmV2X2NoYWluID0gdG9fZG1hX2ZlbmNl X2NoYWluKHByZXYpOw0KPiArCQlpZiAocHJldl9jaGFpbikgew0KPiArCQkJaWYgKCFkbWFfZmVu Y2VfaXNfc2lnbmFsZWQocHJldl9jaGFpbi0+ZmVuY2UpKQ0KPiArCQkJCWJyZWFrOw0KPiArDQo+ ICsJCQlyZXBsYWNlbWVudCA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfcHJldihwcmV2X2NoYWluKTsN Cj4gKwkJfSBlbHNlIHsNCj4gKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXYpKQ0K PiArCQkJCWJyZWFrOw0KPiArDQo+ICsJCQlyZXBsYWNlbWVudCA9IE5VTEw7DQo+ICsJCX0NCj4g Kw0KPiArCQl0bXAgPSBjbXB4Y2hnKCZjaGFpbi0+cHJldiwgcHJldiwgcmVwbGFjZW1lbnQpOw0K PiArCQlpZiAodG1wID09IHByZXYpDQo+ICsJCQlkbWFfZmVuY2VfcHV0KHRtcCk7DQo+ICsJCWVs c2UNCj4gKwkJCWRtYV9mZW5jZV9wdXQocmVwbGFjZW1lbnQpOw0KPiArCQlkbWFfZmVuY2VfcHV0 KHByZXYpOw0KPiArCX0NCj4gKw0KPiArCWRtYV9mZW5jZV9wdXQoZmVuY2UpOw0KPiArCXJldHVy biBwcmV2Ow0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfY2hhaW5fd2Fsayk7DQo+ ICsNCj4gKy8qKg0KPiArICogZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8gLSBmaW5kIGZlbmNl IGNoYWluIG5vZGUgYnkgc2Vxbm8NCj4gKyAqIEBwZmVuY2U6IHBvaW50ZXIgdG8gdGhlIGNoYWlu IG5vZGUgd2hlcmUgdG8gc3RhcnQNCj4gKyAqIEBzZXFubzogdGhlIHNlcXVlbmNlIG51bWJlciB0 byBzZWFyY2ggZm9yDQo+ICsgKg0KPiArICogQWR2YW5jZSB0aGUgZmVuY2UgcG9pbnRlciB0byB0 aGUgY2hhaW4gbm9kZSB3aGljaCB3aWxsIHNpZ25hbCB0aGlzIHNlcXVlbmNlDQo+ICsgKiBudW1i ZXIuIElmIG5vIHNlcXVlbmNlIG51bWJlciBpcyBwcm92aWRlZCB0aGVuIHRoaXMgaXMgYSBuby1v cC4NCj4gKyAqDQo+ICsgKiBSZXR1cm5zIEVJTlZBTCBpZiB0aGUgZmVuY2UgaXMgbm90IGEgY2hh aW4gbm9kZSBvciB0aGUgc2VxdWVuY2UgbnVtYmVyIGhhcw0KPiArICogbm90IHlldCBhZHZhbmNl ZCBmYXIgZW5vdWdoLg0KPiArICovDQo+ICtpbnQgZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8o c3RydWN0IGRtYV9mZW5jZSAqKnBmZW5jZSwgdWludDY0X3Qgc2Vxbm8pDQo+ICt7DQo+ICsJc3Ry dWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW47DQo+ICsNCj4gKwlpZiAoIXNlcW5vKQ0KPiArCQly ZXR1cm4gMDsNCj4gKw0KPiArCWNoYWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKCpwZmVuY2UpOw0K PiArCWlmICghY2hhaW4gfHwgY2hhaW4tPmJhc2Uuc2Vxbm8gPCBzZXFubykNCj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ICsNCj4gKwlkbWFfZmVuY2VfY2hhaW5fZm9yX2VhY2goKnBmZW5jZSwgJmNo YWluLT5iYXNlKSB7DQo+ICsJCWlmICgoKnBmZW5jZSktPmNvbnRleHQgIT0gY2hhaW4tPmJhc2Uu Y29udGV4dCB8fA0KPiArCQkgICAgdG9fZG1hX2ZlbmNlX2NoYWluKCpwZmVuY2UpLT5wcmV2X3Nl cW5vIDwgc2Vxbm8pDQo+ICsJCQlicmVhazsNCj4gKwl9DQo+ICsJZG1hX2ZlbmNlX3B1dCgmY2hh aW4tPmJhc2UpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MKGRt YV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vKTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IGNoYXIgKmRt YV9mZW5jZV9jaGFpbl9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpDQo+ ICt7DQo+ICsgICAgICAgIHJldHVybiAiZG1hX2ZlbmNlX2NoYWluIjsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGNvbnN0IGNoYXIgKmRtYV9mZW5jZV9jaGFpbl9nZXRfdGltZWxpbmVfbmFtZShzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSkNCj4gK3sNCj4gKyAgICAgICAgcmV0dXJuICJ1bmJvdW5kIjsN Cj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWluX2lycV93b3JrKHN0cnVj dCBpcnFfd29yayAqd29yaykNCj4gK3sNCj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFp bjsNCj4gKw0KPiArCWNoYWluID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqY2hhaW4pLCB3 b3JrKTsNCj4gKw0KPiArCS8qIFRyeSB0byByZWFybSB0aGUgY2FsbGJhY2sgKi8NCj4gKwlpZiAo IWRtYV9mZW5jZV9jaGFpbl9lbmFibGVfc2lnbmFsaW5nKCZjaGFpbi0+YmFzZSkpDQo+ICsJCS8q IE9rLCB3ZSBhcmUgZG9uZS4gTm8gbW9yZSB1bnNpZ25hbGVkIGZlbmNlcyBsZWZ0ICovDQo+ICsJ CWRtYV9mZW5jZV9zaWduYWwoJmNoYWluLT5iYXNlKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQgZG1hX2ZlbmNlX2NoYWluX2NiKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVu Y2VfY2IgKmNiKQ0KPiArew0KPiArCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluOw0KPiAr DQo+ICsJY2hhaW4gPSBjb250YWluZXJfb2YoY2IsIHR5cGVvZigqY2hhaW4pLCBjYik7DQo+ICsJ aXJxX3dvcmtfcXVldWUoJmNoYWluLT53b3JrKTsNCj4gKwlkbWFfZmVuY2VfcHV0KGYpOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgYm9vbCBkbWFfZmVuY2VfY2hhaW5fZW5hYmxlX3NpZ25hbGluZyhz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWlu ICpoZWFkID0gdG9fZG1hX2ZlbmNlX2NoYWluKGZlbmNlKTsNCj4gKw0KPiArCWRtYV9mZW5jZV9j aGFpbl9mb3JfZWFjaChmZW5jZSwgJmhlYWQtPmJhc2UpIHsNCj4gKwkJc3RydWN0IGRtYV9mZW5j ZV9jaGFpbiAqY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOw0KPiArCQlzdHJ1Y3Qg ZG1hX2ZlbmNlICpmID0gY2hhaW4gPyBjaGFpbi0+ZmVuY2UgOiBmZW5jZTsNCj4gKw0KPiArCQlp ZiAoIWRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZiwgJmhlYWQtPmNiLCBkbWFfZmVuY2VfY2hhaW5f Y2IpKQ0KPiArCQkJcmV0dXJuIHRydWU7DQo+ICsJfQ0KPiArCXJldHVybiBmYWxzZTsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGJvb2wgZG1hX2ZlbmNlX2NoYWluX3NpZ25hbGVkKHN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlKQ0KPiArew0KPiArCWRtYV9mZW5jZV9jaGFpbl9mb3JfZWFjaChmZW5jZSwg ZmVuY2UpIHsNCj4gKwkJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4gPSB0b19kbWFfZmVu Y2VfY2hhaW4oZmVuY2UpOw0KPiArCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmID0gY2hhaW4gPyBjaGFp bi0+ZmVuY2UgOiBmZW5jZTsNCj4gKw0KPiArCQlpZiAoIWRtYV9mZW5jZV9pc19zaWduYWxlZChm KSkgew0KPiArCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7DQo+ICsJCQlyZXR1cm4gZmFsc2U7DQo+ ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHZvaWQgZG1hX2ZlbmNlX2NoYWluX3JlbGVhc2Uoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpDQo+ ICt7DQo+ICsJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hh aW4oZmVuY2UpOw0KPiArDQo+ICsJZG1hX2ZlbmNlX3B1dChjaGFpbi0+cHJldik7DQo+ICsJZG1h X2ZlbmNlX3B1dChjaGFpbi0+ZmVuY2UpOw0KPiArCWRtYV9mZW5jZV9mcmVlKGZlbmNlKTsNCj4g K30NCj4gKw0KPiArY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgZG1hX2ZlbmNlX2NoYWluX29w cyA9IHsNCj4gKwkuZ2V0X2RyaXZlcl9uYW1lID0gZG1hX2ZlbmNlX2NoYWluX2dldF9kcml2ZXJf bmFtZSwNCj4gKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3RpbWVs aW5lX25hbWUsDQo+ICsJLmVuYWJsZV9zaWduYWxpbmcgPSBkbWFfZmVuY2VfY2hhaW5fZW5hYmxl X3NpZ25hbGluZywNCj4gKwkuc2lnbmFsZWQgPSBkbWFfZmVuY2VfY2hhaW5fc2lnbmFsZWQsDQo+ ICsJLnJlbGVhc2UgPSBkbWFfZmVuY2VfY2hhaW5fcmVsZWFzZSwNCj4gK307DQo+ICtFWFBPUlRf U1lNQk9MKGRtYV9mZW5jZV9jaGFpbl9vcHMpOw0KPiArDQo+ICsvKioNCj4gKyAqIGRtYV9mZW5j ZV9jaGFpbl9pbml0IC0gaW5pdGlhbGl6ZSBhIGZlbmNlIGNoYWluDQo+ICsgKiBAY2hhaW46IHRo ZSBjaGFpbiBub2RlIHRvIGluaXRpYWxpemUNCj4gKyAqIEBwcmV2OiB0aGUgcHJldmlvdXMgZmVu Y2UNCj4gKyAqIEBmZW5jZTogdGhlIGN1cnJlbnQgZmVuY2UNCj4gKyAqDQo+ICsgKiBJbml0aWFs aXplIGEgbmV3IGNoYWluIG5vZGUgYW5kIGVpdGhlciBzdGFydCBhIG5ldyBjaGFpbiBvciBhZGQg dGhlIG5vZGUgdG8NCj4gKyAqIHRoZSBleGlzdGluZyBjaGFpbiBvZiB0aGUgcHJldmlvdXMgZmVu Y2UuDQo+ICsgKi8NCj4gK3ZvaWQgZG1hX2ZlbmNlX2NoYWluX2luaXQoc3RydWN0IGRtYV9mZW5j ZV9jaGFpbiAqY2hhaW4sDQo+ICsJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKnByZXYsDQo+ICsJCQkg IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLA0KPiArCQkJICB1aW50NjRfdCBzZXFubykNCj4gK3sN Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpwcmV2X2NoYWluID0gdG9fZG1hX2ZlbmNlX2No YWluKHByZXYpOw0KPiArCXVpbnQ2NF90IGNvbnRleHQ7DQo+ICsNCj4gKwlzcGluX2xvY2tfaW5p dCgmY2hhaW4tPmxvY2spOw0KPiArCWNoYWluLT5wcmV2ID0gcHJldjsNCj4gKwljaGFpbi0+ZmVu Y2UgPSBmZW5jZTsNCj4gKwljaGFpbi0+cHJldl9zZXFubyA9IDA7DQo+ICsJaW5pdF9pcnFfd29y aygmY2hhaW4tPndvcmssIGRtYV9mZW5jZV9jaGFpbl9pcnFfd29yayk7DQo+ICsNCj4gKwkvKiBU cnkgdG8gcmV1c2UgdGhlIGNvbnRleHQgb2YgdGhlIHByZXZpb3VzIGNoYWluIG5vZGUuICovDQo+ ICsJaWYgKHByZXZfY2hhaW4gJiYgX19kbWFfZmVuY2VfaXNfbGF0ZXIoc2Vxbm8sIHByZXYtPnNl cW5vKSkgew0KPiArCQljb250ZXh0ID0gcHJldi0+Y29udGV4dDsNCj4gKwkJY2hhaW4tPnByZXZf c2Vxbm8gPSBwcmV2LT5zZXFubzsNCj4gKwl9IGVsc2Ugew0KPiArCQljb250ZXh0ID0gZG1hX2Zl bmNlX2NvbnRleHRfYWxsb2MoMSk7DQo+ICsJCS8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBo YXZlIGEgdmFsaWQgc2VxdWVuY2UgbnVtYmVyLiAqLw0KPiArCQlpZiAocHJldl9jaGFpbikNCj4g KwkJCXNlcW5vID0gbWF4KHByZXYtPnNlcW5vLCBzZXFubyk7DQo+ICsJfQ0KPiArDQo+ICsJZG1h X2ZlbmNlX2luaXQoJmNoYWluLT5iYXNlLCAmZG1hX2ZlbmNlX2NoYWluX29wcywNCj4gKwkJICAg ICAgICZjaGFpbi0+bG9jaywgY29udGV4dCwgc2Vxbm8pOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJP TChkbWFfZmVuY2VfY2hhaW5faW5pdCk7DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Rt YS1mZW5jZS1jaGFpbi5oIGIvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtY2hhaW4uaA0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmE1YzJlOGM2OTE1Yw0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLWZlbmNlLWNoYWluLmgNCj4g QEAgLTAsMCArMSw4MSBAQA0KPiArLyoNCj4gKyAqIGZlbmNlLWNoYWluOiBjaGFpbiBmZW5jZXMg dG9nZXRoZXIgaW4gYSB0aW1lbGluZQ0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBB ZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+ICsgKiBBdXRob3JzOg0KPiArICoJQ2hyaXN0 aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPg0KPiArICoNCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0DQo+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkNCj4gKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uDQo+ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUDQo+ICsgKiBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO VEFCSUxJVFkgb3INCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCj4gKyAqIG1vcmUgZGV0YWlscy4N Cj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0gNCj4gKyNk ZWZpbmUgX19MSU5VWF9ETUFfRkVOQ0VfQ0hBSU5fSA0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgv ZG1hLWZlbmNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaXJxX3dvcmsuaD4NCj4gKw0KPiArLyoq DQo+ICsgKiBzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluIC0gZmVuY2UgdG8gcmVwcmVzZW50IGFuIG5v ZGUgb2YgYSBmZW5jZSBjaGFpbg0KPiArICogQGJhc2U6IGZlbmNlIGJhc2UgY2xhc3MNCj4gKyAq IEBsb2NrOiBzcGlubG9jayBmb3IgZmVuY2UgaGFuZGxpbmcNCj4gKyAqIEBwcmV2OiBwcmV2aW91 cyBmZW5jZSBvZiB0aGUgY2hhaW4NCj4gKyAqIEBwcmV2X3NlcW5vOiBvcmlnaW5hbCBwcmV2aW91 cyBzZXFubyBiZWZvcmUgZ2FyYmFnZSBjb2xsZWN0aW9uDQo+ICsgKiBAZmVuY2U6IGVuY2Fwc3Vs YXRlZCBmZW5jZQ0KPiArICogQGNiOiBjYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIHNpZ25hbGluZw0K PiArICogQHdvcms6IGlycSB3b3JrIGl0ZW0gZm9yIHNpZ25hbGluZw0KPiArICovDQo+ICtzdHJ1 Y3QgZG1hX2ZlbmNlX2NoYWluIHsNCj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7DQo+ICsJc3Bp bmxvY2tfdCBsb2NrOw0KPiArCXN0cnVjdCBkbWFfZmVuY2UgKnByZXY7DQo+ICsJdTY0IHByZXZf c2Vxbm87DQo+ICsJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7DQo+ICsJc3RydWN0IGRtYV9mZW5j ZV9jYiBjYjsNCj4gKwlzdHJ1Y3QgaXJxX3dvcmsgd29yazsNCj4gK307DQo+ICsNCj4gK2V4dGVy biBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfY2hhaW5fb3BzOw0KPiArDQo+ ICsvKioNCj4gKyAqIHRvX2RtYV9mZW5jZV9jaGFpbiAtIGNhc3QgYSBmZW5jZSB0byBhIGRtYV9m ZW5jZV9jaGFpbg0KPiArICogQGZlbmNlOiBmZW5jZSB0byBjYXN0IHRvIGEgZG1hX2ZlbmNlX2Fy cmF5DQo+ICsgKg0KPiArICogUmV0dXJucyBOVUxMIGlmIHRoZSBmZW5jZSBpcyBub3QgYSBkbWFf ZmVuY2VfY2hhaW4sDQo+ICsgKiBvciB0aGUgZG1hX2ZlbmNlX2NoYWluIG90aGVyd2lzZS4NCj4g KyAqLw0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICoNCj4gK3RvX2Rt YV9mZW5jZV9jaGFpbihzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkNCj4gK3sNCj4gKwlpZiAoIWZl bmNlIHx8IGZlbmNlLT5vcHMgIT0gJmRtYV9mZW5jZV9jaGFpbl9vcHMpDQo+ICsJCXJldHVybiBO VUxMOw0KPiArDQo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihmZW5jZSwgc3RydWN0IGRtYV9mZW5j ZV9jaGFpbiwgYmFzZSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICogZG1hX2ZlbmNlX2NoYWlu X2Zvcl9lYWNoIC0gaXRlcmF0ZSBvdmVyIGFsbCBmZW5jZXMgaW4gY2hhaW4NCj4gKyAqIEBpdGVy OiBjdXJyZW50IGZlbmNlDQo+ICsgKiBAaGVhZDogc3RhcnRpbmcgcG9pbnQNCj4gKyAqDQo+ICsg KiBJdGVyYXRlIG92ZXIgYWxsIGZlbmNlcyBpbiB0aGUgY2hhaW4uIFdlIGtlZXAgYSByZWZlcmVu Y2UgdG8gdGhlIGN1cnJlbnQNCj4gKyAqIGZlbmNlIHdoaWxlIGluc2lkZSB0aGUgbG9vcCB3aGlj aCBtdXN0IGJlIGRyb3BwZWQgd2hlbiBicmVha2luZyBvdXQuDQo+ICsgKi8NCj4gKyNkZWZpbmUg ZG1hX2ZlbmNlX2NoYWluX2Zvcl9lYWNoKGl0ZXIsIGhlYWQpCVwNCj4gKwlmb3IgKGl0ZXIgPSBk bWFfZmVuY2VfZ2V0KGhlYWQpOyBpdGVyOyBcDQo+ICsJICAgICBpdGVyID0gZG1hX2ZlbmNlX2No YWluX3dhbGsoaGVhZCkpDQo+ICsNCj4gK3N0cnVjdCBkbWFfZmVuY2UgKmRtYV9mZW5jZV9jaGFp bl93YWxrKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsNCj4gK2ludCBkbWFfZmVuY2VfY2hhaW5f ZmluZF9zZXFubyhzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNlLCB1aW50NjRfdCBzZXFubyk7DQo+ ICt2b2lkIGRtYV9mZW5jZV9jaGFpbl9pbml0KHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWlu LA0KPiArCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICpwcmV2LA0KPiArCQkJICBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSwNCj4gKwkJCSAgdWludDY0X3Qgc2Vxbm8pOw0KPiArDQo+ICsjZW5kaWYgLyog X19MSU5VWF9ETUFfRkVOQ0VfQ0hBSU5fSCAqLw0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK