From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [RFC 03/10] drm/i915: use intel_uncore for all forcewake get/put Date: Fri, 15 Mar 2019 14:41:14 -0700 Message-ID: References: <20190313231319.711-1-daniele.ceraolospurio@intel.com> <20190313231319.711-4-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 ED8AB6E52A for ; Fri, 15 Mar 2019 21:41:15 +0000 (UTC) In-Reply-To: <20190313231319.711-4-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gcXVhLCAyMDE5LTAzLTEzIMOgcyAxNjoxMyAtMDcwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byBlc2NyZXZldToKPiBOb3cgdGhhdCB0aGUgaW50ZXJuYWwgY29kZSBhbGwgd29ya3Mgb24gaW50 ZWxfdW5jb3JlLCBmbGlwIHRoZQo+IGV4dGVybmFsLWZhY2luZyBpbnRlcmZhY2UuCgpMb25nIGJ1 dCB0cml2aWFsIHBhdGNoLiBJdCBicmVha3MgY29tcGlsYXRpb24gb2YgZ3Z0IGJ1dCB0aGF0J3Mg YWxzbwp0cml2aWFsIHRvIGZpeC4KClVubGlrZSBwYXRjaGVzIDEgYW5kIDIsIHRoaXMgb25lIGRv ZXNuJ3QgYWRkIG11Y2ggdmFsdWUgb24gaXRzIG93biBJTUhPCihpLmUuLCB3aXRob3V0IHRoZSBy ZXN0IG9mIHRoZSBzZXJpZXMpLCBidXQgaXQgc3RpbGwgaGVscHMgaW50ZWxfdW5jb3JlCm1vdmUg YXdheSBmcm9tIHRoZSBHb2QgT2JqZWN0IHBhdHRlcm4gb2YgZGV2X3ByaXYuIEknbGwgYWRkIG15 IHItYiB0bwp0aGUgdmVyc2lvbiB3aXRoIHRoZSBndnQgZml4IHdoZW4gaXQncyBzZW50LgoKCj4g Cj4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYyAg ICAgICB8ICA4ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg ICAgICAgfCAxMiArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAg ICAgICAgICAgfCAyMCArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j ICAgICAgICAgICAgICB8ICA2ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0 LmMgICAgICAgICAgICAgfCAxMiArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYyAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuYyAgICAgICAgICAgICAgfCAgOCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2Z3LmMgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aHVjX2Z3LmMgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyAgICAgICAgICAgICAgIHwgNTIgKysrKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAgOCArLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICAgICAgIHwgNTAgKysrKysrKystLS0tLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oICAgICAgICAgICB8IDEy ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgICAgICB8 ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYyB8 ICA0ICstCj4gIDE2IGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYwo+IGluZGV4 IGY2NGM3NmRkMTFkNC4uYTAwYTgwN2ExZDU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9tbWlvX2NvbnRleHQuYwo+IEBAIC0zNTYsNyArMzU2LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxl X3RsYl9wZW5kaW5nX2V2ZW50KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCBpbnQgcmluZ19pZCkK PiAgCWlmIChyaW5nX2lkID09IFJDUzAgJiYgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAJ CWZ3IHw9IEZPUkNFV0FLRV9SRU5ERVI7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9n ZXQoZGV2X3ByaXYsIGZ3KTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJp di0+dW5jb3JlLCBmdyk7Cj4gIAo+ICAJSTkxNV9XUklURV9GVyhyZWcsIDB4MSk7Cj4gIAo+IEBA IC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3RsYl9wZW5kaW5nX2V2ZW50KHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCBpbnQgcmluZ19pZCkKPiAgCWVsc2UKPiAgCQl2Z3B1X3Zy ZWdfdCh2Z3B1LCByZWcpID0gMDsKPiAgCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChk ZXZfcHJpdiwgZncpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51 bmNvcmUsIGZ3KTsKPiAgCj4gIAlndnRfZGJnX2NvcmUoImludmFsaWRhdGUgVExCIGZvciByaW5n ICVkXG4iLCByaW5nX2lkKTsKPiAgfQo+IEBAIC01NTIsOSArNTUyLDkgQEAgdm9pZCBpbnRlbF9n dnRfc3dpdGNoX21taW8oc3RydWN0IGludGVsX3ZncHUgKnByZSwKPiAgCSAqIHBlcmZvcm1hY2Ug Zm9yIGJhdGNoIG1taW8gcmVhZC93cml0ZSwgc28gd2UgbmVlZAo+ICAJICogaGFuZGxlIGZvcmNl d2FrZSBtYW5udWFsbHkuCj4gIAkgKi8KPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRl dl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZk ZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCXN3aXRjaF9tbWlvKHByZSwgbmV4 dCwgcmluZ19pZCk7Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVu Y29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIH0KPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gaW5kZXggM2JjZjBlMDdiNjE0Li4wYzAzN2JiY2Y0YzggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCj4gIAkJfQo+ICAKPiAgCQkvKiBSUFNUQVQxIGlzIGluIHRoZSBHVCBwb3dlciB3ZWxsICov Cj4gLQkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp Owo+ICsJCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JD RVdBS0VfQUxMKTsKPiAgCj4gIAkJcmVxZiA9IEk5MTVfUkVBRChHRU42X1JQTlNXUkVRKTsKPiAg CQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+IEBAIC0xMTIyLDcgKzExMjIsNyBAQCBz dGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCj4gIAkJY2FnZiA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LAo+ICAJCQkJICAgICAg aW50ZWxfZ2V0X2NhZ2YoZGV2X3ByaXYsIHJwc3RhdCkpOwo+ICAKPiAtCQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwkJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAg CQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ICAJCQlwbV9pZXIgPSBJOTE1X1JF QUQoR0VOMTFfR1BNX1dHQk9YUEVSRl9JTlRSX0VOQUJMRSk7Cj4gQEAgLTIwNjAsMTIgKzIwNjAs MTIgQEAgc3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiAgCQl1MzIgcnB1cCwgcnB1cGVpOwo+ICAJCXUzMiBycGRvd24sIHJwZG93 bmVpOwo+ICAKPiAtCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VX QUtFX0FMTCk7Cj4gKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51bmNv cmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAJCXJwdXAgPSBJOTE1X1JFQURfRlcoR0VONl9SUF9DVVJf VVApICYgR0VONl9SUF9FSV9NQVNLOwo+ICAJCXJwdXBlaSA9IEk5MTVfUkVBRF9GVyhHRU42X1JQ X0NVUl9VUF9FSSkgJiBHRU42X1JQX0VJX01BU0s7Cj4gIAkJcnBkb3duID0gSTkxNV9SRUFEX0ZX KEdFTjZfUlBfQ1VSX0RPV04pICYgR0VONl9SUF9FSV9NQVNLOwo+ICAJCXJwZG93bmVpID0gSTkx NV9SRUFEX0ZXKEdFTjZfUlBfQ1VSX0RPV05fRUkpICYgR0VONl9SUF9FSV9NQVNLOwo+IC0JCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCQlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FM TCk7Cj4gIAo+ICAJCXNlcV9wcmludGYobSwgIlxuUlBTIEF1dG90dW5pbmcgKGN1cnJlbnQgXCIl c1wiIHdpbmRvdyk6XG4iLAo+ICAJCQkgICBycHNfcG93ZXJfdG9fc3RyKHJwcy0+cG93ZXIubW9k ZSkpOwo+IEBAIC00MjU1LDcgKzQyNTUsNyBAQCBzdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtlX29w ZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gIAkJcmV0dXJuIDA7 Cj4gIAo+ICAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gKHZvaWQgKikodWludHB0cl90KWludGVsX3J1 bnRpbWVfcG1fZ2V0KGk5MTUpOwo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2VyX2dldChp OTE1KTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfdXNlcl9nZXQoJmk5MTUtPnVuY29yZSk7 Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtNDI2Nyw3ICs0MjY3LDcgQEAgc3RhdGljIGlu dCBpOTE1X2ZvcmNld2FrZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl ICpmaWxlKQo+ICAJaWYgKElOVEVMX0dFTihpOTE1KSA8IDYpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2VyX3B1dChpOTE1KTsKPiArCWludGVsX3VuY29y ZV9mb3JjZXdha2VfdXNlcl9wdXQoJmk5MTUtPnVuY29yZSk7Cj4gIAlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1LAo+ICAJCQkgICAgIChpbnRlbF93YWtlcmVmX3QpKHVpbnRwdHJfdClmaWxlLT5w cml2YXRlX2RhdGEpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBiMzhjOTUz MWI1ZTguLjJjZmYzZjMwNjFiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC00 MzE1LDcgKzQzMTUsNyBAQCB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAJR0VNX1RSQUNFKCJcbiIpOwo+ICAKPiAgCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGk5 MTUsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmk5MTUt PnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJLyoKPiAgCSAqIEFzIHdlIGhhdmUganVz dCByZXN1bWVkIHRoZSBtYWNoaW5lIGFuZCB3b2tlbiB0aGUgZGV2aWNlIHVwIGZyb20KPiBAQCAt NDMzNiw3ICs0MzM2LDcgQEAgdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiAgCSAqLwo+ICAJaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1LCBm YWxzZSk7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoaTkxNSwgRk9SQ0VXQUtF X0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmaTkxNS0+dW5jb3JlLCBGT1JD RVdBS0VfQUxMKTsKPiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAK PiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC00NDM1LDcgKzQ0 MzUsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgCVdBUk5fT04oaTkxNS0+Z3QuYXdha2UpOwo+ICAKPiAgCW11dGV4X2xvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkxNSwg Rk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmaTkxNS0+dW5j b3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAlpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5n cyhpOTE1KTsKPiAgCWk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKGk5MTUpOwo+IEBAIC00NDU3LDcg KzQ0NTcsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKPiAgCQlnb3RvIGVycl93ZWRnZWQ7Cj4gIAo+ICBvdXRfdW5sb2NrOgo+IC0JaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX3B1dCgmaTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCW11dGV4 X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm47Cj4gIAo+IEBAIC00 NTQ2LDcgKzQ1NDYsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAlkZXZfcHJpdi0+Z3QubGFzdF9pbml0X3RpbWUgPSBrdGltZV9n ZXQoKTsKPiAgCj4gIAkvKiBEb3VibGUgbGF5ZXIgc2VjdXJpdHkgYmxhbmtldCwgc2VlIGk5MTVf Z2VtX2luaXQoKSAqLwo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZP UkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51 bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCWlmIChIQVNfRURSQU0oZGV2X3ByaXYpICYm IElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQo+ICAJCUk5MTVfV1JJVEUoSFNXX0lESUNSLCBJOTE1 X1JFQUQoSFNXX0lESUNSKSB8IElESUhBU0hNU0soMHhmKSk7Cj4gQEAgLTQ2MDEsMTQgKzQ2MDEs MTQgQEAgaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGNsZWFudXBfdWM7Cj4gIAo+IC0JaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAK PiAgCXJldHVybiAwOwo+ICAKPiAgY2xlYW51cF91YzoKPiAgCWludGVsX3VjX2ZpbmlfaHcoZGV2 X3ByaXYpOwo+ICBvdXQ6Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwg Rk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYt PnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC00 ODEyLDcgKzQ4MTIsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAkgKiBqdXN0IG1hZ2ljYWxseSBnbyBhd2F5Lgo+ICAJICovCj4gIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJ cmV0ID0gaTkxNV9nZW1faW5pdF9nZ3R0KGRldl9wcml2KTsKPiAgCWlmIChyZXQpIHsKPiBAQCAt NDg3NCw3ICs0ODc0LDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJCWdvdG8gZXJyX2luaXRfaHc7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJcmV0 dXJuIDA7Cj4gQEAgLTQ5MDksNyArNDkwOSw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWk5MTVfZ2VtX2Zpbmlfc2NyYXRjaChkZXZf cHJpdik7Cj4gIGVycl9nZ3R0Ogo+ICBlcnJfdW5sb2NrOgo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+ICBlcnJfdWNfbWlzYzoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGluZGV4IDliMDI5MmEzODg2NS4uZTBmY2I5ODJhMTRm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMTM2NCw3ICsxMzY0LDcgQEAg c3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtKQo+ICAKPiAgCWZyZWVfb2FfYnVmZmVyKGRldl9wcml2KTsKPiAgCj4gLQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7 Cj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgc3RyZWFtLT53YWtlcmVmKTsKPiAg Cj4gIAlpZiAoc3RyZWFtLT5jdHgpCj4gQEAgLTIwOTMsNyArMjA5Myw3IEBAIHN0YXRpYyBpbnQg aTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAJ ICogICByZWZlcmVuY2VzIHdpbGwgZWZmZWN0aXZlbHkgZGlzYWJsZSBSQzYuCj4gIAkgKi8KPiAg CXN0cmVhbS0+d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxM KTsKPiAgCj4gIAlyZXQgPSBhbGxvY19vYV9idWZmZXIoZGV2X3ByaXYpOwo+ICAJaWYgKHJldCkK PiBAQCAtMjEyNyw3ICsyMTI3LDcgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gIGVycl9vYV9idWZfYWxsb2M6Cj4gIAlw dXRfb2FfY29uZmlnKGRldl9wcml2LCBzdHJlYW0tPm9hX2NvbmZpZyk7Cj4gIAo+IC0JaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHN0cmVhbS0+d2FrZXJlZik7Cj4gIAo+ ICBlcnJfY29uZmlnOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl c2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKPiBpbmRleCAzYzA4ZTA4 ODM3ZDAuLjE3ZjU2OTUxNGY4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3Jlc2V0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKPiBA QCAtNTY5LDcgKzU2OSw3IEBAIGludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBlbmdpbmVfbWFzaykKPiAgCSAqIElmIHRoZSBwb3dl ciB3ZWxsIHNsZWVwcyBkdXJpbmcgdGhlIHJlc2V0LCB0aGUgcmVzZXQKPiAgCSAqIHJlcXVlc3Qg bWF5IGJlIGRyb3BwZWQgYW5kIG5ldmVyIGNvbXBsZXRlcyAoY2F1c2luZyAtRUlPKS4KPiAgCSAq Lwo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7Cj4g KwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmaTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxM KTsKPiAgCWZvciAocmV0cnkgPSAwOyByZXQgPT0gLUVUSU1FRE9VVCAmJiByZXRyeSA8IHJldHJp ZXM7IHJldHJ5KyspIHsKPiAgCQkvKgo+ICAJCSAqIFdlIHN0b3AgZW5naW5lcywgb3RoZXJ3aXNl IHdlIG1pZ2h0IGdldCBmYWlsZWQgcmVzZXQgYW5kIGEKPiBAQCAtNTkzLDcgKzU5Myw3IEBAIGlu dCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVk IGludCBlbmdpbmVfbWFzaykKPiAgCQlyZXQgPSByZXNldChpOTE1LCBlbmdpbmVfbWFzaywgcmV0 cnkpOwo+ICAJCXByZWVtcHRfZW5hYmxlKCk7Cj4gIAl9Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dChpOTE1LCBGT1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2Vf cHV0KCZpOTE1LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4g IH0KPiBAQCAtNjIyLDkgKzYyMiw5IEBAIGludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICAJR0VNX0JVR19PTighSEFTX0dVQyhpOTE1KSk7Cj4g IAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7Cj4g KwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmaTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxM KTsKPiAgCXJldCA9IGdlbjZfaHdfZG9tYWluX3Jlc2V0KGk5MTUsIGd1Y19kb21haW4pOwo+IC0J aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmaTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAg Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgdm9pZCBy ZXNldF9wcmVwYXJlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkg KiB3cml0dGVuIHRvIHRoZSBwb3dlcmNvbnRleHQgaXMgdW5kZWZpbmVkIGFuZCBzbyB3ZSBtYXkg bG9zZQo+ICAJICogR1BVIHN0YXRlIHVwb24gcmVzdW1lLCBpLmUuIGZhaWwgdG8gcmVzdGFydCBh ZnRlciBhIHJlc2V0Lgo+ICAJICovCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChlbmdp bmUtPmk5MTUsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQo JmVuZ2luZS0+aTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCWVuZ2luZS0+cmVzZXQu cHJlcGFyZShlbmdpbmUpOwo+ICB9Cj4gIAo+IEBAIC03MDksNyArNzA5LDcgQEAgc3RhdGljIGlu dCBndF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IHN0 YWxsZWRfbWFzaykKPiAgc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoX2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAgCWVuZ2luZS0+cmVzZXQuZmluaXNoKGVuZ2lu ZSk7Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChlbmdpbmUtPmk5MTUsIEZPUkNFV0FL RV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmVuZ2luZS0+aTkxNS0+dW5j b3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgfQo+ICAKPiAgc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQg ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAyYjI1MDk4ZDQ3YTku LjQ5MDllMGNjYzcwOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBA QCAtOTQ5OCw3ICs5NDk4LDcgQEAgc3RhdGljIHZvaWQgaHN3X3Jlc3RvcmVfbGNwbGwoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogTWFrZSBzdXJlIHdlJ3JlIG5vdCBv biBQQzggc3RhdGUgYmVmb3JlIGRpc2FibGluZyBQQzgsIG90aGVyd2lzZQo+ICAJICogd2UnbGwg aGFuZyB0aGUgbWFjaGluZS4gVG8gcHJldmVudCBQQzggc3RhdGUsIGp1c3QgZW5hYmxlIGZvcmNl X3dha2UuCj4gIAkgKi8KPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBG T1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJpdi0+ dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAlpZiAodmFsICYgTENQTExfUE9XRVJfRE9X Tl9BTExPVykgewo+ICAJCXZhbCAmPSB+TENQTExfUE9XRVJfRE9XTl9BTExPVzsKPiBAQCAtOTUz MCw3ICs5NTMwLDcgQEAgc3RhdGljIHZvaWQgaHN3X3Jlc3RvcmVfbGNwbGwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCQlEUk1fRVJST1IoIlN3aXRjaGluZyBiYWNrIHRv IExDUExMIGZhaWxlZFxuIik7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCWludGVsX3VwZGF0 ZV9jZGNsayhkZXZfcHJpdik7Cj4gIAlpbnRlbF9kdW1wX2NkY2xrX3N0YXRlKCZkZXZfcHJpdi0+ Y2RjbGsuaHcsICJDdXJyZW50IENEQ0xLIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKPiBpbmRleCA2NTJjMWIzYmExOTAuLjU4OGM2NDBiNWE1NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTkxOSw3ICs5MTksNyBAQCByZWFk X3N1YnNsaWNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBzbGlj ZSwKPiAgCQkJCQkJICAgICBGV19SRUdfUkVBRCB8IEZXX1JFR19XUklURSk7Cj4gIAo+ICAJc3Bp bl9sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiAtCWludGVsX3VuY29yZV9mb3Jj ZXdha2VfZ2V0X19sb2NrZWQoZGV2X3ByaXYsIGZ3X2RvbWFpbnMpOwo+ICsJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9nZXRfX2xvY2tlZCgmZGV2X3ByaXYtPnVuY29yZSwgZndfZG9tYWlucyk7Cj4g IAo+ICAJbWNyID0gSTkxNV9SRUFEX0ZXKEdFTjhfTUNSX1NFTEVDVE9SKTsKPiAgCj4gQEAgLTkz Nyw3ICs5MzcsNyBAQCByZWFkX3N1YnNsaWNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGludCBzbGljZSwKPiAgCj4gIAlJOTE1X1dSSVRFX0ZXKEdFTjhfTUNSX1NFTEVD VE9SLCBtY3IpOwo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2 X3ByaXYsIGZ3X2RvbWFpbnMpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tl ZCgmZGV2X3ByaXYtPnVuY29yZSwgZndfZG9tYWlucyk7Cj4gIAlzcGluX3VubG9ja19pcnEoJmRl dl9wcml2LT51bmNvcmUubG9jayk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWMuYwo+IGluZGV4IDhlY2I0NzA4NzQ1Ny4uYTU5NDQ4YTU2ZjU1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmMKPiBAQCAtMzY5LDE0ICszNjksMTQgQEAgdm9pZCBpbnRlbF9n dWNfaW5pdF9wYXJhbXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAJICogdGhleSBhcmUgcG93 ZXIgY29udGV4dCBzYXZlZCBzbyBpdCdzIG9rIHRvIHJlbGVhc2UgZm9yY2V3YWtlCj4gIAkgKiB3 aGVuIHdlIGFyZSBkb25lIGhlcmUgYW5kIHRha2UgaXQgYWdhaW4gYXQgeGZlciB0aW1lLgo+ICAJ ICovCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0JM SVRURVIpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUs IEZPUkNFV0FLRV9CTElUVEVSKTsKPiAgCj4gIAlJOTE1X1dSSVRFKFNPRlRfU0NSQVRDSCgwKSwg MCk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEdVQ19DVExfTUFYX0RXT1JEUzsgaSsrKQo+ICAJ CUk5MTVfV1JJVEUoU09GVF9TQ1JBVENIKDEgKyBpKSwgcGFyYW1zW2ldKTsKPiAgCj4gLQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0JMSVRURVIpOwo+ICsJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9C TElUVEVSKTsKPiAgfQo+ICAKPiAgaW50IGludGVsX2d1Y19zZW5kX25vcChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAo+IEBAIC00MTQsNyArNDE0LDcg QEAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1 MzIgKmFjdGlvbiwgdTMyIGxlbiwKPiAgCQkqYWN0aW9uICE9IElOVEVMX0dVQ19BQ1RJT05fREVS RUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIpOwo+ICAKPiAgCW11dGV4X2xvY2soJmd1 Yy0+c2VuZF9tdXRleCk7Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwg Z3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dl dCgmZGV2X3ByaXYtPnVuY29yZSwgZ3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Cj4gIAo+ICAJ Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQo+ICAJCUk5MTVfV1JJVEUoZ3VjX3NlbmRfcmVnKGd1 YywgaSksIGFjdGlvbltpXSk7Cj4gQEAgLTQ1NCw3ICs0NTQsNyBAQCBpbnQgaW50ZWxfZ3VjX3Nl bmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVu LAo+ICAJcmV0ID0gSU5URUxfR1VDX01TR19UT19EQVRBKHN0YXR1cyk7Cj4gIAo+ICBvdXQ6Cj4g LQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgZ3VjLT5zZW5kX3JlZ3MuZndf ZG9tYWlucyk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29y ZSwgZ3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Cj4gIAltdXRleF91bmxvY2soJmd1Yy0+c2Vu ZF9tdXRleCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf ZncuYwo+IGluZGV4IDEzZmY3MDAzYzZiZS4uNzkyYTU1MTQ1MGM3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2Z3LmMKPiBAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbnQgZ3Vj X2Z3X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncsIHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+ICAKPiAgCUdFTV9CVUdfT04oZ3VjX2Z3LT50eXBlICE9IElOVEVMX1VDX0ZXX1RZUEVfR1VD KTsKPiAgCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwg Rk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJZ3VjX3ByZXBhcmVfeGZlcihndWMpOwo+ICAKPiBAQCAt MjU0LDcgKzI1NCw3IEBAIHN0YXRpYyBpbnQgZ3VjX2Z3X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3 ICpndWNfZncsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAKPiAgCXJldCA9IGd1Y194ZmVyX3Vj b2RlKGd1Yywgdm1hKTsKPiAgCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJp diwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3By aXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfZncuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2h1Y19mdy5jCj4gaW5kZXggN2Q3YmZjN2Y3Y2E3Li45Mjc5OWI4 NTAyZjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2Z3LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfZncuYwo+IEBAIC0xMTIsNyAr MTEyLDcgQEAgc3RhdGljIGludCBodWNfZndfeGZlcihzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19m dywgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIAo+ICAJR0VNX0JVR19PTihodWNfZnctPnR5cGUg IT0gSU5URUxfVUNfRldfVFlQRV9IVUMpOwo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2Vf Z2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2Vf Z2V0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAkvKiBTZXQgdGhl IHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNvZGUgKi8KPiAgCW9mZnNldCA9IGludGVsX2d1Y19n Z3R0X29mZnNldCgmZGV2X3ByaXYtPmd1Yywgdm1hKSArCj4gQEAgLTE0MCw3ICsxNDAsNyBAQCBz dGF0aWMgaW50IGh1Y19md194ZmVyKHN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3LCBzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKPiAgCS8qIERpc2FibGUgdGhlIGJpdHMgb25jZSBETUEgaXMgb3ZlciAq Lwo+ICAJSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRElTQUJMRShIVUNfVUtFUk5F TCkpOwo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdB S0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3Jl LCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gaW5kZXggZDczYjEzY2E1N2EwLi4wMDc1MjlkZDE2MWMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtNjczNyw5ICs2NzM3LDkgQEAgc3RhdGljIHZvaWQgdmx2 X3NldF9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBw dW5pdCBpbnRvIGNvbW1pdHRpbmcgdGhlIHZvbHRhZ2UgY2hhbmdlKSBhcyB0aGF0IHRha2VzIGEg bG90IGxlc3MKPiAgCSAqIHBvd2VyIHRoYW4gdGhlIHJlbmRlciBwb3dlcndlbGwuCj4gIAkgKi8K PiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfTUVESUEp Owo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNF V0FLRV9NRURJQSk7Cj4gIAllcnIgPSB2YWxsZXl2aWV3X3NldF9ycHMoZGV2X3ByaXYsIHZhbCk7 Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX01FRElB KTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JD RVdBS0VfTUVESUEpOwo+ICAKPiAgCWlmIChlcnIpCj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g c2V0IFJQUyBmb3IgaWRsZVxuIik7Cj4gQEAgLTY4ODksMTEgKzY4ODksMTEgQEAgc3RhdGljIHZv aWQgdmFsbGV5dmlld19kaXNhYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIHsKPiAgCS8qIFdlJ3JlIGRvaW5nIGZvcmNld2FrZSBiZWZvcmUgRGlzYWJsaW5nIFJD NiwKPiAgCSAqIFRoaXMgd2hhdCB0aGUgQklPUyBleHBlY3RzIHdoZW4gZ29pbmcgaW50byBzdXNw ZW5kICovCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwg Rk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJSTkxNV9XUklURShHRU42X1JDX0NPTlRST0wsIDApOwo+ ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxM KTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JD RVdBS0VfQUxMKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19kaXNhYmxlX3Jw cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTcwNTIsNyArNzA1Miw3 IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIC8qIFNlZSB0aGUgR2VuOV9HVF9QTV9Qcm9ncmFtbWluZ19HdWlkZSBkb2MgZm9yIHRo ZSBiZWxvdyAqLwo+ICBzdGF0aWMgdm9pZCBnZW45X2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChk ZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgm ZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJLyogUHJvZ3JhbSBkZWZh dWx0cyBhbmQgdGhyZXNob2xkcyBmb3IgUlBTICovCj4gIAlpZiAoSVNfR0VOKGRldl9wcml2LCA5 KSkKPiBAQCAtNzA3MCw3ICs3MDcwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVfcnBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqIFJQX0lOVEVSUlVQVF9MSU1J VFMgJiBSUE5TV1JFUSByZWdpc3RlcnMgKi8KPiAgCXJlc2V0X3JwcyhkZXZfcHJpdiwgZ2VuNl9z ZXRfcnBzKTsKPiAgCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVu Y29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxl X3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTcwODQsNyArNzA4 NCw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAo+ICAJLyogMWI6IEdldCBmb3JjZXdha2UgZHVyaW5nIHByb2dyYW0g c2VxdWVuY2UuIEFsdGhvdWdoIHRoZSBkcml2ZXIKPiAgCSAqIGhhc24ndCBlbmFibGVkIGEgc3Rh dGUgeWV0IHdoZXJlIHdlIG5lZWQgZm9yY2V3YWtlLCBCSU9TIG1heSBoYXZlLiovCj4gLQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7 Cj4gIAo+ICAJLyogMmE6IERpc2FibGUgUkMgc3RhdGVzLiAqLwo+ICAJSTkxNV9XUklURShHRU42 X1JDX0NPTlRST0wsIDApOwo+IEBAIC03MTYxLDcgKzcxNjEsNyBAQCBzdGF0aWMgdm9pZCBnZW45 X2VuYWJsZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCUk5MTVf V1JJVEUoR0VOOV9QR19FTkFCTEUsCj4gIAkJCSAgIEdFTjlfUkVOREVSX1BHX0VOQUJMRSB8IEdF TjlfTUVESUFfUEdfRU5BQkxFKTsKPiAgCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChk ZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCgm ZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lk IGdlbjhfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAg LTcxNzQsNyArNzE3NCw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZW5hYmxlX3JjNihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJLyogMWI6IEdldCBmb3JjZXdha2UgZHVy aW5nIHByb2dyYW0gc2VxdWVuY2UuIEFsdGhvdWdoIHRoZSBkcml2ZXIKPiAgCSAqIGhhc24ndCBl bmFibGVkIGEgc3RhdGUgeWV0IHdoZXJlIHdlIG5lZWQgZm9yY2V3YWtlLCBCSU9TIG1heSBoYXZl LiovCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FM TCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9S Q0VXQUtFX0FMTCk7Cj4gIAo+ICAJLyogMmE6IERpc2FibGUgUkMgc3RhdGVzLiAqLwo+ICAJSTkx NV9XUklURShHRU42X1JDX0NPTlRST0wsIDApOwo+IEBAIC03MTk1LDE0ICs3MTk1LDE0IEBAIHN0 YXRpYyB2b2lkIGdlbjhfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAkJICAgR0VON19SQ19DVExfVE9fTU9ERSB8Cj4gIAkJICAgR0VONl9SQ19DVExfUkM2 X0VOQUJMRSk7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZP UkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51 bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW44X2VuYWJs ZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3Qg aW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsKPiAgCj4gLQlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ ICAJLyogMSBQcm9ncmFtIGRlZmF1bHRzIGFuZCB0aHJlc2hvbGRzIGZvciBSUFMqLwo+ICAJSTkx NV9XUklURShHRU42X1JQTlNXUkVRLAo+IEBAIC03MjM1LDcgKzcyMzUsNyBAQCBzdGF0aWMgdm9p ZCBnZW44X2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAK PiAgCXJlc2V0X3JwcyhkZXZfcHJpdiwgZ2VuNl9zZXRfcnBzKTsKPiAgCj4gLQlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gQEAgLTcyNTUsNyArNzI1NSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZW5h YmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJSTkxNV9XUklU RShHVEZJRk9EQkcsIGd0Zmlmb2RiZyk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCS8qIGRp c2FibGUgdGhlIGNvdW50ZXJzIGFuZCBzZXQgZGV0ZXJtaW5pc3RpYyB0aHJlc2hvbGRzICovCj4g IAlJOTE1X1dSSVRFKEdFTjZfUkNfQ09OVFJPTCwgMCk7Cj4gQEAgLTczMDMsNyArNzMwMyw3IEBA IHN0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAkJCURSTV9FUlJPUigiQ291bGRuJ3QgZml4IGluY29ycmVjdCByYzYgdm9sdGFn ZVxuIik7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYs IEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2 LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW42X2Vu YWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC03MzE0LDcg KzczMTQsNyBAQCBzdGF0aWMgdm9pZCBnZW42X2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJICogUGVyaGFwcyB0aGVyZSBtaWdodCBiZSBzb21lIHZhbHVl IGluIGV4cG9zaW5nIHRoZXNlIHRvCj4gIAkgKiB1c2Vyc3BhY2UuLi4KPiAgCSAqLwo+IC0JaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwp Owo+ICAKPiAgCS8qIFBvd2VyIGRvd24gaWYgY29tcGxldGVseSBpZGxlIGZvciBvdmVyIDUwbXMg Ki8KPiAgCUk5MTVfV1JJVEUoR0VONl9SUF9ET1dOX1RJTUVPVVQsIDUwMDAwKTsKPiBAQCAtNzMy Miw3ICs3MzIyLDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlyZXNldF9ycHMoZGV2X3ByaXYsIGdlbjZfc2V0 X3Jwcyk7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNF V0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNv cmUsIEZPUkNFV0FLRV9BTEwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW42X3VwZGF0ZV9y aW5nX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC03NzQ1LDcg Kzc3NDUsNyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2VuYWJsZV9yYzYoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCS8qIDFhICYgMWI6IEdldCBmb3JjZXdha2Ug ZHVyaW5nIHByb2dyYW0gc2VxdWVuY2UuIEFsdGhvdWdoIHRoZSBkcml2ZXIKPiAgCSAqIGhhc24n dCBlbmFibGVkIGEgc3RhdGUgeWV0IHdoZXJlIHdlIG5lZWQgZm9yY2V3YWtlLCBCSU9TIG1heSBo YXZlLiovCj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwg Rk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJLyogIERpc2FibGUgUkMgc3RhdGVzLiAqLwo+ICAJSTkx NV9XUklURShHRU42X1JDX0NPTlRST0wsIDApOwo+IEBAIC03Nzc3LDE0ICs3Nzc3LDE0IEBAIHN0 YXRpYyB2b2lkIGNoZXJyeXZpZXdfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkJcmM2X21vZGUgPSBHRU43X1JDX0NUTF9UT19NT0RFOwo+ICAJSTkxNV9X UklURShHRU42X1JDX0NPTlRST0wsIHJjNl9tb2RlKTsKPiAgCj4gLQlpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXUzMiB2YWw7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCS8qIDE6 IFByb2dyYW0gZGVmYXVsdHMgYW5kIHRocmVzaG9sZHMgZm9yIFJQUyovCj4gIAlJOTE1X1dSSVRF KEdFTjZfUlBfRE9XTl9USU1FT1VULCAxMDAwMDAwKTsKPiBAQCAtNzgxOSw3ICs3ODE5LDcgQEAg c3RhdGljIHZvaWQgY2hlcnJ5dmlld19lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCj4gIAlyZXNldF9ycHMoZGV2X3ByaXYsIHZhbGxleXZpZXdfc2V0X3Jw cyk7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUs IEZPUkNFV0FLRV9BTEwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2VuYWJs ZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC03ODM3LDcgKzc4 MzcsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2VuYWJsZV9yYzYoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCUk5MTVfV1JJVEUoR1RGSUZPREJHLCBndGZpZm9kYmcp Owo+ICAJfQo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JD RVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJpdi0+dW5j b3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAkvKiAgRGlzYWJsZSBSQyBzdGF0ZXMuICovCj4g IAlJOTE1X1dSSVRFKEdFTjZfUkNfQ09OVFJPTCwgMCk7Cj4gQEAgLTc4NjIsMTQgKzc4NjIsMTQg QEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCUk5MTVfV1JJVEUoR0VONl9SQ19DT05UUk9MLAo+ICAJCSAgIEdF TjdfUkNfQ1RMX1RPX01PREUgfCBWTFZfUkNfQ1RMX0NUWF9SU1RfUEFSQUxMRUwpOwo+ICAKPiAt CWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiAr CWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0Vf QUxMKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19lbmFibGVfcnBzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJdTMyIHZhbDsKPiAgCj4gLQlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FM TCk7Cj4gIAo+ICAJSTkxNV9XUklURShHRU42X1JQX0RPV05fVElNRU9VVCwgMTAwMDAwMCk7Cj4g IAlJOTE1X1dSSVRFKEdFTjZfUlBfVVBfVEhSRVNIT0xELCA1OTQwMCk7Cj4gQEAgLTc5MDMsNyAr NzkwMyw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJcmVzZXRfcnBzKGRldl9wcml2LCB2YWxsZXl2 aWV3X3NldF9ycHMpOwo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJp di0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgfQo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGxv bmcgaW50ZWxfcHhmcmVxKHUzMiB2aWRmcmVxKQo+IEBAIC05OTU1LDcgKzk5NTUsNyBAQCB1NjQg aW50ZWxfcmM2X3Jlc2lkZW5jeV9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAlmd19kb21haW5zID0gaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVnKGRldl9wcml2 LCByZWcsIEZXX1JFR19SRUFEKTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PnVuY29yZS5sb2NrLCBmbGFncyk7Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9j a2VkKGRldl9wcml2LCBmd19kb21haW5zKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0 X19sb2NrZWQoJmRldl9wcml2LT51bmNvcmUsIGZ3X2RvbWFpbnMpOwo+ICAKPiAgCS8qIE9uIFZM ViBhbmQgQ0hWLCByZXNpZGVuY3kgdGltZSBpcyBpbiBDWiB1bml0cyByYXRoZXIgdGhhbiAxLjI4 dXMgKi8KPiAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRl dl9wcml2KSkgewo+IEBAIC05OTk2LDcgKzk5OTYsNyBAQCB1NjQgaW50ZWxfcmM2X3Jlc2lkZW5j eV9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl0aW1lX2h3ICs9IGRl dl9wcml2LT5ndF9wbS5yYzYuY3VyX3Jlc2lkZW5jeVtpXTsKPiAgCWRldl9wcml2LT5ndF9wbS5y YzYuY3VyX3Jlc2lkZW5jeVtpXSA9IHRpbWVfaHc7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwgZndfZG9tYWlucyk7Cj4gKwlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dF9fbG9ja2VkKCZkZXZfcHJpdi0+dW5jb3JlLCBmd19kb21haW5zKTsKPiAg CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgZmxhZ3MpOwo+ ICAKPiAgCXJldHVybiBtdWxfdTY0X3UzMl9kaXYodGltZV9odywgbXVsLCBkaXYpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCBmMjZmNWNjMTU4NGMuLjM2 NDExNzViYWE3MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IGVu Z2luZS0+YnVmZmVyOwo+ICAJaW50IHJldCA9IDA7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCWlmICgh c3RvcF9yaW5nKGVuZ2luZSkpIHsKPiAgCQkvKiBHNDUgcmluZyBpbml0aWFsaXphdGlvbiBvZnRl biBmYWlscyB0byByZXNldCBoZWFkIHRvIHplcm8gKi8KPiBAQCAtNzMxLDcgKzczMSw3IEBAIHN0 YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gIAkvKiBQYXBlcmluZyBvdmVyIGxvc3QgX2ludGVycnVwdHNfIGltbWVkaWF0ZWx5IGZvbGxv d2luZyB0aGUgcmVzdGFydCAqLwo+ICAJaW50ZWxfZW5naW5lX3F1ZXVlX2JyZWFkY3J1bWJzKGVu Z2luZSk7Cj4gIG91dDoKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBG T1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+ dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTIw NzksNyArMjA3OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3N1Ym1pdF9yZXF1ZXN0KHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHJlcXVlc3QtPmk5MTU7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgICAgICAgIC8q IEV2ZXJ5IHRhaWwgbW92ZSBtdXN0IGZvbGxvdyB0aGUgc2VxdWVuY2UgYmVsb3cgKi8KPiAgCj4g QEAgLTIxMDksNyArMjEwOSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3N1Ym1pdF9yZXF1ZXN0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gIAlJOTE1X1dSSVRFX0ZXKEdFTjZfQlNE X1NMRUVQX1BTTUlfQ09OVFJPTCwKPiAgCQkgICAgICBfTUFTS0VEX0JJVF9ESVNBQkxFKEdFTjZf QlNEX1NMRUVQX01TR19ESVNBQkxFKSk7Cj4gIAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg aW50IG1pX2ZsdXNoX2R3KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCBhMmQ5NDkwNzM5YTAuLjc1Mjc5YzYy NzM4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTYwOCw3ICs2 MDgsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZSwKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2dldCAtIGdyYWIgZm9yY2V3YWtlIGRvbWFpbiByZWZlcmVuY2VzCj4gLSAqIEBkZXZfcHJp djogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICogQHVuY29yZTogdGhlIGludGVsX3VuY29yZSBz dHJ1Y3R1cmUKPiAgICogQGZ3X2RvbWFpbnM6IGZvcmNld2FrZSBkb21haW5zIHRvIGdldCByZWZl cmVuY2Ugb24KPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBnZXQgR1QncyBm b3JjZXdha2UgZG9tYWluIHJlZmVyZW5jZXMuCj4gQEAgLTYxOSwxMCArNjE5LDkgQEAgc3RhdGlj IHZvaWQgX19pbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUsCj4gICAqIGNhbGwgdG8gaW50ZWxfdW5mb3JjZV9mb3JjZXdha2VfcHV0KCkuIFVzdWFs bHkgY2FsbGVyIHdhbnRzIGFsbCB0aGUgZG9tYWlucwo+ICAgKiB0byBiZSBrZXB0IGF3YWtlIHNv IHRoZSBAZndfZG9tYWlucyB3b3VsZCBiZSB0aGVuIEZPUkNFV0FLRV9BTEwuCj4gICAqLwo+IC12 b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiArdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUsCj4gIAkJCQllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnMp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3Jl Owo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gIAlpZiAoIXVuY29yZS0+ZnVuY3Mu Zm9yY2Vfd2FrZV9nZXQpCj4gQEAgLTYzNywxOSArNjM2LDE3IEBAIHZvaWQgaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAg LyoqCj4gICAqIGludGVsX3VuY29yZV9mb3JjZXdha2VfdXNlcl9nZXQgLSBjbGFpbSBmb3JjZXdh a2Ugb24gYmVoYWxmIG9mIHVzZXJzcGFjZQo+IC0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGlu c3RhbmNlCj4gKyAqIEB1bmNvcmU6IHRoZSBpbnRlbF91bmNvcmUgc3RydWN0dXJlCj4gICAqCj4g ICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2dldCgpIHRvIGFjcXVpcmUKPiAgICogdGhlIEdUIHBvd2Vyd2VsbCBhbmQgaW4gdGhlIHBy b2Nlc3MgZGlzYWJsZSBvdXIgZGVidWdnaW5nIGZvciB0aGUKPiAgICogZHVyYXRpb24gb2YgdXNl cnNwYWNlJ3MgYnlwYXNzLgo+ICAgKi8KPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Vz ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdm9pZCBpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3VzZXJfZ2V0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAg ewo+IC0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4g LQo+ICAJc3Bpbl9sb2NrX2lycSgmdW5jb3JlLT5sb2NrKTsKPiAgCWlmICghdW5jb3JlLT51c2Vy X2ZvcmNld2FrZS5jb3VudCsrKSB7Cj4gLQkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xv Y2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV9nZXRfX2xvY2tlZCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCQkvKiBTYXZlIGFu ZCBkaXNhYmxlIG1taW8gZGVidWdnaW5nIGZvciB0aGUgdXNlciBieXBhc3MgKi8KPiAgCQl1bmNv cmUtPnVzZXJfZm9yY2V3YWtlLnNhdmVkX21taW9fY2hlY2sgPQo+IEBAIC02NjUsMTkgKzY2Miwx OSBAQCB2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfdXNlcl9nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgLyoqCj4gICAqIGludGVsX3VuY29yZV9mb3JjZXdh a2VfdXNlcl9wdXQgLSByZWxlYXNlIGZvcmNld2FrZSBvbiBiZWhhbGYgb2YgdXNlcnNwYWNlCj4g LSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKPiArICogQHVuY29yZTogdGhlIGlu dGVsX3VuY29yZSBzdHJ1Y3R1cmUKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiBjb21wbGVtZW50 cyBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfZ2V0KCkgYW5kIHJlbGVhc2VzCj4gICAqIHRo ZSBHVCBwb3dlcndlbGwgdGFrZW4gb24gYmVoYWxmIG9mIHRoZSB1c2Vyc3BhY2UgYnlwYXNzLgo+ ICAgKi8KPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Vz ZXJfcHV0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgewo+IC0Jc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHVuY29yZV90b19pOTE1KHVuY29yZSk7Cj4gIAo+ICAJc3Bpbl9sb2Nr X2lycSgmdW5jb3JlLT5sb2NrKTsKPiAgCWlmICghLS11bmNvcmUtPnVzZXJfZm9yY2V3YWtlLmNv dW50KSB7Cj4gLQkJaWYgKGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhkZXZfcHJpdikpCj4g LQkJCWRldl9pbmZvKGRldl9wcml2LT5kcm0uZGV2LAo+ICsJCWlmIChpbnRlbF91bmNvcmVfdW5j bGFpbWVkX21taW8oaTkxNSkpCj4gKwkJCWRldl9pbmZvKGk5MTUtPmRybS5kZXYsCj4gIAkJCQkg IkludmFsaWQgbW1pbyBkZXRlY3RlZCBkdXJpbmcgdXNlciBhY2Nlc3NcbiIpOwo+ICAKPiAgCQl1 bmNvcmUtPnVuY2xhaW1lZF9tbWlvX2NoZWNrID0KPiBAQCAtNjg1LDI0ICs2ODIsMjIgQEAgdm9p ZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCQlpOTE1X21vZHBhcmFtcy5tbWlvX2RlYnVnID0KPiAgCQkJdW5jb3Jl LT51c2VyX2ZvcmNld2FrZS5zYXZlZF9tbWlvX2RlYnVnOwo+ICAKPiAtCQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dF9fbG9ja2VkKGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKHVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4g IAl9Cj4gIAlzcGluX3VubG9ja19pcnEoJnVuY29yZS0+bG9jayk7Cj4gIH0KPiAgCj4gIC8qKgo+ ICAgKiBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9ja2VkIC0gZ3JhYiBmb3JjZXdha2Ug ZG9tYWluIHJlZmVyZW5jZXMKPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ ICsgKiBAdW5jb3JlOiB0aGUgaW50ZWxfdW5jb3JlIHN0cnVjdHVyZQo+ICAgKiBAZndfZG9tYWlu czogZm9yY2V3YWtlIGRvbWFpbnMgdG8gZ2V0IHJlZmVyZW5jZSBvbgo+ICAgKgo+ICAgKiBTZWUg aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoKS4gVGhpcyB2YXJpYW50IHBsYWNlcyB0aGUgb251 cwo+ICAgKiBvbiB0aGUgY2FsbGVyIHRvIGV4cGxpY2l0bHkgaGFuZGxlIHRoZSBkZXZfcHJpdi0+ dW5jb3JlLmxvY2sgc3BpbmxvY2suCj4gICAqLwo+IC12b2lkIGludGVsX3VuY29yZV9mb3JjZXdh a2VfZ2V0X19sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICt2b2lk IGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlLAo+ICAJCQkJCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucykKPiAgewo+ IC0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4gLQo+ ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdW5jb3JlLT5sb2NrKTsKPiAgCj4gIAlpZiAoIXVuY29y ZS0+ZnVuY3MuZm9yY2Vfd2FrZV9nZXQpCj4gQEAgLTczNCwxNiArNzI5LDE1IEBAIHN0YXRpYyB2 b2lkIF9faW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlLAo+ICAKPiAgLyoqCj4gICAqIGludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0IC0gcmVsZWFz ZSBhIGZvcmNld2FrZSBkb21haW4gcmVmZXJlbmNlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZp Y2UgaW5zdGFuY2UKPiArICogQHVuY29yZTogdGhlIGludGVsX3VuY29yZSBzdHJ1Y3R1cmUKPiAg ICogQGZ3X2RvbWFpbnM6IGZvcmNld2FrZSBkb21haW5zIHRvIHB1dCByZWZlcmVuY2VzCj4gICAq Cj4gICAqIFRoaXMgZnVuY3Rpb24gZHJvcHMgdGhlIGRldmljZS1sZXZlbCBmb3JjZXdha2VzIGZv ciBzcGVjaWZpZWQKPiAgICogZG9tYWlucyBvYnRhaW5lZCBieSBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2dldCgpLgo+ICAgKi8KPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3ZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJCQkJZW51bSBmb3JjZXdh a2VfZG9tYWlucyBmd19kb21haW5zKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gIAo+ ICAJaWYgKCF1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2VfcHV0KQo+IEBAIC03NTYsMTcgKzc1MCwx NSBAQCB2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1 dF9fbG9ja2VkIC0gZ3JhYiBmb3JjZXdha2UgZG9tYWluIHJlZmVyZW5jZXMKPiAtICogQGRldl9w cml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+ICsgKiBAdW5jb3JlOiB0aGUgaW50ZWxfdW5jb3Jl IHN0cnVjdHVyZQo+ICAgKiBAZndfZG9tYWluczogZm9yY2V3YWtlIGRvbWFpbnMgdG8gZ2V0IHJl ZmVyZW5jZSBvbgo+ICAgKgo+ICAgKiBTZWUgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoKS4g VGhpcyB2YXJpYW50IHBsYWNlcyB0aGUgb251cwo+ICAgKiBvbiB0aGUgY2FsbGVyIHRvIGV4cGxp Y2l0bHkgaGFuZGxlIHRoZSBkZXZfcHJpdi0+dW5jb3JlLmxvY2sgc3BpbmxvY2suCj4gICAqLwo+ IC12b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICt2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19s b2NrZWQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJCQkJCWVudW0gZm9yY2V3YWtl X2RvbWFpbnMgZndfZG9tYWlucykKPiAgewo+IC0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gJmRldl9wcml2LT51bmNvcmU7Cj4gLQo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdW5jb3Jl LT5sb2NrKTsKPiAgCj4gIAlpZiAoIXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9wdXQpCj4gQEAg LTE1NDMsMTEgKzE1MzUsMTEgQEAgc3RhdGljIGludCBpOTE1X3BtaWNfYnVzX2FjY2Vzc19ub3Rp ZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+ICAJCSAqIHRoZSBhY2Nlc3MuCj4gIAkJ ICovCj4gIAkJZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2KTsKPiAtCQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwkJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwp Owo+ICAJCWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2KTsKPiAgCQlicmVhazsK PiAgCWNhc2UgTUJJX1BNSUNfQlVTX0FDQ0VTU19FTkQ6Cj4gLQkJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsJCWludGVsX3VuY29yZV9mb3Jj ZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCQlicmVhazsK PiAgCX0KPiAgCj4gQEAgLTE4MDQsMTMgKzE3OTYsMTMgQEAgaW50IF9faW50ZWxfd2FpdF9mb3Jf cmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJbWlnaHRfc2xl ZXBfaWYoc2xvd190aW1lb3V0X21zKTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2spOwo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZf cHJpdiwgZncpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZCgmZGV2X3By aXYtPnVuY29yZSwgZncpOwo+ICAKPiAgCXJldCA9IF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJf ZncoZGV2X3ByaXYsCj4gIAkJCQkJICAgcmVnLCBtYXNrLCB2YWx1ZSwKPiAgCQkJCQkgICBmYXN0 X3RpbWVvdXRfdXMsIDAsICZyZWdfdmFsdWUpOwo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0X19sb2NrZWQoZGV2X3ByaXYsIGZ3KTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2Vf cHV0X19sb2NrZWQoJmRldl9wcml2LT51bmNvcmUsIGZ3KTsKPiAgCXNwaW5fdW5sb2NrX2lycSgm ZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiAgCj4gIAlpZiAocmV0ICYmIHNsb3dfdGltZW91dF9t cykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuaAo+IGluZGV4IDg2ZTM5N2JlOWFlMC4u MjI5M2RmNTlkOGU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmgKPiBAQCAt MTY3LDIwICsxNjcsMjAgQEAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgI2RlZmluZSBGV19SRUdfUkVBRCAgKDEpCj4g ICNkZWZpbmUgRldfUkVHX1dSSVRFICgyKQo+ICAKPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3ZvaWQgaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJCQkJ ZW51bSBmb3JjZXdha2VfZG9tYWlucyBkb21haW5zKTsKPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3ZvaWQgaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJ CQkJZW51bSBmb3JjZXdha2VfZG9tYWlucyBkb21haW5zKTsKPiAgLyogTGlrZSBhYm92ZSBidXQg dGhlIGNhbGxlciBtdXN0IG1hbmFnZSB0aGUgdW5jb3JlLmxvY2sgaXRzZWxmLgo+ICAgKiBNdXN0 IGJlIHVzZWQgd2l0aCBJOTE1X1JFQURfRlcgYW5kIGZyaWVuZHMuCj4gICAqLwo+IC12b2lkIGlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICt2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAJCQkJCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMg ZG9tYWlucyk7Cj4gLXZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3ZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9wdXRfX2xvY2tlZChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gIAkJCQkJZW51 bSBmb3JjZXdha2VfZG9tYWlucyBkb21haW5zKTsKPiAgCj4gLXZvaWQgaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV91c2VyX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12 b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfdXNlcl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfZ2V0KHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gK3ZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV91c2VyX3B1dChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+ICAKPiAgaW50IF9faW50 ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJCQkgICAgICBpOTE1X3JlZ190IHJlZywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dv cmthcm91bmRzLmMKPiBpbmRleCAyODNlOWE0ZWYzY2EuLmU3NThiYmY1MDYxNyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC05MjcsNyArOTI3LDcg QEAgd2FfbGlzdF9hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGNvbnN0 IHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKPiAgCWZ3ID0gd2FsX2dldF9md19mb3Jfcm13KGRl dl9wcml2LCB3YWwpOwo+ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2ssIGZsYWdzKTsKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoZGV2 X3ByaXYsIGZ3KTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoJmRldl9w cml2LT51bmNvcmUsIGZ3KTsKPiAgCj4gIAlmb3IgKGkgPSAwLCB3YSA9IHdhbC0+bGlzdDsgaSA8 IHdhbC0+Y291bnQ7IGkrKywgd2ErKykgewo+ICAJCXUzMiB2YWwgPSBJOTE1X1JFQURfRlcod2Et PnJlZyk7Cj4gQEAgLTkzOCw3ICs5MzgsNyBAQCB3YV9saXN0X2FwcGx5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgY29uc3Qgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQo+ICAJ CUk5MTVfV1JJVEVfRlcod2EtPnJlZywgdmFsKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dF9fbG9ja2VkKGRldl9wcml2LCBmdyk7Cj4gKwlpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX3B1dF9fbG9ja2VkKCZkZXZfcHJpdi0+dW5jb3JlLCBmdyk7Cj4gIAlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGZsYWdzKTsKPiAgfQo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jCj4gaW5kZXgg MWMxNWY4ZDE0NmFhLi42OWFhMjYwYjQ3OWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jCj4gQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMg aW50IGludGVsX3VuY29yZV9jaGVja19mb3JjZXdha2VfZG9tYWlucyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaQo+ICAJaWYgKCF2YWxpZCkKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAg Cj4gLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7 Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VX QUtFX0FMTCk7Cj4gIAo+ICAJY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKGRldl9wcml2KTsKPiAg CWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgRldfUkFOR0U7IG9mZnNldCArPSA0KSB7Cj4gQEAg LTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgaW50IGludGVsX3VuY29yZV9jaGVja19mb3JjZXdha2Vf ZG9tYWlucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaQo+ICAJCQlzZXRfYml0KG9m ZnNldCwgdmFsaWQpOwo+ICAJfQo+ICAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRl dl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZk ZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgCj4gIAllcnIgPSAwOwo+ICAJZm9y X2VhY2hfc2V0X2JpdChvZmZzZXQsIHZhbGlkLCBGV19SQU5HRSkgewoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4