From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [RFC 1/8] dma-buf/fence: add fence_collection fences Date: Fri, 15 Apr 2016 11:03:29 +0200 Message-ID: <5710AE61.9040308@amd.com> References: <1460683781-22535-1-git-send-email-gustavo@padovan.org> <1460683781-22535-2-git-send-email-gustavo@padovan.org> <20160415080254.GQ2510@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0078.outbound.protection.outlook.com [207.46.100.78]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3896E6EBD1 for ; Fri, 15 Apr 2016 09:03:46 +0000 (UTC) In-Reply-To: <20160415080254.GQ2510@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , =?UTF-8?Q?Arve_Hj=c3=b8nnev=c3=a5g?= , Riley Andrews , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Maarten Lankhorst , Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org QW0gMTUuMDQuMjAxNiB1bSAxMDowMiBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gT24gVGh1LCBB cHIgMTQsIDIwMTYgYXQgMDY6Mjk6MzRQTSAtMDcwMCwgR3VzdGF2byBQYWRvdmFuIHdyb3RlOgo+ PiBGcm9tOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+ Cj4+Cj4+IHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uIGluaGVyaXRzIGZyb20gc3RydWN0IGZlbmNl IGFuZCBjYXJyaWVzIGEKPj4gY29sbGVjdGlvbiBvZiBmZW5jZXMgdGhhdCBuZWVkcyB0byBiZSB3 YWl0ZWQgdG9nZXRoZXIuCj4+Cj4+IEl0IGlzIHVzZWZ1bCB0byB0cmFuc2xhdGUgYSBzeW5jX2Zp bGUgdG8gYSBmZW5jZSB0byByZW1vdmUgdGhlIGNvbXBsZXhpdHkKPj4gb2YgZGVhbGluZyB3aXRo IHN5bmNfZmlsZXMgZnJvbSBEUk0gZHJpdmVycy4gU28gZXZlbiBpZiB0aGVyZSBhcmUgbWFueQo+ PiBmZW5jZXMgaW4gdGhlIHN5bmNfZmlsZSB0aGF0IG5lZWRzIHRvIHdhaXRlZCBmb3IgYSBjb21t aXQgdG8gaGFwcGVuCj4+IGRyaXZlcnMgd291bGQgb25seSB3b3JyeSBhYm91dCBhIHN0YW5kYXJk IHN0cnVjdCBmZW5jZS5UaGF0IG1lYW5zIHRoYXQgbm8KPj4gY2hhbmdlcyBuZWVkZWQgdG8gYW55 IGRyaXZlciBiZXNpZGVzIHN1cHBvcnRpbmcgZmVuY2VzLgo+Pgo+PiBmZW5jZV9jb2xsZWN0aW9u J3MgZmVuY2UgZG9lc24ndCBiZWxvbmcgdG8gYW55IHRpbWVsaW5lIGNvbnRleHQuCj4+Cj4+IFNp Z25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5j by51az4KPj4gLS0tCj4+ICAgZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlICAgICAgICAgICB8ICAg MiArLQo+PiAgIGRyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1jb2xsZWN0aW9uLmMgfCAxMzggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZG1hLWJ1Zi9mZW5j ZS5jICAgICAgICAgICAgfCAgIDIgKy0KPj4gICBpbmNsdWRlL2xpbnV4L2ZlbmNlLWNvbGxlY3Rp b24uaCAgIHwgIDU2ICsrKysrKysrKysrKysrKwo+PiAgIGluY2x1ZGUvbGludXgvZmVuY2UuaCAg ICAgICAgICAgICAgfCAgIDIgKwo+PiAgIDUgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hLWJ1 Zi9mZW5jZS1jb2xsZWN0aW9uLmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51 eC9mZW5jZS1jb2xsZWN0aW9uLmgKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9N YWtlZmlsZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQo+PiBpbmRleCA0MzMyNWExLi4zMGI4 NDY0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKPj4gKysrIGIvZHJp dmVycy9kbWEtYnVmL01ha2VmaWxlCj4+IEBAIC0xLDMgKzEsMyBAQAo+PiAtb2JqLXkgOj0gZG1h LWJ1Zi5vIGZlbmNlLm8gcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCj4+ICtvYmoteSA6PSBk bWEtYnVmLm8gZmVuY2UubyByZXNlcnZhdGlvbi5vIHNlcW5vLWZlbmNlLm8gZmVuY2UtY29sbGVj dGlvbi5vCj4+ICAgb2JqLSQoQ09ORklHX1NZTkNfRklMRSkJCSs9IHN5bmNfZmlsZS5vIHN5bmNf dGltZWxpbmUubyBzeW5jX2RlYnVnLm8KPj4gICBvYmotJChDT05GSUdfU1dfU1lOQykJCSs9IHN3 X3N5bmMubwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLWNvbGxlY3Rpb24u YyBiL2RyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1jb2xsZWN0aW9uLmMKPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uOGE0ZWNiMAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBi L2RyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1jb2xsZWN0aW9uLmMKPj4gQEAgLTAsMCArMSwxMzggQEAK Pj4gKy8qCj4+ICsgKiBmZW5jZS1jb2xsZWN0aW9uOiBhZ2dyZWdhdGUgZmVuY2VzIHRvIGJlIHdh aXRlZCB0b2dldGhlcgo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBDb2xsYWJvcmEg THRkCj4+ICsgKiBBdXRob3JzOgo+PiArICoJR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvQHBhZG92 YW4ub3JnPgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4+ICsgKiB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkKPj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4+ICsgKgo+PiArICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dCBXSVRIT1VUCj4+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPj4gKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKPj4gKyAqIG1vcmUgZGV0YWlscy4KPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8bGlu dXgvZXhwb3J0Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L2ZlbmNlLWNvbGxlY3Rpb24uaD4KPj4gKwo+PiArc3RhdGljIGNvbnN0IGNoYXIgKmZlbmNl X2NvbGxlY3Rpb25fZ2V0X2RyaXZlcl9uYW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4+ICt7Cj4+ ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSB0b19mZW5jZV9jb2xsZWN0 aW9uKGZlbmNlKTsKPj4gKwlzdHJ1Y3QgZmVuY2UgKmYgPSBjb2xsZWN0aW9uLT5mZW5jZXNbMF0u ZmVuY2U7Cj4+ICsKPj4gKwlyZXR1cm4gZi0+b3BzLT5nZXRfZHJpdmVyX25hbWUoZmVuY2UpOwo+ PiArfQoKSSB3b3VsZCByYXRoZXIgcmV0dXJuIHNvbWUgY29uc3RhbnQgbmFtZSBoZXJlIGluc3Rl YWQgb2YgcmVseWluZyB0aGF0IAp0aGUgY29sbGVjdGlvbiBhbHJlYWR5IGhhcyBhIGZlbmNlIGFk ZGVkIGFuZCB0aGF0IGFsbCBmZW5jZXMgYXJlIGZyb20gCnRoZSBzYW1lIGRyaXZlci4KCj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBjaGFyICpmZW5jZV9jb2xsZWN0aW9uX2dldF90aW1lbGluZV9uYW1l KHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4+ICt7Cj4+ICsJcmV0dXJuICJubyBjb250ZXh0IjsKPj4g K30KPj4gKwo+PiArc3RhdGljIGJvb2wgZmVuY2VfY29sbGVjdGlvbl9lbmFibGVfc2lnbmFsaW5n KHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4+ICt7Cj4+ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24g KmNvbGxlY3Rpb24gPSB0b19mZW5jZV9jb2xsZWN0aW9uKGZlbmNlKTsKPj4gKwo+PiArCXJldHVy biBhdG9taWNfcmVhZCgmY29sbGVjdGlvbi0+bnVtX3BlbmRpbmdfZmVuY2VzKTsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGJvb2wgZmVuY2VfY29sbGVjdGlvbl9zaWduYWxlZChzdHJ1Y3QgZmVuY2Ug KmZlbmNlKQo+PiArewo+PiArCXN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uICpjb2xsZWN0aW9uID0g dG9fZmVuY2VfY29sbGVjdGlvbihmZW5jZSk7Cj4+ICsKPj4gKwlyZXR1cm4gKGF0b21pY19yZWFk KCZjb2xsZWN0aW9uLT5udW1fcGVuZGluZ19mZW5jZXMpID09IDApOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgdm9pZCBmZW5jZV9jb2xsZWN0aW9uX3JlbGVhc2Uoc3RydWN0IGZlbmNlICpmZW5jZSkK Pj4gK3sKPj4gKwlzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IHRvX2ZlbmNl X2NvbGxlY3Rpb24oZmVuY2UpOwo+PiArCWludCBpOwo+PiArCj4+ICsJZm9yIChpID0gMCA7IGkg PCBjb2xsZWN0aW9uLT5udW1fZmVuY2VzIDsgaSsrKSB7Cj4+ICsJCWZlbmNlX3JlbW92ZV9jYWxs YmFjayhjb2xsZWN0aW9uLT5mZW5jZXNbaV0uZmVuY2UsCj4+ICsJCQkJICAgICAgJmNvbGxlY3Rp b24tPmZlbmNlc1tpXS5jYik7Cj4+ICsJCWZlbmNlX3B1dChjb2xsZWN0aW9uLT5mZW5jZXNbaV0u ZmVuY2UpOwo+PiArCX0KPj4gKwo+PiArCWZlbmNlX2ZyZWUoZmVuY2UpOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgc2lnbmVkIGxvbmcgZmVuY2VfY29sbGVjdGlvbl93YWl0KHN0cnVjdCBmZW5jZSAq ZmVuY2UsIGJvb2wgaW50ciwKPj4gKwkJCQkJIHNpZ25lZCBsb25nIHRpbWVvdXQpCj4+ICt7Cj4+ ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSB0b19mZW5jZV9jb2xsZWN0 aW9uKGZlbmNlKTsKPj4gKwlpbnQgaTsKPj4gKwo+PiArCWZvciAoaSA9IDAgOyBpIDwgY29sbGVj dGlvbi0+bnVtX2ZlbmNlcyA7IGkrKykgewo+PiArCQl0aW1lb3V0ID0gZmVuY2Vfd2FpdChjb2xs ZWN0aW9uLT5mZW5jZXNbaV0uZmVuY2UsIGludHIpOwo+PiArCQlpZiAodGltZW91dCA8IDApCj4+ ICsJCQlyZXR1cm4gdGltZW91dDsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gdGltZW91dDsKPj4g K30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmZW5jZV9vcHMgZmVuY2VfY29sbGVjdGlv bl9vcHMgPSB7Cj4+ICsJLmdldF9kcml2ZXJfbmFtZSA9IGZlbmNlX2NvbGxlY3Rpb25fZ2V0X2Ry aXZlcl9uYW1lLAo+PiArCS5nZXRfdGltZWxpbmVfbmFtZSA9IGZlbmNlX2NvbGxlY3Rpb25fZ2V0 X3RpbWVsaW5lX25hbWUsCj4+ICsJLmVuYWJsZV9zaWduYWxpbmcgPSBmZW5jZV9jb2xsZWN0aW9u X2VuYWJsZV9zaWduYWxpbmcsCj4+ICsJLnNpZ25hbGVkID0gZmVuY2VfY29sbGVjdGlvbl9zaWdu YWxlZCwKPj4gKwkud2FpdCA9IGZlbmNlX2NvbGxlY3Rpb25fd2FpdCwKPj4gKwkucmVsZWFzZSA9 IGZlbmNlX2NvbGxlY3Rpb25fcmVsZWFzZSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGNv bGxlY3Rpb25fY2hlY2tfY2JfZnVuYyhzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBzdHJ1Y3QgZmVuY2Vf Y2IgKmNiKQo+PiArewo+PiArCXN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uX2NiICpmX2NiOwo+PiAr CXN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uICpjb2xsZWN0aW9uOwo+PiArCj4+ICsJZl9jYiA9IGNv bnRhaW5lcl9vZihjYiwgc3RydWN0IGZlbmNlX2NvbGxlY3Rpb25fY2IsIGNiKTsKPj4gKwljb2xs ZWN0aW9uID0gZl9jYi0+Y29sbGVjdGlvbjsKPj4gKwo+PiArCWlmIChhdG9taWNfZGVjX2FuZF90 ZXN0KCZjb2xsZWN0aW9uLT5udW1fcGVuZGluZ19mZW5jZXMpKQo+PiArCQlmZW5jZV9zaWduYWwo JmNvbGxlY3Rpb24tPmJhc2UpOwo+PiArfQo+PiArCj4+ICt2b2lkIGZlbmNlX2NvbGxlY3Rpb25f YWRkKHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uICpjb2xsZWN0aW9uLAo+PiArCQkJICBzdHJ1Y3Qg ZmVuY2UgKmZlbmNlKQo+PiArewo+PiArCWludCBuID0gY29sbGVjdGlvbi0+bnVtX2ZlbmNlczsK Pj4gKwo+PiArCWNvbGxlY3Rpb24tPmZlbmNlc1tuXS5jb2xsZWN0aW9uID0gY29sbGVjdGlvbjsK Pj4gKwljb2xsZWN0aW9uLT5mZW5jZXNbbl0uZmVuY2UgPSBmZW5jZTsKPj4gKwo+PiArCWlmIChm ZW5jZV9hZGRfY2FsbGJhY2soZmVuY2UsICZjb2xsZWN0aW9uLT5mZW5jZXNbbl0uY2IsCj4+ICsJ CQkJIGNvbGxlY3Rpb25fY2hlY2tfY2JfZnVuYykpCj4+ICsJCXJldHVybjsKPj4gKwo+PiArCWZl bmNlX2dldChmZW5jZSk7Cj4+ICsKPj4gKwljb2xsZWN0aW9uLT5udW1fZmVuY2VzKys7Cj4+ICsJ YXRvbWljX2luYygmY29sbGVjdGlvbi0+bnVtX3BlbmRpbmdfZmVuY2VzKTsKPj4gK30KPiBGb3Ig dGhlIGludGVyZmFjZSBJIHRoaW5rIHdlIHNob3VsZCBub3Qgc3BsaXQgaXQgaW50byBfaW5pdCBh bmQgX2FkZCAtIGl0Cj4gc2hvdWxkbid0IGJlIGFsbG93ZWQgdG8gY2hhbmdlIGEgY29sbGVjdGlv biBvbmNlIGl0J3MgY3JlYXRlZC4gU28gcHJvYmFibHkKPiBjbGVhbmVyIGlmIHdlIGFkZCBhbiBh cnJheSBvZiBmZW5jZSBwb2ludGVycyB0byBfaW5pdC4KCkFtZGdwdSBhbHNvIGhhcyBhbiBpbXBs ZW1lbnRhdGlvbiBmb3IgYSBmZW5jZSBjb2xsZWN0aW9uIHdoaWNoIHVzZXMgYSBhIApoYXNodGFi bGUgdG8ga2VlcCB0aGUgZmVuY2VzIGdyb3VwZWQgYnkgY29udGV4dCAoZS5nLiBvbmx5IHRoZSBs YXRlc3QgCmZlbmNlIGlzIGtlZXB0IGZvciBlYWNoIGNvbnRleHQpLiBTZWUgYW1kZ3B1X3N5bmMu YyBmb3IgcmVmZXJlbmNlLgoKV2Ugc2hvdWxkIGVpdGhlciBtYWtlIHRoZSBjb2xsZWN0aW9uIHNp bWlsYXIgaW4gYSB3YXkgdGhhdCB5b3UgY2FuIGFkZCAKYXMgbWFueSBmZW5jZXMgYXMgeW91IHdh bnQgKGxpa2UgdGhlIGFtZGdwdSBpbXBsZW1lbnRhdGlvbikgb3IgbWFrZSBpdCAKc3RhdGljIGFu ZCBvbmx5IGFkZCBhIGZpeGVkIG51bWJlciBvZiBmZW5jZXMgcmlnaHQgZnJvbSB0aGUgYmVnaW5u aW5nLgoKSSBjYW4gY2VydGFpbmx5IHNlZSB1c2UgY2FzZXMgZm9yIGJvdGgsIGJ1dCBpZiB5b3Ug d2FudCB0byBzdGljayB3aXRoIGEgCnN0YXRpYyBhcHByb2FjaCB5b3Ugc2hvdWxkIHByb2JhYmx5 IGNhbGwgdGhlIG5ldyBvYmplY3QgZmVuY2VfYXJyYXkgCmluc3RlYWQgb2YgZmVuY2VfY29sbGVj dGlvbiBhbmQgZG8gYXMgRGFuaWVsIHN1Z2dlc3RlZC4KCj4gT3RoZXIgbml0cGljazogQWRkaW5n IHRoZSBjYWxsYmFjayBzaG91bGQgKEkgdGhpbmspIG9ubHkgYmUgZG9uZSBpbgo+IC0+ZW5hYmxl X3NpZ25hbGxpbmcuCgpZZWFoLCBJIHdhcyBhYm91dCB0byBjb21wbGFpbiBvbiB0aGF0IGFzIHdl bGwuCgpFbmFibGluZyBzaWduYWxpbmcgY2FuIGhhdmUgYSBodWdlIG92ZXJoZWFkIGZvciBzb21l IGZlbmNlIAppbXBsZW1lbnRhdGlvbnMuIFNvIGl0IHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBu ZWVkZWQKCj4KPiBGaW5hbGx5OiBIYXZlIHlvdSBsb29rZWQgaW50byBzdGl0Y2hpbmcgdG9nZXRo ZXIgYSBmZXcgdW5pdCB0ZXN0cyBmb3IKPiBmZW5jZV9jb2xsZWN0aW9uPwo+Cj4gRmVuY2UgY29s bGVjdGlvbnMgYWxzbyBicmVhayB0aGUgYXNzdW1wdGlvbiB0aGF0IGV2ZXJ5IGZlbmNlIGlzIG9u IGEKPiB0aW1lbGluZS4gZmVuY2VfbGF0ZXIgYW5kIGZlbmNlX2lzX2xhdGVyIG5lZWQgdG8gYmUg YWRqdXN0ZWQuIFdlIGFsc28gbmVlZAo+IGEgc3BlY2lhbCBjb2xsZWN0aW9uIGNvbnRleHQgdG8g ZmlsdGVyIHRoZXNlIG91dC4gVGhpcyBtZWFucwo+IGZlbmNlX2NvbGxlY3Rpb24gaXNuJ3QgcGVy ZmVjdGx5IG9wYXF1ZSBhYnN0cmFjdGlvbi4KPj4gKwo+PiArc3RydWN0IGZlbmNlX2NvbGxlY3Rp b24gKmZlbmNlX2NvbGxlY3Rpb25faW5pdChpbnQgbnVtX2ZlbmNlcykKPj4gK3sKPj4gKwlzdHJ1 Y3QgZmVuY2VfY29sbGVjdGlvbiAqY29sbGVjdGlvbjsKPj4gKwo+PiArCWNvbGxlY3Rpb24gPSBr emFsbG9jKG9mZnNldG9mKHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uLAo+PiArCQkJCSAgICAgIGZl bmNlc1tudW1fZmVuY2VzXSksIEdGUF9LRVJORUwpOwo+PiArCWlmICghY29sbGVjdGlvbikKPj4g KwkJcmV0dXJuIE5VTEw7Cj4+ICsKPj4gKwlzcGluX2xvY2tfaW5pdCgmY29sbGVjdGlvbi0+bG9j ayk7Cj4+ICsJZmVuY2VfaW5pdCgmY29sbGVjdGlvbi0+YmFzZSwgJmZlbmNlX2NvbGxlY3Rpb25f b3BzLCAmY29sbGVjdGlvbi0+bG9jaywKPj4gKwkJICAgRkVOQ0VfTk9fQ09OVEVYVCwgMCk7Cj4+ ICsKPj4gKwlyZXR1cm4gY29sbGVjdGlvbjsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZmVuY2Vf Y29sbGVjdGlvbl9pbml0KTsKPj4gKwo+PiArdm9pZCBmZW5jZV9jb2xsZWN0aW9uX3B1dChzdHJ1 Y3QgZmVuY2VfY29sbGVjdGlvbiAqY29sbGVjdGlvbikKPj4gK3sKPj4gKwlmZW5jZV9wdXQoJmNv bGxlY3Rpb24tPmJhc2UpOwo+IE5vdCBzdXJlIGEgc3BlY2lhbGl6ZWQgX3B1dCBmdW5jdGlvbiBp cyB1c2VmdWwsIEknZCBsZWF2ZSBpdCBvdXQuCj4KPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZmVu Y2VfY29sbGVjdGlvbl9wdXQpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2ZlbmNl LmMgYi9kcml2ZXJzL2RtYS1idWYvZmVuY2UuYwo+PiBpbmRleCA3YjA1ZGJlLi40ODZlOTVjIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvZmVuY2UuYwo+PiArKysgYi9kcml2ZXJzL2Rt YS1idWYvZmVuY2UuYwo+PiBAQCAtMzUsNyArMzUsNyBAQCBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1C T0woZmVuY2VfZW1pdCk7Cj4+ICAgICogY29udGV4dCBvciBub3QuIE9uZSBkZXZpY2UgY2FuIGhh dmUgbXVsdGlwbGUgc2VwYXJhdGUgY29udGV4dHMsCj4+ICAgICogYW5kIHRoZXkncmUgdXNlZCBp ZiBzb21lIGVuZ2luZSBjYW4gcnVuIGluZGVwZW5kZW50bHkgb2YgYW5vdGhlci4KPj4gICAgKi8K Pj4gLXN0YXRpYyBhdG9taWNfdCBmZW5jZV9jb250ZXh0X2NvdW50ZXIgPSBBVE9NSUNfSU5JVCgw KTsKPj4gK3N0YXRpYyBhdG9taWNfdCBmZW5jZV9jb250ZXh0X2NvdW50ZXIgPSBBVE9NSUNfSU5J VCgxKTsKPj4gICAKPj4gICAvKioKPj4gICAgKiBmZW5jZV9jb250ZXh0X2FsbG9jIC0gYWxsb2Nh dGUgYW4gYXJyYXkgb2YgZmVuY2UgY29udGV4dHMKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvZmVuY2UtY29sbGVjdGlvbi5oIGIvaW5jbHVkZS9saW51eC9mZW5jZS1jb2xsZWN0aW9uLmgK Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uYTc5ODkyNQo+PiAtLS0g L2Rldi9udWxsCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvZmVuY2UtY29sbGVjdGlvbi5oCj4+IEBA IC0wLDAgKzEsNTYgQEAKPj4gKy8qCj4+ICsgKiBmZW5jZS1jb2xsZWN0aW9uOiBhZ2dyZWdhdGVz IGZlbmNlIHRvIGJlIHdhaXRlZCB0b2dldGhlcgo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoQykg MjAxNiBDb2xsYWJvcmEgTHRkCj4+ICsgKiBBdXRob3JzOgo+PiArICoJR3VzdGF2byBQYWRvdmFu IDxndXN0YXZvQHBhZG92YW4ub3JnPgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4+ICsg KiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhcyBwdWJsaXNoZWQgYnkKPj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u Cj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4+ICsgKiBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPj4g KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IKPj4gKyAqIG1vcmUgZGV0YWlscy4KPj4gKyAqLwo+PiArCj4+ ICsjaWZuZGVmIF9fTElOVVhfRkVOQ0VfQ09MTEVDVElPTl9ICj4+ICsjZGVmaW5lIF9fTElOVVhf RkVOQ0VfQ09MTEVDVElPTl9ICj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC9mZW5jZS5oPgo+PiAr Cj4+ICtzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbl9jYiB7Cj4+ICsJc3RydWN0IGZlbmNlX2NiIGNi Owo+PiArCXN0cnVjdCBmZW5jZSAqZmVuY2U7Cj4+ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24g KmNvbGxlY3Rpb247Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbiB7Cj4+ ICsJc3RydWN0IGZlbmNlIGJhc2U7Cj4+ICsKPj4gKwlzcGlubG9ja190IGxvY2s7Cj4+ICsJc3Ry dWN0IGZlbmNlX2NiIGZlbmNlX2NiOwo+PiArCWF0b21pY190IG51bV9wZW5kaW5nX2ZlbmNlczsK Pj4gKwlpbnQgbnVtX2ZlbmNlczsKPj4gKwlzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbl9jYiBmZW5j ZXNbXTsKPj4gK307Cj4+ICsKPj4gKy8qKgo+PiArICogdG9fZmVuY2VfY29sbGVjdGlvbiAtIGNh c3QgYSBmZW5jZSB0byBhIGZlbmNlX2NvbGxlY3Rpb24KPj4gKyAqIEBmZW5jZTogZmVuY2UgdG8g Y2FzdCB0byBhIGZlbmNlX2NvbGxlY3Rpb24KPj4gKyAqCj4+ICsgKiBSZXR1cm5zIE5VTEwgaWYg dGhlIGZlbmNlIGlzIG5vdCBhIGZlbmNlX2NvbGxlY3Rpb24sCj4+ICsgKiBvciB0aGUgZmVuY2Vf Y29sbGVjdGlvbiBvdGhlcndpc2UuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZl bmNlX2NvbGxlY3Rpb24gKiB0b19mZW5jZV9jb2xsZWN0aW9uKHN0cnVjdCBmZW5jZSAqZmVuY2Up Cj4+ICt7Cj4gS2VybmVsZG9jIGNsYWltcyBpdCwgYnV0IHlvdSBkb24ndCBjaGVjayB0aGF0IHRo ZSBmZW5jZSBpcyBpbmRlZWQgYQo+IGZlbmNlX2NvbGxlY3Rpb24uIFRoYXQncyB1c3VhbGx5IGRv bmUgYnkgY29tcGFyaW5nIHRoZSBvcHMgcG9pbnRlci4KPgo+PiArCXJldHVybiBjb250YWluZXJf b2YoZmVuY2UsIHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uLCBiYXNlKTsKPj4gK30KPj4gKwo+PiAr c3RydWN0IGZlbmNlX2NvbGxlY3Rpb24gKmZlbmNlX2NvbGxlY3Rpb25faW5pdChpbnQgbnVtX2Zl bmNlcyk7Cj4+ICt2b2lkIGZlbmNlX2NvbGxlY3Rpb25fYWRkKHN0cnVjdCBmZW5jZV9jb2xsZWN0 aW9uICpjb2xsZWN0aW9uLAo+PiArCQkJICBzdHJ1Y3QgZmVuY2UgKmZlbmNlKTsKPj4gK3ZvaWQg ZmVuY2VfY29sbGVjdGlvbl9wdXQoc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24gKmNvbGxlY3Rpb24p Owo+PiArCj4+ICsjZW5kaWYgLyogX19MSU5VWF9GRU5DRV9DT0xMRUNUSU9OX0ggKi8KPj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmVuY2UuaCBiL2luY2x1ZGUvbGludXgvZmVuY2UuaAo+ PiBpbmRleCAyYjE3Njk4Li4wMjE3MGRkIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2Zl bmNlLmgKPj4gKysrIGIvaW5jbHVkZS9saW51eC9mZW5jZS5oCj4+IEBAIC0zMCw2ICszMCw4IEBA Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L3ByaW50ay5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9yY3Vw ZGF0ZS5oPgo+PiAgIAo+PiArI2RlZmluZSBGRU5DRV9OT19DT05URVhUIDAKCk1pZ2h0IGJlIHRo YXQgaG93IGFtZGdwdSB1c2VzIHRoZSBmZW5jZSBjb250ZXh0IGFuZCBzZXF1ZW5jZSBudW1iZXIg aXMgYSAKYml0IHF1ZXN0aW9uYWJsZSwgYnV0IHRoaXMgd2lsbCBjb21wbGV0ZWx5IGJyZWFrIGl0 LgoKU28gd2UgbmVlZCBhIGZpeCBmb3IgYW1kZ3B1IGFzIHdlbGwgYmVmb3JlIHRoaXMgY2FuIGdv IHVwc3RyZWFtLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKPj4gKwo+PiAgIHN0cnVjdCBmZW5jZTsK Pj4gICBzdHJ1Y3QgZmVuY2Vfb3BzOwo+PiAgIHN0cnVjdCBmZW5jZV9jYjsKPj4gLS0gCj4+IDIu NS41Cj4+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK