From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 13/62] drm/i915: Derive GEM requests from dma-fence Date: Wed, 8 Jun 2016 11:14:23 +0200 Message-ID: <20160608091423.GP3363@phenom.ffwll.local> References: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> <1464971847-15809-14-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1084B6E940 for ; Wed, 8 Jun 2016 09:14:28 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id k184so1299957wme.2 for ; Wed, 08 Jun 2016 02:14:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1464971847-15809-14-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: Daniel Vetter , intel-gfx@lists.freedesktop.org, Jesse Barnes List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdW4gMDMsIDIwMTYgYXQgMDU6MzY6MzhQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IGRtYS1idWYgcHJvdmlkZXMgYSBnZW5lcmljIGZlbmNlIGNsYXNzIGZvciBpbnRlcm9w ZXJhdGlvbiBiZXR3ZWVuCj4gZHJpdmVycy4gSW50ZXJuYWxseSB3ZSB1c2UgdGhlIHJlcXVlc3Qg c3RydWN0dXJlIGFzIGEgZmVuY2UsIGFuZCBzbyB3aXRoCj4gb25seSBhIGxpdHRsZSBiaXQgb2Yg aW50ZXJmYWNpbmcgd2UgY2FuIHJlYmFzZSB0aG9zZSByZXF1ZXN0cyBvbiB0b3Agb2YKPiBkbWEt YnVmIGZlbmNlcy4gVGhpcyB3aWxsIGFsbG93IHVzLCBpbiB0aGUgZnV0dXJlLCB0byBwYXNzIHRo b3NlIGZlbmNlcwo+IGJhY2sgdG8gdXNlcnNwYWNlIG9yIGJldHdlZW4gZHJpdmVycy4KPiAKPiB2 MjogVGhlIGZlbmNlX2NvbnRleHQgbmVlZHMgdG8gYmUgZ2xvYmFsbHkgdW5pcXVlLCBub3QganVz dCB1bmlxdWUgdG8KPiB0aGlzIGRldmljZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogSmVzc2UgQmFybmVzIDxqYmFybmVz QHZpcnR1b3VzZ2Vlay5vcmc+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3 bGwuY2g+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAg ICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgICAg fCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgIHwgIDMzICsrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV90cmFjZS5oICAgICAgICAgIHwgIDEwICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9icmVhZGNydW1icy5jICAgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMgICAgICAgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYyAgICB8ICAxMSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oICAgIHwgICAxICsKPiAgMTAgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2Vy dGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gaW5kZXggOGY1NzZiNDQzZmY2Li44ZTM3MzE1NDQzZjMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC03NjgsNyArNzY4LDcgQEAgc3RhdGljIGludCBpOTE1 X2dlbV9yZXF1ZXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQlp ZiAocmVxLT5waWQpCj4gIAkJCQl0YXNrID0gcGlkX3Rhc2socmVxLT5waWQsIFBJRFRZUEVfUElE KTsKPiAgCQkJc2VxX3ByaW50ZihtLCAiICAgICV4IEAgJWQ6ICVzIFslZF1cbiIsCj4gLQkJCQkg ICByZXEtPnNlcW5vLAo+ICsJCQkJICAgcmVxLT5mZW5jZS5zZXFubywKPiAgCQkJCSAgIChpbnQp IChqaWZmaWVzIC0gcmVxLT5lbWl0dGVkX2ppZmZpZXMpLAo+ICAJCQkJICAgdGFzayA/IHRhc2st PmNvbW0gOiAiPHVua25vd24+IiwKPiAgCQkJCSAgIHRhc2sgPyB0YXNrLT5waWQgOiAtMSk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDM0YjJmMTUxY2Rm Yy4uNTEyYjE1MTUzYWM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYwo+IEBAIC0yNCw2ICsyNCw5OCBAQAo+ICAKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4g IAo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gK3RvX2k5 MTVfcmVxdWVzdChzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVy X29mKGZlbmNlLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsIGZlbmNlKTsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lKHN0cnVjdCBm ZW5jZSAqZmVuY2UpCj4gK3sKPiArCXJldHVybiAiaTkxNSI7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBjaGFyICppOTE1X2ZlbmNlX2dldF90aW1lbGluZV9uYW1lKHN0cnVjdCBmZW5jZSAqZmVu Y2UpCj4gK3sKPiArCS8qIFRpbWVsaW5lcyBhcmUgYm91bmQgYnkgZXZpY3Rpb24gdG8gYSBWTS4g SG93ZXZlciwgc2luY2UKPiArCSAqIHdlIG9ubHkgaGF2ZSBhIGdsb2JhbCBzZXFubyBhdCB0aGUg bW9tZW50LCB3ZSBvbmx5IGhhdmUKPiArCSAqIGEgc2luZ2xlIHRpbWVsaW5lLiBOb3RlIHRoYXQg ZWFjaCB0aW1lbGluZSB3aWxsIGhhdmUKPiArCSAqIG11bHRpcGxlIGV4ZWN1dGlvbiBjb250ZXh0 cyAoZmVuY2UgY29udGV4dHMpIGFzIHdlIGFsbG93Cj4gKwkgKiBlbmdpbmVzIHdpdGhpbiBhIHNp bmdsZSB0aW1lbGluZSB0byBleGVjdXRlIGluIHBhcmFsbGVsLgo+ICsJICovCj4gKwlyZXR1cm4g Imdsb2JhbCI7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGk5MTVfZmVuY2Vfc2lnbmFsZWQoc3Ry dWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKHRvX2k5MTVfcmVxdWVzdChmZW5jZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBpOTE1 X2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJaWYg KGk5MTVfZmVuY2Vfc2lnbmFsZWQoZmVuY2UpKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwly ZXR1cm4gaW50ZWxfZW5naW5lX2VuYWJsZV9zaWduYWxpbmcodG9faTkxNV9yZXF1ZXN0KGZlbmNl KSkgPT0gMDsKPiArfQo+ICsKPiArc3RhdGljIHNpZ25lZCBsb25nIGk5MTVfZmVuY2Vfd2FpdChz dHJ1Y3QgZmVuY2UgKmZlbmNlLAo+ICsJCQkJICAgYm9vbCBpbnRlcnJ1cHRpYmxlLAo+ICsJCQkJ ICAgc2lnbmVkIGxvbmcgdGltZW91dF9qaWZmaWVzKQo+ICt7Cj4gKwlzNjQgdGltZW91dF9ucywg KnRpbWVvdXQ7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICh0aW1lb3V0X2ppZmZpZXMgIT0gTUFY X1NDSEVEVUxFX1RJTUVPVVQpIHsKPiArCQl0aW1lb3V0X25zID0gamlmZmllc190b19uc2Vjcyh0 aW1lb3V0X2ppZmZpZXMpOwo+ICsJCXRpbWVvdXQgPSAmdGltZW91dF9uczsKPiArCX0gZWxzZQo+ ICsJCXRpbWVvdXQgPSBOVUxMOwo+ICsKPiArCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QodG9f aTkxNV9yZXF1ZXN0KGZlbmNlKSwKPiArCQkJCSAgaW50ZXJydXB0aWJsZSwgdGltZW91dCwKPiAr CQkJCSAgTlVMTCk7Cj4gKwlpZiAocmV0ID09IC1FVElNRSkKPiArCQlyZXR1cm4gMDsKPiArCj4g KwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWlmICh0aW1lb3V0X2ppZmZp ZXMgIT0gTUFYX1NDSEVEVUxFX1RJTUVPVVQpCj4gKwkJdGltZW91dF9qaWZmaWVzID0gbnNlY3Nf dG9famlmZmllcyh0aW1lb3V0X25zKTsKPiArCj4gKwlyZXR1cm4gdGltZW91dF9qaWZmaWVzOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X2ZlbmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2Ug KmZlbmNlLCBjaGFyICpzdHIsIGludCBzaXplKQo+ICt7Cj4gKwlzbnByaW50ZihzdHIsIHNpemUs ICIldSIsIGZlbmNlLT5zZXFubyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZmVuY2Vf dGltZWxpbmVfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqZmVuY2UsIGNoYXIgKnN0ciwKPiArCQkJ CQkgIGludCBzaXplKQo+ICt7Cj4gKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIsCj4gKwkJIGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8odG9faTkxNV9yZXF1ZXN0KGZlbmNlKS0+ZW5naW5lKSk7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZmVuY2VfcmVsZWFzZShzdHJ1Y3QgZmVuY2UgKmZl bmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IHRvX2k5MTVf cmVxdWVzdChmZW5jZSk7Cj4gKwlrbWVtX2NhY2hlX2ZyZWUocmVxLT5pOTE1LT5yZXF1ZXN0cywg cmVxKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmZW5jZV9vcHMgaTkxNV9mZW5j ZV9vcHMgPSB7Cj4gKwkuZ2V0X2RyaXZlcl9uYW1lID0gaTkxNV9mZW5jZV9nZXRfZHJpdmVyX25h bWUsCj4gKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBpOTE1X2ZlbmNlX2dldF90aW1lbGluZV9uYW1l LAo+ICsJLmVuYWJsZV9zaWduYWxpbmcgPSBpOTE1X2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcsCj4g Kwkuc2lnbmFsZWQgPSBpOTE1X2ZlbmNlX3NpZ25hbGVkLAo+ICsJLndhaXQgPSBpOTE1X2ZlbmNl X3dhaXQsCj4gKwkucmVsZWFzZSA9IGk5MTVfZmVuY2VfcmVsZWFzZSwKPiArCS5mZW5jZV92YWx1 ZV9zdHIgPSBpOTE1X2ZlbmNlX3ZhbHVlX3N0ciwKPiArCS50aW1lbGluZV92YWx1ZV9zdHIgPSBp OTE1X2ZlbmNlX3RpbWVsaW5lX3ZhbHVlX3N0ciwKPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgaTkx NV9nZW1fY2hlY2tfd2VkZ2UodW5zaWduZWQgcmVzZXRfY291bnRlciwgYm9vbCBpbnRlcnJ1cHRp YmxlKQo+ICB7Cj4gIAlpZiAoX19pOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKHJlc2V0X2NvdW50ZXIp KQo+IEBAIC0xMTcsNiArMjA5LDcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgCXVuc2lnbmVkIHJlc2V0X2NvdW50ZXIgPSBpOTE1X3Jl c2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3IpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXE7Cj4gKwl1MzIgc2Vxbm87Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICgh cmVxX291dCkKPiBAQCAtMTM2LDExICsyMjksMTcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCWlmIChyZXEgPT0gTlVMTCkKPiAg CQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9nZXRfc2Vxbm8oZGV2X3By aXYsICZyZXEtPnNlcW5vKTsKPiArCXJldCA9IGk5MTVfZ2VtX2dldF9zZXFubyhkZXZfcHJpdiwg JnNlcW5vKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBlcnI7Cj4gIAo+IC0Ja3JlZl9pbml0KCZy ZXEtPnJlZik7Cj4gKwlzcGluX2xvY2tfaW5pdCgmcmVxLT5sb2NrKTsKPiArCWZlbmNlX2luaXQo JnJlcS0+ZmVuY2UsCj4gKwkJICAgJmk5MTVfZmVuY2Vfb3BzLAo+ICsJCSAgICZyZXEtPmxvY2ss Cj4gKwkJICAgZW5naW5lLT5mZW5jZV9jb250ZXh0LAo+ICsJCSAgIHNlcW5vKTsKPiArCj4gIAly ZXEtPmk5MTUgPSBkZXZfcHJpdjsKPiAgCXJlcS0+ZW5naW5lID0gZW5naW5lOwo+ICAJcmVxLT5y ZXNldF9jb3VudGVyID0gcmVzZXRfY291bnRlcjsKPiBAQCAtMzc2LDcgKzQ3NSw3IEBAIHZvaWQg X19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwK PiAgCSAqLwo+ICAJcmVxdWVzdC0+ZW1pdHRlZF9qaWZmaWVzID0gamlmZmllczsKPiAgCXJlcXVl c3QtPnByZXZpb3VzX3NlcW5vID0gZW5naW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubzsKPiAtCXNt cF9zdG9yZV9tYihlbmdpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vLCByZXF1ZXN0LT5zZXFubyk7 Cj4gKwlzbXBfc3RvcmVfbWIoZW5naW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubywgcmVxdWVzdC0+ ZmVuY2Uuc2Vxbm8pOwo+ICAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+bGlzdCwgJmVuZ2luZS0+ cmVxdWVzdF9saXN0KTsKPiAgCj4gIAkvKiBSZWNvcmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFy dCBvZiB0aGUgcmVxdWVzdCBzbyB0aGF0Cj4gQEAgLTU0Myw3ICs2NDIsNyBAQCBpbnQgX19pOTE1 X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCWlmIChp OTE1X3NwaW5fcmVxdWVzdChyZXEsIHN0YXRlLCA1KSkKPiAgCQlnb3RvIGNvbXBsZXRlOwo+ICAK PiAtCWludGVsX3dhaXRfaW5pdCgmd2FpdCwgcmVxLT5zZXFubyk7Cj4gKwlpbnRlbF93YWl0X2lu aXQoJndhaXQsIHJlcS0+ZmVuY2Uuc2Vxbm8pOwo+ICAJc2V0X2N1cnJlbnRfc3RhdGUoc3RhdGUp Owo+ICAJaWYgKGludGVsX2VuZ2luZV9hZGRfd2FpdChyZXEtPmVuZ2luZSwgJndhaXQpKQo+ICAJ CS8qIEluIG9yZGVyIHRvIGNoZWNrIHRoYXQgd2UgaGF2ZW4ndCBtaXNzZWQgdGhlIGludGVycnVw dAo+IEBAIC02MDksNyArNzA4LDcgQEAgY29tcGxldGU6Cj4gIAkJCSp0aW1lb3V0ID0gMDsKPiAg CX0KPiAgCj4gLQlpZiAocnBzICYmIHJlcS0+c2Vxbm8gPT0gcmVxLT5lbmdpbmUtPmxhc3Rfc3Vi bWl0dGVkX3NlcW5vKSB7Cj4gKwlpZiAocnBzICYmIHJlcS0+ZmVuY2Uuc2Vxbm8gPT0gcmVxLT5l bmdpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vKSB7Cj4gIAkJLyogVGhlIEdQVSBpcyBub3cgaWRs ZSBhbmQgdGhpcyBjbGllbnQgaGFzIHN0YWxsZWQuCj4gIAkJICogU2luY2Ugbm8gb3RoZXIgY2xp ZW50IGhhcyBzdWJtaXR0ZWQgYSByZXF1ZXN0IGluIHRoZQo+ICAJCSAqIG1lYW50aW1lLCBhc3N1 bWUgdGhhdCB0aGlzIGNsaWVudCBpcyB0aGUgb25seSBvbmUKPiBAQCAtNjUwLDEwICs3NDksMyBA QCBpbnQgaTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAtCj4gLXZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVl KHN0cnVjdCBrcmVmICpyZXFfcmVmKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSA9Cj4gLQkgICAgICAgCWNvbnRhaW5lcl9vZihyZXFfcmVmLCB0eXBlb2YoKnJlcSks IHJlZik7Cj4gLQlrbWVtX2NhY2hlX2ZyZWUocmVxLT5pOTE1LT5yZXF1ZXN0cywgcmVxKTsKPiAt fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBpbmRleCAxNjZlMDcz M2QyZDguLjI0OGFlYzJjMDliNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmgKPiBAQCAtMjUsNiArMjUsOCBAQAo+ICAjaWZuZGVmIEk5MTVfR0VNX1JFUVVFU1Rf SAo+ICAjZGVmaW5lIEk5MTVfR0VNX1JFUVVFU1RfSAo+ICAKPiArI2luY2x1ZGUgPGxpbnV4L2Zl bmNlLmg+Cj4gKwo+ICAvKioKPiAgICogUmVxdWVzdCBxdWV1ZSBzdHJ1Y3R1cmUuCj4gICAqCj4g QEAgLTM2LDExICszOCwxMSBAQAo+ICAgKiBlbWlzc2lvbiB0aW1lIHRvIGJlIGFzc29jaWF0ZWQg d2l0aCB0aGUgcmVxdWVzdCBmb3IgdHJhY2tpbmcgaG93IGZhciBhaGVhZAo+ICAgKiBvZiB0aGUg R1BVIHRoZSBzdWJtaXNzaW9uIGlzLgo+ICAgKgo+IC0gKiBUaGUgcmVxdWVzdHMgYXJlIHJlZmVy ZW5jZSBjb3VudGVkLCBzbyB1cG9uIGNyZWF0aW9uIHRoZXkgc2hvdWxkIGhhdmUgYW4KPiAtICog aW5pdGlhbCByZWZlcmVuY2UgdGFrZW4gdXNpbmcga3JlZl9pbml0Cj4gKyAqIFRoZSByZXF1ZXN0 cyBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3Qgewo+IC0Jc3RydWN0IGtyZWYgcmVmOwo+ICsJc3RydWN0IGZlbmNlIGZlbmNlOwo+ICsJ c3BpbmxvY2tfdCBsb2NrOwo+ICAKPiAgCS8qKiBPbiBXaGljaCByaW5nIHRoaXMgcmVxdWVzdCB3 YXMgZ2VuZXJhdGVkICovCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiBAQCAt NjgsMTIgKzcwLDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKPiAgCSAqLwo+ICAJ dTMyIHByZXZpb3VzX3NlcW5vOwo+ICAKPiAtCS8qKiBHRU0gc2VxdWVuY2UgbnVtYmVyIGFzc29j aWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QsCj4gLQkgKiB3aGVuIHRoZSBIV1MgYnJlYWRjcnVtYiBp cyBlcXVhbCBvciBncmVhdGVyIHRoYW4gdGhpcyB0aGUgR1BVCj4gLQkgKiBoYXMgZmluaXNoZWQg cHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QuCj4gLQkgKi8KPiAtCXUzMiBzZXFubzsKPiAtCj4gIAkv KiogUG9zaXRpb24gaW4gdGhlIHJpbmdidWZmZXIgb2YgdGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0 ICovCj4gIAl1MzIgaGVhZDsKPiAgCj4gQEAgLTE1Miw3ICsxNDgsNiBAQCBfX3JlcXVlc3RfdG9f aTkxNShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqIF9fbXVzdF9jaGVjawo+ICBpOTE1X2dlbV9yZXF1ZXN0 X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCQkgICAgICAgc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7Cj4gLXZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0 cnVjdCBrcmVmICpyZXFfcmVmKTsKPiAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWRkX3RvX2NsaWVu dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJCSAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSk7Cj4gIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVfdXB0byhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gQEAgLTE2MCw3ICsxNTUsNyBAQCB2b2lkIGk5 MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpOwo+ICBzdGF0aWMgaW5saW5lIHVpbnQzMl90Cj4gIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Nl cW5vKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gLQlyZXR1cm4gcmVx ID8gcmVxLT5zZXFubyA6IDA7Cj4gKwlyZXR1cm4gcmVxID8gcmVxLT5mZW5jZS5zZXFubyA6IDA7 Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gQEAg LTE3MCwxNyArMTY1LDIzIEBAIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+ICt0b19yZXF1ZXN0KHN0cnVjdCBmZW5jZSAqZmVuY2Up Cj4gK3sKPiArCS8qIFdlIGFzc3VtZSB0aGF0IE5VTEwgZmVuY2UvcmVxdWVzdCBhcmUgaW50ZXJv cGVyYWJsZSAqLwo+ICsJQlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCwgZmVuY2UpICE9IDApOwo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihmZW5jZSwgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBmZW5jZSk7CgpGb3IgZnV0dXJlLXByb29maW5nIHRv IG1ha2Ugc3VyZSB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2FsbCB0aGlzIG9uIGEKZm9yZWlnbiBm ZW5jZToKCglCVUdfT04oZmVuY2UtPm9wcyAhPSBpOTE1X2ZlbmNlX29wcyk7CgpCVUdfT04gc2lu Y2UgSSBkb24ndCB3YW50IHRvIHNwbGF0dGVyIGFsbCBjYWxsZXJzIHdpdGggaGFuZGxlcnMgZm9y IHRoaXMuCkFuZCBpZiB3ZSBldmVyIGdldCB0aGlzIHdyb25nIGRlYnVnZ2luZyBpdCB3aXRoIGp1 c3Qgc29tZSByYW5kb215CmNvcnJ1cHRpb24gd291bGQgYmUgc2VyaW91cyBwYWluLCBzbyBJIHRo aW5rIHRoZSBvdmVyaGVhZCBpcyBqdXN0aWZpZWQuCi1EYW5pZWwKCj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKPiAgaTkxNV9nZW1fcmVxdWVz dF9yZWZlcmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCWlm IChyZXEpCj4gLQkJa3JlZl9nZXQoJnJlcS0+cmVmKTsKPiAtCXJldHVybiByZXE7Cj4gKwlyZXR1 cm4gdG9fcmVxdWVzdChmZW5jZV9nZXQoJnJlcS0+ZmVuY2UpKTsKPiAgfQo+ICAKPiAgc3RhdGlj IGlubGluZSB2b2lkCj4gIGk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCWtyZWZfcHV0KCZyZXEtPnJlZiwgaTkxNV9n ZW1fcmVxdWVzdF9mcmVlKTsKPiArCWZlbmNlX3B1dCgmcmVxLT5mZW5jZSk7Cj4gIH0KPiAgCj4g IHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKipwZHN0LAo+IEBAIC0yMzAsNyArMjMxLDcgQEAgc3RhdGljIGlubGlu ZSBib29sIGk5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnIKPiAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gIAlyZXR1 cm4gaTkxNV9zZXFub19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9zZXFubyhyZXEtPmVuZ2luZSks Cj4gLQkJCQkgcmVxLT5zZXFubyk7Cj4gKwkJCQkgcmVxLT5mZW5jZS5zZXFubyk7Cj4gIH0KPiAg Cj4gIGJvb2wgX19pOTE1X3NwaW5fcmVxdWVzdChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcXVlc3QsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5k ZXggM2JhNTMwMmNlMTlmLi41MzMyYmQzMmM1NTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiBAQCAtMTE4MSw3ICsxMTgxLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9n ZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJ fQo+ICAKPiAgCQkJZXJxID0gJmVycm9yLT5yaW5nW2ldLnJlcXVlc3RzW2NvdW50KytdOwo+IC0J CQllcnEtPnNlcW5vID0gcmVxdWVzdC0+c2Vxbm87Cj4gKwkJCWVycS0+c2Vxbm8gPSByZXF1ZXN0 LT5mZW5jZS5zZXFubzsKPiAgCQkJZXJxLT5qaWZmaWVzID0gcmVxdWVzdC0+ZW1pdHRlZF9qaWZm aWVzOwo+ICAJCQllcnEtPnRhaWwgPSByZXF1ZXN0LT5wb3N0Zml4Owo+ICAJCX0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggYWM3MjQ1MWM1NzFj Li42MjkxMTFkNDJjZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jCj4gQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgdm9pZCBndWNfYWRkX3dvcmtx dWV1ZV9pdGVtKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmdjLAo+ICAJCQkJCQkJICAgICBycS0+ ZW5naW5lKTsKPiAgCj4gIAl3cWktPnJpbmdfdGFpbCA9IHRhaWwgPDwgV1FfUklOR19UQUlMX1NI SUZUOwo+IC0Jd3FpLT5mZW5jZV9pZCA9IHJxLT5zZXFubzsKPiArCXdxaS0+ZmVuY2VfaWQgPSBy cS0+ZmVuY2Uuc2Vxbm87Cj4gIAo+ICAJa3VubWFwX2F0b21pYyhiYXNlKTsKPiAgfQo+IEBAIC01 NzgsNyArNTc4LDcgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJxKQo+ICAJCWNsaWVudC0+Yl9mYWlsICs9IDE7Cj4gIAo+ICAJZ3VjLT5zdWJtaXNz aW9uc1tlbmdpbmVfaWRdICs9IDE7Cj4gLQlndWMtPmxhc3Rfc2Vxbm9bZW5naW5lX2lkXSA9IHJx LT5zZXFubzsKPiArCWd1Yy0+bGFzdF9zZXFub1tlbmdpbmVfaWRdID0gcnEtPmZlbmNlLnNlcW5v Owo+ICAKPiAgCXJldHVybiBiX3JldDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgK PiBpbmRleCBmNTljZjA3MTg0YWUuLjAyOTZhNzdiNTg2YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3RyYWNlLmgKPiBAQCAtNDY1LDcgKzQ2NSw3IEBAIFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3Jp bmdfc3luY190bywKPiAgCQkJICAgX19lbnRyeS0+ZGV2ID0gZnJvbS0+aTkxNS0+ZGV2LT5wcmlt YXJ5LT5pbmRleDsKPiAgCQkJICAgX19lbnRyeS0+c3luY19mcm9tID0gZnJvbS0+aWQ7Cj4gIAkJ CSAgIF9fZW50cnktPnN5bmNfdG8gPSB0b19yZXEtPmVuZ2luZS0+aWQ7Cj4gLQkJCSAgIF9fZW50 cnktPnNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKTsKPiArCQkJICAgX19l bnRyeS0+c2Vxbm8gPSByZXEtPmZlbmNlLnNlcW5vOwo+ICAJCQkgICApLAo+ICAKPiAgCSAgICBU UF9wcmludGsoImRldj0ldSwgc3luYy1mcm9tPSV1LCBzeW5jLXRvPSV1LCBzZXFubz0ldSIsCj4g QEAgLTQ4OCw5ICs0ODgsOSBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yaW5nX2Rpc3BhdGNoLAo+ ICAJICAgIFRQX2Zhc3RfYXNzaWduKAo+ICAJCQkgICBfX2VudHJ5LT5kZXYgPSByZXEtPmk5MTUt PmRldi0+cHJpbWFyeS0+aW5kZXg7Cj4gIAkJCSAgIF9fZW50cnktPnJpbmcgPSByZXEtPmVuZ2lu ZS0+aWQ7Cj4gLQkJCSAgIF9fZW50cnktPnNlcW5vID0gcmVxLT5zZXFubzsKPiArCQkJICAgX19l bnRyeS0+c2Vxbm8gPSByZXEtPmZlbmNlLnNlcW5vOwo+ICAJCQkgICBfX2VudHJ5LT5mbGFncyA9 IGZsYWdzOwo+IC0JCQkgICBpbnRlbF9lbmdpbmVfZW5hYmxlX3NpZ25hbGluZyhyZXEpOwo+ICsJ CQkgICBmZW5jZV9lbmFibGVfc3dfc2lnbmFsaW5nKCZyZXEtPmZlbmNlKTsKPiAgCQkJICAgKSwK PiAgCj4gIAkgICAgVFBfcHJpbnRrKCJkZXY9JXUsIHJpbmc9JXUsIHNlcW5vPSV1LCBmbGFncz0l eCIsCj4gQEAgLTUzMyw3ICs1MzMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGk5MTVfZ2VtX3Jl cXVlc3QsCj4gIAkgICAgVFBfZmFzdF9hc3NpZ24oCj4gIAkJCSAgIF9fZW50cnktPmRldiA9IHJl cS0+aTkxNS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiAgCQkJICAgX19lbnRyeS0+cmluZyA9IHJl cS0+ZW5naW5lLT5pZDsKPiAtCQkJICAgX19lbnRyeS0+c2Vxbm8gPSByZXEtPnNlcW5vOwo+ICsJ CQkgICBfX2VudHJ5LT5zZXFubyA9IHJlcS0+ZmVuY2Uuc2Vxbm87Cj4gIAkJCSAgICksCj4gIAo+ ICAJICAgIFRQX3ByaW50aygiZGV2PSV1LCByaW5nPSV1LCBzZXFubz0ldSIsCj4gQEAgLTU5NSw3 ICs1OTUsNyBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yZXF1ZXN0X3dhaXRfYmVnaW4sCj4gIAkg ICAgVFBfZmFzdF9hc3NpZ24oCj4gIAkJCSAgIF9fZW50cnktPmRldiA9IHJlcS0+aTkxNS0+ZGV2 LT5wcmltYXJ5LT5pbmRleDsKPiAgCQkJICAgX19lbnRyeS0+cmluZyA9IHJlcS0+ZW5naW5lLT5p ZDsKPiAtCQkJICAgX19lbnRyeS0+c2Vxbm8gPSByZXEtPnNlcW5vOwo+ICsJCQkgICBfX2VudHJ5 LT5zZXFubyA9IHJlcS0+ZmVuY2Uuc2Vxbm87Cj4gIAkJCSAgIF9fZW50cnktPmJsb2NraW5nID0K PiAgCQkJCSAgICAgbXV0ZXhfaXNfbG9ja2VkKCZyZXEtPmk5MTUtPmRldi0+c3RydWN0X211dGV4 KTsKPiAgCQkJICAgKSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMK PiBpbmRleCBkYzY1YTAwN2ZhMjAuLjA1ZjYyZjcwNjg5NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBAIC0zOTYsNiArMzk2LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9icmVhZGNydW1ic19zaWduYWxlcih2b2lkICphcmcpCj4gIAkJCSAqLwo+ICAJCQlp bnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoZW5naW5lLAo+ICAJCQkJCQkgJnJlcXVlc3QtPnNpZ25h bGluZy53YWl0KTsKPiArCQkJZmVuY2Vfc2lnbmFsKCZyZXF1ZXN0LT5mZW5jZSk7Cj4gIAo+ICAJ CQkvKiBGaW5kIHRoZSBuZXh0IG9sZGVzdCBzaWduYWwuIE5vdGUgdGhhdCBhcyB3ZSBoYXZlCj4g IAkJCSAqIG5vdCBiZWVuIGhvbGRpbmcgdGhlIGxvY2ssIGFub3RoZXIgY2xpZW50IG1heQo+IEBA IC00NDQsNyArNDQ1LDcgQEAgaW50IGludGVsX2VuZ2luZV9lbmFibGVfc2lnbmFsaW5nKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCX0KPiAgCj4gIAlyZXF1ZXN0LT5z aWduYWxpbmcud2FpdC50YXNrID0gYi0+c2lnbmFsZXI7Cj4gLQlyZXF1ZXN0LT5zaWduYWxpbmcu d2FpdC5zZXFubyA9IHJlcXVlc3QtPnNlcW5vOwo+ICsJcmVxdWVzdC0+c2lnbmFsaW5nLndhaXQu c2Vxbm8gPSByZXF1ZXN0LT5mZW5jZS5zZXFubzsKPiAgCWk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJl bmNlKHJlcXVlc3QpOwo+ICAKPiAgCS8qIEZpcnN0IGFkZCBvdXJzZWx2ZXMgaW50byB0aGUgbGlz dCBvZiB3YWl0ZXJzLCBidXQgcmVnaXN0ZXIgb3VyCj4gQEAgLTQ2Niw4ICs0NjcsOCBAQCBpbnQg aW50ZWxfZW5naW5lX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICAJcCA9ICZiLT5zaWduYWxzLnJiX25vZGU7Cj4gIAl3aGlsZSAoKnApIHsK PiAgCQlwYXJlbnQgPSAqcDsKPiAtCQlpZiAoaTkxNV9zZXFub19wYXNzZWQocmVxdWVzdC0+c2Vx bm8sCj4gLQkJCQkgICAgICB0b19zaWduYWwocGFyZW50KS0+c2Vxbm8pKSB7Cj4gKwkJaWYgKGk5 MTVfc2Vxbm9fcGFzc2VkKHJlcXVlc3QtPmZlbmNlLnNlcW5vLAo+ICsJCQkJICAgICAgdG9fc2ln bmFsKHBhcmVudCktPmZlbmNlLnNlcW5vKSkgewo+ICAJCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7 Cj4gIAkJCWZpcnN0ID0gZmFsc2U7Cj4gIAkJfSBlbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKPiBpbmRleCAwNzQyYTg0OWFjY2UuLmM3YTllYmRiMDgxMSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gQEAgLTE3MzEsNyArMTczMSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0 X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAJCQkJaW50 ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSB8Cj4gIAkJCQlNSV9GTFVTSF9E V19VU0VfR1RUKTsKPiAgCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+IC0J aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgcmVxdWVzdC0+c2Vxbm8pOwo+ICsJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOwo+ICAJ aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfVVNFUl9JTlRFUlJVUFQpOwo+ICAJ aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gIAlyZXR1cm4gaW50 ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChyZXF1ZXN0KTsKPiBAQCAtMTk2NCw2 ICsxOTY0LDcgQEAgbG9naWNhbF9yaW5nX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVu dW0gaW50ZWxfZW5naW5lX2lkIGlkKQo+ICAJZW5naW5lLT5leGVjX2lkID0gaW5mby0+ZXhlY19p ZDsKPiAgCWVuZ2luZS0+Z3VjX2lkID0gaW5mby0+Z3VjX2lkOwo+ICAJZW5naW5lLT5tbWlvX2Jh c2UgPSBpbmZvLT5tbWlvX2Jhc2U7Cj4gKwllbmdpbmUtPmZlbmNlX2NvbnRleHQgPSBmZW5jZV9j b250ZXh0X2FsbG9jKDEpOwo+ICAKPiAgCWVuZ2luZS0+aTkxNSA9IGRldl9wcml2Owo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggMzI3YWQ3ZmRmMTE4 Li5jM2Q2MzQ1YWEyYzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gQEAgLTEyNjYsNyArMTI2Niw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9yY3Nfc2lnbmFsKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgCQkJCQkgICBQSVBF X0NPTlRST0xfQ1NfU1RBTEwpOwo+ICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIGxvd2Vy XzMyX2JpdHMoZ3R0X29mZnNldCkpOwo+ICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIHVw cGVyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwo+IC0JCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIs IHNpZ25hbGxlcl9yZXEtPnNlcW5vKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBz aWduYWxsZXJfcmVxLT5mZW5jZS5zZXFubyk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxl ciwgMCk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgTUlfU0VNQVBIT1JFX1NJR05B TCB8Cj4gIAkJCQkJICAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7Cj4gQEAg LTEzMDQsNyArMTMwNCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2ln bmFsbGVyLCBsb3dlcl8zMl9iaXRzKGd0dF9vZmZzZXQpIHwKPiAgCQkJCQkgICBNSV9GTFVTSF9E V19VU0VfR1RUKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCB1cHBlcl8zMl9iaXRz KGd0dF9vZmZzZXQpKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBzaWduYWxsZXJf cmVxLT5zZXFubyk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgc2lnbmFsbGVyX3Jl cS0+ZmVuY2Uuc2Vxbm8pOwo+ICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIE1JX1NFTUFQ SE9SRV9TSUdOQUwgfAo+ICAJCQkJCSAgIE1JX1NFTUFQSE9SRV9UQVJHRVQod2FpdGVyLT5od19p ZCkpOwo+ICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIDApOwo+IEBAIC0xMzM3LDcgKzEz MzcsNyBAQCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqc2lnbmFsbGVyX3JlcSwKPiAgCQlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZChtYm94X3JlZykp IHsKPiAgCQkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSkpOwo+ICAJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHNpZ25hbGxlciwgbWJveF9yZWcpOwo+IC0J CQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBzaWduYWxsZXJfcmVxLT5zZXFubyk7Cj4gKwkJ CWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIHNpZ25hbGxlcl9yZXEtPmZlbmNlLnNlcW5vKTsK PiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0xMzczLDcgKzEzNzMsNyBAQCBnZW42X2FkZF9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOwo+ICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwK PiAgCQkJSTkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsK PiAtCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHJlcS0+c2Vxbm8pOwo+ICsJaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgcmVxLT5mZW5jZS5zZXFubyk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBNSV9VU0VSX0lOVEVSUlVQVCk7Cj4gIAlfX2ludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOwo+ ICAKPiBAQCAtMTYyMyw3ICsxNjIzLDcgQEAgaTl4eF9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NUT1JF X0RXT1JEX0lOREVYKTsKPiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCj4gIAkJICAgICAgIAlJ OTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwo+IC0JaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgcmVxLT5zZXFubyk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCByZXEtPmZlbmNlLnNlcW5vKTsKPiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1VT RVJfSU5URVJSVVBUKTsKPiAgCV9faW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7Cj4gIAo+IEBA IC0yMDkyLDYgKzIwOTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCVdBUk5fT04oZW5naW5lLT5idWZmZXIpOwo+ICAKPiAg CWVuZ2luZS0+aTkxNSA9IGRldl9wcml2Owo+ICsJZW5naW5lLT5mZW5jZV9jb250ZXh0ID0gZmVu Y2VfY29udGV4dF9hbGxvYygxKTsKPiAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmFjdGl2ZV9s aXN0KTsKPiAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPnJlcXVlc3RfbGlzdCk7Cj4gIAlJTklU X0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDYwMTczNjdlOTRmYi4uYjA0MWZiNmE2ZDAxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xNTgsNiAr MTU4LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gIAl1bnNpZ25lZCBpbnQgZXhlY19p ZDsKPiAgCXVuc2lnbmVkIGludCBod19pZDsKPiAgCXVuc2lnbmVkIGludCBndWNfaWQ7IC8qIFhY WCBzYW1lIGFzIGh3X2lkPyAqLwo+ICsJdW5zaWduZWQgZmVuY2VfY29udGV4dDsKPiAgCXUzMgkJ bW1pb19iYXNlOwo+ICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKmJ1ZmZlcjsKPiAgCXN0cnVj dCBsaXN0X2hlYWQgYnVmZmVyczsKPiAtLSAKPiAyLjguMQo+IAoKLS0gCkRhbmllbCBWZXR0ZXIK U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNo Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=