From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v5 1/4] drm/fence: add in-fences support Date: Fri, 21 Oct 2016 14:51:12 +0200 Message-ID: <20161021125112.GC20761@phenom.ffwll.local> References: <1476975005-30441-1-git-send-email-gustavo@padovan.org> <1476975005-30441-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-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id F09A96ECFA for ; Fri, 21 Oct 2016 12:51:17 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id x23so5523943lfi.1 for ; Fri, 21 Oct 2016 05:51:17 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1476975005-30441-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: marcheu@google.com, Daniel Stone , seanpaul@google.com, Daniel Vetter , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, m.chehab@samsung.com, Gustavo Padovan , John Harrison , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBPY3QgMjAsIDIwMTYgYXQgMTI6NTA6MDJQTSAtMDIwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBUaGVyZSBpcyBub3cgYSBuZXcgcHJvcGVydHkgY2FsbGVkIEZFTkNFX0ZE IGF0dGFjaGVkIHRvIGV2ZXJ5IHBsYW5lCj4gc3RhdGUgdGhhdCByZWNlaXZlcyB0aGUgc3luY19m aWxlIGZkIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYXRvbWljIGNvbW1pdAo+IElPQ1RMLgo+IAo+ IFRoZSBmZCBpcyB0aGVuIHRyYW5zbGF0ZWQgdG8gYSBmZW5jZSAodGhhdCBtYXkgYmUgYSBmZW5j ZV9jb2xsZWN0aW9uCj4gc3ViY2xhc3Mgb3IganVzdCBhIG5vcm1hbCBmZW5jZSkgYW5kIHRoZW4g dXNlZCBieSBEUk0gdG8gZmVuY2Vfd2FpdCgpIGZvcgo+IGFsbCBmZW5jZXMgaW4gdGhlIHN5bmNf ZmlsZSB0byBzaWduYWwuIFNvIGl0IG9ubHkgY29tbWl0cyB3aGVuIGFsbAo+IGZyYW1lYnVmZmVy cyBhcmUgcmVhZHkgdG8gc2Nhbm91dC4KPiAKPiB2MjogQ29tbWVudHMgYnkgRGFuaWVsIFZldHRl cjoKPiAJLSByZW1vdmUgc2V0IHN0YXRlLT5mZW5jZSA9IE5VTEwgaW4gZGVzdHJveSBwaGFzZQo+ IAktIGFjY2VwdCBmZW5jZSAtMSBhcyB2YWxpZCBhbmQganVzdCByZXR1cm4gMAo+IAktIGRvIG5v dCBjYWxsIGZlbmNlX2dldCgpIC0gc3luY19maWxlX2ZlbmNlc19nZXQoKSBhbHJlYWR5IGNhbGxz IGl0Cj4gCS0gZmVuY2VfcHV0KCkgaWYgc3RhdGUtPmZlbmNlIGlzIGFscmVhZHkgc2V0LCBpbiBj YXNlIHVzZXJzcGFjZQo+IAlzZXQgdGhlIHByb3BlcnR5IG1vcmUgdGhhbiBvbmNlLgo+IAo+IHYz OiBXQVJOX09OIGlmIGZlbmNlIGlzIHNldCBidXQgc3RhdGUgaGFzIG5vIEZCCj4gCj4gdjQ6IENv bW1lbnQgZnJvbSBNYWFydGVuIExhbmtob3JzdAo+IAktIGFsbG93IHNldCBmZW5jZSB3aXRoIG5v IHJlbGF0ZWQgZmIKPiAKPiB2NTogcmVuYW1lIEZFTkNFX0ZEIHRvIElOX0ZFTkNFX0ZECj4gCj4g U2lnbmVkLW9mZi1ieTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3Jh LmNvLnVrPgoKU2luY2UgeW91IHJlbmFtZSBwbGFuZV9zdGF0ZS0+ZmVuY2UgdG8gaW5fZmVuY2Ug KHdoeSBleGFjdGx5PykgdGhpcyBicmVha3MKY29tcGlsYXRpb24gZm9yIGlteCBhbmQgbXNtLiBB bHNvIHRoZXJlJ3MgdGhlIHF1ZXN0aW9uIG9mIHdoaWNoIGZlbmNlCnNob3VsZCB3aW4sIGlmIHRo ZXJlJ3MgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQgZmVuY2VzLiBJIHRoaW5rIHRoZSBiZXN0 CndheSB0byBzb2x2ZSB0aGF0IGlzIGJ5IGFkZGluZyBhIGhlbHBlciB0byBzZXQgdGhlIGltcGxp Y2l0IGZlbmNlLCB3aGljaApkcml2ZXJzIGFyZSBzdXBwb3NlZCB0byBjYWxsLiBUaGF0IGhlbHBl ciBvbmx5IHNldHMgdGhlIGZlbmNlIGlmIHRoZXJlJ3MKbm90IHlldCBhbiBleHBsaWNpdCBmZW5j ZSBhdHRhY2hlZC4gTmV3IHNlcXVlbmNlIHdvdWxkIGJlOgoKLSBwYXRjaDE6IHJvbGwgb3V0IHRo YXQgaGVscGVyIChlLmcuIGRybV9hdG9taWNfcGxhbmVfc3RhdGVfc2V0X2ZlbmNlIG9yCiAgd2hh dGV2ZXIpIGZvciBhbGwgZHJpdmVycyB1c2luZyBpdC4KLSBwYXRjaDIgKHRoaXMgb25lIGhlcmUp OiBhZGQgZXhwbGljaXQgZmVuY2VzIGFuZCBjaGFuZ2UgdGhlIGhlbHBlciB0bwogIGNvb3BvcmF0 ZSBjb3JyZWN0bHkuCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAg ICB8ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCAxNCArKysr KysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8IDEzICsr KysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICAgICAgICAgfCAgNiAr KysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jICAgICAgICAgfCAgMSArCj4gIGlu Y2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgIHwgIDUgKysrKysKPiAgaW5jbHVkZS9k cm0vZHJtX3BsYW5lLmggICAgICAgICAgICAgfCAgNCArKy0tCj4gIDcgZmlsZXMgY2hhbmdlZCwg MzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IGluZGV4IDQ4MzA1 OWEuLjQzY2IzM2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IEBAIC0xMiw2ICsxMiw3IEBAIG1lbnVjb25maWcg RFJNCj4gIAlzZWxlY3QgSTJDCj4gIAlzZWxlY3QgSTJDX0FMR09CSVQKPiAgCXNlbGVjdCBETUFf U0hBUkVEX0JVRkZFUgo+ICsJc2VsZWN0IFNZTkNfRklMRQo+ICAJaGVscAo+ICAJICBLZXJuZWwt bGV2ZWwgc3VwcG9ydCBmb3IgdGhlIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERS SSkKPiAgCSAgaW50cm9kdWNlZCBpbiBYRnJlZTg2IDQuMC4gSWYgeW91IHNheSBZIGhlcmUsIHlv dSBuZWVkIHRvIHNlbGVjdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IGluZGV4IDVkZDcwNTQuLmIzMjg0 YjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMzAsNiArMzAsNyBAQAo+ICAjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZS5oPgo+ICAjaW5j bHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmls ZS5oPgo+ICAKPiAgI2luY2x1ZGUgImRybV9jcnRjX2ludGVybmFsLmgiCj4gIAo+IEBAIC02ODYs NiArNjg3LDE3IEBAIGludCBkcm1fYXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiAgCQlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUoc3RhdGUsIGZi KTsKPiAgCQlpZiAoZmIpCj4gIAkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShmYik7Cj4g Kwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9pbl9mZW5jZV9mZCkgewo+ICsJ CWlmIChVNjQySTY0KHZhbCkgPT0gLTEpCj4gKwkJCXJldHVybiAwOwo+ICsKPiArCQlpZiAoc3Rh dGUtPmluX2ZlbmNlKQo+ICsJCQlmZW5jZV9wdXQoc3RhdGUtPmluX2ZlbmNlKTsKPiArCj4gKwkJ c3RhdGUtPmluX2ZlbmNlID0gc3luY19maWxlX2dldF9mZW5jZSh2YWwpOwo+ICsJCWlmICghc3Rh dGUtPmluX2ZlbmNlKQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gIAl9IGVsc2UgaWYgKHBy b3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX2lkKSB7Cj4gIAkJc3RydWN0IGRybV9jcnRjICpj cnRjID0gZHJtX2NydGNfZmluZChkZXYsIHZhbCk7Cj4gIAkJcmV0dXJuIGRybV9hdG9taWNfc2V0 X2NydGNfZm9yX3BsYW5lKHN0YXRlLCBjcnRjKTsKPiBAQCAtNzQ1LDYgKzc1Nyw4IEBAIGRybV9h dG9taWNfcGxhbmVfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAKPiAg CWlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfZmJfaWQpIHsKPiAgCQkqdmFsID0gKHN0YXRl LT5mYikgPyBzdGF0ZS0+ZmItPmJhc2UuaWQgOiAwOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9 PSBjb25maWctPnByb3BfaW5fZmVuY2VfZmQpIHsKPiArCQkqdmFsID0gLTE7Cj4gIAl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX2lkKSB7Cj4gIAkJKnZhbCA9IChzdGF0 ZS0+Y3J0YykgPyBzdGF0ZS0+Y3J0Yy0+YmFzZS5pZCA6IDA7Cj4gIAl9IGVsc2UgaWYgKHByb3Bl cnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX3gpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYwo+IGluZGV4IDA3YjQzMmYuLjczNDY0YjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYwo+IEBAIC0xMDMxLDIyICsxMDMxLDIwIEBAIGludCBkcm1fYXRvbWljX2hlbHBl cl93YWl0X2Zvcl9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpZiAoIXByZV9z d2FwKQo+ICAJCQlwbGFuZV9zdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKPiAgCj4gLQkJaWYgKCFwbGFu ZV9zdGF0ZS0+ZmVuY2UpCj4gKwkJaWYgKCFwbGFuZV9zdGF0ZS0+aW5fZmVuY2UpCj4gIAkJCWNv bnRpbnVlOwo+ICAKPiAtCQlXQVJOX09OKCFwbGFuZV9zdGF0ZS0+ZmIpOwo+IC0KPiAgCQkvKgo+ ICAJCSAqIElmIHdhaXRpbmcgZm9yIGZlbmNlcyBwcmUtc3dhcCAoaWU6IG5vbmJsb2NrKSwgdXNl cnNwYWNlIGNhbgo+ICAJCSAqIHN0aWxsIGludGVycnVwdCB0aGUgb3BlcmF0aW9uLiBJbnN0ZWFk IG9mIGJsb2NraW5nIHVudGlsIHRoZQo+ICAJCSAqIHRpbWVyIGV4cGlyZXMsIG1ha2UgdGhlIHdh aXQgaW50ZXJydXB0aWJsZS4KPiAgCQkgKi8KPiAtCQlyZXQgPSBmZW5jZV93YWl0KHBsYW5lX3N0 YXRlLT5mZW5jZSwgcHJlX3N3YXApOwo+ICsJCXJldCA9IGZlbmNlX3dhaXQocGxhbmVfc3RhdGUt PmluX2ZlbmNlLCBwcmVfc3dhcCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAg Cj4gLQkJZmVuY2VfcHV0KHBsYW5lX3N0YXRlLT5mZW5jZSk7Cj4gLQkJcGxhbmVfc3RhdGUtPmZl bmNlID0gTlVMTDsKPiArCQlmZW5jZV9wdXQocGxhbmVfc3RhdGUtPmluX2ZlbmNlKTsKPiArCQlw bGFuZV9zdGF0ZS0+aW5fZmVuY2UgPSBOVUxMOwo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBA IC0zMTE0LDYgKzMxMTIsOSBAQCB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJv eV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+ICAJaWYgKHN0YXRl LT5mYikKPiAgCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uoc3RhdGUtPmZiKTsKPiArCj4g KwlpZiAoc3RhdGUtPmluX2ZlbmNlKQo+ICsJCWZlbmNlX3B1dChzdGF0ZS0+aW5fZmVuY2UpOwo+ ICB9Cj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0 YXRlKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCA2MDQwM2JmLi5mY2I2NDUzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjLmMKPiBAQCAtMzk3LDYgKzM5NywxMiBAQCBzdGF0aWMgaW50IGRybV9tb2RlX2Ny ZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcmV0 dXJuIC1FTk9NRU07Cj4gIAlkZXYtPm1vZGVfY29uZmlnLnByb3BfZmJfaWQgPSBwcm9wOwo+ICAK PiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3NpZ25lZF9yYW5nZShkZXYsIERSTV9NT0RF X1BST1BfQVRPTUlDLAo+ICsJCQkiSU5fRkVOQ0VfRkQiLCAtMSwgSU5UX01BWCk7Cj4gKwlpZiAo IXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYtPm1vZGVfY29uZmlnLnByb3BfaW5f ZmVuY2VfZmQgPSBwcm9wOwo+ICsKPiAgCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX29iamVj dChkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDLAo+ICAJCQkiQ1JUQ19JRCIsIERSTV9NT0RFX09C SkVDVF9DUlRDKTsKPiAgCWlmICghcHJvcCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gaW5kZXggMjQ5YzBh ZS4uMzk1N2VmOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiBAQCAtMTM3LDYgKzEzNyw3IEBAIGlu dCBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAo+ICAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2 LCBEUklWRVJfQVRPTUlDKSkgewo+ICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFu ZS0+YmFzZSwgY29uZmlnLT5wcm9wX2ZiX2lkLCAwKTsKPiArCQlkcm1fb2JqZWN0X2F0dGFjaF9w cm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0+cHJvcF9pbl9mZW5jZV9mZCwgLTEpOwo+ICAJ CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLT5wcm9wX2Ny dGNfaWQsIDApOwo+ICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwg Y29uZmlnLT5wcm9wX2NydGNfeCwgMCk7Cj4gIAkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHko JnBsYW5lLT5iYXNlLCBjb25maWctPnByb3BfY3J0Y195LCAwKTsKPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBpbmRleCAyODRj MWIzLi4yNzkxMzJlIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTEyMDYsNiArMTIwNiwxMSBAQCBzdHJ1Y3Qg ZHJtX21vZGVfY29uZmlnIHsKPiAgCSAqLwo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9m Yl9pZDsKPiAgCS8qKgo+ICsJICogQHByb3BfaW5fZmVuY2VfZmQ6IFN5bmMgRmlsZSBmZCByZXBy ZXNlbnRpbmcgdGhlIGluY29taW5nIGZlbmNlcwo+ICsJICogZm9yIGEgUGxhbmUuCj4gKwkgKi8K PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BfaW5fZmVuY2VfZmQ7Cj4gKwkvKioKPiAgCSAq IEBwcm9wX2NydGNfaWQ6IERlZmF1bHQgYXRvbWljIHBsYW5lIHByb3BlcnR5IHRvIHNwZWNpZnkg dGhlCj4gIAkgKiAmZHJtX2NydGMuCj4gIAkgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+IGluZGV4IDAyMzUzOTAuLjNj YjliZjEgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiArKysgYi9pbmNs dWRlL2RybS9kcm1fcGxhbmUuaAo+IEBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBkcm1fY3J0YzsK PiAgICogQHBsYW5lOiBiYWNrcG9pbnRlciB0byB0aGUgcGxhbmUKPiAgICogQGNydGM6IGN1cnJl bnRseSBib3VuZCBDUlRDLCBOVUxMIGlmIGRpc2FibGVkCj4gICAqIEBmYjogY3VycmVudGx5IGJv dW5kIGZyYW1lYnVmZmVyCj4gLSAqIEBmZW5jZTogb3B0aW9uYWwgZmVuY2UgdG8gd2FpdCBmb3Ig YmVmb3JlIHNjYW5uaW5nIG91dCBAZmIKPiArICogQGluX2ZlbmNlOiBvcHRpb25hbCBmZW5jZSB0 byB3YWl0IGZvciBiZWZvcmUgc2Nhbm5pbmcgb3V0IEBmYgo+ICAgKiBAY3J0Y194OiBsZWZ0IHBv c2l0aW9uIG9mIHZpc2libGUgcG9ydGlvbiBvZiBwbGFuZSBvbiBjcnRjCj4gICAqIEBjcnRjX3k6 IHVwcGVyIHBvc2l0aW9uIG9mIHZpc2libGUgcG9ydGlvbiBvZiBwbGFuZSBvbiBjcnRjCj4gICAq IEBjcnRjX3c6IHdpZHRoIG9mIHZpc2libGUgcG9ydGlvbiBvZiBwbGFuZSBvbiBjcnRjCj4gQEAg LTU5LDcgKzU5LDcgQEAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSB7Cj4gIAo+ICAJc3RydWN0IGRy bV9jcnRjICpjcnRjOyAgIC8qIGRvIG5vdCB3cml0ZSBkaXJlY3RseSwgdXNlIGRybV9hdG9taWNf c2V0X2NydGNfZm9yX3BsYW5lKCkgKi8KPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOyAg LyogZG8gbm90IHdyaXRlIGRpcmVjdGx5LCB1c2UgZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5l KCkgKi8KPiAtCXN0cnVjdCBmZW5jZSAqZmVuY2U7Cj4gKwlzdHJ1Y3QgZmVuY2UgKmluX2ZlbmNl OwoKSSB0aGluayBpdCdkIGJlIGdvb2QgdG8gbW92ZSB0aGUga2VybmVsZG9jIGludG8gYW4gaW4t bGluZSBjb21tZW50IGhlcmUKYW5kIGV4cGFuZCBhIGJpdCB1cG9uIHRoZSBleHBlY3RlZCBzZW1h bnRpY3MuIFRoaXMgaXMgYSBwcmV0dHkgaW1wb3J0YW50CnBhcnQgb2YgdGhlIGF0b21pYyB1YWJp IQoKT3RoZXJ3aXNlIGxvb2tzIGFsbCBnb29kLgotRGFuaWVsCgo+ICAKPiAgCS8qIFNpZ25lZCBk ZXN0IGxvY2F0aW9uIGFsbG93cyBpdCB0byBiZSBwYXJ0aWFsbHkgb2ZmIHNjcmVlbiAqLwo+ICAJ aW50MzJfdCBjcnRjX3gsIGNydGNfeTsKPiAtLSAKPiAyLjUuNQo+IAoKLS0gCkRhbmllbCBWZXR0 ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xs LmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=