From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v2 1/8] dma-buf/fence: add fence_collection fences Date: Tue, 26 Apr 2016 16:41:02 +0200 Message-ID: <20160426144102.GX8291@phenom.ffwll.local> References: <1461623608-29538-1-git-send-email-gustavo@padovan.org> <1461623608-29538-2-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1628C6E863 for ; Tue, 26 Apr 2016 14:41:07 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id e201so4947853wme.2 for ; Tue, 26 Apr 2016 07:41:07 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1461623608-29538-2-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: devel@driverdev.osuosl.org, Daniel Stone , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Daniel Vetter , Riley Andrews , Gustavo Padovan , John Harrison List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBcHIgMjUsIDIwMTYgYXQgMDc6MzM6MjFQTSAtMDMwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbiBpbmhlcml0cyBmcm9tIHN0cnVj dCBmZW5jZSBhbmQgY2FycmllcyBhCj4gY29sbGVjdGlvbiBvZiBmZW5jZXMgdGhhdCBuZWVkcyB0 byBiZSB3YWl0ZWQgdG9nZXRoZXIuCj4gCj4gSXQgaXMgdXNlZnVsIHRvIHRyYW5zbGF0ZSBhIHN5 bmNfZmlsZSB0byBhIGZlbmNlIHRvIHJlbW92ZSB0aGUgY29tcGxleGl0eQo+IG9mIGRlYWxpbmcg d2l0aCBzeW5jX2ZpbGVzIG9uIERSTSBkcml2ZXJzLiBTbyBldmVuIGlmIHRoZXJlIGFyZSBtYW55 Cj4gZmVuY2VzIGluIHRoZSBzeW5jX2ZpbGUgdGhhdCBuZWVkcyB0byB3YWl0ZWQgZm9yIGEgY29t bWl0IHRvIGhhcHBlbiwKPiB0aGV5IGFsbCBnZXQgYWRkZWQgdG8gdGhlIGZlbmNlX2NvbGxlY3Rp b24gYW5kIHBhc3NlZCBmb3IgRFJNIHVzZSBhcwo+IGEgc3RhbmRhcmQgc3RydWN0IGZlbmNlLgo+ IAo+IFRoYXQgbWVhbnMgdGhhdCBubyBjaGFuZ2VzIG5lZWRlZCB0byBhbnkgZHJpdmVyIGJlc2lk ZXMgc3VwcG9ydGluZyBmZW5jZXMuCj4gCj4gZmVuY2VfY29sbGVjdGlvbidzIGZlbmNlIGRvZXNu J3QgYmVsb25nIHRvIGFueSB0aW1lbGluZSBjb250ZXh0LCBzbwo+IGZlbmNlX2lzX2xhdGVyKCkg YW5kIGZlbmNlX2xhdGVyKCkgYXJlIG5vdCBtZWFudCB0byBiZSBjYWxsZWQgd2l0aAo+IGZlbmNl X2NvbGxlY3Rpb25zIGZlbmNlcy4KPiAKPiB2MjogQ29tbWVudHMgYnkgRGFuaWVsIFZldHRlcjoK PiAJLSBtZXJnZSBmZW5jZV9jb2xsZWN0aW9uX2luaXQoKSBhbmQgZmVuY2VfY29sbGVjdGlvbl9h ZGQoKQo+IAktIG9ubHkgYWRkIGNhbGxiYWNrcyBhdCAtPmVuYWJsZV9zaWduYWxsaW5nKCkKPiAJ LSByZW1vdmUgZmVuY2VfY29sbGVjdGlvbl9wdXQoKQo+IAktIGNoZWNrIGZvciB0eXBlIG9uIHRv X2ZlbmNlX2NvbGxlY3Rpb24oKQo+IAktIGFkanVzdCBmZW5jZV9pc19sYXRlcigpIGFuZCBmZW5j ZV9sYXRlcigpIHRvIFdBUk5fT04oKSBpZiB0aGV5Cj4gCWFyZSB1c2VkIHdpdGggY29sbGVjdGlv biBmZW5jZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBh ZG92YW5AY29sbGFib3JhLmNvLnVrPgoKRkVOQ0VfTk9fQ09OVEVYVCBzZW1hbnRpY3MgbmVlZHMg YW4gYWNrIGZyb20gYW1kZ3B1IG1haW50YWluZXJzLiBJJ20gbm90CmVudGlyZWx5IHN1cmUgdGhl eSBtaWdodCBub3QgaGl0IHRoZSBuZXcgV0FSTl9PTiBieSBhY2NpZGVudCBub3cuIFBsZWFzZQpj YyBBbGV4IERldWNoZXIgJiBDaHJpc3RpYW4gS8O2bmlnLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2 ZXJzL2RtYS1idWYvTWFrZWZpbGUgICAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZG1hLWJ1 Zi9mZW5jZS1jb2xsZWN0aW9uLmMgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBkcml2ZXJzL2RtYS1idWYvZmVuY2UuYyAgICAgICAgICAgIHwgICAyICstCj4g IGluY2x1ZGUvbGludXgvZmVuY2UtY29sbGVjdGlvbi5oICAgfCAgNzMgKysrKysrKysrKysrKysr KysKPiAgaW5jbHVkZS9saW51eC9mZW5jZS5oICAgICAgICAgICAgICB8ICAgOSArKysKPiAgNSBm aWxlcyBjaGFuZ2VkLCAyNDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1jb2xsZWN0aW9uLmMKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvZmVuY2UtY29sbGVjdGlvbi5oCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmls ZQo+IGluZGV4IDRhNDI0ZWMuLjUyZjgxOGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVm L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCj4gQEAgLTEsMiArMSwy IEBACj4gLW9iai15IDo9IGRtYS1idWYubyBmZW5jZS5vIHJlc2VydmF0aW9uLm8gc2Vxbm8tZmVu Y2Uubwo+ICtvYmoteSA6PSBkbWEtYnVmLm8gZmVuY2UubyByZXNlcnZhdGlvbi5vIHNlcW5vLWZl bmNlLm8gZmVuY2UtY29sbGVjdGlvbi5vCj4gIG9iai0kKENPTkZJR19TWU5DX0ZJTEUpCQkrPSBz eW5jX2ZpbGUubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZmVuY2UtY29sbGVjdGlv bi5jIGIvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLWNvbGxlY3Rpb24uYwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uODg4NzJlNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL2RtYS1idWYvZmVuY2UtY29sbGVjdGlvbi5jCj4gQEAgLTAsMCArMSwxNTkgQEAKPiAr LyoKPiArICogZmVuY2UtY29sbGVjdGlvbjogYWdncmVnYXRlIGZlbmNlcyB0byBiZSB3YWl0ZWQg dG9nZXRoZXIKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE2IENvbGxhYm9yYSBMdGQKPiAr ICogQXV0aG9yczoKPiArICoJR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvQHBhZG92YW4ub3JnPgo+ ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKPiArICog dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI T1VUCj4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mIE1FUkNIQU5UQUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUg ZGV0YWlscy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9mZW5jZS1jb2xsZWN0aW9uLmg+ Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqZmVuY2VfY29sbGVjdGlvbl9nZXRfZHJpdmVyX25h bWUoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24g KmNvbGxlY3Rpb24gPSB0b19mZW5jZV9jb2xsZWN0aW9uKGZlbmNlKTsKPiArCXN0cnVjdCBmZW5j ZSAqZiA9IGNvbGxlY3Rpb24tPmZlbmNlc1swXS5mZW5jZTsKPiArCj4gKwlyZXR1cm4gZi0+b3Bz LT5nZXRfZHJpdmVyX25hbWUoZmVuY2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAq ZmVuY2VfY29sbGVjdGlvbl9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ ICt7Cj4gKwlyZXR1cm4gIm5vIGNvbnRleHQiOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjb2xs ZWN0aW9uX2NoZWNrX2NiX2Z1bmMoc3RydWN0IGZlbmNlICpmZW5jZSwgc3RydWN0IGZlbmNlX2Ni ICpjYikKPiArewo+ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rpb25fY2IgKmZfY2I7Cj4gKwlzdHJ1 Y3QgZmVuY2VfY29sbGVjdGlvbiAqY29sbGVjdGlvbjsKPiArCj4gKwlmX2NiID0gY29udGFpbmVy X29mKGNiLCBzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbl9jYiwgY2IpOwo+ICsJY29sbGVjdGlvbiA9 IGZfY2ItPmNvbGxlY3Rpb247Cj4gKwo+ICsJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmNvbGxl Y3Rpb24tPm51bV9wZW5kaW5nX2ZlbmNlcykpCj4gKwkJZmVuY2Vfc2lnbmFsKCZjb2xsZWN0aW9u LT5iYXNlKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgZmVuY2VfY29sbGVjdGlvbl9lbmFibGVf c2lnbmFsaW5nKHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4gK3sKPiArCXN0cnVjdCBmZW5jZV9jb2xs ZWN0aW9uICpjb2xsZWN0aW9uID0gdG9fZmVuY2VfY29sbGVjdGlvbihmZW5jZSk7Cj4gKwlpbnQg aTsKPiArCj4gKwlmb3IgKGkgPSAwIDsgaSA8IGNvbGxlY3Rpb24tPm51bV9mZW5jZXMgOyBpKysp IHsKPiArCQlpZiAoZmVuY2VfYWRkX2NhbGxiYWNrKGNvbGxlY3Rpb24tPmZlbmNlc1tpXS5mZW5j ZSwKPiArCQkJCSAgICAgICAmY29sbGVjdGlvbi0+ZmVuY2VzW2ldLmNiLAo+ICsJCQkJICAgICAg IGNvbGxlY3Rpb25fY2hlY2tfY2JfZnVuYykpIHsKPiArCQkJYXRvbWljX2RlYygmY29sbGVjdGlv bi0+bnVtX3BlbmRpbmdfZmVuY2VzKTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0KPiArCX0K PiArCj4gKwlyZXR1cm4gISFhdG9taWNfcmVhZCgmY29sbGVjdGlvbi0+bnVtX3BlbmRpbmdfZmVu Y2VzKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgZmVuY2VfY29sbGVjdGlvbl9zaWduYWxlZChz dHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbiAqY29s bGVjdGlvbiA9IHRvX2ZlbmNlX2NvbGxlY3Rpb24oZmVuY2UpOwo+ICsKPiArCXJldHVybiAoYXRv bWljX3JlYWQoJmNvbGxlY3Rpb24tPm51bV9wZW5kaW5nX2ZlbmNlcykgPT0gMCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGZlbmNlX2NvbGxlY3Rpb25fcmVsZWFzZShzdHJ1Y3QgZmVuY2UgKmZl bmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZmVuY2VfY29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IHRvX2Zl bmNlX2NvbGxlY3Rpb24oZmVuY2UpOwo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMCA7IGkg PCBjb2xsZWN0aW9uLT5udW1fZmVuY2VzIDsgaSsrKQo+ICsJCWZlbmNlX3B1dChjb2xsZWN0aW9u LT5mZW5jZXNbaV0uZmVuY2UpOwo+ICsKPiArCWtmcmVlKGNvbGxlY3Rpb24tPmZlbmNlcyk7Cj4g KwlmZW5jZV9mcmVlKGZlbmNlKTsKPiArfQo+ICsKPiArc3RhdGljIHNpZ25lZCBsb25nIGZlbmNl X2NvbGxlY3Rpb25fd2FpdChzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBib29sIGludHIsCj4gKwkJCQkJ IHNpZ25lZCBsb25nIHRpbWVvdXQpCj4gK3sKPiArCXN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uICpj b2xsZWN0aW9uID0gdG9fZmVuY2VfY29sbGVjdGlvbihmZW5jZSk7Cj4gKwlpbnQgaTsKPiArCj4g KwlpZiAodGVzdF9iaXQoRkVOQ0VfRkxBR19TSUdOQUxFRF9CSVQsICZmZW5jZS0+ZmxhZ3MpKQo+ ICsJCXJldHVybiB0aW1lb3V0Owo+ICsKPiArCWZlbmNlX2VuYWJsZV9zd19zaWduYWxpbmcoZmVu Y2UpOwo+ICsKPiArCWZvciAoaSA9IDAgOyBpIDwgY29sbGVjdGlvbi0+bnVtX2ZlbmNlcyA7IGkr Kykgewo+ICsJCWlmICh0ZXN0X2JpdChGRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwgJmZlbmNlLT5m bGFncykpCj4gKwkJCXJldHVybiB0aW1lb3V0Owo+ICsKPiArCQl0aW1lb3V0ID0gZmVuY2Vfd2Fp dChjb2xsZWN0aW9uLT5mZW5jZXNbaV0uZmVuY2UsIGludHIpOwo+ICsJCWlmICh0aW1lb3V0IDwg MCkKPiArCQkJcmV0dXJuIHRpbWVvdXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRpbWVvdXQ7Cj4g K30KPiArCj4gK2NvbnN0IHN0cnVjdCBmZW5jZV9vcHMgZmVuY2VfY29sbGVjdGlvbl9vcHMgPSB7 Cj4gKwkuZ2V0X2RyaXZlcl9uYW1lID0gZmVuY2VfY29sbGVjdGlvbl9nZXRfZHJpdmVyX25hbWUs Cj4gKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBmZW5jZV9jb2xsZWN0aW9uX2dldF90aW1lbGluZV9u YW1lLAo+ICsJLmVuYWJsZV9zaWduYWxpbmcgPSBmZW5jZV9jb2xsZWN0aW9uX2VuYWJsZV9zaWdu YWxpbmcsCj4gKwkuc2lnbmFsZWQgPSBmZW5jZV9jb2xsZWN0aW9uX3NpZ25hbGVkLAo+ICsJLndh aXQgPSBmZW5jZV9jb2xsZWN0aW9uX3dhaXQsCj4gKwkucmVsZWFzZSA9IGZlbmNlX2NvbGxlY3Rp b25fcmVsZWFzZSwKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBmZW5jZV9jb2xsZWN0aW9uX2NyZWF0 ZSAtIENyZWF0ZSBhIGN1c3RvbSBmZW5jZSBjb2xsZWN0aW9uCj4gKyAqIGlzIHNpZ25hbGVkCj4g KyAqIEBudW1fZmVuY2VzOglbaW5dCW51bWJlciBvZiBmZW5jZXMgdG8gYWRkIGluIHRoZSBjb2xs ZWN0aW9uCj4gKyAqIEBjYjoJCVtpbl0JY2IgYXJyYXkgY29udGFpbmluZyB0aGUgZmVuY2VzIGZv ciB0aGUgY29sbGVjdGlvbgo+ICsgKgo+ICsgKiBBbGxvY2F0ZSBhIGZlbmNlX2NvbGxlY3Rpb24g YW5kIGluaXRpYWxpemUgdGhlIGJhc2UgZmVuY2Ugd2l0aCBmZW5jZV9pbml0KCkKPiArICogYW5k IEZFTkNFX05PX0NPTlRFWFQuIEl0IGFsc28gaW5pdHMgYWxsIGZlbmNlX2NvbGxlY3Rpb25zIHNw ZWNpZmljIGZpZWxkcwo+ICsgKiBhbmQgcmV0dXJuIHRoZSBjcmVhdGVkIGZlbmNlX2NvbGxlY3Rp b24uIEluIGNhc2Ugb2YgZXJyb3IgaXQgcmV0dXJucyBOVUxMLgo+ICsgKgo+ICsgKiBUaGUgY2Fs bGVyIHNob3VsZCBhbGxvY3RlIHRoZSBmZW5jZV9jb2xsZWN0aW9uX2NiIGFycmF5IHdpdGggbnVt X2ZlbmNlcyBzaXplCj4gKyAqIGFuZCBmaWxsIHRoZSBmZW5jZSBmaWVsZHMgd2l0aCBhbGwgdGhl IGZlbmNlcyBpdCB3YW50cyB0byBhZGQgdG8gdGhlCj4gKyAqIGNvbGxlY3Rpb24uCj4gKyAqCj4g KyAqIENvbGxlY3Rpb25zIGhhdmUgbm8gY29udGV4dCwgdGh1cyBmZW5jZV9sYXRlcigpIGFuZCBm ZW5jZV9pc19sYXRlcigpIHNoYWxsCj4gKyAqIG5vdCBiZSB1c2VkIHdpdGggZmVuY2VfY29sbGVj dGlvbi4KPiArICoKPiArICogZmVuY2VfcHV0KCkgb24gdGhlIGJhc2UgZmVuY2Ugc2hvdWxkIGJl IHVzZWQgdG8gcmVsZWFzZSB0aGUgY29sbGVjdGlvbi4KPiArICovCj4gK3N0cnVjdCBmZW5jZV9j b2xsZWN0aW9uICpmZW5jZV9jb2xsZWN0aW9uX2NyZWF0ZShpbnQgbnVtX2ZlbmNlcywKPiArCQkJ CQkJIHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uX2NiICpjYikKPiArewo+ICsJc3RydWN0IGZlbmNl X2NvbGxlY3Rpb24gKmNvbGxlY3Rpb247Cj4gKwlpbnQgaTsKPiArCj4gKwljb2xsZWN0aW9uID0g a3phbGxvYyhzaXplb2YoKmNvbGxlY3Rpb24pLCBHRlBfS0VSTkVMKTsKPiArCWlmICghY29sbGVj dGlvbikKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlzcGluX2xvY2tfaW5pdCgmY29sbGVjdGlv bi0+bG9jayk7Cj4gKwlmZW5jZV9pbml0KCZjb2xsZWN0aW9uLT5iYXNlLCAmZmVuY2VfY29sbGVj dGlvbl9vcHMsICZjb2xsZWN0aW9uLT5sb2NrLAo+ICsJCSAgIEZFTkNFX05PX0NPTlRFWFQsIDAp Owo+ICsKPiArCWNvbGxlY3Rpb24tPmZlbmNlcyA9IGNiOwo+ICsJY29sbGVjdGlvbi0+bnVtX2Zl bmNlcyA9IG51bV9mZW5jZXM7Cj4gKwlhdG9taWNfc2V0KCZjb2xsZWN0aW9uLT5udW1fcGVuZGlu Z19mZW5jZXMsIG51bV9mZW5jZXMpOwo+ICsKPiArCWZvciAoaSA9IDAgOyBpIDwgY29sbGVjdGlv bi0+bnVtX2ZlbmNlcyA7IGkrKykgewo+ICsJCWZlbmNlX2dldChjb2xsZWN0aW9uLT5mZW5jZXNb aV0uZmVuY2UpOwo+ICsJCWNvbGxlY3Rpb24tPmZlbmNlc1tpXS5jb2xsZWN0aW9uID0gY29sbGVj dGlvbjsKPiArCX0KPiArCj4gKwlyZXR1cm4gY29sbGVjdGlvbjsKPiArfQo+ICtFWFBPUlRfU1lN Qk9MKGZlbmNlX2NvbGxlY3Rpb25fY3JlYXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEt YnVmL2ZlbmNlLmMgYi9kcml2ZXJzL2RtYS1idWYvZmVuY2UuYwo+IGluZGV4IDdiMDVkYmUuLjQ4 NmU5NWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKPiArKysgYi9kcml2 ZXJzL2RtYS1idWYvZmVuY2UuYwo+IEBAIC0zNSw3ICszNSw3IEBAIEVYUE9SVF9UUkFDRVBPSU5U X1NZTUJPTChmZW5jZV9lbWl0KTsKPiAgICogY29udGV4dCBvciBub3QuIE9uZSBkZXZpY2UgY2Fu IGhhdmUgbXVsdGlwbGUgc2VwYXJhdGUgY29udGV4dHMsCj4gICAqIGFuZCB0aGV5J3JlIHVzZWQg aWYgc29tZSBlbmdpbmUgY2FuIHJ1biBpbmRlcGVuZGVudGx5IG9mIGFub3RoZXIuCj4gICAqLwo+ IC1zdGF0aWMgYXRvbWljX3QgZmVuY2VfY29udGV4dF9jb3VudGVyID0gQVRPTUlDX0lOSVQoMCk7 Cj4gK3N0YXRpYyBhdG9taWNfdCBmZW5jZV9jb250ZXh0X2NvdW50ZXIgPSBBVE9NSUNfSU5JVCgx KTsKPiAgCj4gIC8qKgo+ICAgKiBmZW5jZV9jb250ZXh0X2FsbG9jIC0gYWxsb2NhdGUgYW4gYXJy YXkgb2YgZmVuY2UgY29udGV4dHMKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mZW5jZS1j b2xsZWN0aW9uLmggYi9pbmNsdWRlL2xpbnV4L2ZlbmNlLWNvbGxlY3Rpb24uaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDA4NzYyMgo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9pbmNsdWRlL2xpbnV4L2ZlbmNlLWNvbGxlY3Rpb24uaAo+IEBAIC0wLDAgKzEsNzMgQEAK PiArLyoKPiArICogZmVuY2UtY29sbGVjdGlvbjogYWdncmVnYXRlcyBmZW5jZSB0byBiZSB3YWl0 ZWQgdG9nZXRoZXIKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE2IENvbGxhYm9yYSBMdGQK PiArICogQXV0aG9yczoKPiArICoJR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvQHBhZG92YW4ub3Jn Pgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKPiAr ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX SVRIT1VUCj4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1v cmUgZGV0YWlscy4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fTElOVVhfRkVOQ0VfQ09MTEVDVElP Tl9ICj4gKyNkZWZpbmUgX19MSU5VWF9GRU5DRV9DT0xMRUNUSU9OX0gKPiArCj4gKyNpbmNsdWRl IDxsaW51eC9mZW5jZS5oPgo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9u X2NiIC0gY2FsbGJhY2sgZm9yIGZlbmNlX2FkZF9jYWxsYmFjawo+ICsgKiBAY2I6IHRoZSBiYXNl IGZlbmNlX2NiIG9iamVjdAo+ICsgKiBAZmVuY2U6IGZlbmNlIHdlIGFyZSBzdG9yaW5nIGluIHRo ZSBjb2xsZWN0aW9uCj4gKyAqIEBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uIHRoZSBmZW5jZSBiZWxv bmdzIHRvCj4gKyAqCj4gKyAqIFRoaXMgc3RydWN0IGlzIGF0IHRoZSBzYW1lIHRpbWUgdGhlIHN0 b3JhZ2UgZm9yIHRoZSBmZW5jZXMgaW4gdGhlCj4gKyAqIGNvbGxlY3Rpb24gYW5kIHRoZSBzdHJ1 Y3Qgd2UgcGFzcyB0byBmZW5jZV9hZGRfY2FsbGJhY2soKQo+ICsgKi8KPiArc3RydWN0IGZlbmNl X2NvbGxlY3Rpb25fY2Igewo+ICsJc3RydWN0IGZlbmNlX2NiIGNiOwo+ICsJc3RydWN0IGZlbmNl ICpmZW5jZTsKPiArCXN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uICpjb2xsZWN0aW9uOwo+ICt9Owo+ ICsKPiArLyoqCj4gKyAqIHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uIC0gZmVuY2UgdG8gcmVwcmVz ZW50IGEgY29sbGVjdGlvbiBvZiBmZW5jZXMKPiArICogQGJhc2U6IGZlbmNlIGJhc2UgY2xhc3MK PiArICogQGxvY2s6IHNwaW5sb2NrIGZvciBmZW5jZSBoYW5kbGluZwo+ICsgKiBAbnVtX3BlbmRp bmdfZmVuY2VzOiBmZW5jZXMgaW4gdGhlIGNvbGxlY3Rpb24gbm90IHNpZ25hbGVkIHlldAo+ICsg KiBAbnVtX2ZlbmNlczogbnVtYmVyIG9mIGZlbmNlcyBpbiB0aGUgY29sbGVjdGlvbgo+ICsgKiBA ZmVuY2VzOiBwb250ZWlyIHRvIGZlbmNlX2NvbGxlY3Rpb25fY2Igd2l0aCBkYXRhIGFib3V0IHRo ZSBmZW5jZXMKPiArICovCj4gK3N0cnVjdCBmZW5jZV9jb2xsZWN0aW9uIHsKPiArCXN0cnVjdCBm ZW5jZSBiYXNlOwo+ICsKPiArCXNwaW5sb2NrX3QgbG9jazsKPiArCWF0b21pY190IG51bV9wZW5k aW5nX2ZlbmNlczsKPiArCWludCBudW1fZmVuY2VzOwo+ICsJc3RydWN0IGZlbmNlX2NvbGxlY3Rp b25fY2IgKmZlbmNlczsKPiArfTsKPiArCj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgZmVuY2Vfb3Bz IGZlbmNlX2NvbGxlY3Rpb25fb3BzOwo+ICsKPiArLyoqCj4gKyAqIHRvX2ZlbmNlX2NvbGxlY3Rp b24gLSBjYXN0IGEgZmVuY2UgdG8gYSBmZW5jZV9jb2xsZWN0aW9uCj4gKyAqIEBmZW5jZTogZmVu Y2UgdG8gY2FzdCB0byBhIGZlbmNlX2NvbGxlY3Rpb24KPiArICoKPiArICogUmV0dXJucyBOVUxM IGlmIHRoZSBmZW5jZSBpcyBub3QgYSBmZW5jZV9jb2xsZWN0aW9uLAo+ICsgKiBvciB0aGUgZmVu Y2VfY29sbGVjdGlvbiBvdGhlcndpc2UuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBm ZW5jZV9jb2xsZWN0aW9uICp0b19mZW5jZV9jb2xsZWN0aW9uKHN0cnVjdCBmZW5jZSAqZmVuY2Up Cj4gK3sKPiArCWlmIChmZW5jZS0+b3BzICE9ICZmZW5jZV9jb2xsZWN0aW9uX29wcykKPiArCQly ZXR1cm4gTlVMTDsKPiArCXJldHVybiBjb250YWluZXJfb2YoZmVuY2UsIHN0cnVjdCBmZW5jZV9j b2xsZWN0aW9uLCBiYXNlKTsKPiArfQo+ICsKPiArc3RydWN0IGZlbmNlX2NvbGxlY3Rpb24gKmZl bmNlX2NvbGxlY3Rpb25fY3JlYXRlKGludCBudW1fZmVuY2VzLAo+ICsJCQkJCQlzdHJ1Y3QgZmVu Y2VfY29sbGVjdGlvbl9jYiAqY2IpOwo+ICsjZW5kaWYgLyogX19MSU5VWF9GRU5DRV9DT0xMRUNU SU9OX0ggKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mZW5jZS5oIGIvaW5jbHVkZS9s aW51eC9mZW5jZS5oCj4gaW5kZXggNWFhOTVlYi4uMTg0Y2U3OSAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL2xpbnV4L2ZlbmNlLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L2ZlbmNlLmgKPiBAQCAtMzAs NiArMzAsOSBAQAo+ICAjaW5jbHVkZSA8bGludXgvcHJpbnRrLmg+Cj4gICNpbmNsdWRlIDxsaW51 eC9yY3VwZGF0ZS5oPgo+ICAKPiArLyogY29udGV4dCBudW1iZXIgZm9yIGZlbmNlcyB3aXRob3V0 IGNvbnRleHQsIGUuZzogZmVuY2VfY29sbGVjdGlvbiAqLwo+ICsjZGVmaW5lIEZFTkNFX05PX0NP TlRFWFQgMAo+ICsKPiAgc3RydWN0IGZlbmNlOwo+ICBzdHJ1Y3QgZmVuY2Vfb3BzOwo+ICBzdHJ1 Y3QgZmVuY2VfY2I7Cj4gQEAgLTI5Miw2ICsyOTUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmVu Y2VfaXNfbGF0ZXIoc3RydWN0IGZlbmNlICpmMSwgc3RydWN0IGZlbmNlICpmMikKPiAgCWlmIChX QVJOX09OKGYxLT5jb250ZXh0ICE9IGYyLT5jb250ZXh0KSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4g IAo+ICsJaWYgKFdBUk5fT04oZjEtPmNvbnRleHQgPT0gRkVOQ0VfTk9fQ09OVEVYVCkpCj4gKwkJ cmV0dXJuIGZhbHNlOwo+ICsKPiAgCXJldHVybiAoaW50KShmMS0+c2Vxbm8gLSBmMi0+c2Vxbm8p ID4gMDsKPiAgfQo+ICAKPiBAQCAtMzA5LDYgKzMxNSw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IGZlbmNlICpmZW5jZV9sYXRlcihzdHJ1Y3QgZmVuY2UgKmYxLCBzdHJ1Y3QgZmVuY2UgKmYyKQo+ ICAJaWYgKFdBUk5fT04oZjEtPmNvbnRleHQgIT0gZjItPmNvbnRleHQpKQo+ICAJCXJldHVybiBO VUxMOwo+ICAKPiArCWlmIChXQVJOX09OKGYxLT5jb250ZXh0ID09IEZFTkNFX05PX0NPTlRFWFQp KQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiAgCS8qCj4gIAkgKiBjYW4ndCBjaGVjayBqdXN0IEZF TkNFX0ZMQUdfU0lHTkFMRURfQklUIGhlcmUsIGl0IG1heSBuZXZlciBoYXZlIGJlZW4KPiAgCSAq IHNldCBpZiBlbmFibGVfc2lnbmFsaW5nIHdhc24ndCBjYWxsZWQsIGFuZCBlbmFibGluZyB0aGF0 IGhlcmUgaXMKPiAtLSAKPiAyLjUuNQo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=