From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin via dri-devel Subject: Re: [PATCH 02/11] dma-buf: add new dma_fence_chain container v4 Date: Fri, 15 Feb 2019 14:23:39 +0000 Message-ID: <6c2adaf5-6871-20be-a26d-182f8ca8ab8a@intel.com> References: <20181207095601.2058-1-david1.zhou@amd.com> <20181207095601.2058-2-david1.zhou@amd.com> Reply-To: Lionel Landwerlin Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181207095601.2058-2-david1.zhou@amd.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chunming Zhou , Christian.Koenig@amd.com, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: =?UTF-8?Q?Christian_K=c3=b6nig?= List-Id: amd-gfx.lists.freedesktop.org SGkgQ2hyaXN0aWFuLCBEYXZpZCwKCkZvciB0aW1lbGluZSBzZW1hcGhvcmUgd2UgbmVlZCBwb2lu dHMgdG8gc2lnbmFsZWQgaW4gb3JkZXIuCkknbSBzdHJ1Z2dsaW5nIHRvIHVuZGVyc3RhbmQgaG93 IHRoaXMgZmVuY2UtY2hhaW4gaW1wbGVtZW50YXRpb24gCnByZXNlcnZlcyBvcmRlcmluZyBvZiB0 aGUgc2Vxbm9zLgoKT25lIG9mIHRoZSBzY2VuYXJpbyBJIGNhbiBzZWUgYW4gaXNzdWUgaGFwcGVu aW5nIGlzIHdoZW4geW91IGhhdmUgYSAKdGltZWxpbmUgd2l0aCBwb2ludHMgMSAmIDIgYW5kIHVz ZXJzcGFjZSBzdWJtaXRzIGZvciAyIGRpZmZlcmVudCBlbmdpbmVzIDoKIMKgwqDCoCAtIGZpcnN0 IHdpdGggbGV0J3Mgc2F5IGEgYmxpdHRlciBzdHlsZSBlbmdpbmUgb24gcG9pbnQgMgogwqDCoMKg IC0gdGhlbiBhIDNkIHN0eWxlIGVuZ2luZSBvbiBwb2ludCAxCgpBbm90aGVyIHNjZW5hcmlvIHdv dWxkIGJlIHNpZ25hbGluZyBhIHRpbWVsaW5lIHdpdGggcG9pbnRzIDEgJiAyIHdpdGggCnRob3Nl IHBvaW50cyBpbiByZXZlcnNlIG9yZGVyIGluIHRoZSBzdWJtaXNzaW9uIGFycmF5LgoKLUxpb25l bAoKT24gMDcvMTIvMjAxOCAwOTo1NSwgQ2h1bm1pbmcgWmhvdSB3cm90ZToKPiBGcm9tOiBDaHJp c3RpYW4gS8O2bmlnIDxja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4KPgo+IExvY2ts ZXNzIGNvbnRhaW5lciBpbXBsZW1lbnRhdGlvbiBzaW1pbGFyIHRvIGEgZG1hX2ZlbmNlX2FycmF5 LCBidXQgd2l0aAo+IG9ubHkgdHdvIGVsZW1lbnRzIHBlciBub2RlIGFuZCBhdXRvbWF0aWMgZ2Fy YmFnZSBjb2xsZWN0aW9uLgo+Cj4gdjI6IHByb3Blcmx5IGRvY3VtZW50IGRtYV9mZW5jZV9jaGFp bl9mb3JfZWFjaCwgYWRkIGRtYV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vLAo+ICAgICAgZHJvcCBw cmV2IHJlZmVyZW5jZSBkdXJpbmcgZ2FyYmFnZSBjb2xsZWN0aW9uIGlmIGl0J3Mgbm90IGEgY2hh aW4gZmVuY2UuCj4gdjM6IHVzZSBoZWFkIGFuZCBpdGVyYXRvciBmb3IgZG1hX2ZlbmNlX2NoYWlu X2Zvcl9lYWNoCj4gdjQ6IGZpeCByZWZlcmVuY2UgY291bnQgaW4gZG1hX2ZlbmNlX2NoYWluX2Vu YWJsZV9zaWduYWxpbmcKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlz dGlhbi5rb2VuaWdAYW1kLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSAg ICAgICAgICB8ICAgMyArLQo+ICAgZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5jIHwg MjQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgaW5jbHVkZS9saW51eC9kbWEt ZmVuY2UtY2hhaW4uaCAgIHwgIDgxICsrKysrKysrKysKPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzI0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2RtYS1idWYvZG1hLWZlbmNlLWNoYWluLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs dWRlL2xpbnV4L2RtYS1mZW5jZS1jaGFpbi5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEt YnVmL01ha2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCj4gaW5kZXggMDkxM2E2Y2Nh YjVhLi4xZjAwNmUwODNlYjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxl Cj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCj4gQEAgLTEsNCArMSw1IEBACj4gLW9i ai15IDo9IGRtYS1idWYubyBkbWEtZmVuY2UubyBkbWEtZmVuY2UtYXJyYXkubyByZXNlcnZhdGlv bi5vIHNlcW5vLWZlbmNlLm8KPiArb2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5vIGRtYS1m ZW5jZS1hcnJheS5vIGRtYS1mZW5jZS1jaGFpbi5vIFwKPiArCSByZXNlcnZhdGlvbi5vIHNlcW5v LWZlbmNlLm8KPiAgIG9iai0kKENPTkZJR19TWU5DX0ZJTEUpCQkrPSBzeW5jX2ZpbGUubwo+ICAg b2JqLSQoQ09ORklHX1NXX1NZTkMpCQkrPSBzd19zeW5jLm8gc3luY19kZWJ1Zy5vCj4gICBvYmot JChDT05GSUdfVURNQUJVRikJCSs9IHVkbWFidWYubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Rt YS1idWYvZG1hLWZlbmNlLWNoYWluLmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLWNoYWlu LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMGM1ZTNjOTAy ZmEwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hh aW4uYwo+IEBAIC0wLDAgKzEsMjQxIEBACj4gKy8qCj4gKyAqIGZlbmNlLWNoYWluOiBjaGFpbiBm ZW5jZXMgdG9nZXRoZXIgaW4gYSB0aW1lbGluZQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTggQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+ICsgKiBBdXRob3JzOgo+ICsgKglDaHJp c3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIG9yCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKi8K PiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UtY2hhaW4uaD4KPiArCj4gK3N0YXRpYyBi b29sIGRtYV9mZW5jZV9jaGFpbl9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZl bmNlKTsKPiArCj4gKy8qKgo+ICsgKiBkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYgLSB1c2UgUkNV IHRvIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgZmVuY2UKPiArICogQGNoYWluOiBj aGFpbiBub2RlIHRvIGdldCB0aGUgcHJldmlvdXMgbm9kZSBmcm9tCj4gKyAqCj4gKyAqIFVzZSBk bWFfZmVuY2VfZ2V0X3JjdV9zYWZlIHRvIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMg ZmVuY2Ugb2YgdGhlCj4gKyAqIGNoYWluIG5vZGUuCj4gKyAqLwo+ICtzdGF0aWMgc3RydWN0IGRt YV9mZW5jZSAqZG1hX2ZlbmNlX2NoYWluX2dldF9wcmV2KHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4g KmNoYWluKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlICpwcmV2Owo+ICsKPiArCXJjdV9yZWFk X2xvY2soKTsKPiArCXByZXYgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZjaGFpbi0+cHJldik7 Cj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiArCXJldHVybiBwcmV2Owo+ICt9Cj4gKwo+ICsvKioK PiArICogZG1hX2ZlbmNlX2NoYWluX3dhbGsgLSBjaGFpbiB3YWxraW5nIGZ1bmN0aW9uCj4gKyAq IEBmZW5jZTogY3VycmVudCBjaGFpbiBub2RlCj4gKyAqCj4gKyAqIFdhbGsgdGhlIGNoYWluIHRv IHRoZSBuZXh0IG5vZGUuIFJldHVybnMgdGhlIG5leHQgZmVuY2Ugb3IgTlVMTCBpZiB3ZSBhcmUg YXQKPiArICogdGhlIGVuZCBvZiB0aGUgY2hhaW4uIEdhcmJhZ2UgY29sbGVjdHMgY2hhaW4gbm9k ZXMgd2hpY2ggYXJlIGFscmVhZHkKPiArICogc2lnbmFsZWQuCj4gKyAqLwo+ICtzdHJ1Y3QgZG1h X2ZlbmNlICpkbWFfZmVuY2VfY2hhaW5fd2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiAr ewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4sICpwcmV2X2NoYWluOwo+ICsJc3Ry dWN0IGRtYV9mZW5jZSAqcHJldiwgKnJlcGxhY2VtZW50LCAqdG1wOwo+ICsKPiArCWNoYWluID0g dG9fZG1hX2ZlbmNlX2NoYWluKGZlbmNlKTsKPiArCWlmICghY2hhaW4pIHsKPiArCQlkbWFfZmVu Y2VfcHV0KGZlbmNlKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwl3aGlsZSAoKHBy ZXYgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYoY2hhaW4pKSkgewo+ICsKPiArCQlwcmV2X2No YWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKHByZXYpOwo+ICsJCWlmIChwcmV2X2NoYWluKSB7Cj4g KwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXZfY2hhaW4tPmZlbmNlKSkKPiArCQkJ CWJyZWFrOwo+ICsKPiArCQkJcmVwbGFjZW1lbnQgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYo cHJldl9jaGFpbik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFs ZWQocHJldikpCj4gKwkJCQlicmVhazsKPiArCj4gKwkJCXJlcGxhY2VtZW50ID0gTlVMTDsKPiAr CQl9Cj4gKwo+ICsJCXRtcCA9IGNtcHhjaGcoJmNoYWluLT5wcmV2LCBwcmV2LCByZXBsYWNlbWVu dCk7Cj4gKwkJaWYgKHRtcCA9PSBwcmV2KQo+ICsJCQlkbWFfZmVuY2VfcHV0KHRtcCk7Cj4gKwkJ ZWxzZQo+ICsJCQlkbWFfZmVuY2VfcHV0KHJlcGxhY2VtZW50KTsKPiArCQlkbWFfZmVuY2VfcHV0 KHByZXYpOwo+ICsJfQo+ICsKPiArCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJcmV0dXJuIHBy ZXY7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfY2hhaW5fd2Fsayk7Cj4gKwo+ICsv KioKPiArICogZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8gLSBmaW5kIGZlbmNlIGNoYWluIG5v ZGUgYnkgc2Vxbm8KPiArICogQHBmZW5jZTogcG9pbnRlciB0byB0aGUgY2hhaW4gbm9kZSB3aGVy ZSB0byBzdGFydAo+ICsgKiBAc2Vxbm86IHRoZSBzZXF1ZW5jZSBudW1iZXIgdG8gc2VhcmNoIGZv cgo+ICsgKgo+ICsgKiBBZHZhbmNlIHRoZSBmZW5jZSBwb2ludGVyIHRvIHRoZSBjaGFpbiBub2Rl IHdoaWNoIHdpbGwgc2lnbmFsIHRoaXMgc2VxdWVuY2UKPiArICogbnVtYmVyLiBJZiBubyBzZXF1 ZW5jZSBudW1iZXIgaXMgcHJvdmlkZWQgdGhlbiB0aGlzIGlzIGEgbm8tb3AuCj4gKyAqCj4gKyAq IFJldHVybnMgRUlOVkFMIGlmIHRoZSBmZW5jZSBpcyBub3QgYSBjaGFpbiBub2RlIG9yIHRoZSBz ZXF1ZW5jZSBudW1iZXIgaGFzCj4gKyAqIG5vdCB5ZXQgYWR2YW5jZWQgZmFyIGVub3VnaC4KPiAr ICovCj4gK2ludCBkbWFfZmVuY2VfY2hhaW5fZmluZF9zZXFubyhzdHJ1Y3QgZG1hX2ZlbmNlICoq cGZlbmNlLCB1aW50NjRfdCBzZXFubykKPiArewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAq Y2hhaW47Cj4gKwo+ICsJaWYgKCFzZXFubykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwljaGFpbiA9 IHRvX2RtYV9mZW5jZV9jaGFpbigqcGZlbmNlKTsKPiArCWlmICghY2hhaW4gfHwgY2hhaW4tPmJh c2Uuc2Vxbm8gPCBzZXFubykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlkbWFfZmVuY2Vf Y2hhaW5fZm9yX2VhY2goKnBmZW5jZSwgJmNoYWluLT5iYXNlKSB7Cj4gKwkJaWYgKCgqcGZlbmNl KS0+Y29udGV4dCAhPSBjaGFpbi0+YmFzZS5jb250ZXh0IHx8Cj4gKwkJICAgIHRvX2RtYV9mZW5j ZV9jaGFpbigqcGZlbmNlKS0+cHJldl9zZXFubyA8IHNlcW5vKQo+ICsJCQlicmVhazsKPiArCX0K PiArCWRtYV9mZW5jZV9wdXQoJmNoYWluLT5iYXNlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICtFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vKTsKPiArCj4gK3N0YXRp YyBjb25zdCBjaGFyICpkbWFfZmVuY2VfY2hhaW5fZ2V0X2RyaXZlcl9uYW1lKHN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKyAgICAgICAgcmV0dXJuICJkbWFfZmVuY2VfY2hhaW4iOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqZG1hX2ZlbmNlX2NoYWluX2dldF90aW1lbGlu ZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKyAgICAgICAgcmV0dXJuICJ1 bmJvdW5kIjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWluX2lycV93b3Jr KHN0cnVjdCBpcnFfd29yayAqd29yaykKPiArewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAq Y2hhaW47Cj4gKwo+ICsJY2hhaW4gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpjaGFpbiks IHdvcmspOwo+ICsKPiArCS8qIFRyeSB0byByZWFybSB0aGUgY2FsbGJhY2sgKi8KPiArCWlmICgh ZG1hX2ZlbmNlX2NoYWluX2VuYWJsZV9zaWduYWxpbmcoJmNoYWluLT5iYXNlKSkKPiArCQkvKiBP aywgd2UgYXJlIGRvbmUuIE5vIG1vcmUgdW5zaWduYWxlZCBmZW5jZXMgbGVmdCAqLwo+ICsJCWRt YV9mZW5jZV9zaWduYWwoJmNoYWluLT5iYXNlKTsKPiArCWRtYV9mZW5jZV9wdXQoJmNoYWluLT5i YXNlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWluX2NiKHN0cnVjdCBk bWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1h X2ZlbmNlX2NoYWluICpjaGFpbjsKPiArCj4gKwljaGFpbiA9IGNvbnRhaW5lcl9vZihjYiwgdHlw ZW9mKCpjaGFpbiksIGNiKTsKPiArCWlycV93b3JrX3F1ZXVlKCZjaGFpbi0+d29yayk7Cj4gKwlk bWFfZmVuY2VfcHV0KGYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBkbWFfZmVuY2VfY2hhaW5f ZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsJc3RydWN0 IGRtYV9mZW5jZV9jaGFpbiAqaGVhZCA9IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7Cj4gKwo+ ICsJZG1hX2ZlbmNlX2dldCgmaGVhZC0+YmFzZSk7Cj4gKwlkbWFfZmVuY2VfY2hhaW5fZm9yX2Vh Y2goZmVuY2UsICZoZWFkLT5iYXNlKSB7Cj4gKwkJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hh aW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOwo+ICsJCXN0cnVjdCBkbWFfZmVuY2UgKmYg PSBjaGFpbiA/IGNoYWluLT5mZW5jZSA6IGZlbmNlOwo+ICsKPiArCQlkbWFfZmVuY2VfZ2V0KGYp Owo+ICsJCWlmICghZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLCAmaGVhZC0+Y2IsIGRtYV9mZW5j ZV9jaGFpbl9jYikpIHsKPiArCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4gKwkJCXJldHVybiB0 cnVlOwo+ICsJCX0KPiArCQlkbWFfZmVuY2VfcHV0KGYpOwo+ICsJfQo+ICsJZG1hX2ZlbmNlX3B1 dCgmaGVhZC0+YmFzZSk7Cj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyBib29s IGRtYV9mZW5jZV9jaGFpbl9zaWduYWxlZChzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ ICsJZG1hX2ZlbmNlX2NoYWluX2Zvcl9lYWNoKGZlbmNlLCBmZW5jZSkgewo+ICsJCXN0cnVjdCBk bWFfZmVuY2VfY2hhaW4gKmNoYWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKGZlbmNlKTsKPiArCQlz dHJ1Y3QgZG1hX2ZlbmNlICpmID0gY2hhaW4gPyBjaGFpbi0+ZmVuY2UgOiBmZW5jZTsKPiArCj4g KwkJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZikpIHsKPiArCQkJZG1hX2ZlbmNlX3B1dChm ZW5jZSk7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRy dWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRtYV9mZW5jZV9jaGFpbl9yZWxlYXNlKHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFp biA9IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7Cj4gKwo+ICsJZG1hX2ZlbmNlX3B1dChjaGFp bi0+cHJldik7Cj4gKwlkbWFfZmVuY2VfcHV0KGNoYWluLT5mZW5jZSk7Cj4gKwlkbWFfZmVuY2Vf ZnJlZShmZW5jZSk7Cj4gK30KPiArCj4gK2NvbnN0IHN0cnVjdCBkbWFfZmVuY2Vfb3BzIGRtYV9m ZW5jZV9jaGFpbl9vcHMgPSB7Cj4gKwkuZ2V0X2RyaXZlcl9uYW1lID0gZG1hX2ZlbmNlX2NoYWlu X2dldF9kcml2ZXJfbmFtZSwKPiArCS5nZXRfdGltZWxpbmVfbmFtZSA9IGRtYV9mZW5jZV9jaGFp bl9nZXRfdGltZWxpbmVfbmFtZSwKPiArCS5lbmFibGVfc2lnbmFsaW5nID0gZG1hX2ZlbmNlX2No YWluX2VuYWJsZV9zaWduYWxpbmcsCj4gKwkuc2lnbmFsZWQgPSBkbWFfZmVuY2VfY2hhaW5fc2ln bmFsZWQsCj4gKwkucmVsZWFzZSA9IGRtYV9mZW5jZV9jaGFpbl9yZWxlYXNlLAo+ICt9Owo+ICtF WFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl9vcHMpOwo+ICsKPiArLyoqCj4gKyAqIGRtYV9m ZW5jZV9jaGFpbl9pbml0IC0gaW5pdGlhbGl6ZSBhIGZlbmNlIGNoYWluCj4gKyAqIEBjaGFpbjog dGhlIGNoYWluIG5vZGUgdG8gaW5pdGlhbGl6ZQo+ICsgKiBAcHJldjogdGhlIHByZXZpb3VzIGZl bmNlCj4gKyAqIEBmZW5jZTogdGhlIGN1cnJlbnQgZmVuY2UKPiArICoKPiArICogSW5pdGlhbGl6 ZSBhIG5ldyBjaGFpbiBub2RlIGFuZCBlaXRoZXIgc3RhcnQgYSBuZXcgY2hhaW4gb3IgYWRkIHRo ZSBub2RlIHRvCj4gKyAqIHRoZSBleGlzdGluZyBjaGFpbiBvZiB0aGUgcHJldmlvdXMgZmVuY2Uu Cj4gKyAqLwo+ICt2b2lkIGRtYV9mZW5jZV9jaGFpbl9pbml0KHN0cnVjdCBkbWFfZmVuY2VfY2hh aW4gKmNoYWluLAo+ICsJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKnByZXYsCj4gKwkJCSAgc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UsCj4gKwkJCSAgdWludDY0X3Qgc2Vxbm8pCj4gK3sKPiArCXN0cnVj dCBkbWFfZmVuY2VfY2hhaW4gKnByZXZfY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4ocHJldik7 Cj4gKwl1aW50NjRfdCBjb250ZXh0Owo+ICsKPiArCXNwaW5fbG9ja19pbml0KCZjaGFpbi0+bG9j ayk7Cj4gKwljaGFpbi0+cHJldiA9IHByZXY7Cj4gKwljaGFpbi0+ZmVuY2UgPSBmZW5jZTsKPiAr CWNoYWluLT5wcmV2X3NlcW5vID0gMDsKPiArCWluaXRfaXJxX3dvcmsoJmNoYWluLT53b3JrLCBk bWFfZmVuY2VfY2hhaW5faXJxX3dvcmspOwo+ICsKPiArCS8qIFRyeSB0byByZXVzZSB0aGUgY29u dGV4dCBvZiB0aGUgcHJldmlvdXMgY2hhaW4gbm9kZS4gKi8KPiArCWlmIChwcmV2X2NoYWluICYm IF9fZG1hX2ZlbmNlX2lzX2xhdGVyKHNlcW5vLCBwcmV2LT5zZXFubykpIHsKPiArCQljb250ZXh0 ID0gcHJldi0+Y29udGV4dDsKPiArCQljaGFpbi0+cHJldl9zZXFubyA9IHByZXYtPnNlcW5vOwo+ ICsJfSBlbHNlIHsKPiArCQljb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Cj4g KwkJLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgYSB2YWxpZCBzZXF1ZW5jZSBudW1i ZXIuICovCj4gKwkJaWYgKHByZXZfY2hhaW4pCj4gKwkJCXNlcW5vID0gbWF4KHByZXYtPnNlcW5v LCBzZXFubyk7Cj4gKwl9Cj4gKwo+ICsJZG1hX2ZlbmNlX2luaXQoJmNoYWluLT5iYXNlLCAmZG1h X2ZlbmNlX2NoYWluX29wcywKPiArCQkgICAgICAgJmNoYWluLT5sb2NrLCBjb250ZXh0LCBzZXFu byk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfY2hhaW5faW5pdCk7Cj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWZlbmNlLWNoYWluLmggYi9pbmNsdWRlL2xpbnV4L2Rt YS1mZW5jZS1jaGFpbi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw MDAuLmE1YzJlOGM2OTE1Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2xpbnV4L2Rt YS1mZW5jZS1jaGFpbi5oCj4gQEAgLTAsMCArMSw4MSBAQAo+ICsvKgo+ICsgKiBmZW5jZS1jaGFp bjogY2hhaW4gZmVuY2VzIHRvZ2V0aGVyIGluIGEgdGltZWxpbmUKPiArICoKPiArICogQ29weXJp Z2h0IChDKSAyMDE4IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KPiArICogQXV0aG9yczoK PiArICoJQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+ICsgKgo+ ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4g KyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F UkNIQU5UQUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUgZGV0YWls cy4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0gKPiArI2Rl ZmluZSBfX0xJTlVYX0RNQV9GRU5DRV9DSEFJTl9ICj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZG1h LWZlbmNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnFfd29yay5oPgo+ICsKPiArLyoqCj4gKyAq IHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gLSBmZW5jZSB0byByZXByZXNlbnQgYW4gbm9kZSBvZiBh IGZlbmNlIGNoYWluCj4gKyAqIEBiYXNlOiBmZW5jZSBiYXNlIGNsYXNzCj4gKyAqIEBsb2NrOiBz cGlubG9jayBmb3IgZmVuY2UgaGFuZGxpbmcKPiArICogQHByZXY6IHByZXZpb3VzIGZlbmNlIG9m IHRoZSBjaGFpbgo+ICsgKiBAcHJldl9zZXFubzogb3JpZ2luYWwgcHJldmlvdXMgc2Vxbm8gYmVm b3JlIGdhcmJhZ2UgY29sbGVjdGlvbgo+ICsgKiBAZmVuY2U6IGVuY2Fwc3VsYXRlZCBmZW5jZQo+ ICsgKiBAY2I6IGNhbGxiYWNrIHN0cnVjdHVyZSBmb3Igc2lnbmFsaW5nCj4gKyAqIEB3b3JrOiBp cnEgd29yayBpdGVtIGZvciBzaWduYWxpbmcKPiArICovCj4gK3N0cnVjdCBkbWFfZmVuY2VfY2hh aW4gewo+ICsJc3RydWN0IGRtYV9mZW5jZSBiYXNlOwo+ICsJc3BpbmxvY2tfdCBsb2NrOwo+ICsJ c3RydWN0IGRtYV9mZW5jZSAqcHJldjsKPiArCXU2NCBwcmV2X3NlcW5vOwo+ICsJc3RydWN0IGRt YV9mZW5jZSAqZmVuY2U7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiIGNiOwo+ICsJc3RydWN0IGly cV93b3JrIHdvcms7Cj4gK307Cj4gKwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9v cHMgZG1hX2ZlbmNlX2NoYWluX29wczsKPiArCj4gKy8qKgo+ICsgKiB0b19kbWFfZmVuY2VfY2hh aW4gLSBjYXN0IGEgZmVuY2UgdG8gYSBkbWFfZmVuY2VfY2hhaW4KPiArICogQGZlbmNlOiBmZW5j ZSB0byBjYXN0IHRvIGEgZG1hX2ZlbmNlX2FycmF5Cj4gKyAqCj4gKyAqIFJldHVybnMgTlVMTCBp ZiB0aGUgZmVuY2UgaXMgbm90IGEgZG1hX2ZlbmNlX2NoYWluLAo+ICsgKiBvciB0aGUgZG1hX2Zl bmNlX2NoYWluIG90aGVyd2lzZS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9m ZW5jZV9jaGFpbiAqCj4gK3RvX2RtYV9mZW5jZV9jaGFpbihzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSkKPiArewo+ICsJaWYgKCFmZW5jZSB8fCBmZW5jZS0+b3BzICE9ICZkbWFfZmVuY2VfY2hhaW5f b3BzKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXJldHVybiBjb250YWluZXJfb2YoZmVuY2Us IHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4sIGJhc2UpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZG1h X2ZlbmNlX2NoYWluX2Zvcl9lYWNoIC0gaXRlcmF0ZSBvdmVyIGFsbCBmZW5jZXMgaW4gY2hhaW4K PiArICogQGl0ZXI6IGN1cnJlbnQgZmVuY2UKPiArICogQGhlYWQ6IHN0YXJ0aW5nIHBvaW50Cj4g KyAqCj4gKyAqIEl0ZXJhdGUgb3ZlciBhbGwgZmVuY2VzIGluIHRoZSBjaGFpbi4gV2Uga2VlcCBh IHJlZmVyZW5jZSB0byB0aGUgY3VycmVudAo+ICsgKiBmZW5jZSB3aGlsZSBpbnNpZGUgdGhlIGxv b3Agd2hpY2ggbXVzdCBiZSBkcm9wcGVkIHdoZW4gYnJlYWtpbmcgb3V0Lgo+ICsgKi8KPiArI2Rl ZmluZSBkbWFfZmVuY2VfY2hhaW5fZm9yX2VhY2goaXRlciwgaGVhZCkJXAo+ICsJZm9yIChpdGVy ID0gZG1hX2ZlbmNlX2dldChoZWFkKTsgaXRlcjsgXAo+ICsJICAgICBpdGVyID0gZG1hX2ZlbmNl X2NoYWluX3dhbGsoaGVhZCkpCj4gKwo+ICtzdHJ1Y3QgZG1hX2ZlbmNlICpkbWFfZmVuY2VfY2hh aW5fd2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cj4gK2ludCBkbWFfZmVuY2VfY2hhaW5f ZmluZF9zZXFubyhzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNlLCB1aW50NjRfdCBzZXFubyk7Cj4g K3ZvaWQgZG1hX2ZlbmNlX2NoYWluX2luaXQoc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4s Cj4gKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqcHJldiwKPiArCQkJICBzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZSwKPiArCQkJICB1aW50NjRfdCBzZXFubyk7Cj4gKwo+ICsjZW5kaWYgLyogX19MSU5V WF9ETUFfRkVOQ0VfQ0hBSU5fSCAqLwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbA==