From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Reduce context HW ID lifetime Date: Thu, 30 Aug 2018 17:23:43 +0100 Message-ID: References: <20180830102454.26956-1-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E31A86E17A for ; Thu, 30 Aug 2018 16:23:57 +0000 (UTC) In-Reply-To: <20180830102454.26956-1-chris@chris-wilson.co.uk> Content-Language: en-GB 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: Oscar Mateo , Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org Ck9uIDMwLzA4LzIwMTggMTE6MjQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBGdXR1cmUgZ2VuIHJl ZHVjZSB0aGUgbnVtYmVyIG9mIGJpdHMgd2Ugd2lsbCBoYXZlIGF2YWlsYWJsZSB0bwo+IGRpZmZl cmVudGlhdGUgYmV0d2VlbiBjb250ZXh0cywgc28gcmVkdWNlIHRoZSBsaWZldGltZSBvZiB0aGUg SUQKPiBhc3NpZ25tZW50IGZyb20gdGhhdCBvZiB0aGUgY29udGV4dCB0byBpdHMgY3VycmVudCBh Y3RpdmUgY3ljbGUgKGkuZS4KPiBvbmx5IHdoaWxlIGl0IGlzIHBpbm5lZCBmb3IgdXNlIGJ5IHRo ZSBIVywgd2lsbCBpdCBoYXZlIGEgY29uc3RhbnQgSUQpLgo+IFRoaXMgbWVhbnMgdGhhdCBpbnN0 ZWFkIG9mIGEgbWF4IG9mIDJrIGFsbG9jYXRlZCBjb250ZXh0cyAod29yc3QgY2FzZQo+IGJlZm9y ZSBmdW4gd2l0aCBiaXQgdHdpZGRsaW5nKSwgd2UgaW5zdGVhZCBoYXZlIGEgbGltaXQgb2YgMmsg aW4gZmxpZ2h0Cj4gY29udGV4dHMgKG1pbnVzIGEgZmV3IHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCBi eSB0aGUga2VybmVsIG9yIGJ5IHBlcmYpLgoKV2UgbmVlZCBhIHBhcmFncmFwaCBvdXRsaW5pbmcg dGhlIGltcGxlbWVudGF0aW9uLgoKPiAKPiBXZSBjYW5ub3QgcmVkdWNlIHRoZSBzY29wZSBvZiBh biBIVy1JRCB0byBhbiBlbmdpbmUgKGFsbG93aW5nIHRoZSBzYW1lCj4gZ2VtX2NvbnRleHQgdG8g aGF2ZSBkaWZmZXJlbnQgaWRzIG9uIGVhY2ggZW5naW5lKSBhcyBpbiB0aGUgZnV0dXJlIHdlCj4g d2lsbCBuZWVkIHRvIHByZWFzc2lnbiBhbiBpZCBiZWZvcmUgd2Uga25vdyB3aGljaCBlbmdpbmUg dGhlCj4gY29udGV4dCBpcyBiZWluZyBleGVjdXRlZCBvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogTGlvbmVsIExhbmR3 ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgo+IENjOiBPc2NhciBNYXRlbyA8 b3NjYXIubWF0ZW9AaW50ZWwuY29tPgoKWW91IGNhbiBkcm9wIE9zY2FyIHNpbmNlIGhlIGxlZnQg SW50ZWwuCgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KPiBDYzogTWljaGVs IFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICAgNSArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAyICsKPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDIwNyArKysrKysrKysrKysr LS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8 ICAxNyArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICAg IHwgICA4ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQu YyB8ICAxMSArLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAxODEgaW5zZXJ0aW9ucygrKSwgNjkgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhNTI2 NWMyMzZhMzMuLmJmM2I2YzZkYjUxZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gQEAgLTE5NTMsNyArMTk1MywxMCBAQCBzdGF0aWMgaW50IGk5MTVfY29udGV4dF9zdGF0 dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJCXJldHVybiByZXQ7Cj4g ICAKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldl9wcml2LT5jb250ZXh0cy5saXN0 LCBsaW5rKSB7Cj4gLQkJc2VxX3ByaW50ZihtLCAiSFcgY29udGV4dCAldSAiLCBjdHgtPmh3X2lk KTsKPiArCQlzZXFfcHV0cyhtLCAiSFcgY29udGV4dCAiKTsKPiArCQlpZiAoIWxpc3RfZW1wdHko JmN0eC0+aHdfaWRfbGluaykpCj4gKwkJCXNlcV9wcmludGYobSwgIiV4IFtwaW4gJXVdIiwKPiAr CQkJCSAgIGN0eC0+aHdfaWQsIGF0b21pY19yZWFkKCZjdHgtPnBpbl9od19pZCkpOwo+ICAgCQlp ZiAoY3R4LT5waWQpIHsKPiAgIAkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKPiAgIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGU1YjlkM2M3NzEzOS4uY2E2YjU1ZDI5ZDZhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE4NjIsNiArMTg2Miw3IEBAIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlIHsKPiAgIAlzdHJ1Y3QgbXV0ZXggYXZfbXV0ZXg7Cj4gICAKPiAg IAlzdHJ1Y3Qgewo+ICsJCXN0cnVjdCBtdXRleCBtdXRleDsKPiAgIAkJc3RydWN0IGxpc3RfaGVh ZCBsaXN0Owo+ICAgCQlzdHJ1Y3QgbGxpc3RfaGVhZCBmcmVlX2xpc3Q7Cj4gICAJCXN0cnVjdCB3 b3JrX3N0cnVjdCBmcmVlX3dvcms7Cj4gQEAgLTE4NzQsNiArMTg3NSw3IEBAIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlIHsKPiAgICNkZWZpbmUgTUFYX0NPTlRFWFRfSFdfSUQgKDE8PDIxKSAvKiBl eGNsdXNpdmUgKi8KPiAgICNkZWZpbmUgTUFYX0dVQ19DT05URVhUX0hXX0lEICgxIDw8IDIwKSAv KiBleGNsdXNpdmUgKi8KPiAgICNkZWZpbmUgR0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQgKDE8PDEx KSAvKiBleGNsdXNpdmUgKi8KPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIGh3X2lkX2xpc3Q7Cj4gICAJ fSBjb250ZXh0czsKPiAgIAo+ICAgCXUzMiBmZGlfcnhfY29uZmlnOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBmMTVhMDM5NzcyZGIuLmQzMzkwOTQyZjM3 YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTE1 LDYgKzExNSw4NSBAQCBzdGF0aWMgdm9pZCBsdXRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKPiAgIAlyY3VfcmVhZF91bmxvY2soKTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW5s aW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGdmcF90IGdm cCkKPiArewo+ICsJdW5zaWduZWQgaW50IG1heDsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxk KCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gKwo+ICsJaWYgKElOVEVMX0dFTihpOTE1KSA+PSAx MSkKPiArCQltYXggPSBHRU4xMV9NQVhfQ09OVEVYVF9IV19JRDsKPiArCWVsc2UgaWYgKFVTRVNf R1VDX1NVQk1JU1NJT04oaTkxNSkpCj4gKwkJLyoKPiArCQkgKiBXaGVuIHVzaW5nIEd1QyBpbiBw cm94eSBzdWJtaXNzaW9uLCBHdUMgY29uc3VtZXMgdGhlCj4gKwkJICogaGlnaGVzdCBiaXQgaW4g dGhlIGNvbnRleHQgaWQgdG8gaW5kaWNhdGUgcHJveHkgc3VibWlzc2lvbi4KPiArCQkgKi8KPiAr CQltYXggPSBNQVhfR1VDX0NPTlRFWFRfSFdfSUQ7Cj4gKwllbHNlCj4gKwkJbWF4ID0gTUFYX0NP TlRFWFRfSFdfSUQ7Cj4gKwo+ICsJcmV0dXJuIGlkYV9zaW1wbGVfZ2V0KCZpOTE1LT5jb250ZXh0 cy5od19pZGEsIDAsIG1heCwgZ2ZwKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBzdGVhbF9od19p ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwgKmNuOwo+ICsJTElTVF9IRUFEKHBpbm5lZCk7Cj4gKwlpbnQgaWQgPSAt RU5PU1BDOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmNvbnRleHRzLm11dGV4 KTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3R4LCBjbiwKPiArCQkJCSAmaTkx NS0+Y29udGV4dHMuaHdfaWRfbGlzdCwgaHdfaWRfbGluaykgewo+ICsJCWlmIChhdG9taWNfcmVh ZCgmY3R4LT5waW5faHdfaWQpKSB7Cj4gKwkJCWxpc3RfbW92ZV90YWlsKCZjdHgtPmh3X2lkX2xp bmssICZwaW5uZWQpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCUdFTV9CVUdfT04o IWN0eC0+aHdfaWQpOyAvKiBwZXJtYS1waW5uZWQga2VybmVsIGNvbnRleHQgKi8KPiArCQlsaXN0 X2RlbF9pbml0KCZjdHgtPmh3X2lkX2xpbmspOwo+ICsJCWlkID0gY3R4LT5od19pZDsKPiArCQli cmVhazsKPiArCX0KPiArCj4gKwlsaXN0X3NwbGljZV90YWlsKCZwaW5uZWQsICZpOTE1LT5jb250 ZXh0cy5od19pZF9saXN0KTsKClB1dCBhIGNvbW1lbnQgd2hhdCBpcyB0aGlzIGNvZGUgZG9pbmcg cGxlYXNlLiBUcnlpbmcgdG8gY3JlYXRlIHNvbWUgc29ydCAKb2YgTFJVIG9yZGVyPwoKPiArCXJl dHVybiBpZDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhc3NpZ25faHdfaWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCAqb3V0KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiArCj4g KwlyZXQgPSBuZXdfaHdfaWQoaTkxNSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1JFVFJZX01BWUZBSUwg fCBfX0dGUF9OT1dBUk4pOwo+ICsJaWYgKHVubGlrZWx5KHJldCA8IDApKSB7Cj4gKwkJcmV0ID0g c3RlYWxfaHdfaWQoaTkxNSk7Cj4gKwkJaWYgKHJldCA8IDApIC8qIG9uY2UgYWdhaW4gZm9yIHRo ZSBjb3JyZWN0IGVycm8gY29kZSAqLwoKZXJybm8KCj4gKwkJCXJldCA9IG5ld19od19pZChpOTE1 LCBHRlBfS0VSTkVMKTsKCkhtbS4uIHNob3VsZG4ndCB5b3UgdHJ5IEdGUF9LRVJORUwgYmVmb3Jl IGF0dGVtcHRpbmcgdG8gc3RlYWw/IEFjdHVhbGx5IApJIHRoaW5rIHlvdSBzaG91bGQgYnJhbmNo IGJhc2VkIG9uIC1FTk9TUEMgKHN0ZWFsKSB2cyAtRU5PTUVNIChyZXRyeSAKd2l0aCBHRlBfS0VS TkVMKS4gV2hpY2ggd291bGQgYWN0dWFsbHkgbWVhbiBzb21ldGhpbmcgbGlrZToKCglmbGFncyA9 IG1heSBmYWlsOwoJZnVuYyA9IG5ld19od19pZApyZXRyeToKCXJldCA9IGZ1bmMoZmxhZ3MpOwoJ aWYgKHJldCA9PSAtRU5PTUVNICYmIGZsYWdzICE9IEdGUF9LRVJORUwpIHsKCQlmbGFncyA9IEdG UF9LRVJORUw7CgkJZ290byByZXRyeTsKCX0gZWxzZSBpZiAocmV0ID09IC1FTk9TUEMgJiYgZnVu YyAhPSBzdGVhbF9od19pZCkgewoJCWZ1bmMgPSBzdGVhbF9od19pZDsKCQlnb3RvIHJldHJ5OwoJ fSBlbHNlIHsKCQlubyBjYW4gZG8KCX0KCj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwo+ICsJKm91dCA9IHJldDsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCByZWxlYXNlX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1Owo+ICsKPiAr CWlmIChsaXN0X2VtcHR5KCZjdHgtPmh3X2lkX2xpbmspKQo+ICsJCXJldHVybjsKPiArCj4gKwlt dXRleF9sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gKwlpZiAoIWxpc3RfZW1wdHkoJmN0 eC0+aHdfaWRfbGluaykpIHsKPiArCQlpZGFfc2ltcGxlX3JlbW92ZSgmaTkxNS0+Y29udGV4dHMu aHdfaWRhLCBjdHgtPmh3X2lkKTsKPiArCQlsaXN0X2RlbF9pbml0KCZjdHgtPmh3X2lkX2xpbmsp Owo+ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gK30KPiAr Cj4gICBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCkKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgbjsKPiBAQCAtMTIyLDYgKzIwMSw3 IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4KQo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAJR0VNX0JVR19PTighaTkxNV9nZW1fY29udGV4dF9pc19jbG9zZWQoY3R4 KSk7Cj4gICAKPiArCXJlbGVhc2VfaHdfaWQoY3R4KTsKPiAgIAlpOTE1X3BwZ3R0X3B1dChjdHgt PnBwZ3R0KTsKPiAgIAo+ICAgCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGN0eC0+X19lbmdp bmUpOyBuKyspIHsKPiBAQCAtMTM2LDcgKzIxNiw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Nv bnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCj4gICAJbGlzdF9k ZWwoJmN0eC0+bGluayk7Cj4gICAKPiAtCWlkYV9zaW1wbGVfcmVtb3ZlKCZjdHgtPmk5MTUtPmNv bnRleHRzLmh3X2lkYSwgY3R4LT5od19pZCk7Cj4gICAJa2ZyZWVfcmN1KGN0eCwgcmN1KTsKPiAg IH0KPiAgIAo+IEBAIC0xOTAsNiArMjY5LDEyIEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfY2xvc2Uo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIHsKPiAgIAlpOTE1X2dlbV9jb250ZXh0 X3NldF9jbG9zZWQoY3R4KTsKPiAgIAo+ICsJLyoKPiArCSAqIFRoaXMgY29udGV4dCB3aWxsIG5l dmVyIGFnYWluIGJlIGFzc2luZ2VkIHRvIEhXLCBzbyB3ZSBjYW4KPiArCSAqIHJldXNlIGl0cyBJ RCBmb3IgdGhlIG5leHQgY29udGV4dC4KPiArCSAqLwo+ICsJcmVsZWFzZV9od19pZChjdHgpOwo+ ICsKPiAgIAkvKgo+ICAgCSAqIFRoZSBMVVQgdXNlcyB0aGUgVk1BIGFzIGEgYmFja3BvaW50ZXIg dG8gdW5yZWYgdGhlIG9iamVjdCwKPiAgIAkgKiBzbyB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBMVVQg YmVmb3JlIHdlIGNsb3NlIGFsbCB0aGUgVk1BIChpbnNpZGUKPiBAQCAtMjAzLDQzICsyODgsNiBA QCBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gICAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50 IGFzc2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVk ICpvdXQpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQl1bnNpZ25lZCBpbnQgbWF4Owo+IC0KPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4gLQkJbWF4ID0gR0VOMTFfTUFYX0NPTlRF WFRfSFdfSUQ7Cj4gLQl9IGVsc2Ugewo+IC0JCS8qCj4gLQkJICogV2hlbiB1c2luZyBHdUMgaW4g cHJveHkgc3VibWlzc2lvbiwgR3VDIGNvbnN1bWVzIHRoZQo+IC0JCSAqIGhpZ2hlc3QgYml0IGlu IHRoZSBjb250ZXh0IGlkIHRvIGluZGljYXRlIHByb3h5IHN1Ym1pc3Npb24uCj4gLQkJICovCj4g LQkJaWYgKFVTRVNfR1VDX1NVQk1JU1NJT04oZGV2X3ByaXYpKQo+IC0JCQltYXggPSBNQVhfR1VD X0NPTlRFWFRfSFdfSUQ7Cj4gLQkJZWxzZQo+IC0JCQltYXggPSBNQVhfQ09OVEVYVF9IV19JRDsK PiAtCX0KPiAtCj4gLQo+IC0JcmV0ID0gaWRhX3NpbXBsZV9nZXQoJmRldl9wcml2LT5jb250ZXh0 cy5od19pZGEsCj4gLQkJCSAgICAgMCwgbWF4LCBHRlBfS0VSTkVMKTsKCkFsdGhvdWdoIG5vdyB0 aGF0IEkgc2VlIHRoaXMgSSBhbSBzdHJ1Z2dsaW5nIG5vdCB0byBzYXkgdGhlIGNoYW5nZSB0byAK dHJ5IGEgbGlnaHRlciB3ZWlnaHQgYWxsb2NhdGlvbiBzdHJhdGVneSBmaXJzdCAoZ2ZwIG1heSBm YWlsKSBuZWVkcyB0byAKYmUgc3BsaXQgb3V0IHRvIGEgc2VwYXJhdGUgcGF0Y2guCgo+IC0JaWYg KHJldCA8IDApIHsKPiAtCQkvKiBDb250ZXh0cyBhcmUgb25seSByZWxlYXNlZCB3aGVuIG5vIGxv bmdlciBhY3RpdmUuCj4gLQkJICogRmx1c2ggYW55IHBlbmRpbmcgcmV0aXJlcyB0byBob3BlZnVs bHkgcmVsZWFzZSBzb21lCj4gLQkJICogc3RhbGUgY29udGV4dHMgYW5kIHRyeSBhZ2Fpbi4KPiAt CQkgKi8KPiAtCQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4gLQkJcmV0ID0gaWRh X3NpbXBsZV9nZXQoJmRldl9wcml2LT5jb250ZXh0cy5od19pZGEsCj4gLQkJCQkgICAgIDAsIG1h eCwgR0ZQX0tFUk5FTCk7Cj4gLQkJaWYgKHJldCA8IDApCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9 Cj4gLQo+IC0JKm91dCA9IHJldDsKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICAgc3RhdGljIHUz MiBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gICAJCQkJIGNvbnN0IHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgIHsKPiBA QCAtMjc2LDEyICszMjQsNiBAQCBfX2NyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgIAlpZiAoY3R4ID09IE5VTEwpCj4gICAJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwo+ICAgCj4gLQlyZXQgPSBhc3NpZ25faHdfaWQoZGV2X3ByaXYsICZjdHgt Pmh3X2lkKTsKPiAtCWlmIChyZXQpIHsKPiAtCQlrZnJlZShjdHgpOwo+IC0JCXJldHVybiBFUlJf UFRSKHJldCk7Cj4gLQl9Cj4gLQo+ICAgCWtyZWZfaW5pdCgmY3R4LT5yZWYpOwo+ICAgCWxpc3Rf YWRkX3RhaWwoJmN0eC0+bGluaywgJmRldl9wcml2LT5jb250ZXh0cy5saXN0KTsKPiAgIAljdHgt Pmk5MTUgPSBkZXZfcHJpdjsKPiBAQCAtMjk1LDYgKzMzNyw3IEBAIF9fY3JlYXRlX2h3X2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCj4gICAJSU5JVF9SQURJ WF9UUkVFKCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKPiAgIAlJTklUX0xJU1RfSEVB RCgmY3R4LT5oYW5kbGVzX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aHdfaWRfbGlu ayk7Cj4gICAKPiAgIAkvKiBEZWZhdWx0IGNvbnRleHQgd2lsbCBuZXZlciBoYXZlIGEgZmlsZV9w cml2ICovCj4gICAJcmV0ID0gREVGQVVMVF9DT05URVhUX0hBTkRMRTsKPiBAQCAtNDIxLDE1ICs0 NjQsMzUgQEAgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZ3Z0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gICAJcmV0dXJuIGN0eDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZAo+ICtkZXN0cm95 X2tlcm5lbF9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoqY3R4cCkKPiArewo+ICsJ c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCj4gKwkvKiBLZWVwIHRoZSBjb250ZXh0 IHJlZiBzbyB0aGF0IHdlIGNhbiBmcmVlIGl0IGltbWVkaWF0ZWx5IG91cnNlbHZlcyAqLwo+ICsJ Y3R4ID0gaTkxNV9nZW1fY29udGV4dF9nZXQoZmV0Y2hfYW5kX3plcm8oY3R4cCkpOwo+ICsJR0VN X0JVR19PTighaTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwoY3R4KSk7Cj4gKwo+ICsJY29udGV4 dF9jbG9zZShjdHgpOwo+ICsJaTkxNV9nZW1fY29udGV4dF9mcmVlKGN0eCk7Cj4gK30KPiArCj4g ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9r ZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQo+ICAgewo+ICAg CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwlpbnQgZXJyOwo+ICAgCj4gICAJY3R4 ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgTlVMTCk7Cj4gICAJaWYgKElTX0VSUihj dHgpKQo+ICAgCQlyZXR1cm4gY3R4Owo+ICAgCj4gKwllcnIgPSBpOTE1X2dlbV9jb250ZXh0X3Bp bl9od19pZChjdHgpOwo+ICsJaWYgKGVycikgewo+ICsJCWRlc3Ryb3lfa2VybmVsX2NvbnRleHQo JmN0eCk7Cj4gKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiArCX0KPiArCj4gICAJaTkxNV9nZW1f Y29udGV4dF9jbGVhcl9iYW5uYWJsZShjdHgpOwo+ICAgCWN0eC0+c2NoZWQucHJpb3JpdHkgPSBw cmlvOwo+ICAgCWN0eC0+cmluZ19zaXplID0gUEFHRV9TSVpFOwo+IEBAIC00MzksMTcgKzUwMiwx OSBAQCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsIGludCBwcmlvKQo+ICAgCXJldHVybiBjdHg7Cj4gICB9Cj4gICAKPiAtc3RhdGlj IHZvaWQKPiAtZGVzdHJveV9rZXJuZWxfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq KmN0eHApCj4gK3N0YXRpYyB2b2lkIGluaXRfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJbXV0 ZXhfaW5pdCgmaTkxNS0+Y29udGV4dHMubXV0ZXgpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmk5MTUt PmNvbnRleHRzLmxpc3QpOwo+ICAgCj4gLQkvKiBLZWVwIHRoZSBjb250ZXh0IHJlZiBzbyB0aGF0 IHdlIGNhbiBmcmVlIGl0IGltbWVkaWF0ZWx5IG91cnNlbHZlcyAqLwo+IC0JY3R4ID0gaTkxNV9n ZW1fY29udGV4dF9nZXQoZmV0Y2hfYW5kX3plcm8oY3R4cCkpOwo+IC0JR0VNX0JVR19PTighaTkx NV9nZW1fY29udGV4dF9pc19rZXJuZWwoY3R4KSk7Cj4gKwkvKiBVc2luZyB0aGUgc2ltcGxlIGlk YSBpbnRlcmZhY2UsIHRoZSBtYXggaXMgbGltaXRlZCBieSBzaXplb2YoaW50KSAqLwo+ICsJQlVJ TERfQlVHX09OKE1BWF9DT05URVhUX0hXX0lEID4gSU5UX01BWCk7Cj4gKwlCVUlMRF9CVUdfT04o R0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQgPiBJTlRfTUFYKTsKPiArCWlkYV9pbml0KCZpOTE1LT5j b250ZXh0cy5od19pZGEpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmk5MTUtPmNvbnRleHRzLmh3X2lk X2xpc3QpOwo+ICAgCj4gLQljb250ZXh0X2Nsb3NlKGN0eCk7Cj4gLQlpOTE1X2dlbV9jb250ZXh0 X2ZyZWUoY3R4KTsKPiArCUlOSVRfV09SSygmaTkxNS0+Y29udGV4dHMuZnJlZV93b3JrLCBjb250 ZXh0c19mcmVlX3dvcmtlcik7Cj4gKwlpbml0X2xsaXN0X2hlYWQoJmk5MTUtPmNvbnRleHRzLmZy ZWVfbGlzdCk7Cgp1Z2ggZGlmZi4uIDopIGxvb2tzIGxpa2UgcHVyZSBtb3ZlbWVudCBmcm9tIHBl cnNwZWN0aXZlIG9mIApkZXN0cm95X2tlcm5lbF9jb250ZXh0LgoKPiAgIH0KPiAgIAo+ICAgc3Rh dGljIGJvb2wgbmVlZHNfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+IEBAIC00NzAsMTQgKzUzNSw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1 cm4gcmV0Owo+ICAgCj4gLQlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNvbnRleHRzLmxpc3Qp Owo+IC0JSU5JVF9XT1JLKCZkZXZfcHJpdi0+Y29udGV4dHMuZnJlZV93b3JrLCBjb250ZXh0c19m cmVlX3dvcmtlcik7Cj4gLQlpbml0X2xsaXN0X2hlYWQoJmRldl9wcml2LT5jb250ZXh0cy5mcmVl X2xpc3QpOwo+IC0KPiAtCS8qIFVzaW5nIHRoZSBzaW1wbGUgaWRhIGludGVyZmFjZSwgdGhlIG1h eCBpcyBsaW1pdGVkIGJ5IHNpemVvZihpbnQpICovCj4gLQlCVUlMRF9CVUdfT04oTUFYX0NPTlRF WFRfSFdfSUQgPiBJTlRfTUFYKTsKPiAtCUJVSUxEX0JVR19PTihHRU4xMV9NQVhfQ09OVEVYVF9I V19JRCA+IElOVF9NQVgpOwo+IC0JaWRhX2luaXQoJmRldl9wcml2LT5jb250ZXh0cy5od19pZGEp Owo+ICsJaW5pdF9jb250ZXh0cyhkZXZfcHJpdik7Cj4gICAKPiAgIAkvKiBsb3dlc3QgcHJpb3Jp dHk7IGlkbGUgdGFzayAqLwo+ICAgCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5l bChkZXZfcHJpdiwgSTkxNV9QUklPUklUWV9NSU4pOwo+IEBAIC00OTAsNiArNTQ4LDcgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCSAqIGFsbCB1c2VyIGNvbnRleHRzIHdpbGwgaGF2ZSBub24temVybyBod19pZC4KPiAg IAkgKi8KPiAgIAlHRU1fQlVHX09OKGN0eC0+aHdfaWQpOwo+ICsJR0VNX0JVR19PTighYXRvbWlj X3JlYWQoJmN0eC0+cGluX2h3X2lkKSk7CgovKiBLZXJuZWwgY29udGV4dCBpcyBwZXJtYS1waW5u ZWQgKi8KCj4gICAJZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0ID0gY3R4Owo+ICAgCj4gICAJLyog aGlnaGVzdCBwcmlvcml0eTsgcHJlZW1wdGluZyB0YXNrICovCj4gQEAgLTUyNyw2ICs1ODYsNyBA QCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gICAJZGVzdHJveV9rZXJuZWxfY29udGV4dCgmaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ ICAgCj4gICAJLyogTXVzdCBmcmVlIGFsbCBkZWZlcnJlZCBjb250ZXh0cyAodmlhIGZsdXNoX3dv cmtxdWV1ZSkgZmlyc3QgKi8KPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmk5MTUtPmNvbnRl eHRzLmh3X2lkX2xpc3QpKTsKPiAgIAlpZGFfZGVzdHJveSgmaTkxNS0+Y29udGV4dHMuaHdfaWRh KTsKPiAgIH0KPiAgIAo+IEBAIC05MzIsNiArOTkyLDMzIEBAIGludCBpOTE1X2dlbV9jb250ZXh0 X3Jlc2V0X3N0YXRzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJcmV0dXJuIHJl dDsKPiAgIH0KPiAgIAo+ICtpbnQgX19pOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IGN0eC0+aTkxNTsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCW11dGV4X2xvY2soJmk5 MTUtPmNvbnRleHRzLm11dGV4KTsKPiArCj4gKwlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRf aXNfY2xvc2VkKGN0eCkpOwo+ICsKPiArCWlmIChsaXN0X2VtcHR5KCZjdHgtPmh3X2lkX2xpbmsp KSB7Cj4gKwkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmY3R4LT5waW5faHdfaWQpKTsKPiArCj4g KwkJZXJyID0gYXNzaWduX2h3X2lkKGk5MTUsICZjdHgtPmh3X2lkKTsKPiArCQlpZiAoZXJyKQo+ ICsJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwo+ICsJCWxpc3RfYWRkX3RhaWwoJmN0eC0+aHdfaWRf bGluaywgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QpOwo+ICsJfQo+ICsKPiArCUdFTV9CVUdf T04oYXRvbWljX3JlYWQoJmN0eC0+cGluX2h3X2lkKSA9PSB+MHUpOwo+ICsJYXRvbWljX2luYygm Y3R4LT5waW5faHdfaWQpOwo+ICsKPiArb3V0X3VubG9jazoKPiArCW11dGV4X3VubG9jaygmaTkx NS0+Y29udGV4dHMubXV0ZXgpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAgICNpZiBJU19F TkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiAgICNpbmNsdWRlICJzZWxmdGVzdHMv bW9ja19jb250ZXh0LmMiCj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu YyIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gaW5kZXggODUxZGFk NmRlY2Q3Li5jNzNhYzYxNGY1OGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5oCj4gQEAgLTEzNiw2ICsxMzYsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7 Cj4gICAJICogaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29udGV4dC4KPiAgIAkgKi8KPiAg IAl1bnNpZ25lZCBpbnQgaHdfaWQ7Cj4gKwlhdG9taWNfdCBwaW5faHdfaWQ7CgpJIHRoaW5rIG5v dyB3ZSBuZWVkIHNob3J0IGNvbW1lbnRzIGRlc2NyaWJpbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl biB0aGUgCnR3by4KCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGh3X2lkX2xpbms7CgpBbmQgZm9yIHRo aXMgb25lLgoKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIEB1c2VyX2hhbmRsZTogdXNlcnNwYWNlIGlk ZW50aWZpZXIKPiBAQCAtMjU0LDYgKzI1NiwyMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9n ZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZ2VtXwo+ ICAgCV9fc2V0X2JpdChDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OLCAmY3R4LT5mbGFn cyk7Cj4gICB9Cj4gICAKPiAraW50IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGk5MTVfZ2VtX2Nv bnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCWlm IChhdG9taWNfaW5jX25vdF96ZXJvKCZjdHgtPnBpbl9od19pZCkpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJcmV0dXJuIF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfdW5waW5faHdfaWQoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJR0VNX0JVR19PTihhdG9taWNfcmVhZCgm Y3R4LT5waW5faHdfaWQpID09IDB1KTsKPiArCWF0b21pY19kZWMoJmN0eC0+cGluX2h3X2lkKTsK PiArfQo+ICsKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9jb250ZXh0X2lzX2RlZmF1 bHQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmMpCj4gICB7Cj4gICAJcmV0dXJuIGMt PnVzZXJfaGFuZGxlID09IERFRkFVTFRfQ09OVEVYVF9IQU5ETEU7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCBmOGNlYjljOTlkZDYuLjJlYTNhZWEzZTM0MiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTEyNzIsNiArMTI3Miw4IEBAIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19jb250ZXh0X2Rlc3Ryb3koc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgCj4g ICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCj4gICB7Cj4gKwlpOTE1X2dlbV9jb250ZXh0X3VucGluX2h3X2lkKGNlLT5nZW1fY29u dGV4dCk7Cj4gKwo+ICAgCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwo+ICAgCj4gICAJY2Ut PnN0YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsKPiBAQCAtMTMzMCw2ICsxMzMyLDEwIEBAIF9fZXhl Y2xpc3RzX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlp ZiAocmV0KQo+ICAgCQlnb3RvIHVucGluX21hcDsKPiAgIAo+ICsJcmV0ID0gaTkxNV9nZW1fY29u dGV4dF9waW5faHdfaWQoY3R4KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byB1bnBpbl9yaW5nOwo+ ICsKPiAgIAlpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKGN0eCwgZW5naW5lLCBj ZSk7Cj4gICAKPiAgIAljZS0+bHJjX3JlZ19zdGF0ZSA9IHZhZGRyICsgTFJDX1NUQVRFX1BOICog UEFHRV9TSVpFOwo+IEBAIC0xMzQyLDYgKzEzNDgsOCBAQCBfX2V4ZWNsaXN0c19jb250ZXh0X3Bp bihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJaTkxNV9nZW1fY29udGV4dF9n ZXQoY3R4KTsKPiAgIAlyZXR1cm4gY2U7Cj4gICAKPiArdW5waW5fcmluZzoKPiArCWludGVsX3Jp bmdfdW5waW4oY2UtPnJpbmcpOwo+ICAgdW5waW5fbWFwOgo+ICAgCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+ICAgdW5waW5fdm1hOgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBpbmRleCA4OTA0ZjFjZTY0ZTMu LmQ5MzdiZGZmMjZmOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMKPiBAQCAtNDMsNiArNDMsNyBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAgIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFu ZGxlc192bWEsIEdGUF9LRVJORUwpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZjdHgtPmhhbmRsZXNf bGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmY3R4LT5od19pZF9saW5rKTsKPiAgIAo+ICAgCWZv ciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGN0eC0+X19lbmdpbmUpOyBuKyspIHsKPiAgIAkJc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlID0gJmN0eC0+X19lbmdpbmVbbl07Cj4gQEAgLTUwLDExICs1 MSw5IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJ Y2UtPmdlbV9jb250ZXh0ID0gY3R4Owo+ICAgCX0KPiAgIAo+IC0JcmV0ID0gaWRhX3NpbXBsZV9n ZXQoJmk5MTUtPmNvbnRleHRzLmh3X2lkYSwKPiAtCQkJICAgICAwLCBNQVhfQ09OVEVYVF9IV19J RCwgR0ZQX0tFUk5FTCk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChjdHgp Owo+ICAgCWlmIChyZXQgPCAwKQo+ICAgCQlnb3RvIGVycl9oYW5kbGVzOwo+IC0JY3R4LT5od19p ZCA9IHJldDsKPiAgIAo+ICAgCWlmIChuYW1lKSB7Cj4gICAJCWN0eC0+bmFtZSA9IGtzdHJkdXAo bmFtZSwgR0ZQX0tFUk5FTCk7Cj4gQEAgLTg1LDExICs4NCw3IEBAIHZvaWQgbW9ja19jb250ZXh0 X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAKPiAgIHZvaWQgbW9ja19p bml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0JSU5J VF9MSVNUX0hFQUQoJmk5MTUtPmNvbnRleHRzLmxpc3QpOwo+IC0JaWRhX2luaXQoJmk5MTUtPmNv bnRleHRzLmh3X2lkYSk7Cj4gLQo+IC0JSU5JVF9XT1JLKCZpOTE1LT5jb250ZXh0cy5mcmVlX3dv cmssIGNvbnRleHRzX2ZyZWVfd29ya2VyKTsKPiAtCWluaXRfbGxpc3RfaGVhZCgmaTkxNS0+Y29u dGV4dHMuZnJlZV9saXN0KTsKPiArCWluaXRfY29udGV4dHMoaTkxNSk7Cj4gICB9Cj4gICAKPiAg IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiAKClNvIGluIGVzc2VuY2UgdGhlcmUgd2lsbCBi ZSBhIGxpdHRsZSBiaXQgbW9yZSBjb3N0IHdoZW4gcGlubmluZyBpbiB0aGUgCm5vcm1hbCBjYXNl LCBvciBhIGJpdCBiaXQgbW9yZSBpbiB0aGUgc3RlYWxpbmcvcGF0aG9sb2dpY2FsIGNhc2UsIGJ1 dCBhcyAKbG9uZyBhcyB3ZSBzdGF5IGJlbG93IG92ZXItc3Vic2NyaXB0aW9uIHRoZSBjb3N0IGlz IG9ubHkgb24gZmlyc3QgcGluLiAKTm8gY29tcGxhaW50cyB0aGVyZS4gRGVidWcgYWxzbyB3b24n dCBiZSBjb25mdXNpbmcgaW4gdGhlIG5vcm1hbCBjYXNlIApzaW5jZSBudW1iZXJzIHdpbGwgYmUg c3RhYmxlLgoKRG9lcyBpdCBoYXZlIGFueSBuZWdhdGl2ZSBjb25ub3RhdGlvbnMgaW4gdGhlIHdv cmxkIG9mIE9BIGlzIHRoZSAKcXVlc3Rpb24gZm9yIExpb25lbD8KClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==