From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH 1/9] dma-buf: add new dma_fence_chain container v5 Date: Tue, 19 Mar 2019 12:27:26 +0000 Message-ID: <946e2cc2-eda7-7e7f-80ad-fa7161942930@intel.com> References: <20190315120959.25489-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190315120959.25489-1-david1.zhou-5C7GfCeVMHo@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: Chunming Zhou , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, jason-fQELhIk9awXprZlt/sZkLg@public.gmane.org, Christian.Koenig-5C7GfCeVMHo@public.gmane.org Cc: =?UTF-8?Q?Christian_K=c3=b6nig?= List-Id: dri-devel@lists.freedesktop.org T24gMTUvMDMvMjAxOSAxMjowOSwgQ2h1bm1pbmcgWmhvdSB3cm90ZToKPiBGcm9tOiBDaHJpc3Rp YW4gS8O2bmlnIDxja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4KPgo+IExvY2tsZXNz IGNvbnRhaW5lciBpbXBsZW1lbnRhdGlvbiBzaW1pbGFyIHRvIGEgZG1hX2ZlbmNlX2FycmF5LCBi dXQgd2l0aAo+IG9ubHkgdHdvIGVsZW1lbnRzIHBlciBub2RlIGFuZCBhdXRvbWF0aWMgZ2FyYmFn ZSBjb2xsZWN0aW9uLgo+Cj4gdjI6IHByb3Blcmx5IGRvY3VtZW50IGRtYV9mZW5jZV9jaGFpbl9m b3JfZWFjaCwgYWRkIGRtYV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vLAo+ICAgICAgZHJvcCBwcmV2 IHJlZmVyZW5jZSBkdXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uIGlmIGl0J3Mgbm90IGEgY2hhaW4g ZmVuY2UuCj4gdjM6IHVzZSBoZWFkIGFuZCBpdGVyYXRvciBmb3IgZG1hX2ZlbmNlX2NoYWluX2Zv cl9lYWNoCj4gdjQ6IGZpeCByZWZlcmVuY2UgY291bnQgaW4gZG1hX2ZlbmNlX2NoYWluX2VuYWJs ZV9zaWduYWxpbmcKPiB2NTogZml4IGl0ZXJhdGlvbiB3aGVuIHdhbGtpbmcgZWFjaCBjaGFpbiBu b2RlCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmln QGFtZC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgICAgICAgICAgfCAg IDMgKy0KPiAgIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYyB8IDI0MSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiAgIGluY2x1ZGUvbGludXgvZG1hLWZlbmNlLWNoYWlu LmggICB8ICA4MSArKysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDMyNCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEtYnVm L2RtYS1mZW5jZS1jaGFpbi5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9k bWEtZmVuY2UtY2hhaW4uaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmls ZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQo+IGluZGV4IDA5MTNhNmNjYWI1YS4uMWYwMDZl MDgzZWI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQo+ICsrKyBiL2Ry aXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQo+IEBAIC0xLDQgKzEsNSBAQAo+IC1vYmoteSA6PSBkbWEt YnVmLm8gZG1hLWZlbmNlLm8gZG1hLWZlbmNlLWFycmF5Lm8gcmVzZXJ2YXRpb24ubyBzZXFuby1m ZW5jZS5vCj4gK29iai15IDo9IGRtYS1idWYubyBkbWEtZmVuY2UubyBkbWEtZmVuY2UtYXJyYXku byBkbWEtZmVuY2UtY2hhaW4ubyBcCj4gKwkgcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCj4g ICBvYmotJChDT05GSUdfU1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KPiAgIG9iai0kKENPTkZJ R19TV19TWU5DKQkJKz0gc3dfc3luYy5vIHN5bmNfZGVidWcubwo+ICAgb2JqLSQoQ09ORklHX1VE TUFCVUYpCQkrPSB1ZG1hYnVmLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1m ZW5jZS1jaGFpbi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBjNWUzYzkwMmZhMAo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLWNoYWluLmMKPiBAQCAt MCwwICsxLDI0MSBAQAo+ICsvKgo+ICsgKiBmZW5jZS1jaGFpbjogY2hhaW4gZmVuY2VzIHRvZ2V0 aGVyIGluIGEgdGltZWxpbmUKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IEFkdmFuY2Vk IE1pY3JvIERldmljZXMsIEluYy4KPiArICogQXV0aG9yczoKPiArICoJQ2hyaXN0aWFuIEvDtm5p ZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgo+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUgZGV0YWlscy4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8bGludXgvZG1hLWZlbmNlLWNoYWluLmg+Cj4gKwo+ICtzdGF0aWMgYm9vbCBkbWFfZmVu Y2VfY2hhaW5fZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cj4gKwo+ ICsvKioKPiArICogZG1hX2ZlbmNlX2NoYWluX2dldF9wcmV2IC0gdXNlIFJDVSB0byBnZXQgYSBy ZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIGZlbmNlCj4gKyAqIEBjaGFpbjogY2hhaW4gbm9kZSB0 byBnZXQgdGhlIHByZXZpb3VzIG5vZGUgZnJvbQo+ICsgKgo+ICsgKiBVc2UgZG1hX2ZlbmNlX2dl dF9yY3Vfc2FmZSB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIGZlbmNlIG9mIHRo ZQo+ICsgKiBjaGFpbiBub2RlLgo+ICsgKi8KPiArc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKmRt YV9mZW5jZV9jaGFpbl9nZXRfcHJldihzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbikKPiAr ewo+ICsJc3RydWN0IGRtYV9mZW5jZSAqcHJldjsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4g KwlwcmV2ID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmY2hhaW4tPnByZXYpOwo+ICsJcmN1X3Jl YWRfdW5sb2NrKCk7Cj4gKwlyZXR1cm4gcHJldjsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRtYV9m ZW5jZV9jaGFpbl93YWxrIC0gY2hhaW4gd2Fsa2luZyBmdW5jdGlvbgo+ICsgKiBAZmVuY2U6IGN1 cnJlbnQgY2hhaW4gbm9kZQo+ICsgKgo+ICsgKiBXYWxrIHRoZSBjaGFpbiB0byB0aGUgbmV4dCBu b2RlLiBSZXR1cm5zIHRoZSBuZXh0IGZlbmNlIG9yIE5VTEwgaWYgd2UgYXJlIGF0Cj4gKyAqIHRo ZSBlbmQgb2YgdGhlIGNoYWluLiBHYXJiYWdlIGNvbGxlY3RzIGNoYWluIG5vZGVzIHdoaWNoIGFy ZSBhbHJlYWR5Cj4gKyAqIHNpZ25hbGVkLgo+ICsgKi8KPiArc3RydWN0IGRtYV9mZW5jZSAqZG1h X2ZlbmNlX2NoYWluX3dhbGsoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArCXN0cnVj dCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluLCAqcHJldl9jaGFpbjsKPiArCXN0cnVjdCBkbWFfZmVu Y2UgKnByZXYsICpyZXBsYWNlbWVudCwgKnRtcDsKPiArCj4gKwljaGFpbiA9IHRvX2RtYV9mZW5j ZV9jaGFpbihmZW5jZSk7Cj4gKwlpZiAoIWNoYWluKSB7Cj4gKwkJZG1hX2ZlbmNlX3B1dChmZW5j ZSk7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gKwo+ICsJd2hpbGUgKChwcmV2ID0gZG1hX2Zl bmNlX2NoYWluX2dldF9wcmV2KGNoYWluKSkpIHsKPiArCj4gKwkJcHJldl9jaGFpbiA9IHRvX2Rt YV9mZW5jZV9jaGFpbihwcmV2KTsKPiArCQlpZiAocHJldl9jaGFpbikgewo+ICsJCQlpZiAoIWRt YV9mZW5jZV9pc19zaWduYWxlZChwcmV2X2NoYWluLT5mZW5jZSkpCj4gKwkJCQlicmVhazsKPiAr Cj4gKwkJCXJlcGxhY2VtZW50ID0gZG1hX2ZlbmNlX2NoYWluX2dldF9wcmV2KHByZXZfY2hhaW4p Owo+ICsJCX0gZWxzZSB7Cj4gKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXYpKQo+ ICsJCQkJYnJlYWs7Cj4gKwo+ICsJCQlyZXBsYWNlbWVudCA9IE5VTEw7Cj4gKwkJfQo+ICsKPiAr CQl0bXAgPSBjbXB4Y2hnKCZjaGFpbi0+cHJldiwgcHJldiwgcmVwbGFjZW1lbnQpOwo+ICsJCWlm ICh0bXAgPT0gcHJldikKPiArCQkJZG1hX2ZlbmNlX3B1dCh0bXApOwo+ICsJCWVsc2UKPiArCQkJ ZG1hX2ZlbmNlX3B1dChyZXBsYWNlbWVudCk7Cj4gKwkJZG1hX2ZlbmNlX3B1dChwcmV2KTsKPiAr CX0KPiArCj4gKwlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiArCXJldHVybiBwcmV2Owo+ICt9Cj4g K0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX3dhbGspOwo+ICsKPiArLyoqCj4gKyAqIGRt YV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vIC0gZmluZCBmZW5jZSBjaGFpbiBub2RlIGJ5IHNlcW5v Cj4gKyAqIEBwZmVuY2U6IHBvaW50ZXIgdG8gdGhlIGNoYWluIG5vZGUgd2hlcmUgdG8gc3RhcnQK PiArICogQHNlcW5vOiB0aGUgc2VxdWVuY2UgbnVtYmVyIHRvIHNlYXJjaCBmb3IKPiArICoKPiAr ICogQWR2YW5jZSB0aGUgZmVuY2UgcG9pbnRlciB0byB0aGUgY2hhaW4gbm9kZSB3aGljaCB3aWxs IHNpZ25hbCB0aGlzIHNlcXVlbmNlCj4gKyAqIG51bWJlci4gSWYgbm8gc2VxdWVuY2UgbnVtYmVy IGlzIHByb3ZpZGVkIHRoZW4gdGhpcyBpcyBhIG5vLW9wLgo+ICsgKgo+ICsgKiBSZXR1cm5zIEVJ TlZBTCBpZiB0aGUgZmVuY2UgaXMgbm90IGEgY2hhaW4gbm9kZSBvciB0aGUgc2VxdWVuY2UgbnVt YmVyIGhhcwo+ICsgKiBub3QgeWV0IGFkdmFuY2VkIGZhciBlbm91Z2guCj4gKyAqLwo+ICtpbnQg ZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8oc3RydWN0IGRtYV9mZW5jZSAqKnBmZW5jZSwgdWlu dDY0X3Qgc2Vxbm8pCj4gK3sKPiArCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluOwo+ICsK PiArCWlmICghc2Vxbm8pCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJY2hhaW4gPSB0b19kbWFfZmVu Y2VfY2hhaW4oKnBmZW5jZSk7Cj4gKwlpZiAoIWNoYWluIHx8IGNoYWluLT5iYXNlLnNlcW5vIDwg c2Vxbm8pCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZG1hX2ZlbmNlX2NoYWluX2Zvcl9l YWNoKCpwZmVuY2UsICZjaGFpbi0+YmFzZSkgewo+ICsJCWlmICgoKnBmZW5jZSktPmNvbnRleHQg IT0gY2hhaW4tPmJhc2UuY29udGV4dCB8fAo+ICsJCSAgICB0b19kbWFfZmVuY2VfY2hhaW4oKnBm ZW5jZSktPnByZXZfc2Vxbm8gPCBzZXFubykKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwlkbWFfZmVu Y2VfcHV0KCZjaGFpbi0+YmFzZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTChkbWFfZmVuY2VfY2hhaW5fZmluZF9zZXFubyk7Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hh ciAqZG1hX2ZlbmNlX2NoYWluX2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSkKPiArewo+ICsgICAgICAgIHJldHVybiAiZG1hX2ZlbmNlX2NoYWluIjsKPiArfQo+ICsKPiAr c3RhdGljIGNvbnN0IGNoYXIgKmRtYV9mZW5jZV9jaGFpbl9nZXRfdGltZWxpbmVfbmFtZShzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsgICAgICAgIHJldHVybiAidW5ib3VuZCI7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGRtYV9mZW5jZV9jaGFpbl9pcnFfd29yayhzdHJ1Y3QgaXJx X3dvcmsgKndvcmspCj4gK3sKPiArCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluOwo+ICsK PiArCWNoYWluID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqY2hhaW4pLCB3b3JrKTsKPiAr Cj4gKwkvKiBUcnkgdG8gcmVhcm0gdGhlIGNhbGxiYWNrICovCj4gKwlpZiAoIWRtYV9mZW5jZV9j aGFpbl9lbmFibGVfc2lnbmFsaW5nKCZjaGFpbi0+YmFzZSkpCj4gKwkJLyogT2ssIHdlIGFyZSBk b25lLiBObyBtb3JlIHVuc2lnbmFsZWQgZmVuY2VzIGxlZnQgKi8KPiArCQlkbWFfZmVuY2Vfc2ln bmFsKCZjaGFpbi0+YmFzZSk7Cj4gKwlkbWFfZmVuY2VfcHV0KCZjaGFpbi0+YmFzZSk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGRtYV9mZW5jZV9jaGFpbl9jYihzdHJ1Y3QgZG1hX2ZlbmNlICpm LCBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKPiArewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jaGFp biAqY2hhaW47Cj4gKwo+ICsJY2hhaW4gPSBjb250YWluZXJfb2YoY2IsIHR5cGVvZigqY2hhaW4p LCBjYik7Cj4gKwlpcnFfd29ya19xdWV1ZSgmY2hhaW4tPndvcmspOwo+ICsJZG1hX2ZlbmNlX3B1 dChmKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgZG1hX2ZlbmNlX2NoYWluX2VuYWJsZV9zaWdu YWxpbmcoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArCXN0cnVjdCBkbWFfZmVuY2Vf Y2hhaW4gKmhlYWQgPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOwo+ICsKPiArCWRtYV9mZW5j ZV9nZXQoJmhlYWQtPmJhc2UpOwo+ICsJZG1hX2ZlbmNlX2NoYWluX2Zvcl9lYWNoKGZlbmNlLCAm aGVhZC0+YmFzZSkgewo+ICsJCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluID0gdG9fZG1h X2ZlbmNlX2NoYWluKGZlbmNlKTsKPiArCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmID0gY2hhaW4gPyBj aGFpbi0+ZmVuY2UgOiBmZW5jZTsKPiArCj4gKwkJZG1hX2ZlbmNlX2dldChmKTsKPiArCQlpZiAo IWRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZiwgJmhlYWQtPmNiLCBkbWFfZmVuY2VfY2hhaW5fY2Ip KSB7Cj4gKwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCQl9 Cj4gKwkJZG1hX2ZlbmNlX3B1dChmKTsKPiArCX0KPiArCWRtYV9mZW5jZV9wdXQoJmhlYWQtPmJh c2UpOwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBkbWFfZmVuY2Vf Y2hhaW5fc2lnbmFsZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArCWRtYV9mZW5j ZV9jaGFpbl9mb3JfZWFjaChmZW5jZSwgZmVuY2UpIHsKPiArCQlzdHJ1Y3QgZG1hX2ZlbmNlX2No YWluICpjaGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7Cj4gKwkJc3RydWN0IGRtYV9m ZW5jZSAqZiA9IGNoYWluID8gY2hhaW4tPmZlbmNlIDogZmVuY2U7Cj4gKwo+ICsJCWlmICghZG1h X2ZlbmNlX2lzX3NpZ25hbGVkKGYpKSB7Cj4gKwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJ CQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBkbWFfZmVuY2VfY2hhaW5fcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZSkKPiArewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4gPSB0b19kbWFf ZmVuY2VfY2hhaW4oZmVuY2UpOwo+ICsKPiArCWRtYV9mZW5jZV9wdXQoY2hhaW4tPnByZXYpOwo+ ICsJZG1hX2ZlbmNlX3B1dChjaGFpbi0+ZmVuY2UpOwo+ICsJZG1hX2ZlbmNlX2ZyZWUoZmVuY2Up Owo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfY2hhaW5f b3BzID0gewo+ICsJLmdldF9kcml2ZXJfbmFtZSA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfZHJpdmVy X25hbWUsCj4gKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3RpbWVs aW5lX25hbWUsCj4gKwkuZW5hYmxlX3NpZ25hbGluZyA9IGRtYV9mZW5jZV9jaGFpbl9lbmFibGVf c2lnbmFsaW5nLAo+ICsJLnNpZ25hbGVkID0gZG1hX2ZlbmNlX2NoYWluX3NpZ25hbGVkLAo+ICsJ LnJlbGVhc2UgPSBkbWFfZmVuY2VfY2hhaW5fcmVsZWFzZSwKPiArfTsKPiArRVhQT1JUX1NZTUJP TChkbWFfZmVuY2VfY2hhaW5fb3BzKTsKPiArCj4gKy8qKgo+ICsgKiBkbWFfZmVuY2VfY2hhaW5f aW5pdCAtIGluaXRpYWxpemUgYSBmZW5jZSBjaGFpbgo+ICsgKiBAY2hhaW46IHRoZSBjaGFpbiBu b2RlIHRvIGluaXRpYWxpemUKPiArICogQHByZXY6IHRoZSBwcmV2aW91cyBmZW5jZQo+ICsgKiBA ZmVuY2U6IHRoZSBjdXJyZW50IGZlbmNlCj4gKyAqCj4gKyAqIEluaXRpYWxpemUgYSBuZXcgY2hh aW4gbm9kZSBhbmQgZWl0aGVyIHN0YXJ0IGEgbmV3IGNoYWluIG9yIGFkZCB0aGUgbm9kZSB0bwo+ ICsgKiB0aGUgZXhpc3RpbmcgY2hhaW4gb2YgdGhlIHByZXZpb3VzIGZlbmNlLgo+ICsgKi8KPiAr dm9pZCBkbWFfZmVuY2VfY2hhaW5faW5pdChzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiwK PiArCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICpwcmV2LAo+ICsJCQkgIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlLAo+ICsJCQkgIHVpbnQ2NF90IHNlcW5vKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNl X2NoYWluICpwcmV2X2NoYWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKHByZXYpOwo+ICsJdWludDY0 X3QgY29udGV4dDsKPiArCj4gKwlzcGluX2xvY2tfaW5pdCgmY2hhaW4tPmxvY2spOwo+ICsJY2hh aW4tPnByZXYgPSBwcmV2Owo+ICsJY2hhaW4tPmZlbmNlID0gZmVuY2U7Cj4gKwljaGFpbi0+cHJl dl9zZXFubyA9IDA7Cj4gKwlpbml0X2lycV93b3JrKCZjaGFpbi0+d29yaywgZG1hX2ZlbmNlX2No YWluX2lycV93b3JrKTsKPiArCj4gKwkvKiBUcnkgdG8gcmV1c2UgdGhlIGNvbnRleHQgb2YgdGhl IHByZXZpb3VzIGNoYWluIG5vZGUuICovCj4gKwlpZiAocHJldl9jaGFpbiAmJiBfX2RtYV9mZW5j ZV9pc19sYXRlcihzZXFubywgcHJldi0+c2Vxbm8pKSB7Cj4gKwkJY29udGV4dCA9IHByZXYtPmNv bnRleHQ7Cj4gKwkJY2hhaW4tPnByZXZfc2Vxbm8gPSBwcmV2LT5zZXFubzsKPiArCX0gZWxzZSB7 Cj4gKwkJY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+ICsJCS8qIE1ha2Ug c3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2VxdWVuY2UgbnVtYmVyLiAqLwo+ICsJ CWlmIChwcmV2X2NoYWluKQo+ICsJCQlzZXFubyA9IG1heChwcmV2LT5zZXFubywgc2Vxbm8pOwo+ ICsJfQo+ICsKPiArCWRtYV9mZW5jZV9pbml0KCZjaGFpbi0+YmFzZSwgJmRtYV9mZW5jZV9jaGFp bl9vcHMsCj4gKwkJICAgICAgICZjaGFpbi0+bG9jaywgY29udGV4dCwgc2Vxbm8pOwo+ICt9Cj4g K0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX2luaXQpOwo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2RtYS1mZW5jZS1jaGFpbi5oIGIvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtY2hh aW4uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wOWIwMzhk M2Y1ZWYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtY2hh aW4uaAo+IEBAIC0wLDAgKzEsODEgQEAKPiArLyoKPiArICogZmVuY2UtY2hhaW46IGNoYWluIGZl bmNlcyB0b2dldGhlciBpbiBhIHRpbWVsaW5lCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAx OCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCj4gKyAqIEF1dGhvcnM6Cj4gKyAqCUNocmlz dGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAo+ICsgKiBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgo+ICsgKiBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ ICsKPiArI2lmbmRlZiBfX0xJTlVYX0RNQV9GRU5DRV9DSEFJTl9ICj4gKyNkZWZpbmUgX19MSU5V WF9ETUFfRkVOQ0VfQ0hBSU5fSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvaXJxX3dvcmsuaD4KPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZG1h X2ZlbmNlX2NoYWluIC0gZmVuY2UgdG8gcmVwcmVzZW50IGFuIG5vZGUgb2YgYSBmZW5jZSBjaGFp bgo+ICsgKiBAYmFzZTogZmVuY2UgYmFzZSBjbGFzcwo+ICsgKiBAbG9jazogc3BpbmxvY2sgZm9y IGZlbmNlIGhhbmRsaW5nCj4gKyAqIEBwcmV2OiBwcmV2aW91cyBmZW5jZSBvZiB0aGUgY2hhaW4K PiArICogQHByZXZfc2Vxbm86IG9yaWdpbmFsIHByZXZpb3VzIHNlcW5vIGJlZm9yZSBnYXJiYWdl IGNvbGxlY3Rpb24KPiArICogQGZlbmNlOiBlbmNhcHN1bGF0ZWQgZmVuY2UKPiArICogQGNiOiBj YWxsYmFjayBzdHJ1Y3R1cmUgZm9yIHNpZ25hbGluZwo+ICsgKiBAd29yazogaXJxIHdvcmsgaXRl bSBmb3Igc2lnbmFsaW5nCj4gKyAqLwo+ICtzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluIHsKPiArCXN0 cnVjdCBkbWFfZmVuY2UgYmFzZTsKPiArCXNwaW5sb2NrX3QgbG9jazsKPiArCXN0cnVjdCBkbWFf ZmVuY2UgKnByZXY7CgoKTm90IGFuIGV4cGVydCBvbiB0aGUgcmN1IHRoaW5nLCBidXQgZHJtX3N5 bmNvYmogaGFzIGEgX19yY3Ugb24gaXRzIGZlbmNlIApmaWVsZC4KClNob3VsZCB0aGlzIGJlPyA6 CgoKc3RydWN0IGRtYV9mZW5jZSBfX3JjdSAqcHJldjsKCgo+ICsJdTY0IHByZXZfc2Vxbm87Cj4g KwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiArCXN0cnVjdCBkbWFfZmVuY2VfY2IgY2I7Cj4g KwlzdHJ1Y3QgaXJxX3dvcmsgd29yazsKPiArfTsKPiArCj4gK2V4dGVybiBjb25zdCBzdHJ1Y3Qg ZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfY2hhaW5fb3BzOwo+ICsKPiArLyoqCj4gKyAqIHRvX2Rt YV9mZW5jZV9jaGFpbiAtIGNhc3QgYSBmZW5jZSB0byBhIGRtYV9mZW5jZV9jaGFpbgo+ICsgKiBA ZmVuY2U6IGZlbmNlIHRvIGNhc3QgdG8gYSBkbWFfZmVuY2VfYXJyYXkKPiArICoKPiArICogUmV0 dXJucyBOVUxMIGlmIHRoZSBmZW5jZSBpcyBub3QgYSBkbWFfZmVuY2VfY2hhaW4sCj4gKyAqIG9y IHRoZSBkbWFfZmVuY2VfY2hhaW4gb3RoZXJ3aXNlLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBz dHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICoKPiArdG9fZG1hX2ZlbmNlX2NoYWluKHN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlpZiAoIWZlbmNlIHx8IGZlbmNlLT5vcHMgIT0gJmRtYV9m ZW5jZV9jaGFpbl9vcHMpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJcmV0dXJuIGNvbnRhaW5l cl9vZihmZW5jZSwgc3RydWN0IGRtYV9mZW5jZV9jaGFpbiwgYmFzZSk7Cj4gK30KPiArCj4gKy8q Kgo+ICsgKiBkbWFfZmVuY2VfY2hhaW5fZm9yX2VhY2ggLSBpdGVyYXRlIG92ZXIgYWxsIGZlbmNl cyBpbiBjaGFpbgo+ICsgKiBAaXRlcjogY3VycmVudCBmZW5jZQo+ICsgKiBAaGVhZDogc3RhcnRp bmcgcG9pbnQKPiArICoKPiArICogSXRlcmF0ZSBvdmVyIGFsbCBmZW5jZXMgaW4gdGhlIGNoYWlu LiBXZSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50Cj4gKyAqIGZlbmNlIHdoaWxlIGlu c2lkZSB0aGUgbG9vcCB3aGljaCBtdXN0IGJlIGRyb3BwZWQgd2hlbiBicmVha2luZyBvdXQuCj4g KyAqLwo+ICsjZGVmaW5lIGRtYV9mZW5jZV9jaGFpbl9mb3JfZWFjaChpdGVyLCBoZWFkKQlcCj4g Kwlmb3IgKGl0ZXIgPSBkbWFfZmVuY2VfZ2V0KGhlYWQpOyBpdGVyOyBcCj4gKwkgICAgIGl0ZXIg PSBkbWFfZmVuY2VfY2hhaW5fd2FsayhpdGVyKSkKPiArCj4gK3N0cnVjdCBkbWFfZmVuY2UgKmRt YV9mZW5jZV9jaGFpbl93YWxrKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKPiAraW50IGRtYV9m ZW5jZV9jaGFpbl9maW5kX3NlcW5vKHN0cnVjdCBkbWFfZmVuY2UgKipwZmVuY2UsIHVpbnQ2NF90 IHNlcW5vKTsKPiArdm9pZCBkbWFfZmVuY2VfY2hhaW5faW5pdChzdHJ1Y3QgZG1hX2ZlbmNlX2No YWluICpjaGFpbiwKPiArCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICpwcmV2LAo+ICsJCQkgIHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlLAo+ICsJCQkgIHVpbnQ2NF90IHNlcW5vKTsKPiArCj4gKyNlbmRp ZiAvKiBfX0xJTlVYX0RNQV9GRU5DRV9DSEFJTl9IICovCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbWQtZ2Z4