From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH 3/3] drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl) Date: Mon, 11 Jul 2016 12:10:40 -0300 Message-ID: <20160711151040.GA2565@joana> References: <1468242488-1505-1-git-send-email-chris@chris-wilson.co.uk> <1468242488-1505-4-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: Content-Disposition: inline In-Reply-To: <1468242488-1505-4-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Gustavo Padovan , daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, Zach Reizner , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org MjAxNi0wNy0xMSBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az46Cgo+IHZH RU0gYnVmZmVycyBhcmUgdXNlZnVsIGZvciBwYXNzaW5nIGRhdGEgYmV0d2VlbiBzb2Z0d2FyZSBj bGllbnRzIGFuZAo+IGhhcmR3YXJlIHJlbmRlcnMuIEJ5IGFsbG93aW5nIHRoZSB1c2VyIHRvIGNy ZWF0ZSBhbmQgYXR0YWNoIGZlbmNlcyB0bwo+IHRoZSBleHBvcnRlZCB2R0VNIGJ1ZmZlcnMgKG9u IHRoZSBkbWEtYnVmKSwgdGhlIHVzZXIgY2FuIGltcGxlbWVudCBhCj4gZGVmZXJyZWQgcmVuZGVy ZXIgYW5kIHF1ZXVlIGhhcmR3YXJlIG9wZXJhdGlvbnMgbGlrZSBmbGlwcGluZyBhbmQgdGhlbgo+ IHNpZ25hbCB0aGUgYnVmZmVyIHJlYWRpbmVzcyAoaS5lLiB0aGlzIGFsbG93cyB0aGUgdXNlciB0 byBzY2hlZHVsZQo+IG9wZXJhdGlvbnMgb3V0LW9mLW9yZGVyLCBidXQgaGF2ZSB0aGVtIGNvbXBs ZXRlIGluLW9yZGVyKS4KPiAKPiBUaGlzIGFsc28gbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd3Jp dGUgdGlnaHRseSBjb250cm9sbGVkIHRlc3RjYXNlcyBmb3IKPiBkbWEtYnVmIGZlbmNpbmcgYW5k IHNpZ25hbGluZyBiZXR3ZWVuIGhhcmR3YXJlIGRyaXZlcnMuCj4gCj4gVGVzdGNhc2U6IGlndC92 Z2VtX2Jhc2ljL2RtYWJ1Zi1mZW5jZQo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVt Lm9yZz4KPiBDYzogWmFjaCBSZWl6bmVyIDx6YWNockBnb29nbGUuY29tPgo+IENjOiBHdXN0YXZv IFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+Cj4gQWNrZWQtYnk6IFph Y2ggUmVpem5lciA8emFjaHJAZ29vZ2xlLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3Zn ZW0vTWFrZWZpbGUgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2 LmMgICB8ICAzNCArKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaCAgIHwg IDE4ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jIHwgMjIwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUvdWFwaS9kcm0vdmdl bV9kcm0uaCAgICAgICB8ICA2MiArKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDMzNSBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv dWFwaS9kcm0vdmdlbV9kcm0uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmdl bS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlCj4gaW5kZXggM2Y0Yzdi ODQyMDI4Li5iZmNkZWExMzMwZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0v TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZQo+IEBAIC0xLDQg KzEsNCBAQAo+ICBjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybQo+IC12Z2VtLXkgOj0gdmdlbV9k cnYubwo+ICt2Z2VtLXkgOj0gdmdlbV9kcnYubyB2Z2VtX2ZlbmNlLm8KPiAgCj4gIG9iai0kKENP TkZJR19EUk1fVkdFTSkJKz0gdmdlbS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 Z2VtL3ZnZW1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jCj4gaW5kZXgg YjVmYjk2OGQyZDVjLi4yNjU5ZTVjZGE4NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3ZnZW0vdmdlbV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMK PiBAQCAtODMsNiArODMsMzQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0 cnVjdCB2Z2VtX2dlbV92bV9vcHMgPSB7Cj4gIAkuY2xvc2UgPSBkcm1fZ2VtX3ZtX2Nsb3NlLAo+ ICB9Owo+ICAKPiArc3RhdGljIGludCB2Z2VtX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgdmdlbV9maWxlICp2ZmlsZTsK PiArCWludCByZXQ7Cj4gKwo+ICsJdmZpbGUgPSBremFsbG9jKHNpemVvZigqdmZpbGUpLCBHRlBf S0VSTkVMKTsKPiArCWlmICghdmZpbGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZmls ZS0+ZHJpdmVyX3ByaXYgPSB2ZmlsZTsKPiArCj4gKwlyZXQgPSB2Z2VtX2ZlbmNlX29wZW4odmZp bGUpOwo+ICsJaWYgKHJldCkgewo+ICsJCWtmcmVlKHZmaWxlKTsKPiArCQlyZXR1cm4gcmV0Owo+ ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2Z2VtX3ByZWNs b3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ ICsJc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiArCj4gKwl2 Z2VtX2ZlbmNlX2Nsb3NlKHZmaWxlKTsKPiArCWtmcmVlKHZmaWxlKTsKPiArfQo+ICsKPiAgLyog aW9jdGxzICovCj4gIAo+ICBzdGF0aWMgc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2Z2VtX2dlbV9j cmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBAQCAtMTY0LDYgKzE5Miw4IEBAIHVucmVm Ogo+ICB9Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGRybV9pb2N0bF9kZXNjIHZnZW1faW9jdGxzW10g PSB7Cj4gKwlEUk1fSU9DVExfREVGX0RSVihWR0VNX0ZFTkNFX0FUVEFDSCwgdmdlbV9mZW5jZV9h dHRhY2hfaW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+ICsJRFJNX0lPQ1RMX0RF Rl9EUlYoVkdFTV9GRU5DRV9TSUdOQUwsIHZnZW1fZmVuY2Vfc2lnbmFsX2lvY3RsLCBEUk1fQVVU SHxEUk1fUkVOREVSX0FMTE9XKSwKPiAgfTsKPiAgCj4gIHN0YXRpYyBpbnQgdmdlbV9tbWFwKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiBAQCAtMjcxLDkg KzMwMSwxMiBAQCBzdGF0aWMgaW50IHZnZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaiwKPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciB2Z2VtX2RyaXZlciA9IHsK PiAgCS5kcml2ZXJfZmVhdHVyZXMJCT0gRFJJVkVSX0dFTSB8IERSSVZFUl9QUklNRSwKPiArCS5v cGVuCQkJCT0gdmdlbV9vcGVuLAo+ICsJLnByZWNsb3NlCQkJPSB2Z2VtX3ByZWNsb3NlLAo+ICAJ LmdlbV9mcmVlX29iamVjdF91bmxvY2tlZAk9IHZnZW1fZ2VtX2ZyZWVfb2JqZWN0LAo+ICAJLmdl bV92bV9vcHMJCQk9ICZ2Z2VtX2dlbV92bV9vcHMsCj4gIAkuaW9jdGxzCQkJCT0gdmdlbV9pb2N0 bHMsCj4gKwkubnVtX2lvY3RscyAJCQk9IEFSUkFZX1NJWkUodmdlbV9pb2N0bHMpLAo+ICAJLmZv cHMJCQkJPSAmdmdlbV9kcml2ZXJfZm9wcywKPiAgCj4gIAkuZHVtYl9jcmVhdGUJCQk9IHZnZW1f Z2VtX2R1bWJfY3JlYXRlLAo+IEBAIC0zMjgsNSArMzYxLDYgQEAgbW9kdWxlX2luaXQodmdlbV9p bml0KTsKPiAgbW9kdWxlX2V4aXQodmdlbV9leGl0KTsKPiAgCj4gIE1PRFVMRV9BVVRIT1IoIlJl ZCBIYXQsIEluYy4iKTsKPiArTU9EVUxFX0FVVEhPUigiSW50ZWwgQ29ycG9yYXRpb24iKTsKPiAg TU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKPiAgTU9EVUxFX0xJQ0VOU0UoIkdQTCBh bmQgYWRkaXRpb25hbCByaWdodHMiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zn ZW0vdmdlbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmgKPiBpbmRleCA5 ODhjYmFhZTc1ODguLjg4Y2UyMTAxMGUyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v dmdlbS92Z2VtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaAo+ IEBAIC0zMiw5ICszMiwyNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUg PGRybS9kcm1fZ2VtLmg+Cj4gIAo+ICsjaW5jbHVkZSA8dWFwaS9kcm0vdmdlbV9kcm0uaD4KPiAr Cj4gK3N0cnVjdCB2Z2VtX2ZpbGUgewo+ICsJc3RydWN0IGlkciBmZW5jZV9pZHI7Cj4gKwlzdHJ1 Y3QgbXV0ZXggZmVuY2VfbXV0ZXg7Cj4gKwl1NjQgZmVuY2VfY29udGV4dDsKPiArCWF0b21pY190 IGZlbmNlX3NlcW5vOwo+ICt9Owo+ICsKPiAgI2RlZmluZSB0b192Z2VtX2JvKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCwgYmFzZSkKPiAgc3RydWN0IGRybV92 Z2VtX2dlbV9vYmplY3Qgewo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0IGJhc2U7Cj4gIH07Cj4g IAo+ICtpbnQgdmdlbV9mZW5jZV9vcGVuKHN0cnVjdCB2Z2VtX2ZpbGUgKmZpbGUpOwo+ICtpbnQg dmdlbV9mZW5jZV9hdHRhY2hfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJICAg IHZvaWQgKmRhdGEsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ICtpbnQgdmdl bV9mZW5jZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJICAgIHZv aWQgKmRhdGEsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ICt2b2lkIHZnZW1f ZmVuY2VfY2xvc2Uoc3RydWN0IHZnZW1fZmlsZSAqZmlsZSk7Cj4gKwo+ICAjZW5kaWYKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jIGIvZHJpdmVycy9ncHUv ZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjY0OWU5ZTFjZWUzNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMKPiBAQCAtMCwwICsxLDIyMCBAQAo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpCj4gKyAqIHRvIGRlYWwgaW4gdGhlIHNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogb24g dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1Ygo+ICsgKiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+ICsgKiB0aGVtIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4g KyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNs dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBT b2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVElCSUxJ VFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMsIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUgo+ICsgKiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQsIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4KPiArICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4K PiArCj4gKyNpbmNsdWRlICJ2Z2VtX2Rydi5oIgo+ICsKPiArc3RydWN0IHZnZW1fZmVuY2Ugewo+ ICsJc3RydWN0IGZlbmNlIGJhc2U7Cj4gKwlzdHJ1Y3Qgc3BpbmxvY2sgbG9jazsKPiArfTsKPiAr Cj4gK3N0YXRpYyBjb25zdCBjaGFyICp2Z2VtX2ZlbmNlX2dldF9kcml2ZXJfbmFtZShzdHJ1Y3Qg ZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlyZXR1cm4gInZnZW0iOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Y29uc3QgY2hhciAqdmdlbV9mZW5jZV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgKmZl bmNlKQo+ICt7Cj4gKwlyZXR1cm4gImZpbGUiOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCB2Z2Vt X2ZlbmNlX3NpZ25hbGVkKHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4gK3sKPiArCXJldHVybiBmYWxz ZTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgdmdlbV9mZW5jZV9lbmFibGVfc2lnbmFsaW5nKHN0 cnVjdCBmZW5jZSAqZmVuY2UpCj4gK3sKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCB2Z2VtX2ZlbmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBjaGFyICpz dHIsIGludCBzaXplKQo+ICt7Cj4gKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIGZlbmNlLT5z ZXFubyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHZnZW1fZmVuY2VfdGltZWxpbmVfdmFsdWVf c3RyKHN0cnVjdCBmZW5jZSAqZmVuY2UsIGNoYXIgKnN0ciwKPiArCQkJCQkgIGludCBzaXplKQo+ ICt7Cj4gKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIDApOwo+ICt9CgpJIHRoaW5rIHRoaXMg d291bGQgYmUgbWFpbmx5IHVzZWQgZm9yIGRlYnVnIHB1cnBvc2VzIGJ1dCBpdCB3b3VsZCBiZQpu aWNlIHRvIGFjdHVhbGx5IHJldHVybiB0aGUgY3VycmVudCB0aW1lbGluZSB2YWx1ZSBoZXJlLCBp LmUuLCB0aGUKc2Vxbm8gb2YgdGhlIGxhc3Qgc2lnbmFsbGVkIGZlbmNlLgoKVGhpcyB3b3VsZCBh bHNvIGFsbG93IHRvIHJldHVybiBpZiB0aGUgZmVuY2Ugd2FzIHNpZ25hbGVkIG9yIG5vdAppbiB2 Z2VtX2ZlbmNlX3NpZ25hbGVkKCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybiBmYWxzZS4gQnV0IGlm IHRoZQpmZW5jZV9wdXQoKSBhZnRlciBmZW5jZV9zaWduYWwoKSByZWxlYXNlcyB0aGUgbGFzdCBy ZWZlcmVuY2UgdG8KdGhlIGZlbmNlIHZnZW1fZmVuY2Vfc2lnbmFsZWQoKSB3b3VsZCBiZSBuZXZl ciBiZSBjYWxsZWQgYWZ0ZXIKaXQgc2lnbmFsbGVkLgoKPiArCj4gK2NvbnN0IHN0cnVjdCBmZW5j ZV9vcHMgdmdlbV9mZW5jZV9vcHMgPSB7Cj4gKwkuZ2V0X2RyaXZlcl9uYW1lID0gdmdlbV9mZW5j ZV9nZXRfZHJpdmVyX25hbWUsCj4gKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSB2Z2VtX2ZlbmNlX2dl dF90aW1lbGluZV9uYW1lLAo+ICsJLmVuYWJsZV9zaWduYWxpbmcgPSB2Z2VtX2ZlbmNlX2VuYWJs ZV9zaWduYWxpbmcsCj4gKwkuc2lnbmFsZWQgPSB2Z2VtX2ZlbmNlX3NpZ25hbGVkLAo+ICsJLndh aXQgPSBmZW5jZV9kZWZhdWx0X3dhaXQsCj4gKwkuZmVuY2VfdmFsdWVfc3RyID0gdmdlbV9mZW5j ZV92YWx1ZV9zdHIsCj4gKwkudGltZWxpbmVfdmFsdWVfc3RyID0gdmdlbV9mZW5jZV90aW1lbGlu ZV92YWx1ZV9zdHIsCj4gK307Cj4gKwo+ICtzdGF0aWMgdTMyIHZnZW1fZmVuY2VfbmV4dF9zZXFu byhzdHJ1Y3QgdmdlbV9maWxlICp2ZmlsZSkKPiArewo+ICsJdTMyIHNlcW5vOwo+ICsKPiArCXNl cW5vID0gYXRvbWljX2luY19yZXR1cm4oJnZmaWxlLT5mZW5jZV9zZXFubyk7Cj4gKwlpZiAoc2Vx bm8gPT0gMCkKPiArCQlzZXFubyA9IGF0b21pY19pbmNfcmV0dXJuKCZ2ZmlsZS0+ZmVuY2Vfc2Vx bm8pOwo+ICsKPiArCXJldHVybiBzZXFubzsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBmZW5j ZSAqdmdlbV9mZW5jZV9jcmVhdGUoc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUpCj4gK3sKPiArCXN0 cnVjdCB2Z2VtX2ZlbmNlICpmZW5jZTsKPiArCj4gKwlmZW5jZSA9IGt6YWxsb2Moc2l6ZW9mKCpm ZW5jZSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFmZW5jZSkKPiArCQlyZXR1cm4gTlVMTDsKPiAr Cj4gKwlzcGluX2xvY2tfaW5pdCgmZmVuY2UtPmxvY2spOwo+ICsJZmVuY2VfaW5pdCgmZmVuY2Ut PmJhc2UsCj4gKwkJICAgJnZnZW1fZmVuY2Vfb3BzLAo+ICsJCSAgICZmZW5jZS0+bG9jaywKPiAr CQkgICB2ZmlsZS0+ZmVuY2VfY29udGV4dCwKPiArCQkgICB2Z2VtX2ZlbmNlX25leHRfc2Vxbm8o dmZpbGUpKTsKClNoYWxsIHdlIG1ha2Ugc2Vxbm8gdTY0IHRvbz8KCglHdXN0YXZvCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=