From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 17/46] drm/i915: Apply rps waitboosting for dma_fence_wait_timeout() Date: Mon, 11 Feb 2019 18:06:38 +0000 Message-ID: References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-18-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CC356E56E for ; Mon, 11 Feb 2019 18:06:35 +0000 (UTC) In-Reply-To: <20190206130356.18771-18-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Eero Tamminen List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA2LzAyLzIwMTkgMTM6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBcyB0aW1lIGdvZXMg YnksIHVzYWdlIG9mIGdlbmVyaWMgaW9jdGxzIHN1Y2ggYXMgZHJtX3N5bmNvYmogYW5kCj4gc3lu Y19maWxlIGFyZSBvbiB0aGUgaW5jcmVhc2UgYnlwYXNzaW5nIGk5MTUtc3BlY2lmaWMgaW9jdGxz IGxpa2UKPiBHRU1fV0FJVC4gQ3VycmVudGx5LCB3ZSBvbmx5IGFwcGx5IHdhaXRib29zdGluZyB0 byBvdXIgZHJpdmVyIGlvY3RscyBhcwo+IHdlIHRyYWNrIHRoZSBmaWxlL2NsaWVudCBhbmQgYWNj b3VudCB0aGUgd2FpdGJvb3N0aW5nIHRvIHRoZW0uIEhvd2V2ZXIsCj4gc2luY2UgY29tbWl0IDdi OTJjMWJkMDU0MCAoImRybS9pOTE1OiBBdm9pZCBrZWVwaW5nIHdhaXRib29zdCBhY3RpdmUgZm9y Cj4gc2lnbmFsaW5nIHRocmVhZHMiKSwgd2Ugbm8gbG9uZ2VyIGhhdmUgYmVlbiBhcHBseWluZyB0 aGUgY2xpZW50Cj4gcmF0ZWxpbWl0aW5nIG9uIHdhaXRib29zdHMgYW5kIHNvIHRoYXQgaW5mb3Jt YXRpb24gaGFzIG9ubHkgYmVlbiB1c2VkCj4gZm9yIGRlYnVnIHRyYWNraW5nLgo+IAo+IFB1c2gg dGhlIGFwcGxpY2F0aW9uIG9mIHdhaXRib29zdGluZyBkb3duIHRvIHRoZSBjb21tb24KPiBpOTE1 X3JlcXVlc3Rfd2FpdCwgYW5kIGFwcGx5IGl0IHRvIGFsbCBmb3JlaWduIGZlbmNlIHdhaXRzIGFz IHdlbGwuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4gQ2M6IEVlcm8gVGFtbWluZW4gPGVlcm8udC50YW1taW5lbkBpbnRlbC5jb20+Cj4gLS0tCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAxOSArLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICA3ICstLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgIHwgODYgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgIHwgMjEgKysrKysr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDIgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAyICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAgNSArLQo+ICAgNyBmaWxlcyBjaGFuZ2VkLCA0 NCBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+IGluZGV4IDhhNDg4ZmZjOGI3ZC4uYWY1M2EyZDA3ZjZiIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjAyMCwxMSArMjAyMCw5IEBAIHN0YXRp YyBjb25zdCBjaGFyICpycHNfcG93ZXJfdG9fc3RyKHVuc2lnbmVkIGludCBwb3dlcikKPiAgIHN0 YXRpYyBpbnQgaTkxNV9ycHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90 b19pOTE1KG0tPnByaXZhdGUpOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJp di0+ZHJtOwo+ICAgCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3RfcG0ucnBz Owo+ICAgCXUzMiBhY3RfZnJlcSA9IHJwcy0+Y3VyX2ZyZXE7Cj4gICAJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7Cj4gLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gICAKPiAgIAl3aXRoX2ludGVs X3J1bnRpbWVfcG1faWZfaW5fdXNlKGRldl9wcml2LCB3YWtlcmVmKSB7Cj4gICAJCWlmIChJU19W QUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+IEBAIC0y MDU4LDIyICsyMDU2LDcgQEAgc3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgIAkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYs IHJwcy0+ZWZmaWNpZW50X2ZyZXEpLAo+ICAgCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwg cnBzLT5ib29zdF9mcmVxKSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmRldi0+ZmlsZWxpc3RfbXV0 ZXgpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKGZpbGUsICZkZXYtPmZpbGVsaXN0 LCBsaGVhZCkgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9 IGZpbGUtPmRyaXZlcl9wcml2Owo+IC0JCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKPiAtCj4g LQkJcmN1X3JlYWRfbG9jaygpOwo+IC0JCXRhc2sgPSBwaWRfdGFzayhmaWxlLT5waWQsIFBJRFRZ UEVfUElEKTsKPiAtCQlzZXFfcHJpbnRmKG0sICIlcyBbJWRdOiAlZCBib29zdHNcbiIsCj4gLQkJ CSAgIHRhc2sgPyB0YXNrLT5jb21tIDogIjx1bmtub3duPiIsCj4gLQkJCSAgIHRhc2sgPyB0YXNr LT5waWQgOiAtMSwKPiAtCQkJICAgYXRvbWljX3JlYWQoJmZpbGVfcHJpdi0+cnBzX2NsaWVudC5i b29zdHMpKTsKPiAtCQlyY3VfcmVhZF91bmxvY2soKTsKPiAtCX0KPiAtCXNlcV9wcmludGYobSwg Iktlcm5lbCAoYW5vbnltb3VzKSBib29zdHM6ICVkXG4iLAo+IC0JCSAgIGF0b21pY19yZWFkKCZy cHMtPmJvb3N0cykpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiAr CXNlcV9wcmludGYobSwgIldhaXQgYm9vc3RzOiAlZFxuIiwgYXRvbWljX3JlYWQoJnJwcy0+Ym9v c3RzKSk7Cj4gICAKPiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYmCj4gICAJICAg IHJwcy0+ZW5hYmxlZCAmJgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGEzNjViMWEy ZWE5YS4uNGQ2OTdiMTAwMmFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIx NywxMCArMjE3LDYgQEAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSB7Cj4gICAJfSBtbTsK PiAgIAlzdHJ1Y3QgaWRyIGNvbnRleHRfaWRyOwo+ICAgCj4gLQlzdHJ1Y3QgaW50ZWxfcnBzX2Ns aWVudCB7Cj4gLQkJYXRvbWljX3QgYm9vc3RzOwo+IC0JfSBycHNfY2xpZW50Owo+IC0KPiAgIAl1 bnNpZ25lZCBpbnQgYnNkX2VuZ2luZTsKPiAgIAo+ICAgLyoKPiBAQCAtMzA0MSw4ICszMDM3LDcg QEAgdm9pZCBpOTE1X2dlbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiAgIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpOwo+ ICAgaW50IGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCj4gICAJCQkgdW5zaWduZWQgaW50IGZsYWdzLAo+IC0JCQkgbG9uZyB0aW1lb3V0LAo+IC0J CQkgc3RydWN0IGludGVsX3Jwc19jbGllbnQgKnJwcyk7Cj4gKwkJCSBsb25nIHRpbWVvdXQpOwo+ ICAgaW50IGk5MTVfZ2VtX29iamVjdF93YWl0X3ByaW9yaXR5KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gICAJCQkJICB1bnNpZ25lZCBpbnQgZmxhZ3MsCj4gICAJCQkJICBjb25z dCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBpbmRleCAwNGZhMTg0ZmRmZjUuLjc4YjlhYTU3OTMyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IEBAIC00MjEsOCArNDIxLDcgQEAgaW50IGk5MTVfZ2VtX29iamVjdF91bmJpbmQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIHN0YXRpYyBsb25nCj4gICBpOTE1 X2dlbV9vYmplY3Rfd2FpdF9mZW5jZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKPiAgIAkJCSAg IHVuc2lnbmVkIGludCBmbGFncywKPiAtCQkJICAgbG9uZyB0aW1lb3V0LAo+IC0JCQkgICBzdHJ1 Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzX2NsaWVudCkKPiArCQkJICAgbG9uZyB0aW1lb3V0KQo+ ICAgewo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAgCj4gQEAgLTQ0MCwyNyArNDM5 LDYgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2Uoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2Us Cj4gICAJaWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQo+ICAgCQlnb3RvIG91dDsKPiAg IAo+IC0JLyoKPiAtCSAqIFRoaXMgY2xpZW50IGlzIGFib3V0IHRvIHN0YWxsIHdhaXRpbmcgZm9y IHRoZSBHUFUuIEluIG1hbnkgY2FzZXMKPiAtCSAqIHRoaXMgaXMgdW5kZXNpcmFibGUgYW5kIGxp bWl0cyB0aGUgdGhyb3VnaHB1dCBvZiB0aGUgc3lzdGVtLCBhcwo+IC0JICogbWFueSBjbGllbnRz IGNhbm5vdCBjb250aW51ZSBwcm9jZXNzaW5nIHVzZXIgaW5wdXQvb3V0cHV0IHdoaWxzdAo+IC0J ICogYmxvY2tlZC4gUlBTIGF1dG90dW5pbmcgbWF5IHRha2UgdGVucyBvZiBtaWxsaXNlY29uZHMg dG8gcmVzcG9uZAo+IC0JICogdG8gdGhlIEdQVSBsb2FkIGFuZCB0aHVzIGluY3VycyBhZGRpdGlv bmFsIGxhdGVuY3kgZm9yIHRoZSBjbGllbnQuCj4gLQkgKiBXZSBjYW4gY2lyY3VtdmVudCB0aGF0 IGJ5IHByb21vdGluZyB0aGUgR1BVIGZyZXF1ZW5jeSB0byBtYXhpbXVtCj4gLQkgKiBiZWZvcmUg d2Ugd2FpdC4gVGhpcyBtYWtlcyB0aGUgR1BVIHRocm90dGxlIHVwIG11Y2ggbW9yZSBxdWlja2x5 Cj4gLQkgKiAoZ29vZCBmb3IgYmVuY2htYXJrcyBhbmQgdXNlciBleHBlcmllbmNlLCBlLmcuIHdp bmRvdyBhbmltYXRpb25zKSwKPiAtCSAqIGJ1dCBhdCBhIGNvc3Qgb2Ygc3BlbmRpbmcgbW9yZSBw b3dlciBwcm9jZXNzaW5nIHRoZSB3b3JrbG9hZAo+IC0JICogKGJhZCBmb3IgYmF0dGVyeSkuIE5v dCBhbGwgY2xpZW50cyBldmVuIHdhbnQgdGhlaXIgcmVzdWx0cwo+IC0JICogaW1tZWRpYXRlbHkg YW5kIGZvciB0aGVtIHdlIHNob3VsZCBqdXN0IGxldCB0aGUgR1BVIHNlbGVjdCBpdHMgb3duCj4g LQkgKiBmcmVxdWVuY3kgdG8gbWF4aW1pc2UgZWZmaWNpZW5jeS4gVG8gcHJldmVudCBhIHNpbmds ZSBjbGllbnQgZnJvbQo+IC0JICogZm9yY2luZyB0aGUgY2xvY2tzIHRvbyBoaWdoIGZvciB0aGUg d2hvbGUgc3lzdGVtLCB3ZSBvbmx5IGFsbG93Cj4gLQkgKiBlYWNoIGNsaWVudCB0byB3YWl0Ym9v c3Qgb25jZSBpbiBhIGJ1c3kgcGVyaW9kLgo+IC0JICovCj4gLQlpZiAocnBzX2NsaWVudCAmJiAh aTkxNV9yZXF1ZXN0X3N0YXJ0ZWQocnEpKSB7Cj4gLQkJaWYgKElOVEVMX0dFTihycS0+aTkxNSkg Pj0gNikKPiAtCQkJZ2VuNl9ycHNfYm9vc3QocnEsIHJwc19jbGllbnQpOwo+IC0JfQo+IC0KPiAg IAl0aW1lb3V0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocnEsIGZsYWdzLCB0aW1lb3V0KTsKPiAgIAo+ ICAgb3V0Ogo+IEBAIC00NzMsOCArNDUxLDcgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2Uo c3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCj4gICBzdGF0aWMgbG9uZwo+ICAgaTkxNV9nZW1fb2Jq ZWN0X3dhaXRfcmVzZXJ2YXRpb24oc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKPiAg IAkJCQkgdW5zaWduZWQgaW50IGZsYWdzLAo+IC0JCQkJIGxvbmcgdGltZW91dCwKPiAtCQkJCSBz dHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzX2NsaWVudCkKPiArCQkJCSBsb25nIHRpbWVvdXQp Cj4gICB7Cj4gICAJdW5zaWduZWQgaW50IHNlcSA9IF9fcmVhZF9zZXFjb3VudF9iZWdpbigmcmVz di0+c2VxKTsKPiAgIAlzdHJ1Y3QgZG1hX2ZlbmNlICpleGNsOwo+IEBAIC00OTIsOCArNDY5LDcg QEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVzZXJ2YXRpb24oc3RydWN0IHJlc2VydmF0aW9uX29i amVjdCAqcmVzdiwKPiAgIAo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICAg CQkJdGltZW91dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X2ZlbmNlKHNoYXJlZFtpXSwKPiAtCQkJ CQkJCSAgICAgZmxhZ3MsIHRpbWVvdXQsCj4gLQkJCQkJCQkgICAgIHJwc19jbGllbnQpOwo+ICsJ CQkJCQkJICAgICBmbGFncywgdGltZW91dCk7Cj4gICAJCQlpZiAodGltZW91dCA8IDApCj4gICAJ CQkJYnJlYWs7Cj4gICAKPiBAQCAtNTE5LDggKzQ5NSw3IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0 X3Jlc2VydmF0aW9uKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YsCj4gICAJfQo+ICAg Cj4gICAJaWYgKGV4Y2wgJiYgdGltZW91dCA+PSAwKQo+IC0JCXRpbWVvdXQgPSBpOTE1X2dlbV9v YmplY3Rfd2FpdF9mZW5jZShleGNsLCBmbGFncywgdGltZW91dCwKPiAtCQkJCQkJICAgICBycHNf Y2xpZW50KTsKPiArCQl0aW1lb3V0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2UoZXhjbCwg ZmxhZ3MsIHRpbWVvdXQpOwo+ICAgCj4gICAJZG1hX2ZlbmNlX3B1dChleGNsKTsKPiAgIAo+IEBA IC02MTQsMzAgKzU4OSwxOSBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9wcmlvcml0eShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgICogQG9iajogaTkxNSBnZW0gb2JqZWN0Cj4g ICAgKiBAZmxhZ3M6IGhvdyB0byB3YWl0ICh1bmRlciBhIGxvY2ssIGZvciBhbGwgcmVuZGVyaW5n IG9yIGp1c3QgZm9yIHdyaXRlcyBldGMpCj4gICAgKiBAdGltZW91dDogaG93IGxvbmcgdG8gd2Fp dAo+IC0gKiBAcnBzX2NsaWVudDogY2xpZW50ICh1c2VyIHByb2Nlc3MpIHRvIGNoYXJnZSBmb3Ig YW55IHdhaXRib29zdGluZwo+ICAgICovCj4gICBpbnQKPiAgIGk5MTVfZ2VtX29iamVjdF93YWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCSAgICAgdW5zaWduZWQgaW50 IGZsYWdzLAo+IC0JCSAgICAgbG9uZyB0aW1lb3V0LAo+IC0JCSAgICAgc3RydWN0IGludGVsX3Jw c19jbGllbnQgKnJwc19jbGllbnQpCj4gKwkJICAgICBsb25nIHRpbWVvdXQpCj4gICB7Cj4gICAJ bWlnaHRfc2xlZXAoKTsKPiAgIAlHRU1fQlVHX09OKHRpbWVvdXQgPCAwKTsKPiAgIAo+IC0JdGlt ZW91dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKG9iai0+cmVzdiwKPiAtCQkJ CQkJICAgZmxhZ3MsIHRpbWVvdXQsCj4gLQkJCQkJCSAgIHJwc19jbGllbnQpOwo+ICsJdGltZW91 dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKG9iai0+cmVzdiwgZmxhZ3MsIHRp bWVvdXQpOwo+ICAgCXJldHVybiB0aW1lb3V0IDwgMCA/IHRpbWVvdXQgOiAwOwo+ICAgfQo+ICAg Cj4gLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqdG9fcnBzX2NsaWVudChzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZw cml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gLQo+IC0JcmV0dXJuICZmcHJpdi0+cnBzX2NsaWVu dDsKPiAtfQo+IC0KPiAgIHN0YXRpYyBpbnQKPiAgIGk5MTVfZ2VtX3BoeXNfcHdyaXRlKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCSAgICAgc3RydWN0IGRybV9pOTE1X2dl bV9wd3JpdGUgKmFyZ3MsCj4gQEAgLTg0Myw4ICs4MDcsNyBAQCBpbnQgaTkxNV9nZW1fb2JqX3By ZXBhcmVfc2htZW1fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCXJl dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwKPiAgIAkJCQkgICBJOTE1X1dBSVRfSU5URVJS VVBUSUJMRSB8Cj4gICAJCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCwKPiAtCQkJCSAgIE1BWF9TQ0hF RFVMRV9USU1FT1VULAo+IC0JCQkJICAgTlVMTCk7Cj4gKwkJCQkgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC04OTYsOCAr ODU5LDcgQEAgaW50IGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3dyaXRlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCQkJICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUg fAo+ICAgCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQgfAo+ICAgCQkJCSAgIEk5MTVfV0FJVF9BTEws Cj4gLQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCwKPiAtCQkJCSAgIE5VTEwpOwo+ICsJCQkJ ICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7 Cj4gICAKPiBAQCAtMTE1OSw4ICsxMTIxLDcgQEAgaTkxNV9nZW1fcHJlYWRfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAo+ICAgCXJldCA9IGk5MTVfZ2VtX29i amVjdF93YWl0KG9iaiwKPiAgIAkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKPiAtCQkJ CSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VULAo+IC0JCQkJICAgdG9fcnBzX2NsaWVudChmaWxlKSk7 Cj4gKwkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290 byBvdXQ7Cj4gICAKPiBAQCAtMTQ1OSw4ICsxNDIwLDcgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3dhaXQob2JqLAo+ICAgCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPiAg IAkJCQkgICBJOTE1X1dBSVRfQUxMLAo+IC0JCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCj4g LQkJCQkgICB0b19ycHNfY2xpZW50KGZpbGUpKTsKPiArCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1F T1VUKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGVycjsKPiAgIAo+IEBAIC0xNTU4LDggKzE1 MTgsNyBAQCBpOTE1X2dlbV9zZXRfZG9tYWluX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gICAJCQkJICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+ICAgCQkJ CSAgIEk5MTVfV0FJVF9QUklPUklUWSB8Cj4gICAJCQkJICAgKHdyaXRlX2RvbWFpbiA/IEk5MTVf V0FJVF9BTEwgOiAwKSwKPiAtCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VULAo+IC0JCQkJICAg dG9fcnBzX2NsaWVudChmaWxlKSk7Cj4gKwkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4g ICAJaWYgKGVycikKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiBAQCAtMTg1MCw4ICsxODA5LDcgQEAg dm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiAgIAkgKi8K PiAgIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCj4gICAJCQkJICAgSTkxNV9XQUlU X0lOVEVSUlVQVElCTEUsCj4gLQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCwKPiAtCQkJCSAg IE5VTEwpOwo+ICsJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgCWlmIChyZXQpCj4g ICAJCWdvdG8gZXJyOwo+ICAgCj4gQEAgLTMxODEsOCArMzEzOSw3IEBAIGk5MTVfZ2VtX3dhaXRf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxlKQo+ICAgCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPiAgIAkJCQkgICBJ OTE1X1dBSVRfUFJJT1JJVFkgfAo+ICAgCQkJCSAgIEk5MTVfV0FJVF9BTEwsCj4gLQkJCQkgICB0 b193YWl0X3RpbWVvdXQoYXJncy0+dGltZW91dF9ucyksCj4gLQkJCQkgICB0b19ycHNfY2xpZW50 KGZpbGUpKTsKPiArCQkJCSAgIHRvX3dhaXRfdGltZW91dChhcmdzLT50aW1lb3V0X25zKSk7Cj4g ICAKPiAgIAlpZiAoYXJncy0+dGltZW91dF9ucyA+IDApIHsKPiAgIAkJYXJncy0+dGltZW91dF9u cyAtPSBrdGltZV90b19ucyhrdGltZV9zdWIoa3RpbWVfZ2V0KCksIHN0YXJ0KSk7Cj4gQEAgLTMy NTEsNyArMzIwOCw3IEBAIHdhaXRfZm9yX3RpbWVsaW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiAgIAkJICogc3RhbGxzLCBzbyBhbGxvdyB0aGUgZ3B1IHRvIGJvb3N0IHRvIG1h eGltdW0gY2xvY2tzLgo+ICAgCQkgKi8KPiAgIAkJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0ZPUl9J RExFX0JPT1NUKQo+IC0JCQlnZW42X3Jwc19ib29zdChycSwgTlVMTCk7Cj4gKwkJCWdlbjZfcnBz X2Jvb3N0KHJxKTsKPiAgIAo+ICAgCQl0aW1lb3V0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocnEsIGZs YWdzLCB0aW1lb3V0KTsKPiAgIAkJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4gQEAgLTMzNDYsOCAr MzMwMyw3IEBAIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fd2NfZG9tYWluKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCj4gICAJCQkJICAgSTkxNV9XQUlUX0lOVEVS UlVQVElCTEUgfAo+ICAgCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQgfAo+ICAgCQkJCSAgICh3cml0 ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKPiAtCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VULAo+ IC0JCQkJICAgTlVMTCk7Cj4gKwkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gICAJaWYg KHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0zNDA5LDggKzMzNjUsNyBAQCBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwgYm9vbCB3cml0ZSkKPiAgIAkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4g ICAJCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCB8Cj4gICAJCQkJICAgKHdyaXRlID8gSTkxNV9XQUlU X0FMTCA6IDApLAo+IC0JCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCj4gLQkJCQkgICBOVUxM KTsKPiArCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAgIAlpZiAocmV0KQo+ICAgCQly ZXR1cm4gcmV0Owo+ICAgCj4gQEAgLTM1MjUsOCArMzQ4MCw3IEBAIGludCBpOTE1X2dlbV9vYmpl Y3Rfc2V0X2NhY2hlX2xldmVsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJ CQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPiAgIAkJCQkJICAgSTkxNV9XQUlUX0xP Q0tFRCB8Cj4gICAJCQkJCSAgIEk5MTVfV0FJVF9BTEwsCj4gLQkJCQkJICAgTUFYX1NDSEVEVUxF X1RJTUVPVVQsCj4gLQkJCQkJICAgTlVMTCk7Cj4gKwkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVP VVQpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0zNjY0LDgg KzM2MTgsNyBAQCBpbnQgaTkxNV9nZW1fc2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAo+ICAgCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0 KG9iaiwKPiAgIAkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKPiAtCQkJCSAgIE1BWF9T Q0hFRFVMRV9USU1FT1VULAo+IC0JCQkJICAgdG9fcnBzX2NsaWVudChmaWxlKSk7Cj4gKwkJCQkg ICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBvdXQ7Cj4g ICAKPiBAQCAtMzc5MSw4ICszNzQ0LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9t YWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCj4gICAJCQkJ ICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+ICAgCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQg fAo+ICAgCQkJCSAgICh3cml0ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKPiAtCQkJCSAgIE1BWF9T Q0hFRFVMRV9USU1FT1VULAo+IC0JCQkJICAgTlVMTCk7Cj4gKwkJCQkgICBNQVhfU0NIRURVTEVf VElNRU9VVCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggNjc4ZGE3MDVlMjIyLi5lZWQ2NmQzNjA2ZDkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC04MSw3ICs4MSw5IEBA IHN0YXRpYyBzaWduZWQgbG9uZyBpOTE1X2ZlbmNlX3dhaXQoc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2UsCj4gICAJCQkJICAgYm9vbCBpbnRlcnJ1cHRpYmxlLAo+ICAgCQkJCSAgIHNpZ25lZCBsb25n IHRpbWVvdXQpCj4gICB7Cj4gLQlyZXR1cm4gaTkxNV9yZXF1ZXN0X3dhaXQodG9fcmVxdWVzdChm ZW5jZSksIGludGVycnVwdGlibGUsIHRpbWVvdXQpOwo+ICsJcmV0dXJuIGk5MTVfcmVxdWVzdF93 YWl0KHRvX3JlcXVlc3QoZmVuY2UpLAo+ICsJCQkJIGludGVycnVwdGlibGUgfCBJOTE1X1dBSVRf UFJJT1JJVFksCj4gKwkJCQkgdGltZW91dCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGk5 MTVfZmVuY2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiBAQCAtMTI4OCw4ICsx MjkwLDIzIEBAIGxvbmcgaTkxNV9yZXF1ZXN0X3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs Cj4gICAJaWYgKF9faTkxNV9zcGluX3JlcXVlc3QocnEsIHN0YXRlLCA1KSkKPiAgIAkJZ290byBv dXQ7Cj4gICAKPiAtCWlmIChmbGFncyAmIEk5MTVfV0FJVF9QUklPUklUWSkKPiArCS8qCj4gKwkg KiBUaGlzIGNsaWVudCBpcyBhYm91dCB0byBzdGFsbCB3YWl0aW5nIGZvciB0aGUgR1BVLiBJbiBt YW55IGNhc2VzCj4gKwkgKiB0aGlzIGlzIHVuZGVzaXJhYmxlIGFuZCBsaW1pdHMgdGhlIHRocm91 Z2hwdXQgb2YgdGhlIHN5c3RlbSwgYXMKPiArCSAqIG1hbnkgY2xpZW50cyBjYW5ub3QgY29udGlu dWUgcHJvY2Vzc2luZyB1c2VyIGlucHV0L291dHB1dCB3aGlsc3QKPiArCSAqIGJsb2NrZWQuIFJQ UyBhdXRvdHVuaW5nIG1heSB0YWtlIHRlbnMgb2YgbWlsbGlzZWNvbmRzIHRvIHJlc3BvbmQKPiAr CSAqIHRvIHRoZSBHUFUgbG9hZCBhbmQgdGh1cyBpbmN1cnMgYWRkaXRpb25hbCBsYXRlbmN5IGZv ciB0aGUgY2xpZW50Lgo+ICsJICogV2UgY2FuIGNpcmN1bXZlbnQgdGhhdCBieSBwcm9tb3Rpbmcg dGhlIEdQVSBmcmVxdWVuY3kgdG8gbWF4aW11bQo+ICsJICogYmVmb3JlIHdlIHNsZWVwLiBUaGlz IG1ha2VzIHRoZSBHUFUgdGhyb3R0bGUgdXAgbXVjaCBtb3JlIHF1aWNrbHkKPiArCSAqIChnb29k IGZvciBiZW5jaG1hcmtzIGFuZCB1c2VyIGV4cGVyaWVuY2UsIGUuZy4gd2luZG93IGFuaW1hdGlv bnMpLAo+ICsJICogYnV0IGF0IGEgY29zdCBvZiBzcGVuZGluZyBtb3JlIHBvd2VyIHByb2Nlc3Np bmcgdGhlIHdvcmtsb2FkCj4gKwkgKiAoYmFkIGZvciBiYXR0ZXJ5KS4KPiArCSAqLwo+ICsJaWYg KGZsYWdzICYgSTkxNV9XQUlUX1BSSU9SSVRZKSB7Cj4gKwkJaWYgKCFpOTE1X3JlcXVlc3Rfc3Rh cnRlZChycSkgJiYgSU5URUxfR0VOKHJxLT5pOTE1KSA+PSA2KQo+ICsJCQlnZW42X3Jwc19ib29z dChycSk7Cj4gICAJCWk5MTVfc2NoZWR1bGVfYnVtcF9wcmlvcml0eShycSwgSTkxNV9QUklPUklU WV9XQUlUKTsKPiArCX0KPiAgIAo+ICAgCXdhaXQudHNrID0gY3VycmVudDsKPiAgIAlpZiAoZG1h X2ZlbmNlX2FkZF9jYWxsYmFjaygmcnEtPmZlbmNlLCAmd2FpdC5jYiwgcmVxdWVzdF93YWl0X3dh a2UpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0ZDVlYzkyOWY5 ODcuLmY4NjU3ZTUzZmU2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiBAQCAtMTMzOTYsNyArMTMzOTYsNyBAQCBzdGF0aWMgaW50IGRvX3Jwc19ib29zdChzdHJ1Y3Qg d2FpdF9xdWV1ZV9lbnRyeSAqX3dhaXQsCj4gICAJICogdmJsYW5rIHdpdGhvdXQgb3VyIGludGVy dmVudGlvbiwgc28gbGVhdmUgUlBTIGFsb25lLgo+ICAgCSAqLwo+ICAgCWlmICghaTkxNV9yZXF1 ZXN0X3N0YXJ0ZWQocnEpKQo+IC0JCWdlbjZfcnBzX2Jvb3N0KHJxLCBOVUxMKTsKPiArCQlnZW42 X3Jwc19ib29zdChycSk7Cj4gICAJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4gICAKPiAgIAlkcm1f Y3J0Y192YmxhbmtfcHV0KHdhaXQtPmNydGMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g aW5kZXggOTBiYTU0MzYzNzBlLi40N2I0Zjg4ZGE3ZWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+IEBAIC0yMjQ5LDcgKzIyNDksNyBAQCB2b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93 ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGdlbjZf cnBzX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgIHZvaWQgZ2Vu Nl9ycHNfcmVzZXRfZWkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgIHZv aWQgZ2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12 b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgaW50ZWxf cnBzX2NsaWVudCAqcnBzKTsKPiArdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSk7Cj4gICB2b2lkIGc0eF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiAgIHZvaWQgdmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBpbGtfd21fZ2V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gaW5kZXggNzM3MDA1YmY2ODE2Li41ODUxNGExN2YxMzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBAQCAtNjY5Myw4ICs2NjkzLDcgQEAgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAltdXRleF91bmxvY2soJmRldl9wcml2 LT5wY3VfbG9jayk7Cj4gICB9Cj4gICAKPiAtdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwKPiAtCQkgICAgc3RydWN0IGludGVsX3Jwc19jbGllbnQgKnJwc19jbGll bnQpCj4gK3ZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7 Cj4gICAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJnJxLT5pOTE1LT5ndF9wbS5ycHM7Cj4gICAJ dW5zaWduZWQgbG9uZyBmbGFnczsKPiBAQCAtNjcyMyw3ICs2NzIyLDcgQEAgdm9pZCBnZW42X3Jw c19ib29zdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgIAlpZiAoUkVBRF9PTkNFKHJwcy0+ Y3VyX2ZyZXEpIDwgcnBzLT5ib29zdF9mcmVxKQo+ICAgCQlzY2hlZHVsZV93b3JrKCZycHMtPndv cmspOwo+ICAgCj4gLQlhdG9taWNfaW5jKHJwc19jbGllbnQgPyAmcnBzX2NsaWVudC0+Ym9vc3Rz IDogJnJwcy0+Ym9vc3RzKTsKPiArCWF0b21pY19pbmMoJnJwcy0+Ym9vc3RzKTsKPiAgIH0KPiAg IAo+ICAgaW50IGludGVsX3NldF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1OCB2YWwpCj4gCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==