From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3] drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl) Date: Thu, 14 Jul 2016 10:12:17 +0200 Message-ID: <20160714081217.GQ23520@phenom.ffwll.local> References: <20160713202921.GE2565@joana> <1468479859-16767-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BA866E345 for ; Thu, 14 Jul 2016 08:12:22 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id x83so8530295wma.3 for ; Thu, 14 Jul 2016 01:12:22 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1468479859-16767-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Zach Reizner , Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMTQsIDIwMTYgYXQgMDg6MDQ6MTlBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IHZHRU0gYnVmZmVycyBhcmUgdXNlZnVsIGZvciBwYXNzaW5nIGRhdGEgYmV0d2VlbiBz b2Z0d2FyZSBjbGllbnRzIGFuZAo+IGhhcmR3YXJlIHJlbmRlcnMuIEJ5IGFsbG93aW5nIHRoZSB1 c2VyIHRvIGNyZWF0ZSBhbmQgYXR0YWNoIGZlbmNlcyB0bwo+IHRoZSBleHBvcnRlZCB2R0VNIGJ1 ZmZlcnMgKG9uIHRoZSBkbWEtYnVmKSwgdGhlIHVzZXIgY2FuIGltcGxlbWVudCBhCj4gZGVmZXJy ZWQgcmVuZGVyZXIgYW5kIHF1ZXVlIGhhcmR3YXJlIG9wZXJhdGlvbnMgbGlrZSBmbGlwcGluZyBh bmQgdGhlbgo+IHNpZ25hbCB0aGUgYnVmZmVyIHJlYWRpbmVzcyAoaS5lLiB0aGlzIGFsbG93cyB0 aGUgdXNlciB0byBzY2hlZHVsZQo+IG9wZXJhdGlvbnMgb3V0LW9mLW9yZGVyLCBidXQgaGF2ZSB0 aGVtIGNvbXBsZXRlIGluLW9yZGVyKS4KPiAKPiBUaGlzIGFsc28gbWFrZXMgaXQgbXVjaCBlYXNp ZXIgdG8gd3JpdGUgdGlnaHRseSBjb250cm9sbGVkIHRlc3RjYXNlcyBmb3IKPiBkbWEtYnVmIGZl bmNpbmcgYW5kIHNpZ25hbGluZyBiZXR3ZWVuIGhhcmR3YXJlIGRyaXZlcnMuCj4gCj4gdjI6IERv bid0IHByZXRlbmQgdGhlIGZlbmNlcyBleGlzdCBpbiBhbiBvcmRlcmVkIHRpbWVsaW5lLCBidXQg YWxsb2NhdGUKPiBhIHNlcGFyYXRlIGZlbmNlLWNvbnRleHQgZm9yIGVhY2ggZmVuY2Ugc28gdGhh dCB0aGUgZmVuY2VzIGFyZQo+IHVub3JkZXJlZC4KPiB2MzogTWFrZSB0aGUgZGVidWcgb3V0cHV0 IG1vcmUgaW50ZXJlc3RpbmcsIGFuZCBzbyB0aGUgc2lnbmFsZWQgc3RhdHVzLgo+IAo+IFRlc3Rj YXNlOiBpZ3QvdmdlbV9iYXNpYy9kbWFidWYtZmVuY2UKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogU2VhbiBQYXVsIDxzZWFucGF1 bEBjaHJvbWl1bS5vcmc+Cj4gQ2M6IFphY2ggUmVpem5lciA8emFjaHJAZ29vZ2xlLmNvbT4KPiBD YzogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IEFja2VkLWJ5OiBaYWNo IFJlaXpuZXIgPHphY2hyQGdvb2dsZS5jb20+CgpPbmUgdGhpbmcgSSBjb21wbGV0ZWx5IGZvcmdv dHRlbjogVGhpcyBhbGxvd3MgdXNlcnNwYWNlIHRvIGhhbmcga2VybmVsCmRyaXZlcnMuIGk5MTUg KGFuZCBvdGhlciBncHUgZHJpdmVycykgY2FuIHJlY292ZXIgdXNpbmcgaGFuZ2NoZWNrLCBidXQK ZHVtYmVyIGRyaXZlcnMgKHY0bCwgaWYgdGhhdCBldmVyIGhhcHBlbnMpIHByb2JhYmx5IG5ldmVy IGV4Y2VwdCBzdWNoIGEKY2FzZS4gV2UndmUgaGFkIGEgc2ltaWxhciBkaXNjdXNpb24gd2l0aCB0 aGUgdXNlcnNwYWNlIGZlbmNlcyBleHBvc2VkIGluCnN3X2ZlbmNlLCBhbmQgZGVjaWRlZCB0byBt b3ZlIGFsbCB0aG9zZSBpb2N0bCBpbnRvIGRlYnVnZnMuIEkgdGhpbmsgd2UKc2hvdWxkIGRvIHRo ZSBzYW1lIGZvciB0aGlzIHZnZW0tYmFzZWQgZGVidWdnaW5nIG9mIGltcGxpY2l0IHN5bmMuIFNv cnJ5CmZvciByZWFsaXppbmcgdGhpcyB0aGlzIGxhdGUuCi1EYW5pZWwKCj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0v dmdlbS92Z2VtX2Rydi5jICAgfCAgMzQgKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vdmdlbS92 Z2VtX2Rydi5oICAgfCAgMTYgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2Uu YyB8IDIwNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRl L3VhcGkvZHJtL3ZnZW1fZHJtLmggICAgICAgfCAgNjIgKysrKysrKysrKysrCj4gIDUgZmlsZXMg Y2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS91YXBpL2RybS92Z2VtX2RybS5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vTWFrZWZpbGUK PiBpbmRleCAzZjRjN2I4NDIwMjguLmJmY2RlYTEzMzBlNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdmdlbS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL01ha2Vm aWxlCj4gQEAgLTEsNCArMSw0IEBACj4gIGNjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCj4gLXZn ZW0teSA6PSB2Z2VtX2Rydi5vCj4gK3ZnZW0teSA6PSB2Z2VtX2Rydi5vIHZnZW1fZmVuY2Uubwo+ ICAKPiAgb2JqLSQoQ09ORklHX0RSTV9WR0VNKQkrPSB2Z2VtLm8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1f ZHJ2LmMKPiBpbmRleCAyOWMyYWFiM2MxYTcuLmMxNWJhZmIwNjY2NSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zn ZW0vdmdlbV9kcnYuYwo+IEBAIC04Myw2ICs4MywzNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZt X29wZXJhdGlvbnNfc3RydWN0IHZnZW1fZ2VtX3ZtX29wcyA9IHsKPiAgCS5jbG9zZSA9IGRybV9n ZW1fdm1fY2xvc2UsCj4gIH07Cj4gIAo+ICtzdGF0aWMgaW50IHZnZW1fb3BlbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArCXN0cnVjdCB2Z2Vt X2ZpbGUgKnZmaWxlOwo+ICsJaW50IHJldDsKPiArCj4gKwl2ZmlsZSA9IGt6YWxsb2Moc2l6ZW9m KCp2ZmlsZSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCF2ZmlsZSkKPiArCQlyZXR1cm4gLUVOT01F TTsKPiArCj4gKwlmaWxlLT5kcml2ZXJfcHJpdiA9IHZmaWxlOwo+ICsKPiArCXJldCA9IHZnZW1f ZmVuY2Vfb3Blbih2ZmlsZSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJa2ZyZWUodmZpbGUpOwo+ICsJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIHZnZW1fcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxl ICpmaWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgdmdlbV9maWxlICp2ZmlsZSA9IGZpbGUtPmRyaXZlcl9w cml2Owo+ICsKPiArCXZnZW1fZmVuY2VfY2xvc2UodmZpbGUpOwo+ICsJa2ZyZWUodmZpbGUpOwo+ ICt9Cj4gKwo+ICAvKiBpb2N0bHMgKi8KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKnZnZW1fZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IEBAIC0xNjQsNiAr MTkyLDggQEAgdW5yZWY6Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2Mg dmdlbV9pb2N0bHNbXSA9IHsKPiArCURSTV9JT0NUTF9ERUZfRFJWKFZHRU1fRkVOQ0VfQVRUQUNI LCB2Z2VtX2ZlbmNlX2F0dGFjaF9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4g KwlEUk1fSU9DVExfREVGX0RSVihWR0VNX0ZFTkNFX1NJR05BTCwgdmdlbV9mZW5jZV9zaWduYWxf aW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+ICB9Owo+ICAKPiAgc3RhdGljIGlu dCB2Z2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h KQo+IEBAIC0yNzEsOSArMzAxLDEyIEBAIHN0YXRpYyBpbnQgdmdlbV9wcmltZV9tbWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLAo+ICAKPiAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHZn ZW1fZHJpdmVyID0gewo+ICAJLmRyaXZlcl9mZWF0dXJlcwkJPSBEUklWRVJfR0VNIHwgRFJJVkVS X1BSSU1FLAo+ICsJLm9wZW4JCQkJPSB2Z2VtX29wZW4sCj4gKwkucHJlY2xvc2UJCQk9IHZnZW1f cHJlY2xvc2UsCj4gIAkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkCT0gdmdlbV9nZW1fZnJlZV9v YmplY3QsCj4gIAkuZ2VtX3ZtX29wcwkJCT0gJnZnZW1fZ2VtX3ZtX29wcywKPiAgCS5pb2N0bHMJ CQkJPSB2Z2VtX2lvY3RscywKPiArCS5udW1faW9jdGxzIAkJCT0gQVJSQVlfU0laRSh2Z2VtX2lv Y3RscyksCj4gIAkuZm9wcwkJCQk9ICZ2Z2VtX2RyaXZlcl9mb3BzLAo+ICAKPiAgCS5kdW1iX2Ny ZWF0ZQkJCT0gdmdlbV9nZW1fZHVtYl9jcmVhdGUsCj4gQEAgLTMyOCw1ICszNjEsNiBAQCBtb2R1 bGVfaW5pdCh2Z2VtX2luaXQpOwo+ICBtb2R1bGVfZXhpdCh2Z2VtX2V4aXQpOwo+ICAKPiAgTU9E VUxFX0FVVEhPUigiUmVkIEhhdCwgSW5jLiIpOwo+ICtNT0RVTEVfQVVUSE9SKCJJbnRlbCBDb3Jw b3JhdGlvbiIpOwo+ICBNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOwo+ICBNT0RVTEVf TElDRU5TRSgiR1BMIGFuZCBhZGRpdGlvbmFsIHJpZ2h0cyIpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9k cnYuaAo+IGluZGV4IDk4OGNiYWFlNzU4OC4uMWY4Nzk4YWQzMjljIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdl bS92Z2VtX2Rydi5oCj4gQEAgLTMyLDkgKzMyLDI1IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiAgCj4gKyNpbmNsdWRlIDx1YXBpL2RybS92 Z2VtX2RybS5oPgo+ICsKPiArc3RydWN0IHZnZW1fZmlsZSB7Cj4gKwlzdHJ1Y3QgaWRyIGZlbmNl X2lkcjsKPiArCXN0cnVjdCBtdXRleCBmZW5jZV9tdXRleDsKPiArfTsKPiArCj4gICNkZWZpbmUg dG9fdmdlbV9ibyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3Qs IGJhc2UpCj4gIHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0IHsKPiAgCXN0cnVjdCBkcm1fZ2Vt X29iamVjdCBiYXNlOwo+ICB9Owo+ICAKPiAraW50IHZnZW1fZmVuY2Vfb3BlbihzdHJ1Y3Qgdmdl bV9maWxlICpmaWxlKTsKPiAraW50IHZnZW1fZmVuY2VfYXR0YWNoX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gKwkJCSAgICB2b2lkICpkYXRhLAo+ICsJCQkgICAgc3RydWN0IGRybV9m aWxlICpmaWxlKTsKPiAraW50IHZnZW1fZmVuY2Vfc2lnbmFsX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gKwkJCSAgICB2b2lkICpkYXRhLAo+ICsJCQkgICAgc3RydWN0IGRybV9maWxl ICpmaWxlKTsKPiArdm9pZCB2Z2VtX2ZlbmNlX2Nsb3NlKHN0cnVjdCB2Z2VtX2ZpbGUgKmZpbGUp Owo+ICsKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1f ZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iN2RhMTE0MTlhZDYKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCj4gQEAgLTAsMCAr MSwyMDcgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiAr ICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKQo+ICsgKiB0byBk ZWFsIGluIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCj4gKyAqIG9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIKPiArICogbGljZW5zZSwgYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPiAr ICogdGhlbSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRJQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRI RSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTLCBPUiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIKPiArICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JULCBPUiBP VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCj4gKyAqIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPiArI2luY2x1ZGUg PGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4gKwo+ICsjaW5jbHVkZSAidmdlbV9kcnYuaCIKPiArCj4g K3N0cnVjdCB2Z2VtX2ZlbmNlIHsKPiArCXN0cnVjdCBmZW5jZSBiYXNlOwo+ICsJc3RydWN0IHNw aW5sb2NrIGxvY2s7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqdmdlbV9mZW5jZV9n ZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuICJ2Z2Vt IjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKnZnZW1fZmVuY2VfZ2V0X3RpbWVsaW5l X25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuICJ1bmJvdW5kIjsKPiAr fQo+ICsKPiArc3RhdGljIGJvb2wgdmdlbV9mZW5jZV9zaWduYWxlZChzdHJ1Y3QgZmVuY2UgKmZl bmNlKQo+ICt7Cj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHZnZW1f ZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlyZXR1 cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdmdlbV9mZW5jZV92YWx1ZV9zdHIoc3Ry dWN0IGZlbmNlICpmZW5jZSwgY2hhciAqc3RyLCBpbnQgc2l6ZSkKPiArewo+ICsJc25wcmludGYo c3RyLCBzaXplLCAiJXUiLCBmZW5jZS0+c2Vxbm8pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2 Z2VtX2ZlbmNlX3RpbWVsaW5lX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBjaGFyICpz dHIsCj4gKwkJCQkJICBpbnQgc2l6ZSkKPiArewo+ICsJc25wcmludGYoc3RyLCBzaXplLCAiJXUi LCBmZW5jZV9pc19zaWduYWxlZChmZW5jZSkgPyBmZW5jZS0+c2Vxbm8gOiAwKTsKPiArfQo+ICsK PiArY29uc3Qgc3RydWN0IGZlbmNlX29wcyB2Z2VtX2ZlbmNlX29wcyA9IHsKPiArCS5nZXRfZHJp dmVyX25hbWUgPSB2Z2VtX2ZlbmNlX2dldF9kcml2ZXJfbmFtZSwKPiArCS5nZXRfdGltZWxpbmVf bmFtZSA9IHZnZW1fZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUsCj4gKwkuZW5hYmxlX3NpZ25hbGlu ZyA9IHZnZW1fZmVuY2VfZW5hYmxlX3NpZ25hbGluZywKPiArCS5zaWduYWxlZCA9IHZnZW1fZmVu Y2Vfc2lnbmFsZWQsCj4gKwkud2FpdCA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKPiArCS5mZW5jZV92 YWx1ZV9zdHIgPSB2Z2VtX2ZlbmNlX3ZhbHVlX3N0ciwKPiArCS50aW1lbGluZV92YWx1ZV9zdHIg PSB2Z2VtX2ZlbmNlX3RpbWVsaW5lX3ZhbHVlX3N0ciwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgZmVuY2UgKnZnZW1fZmVuY2VfY3JlYXRlKHN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlKQo+ICt7 Cj4gKwlzdHJ1Y3QgdmdlbV9mZW5jZSAqZmVuY2U7Cj4gKwo+ICsJZmVuY2UgPSBremFsbG9jKHNp emVvZigqZmVuY2UpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZmVuY2UpCj4gKwkJcmV0dXJuIE5V TEw7Cj4gKwo+ICsJc3Bpbl9sb2NrX2luaXQoJmZlbmNlLT5sb2NrKTsKPiArCWZlbmNlX2luaXQo JmZlbmNlLT5iYXNlLCAmdmdlbV9mZW5jZV9vcHMsICZmZW5jZS0+bG9jaywKPiArCQkgICBmZW5j ZV9jb250ZXh0X2FsbG9jKDEpLCAxKTsKPiArCj4gKwlyZXR1cm4gJmZlbmNlLT5iYXNlOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGF0dGFjaF9kbWFidWYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiArCQkJIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmOwo+ICsKPiArCWlmIChvYmotPmRtYV9idWYpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJZG1hYnVmID0gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9leHBvcnQoZGV2LCBvYmosIDApOwo+ ICsJaWYgKElTX0VSUihkbWFidWYpKQo+ICsJCXJldHVybiBQVFJfRVJSKGRtYWJ1Zik7Cj4gKwo+ ICsJb2JqLT5kbWFfYnVmID0gZG1hYnVmOwo+ICsJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9i aik7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IHZnZW1fZmVuY2VfYXR0YWNoX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCSAgICB2b2lkICpkYXRhLAo+ICsJCQkgICAg c3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3ZnZW1fZmVuY2VfYXR0 YWNoICphcmcgPSBkYXRhOwo+ICsJc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUgPSBmaWxlLT5kcml2 ZXJfcHJpdjsKPiArCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7Cj4gKwlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iajsKPiArCXN0cnVjdCBmZW5jZSAqZmVuY2U7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCWlmIChhcmctPmZsYWdzICYgflZHRU1fRkVOQ0VfV1JJVEUpCj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwo+ICsJaWYgKGFyZy0+cGFkKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsK PiArCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmctPmhhbmRsZSk7Cj4gKwlp ZiAoIW9iaikKPiArCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwlyZXQgPSBhdHRhY2hfZG1hYnVm KGRldiwgb2JqKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJZmVuY2UgPSB2 Z2VtX2ZlbmNlX2NyZWF0ZSh2ZmlsZSk7Cj4gKwlpZiAoIWZlbmNlKSB7Cj4gKwkJcmV0ID0gLUVO T01FTTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlyZXQgPSAwOwo+ICsJcmVzdiA9IG9i ai0+ZG1hX2J1Zi0+cmVzdjsKPiArCW11dGV4X2xvY2soJnJlc3YtPmxvY2suYmFzZSk7Cj4gKwlp ZiAoYXJnLT5mbGFncyAmIFZHRU1fRkVOQ0VfV1JJVEUpCj4gKwkJcmVzZXJ2YXRpb25fb2JqZWN0 X2FkZF9leGNsX2ZlbmNlKHJlc3YsIGZlbmNlKTsKPiArCWVsc2UgaWYgKChyZXQgPSByZXNlcnZh dGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFyZWQocmVzdikpID09IDApCj4gKwkJcmVzZXJ2YXRpb25f b2JqZWN0X2FkZF9zaGFyZWRfZmVuY2UocmVzdiwgZmVuY2UpOwo+ICsJbXV0ZXhfdW5sb2NrKCZy ZXN2LT5sb2NrLmJhc2UpOwo+ICsKPiArCWlmIChyZXQgPT0gMCkgewo+ICsJCW11dGV4X2xvY2so JnZmaWxlLT5mZW5jZV9tdXRleCk7Cj4gKwkJcmV0ID0gaWRyX2FsbG9jKCZ2ZmlsZS0+ZmVuY2Vf aWRyLCBmZW5jZSwgMSwgMCwgR0ZQX0tFUk5FTCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZ2ZmlsZS0+ ZmVuY2VfbXV0ZXgpOwo+ICsJCWlmIChyZXQgPiAwKSB7Cj4gKwkJCWFyZy0+b3V0X2ZlbmNlID0g cmV0Owo+ICsJCQlyZXQgPSAwOwo+ICsJCX0KPiArCX0KPiArCWlmIChyZXQpIHsKPiArCQlmZW5j ZV9zaWduYWwoZmVuY2UpOwo+ICsJCWZlbmNlX3B1dChmZW5jZSk7Cj4gKwl9Cj4gK291dDoKPiAr CWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtpbnQgdmdlbV9mZW5jZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiArCQkJICAgIHZvaWQgKmRhdGEsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCj4gK3sKPiArCXN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlID0gZmlsZS0+ZHJpdmVyX3By aXY7Cj4gKwlzdHJ1Y3QgZHJtX3ZnZW1fZmVuY2Vfc2lnbmFsICphcmcgPSBkYXRhOwo+ICsJc3Ry dWN0IGZlbmNlICpmZW5jZTsKPiArCj4gKwlpZiAoYXJnLT5mbGFncykKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCj4gKwltdXRleF9sb2NrKCZ2ZmlsZS0+ZmVuY2VfbXV0ZXgpOwo+ICsJZmVuY2Ug PSBpZHJfcmVwbGFjZSgmdmZpbGUtPmZlbmNlX2lkciwgTlVMTCwgYXJnLT5mZW5jZSk7Cj4gKwlt dXRleF91bmxvY2soJnZmaWxlLT5mZW5jZV9tdXRleCk7Cj4gKwlpZiAoIWZlbmNlKQo+ICsJCXJl dHVybiAtRU5PRU5UOwo+ICsJaWYgKElTX0VSUihmZW5jZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIo ZmVuY2UpOwo+ICsKPiArCWZlbmNlX3NpZ25hbChmZW5jZSk7Cj4gKwlmZW5jZV9wdXQoZmVuY2Up Owo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCB2Z2VtX2ZlbmNlX29wZW4oc3RydWN0IHZn ZW1fZmlsZSAqdmZpbGUpCj4gK3sKPiArCW11dGV4X2luaXQoJnZmaWxlLT5mZW5jZV9tdXRleCk7 Cj4gKwlpZHJfaW5pdCgmdmZpbGUtPmZlbmNlX2lkcik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgX192Z2VtX2ZlbmNlX2lkcl9maW5pKGludCBpZCwgdm9pZCAqcCwg dm9pZCAqZGF0YSkKPiArewo+ICsJZmVuY2Vfc2lnbmFsKHApOwo+ICsJZmVuY2VfcHV0KHApOwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgdmdlbV9mZW5jZV9jbG9zZShzdHJ1Y3Qgdmdl bV9maWxlICp2ZmlsZSkKPiArewo+ICsJaWRyX2Zvcl9lYWNoKCZ2ZmlsZS0+ZmVuY2VfaWRyLCBf X3ZnZW1fZmVuY2VfaWRyX2ZpbmksIHZmaWxlKTsKPiArCWlkcl9kZXN0cm95KCZ2ZmlsZS0+ZmVu Y2VfaWRyKTsKPiArfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL3ZnZW1fZHJtLmgg Yi9pbmNsdWRlL3VhcGkvZHJtL3ZnZW1fZHJtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uMzUyZDJmYWU4ZGU5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2lu Y2x1ZGUvdWFwaS9kcm0vdmdlbV9kcm0uaAo+IEBAIC0wLDAgKzEsNjIgQEAKPiArLyoKPiArICog Q29weXJpZ2h0IDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiArICogQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ICsgKiAiU29mdHdhcmUi KSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n Cj4gKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwKPiArICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwo+ICsgKiBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KPiAr ICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQo+ICsg KiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucwo+ICsgKiBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTCj4gKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YKPiArICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4KPiArICogSU4gTk8gRVZFTlQg U0hBTEwgVFVOR1NURU4gR1JBUEhJQ1MgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZP Ugo+ICsgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwKPiArICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKPiArICogU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ ICsKPiArI2lmbmRlZiBfVUFQSV9WR0VNX0RSTV9IXwo+ICsjZGVmaW5lIF9VQVBJX1ZHRU1fRFJN X0hfCj4gKwo+ICsjaW5jbHVkZSAiZHJtLmgiCj4gKwo+ICsjaWYgZGVmaW5lZChfX2NwbHVzcGx1 cykKPiArZXh0ZXJuICJDIiB7Cj4gKyNlbmRpZgo+ICsKPiArLyogUGxlYXNlIG5vdGUgdGhhdCBt b2RpZmljYXRpb25zIHRvIGFsbCBzdHJ1Y3RzIGRlZmluZWQgaGVyZSBhcmUKPiArICogc3ViamVj dCB0byBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb25zdHJhaW50cy4KPiArICovCj4gKyNkZWZp bmUgRFJNX1ZHRU1fRkVOQ0VfQVRUQUNICTB4MQo+ICsjZGVmaW5lIERSTV9WR0VNX0ZFTkNFX1NJ R05BTAkweDIKPiArCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX1ZHRU1fRkVOQ0VfQVRUQUNICURSTV9J T1dSKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZHRU1fRkVOQ0VfQVRUQUNILCBzdHJ1Y3QgZHJt X3ZnZW1fZmVuY2VfYXR0YWNoKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9WR0VNX0ZFTkNFX1NJR05B TAlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZHRU1fRkVOQ0VfU0lHTkFMLCBzdHJ1 Y3QgZHJtX3ZnZW1fZmVuY2Vfc2lnbmFsKQo+ICsKPiArc3RydWN0IGRybV92Z2VtX2ZlbmNlX2F0 dGFjaCB7Cj4gKwlfX3UzMiBoYW5kbGU7Cj4gKwlfX3UzMiBmbGFnczsKPiArI2RlZmluZSBWR0VN X0ZFTkNFX1dSSVRFIDB4MQo+ICsJX191MzIgb3V0X2ZlbmNlOwo+ICsJX191MzIgcGFkOwo+ICt9 Owo+ICsKPiArc3RydWN0IGRybV92Z2VtX2ZlbmNlX3NpZ25hbCB7Cj4gKwlfX3UzMiBmZW5jZTsK PiArCV9fdTMyIGZsYWdzOwo+ICt9Owo+ICsKPiArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCj4g K30KPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX1VBUElfVkdFTV9EUk1fSF8gKi8KPiAtLSAK PiAyLjguMQo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENv cnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=