From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v2 1/2] drm/i915: Cleanup instdone collection Date: Tue, 20 Sep 2016 16:44:46 +0300 Message-ID: <1474379086.13818.3.camel@intel.com> References: <1473087178-4847-1-git-send-email-imre.deak@intel.com> <1473087178-4847-2-git-send-email-imre.deak@intel.com> <87lgz58e99.fsf@gaia.fi.intel.com> <87y42snp5o.fsf@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id BDCC66E145 for ; Tue, 20 Sep 2016 13:44:49 +0000 (UTC) In-Reply-To: <87y42snp5o.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , Mika Kuoppala , intel-gfx@lists.freedesktop.org Cc: Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org T24gcGUsIDIwMTYtMDktMTYgYXQgMTI6NTYgKzAzMDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+IE9u IFR1ZSwgMDYgU2VwIDIwMTYsIE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50 ZWwuY29tPgo+IHdyb3RlOgo+ID4gSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPiB3cml0 ZXM6Cj4gPiAKPiA+ID4gRnJvbTogQmVuIFdpZGF3c2t5IDxiZW5qYW1pbi53aWRhd3NreUBpbnRl bC5jb20+Cj4gPiA+IAo+ID4gPiBDb25zb2xpZGF0ZSB0aGUgaW5zdGRvbmUgbG9naWMgc28gd2Ug Y2FuIGdldCBhIGJpdCBmYW5jaWVyLiBUaGlzCj4gPiA+IHBhdGNoIGFsc28KPiA+ID4gcmVtb3Zl cyB0aGUgZHVwbGljYXRlZCBwcmludCBvZiBJTlNURE9ORVswXS4KPiA+ID4gCj4gPiA+IHYyOiAo SW1yZSkKPiA+ID4gLSBSZWJhc2VkIG9uIHRvcCBvZiBoYW5nY2hlY2sgSU5TVERPTkUgY2hhbmdl cy4KPiA+ID4gLSBNb3ZlIGFsbCBJTlNURE9ORSByZWdpc3RlcnMgaW50byBhIHNpbmdsZSBzdHJ1 Y3QsIHN0b3JlIGl0Cj4gPiA+IHdpdGhpbiB0aGUKPiA+ID4gwqAgZW5naW5lIGVycm9yIHN0cnVj dCBkdXJpbmcgZXJyb3IgY2FwdHVyaW5nLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogQmVu IFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0Pgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiAKPiA+IFJldmlld2VkLWJ5OiBNaWthIEt1b3Bw YWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KPiAKPiBJIGRpZG4ndCByZWNlaXZlIHRoZSBv cmlnaW5hbCBtZXNzYWdlcywgYW5kIEkgY2FuJ3QgZmluZCB0aGVtIG9uIHRoZQo+IGxpc3QgZWl0 aGVyLgoKQ2FuJ3QgZmluZCBpdCBpbiB0aGUgbGlzdCBhcmNoaXZlIGVpdGhlciwgbm90IHN1cmUg d2hlcmUgaXQgZ290IHN0dWNrLgpJJ2xsIHJlc2VuZCBpdC4KCi0tSW1yZQoKPiAKPiBCUiwKPiBK YW5pLgo+IAo+IAo+ID4gCj4gPiA+IC0tLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jwqDCoMKgwqDCoHwgNDEgKysrKysrKysrKystLS0tLQo+ID4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDggKystLQo+ ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmPCoMKgwqB8IDg0Cj4g PiA+ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ID4gPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmPCoMKgwqDCoMKgwqDCoMKgwqB8IDY5ICsrKysrKysrKysrKysr KysrKy0KPiA+ID4gLS0tLS0tLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxIC0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggfCAxMCArKystCj4gPiA+IMKgNiBmaWxlcyBjaGFuZ2VkLCAx NTEgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gPiBpbmRleCAzZmRlNTA3Li40NTI0NGY5IDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gPiBAQCAtMTI3 NywxNSArMTI3NywzNiBAQCBvdXQ6Cj4gPiA+IMKgCXJldHVybiByZXQ7Cj4gPiA+IMKgfQo+ID4g PiDCoAo+ID4gPiArc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gKwkJCcKgwqDCoMKgwqDCoMKgc3RydWN0 IHNlcV9maWxlICptLAo+ID4gPiArCQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfaW5zdGRv bmUgKmluc3Rkb25lKQo+ID4gPiArewo+ID4gPiArCXNlcV9wcmludGYobSwgIlx0XHRJTlNURE9O RTogMHglMDh4XG4iLAo+ID4gPiArCQnCoMKgwqBpbnN0ZG9uZS0+aW5zdGRvbmUpOwo+ID4gPiAr Cj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMykKPiA+ID4gKwkJcmV0dXJuOwo+ ID4gPiArCj4gPiA+ICsJc2VxX3ByaW50ZihtLCAiXHRcdFNDX0lOU1RET05FOiAweCUwOHhcbiIs Cj4gPiA+ICsJCcKgwqDCoGluc3Rkb25lLT5zbGljZV9jb21tb24pOwo+ID4gPiArCj4gPiA+ICsJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNikKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4g PiA+ICsJc2VxX3ByaW50ZihtLCAiXHRcdFNBTVBMRVJfSU5TVERPTkU6IDB4JTA4eFxuIiwKPiA+ ID4gKwkJwqDCoMKgaW5zdGRvbmUtPnNhbXBsZXIpOwo+ID4gPiArCXNlcV9wcmludGYobSwgIlx0 XHRST1dfSU5TVERPTkU6IDB4JTA4eFxuIiwKPiA+ID4gKwkJwqDCoMKgaW5zdGRvbmUtPnJvdyk7 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gwqBzdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNrX2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gPiA+IMKgewo+ID4gPiDCoAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0KPiA+ID4gPnBy aXZhdGUpOwo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gPiA+IMKg CXU2NCBhY3RoZFtJOTE1X05VTV9FTkdJTkVTXTsKPiA+ID4gwqAJdTMyIHNlcW5vW0k5MTVfTlVN X0VOR0lORVNdOwo+ID4gPiAtCXUzMiBpbnN0ZG9uZVtJOTE1X05VTV9JTlNURE9ORV9SRUddOwo+ ID4gPiArCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiA+ID4gwqAJZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQ7Cj4gPiA+IC0JaW50IGo7Cj4gPiA+IMKgCj4gPiA+IMKgCWlmICghaTkx NS5lbmFibGVfaGFuZ2NoZWNrKSB7Cj4gPiA+IMKgCQlzZXFfcHJpbnRmKG0sICJIYW5nY2hlY2sg ZGlzYWJsZWRcbiIpOwo+ID4gPiBAQCAtMTI5OSw3ICsxMzIwLDcgQEAgc3RhdGljIGludCBpOTE1 X2hhbmdjaGVja19pbmZvKHN0cnVjdAo+ID4gPiBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ ID4gPiDCoAkJc2Vxbm9baWRdID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwo+ID4g PiDCoAl9Cj4gPiA+IMKgCj4gPiA+IC0JaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoZGV2X3ByaXYs IGluc3Rkb25lKTsKPiA+ID4gKwlpOTE1X2dldF9lbmdpbmVfaW5zdGRvbmUoZGV2X3ByaXYsIFJD UywgJmluc3Rkb25lKTsKPiA+ID4gwqAKPiA+ID4gwqAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2 X3ByaXYpOwo+ID4gPiDCoAo+ID4gPiBAQCAtMTMyNywxOCArMTM0OCwxNCBAQCBzdGF0aWMgaW50 IGk5MTVfaGFuZ2NoZWNrX2luZm8oc3RydWN0Cj4gPiA+IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCj4gPiA+IMKgCQlzZXFfcHJpbnRmKG0sICJcdGFjdGlvbiA9ICVkXG4iLCBlbmdpbmUtCj4g PiA+ID5oYW5nY2hlY2suYWN0aW9uKTsKPiA+ID4gwqAKPiA+ID4gwqAJCWlmIChlbmdpbmUtPmlk ID09IFJDUykgewo+ID4gPiAtCQkJc2VxX3B1dHMobSwgIlx0aW5zdGRvbmUgcmVhZCA9Iik7Cj4g PiA+ICsJCQlzZXFfcHV0cyhtLCAiXHRpbnN0ZG9uZSByZWFkID1cbiIpOwo+ID4gPiDCoAo+ID4g PiAtCQkJZm9yIChqID0gMDsgaiA8IEk5MTVfTlVNX0lOU1RET05FX1JFRzsKPiA+ID4gaisrKQo+ ID4gPiAtCQkJCXNlcV9wcmludGYobSwgIiAweCUwOHgiLAo+ID4gPiBpbnN0ZG9uZVtqXSk7Cj4g PiA+ICsJCQlpOTE1X2luc3Rkb25lX2luZm8oZGV2X3ByaXYsIG0sCj4gPiA+ICZpbnN0ZG9uZSk7 Cj4gPiA+IMKgCj4gPiA+IC0JCQlzZXFfcHV0cyhtLCAiXG5cdGluc3Rkb25lIGFjY3UgPSIpOwo+ ID4gPiArCQkJc2VxX3B1dHMobSwgIlx0aW5zdGRvbmUgYWNjdSA9XG4iKTsKPiA+ID4gwqAKPiA+ ID4gLQkJCWZvciAoaiA9IDA7IGogPCBJOTE1X05VTV9JTlNURE9ORV9SRUc7Cj4gPiA+IGorKykK PiA+ID4gLQkJCQlzZXFfcHJpbnRmKG0sICIgMHglMDh4IiwKPiA+ID4gLQkJCQkJwqDCoMKgZW5n aW5lLQo+ID4gPiA+aGFuZ2NoZWNrLmluc3Rkb25lW2pdKTsKPiA+ID4gLQo+ID4gPiAtCQkJc2Vx X3B1dHMobSwgIlxuIik7Cj4gPiA+ICsJCQlpOTE1X2luc3Rkb25lX2luZm8oZGV2X3ByaXYsIG0s Cj4gPiA+ICsJCQkJCcKgwqDCoCZlbmdpbmUtCj4gPiA+ID5oYW5nY2hlY2suaW5zdGRvbmUpOwo+ ID4gPiDCoAkJfQo+ID4gPiDCoAl9Cj4gPiA+IMKgCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ID4gPiBpbmRleCA3NTdiMWQxLi4yMGJmNzJlIDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gQEAgLTc0Nyw3ICs3NDcsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3Jfc3RhdGUgewo+ID4gPiDCoAl1MzIgZ2FtX2Vjb2NoazsKPiA+ID4gwqAJdTMyIGdh Yl9jdGw7Cj4gPiA+IMKgCXUzMiBnZnhfbW9kZTsKPiA+ID4gLQl1MzIgZXh0cmFfaW5zdGRvbmVb STkxNV9OVU1fSU5TVERPTkVfUkVHXTsKPiA+ID4gKwo+ID4gPiDCoAl1NjQgZmVuY2VbSTkxNV9N QVhfTlVNX0ZFTkNFU107Cj4gPiA+IMKgCXN0cnVjdCBpbnRlbF9vdmVybGF5X2Vycm9yX3N0YXRl ICpvdmVybGF5Owo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfZGlzcGxheV9lcnJvcl9zdGF0ZSAqZGlz cGxheTsKPiA+ID4gQEAgLTc3OSw3ICs3NzksNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3Rh dGUgewo+ID4gPiDCoAkJdTMyIGh3czsKPiA+ID4gwqAJCXUzMiBpcGVpcjsKPiA+ID4gwqAJCXUz MiBpcGVocjsKPiA+ID4gLQkJdTMyIGluc3Rkb25lOwo+ID4gPiDCoAkJdTMyIGJic3RhdGU7Cj4g PiA+IMKgCQl1MzIgaW5zdHBtOwo+ID4gPiDCoAkJdTMyIGluc3RwczsKPiA+ID4gQEAgLTc5MCw2 ICs3ODksNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgewo+ID4gPiDCoAkJdTY0IGZh ZGRyOwo+ID4gPiDCoAkJdTMyIHJjX3BzbWk7IC8qIHNsZWVwIHN0YXRlICovCj4gPiA+IMKgCQl1 MzIgc2VtYXBob3JlX21ib3hlc1tJOTE1X05VTV9FTkdJTkVTIC0gMV07Cj4gPiA+ICsJCXN0cnVj dCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiA+ID4gwqAKPiA+ID4gwqAJCXN0cnVjdCBkcm1f aTkxNV9lcnJvcl9vYmplY3Qgewo+ID4gPiDCoAkJCWludCBwYWdlX2NvdW50Owo+ID4gPiBAQCAt MzU2MCw3ICszNTYwLDkgQEAgdm9pZCBpOTE1X2Vycm9yX3N0YXRlX2dldChzdHJ1Y3QgZHJtX2Rl dmljZQo+ID4gPiAqZGV2LAo+ID4gPiDCoHZvaWQgaTkxNV9lcnJvcl9zdGF0ZV9wdXQoc3RydWN0 IGk5MTVfZXJyb3Jfc3RhdGVfZmlsZV9wcml2Cj4gPiA+ICplcnJvcl9wcml2KTsKPiA+ID4gwqB2 b2lkIGk5MTVfZGVzdHJveV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ ID4gwqAKPiA+ID4gLXZvaWQgaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiB1aW50MzJfdCAqaW5zdGRvbmUpOwo+ID4gPiArdm9p ZCBpOTE1X2dldF9lbmdpbmVfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gPiArCQkJwqDCoMKgwqDCoMKgZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lX2lk LAo+ID4gPiArCQkJwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2luc3Rkb25lICppbnN0ZG9uZSk7 Cj4gPiA+IMKgY29uc3QgY2hhciAqaTkxNV9jYWNoZV9sZXZlbF9zdHIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gPiA+IGludCB0eXBlKTsKPiA+ID4gwqAKPiA+ID4gwqAvKiBpOTE1 X2NtZF9wYXJzZXIuYyAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMKPiA+ID4gaW5kZXggYWVkNTVlNC4uODBmZTEwMSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gPiA+IEBAIC0yMjgsNiArMjI4LDI3IEBAIHN0 YXRpYyBjb25zdCBjaGFyCj4gPiA+ICpoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihlbnVtIGludGVs X2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIGEpCj4gPiA+IMKgCXJldHVybiAidW5rbm93biI7Cj4g PiA+IMKgfQo+ID4gPiDCoAo+ID4gPiArc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUo c3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1Zgo+ID4gPiAqbSwKPiA+ID4gKwkJCQnCoHN0 cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdpbmUKPiA+ID4gKmVlKQo+ID4gPiArewo+ID4gPiArCWVy cl9wcmludGYobSwgIsKgwqBJTlNURE9ORTogMHglMDh4XG4iLAo+ID4gPiArCQnCoMKgwqBlZS0+ aW5zdGRvbmUuaW5zdGRvbmUpOwo+ID4gPiArCj4gPiA+ICsJaWYgKGVlLT5lbmdpbmVfaWQgIT0g UkNTIHx8IElOVEVMX0dFTihtLT5pOTE1KSA8PSAzKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsK PiA+ID4gKwllcnJfcHJpbnRmKG0sICLCoMKgU0NfSU5TVERPTkU6IDB4JTA4eFxuIiwKPiA+ID4g KwkJwqDCoMKgZWUtPmluc3Rkb25lLnNsaWNlX2NvbW1vbik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo SU5URUxfR0VOKG0tPmk5MTUpIDw9IDYpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiAr CWVycl9wcmludGYobSwgIsKgwqBTQU1QTEVSX0lOU1RET05FOiAweCUwOHhcbiIsCj4gPiA+ICsJ CcKgwqDCoGVlLT5pbnN0ZG9uZS5zYW1wbGVyKTsKPiA+ID4gKwllcnJfcHJpbnRmKG0sICLCoMKg Uk9XX0lOU1RET05FOiAweCUwOHhcbiIsCj4gPiA+ICsJCcKgwqDCoGVlLT5pbnN0ZG9uZS5yb3cp Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+IMKgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfZW5naW5l KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYKPiA+ID4gKm0sCj4gPiA+IMKgCQkJwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSkKPiA+ID4gwqB7Cj4g PiA+IEBAIC0yNDIsNyArMjYzLDkgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfZW5naW5lKHN0 cnVjdAo+ID4gPiBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gPiA+IMKgCQnCoMKgwqAo dTMyKShlZS0+YWN0aGQ+PjMyKSwgKHUzMillZS0+YWN0aGQpOwo+ID4gPiDCoAllcnJfcHJpbnRm KG0sICLCoMKgSVBFSVI6IDB4JTA4eFxuIiwgZWUtPmlwZWlyKTsKPiA+ID4gwqAJZXJyX3ByaW50 ZihtLCAiwqDCoElQRUhSOiAweCUwOHhcbiIsIGVlLT5pcGVocik7Cj4gPiA+IC0JZXJyX3ByaW50 ZihtLCAiwqDCoElOU1RET05FOiAweCUwOHhcbiIsIGVlLT5pbnN0ZG9uZSk7Cj4gPiA+ICsKPiA+ ID4gKwllcnJvcl9wcmludF9pbnN0ZG9uZShtLCBlZSk7Cj4gPiA+ICsKPiA+ID4gwqAJaWYgKGVl LT5iYXRjaGJ1ZmZlcikgewo+ID4gPiDCoAkJdTY0IHN0YXJ0ID0gZWUtPmJhdGNoYnVmZmVyLT5n dHRfb2Zmc2V0Owo+ID4gPiDCoAkJdTY0IGVuZCA9IHN0YXJ0ICsgZWUtPmJhdGNoYnVmZmVyLT5n dHRfc2l6ZTsKPiA+ID4gQEAgLTQwMiwxMCArNDI1LDYgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVf dG9fc3RyKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gPiA+IMKg CWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3M7IGkrKykKPiA+ID4gwqAJ CWVycl9wcmludGYobSwgIsKgwqBmZW5jZVslZF0gPSAlMDhsbHhcbiIsIGksCj4gPiA+IGVycm9y LT5mZW5jZVtpXSk7Cj4gPiA+IMKgCj4gPiA+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZXJyb3ItPmV4dHJhX2luc3Rkb25lKTsgaSsrKQo+ID4gPiAtCQllcnJfcHJpbnRmKG0sICLCoMKg SU5TVERPTkVfJWQ6IDB4JTA4eFxuIiwgaSwKPiA+ID4gLQkJCcKgwqDCoGVycm9yLT5leHRyYV9p bnN0ZG9uZVtpXSk7Cj4gPiA+IC0KPiA+ID4gwqAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDYpIHsKPiA+ID4gwqAJCWVycl9wcmludGYobSwgIkVSUk9SOiAweCUwOHhcbiIsIGVycm9yLT5l cnJvcik7Cj4gPiA+IMKgCj4gPiA+IEBAIC04NTEsNyArODcwLDggQEAgc3RhdGljIHVpbnQzMl90 Cj4gPiA+IGk5MTVfZXJyb3JfZ2VuZXJhdGVfY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiA+IMKgCQkJaWYgKGVuZ2luZV9pZCkKPiA+ID4gwqAJCQkJKmVuZ2luZV9p ZCA9IGk7Cj4gPiA+IMKgCj4gPiA+IC0JCQlyZXR1cm4gZXJyb3ItPmVuZ2luZVtpXS5pcGVociBe IGVycm9yLQo+ID4gPiA+ZW5naW5lW2ldLmluc3Rkb25lOwo+ID4gPiArCQkJcmV0dXJuIGVycm9y LT5lbmdpbmVbaV0uaXBlaHIgXgo+ID4gPiArCQkJwqDCoMKgwqDCoMKgwqBlcnJvci0KPiA+ID4g PmVuZ2luZVtpXS5pbnN0ZG9uZS5pbnN0ZG9uZTsKPiA+ID4gwqAJCX0KPiA+ID4gwqAJfQo+ID4g PiDCoAo+ID4gPiBAQCAtOTgzLDcgKzEwMDMsNiBAQCBzdGF0aWMgdm9pZAo+ID4gPiBlcnJvcl9y ZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9y LAo+ID4gPiDCoAkJZWUtPmZhZGRyID0gSTkxNV9SRUFEKFJJTkdfRE1BX0ZBREQoZW5naW5lLQo+ ID4gPiA+bW1pb19iYXNlKSk7Cj4gPiA+IMKgCQllZS0+aXBlaXIgPSBJOTE1X1JFQUQoUklOR19J UEVJUihlbmdpbmUtCj4gPiA+ID5tbWlvX2Jhc2UpKTsKPiA+ID4gwqAJCWVlLT5pcGVociA9IEk5 MTVfUkVBRChSSU5HX0lQRUhSKGVuZ2luZS0KPiA+ID4gPm1taW9fYmFzZSkpOwo+ID4gPiAtCQll ZS0+aW5zdGRvbmUgPSBJOTE1X1JFQUQoUklOR19JTlNURE9ORShlbmdpbmUtCj4gPiA+ID5tbWlv X2Jhc2UpKTsKPiA+ID4gwqAJCWVlLT5pbnN0cHMgPSBJOTE1X1JFQUQoUklOR19JTlNUUFMoZW5n aW5lLQo+ID4gPiA+bW1pb19iYXNlKSk7Cj4gPiA+IMKgCQllZS0+YmJhZGRyID0gSTkxNV9SRUFE KFJJTkdfQkJBRERSKGVuZ2luZS0KPiA+ID4gPm1taW9fYmFzZSkpOwo+ID4gPiDCoAkJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ID4gPiBAQCAtOTk1LDkgKzEwMTQsMTAgQEAgc3Rh dGljIHZvaWQKPiA+ID4gZXJyb3JfcmVjb3JkX2VuZ2luZV9yZWdpc3RlcnMoc3RydWN0IGRybV9p OTE1X2Vycm9yX3N0YXRlICplcnJvciwKPiA+ID4gwqAJCWVlLT5mYWRkciA9IEk5MTVfUkVBRChE TUFfRkFERF9JOFhYKTsKPiA+ID4gwqAJCWVlLT5pcGVpciA9IEk5MTVfUkVBRChJUEVJUik7Cj4g PiA+IMKgCQllZS0+aXBlaHIgPSBJOTE1X1JFQUQoSVBFSFIpOwo+ID4gPiAtCQllZS0+aW5zdGRv bmUgPSBJOTE1X1JFQUQoR0VOMl9JTlNURE9ORSk7Cj4gPiA+IMKgCX0KPiA+ID4gwqAKPiA+ID4g KwlpOTE1X2dldF9lbmdpbmVfaW5zdGRvbmUoZGV2X3ByaXYsIGVuZ2luZS0+aWQsICZlZS0KPiA+ ID4gPmluc3Rkb25lKTsKPiA+ID4gKwo+ID4gPiDCoAllZS0+d2FpdGluZyA9IGludGVsX2VuZ2lu ZV9oYXNfd2FpdGVyKGVuZ2luZSk7Cj4gPiA+IMKgCWVlLT5pbnN0cG0gPSBJOTE1X1JFQUQoUklO R19JTlNUUE0oZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiA+ID4gwqAJZWUtPmFjdGhkID0gaW50ZWxf ZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpOwo+ID4gPiBAQCAtMTM1Nyw4ICsxMzc3LDYg QEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QKPiA+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IMKgCX0KPiA+ID4gwqAJZXJyb3ItPmVpciA9IEk5 MTVfUkVBRChFSVIpOwo+ID4gPiDCoAllcnJvci0+cGd0YmxfZXIgPSBJOTE1X1JFQUQoUEdUQkxf RVIpOwo+ID4gPiAtCj4gPiA+IC0JaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoZGV2X3ByaXYsIGVy cm9yLQo+ID4gPiA+ZXh0cmFfaW5zdGRvbmUpOwo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gwqBz dGF0aWMgdm9pZCBpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gQEAgLTE1MTcsMjAgKzE1MzUsMzggQEAgY29uc3QgY2hh ciAqaTkxNV9jYWNoZV9sZXZlbF9zdHIoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGludCB0eXBlKQo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gwqAvKiBOQjogcGxlYXNlIG5v dGljZSB0aGUgbWVtc2V0ICovCj4gPiA+IC12b2lkIGk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gLQkJCcKgwqDCoMKgwqB1aW50 MzJfdCAqaW5zdGRvbmUpCj4gPiA+ICt2b2lkIGk5MTVfZ2V0X2VuZ2luZV9pbnN0ZG9uZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICsJCQnCoMKgwqDCoMKgwqBlbnVt IGludGVsX2VuZ2luZV9pZCBlbmdpbmVfaWQsCj4gPiA+ICsJCQnCoMKgwqDCoMKgwqBzdHJ1Y3Qg aW50ZWxfaW5zdGRvbmUgKmluc3Rkb25lKQo+ID4gPiDCoHsKPiA+ID4gLQltZW1zZXQoaW5zdGRv bmUsIDAsIHNpemVvZigqaW5zdGRvbmUpICoKPiA+ID4gSTkxNV9OVU1fSU5TVERPTkVfUkVHKTsK PiA+ID4gLQo+ID4gPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HRU4zKGRldl9wcml2 KSkKPiA+ID4gLQkJaW5zdGRvbmVbMF0gPSBJOTE1X1JFQUQoR0VOMl9JTlNURE9ORSk7Cj4gPiA+ IC0JZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikgfHwgSVNfR0VONShkZXZfcHJpdikgfHwKPiA+ ID4gSVNfR0VONihkZXZfcHJpdikpIHsKPiA+ID4gLQkJaW5zdGRvbmVbMF0gPQo+ID4gPiBJOTE1 X1JFQUQoUklOR19JTlNURE9ORShSRU5ERVJfUklOR19CQVNFKSk7Cj4gPiA+IC0JCWluc3Rkb25l WzFdID0gSTkxNV9SRUFEKEdFTjRfSU5TVERPTkUxKTsKPiA+ID4gLQl9IGVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNykgewo+ID4gPiAtCQlpbnN0ZG9uZVswXSA9Cj4gPiA+IEk5MTVf UkVBRChSSU5HX0lOU1RET05FKFJFTkRFUl9SSU5HX0JBU0UpKTsKPiA+ID4gLQkJaW5zdGRvbmVb MV0gPSBJOTE1X1JFQUQoR0VON19TQ19JTlNURE9ORSk7Cj4gPiA+IC0JCWluc3Rkb25lWzJdID0g STkxNV9SRUFEKEdFTjdfU0FNUExFUl9JTlNURE9ORSk7Cj4gPiA+IC0JCWluc3Rkb25lWzNdID0g STkxNV9SRUFEKEdFTjdfUk9XX0lOU1RET05FKTsKPiA+ID4gKwl1MzIgbW1pb19iYXNlID0gZGV2 X3ByaXYtPmVuZ2luZVtlbmdpbmVfaWRdLm1taW9fYmFzZTsKPiA+ID4gKwo+ID4gPiArCW1lbXNl dChpbnN0ZG9uZSwgMCwgc2l6ZW9mKCppbnN0ZG9uZSkpOwo+ID4gPiArCj4gPiA+ICsJc3dpdGNo IChJTlRFTF9HRU4oZGV2X3ByaXYpKSB7Cj4gPiA+ICsJZGVmYXVsdDoKPiA+ID4gKwkJaW5zdGRv bmUtPmluc3Rkb25lID0KPiA+ID4gSTkxNV9SRUFEKFJJTkdfSU5TVERPTkUobW1pb19iYXNlKSk7 Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKGVuZ2luZV9pZCAhPSBSQ1MpCj4gPiA+ICsJCQlicmVhazsK PiA+ID4gKwo+ID4gPiArCQlpbnN0ZG9uZS0+c2xpY2VfY29tbW9uID0KPiA+ID4gSTkxNV9SRUFE KEdFTjdfU0NfSU5TVERPTkUpOwo+ID4gPiArCQlpbnN0ZG9uZS0+c2FtcGxlciA9Cj4gPiA+IEk5 MTVfUkVBRChHRU43X1NBTVBMRVJfSU5TVERPTkUpOwo+ID4gPiArCQlpbnN0ZG9uZS0+cm93ID0g STkxNV9SRUFEKEdFTjdfUk9XX0lOU1RET05FKTsKPiA+ID4gKwo+ID4gPiArCQlicmVhazsKPiA+ ID4gKwljYXNlIDY6Cj4gPiA+ICsJY2FzZSA1Ogo+ID4gPiArCWNhc2UgNDoKPiA+ID4gKwkJaW5z dGRvbmUtPmluc3Rkb25lID0KPiA+ID4gSTkxNV9SRUFEKFJJTkdfSU5TVERPTkUobW1pb19iYXNl KSk7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKGVuZ2luZV9pZCA9PSBSQ1MpCj4gPiA+ICsJCQkvKiBI QUNLOiBVc2luZyB0aGUgd3Jvbmcgc3RydWN0IG1lbWJlcgo+ID4gPiAqLwo+ID4gPiArCQkJaW5z dGRvbmUtPnNsaWNlX2NvbW1vbiA9Cj4gPiA+IEk5MTVfUkVBRChHRU40X0lOU1RET05FMSk7Cj4g PiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgMzoKPiA+ID4gKwljYXNlIDI6Cj4gPiA+ICsJCWlu c3Rkb25lLT5pbnN0ZG9uZSA9IEk5MTVfUkVBRChHRU4yX0lOU1RET05FKTsKPiA+ID4gKwkJYnJl YWs7Cj4gPiA+IMKgCX0KPiA+ID4gwqB9Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+ID4gPiBpbmRleCA4MjM1OGQ0Li44MmNmODIzIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKPiA+ID4gQEAgLTI1NTAsMTggKzI1NTAsMzYgQEAgc3RhdGljIHZvaWQgaTkx NV9yZXNldF9hbmRfd2FrZXVwKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gwqAJfQo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gK3N0YXRpYyBpbmxpbmUgdm9p ZAo+ID4gPiAraTkxNV9lcnJfcHJpbnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gPiArCQkJc3RydWN0IGludGVsX2luc3Rkb25lICppbnN0ZG9uZSkKPiA+ ID4gK3sKPiA+ID4gKwlwcl9lcnIoIsKgwqBJTlNURE9ORTogMHglMDh4XG4iLCBpbnN0ZG9uZS0+ aW5zdGRvbmUpOwo+ID4gPiArCj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMykK PiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJcHJfZXJyKCLCoMKgU0NfSU5TVERPTkU6 IDB4JTA4eFxuIiwgaW5zdGRvbmUtCj4gPiA+ID5zbGljZV9jb21tb24pOwo+ID4gPiArCj4gPiA+ ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNikKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiAr Cj4gPiA+ICsJcHJfZXJyKCLCoMKgU0FNUExFUl9JTlNURE9ORTogMHglMDh4XG4iLCBpbnN0ZG9u ZS0KPiA+ID4gPnNhbXBsZXIpOwo+ID4gPiArCXByX2VycigiwqDCoFJPV19JTlNURE9ORTogMHgl MDh4XG4iLCBpbnN0ZG9uZS0+cm93KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiDCoHN0YXRpYyB2 b2lkIGk5MTVfcmVwb3J0X2FuZF9jbGVhcl9laXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ ID4gKmRldl9wcml2KQo+ID4gPiDCoHsKPiA+ID4gLQl1aW50MzJfdCBpbnN0ZG9uZVtJOTE1X05V TV9JTlNURE9ORV9SRUddOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsK PiA+ID4gwqAJdTMyIGVpciA9IEk5MTVfUkVBRChFSVIpOwo+ID4gPiAtCWludCBwaXBlLCBpOwo+ ID4gPiArCWludCBwaXBlOwo+ID4gPiDCoAo+ID4gPiDCoAlpZiAoIWVpcikKPiA+ID4gwqAJCXJl dHVybjsKPiA+ID4gwqAKPiA+ID4gwqAJcHJfZXJyKCJyZW5kZXIgZXJyb3IgZGV0ZWN0ZWQsIEVJ UjogMHglMDh4XG4iLCBlaXIpOwo+ID4gPiDCoAo+ID4gPiAtCWk5MTVfZ2V0X2V4dHJhX2luc3Rk b25lKGRldl9wcml2LCBpbnN0ZG9uZSk7Cj4gPiA+ICsJaTkxNV9nZXRfZW5naW5lX2luc3Rkb25l KGRldl9wcml2LCBSQ1MsICZpbnN0ZG9uZSk7Cj4gPiA+IMKgCj4gPiA+IMKgCWlmIChJU19HNFgo ZGV2X3ByaXYpKSB7Cj4gPiA+IMKgCQlpZiAoZWlyICYgKEdNNDVfRVJST1JfTUVNX1BSSVYgfAo+ ID4gPiBHTTQ1X0VSUk9SX0NQX1BSSVYpKSB7Cj4gPiA+IEBAIC0yNTY5LDggKzI1ODcsNyBAQCBz dGF0aWMgdm9pZAo+ID4gPiBpOTE1X3JlcG9ydF9hbmRfY2xlYXJfZWlyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAKPiA+ID4gwqAJCQlwcl9lcnIoIsKgwqBJUEVJ UjogMHglMDh4XG4iLAo+ID4gPiBJOTE1X1JFQUQoSVBFSVJfSTk2NSkpOwo+ID4gPiDCoAkJCXBy X2VycigiwqDCoElQRUhSOiAweCUwOHhcbiIsCj4gPiA+IEk5MTVfUkVBRChJUEVIUl9JOTY1KSk7 Cj4gPiA+IC0JCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnN0ZG9uZSk7Cj4gPiA+IGkr KykKPiA+ID4gLQkJCQlwcl9lcnIoIsKgwqBJTlNURE9ORV8lZDoKPiA+ID4gMHglMDh4XG4iLCBp LCBpbnN0ZG9uZVtpXSk7Cj4gPiA+ICsJCQlpOTE1X2Vycl9wcmludF9pbnN0ZG9uZShkZXZfcHJp diwKPiA+ID4gJmluc3Rkb25lKTsKPiA+ID4gwqAJCQlwcl9lcnIoIsKgwqBJTlNUUFM6IDB4JTA4 eFxuIiwKPiA+ID4gSTkxNV9SRUFEKElOU1RQUykpOwo+ID4gPiDCoAkJCXByX2VycigiwqDCoEFD VEhEOiAweCUwOHhcbiIsCj4gPiA+IEk5MTVfUkVBRChBQ1RIRF9JOTY1KSk7Cj4gPiA+IMKgCQkJ STkxNV9XUklURShJUEVJUl9JOTY1LCBpcGVpcik7Cj4gPiA+IEBAIC0yNjA1LDggKzI2MjIsNyBA QCBzdGF0aWMgdm9pZAo+ID4gPiBpOTE1X3JlcG9ydF9hbmRfY2xlYXJfZWlyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAJaWYgKGVpciAmIEk5MTVfRVJST1JfSU5T VFJVQ1RJT04pIHsKPiA+ID4gwqAJCXByX2VycigiaW5zdHJ1Y3Rpb24gZXJyb3JcbiIpOwo+ID4g PiDCoAkJcHJfZXJyKCLCoMKgSU5TVFBNOiAweCUwOHhcbiIsIEk5MTVfUkVBRChJTlNUUE0pKTsK PiA+ID4gLQkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5zdGRvbmUpOyBpKyspCj4gPiA+ IC0JCQlwcl9lcnIoIsKgwqBJTlNURE9ORV8lZDogMHglMDh4XG4iLCBpLAo+ID4gPiBpbnN0ZG9u ZVtpXSk7Cj4gPiA+ICsJCWk5MTVfZXJyX3ByaW50X2luc3Rkb25lKGRldl9wcml2LCAmaW5zdGRv bmUpOwo+ID4gPiDCoAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4gPiA+IMKgCQkJ dTMyIGlwZWlyID0gSTkxNV9SRUFEKElQRUlSKTsKPiA+ID4gwqAKPiA+ID4gQEAgLTI5NDksMzEg KzI5NjUsNDIgQEAgc3RhdGljIHZvaWQKPiA+ID4gc2VtYXBob3JlX2NsZWFyX2RlYWRsb2Nrcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgCQllbmdpbmUtPmhhbmdj aGVjay5kZWFkbG9jayA9IDA7Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiArc3RhdGljIGJvb2wg aW5zdGRvbmVfdW5jaGFuZ2VkKHUzMiBjdXJyZW50X2luc3Rkb25lLCB1MzIKPiA+ID4gKm9sZF9p bnN0ZG9uZSkKPiA+ID4gK3sKPiA+ID4gKwl1MzIgdG1wID0gY3VycmVudF9pbnN0ZG9uZSB8ICpv bGRfaW5zdGRvbmU7Cj4gPiA+ICsJYm9vbCB1bmNoYW5nZWQ7Cj4gPiA+ICsKPiA+ID4gKwl1bmNo YW5nZWQgPSB0bXAgPT0gKm9sZF9pbnN0ZG9uZTsKPiA+ID4gKwkqb2xkX2luc3Rkb25lIHw9IHRt cDsKPiA+ID4gKwo+ID4gPiArCXJldHVybiB1bmNoYW5nZWQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gwqBzdGF0aWMgYm9vbCBzdWJ1bml0c19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gPiA+IMKgewo+ID4gPiAtCXUzMiBpbnN0ZG9uZVtJOTE1X05VTV9JTlNURE9ORV9S RUddOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ aTkxNTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgaW5zdGRvbmU7Cj4gPiA+ICsJc3Ry dWN0IGludGVsX2luc3Rkb25lICphY2N1X2luc3Rkb25lID0gJmVuZ2luZS0KPiA+ID4gPmhhbmdj aGVjay5pbnN0ZG9uZTsKPiA+ID4gwqAJYm9vbCBzdHVjazsKPiA+ID4gLQlpbnQgaTsKPiA+ID4g wqAKPiA+ID4gwqAJaWYgKGVuZ2luZS0+aWQgIT0gUkNTKQo+ID4gPiDCoAkJcmV0dXJuIHRydWU7 Cj4gPiA+IMKgCj4gPiA+IC0JaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoZW5naW5lLT5pOTE1LCBp bnN0ZG9uZSk7Cj4gPiA+ICsJaTkxNV9nZXRfZW5naW5lX2luc3Rkb25lKGRldl9wcml2LCBSQ1Ms ICZpbnN0ZG9uZSk7Cj4gPiA+IMKgCj4gPiA+IMKgCS8qIFRoZXJlIG1pZ2h0IGJlIHVuc3RhYmxl IHN1YnVuaXQgc3RhdGVzIGV2ZW4gd2hlbgo+ID4gPiDCoAnCoCogYWN0dWFsIGhlYWQgaXMgbm90 IG1vdmluZy4gRmlsdGVyIG91dCB0aGUgdW5zdGFibGUKPiA+ID4gb25lcyBieQo+ID4gPiDCoAnC oCogYWNjdW11bGF0aW5nIHRoZSB1bmRvbmUgLT4gZG9uZSB0cmFuc2l0aW9ucyBhbmQgb25seQo+ ID4gPiDCoAnCoCogY29uc2lkZXIgdGhvc2UgYXMgcHJvZ3Jlc3MuCj4gPiA+IMKgCcKgKi8KPiA+ ID4gLQlzdHVjayA9IHRydWU7Cj4gPiA+IC0JZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0lOU1RE T05FX1JFRzsgaSsrKSB7Cj4gPiA+IC0JCWNvbnN0IHUzMiB0bXAgPSBpbnN0ZG9uZVtpXSB8IGVu Z2luZS0KPiA+ID4gPmhhbmdjaGVjay5pbnN0ZG9uZVtpXTsKPiA+ID4gLQo+ID4gPiAtCQlpZiAo dG1wICE9IGVuZ2luZS0+aGFuZ2NoZWNrLmluc3Rkb25lW2ldKQo+ID4gPiAtCQkJc3R1Y2sgPSBm YWxzZTsKPiA+ID4gLQo+ID4gPiAtCQllbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZVtpXSB8PSB0 bXA7Cj4gPiA+IC0JfQo+ID4gPiArCXN0dWNrID0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25l Lmluc3Rkb25lLAo+ID4gPiArCQkJCcKgwqDCoCZhY2N1X2luc3Rkb25lLT5pbnN0ZG9uZSk7Cj4g PiA+ICsJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnNsaWNlX2NvbW1vbiwK PiA+ID4gKwkJCQnCoMKgwqDCoCZhY2N1X2luc3Rkb25lLQo+ID4gPiA+c2xpY2VfY29tbW9uKTsK PiA+ID4gKwlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUuc2FtcGxlciwKPiA+ ID4gKwkJCQnCoMKgwqDCoCZhY2N1X2luc3Rkb25lLT5zYW1wbGVyKTsKPiA+ID4gKwlzdHVjayAm PSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUucm93LAo+ID4gPiArCQkJCcKgwqDCoMKgJmFj Y3VfaW5zdGRvbmUtPnJvdyk7Cj4gPiA+IMKgCj4gPiA+IMKgCXJldHVybiBzdHVjazsKPiA+ID4g wqB9Cj4gPiA+IEBAIC0yOTg0LDcgKzMwMTEsNyBAQCBoZWFkX3N0dWNrKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKPiA+ID4gdTY0IGFjdGhkKQo+ID4gPiDCoAlpZiAoYWN0aGQgIT0g ZW5naW5lLT5oYW5nY2hlY2suYWN0aGQpIHsKPiA+ID4gwqAKPiA+ID4gwqAJCS8qIENsZWFyIHN1 YnVuaXQgc3RhdGVzIG9uIGhlYWQgbW92ZW1lbnQgKi8KPiA+ID4gLQkJbWVtc2V0KGVuZ2luZS0+ aGFuZ2NoZWNrLmluc3Rkb25lLCAwLAo+ID4gPiArCQltZW1zZXQoJmVuZ2luZS0+aGFuZ2NoZWNr Lmluc3Rkb25lLCAwLAo+ID4gPiDCoAkJwqDCoMKgwqDCoMKgwqBzaXplb2YoZW5naW5lLT5oYW5n Y2hlY2suaW5zdGRvbmUpKTsKPiA+ID4gwqAKPiA+ID4gwqAJCXJldHVybiBIQU5HQ0hFQ0tfQUNU SVZFOwo+ID4gPiBAQCAtMzE1OCw3ICszMTg1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hl Y2tfZWxhcHNlZChzdHJ1Y3QKPiA+ID4gd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+IMKgCQkJLyog Q2xlYXIgaGVhZCBhbmQgc3VidW5pdCBzdGF0ZXMgb24KPiA+ID4gc2Vxbm8gbW92ZW1lbnQgKi8K PiA+ID4gwqAJCQlhY3RoZCA9IDA7Cj4gPiA+IMKgCj4gPiA+IC0JCQltZW1zZXQoZW5naW5lLT5o YW5nY2hlY2suaW5zdGRvbmUsIDAsCj4gPiA+ICsJCQltZW1zZXQoJmVuZ2luZS0+aGFuZ2NoZWNr Lmluc3Rkb25lLCAwLAo+ID4gPiDCoAkJCcKgwqDCoMKgwqDCoMKgc2l6ZW9mKGVuZ2luZS0KPiA+ ID4gPmhhbmdjaGVjay5pbnN0ZG9uZSkpOwo+ID4gPiDCoAkJfQo+ID4gPiDCoAo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gaW5kZXggYTI5ZDcwNy4uZTg0YmMyZSAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+IEBAIC0xNzA4LDcgKzE3MDgs NiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+ID4gwqAjZGVmaW5lIEdFTjdfU0Nf SU5TVERPTkUJX01NSU8oMHg3MTAwKQo+ID4gPiDCoCNkZWZpbmUgR0VON19TQU1QTEVSX0lOU1RE T05FCV9NTUlPKDB4ZTE2MCkKPiA+ID4gwqAjZGVmaW5lIEdFTjdfUk9XX0lOU1RET05FCV9NTUlP KDB4ZTE2NCkKPiA+ID4gLSNkZWZpbmUgSTkxNV9OVU1fSU5TVERPTkVfUkVHCTQKPiA+ID4gwqAj ZGVmaW5lIFJJTkdfSVBFSVIoYmFzZSkJX01NSU8oKGJhc2UpKzB4NjQpCj4gPiA+IMKgI2RlZmlu ZSBSSU5HX0lQRUhSKGJhc2UpCV9NTUlPKChiYXNlKSsweDY4KQo+ID4gPiDCoC8qCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiA+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiA+ID4gaW5kZXggODRh ZWE1NC4uYWZjM2YxZSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaAo+ID4gPiBAQCAtNzMsMTMgKzczLDIxIEBAIGVudW0gaW50ZWxfZW5naW5lX2hh bmdjaGVja19hY3Rpb24gewo+ID4gPiDCoAo+ID4gPiDCoCNkZWZpbmUgSEFOR0NIRUNLX1NDT1JF X1JJTkdfSFVORyAzMQo+ID4gPiDCoAo+ID4gPiArc3RydWN0IGludGVsX2luc3Rkb25lIHsKPiA+ ID4gKwl1MzIgaW5zdGRvbmU7Cj4gPiA+ICsJLyogVGhlIGZvbGxvd2luZyBleGlzdCBvbmx5IGlu IHRoZSBSQ1MgZW5naW5lICovCj4gPiA+ICsJdTMyIHNsaWNlX2NvbW1vbjsKPiA+ID4gKwl1MzIg c2FtcGxlcjsKPiA+ID4gKwl1MzIgcm93Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiDCoHN0cnVj dCBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrIHsKPiA+ID4gwqAJdTY0IGFjdGhkOwo+ID4gPiDCoAl1 MzIgc2Vxbm87Cj4gPiA+IMKgCWludCBzY29yZTsKPiA+ID4gwqAJZW51bSBpbnRlbF9lbmdpbmVf aGFuZ2NoZWNrX2FjdGlvbiBhY3Rpb247Cj4gPiA+IMKgCWludCBkZWFkbG9jazsKPiA+ID4gLQl1 MzIgaW5zdGRvbmVbSTkxNV9OVU1fSU5TVERPTkVfUkVHXTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxf aW5zdGRvbmUgaW5zdGRvbmU7Cj4gPiA+IMKgfTsKPiA+ID4gwqAKPiA+ID4gwqBzdHJ1Y3QgaW50 ZWxfcmluZyB7Cj4gPiA+IC0tIAo+ID4gPiAyLjUuMAo+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=