From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 04/15] drm/i915: Cache the reset_counter for the request Date: Tue, 1 Dec 2015 09:31:31 +0100 Message-ID: <20151201083131.GK17050@phenom.ffwll.local> References: <1448786893-2522-1-git-send-email-chris@chris-wilson.co.uk> <1448786893-2522-5-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-f51.google.com (mail-wm0-f51.google.com [74.125.82.51]) by gabe.freedesktop.org (Postfix) with ESMTPS id D7ACE720D9 for ; Tue, 1 Dec 2015 00:31:35 -0800 (PST) Received: by wmec201 with SMTP id c201so193386485wme.0 for ; Tue, 01 Dec 2015 00:31:33 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448786893-2522-5-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU3VuLCBOb3YgMjksIDIwMTUgYXQgMDg6NDg6MDJBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEluc3RlYWQgb2YgcXVlcnlpbmcgdGhlIHJlc2V0IGNvdW50ZXIgYmVmb3JlIGV2ZXJ5 IGFjY2VzcyB0byB0aGUgcmluZywKPiBxdWVyeSBpdCB0aGUgZmlyc3QgdGltZSB3ZSB0b3VjaCB0 aGUgcmluZywgYW5kIGRvIGEgZmluYWwgY29tcGFyZSB3aGVuCj4gc3VibWl0dGluZyB0aGUgcmVx dWVzdC4gRm9yIGNvcnJlY3RuZXNzLCB3ZSBuZWVkIHRvIHRoZW4gc2FuaXRpemUgaG93Cj4gdGhl IHJlc2V0X2NvdW50ZXIgaXMgaW5jcmVtZW50ZWQgdG8gcHJldmVudCBicm9rZW4gc3VibWlzc2lv biBhbmQKPiB3YWl0aW5nIGFjcm9zcyByZXNldHMsIGluIHRoZSBwcm9jZXNzIGZpeGluZyB0aGUg cGVyc2lzdGVudCAtRUlPIHdlCj4gc3RpbGwgc2VlIHRvZGF5IG9uIGZhaWxlZCB3YWl0cy4KPiAK PiB2MjogUmViYXNlCj4gdjM6IE5vdyB3aXRoIGFkZGVkIHRlc3RjYXNlCj4gdjQ6IFJlYmFzZQo+ IAo+IFRlc3RjYXNlOiBpZ3QvZ2VtX2Vpbwo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgoKSW1vIHlvdSByZWFsbHkgY2FuJ3QgaGlkZSBhbiBB QkkgY2hhbmdlIGluIGEgcmVmYWN0b3Ivb3B0aW1pemUgcGF0Y2ggbGlrZQp0aGlzIC4uLiBJIHJl YWxseSB0aGluayBtb3ZpbmcgY2hlY2tfd2VkZ2Ugb3V0IG9mIHdhaXRfcmVxdWVzdCBtdXN0IGJl Cml0J3Mgb3duIGxpdHRsZSBwYXRjaC4KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyAgICAgICAgIHwgMzIgKysrKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICAgICB8IDM5ICsrKysrKysrKystLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDkwICsrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgfCAy MSArLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAx MyArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAxMyAr KystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAxNCArKy0t LQo+ICA4IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhNzI4ZmYxMWUzODku Ljg0NTg0NDdkZGMxNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAg LTQ2NjAsNyArNDY2MCw3IEBAIGk5MTVfd2VkZ2VkX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkYXRhOwo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gLQkqdmFsID0gYXRvbWlj X3JlYWQoJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfY291bnRlcik7Cj4gKwkqdmFsID0gaTkx NV90ZXJtaW5hbGx5X3dlZGdlZCgmZGV2X3ByaXYtPmdwdV9lcnJvcik7Cj4gIAo+ICAJcmV0dXJu IDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA5MGZhYThlMDNmY2EuLmVi ODkzYTVlMDBiMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC05MjMsMjMgKzky MywzMSBAQCBpbnQgaTkxNV9yZXN1bWVfc3dpdGNoZXJvbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3Ry dWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZkZXZfcHJpdi0+Z3B1X2Vycm9yOwo+ICsJdW5z aWduZWQgcmVzZXRfY291bnRlcjsKPiAgCWJvb2wgc2ltdWxhdGVkOwo+ICAJaW50IHJldDsKPiAg Cj4gIAlpbnRlbF9yZXNldF9ndF9wb3dlcnNhdmUoZGV2KTsKPiAgCj4gIAltdXRleF9sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlhdG9taWNfYW5kbm90KEk5MTVfV0VER0VELCAmZXJyb3It PnJlc2V0X2NvdW50ZXIpOwo+ICsJcmVzZXRfY291bnRlciA9IGF0b21pY19pbmNfcmV0dXJuKCZl cnJvci0+cmVzZXRfY291bnRlcik7Cj4gKwlpZiAoV0FSTl9PTihfX2k5MTVfcmVzZXRfaW5fcHJv Z3Jlc3MocmVzZXRfY291bnRlcikpKSB7Cj4gKwkJcmV0ID0gLUVJTzsKPiArCQlnb3RvIGVycm9y Owo+ICsJfQo+ICAKPiAgCWk5MTVfZ2VtX3Jlc2V0KGRldik7Cj4gIAo+IC0Jc2ltdWxhdGVkID0g ZGV2X3ByaXYtPmdwdV9lcnJvci5zdG9wX3JpbmdzICE9IDA7Cj4gKwlzaW11bGF0ZWQgPSBlcnJv ci0+c3RvcF9yaW5ncyAhPSAwOwo+ICAKPiAgCXJldCA9IGludGVsX2dwdV9yZXNldChkZXYpOwo+ ICAKPiAgCS8qIEFsc28gcmVzZXQgdGhlIGdwdSBoYW5nbWFuLiAqLwo+ICAJaWYgKHNpbXVsYXRl ZCkgewo+ICAJCURSTV9JTkZPKCJTaW11bGF0ZWQgZ3B1IGhhbmcsIHJlc2V0dGluZyBzdG9wX3Jp bmdzXG4iKTsKPiAtCQlkZXZfcHJpdi0+Z3B1X2Vycm9yLnN0b3BfcmluZ3MgPSAwOwo+ICsJCWVy cm9yLT5zdG9wX3JpbmdzID0gMDsKPiAgCQlpZiAocmV0ID09IC1FTk9ERVYpIHsKPiAgCQkJRFJN X0lORk8oIlJlc2V0IG5vdCBpbXBsZW1lbnRlZCwgYnV0IGlnbm9yaW5nICIKPiAgCQkJCSAiZXJy b3IgZm9yIHNpbXVsYXRlZCBncHUgaGFuZ3NcbiIpOwo+IEBAIC05NTIsOCArOTYwLDcgQEAgaW50 IGk5MTVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlpZiAocmV0KSB7Cj4g IAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVzZXQgY2hpcDogJWlcbiIsIHJldCk7Cj4gLQkJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQkJcmV0dXJuIHJldDsKPiArCQlnb3Rv IGVycm9yOwo+ICAJfQo+ICAKPiAgCWludGVsX292ZXJsYXlfcmVzZXQoZGV2X3ByaXYpOwo+IEBA IC05NzIsMjAgKzk3OSwxNCBAQCBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJICogd2FzIHJ1bm5pbmcgYXQgdGhlIHRpbWUgb2YgdGhlIHJlc2V0IChpLmUuIHdlIHdl cmVuJ3QgVlQKPiAgCSAqIHN3aXRjaGVkIGF3YXkpLgo+ICAJICovCj4gLQo+IC0JLyogVXNlZCB0 byBwcmV2ZW50IGdlbV9jaGVja193ZWRnZWQgcmV0dXJuaW5nIC1FQUdBSU4gZHVyaW5nIGdwdSBy ZXNldCAqLwo+IC0JZGV2X3ByaXYtPmdwdV9lcnJvci5yZWxvYWRfaW5fcmVzZXQgPSB0cnVlOwo+ IC0KPiAgCXJldCA9IGk5MTVfZ2VtX2luaXRfaHcoZGV2KTsKPiAtCj4gLQlkZXZfcHJpdi0+Z3B1 X2Vycm9yLnJlbG9hZF9pbl9yZXNldCA9IGZhbHNlOwo+IC0KPiAtCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaWYgKHJldCkgewo+ICAJCURSTV9FUlJPUigiRmFpbGVkIGh3 IGluaXQgb24gcmVzZXQgJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiArCQlnb3RvIGVy cm9yOwo+ICAJfQo+ICAKPiArCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsK PiAgCS8qCj4gIAkgKiBycHMvcmM2IHJlLWluaXQgaXMgbmVjZXNzYXJ5IHRvIHJlc3RvcmUgc3Rh dGUgbG9zdCBhZnRlciB0aGUKPiAgCSAqIHJlc2V0IGFuZCB0aGUgcmUtaW5zdGFsbCBvZiBndCBp cnFzLiBTa2lwIGZvciBpcm9ubGFrZSBwZXIKPiBAQCAtOTk2LDYgKzk5NywxMSBAQCBpbnQgaTkx NV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCWludGVsX2VuYWJsZV9ndF9wb3dl cnNhdmUoZGV2KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiArCj4gK2Vycm9yOgo+ICsJYXRvbWljX29y KEk5MTVfV0VER0VELCAmZXJyb3ItPnJlc2V0X2NvdW50ZXIpOwo+ICsJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50 IGk5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2Rl dmljZV9pZCAqZW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGQwNzA0MWMxNzI5 ZC4uYzI0YzIzZDhhMGMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTEzODQs OSArMTM4NCw2IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gIAo+ICAJLyogRm9yIG1pc3Nl ZCBpcnEvc2Vxbm8gc2ltdWxhdGlvbi4gKi8KPiAgCXVuc2lnbmVkIGludCB0ZXN0X2lycV9yaW5n czsKPiAtCj4gLQkvKiBVc2VkIHRvIHByZXZlbnQgZ2VtX2NoZWNrX3dlZGdlZCByZXR1cm5pbmcg LUVBR0FJTiBkdXJpbmcgZ3B1IHJlc2V0ICAgKi8KPiAtCWJvb2wgcmVsb2FkX2luX3Jlc2V0Owo+ ICB9Owo+ICAKPiAgZW51bSBtb2Rlc2V0X3Jlc3RvcmUgewo+IEBAIC0yMTgxLDYgKzIxNzgsNyBA QCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+ICAJLyoqIE9uIFdoaWNoIHJpbmcgdGhp cyByZXF1ZXN0IHdhcyBnZW5lcmF0ZWQgKi8KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsKPiArCXVuc2lnbmVkIHJlc2V0 X2NvdW50ZXI7Cj4gIAo+ICAJIC8qKiBHRU0gc2VxdWVuY2UgbnVtYmVyIGFzc29jaWF0ZWQgd2l0 aCB0aGUgcHJldmlvdXMgcmVxdWVzdCwKPiAgCSAgKiB3aGVuIHRoZSBIV1MgYnJlYWRjcnVtYiBp cyBlcXVhbCB0byB0aGlzIHRoZSBHUFUgaXMgcHJvY2Vzc2luZwo+IEBAIC0yOTc2LDIzICsyOTc0 LDQ3IEBAIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Cj4gIAo+ICBib29sIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiAgdm9pZCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAtaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9j aGVja193ZWRnZShzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yLAo+ICtpbnQgX19tdXN0X2No ZWNrIGk5MTVfZ2VtX2NoZWNrX3dlZGdlKHVuc2lnbmVkIHJlc2V0X2NvdW50ZXIsCj4gIAkJCQkg ICAgICBib29sIGludGVycnVwdGlibGUpOwo+ICAKPiArc3RhdGljIGlubGluZSB1MzIgaTkxNV9y ZXNldF9jb3VudGVyKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gK3sKPiArCXJldHVy biBhdG9taWNfcmVhZCgmZXJyb3ItPnJlc2V0X2NvdW50ZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW5saW5lIGJvb2wgX19pOTE1X3Jlc2V0X2luX3Byb2dyZXNzKHUzMiByZXNldCkKPiArewo+ICsJ cmV0dXJuIHVubGlrZWx5KHJlc2V0ICYgSTkxNV9SRVNFVF9JTl9QUk9HUkVTU19GTEFHKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIF9faTkxNV9yZXNldF9pbl9wcm9ncmVzc19vcl93 ZWRnZWQodTMyIHJlc2V0KQo+ICt7Cj4gKwlyZXR1cm4gdW5saWtlbHkocmVzZXQgJiAoSTkxNV9S RVNFVF9JTl9QUk9HUkVTU19GTEFHIHwgSTkxNV9XRURHRUQpKTsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSBib29sIF9faTkxNV90ZXJtaW5hbGx5X3dlZGdlZCh1MzIgcmVzZXQpCj4gK3sKPiAr CXJldHVybiB1bmxpa2VseShyZXNldCAmIEk5MTVfV0VER0VEKTsKPiArfQo+ICsKPiAgc3RhdGlj IGlubGluZSBib29sIGk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3Moc3RydWN0IGk5MTVfZ3B1X2Vycm9y ICplcnJvcikKPiAgewo+IC0JcmV0dXJuIHVubGlrZWx5KGF0b21pY19yZWFkKCZlcnJvci0+cmVz ZXRfY291bnRlcikKPiAtCQkJJiAoSTkxNV9SRVNFVF9JTl9QUk9HUkVTU19GTEFHIHwgSTkxNV9X RURHRUQpKTsKPiArCXJldHVybiBfX2k5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoaTkxNV9yZXNldF9j b3VudGVyKGVycm9yKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Jlc2V0 X2luX3Byb2dyZXNzX29yX3dlZGdlZChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+ICt7 Cj4gKwlyZXR1cm4gX19pOTE1X3Jlc2V0X2luX3Byb2dyZXNzX29yX3dlZGdlZChpOTE1X3Jlc2V0 X2NvdW50ZXIoZXJyb3IpKTsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSBib29sIGk5MTVfdGVy bWluYWxseV93ZWRnZWQoc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvcikKPiAgewo+IC0JcmV0 dXJuIGF0b21pY19yZWFkKCZlcnJvci0+cmVzZXRfY291bnRlcikgJiBJOTE1X1dFREdFRDsKPiAr CXJldHVybiBfX2k5MTVfdGVybWluYWxseV93ZWRnZWQoaTkxNV9yZXNldF9jb3VudGVyKGVycm9y KSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdTMyIGk5MTVfcmVzZXRfY291bnQoc3RydWN0 IGk5MTVfZ3B1X2Vycm9yICplcnJvcikKPiAgewo+IC0JcmV0dXJuICgoYXRvbWljX3JlYWQoJmVy cm9yLT5yZXNldF9jb3VudGVyKSAmIH5JOTE1X1dFREdFRCkgKyAxKSAvIDI7Cj4gKwlyZXR1cm4g KChpOTE1X3Jlc2V0X2NvdW50ZXIoZXJyb3IpICYgfkk5MTVfV0VER0VEKSArIDEpIC8gMjsKPiAg fQo+ICAKPiAgc3RhdGljIGlubGluZSBib29sIGk5MTVfc3RvcF9yaW5nX2FsbG93X2JhbihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTMwMjUsNyArMzA0Nyw2IEBAIHZv aWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAjZGVmaW5lIGk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKSBcCj4gIAlfX2k5MTVfYWRk X3JlcXVlc3QocmVxLCBOVUxMLCBmYWxzZSkKPiAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gLQkJCXVuc2lnbmVkIHJlc2V0X2NvdW50 ZXIsCj4gIAkJCWJvb2wgaW50ZXJydXB0aWJsZSwKPiAgCQkJczY0ICp0aW1lb3V0LAo+ICAJCQlz dHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBp bmRleCBhZGE0NjFlMDI3MTguLjY0NmQxODllMjNhMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IEBAIC04NSw5ICs4NSw3IEBAIGk5MTVfZ2VtX3dhaXRfZm9yX2Vycm9yKHN0cnVjdCBp OTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gIHsKPiAgCWludCByZXQ7Cj4gIAo+IC0jZGVmaW5lIEVY SVRfQ09ORCAoIWk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoZXJyb3IpIHx8IFwKPiAtCQkgICBpOTE1 X3Rlcm1pbmFsbHlfd2VkZ2VkKGVycm9yKSkKPiAtCWlmIChFWElUX0NPTkQpCj4gKwlpZiAoIWk5 MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoZXJyb3IpKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qCj4g QEAgLTk2LDE3ICs5NCwxNiBAQCBpOTE1X2dlbV93YWl0X2Zvcl9lcnJvcihzdHJ1Y3QgaTkxNV9n cHVfZXJyb3IgKmVycm9yKQo+ICAJICogd2Ugc2hvdWxkIHNpbXBseSB0cnkgdG8gYmFpbCBvdXQg YW5kIGZhaWwgYXMgZ3JhY2VmdWxseSBhcyBwb3NzaWJsZS4KPiAgCSAqLwo+ICAJcmV0ID0gd2Fp dF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoZXJyb3ItPnJlc2V0X3F1ZXVlLAo+IC0JCQkJ CSAgICAgICBFWElUX0NPTkQsCj4gKwkJCQkJICAgICAgICFpOTE1X3Jlc2V0X2luX3Byb2dyZXNz KGVycm9yKSwKPiAgCQkJCQkgICAgICAgMTAqSFopOwo+ICAJaWYgKHJldCA9PSAwKSB7Cj4gIAkJ RFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIGdwdSByZXNldCB0byBjb21wbGV0 ZVxuIik7Cj4gIAkJcmV0dXJuIC1FSU87Cj4gIAl9IGVsc2UgaWYgKHJldCA8IDApIHsKPiAgCQly ZXR1cm4gcmV0Owo+ICsJfSBlbHNlIHsKPiArCQlyZXR1cm4gMDsKPiAgCX0KPiAtI3VuZGVmIEVY SVRfQ09ORAo+IC0KPiAtCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBpbnQgaTkxNV9tdXRleF9sb2Nr X2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtMTExMCwyNiArMTEw NywyMCBAQCBwdXRfcnBtOgo+ICB9Cj4gIAo+ICBpbnQKPiAtaTkxNV9nZW1fY2hlY2tfd2VkZ2Uo c3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciwKPiAraTkxNV9nZW1fY2hlY2tfd2VkZ2UodW5z aWduZWQgcmVzZXRfY291bnRlciwKPiAgCQkgICAgIGJvb2wgaW50ZXJydXB0aWJsZSkKPiAgewo+ IC0JaWYgKGk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoZXJyb3IpKSB7Cj4gKwlpZiAoX19pOTE1X3Jl c2V0X2luX3Byb2dyZXNzX29yX3dlZGdlZChyZXNldF9jb3VudGVyKSkgewo+ICAJCS8qIE5vbi1p bnRlcnJ1cHRpYmxlIGNhbGxlcnMgY2FuJ3QgaGFuZGxlIC1FQUdBSU4sIGhlbmNlIHJldHVybgo+ ICAJCSAqIC1FSU8gdW5jb25kaXRpb25hbGx5IGZvciB0aGVzZS4gKi8KPiAgCQlpZiAoIWludGVy cnVwdGlibGUpCj4gIAkJCXJldHVybiAtRUlPOwo+ICAKPiAgCQkvKiBSZWNvdmVyeSBjb21wbGV0 ZSwgYnV0IHRoZSByZXNldCBmYWlsZWQgLi4uICovCj4gLQkJaWYgKGk5MTVfdGVybWluYWxseV93 ZWRnZWQoZXJyb3IpKQo+ICsJCWlmIChfX2k5MTVfdGVybWluYWxseV93ZWRnZWQocmVzZXRfY291 bnRlcikpCj4gIAkJCXJldHVybiAtRUlPOwo+ICAKPiAtCQkvKgo+IC0JCSAqIENoZWNrIGlmIEdQ VSBSZXNldCBpcyBpbiBwcm9ncmVzcyAtIHdlIG5lZWQgaW50ZWxfcmluZ19iZWdpbgo+IC0JCSAq IHRvIHdvcmsgcHJvcGVybHkgdG8gcmVpbml0IHRoZSBodyBzdGF0ZSB3aGlsZSB0aGUgZ3B1IGlz Cj4gLQkJICogc3RpbGwgbWFya2VkIGFzIHJlc2V0LWluLXByb2dyZXNzLiBIYW5kbGUgdGhpcyB3 aXRoIGEgZmxhZy4KPiAtCQkgKi8KPiAtCQlpZiAoIWVycm9yLT5yZWxvYWRfaW5fcmVzZXQpCj4g LQkJCXJldHVybiAtRUFHQUlOOwo+ICsJCXJldHVybiAtRUFHQUlOOwo+ICAJfQo+ICAKPiAgCXJl dHVybiAwOwo+IEBAIC0xMjIzLDcgKzEyMTQsNiBAQCBzdGF0aWMgaW50IF9faTkxNV9zcGluX3Jl cXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzdGF0ZSkKPiAgLyoq Cj4gICAqIF9faTkxNV93YWl0X3JlcXVlc3QgLSB3YWl0IHVudGlsIGV4ZWN1dGlvbiBvZiByZXF1 ZXN0IGhhcyBmaW5pc2hlZAo+ICAgKiBAcmVxOiBkdWghCj4gLSAqIEByZXNldF9jb3VudGVyOiBy ZXNldCBzZXF1ZW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHJlcXVlc3QKPiAgICogQGlu dGVycnVwdGlibGU6IGRvIGFuIGludGVycnVwdGlibGUgd2FpdCAobm9ybWFsbHkgeWVzKQo+ICAg KiBAdGltZW91dDogaW4gLSBob3cgbG9uZyB0byB3YWl0IChOVUxMIGZvcmV2ZXIpOyBvdXQgLSBo b3cgbXVjaCB0aW1lIHJlbWFpbmluZwo+ICAgKgo+IEBAIC0xMjM4LDcgKzEyMjgsNiBAQCBzdGF0 aWMgaW50IF9faTkxNV9zcGluX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIGludCBzdGF0ZSkKPiAgICogZXJybm8gd2l0aCByZW1haW5pbmcgdGltZSBmaWxsZWQgaW4g dGltZW91dCBhcmd1bWVudC4KPiAgICovCj4gIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+IC0JCQl1bnNpZ25lZCByZXNldF9jb3VudGVy LAo+ICAJCQlib29sIGludGVycnVwdGlibGUsCj4gIAkJCXM2NCAqdGltZW91dCwKPiAgCQkJc3Ry dWN0IGludGVsX3Jwc19jbGllbnQgKnJwcykKPiBAQCAtMTI4OSwxMiArMTI3OCwxMiBAQCBpbnQg X19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAg Cj4gIAkJLyogV2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIGFueSBncHUgcmVzZXQgaGFwcGVuZWQg aW4gYmV0d2Vlbgo+ICAJCSAqIHRoZSBjYWxsZXIgZ3JhYmJpbmcgdGhlIHNlcW5vIGFuZCBub3cg Li4uICovCj4gLQkJaWYgKHJlc2V0X2NvdW50ZXIgIT0gYXRvbWljX3JlYWQoJmRldl9wcml2LT5n cHVfZXJyb3IucmVzZXRfY291bnRlcikpIHsKPiAtCQkJLyogLi4uIGJ1dCB1cGdyYWRlIHRoZSAt RUFHQUlOIHRvIGFuIC1FSU8gaWYgdGhlIGdwdQo+IC0JCQkgKiBpcyB0cnVlbHkgZ29uZS4gKi8K PiAtCQkJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsIGlu dGVycnVwdGlibGUpOwo+IC0JCQlpZiAocmV0ID09IDApCj4gLQkJCQlyZXQgPSAtRUFHQUlOOwo+ ICsJCWlmIChyZXEtPnJlc2V0X2NvdW50ZXIgIT0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJp di0+Z3B1X2Vycm9yKSkgewo+ICsJCQkvKiBBcyB3ZSBkbyBub3QgcmVxdWV1ZSB0aGUgcmVxdWVz dCBvdmVyIGEgR1BVIHJlc2V0LAo+ICsJCQkgKiBpZiBvbmUgZG9lcyBvY2N1ciB3ZSBrbm93IHRo YXQgdGhlIHJlcXVlc3QgaXMKPiArCQkJICogZWZmZWN0aXZlbHkgY29tcGxldGUuCj4gKwkJCSAq Lwo+ICsJCQlyZXQgPSAwOwo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAo+IEBAIC0xNDYyLDEzICsx NDUxLDcgQEAgaTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCj4gIAo+ICAJQlVHX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7 Cj4gIAo+IC0JcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3Is IGludGVycnVwdGlibGUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJl dCA9IF9faTkxNV93YWl0X3JlcXVlc3QocmVxLAo+IC0JCQkJICBhdG9taWNfcmVhZCgmZGV2X3By aXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKSwKPiAtCQkJCSAgaW50ZXJydXB0aWJsZSwgTlVM TCwgTlVMTCk7Cj4gKwlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJlcSwgaW50ZXJydXB0aWJs ZSwgTlVMTCwgTlVMTCk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC0x NTQzLDcgKzE1MjYsNiBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmdfX25vbmJsb2Nr aW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3RzW0k5MTVfTlVNX1JJTkdTXTsKPiAtCXVuc2lnbmVkIHJlc2V0X2NvdW50ZXI7Cj4g IAlpbnQgcmV0LCBpLCBuID0gMDsKPiAgCj4gIAlCVUdfT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2 LT5zdHJ1Y3RfbXV0ZXgpKTsKPiBAQCAtMTU1MiwxMiArMTUzNCw2IEBAIGk5MTVfZ2VtX29iamVj dF93YWl0X3JlbmRlcmluZ19fbm9uYmxvY2tpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAgCWlmICghb2JqLT5hY3RpdmUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JcmV0ID0g aTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsIHRydWUpOwo+IC0JaWYg KHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJlc2V0X2NvdW50ZXIgPSBhdG9taWNfcmVh ZCgmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKTsKPiAtCj4gIAlpZiAocmVhZG9u bHkpIHsKPiAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiAgCj4gQEAgLTE1 NzksOSArMTU1NSw5IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmluZ19fbm9uYmxvY2tp bmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCX0KPiAgCj4gIAltdXRleF91 bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCXJldCA9IDA7Cj4gIAlmb3IgKGkgPSAwOyBy ZXQgPT0gMCAmJiBpIDwgbjsgaSsrKQo+IC0JCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QocmVx dWVzdHNbaV0sIHJlc2V0X2NvdW50ZXIsIHRydWUsCj4gLQkJCQkJICBOVUxMLCBycHMpOwo+ICsJ CXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdHNbaV0sIHRydWUsIE5VTEwsIHJwcyk7 Cj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJZm9yIChpID0gMDsg aSA8IG47IGkrKykgewo+IEBAIC0yNjg1LDYgKzI2NjEsNyBAQCBpbnQgaTkxNV9nZW1fcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAJCQkgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKipyZXFfb3V0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHJpbmctPmRldik7Cj4gKwl1bnNpZ25lZCByZXNldF9j b3VudGVyID0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTI2 OTMsNiArMjY3MCwxMCBAQCBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAo+ICAKPiAgCSpyZXFfb3V0ID0gTlVMTDsKPiAgCj4gKwlyZXQgPSBp OTE1X2dlbV9jaGVja193ZWRnZShyZXNldF9jb3VudGVyLCBkZXZfcHJpdi0+bW0uaW50ZXJydXB0 aWJsZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAJcmVxID0ga21lbV9j YWNoZV96YWxsb2MoZGV2X3ByaXYtPnJlcXVlc3RzLCBHRlBfS0VSTkVMKTsKPiAgCWlmIChyZXEg PT0gTlVMTCkKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiBAQCAtMjcwNCw2ICsyNjg1LDcgQEAgaW50 IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAg CWtyZWZfaW5pdCgmcmVxLT5yZWYpOwo+ICAJcmVxLT5pOTE1ID0gZGV2X3ByaXY7Cj4gIAlyZXEt PnJpbmcgPSByaW5nOwo+ICsJcmVxLT5yZXNldF9jb3VudGVyID0gcmVzZXRfY291bnRlcjsKPiAg CXJlcS0+Y3R4ICA9IGN0eDsKPiAgCWk5MTVfZ2VtX2NvbnRleHRfcmVmZXJlbmNlKHJlcS0+Y3R4 KTsKPiAgCj4gQEAgLTMwNjQsMTEgKzMwNDYsOSBAQCByZXRpcmU6Cj4gIGludAo+ICBpOTE1X2dl bV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fd2FpdCAqYXJncyA9 IGRhdGE7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXFbSTkxNV9OVU1fUklOR1NdOwo+IC0JdW5zaWduZWQgcmVz ZXRfY291bnRlcjsKPiAgCWludCBpLCBuID0gMDsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0zMTAy LDcgKzMwODIsNiBAQCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgCX0KPiAgCj4gIAlkcm1fZ2Vt X29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiAtCXJlc2V0X2NvdW50ZXIgPSBhdG9t aWNfcmVhZCgmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKTsKPiAgCj4gIAlmb3Ig KGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgewo+ICAJCWlmIChvYmotPmxhc3RfcmVh ZF9yZXFbaV0gPT0gTlVMTCkKPiBAQCAtMzExNSwxMSArMzA5NCwyMyBAQCBpOTE1X2dlbV93YWl0 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Cj4gIAkJaWYgKHJldCA9 PSAwKQo+IC0JCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJlcVtpXSwgcmVzZXRfY291bnRl ciwgdHJ1ZSwKPiArCQkJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdChyZXFbaV0sIHRydWUsCj4g IAkJCQkJCSAgYXJncy0+dGltZW91dF9ucyA+IDAgPyAmYXJncy0+dGltZW91dF9ucyA6IE5VTEws Cj4gIAkJCQkJCSAgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsKPiArCQkvKiBJZiB0aGUgR1BVIGh1 bmcgYmVmb3JlIHRoaXMsIHJlcG9ydCBpdC4gSWRlYWxseSB3ZSBvbmx5Cj4gKwkJICogcmVwb3J0 IGlmIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgY29tcGxldGVkLiBDdXJyZW50bHkKPiArCQkgKiB3 aGVuIHdlIGRvbid0IG1hcmsgdGhlIGd1aWx0eSBwYXJ0eSBhbmQgYWJvcnQgYWxsCj4gKwkJICog cmVxdWVzdHMgb24gcmVzZXQsIHNvIGp1c3QgbWFyayBhbGwgYXMgRUlPLgo+ICsJCSAqLwo+ICsJ CWlmIChyZXQgPT0gMCAmJgo+ICsJCSAgICByZXFbaV0tPnJlc2V0X2NvdW50ZXIgIT0gaTkxNV9y ZXNldF9jb3VudGVyKCZyZXFbaV0tPmk5MTUtPmdwdV9lcnJvcikpCj4gKwkJCXJldCA9IC1FSU87 Cj4gKwo+ICAJCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3VubG9ja2VkKHJlcVtpXSk7 Cj4gIAl9Cj4gKwo+ICsKPiAgCXJldHVybiByZXQ7Cj4gIAo+ICBvdXQ6Cj4gQEAgLTMxNDcsNyAr MzEzOCw2IEBAIF9faTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAgCWlmICghaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChvYmotPmJhc2UuZGV2 KSkgewo+ICAJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJh c2UuZGV2KTsKPiAgCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KGZyb21fcmVxLAo+IC0JCQkJ CSAgYXRvbWljX3JlYWQoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKSwKPiAgCQkJCQkg IGk5MTUtPm1tLmludGVycnVwdGlibGUsCj4gIAkJCQkJICBOVUxMLAo+ICAJCQkJCSAgJmk5MTUt PnJwcy5zZW1hcGhvcmVzKTsKPiBAQCAtNDA3NiwxNCArNDA2NiwxNSBAQCBpOTE1X2dlbV9yaW5n X3Rocm90dGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkK PiAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZl cl9wcml2Owo+ICAJdW5zaWduZWQgbG9uZyByZWNlbnRfZW5vdWdoID0gamlmZmllcyAtIERSTV9J OTE1X1RIUk9UVExFX0pJRkZJRVM7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QsICp0YXJnZXQgPSBOVUxMOwo+IC0JdW5zaWduZWQgcmVzZXRfY291bnRlcjsKPiAgCWlu dCByZXQ7Cj4gIAo+ICAJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfZXJyb3IoJmRldl9wcml2LT5n cHVfZXJyb3IpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCXJldCA9IGk5 MTVfZ2VtX2NoZWNrX3dlZGdlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLCBmYWxzZSk7Cj4gKwkvKiBB Qkk6IHJldHVybiAtRUlPIGlmIHdlZGdlZCAqLwo+ICsJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2Vk Z2UoaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSwKPiArCQkJCSAgIGZh bHNlKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gQEAgLTQxMDEsNyArNDA5 Miw2IEBAIGk5MTVfZ2VtX3JpbmdfdGhyb3R0bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9maWxlICpmaWxlKQo+ICAKPiAgCQl0YXJnZXQgPSByZXF1ZXN0Owo+ICAJfQo+IC0J cmVzZXRfY291bnRlciA9IGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2Nv dW50ZXIpOwo+ICAJaWYgKHRhcmdldCkKPiAgCQlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZSh0 YXJnZXQpOwo+ICAJc3Bpbl91bmxvY2soJmZpbGVfcHJpdi0+bW0ubG9jayk7Cj4gQEAgLTQxMDks NyArNDA5OSw3IEBAIGk5MTVfZ2VtX3JpbmdfdGhyb3R0bGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAJaWYgKHRhcmdldCA9PSBOVUxMKQo+ICAJCXJl dHVybiAwOwo+ICAKPiAtCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QodGFyZ2V0LCByZXNldF9j b3VudGVyLCB0cnVlLCBOVUxMLCBOVUxMKTsKPiArCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3Qo dGFyZ2V0LCB0cnVlLCBOVUxMLCBOVUxMKTsKPiAgCWlmIChyZXQgPT0gMCkKPiAgCQlxdWV1ZV9k ZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLCAmZGV2X3ByaXYtPm1tLnJldGlyZV93b3JrLCAwKTsK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggZTg4ZDY5MjU4M2E1Li4zYjJhOGZi ZTAzOTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMjQzNCw3ICsyNDM0LDYg QEAgc3RhdGljIHZvaWQgaTkxNV9lcnJvcl93YWtlX3VwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgc3RhdGljIHZvaWQgaTkxNV9yZXNldF9hbmRfd2FrZXVwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IgPSAmZGV2 X3ByaXYtPmdwdV9lcnJvcjsKPiAgCWNoYXIgKmVycm9yX2V2ZW50W10gPSB7IEk5MTVfRVJST1Jf VUVWRU5UICI9MSIsIE5VTEwgfTsKPiAgCWNoYXIgKnJlc2V0X2V2ZW50W10gPSB7IEk5MTVfUkVT RVRfVUVWRU5UICI9MSIsIE5VTEwgfTsKPiAgCWNoYXIgKnJlc2V0X2RvbmVfZXZlbnRbXSA9IHsg STkxNV9FUlJPUl9VRVZFTlQgIj0wIiwgTlVMTCB9Owo+IEBAIC0yNDUyLDcgKzI0NTEsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCSAqIHRoZSByZXNldCBpbi1wcm9ncmVzcyBiaXQgaXMgb25seSBldmVyIHNldCBieSBjb2Rl IG91dHNpZGUgb2YgdGhpcwo+ICAJICogd29yayB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0 IGFueSBvdGhlciByYWNlcy4KPiAgCSAqLwo+IC0JaWYgKGk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3Mo ZXJyb3IpICYmICFpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGVycm9yKSkgewo+ICsJaWYgKGk5MTVf cmVzZXRfaW5fcHJvZ3Jlc3MoJmRldl9wcml2LT5ncHVfZXJyb3IpKSB7Cj4gIAkJRFJNX0RFQlVH X0RSSVZFUigicmVzZXR0aW5nIGNoaXBcbiIpOwo+ICAJCWtvYmplY3RfdWV2ZW50X2VudigmZGV2 LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBLT0JKX0NIQU5HRSwKPiAgCQkJCSAgIHJlc2V0X2V2ZW50 KTsKPiBAQCAtMjQ4MCwyNSArMjQ3OSw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRfYW5kX3dh a2V1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCQlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdik7Cj4gIAo+IC0JCWlmIChyZXQgPT0gMCkgewo+IC0JCQkvKgo+IC0JCQkgKiBB ZnRlciBhbGwgdGhlIGdlbSBzdGF0ZSBpcyByZXNldCwgaW5jcmVtZW50IHRoZSByZXNldAo+IC0J CQkgKiBjb3VudGVyIGFuZCB3YWtlIHVwIGV2ZXJ5b25lIHdhaXRpbmcgZm9yIHRoZSByZXNldCB0 bwo+IC0JCQkgKiBjb21wbGV0ZS4KPiAtCQkJICoKPiAtCQkJICogU2luY2UgdW5sb2NrIG9wZXJh dGlvbnMgYXJlIGEgb25lLXNpZGVkIGJhcnJpZXIgb25seSwKPiAtCQkJICogd2UgbmVlZCB0byBp bnNlcnQgYSBiYXJyaWVyIGhlcmUgdG8gb3JkZXIgYW55IHNlcW5vCj4gLQkJCSAqIHVwZGF0ZXMg YmVmb3JlCj4gLQkJCSAqIHRoZSBjb3VudGVyIGluY3JlbWVudC4KPiAtCQkJICovCj4gLQkJCXNt cF9tYl9fYmVmb3JlX2F0b21pYygpOwo+IC0JCQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yLnJlc2V0X2NvdW50ZXIpOwo+IC0KPiArCQlpZiAocmV0ID09IDApCj4gIAkJCWtvYmplY3Rf dWV2ZW50X2VudigmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLAo+ICAJCQkJCSAgIEtPQkpfQ0hB TkdFLCByZXNldF9kb25lX2V2ZW50KTsKPiAtCQl9IGVsc2Ugewo+IC0JCQlhdG9taWNfb3IoSTkx NV9XRURHRUQsICZlcnJvci0+cmVzZXRfY291bnRlcik7Cj4gLQkJfQo+ICAKPiAgCQkvKgo+ICAJ CSAqIE5vdGU6IFRoZSB3YWtlX3VwIGFsc28gc2VydmVzIGFzIGEgbWVtb3J5IGJhcnJpZXIgc28g dGhhdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAwNzQzMzM3YWM5 ZTguLmQ3N2ExN2JiOTRkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiBAQCAtMzI4OSw4ICszMjg5LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0Y19oYXNfcGVuZGlu Z19mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWJvb2wgcGVuZGluZzsKPiAgCj4gLQlp ZiAoaTkxNV9yZXNldF9pbl9wcm9ncmVzcygmZGV2X3ByaXYtPmdwdV9lcnJvcikgfHwKPiAtCSAg ICBpbnRlbF9jcnRjLT5yZXNldF9jb3VudGVyICE9IGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1 X2Vycm9yLnJlc2V0X2NvdW50ZXIpKQo+ICsJaWYgKGludGVsX2NydGMtPnJlc2V0X2NvdW50ZXIg IT0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkKPiAgCQlyZXR1cm4g ZmFsc2U7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiBAQCAtMTA4 NzksOCArMTA4NzgsNyBAQCBzdGF0aWMgYm9vbCBwYWdlX2ZsaXBfZmluaXNoZWQoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5k ZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICAKPiAtCWlmIChpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yKSB8fAo+IC0JICAgIGNydGMtPnJlc2V0X2NvdW50ZXIgIT0gYXRvbWljX3JlYWQoJmRldl9w cml2LT5ncHVfZXJyb3IucmVzZXRfY291bnRlcikpCj4gKwlpZiAoY3J0Yy0+cmVzZXRfY291bnRl ciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3IpKQo+ICAJCXJldHVy biB0cnVlOwo+ICAKPiAgCS8qCj4gQEAgLTExMzIyLDcgKzExMzIwLDYgQEAgc3RhdGljIHZvaWQg aW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAo+ ICAJaWYgKG1taW9fZmxpcC0+cmVxKSB7Cj4gIAkJV0FSTl9PTihfX2k5MTVfd2FpdF9yZXF1ZXN0 KG1taW9fZmxpcC0+cmVxLAo+IC0JCQkJCSAgICBtbWlvX2ZsaXAtPmNydGMtPnJlc2V0X2NvdW50 ZXIsCj4gIAkJCQkJICAgIGZhbHNlLCBOVUxMLAo+ICAJCQkJCSAgICAmbW1pb19mbGlwLT5pOTE1 LT5ycHMubW1pb2ZsaXBzKSk7Cj4gIAkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV9fdW5s b2NrZWQobW1pb19mbGlwLT5yZXEpOwo+IEBAIC0xMzMxMiw5ICsxMzMwOSw2IEBAIHN0YXRpYyBp bnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAo+ICAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7 Cj4gIAlpZiAoIXJldCAmJiAhYXN5bmMgJiYgIWk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoJmRldl9w cml2LT5ncHVfZXJyb3IpKSB7Cj4gLQkJdTMyIHJlc2V0X2NvdW50ZXI7Cj4gLQo+IC0JCXJlc2V0 X2NvdW50ZXIgPSBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVy KTsKPiAgCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gIAkJZm9yX2Vh Y2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+IEBAIC0x MzMyNSw4ICsxMzMxOSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQljb250aW51ZTsKPiAgCj4gIAkJCXJldCA9 IF9faTkxNV93YWl0X3JlcXVlc3QoaW50ZWxfcGxhbmVfc3RhdGUtPndhaXRfcmVxLAo+IC0JCQkJ CQkgIHJlc2V0X2NvdW50ZXIsIHRydWUsCj4gLQkJCQkJCSAgTlVMTCwgTlVMTCk7Cj4gKwkJCQkJ CSAgdHJ1ZSwgTlVMTCwgTlVMTCk7Cj4gIAo+ICAJCQkvKiBTd2FsbG93IC1FSU8gZXJyb3JzIHRv IGFsbG93IHVwZGF0ZXMgZHVyaW5nIGh3IGxvY2t1cC4gKi8KPiAgCQkJaWYgKHJldCA9PSAtRUlP KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggNGViYWZhYjUzZjMwLi5iNDBmZmMz NjA3ZTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC03MTEsNiArNzExLDE0 IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAr CS8qIElmIHRoZSByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgZHVlIHRvIGEgR1BVIGhhbmcsIHdlIHdh bnQgdG8KPiArCSAqIGVycm9yIG91dCBiZWZvcmUgd2UgY29udGludWUgdG8gZW1pdCBtb3JlIGNv bW1hbmRzIHRvIHRoZSBHUFUuCj4gKwkgKi8KPiArCXJldCA9IGk5MTVfZ2VtX2NoZWNrX3dlZGdl KGk5MTVfcmVzZXRfY291bnRlcigmcmVxLT5pOTE1LT5ncHVfZXJyb3IpLAo+ICsJCQkJICAgcmVx LT5pOTE1LT5tbS5pbnRlcnJ1cHRpYmxlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsK PiArCj4gIAlyaW5nYnVmLT5zcGFjZSA9IHNwYWNlOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAt ODI1LDExICs4MzMsNiBAQCBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykKPiAgCVdBUk5fT04ocmVxID09 IE5VTEwpOwo+ICAJZGV2X3ByaXYgPSByZXEtPnJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAo+ IC0JcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsCj4gLQkJ CQkgICBkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVy biByZXQ7Cj4gLQo+ICAJcmV0ID0gbG9naWNhbF9yaW5nX3ByZXBhcmUocmVxLCBudW1fZHdvcmRz ICogc2l6ZW9mKHVpbnQzMl90KSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDU3ZDc4ZjI2NGI1My4u NTExZWZlNTU2ZDczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu Ywo+IEBAIC0yMjU0LDYgKzIyNTQsMTQgQEAgc3RhdGljIGludCByaW5nX3dhaXRfZm9yX3NwYWNl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQo+ICAJaWYgKHJldCkKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiArCS8qIElmIHRoZSByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgZHVlIHRv IGEgR1BVIGhhbmcsIHdlIHdhbnQgdG8KPiArCSAqIGVycm9yIG91dCBiZWZvcmUgd2UgY29udGlu dWUgdG8gZW1pdCBtb3JlIGNvbW1hbmRzIHRvIHRoZSBHUFUuCj4gKwkgKi8KPiArCXJldCA9IGk5 MTVfZ2VtX2NoZWNrX3dlZGdlKGk5MTVfcmVzZXRfY291bnRlcigmdG9faTkxNShyaW5nLT5kZXYp LT5ncHVfZXJyb3IpLAo+ICsJCQkJICAgdG9faTkxNShyaW5nLT5kZXYpLT5tbS5pbnRlcnJ1cHRp YmxlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gIAlyaW5nYnVmLT5zcGFj ZSA9IHNwYWNlOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMjI4Niw3ICsyMjk0LDYgQEAgaW50 IGludGVsX3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAKPiAgCS8q IE1ha2Ugc3VyZSB3ZSBkbyBub3QgdHJpZ2dlciBhbnkgcmV0aXJlcyAqLwo+ICAJcmV0dXJuIF9f aTkxNV93YWl0X3JlcXVlc3QocmVxLAo+IC0JCQkJICAgYXRvbWljX3JlYWQoJnRvX2k5MTUocmlu Zy0+ZGV2KS0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpLAo+ICAJCQkJICAgdG9faTkxNShyaW5n LT5kZXYpLT5tbS5pbnRlcnJ1cHRpYmxlLAo+ICAJCQkJICAgTlVMTCwgTlVMTCk7Cj4gIH0KPiBA QCAtMjQxNywxMSArMjQyNCw2IEBAIGludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJcmluZyA9IHJlcS0+cmluZzsKPiAgCWRldl9wcml2ID0g cmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9jaGVja193ZWRn ZSgmZGV2X3ByaXYtPmdwdV9lcnJvciwKPiAtCQkJCSAgIGRldl9wcml2LT5tbS5pbnRlcnJ1cHRp YmxlKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gIAlyZXQgPSBfX2ludGVs X3JpbmdfcHJlcGFyZShyaW5nLCBudW1fZHdvcmRzICogc2l6ZW9mKHVpbnQzMl90KSk7Cj4gIAlp ZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gLS0gCj4gMi42LjIKPiAKPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIK U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNo Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==