From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3 2/3] drm/i915: replace IS_GEN with IS_GEN(..., N) Date: Tue, 11 Dec 2018 16:34:28 +0200 Message-ID: <87o99s5dzf.fsf@intel.com> References: <20181206061144.16235-1-lucas.demarchi@intel.com> <20181206061144.16235-3-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A7EE36E22F for ; Tue, 11 Dec 2018 14:34:18 +0000 (UTC) In-Reply-To: <20181206061144.16235-3-lucas.demarchi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lucas De Marchi , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwNSBEZWMgMjAxOCwgTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRl bC5jb20+IHdyb3RlOgo+IERlZmluZSBJU19HRU4oKSBzaW1pbGFybHkgdG8gb3VyIElTX0dFTl9S QU5HRSgpLiBidXQgdXNlIGdlbiBpbnN0ZWFkIG9mCj4gZ2VuX21hc2sgdG8gZG8gdGhlIGNvbXBh cmlzb24uIE5vdyBjYWxsZXJzIGNhbiBwYXNzIHRoZW4gZ2VuIGFzIGEgcGFyYW1ldGVyLAo+IHNv IHdlIGRvbid0IHJlcXVpcmUgb25lIG1hY3JvIGZvciBlYWNoIGdlbi4KPgo+IFRoZSBmb2xsb3dp bmcgc3BhdGNoIHdhcyB1c2VkIHRvIGNvbnZlcnQgdGhlIHVzZXJzIG9mIHRoZXNlIG1hY3JvczoK Pgo+IEBACj4gZXhwcmVzc2lvbiBlOwo+IEBACj4gKAo+IC0gSVNfR0VOMihlKQo+ICsgSVNfR0VO KGUsIDIpCj4gfAo+IC0gSVNfR0VOMyhlKQo+ICsgSVNfR0VOKGUsIDMpCj4gfAo+IC0gSVNfR0VO NChlKQo+ICsgSVNfR0VOKGUsIDQpCj4gfAo+IC0gSVNfR0VONShlKQo+ICsgSVNfR0VOKGUsIDUp Cj4gfAo+IC0gSVNfR0VONihlKQo+ICsgSVNfR0VOKGUsIDYpCj4gfAo+IC0gSVNfR0VONyhlKQo+ ICsgSVNfR0VOKGUsIDcpCj4gfAo+IC0gSVNfR0VOOChlKQo+ICsgSVNfR0VOKGUsIDgpCj4gfAo+ IC0gSVNfR0VOOShlKQo+ICsgSVNfR0VOKGUsIDkpCj4gfAo+IC0gSVNfR0VOMTAoZSkKPiArIElT X0dFTihlLCAxMCkKPiB8Cj4gLSBJU19HRU4xMShlKQo+ICsgSVNfR0VOKGUsIDExKQo+ICkKPgo+ IHYyOiB1c2UgSVNfR0VOIHJhdGhlciB0aGFuIEdUX0dFTiBhbmQgY29tcGFyZSB0byBpbmZvLmdl biByYXRoZXIgdGhhbgo+ICAgICB1c2luZyB0aGUgYml0bWFzawo+Cj4gU2lnbmVkLW9mZi1ieTog THVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+CgpJIHRoaW5rIHRoZSBk aXNjdXNzaW9uIG9uIHRoZSBJU19HRU4oKSBkZWZpbml0aW9uIGlzIHNsaWdodGx5IGlycmVsZXZh bnQKaGVyZSwgYXMgdGhpcyBsZXRzIHVzZSB0cml2aWFsbHkgY2hhbmdlIGl0LgoKVGhlcmUncyBz b21lIHBvdGVudGlhbCBmb2xsb3ctdXAgd29yayB0byBjaGFuZ2Ugc29tZSBvZiB0aGUgSVNfR0VO KG4pIHx8CklTX0dFTihuICsgMSkgdXNlcyB0byBJU19HRU5fUkFOR0UobiwgbiArIDEpLgoKQW55 d2F5LCBJIHRoaW5rIHRoaXMgaXMgdGhlIGRpcmVjdGlvbiB0byBnbyB0bywgYXMgdGhlIElTX0dF TjxOPiBtYWNyb3MKYXJlIGdldHRpbmcgYSBiaXQgdGVkaW91cy4KClJldmlld2VkLWJ5OiBKYW5p IE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC92Z3B1LmMgICAgICAgICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfY21kX3BhcnNlci5jICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jICAgICAgICB8IDE2ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMgICAgICAgICAgICB8IDE4ICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAyOSArKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgMTQgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9mZW5jZV9yZWcuYyAgfCAxMCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMgICAgICAgIHwgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc3RvbGVuLmMgICAgIHwgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYyAgICAgIHwgMTggKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMg ICAgICAgICAgICB8IDI0ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5k LmMgICAgICAgIHwgMTIgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMu YyAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAg ICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jICAgICAg ICAgfCAxMCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgICAgICAgICAg IHwgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAgIHwg MTYgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwg NzQgKysrKysrKysrKystLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jICAgICAgICAgICAgfCAyNCArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi Yy5jICAgICAgICAgICB8IDIyICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Zmlmb191bmRlcnJ1bi5jIHwgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2Z3LmMgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2No ZWNrLmMgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAg ICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jICAgICAg ICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAg IHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jICAgICAgIHwg MTAgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICAgICB8ICA4 ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jICAgICAgfCAgOCAr LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgIHwgNjAgKysr KysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAg ICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAg ICB8IDI4ICsrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyAg ICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICAgICB8 ICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMgICAgICAgICAgICB8ICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgICAgICB8IDE4ICsr Ky0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jICAgICAgICAgfCAgNCAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jICAgfCAgNCArLQo+ ICA0NCBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwgMjYzIGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gaW5kZXggYzYyOGJlMDVmYmZlLi5lMWM4NjBmODBl YjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMKPiBAQCAtMTQ4LDEwICsxNDgsMTAgQEAg aW50IGludGVsX2d2dF9pbml0X3ZncHVfdHlwZXMoc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ICAJ CWd2dC0+dHlwZXNbaV0uYXZhaWxfaW5zdGFuY2UgPSBtaW4obG93X2F2YWlsIC8gdmdwdV90eXBl c1tpXS5sb3dfbW0sCj4gIAkJCQkJCSAgIGhpZ2hfYXZhaWwgLyB2Z3B1X3R5cGVzW2ldLmhpZ2hf bW0pOwo+ICAKPiAtCQlpZiAoSVNfR0VOOChndnQtPmRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VO KGd2dC0+ZGV2X3ByaXYsIDgpKQo+ICAJCQlzcHJpbnRmKGd2dC0+dHlwZXNbaV0ubmFtZSwgIkdW VGdfVjRfJXMiLAo+ICAJCQkJCQl2Z3B1X3R5cGVzW2ldLm5hbWUpOwo+IC0JCWVsc2UgaWYgKElT X0dFTjkoZ3Z0LT5kZXZfcHJpdikpCj4gKwkJZWxzZSBpZiAoSVNfR0VOKGd2dC0+ZGV2X3ByaXYs IDkpKQo+ICAJCQlzcHJpbnRmKGd2dC0+dHlwZXNbaV0ubmFtZSwgIkdWVGdfVjVfJXMiLAo+ICAJ CQkJCQl2Z3B1X3R5cGVzW2ldLm5hbWUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Nt ZF9wYXJzZXIuYwo+IGluZGV4IDk1NDc4ZGI5OTk4Yi4uMzNlOGVlZDY0NDIzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBAQCAtODY1LDcgKzg2NSw3IEBAIHZv aWQgaW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIAlpbnQgY21kX3RhYmxlX2NvdW50Owo+ICAJaW50IHJldDsKPiAgCj4gLQlpZiAo IUlTX0dFTjcoZW5naW5lLT5pOTE1KSkKPiArCWlmICghSVNfR0VOKGVuZ2luZS0+aTkxNSwgNykp Cj4gIAkJcmV0dXJuOwo+ICAKPiAgCXN3aXRjaCAoZW5naW5lLT5pZCkgewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMzhkY2VlMWNhMDYyLi41M2UzZjU3YTEzZjMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xMDY0LDcgKzEwNjQsNyBA QCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAt CWlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpIHsK PiAgCQl1MTYgcmd2c3djdGwgPSBJOTE1X1JFQUQxNihNRU1TV0NUTCk7Cj4gIAkJdTE2IHJndnN0 YXQgPSBJOTE1X1JFQUQxNihNRU1TVEFUX0lMSyk7Cj4gIAo+IEBAIC0xNzg1LDcgKzE3ODUsNyBA QCBzdGF0aWMgaW50IGk5MTVfZW1vbl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCj4gIAl1bnNpZ25lZCBsb25nIHRlbXAsIGNoaXBzZXQsIGdmeDsKPiAgCWludCByZXQ7 Cj4gIAo+IC0JaWYgKCFJU19HRU41KGRldl9wcml2KSkKPiArCWlmICghSVNfR0VOKGRldl9wcml2 LCA1KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7Cj4gQEAgLTIwMzQsNyArMjAzNCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxl X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJc2VxX3ByaW50ZihtLCAi Yml0NiBzd2l6emxlIGZvciBZLXRpbGluZyA9ICVzXG4iLAo+ICAJCSAgIHN3aXp6bGVfc3RyaW5n KGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3kpKTsKPiAgCj4gLQlpZiAoSVNfR0VOMyhkZXZf cHJpdikgfHwgSVNfR0VONChkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDMp IHx8IElTX0dFTihkZXZfcHJpdiwgNCkpIHsKPiAgCQlzZXFfcHJpbnRmKG0sICJEREMgPSAweCUw OHhcbiIsCj4gIAkJCSAgIEk5MTVfUkVBRChEQ0MpKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJEREMy ID0gMHglMDh4XG4iLAo+IEBAIC0yMTE5LDEyICsyMTE5LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjZf cHBndHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCj4gLQlpZiAoSVNfR0VO NihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlzZXFfcHJpbnRm KG0sICJHRlhfTU9ERTogMHglMDh4XG4iLCBJOTE1X1JFQUQoR0ZYX01PREUpKTsKPiAgCj4gIAlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAgCQlzZXFfcHJpbnRmKG0s ICIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPiAtCQlpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gKwkJ aWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gIAkJCXNlcV9wcmludGYobSwgIkdGWF9NT0RFOiAw eCUwOHhcbiIsCj4gIAkJCQkgICBJOTE1X1JFQUQoUklOR19NT0RFX0dFTjcoZW5naW5lKSkpOwo+ ICAJCXNlcV9wcmludGYobSwgIlBQX0RJUl9CQVNFOiAweCUwOHhcbiIsCj4gQEAgLTQyNjgsNyAr NDI2OCw3IEBAIGk5MTVfY2FjaGVfc2hhcmluZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwo+ICAJdTMyIHNucGNy Owo+ICAKPiAtCWlmICghKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpKSkK PiArCWlmICghKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfR0VOKGRldl9wcml2LCA3KSkpCj4g IAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYp Owo+IEBAIC00Mjg4LDcgKzQyODgsNyBAQCBpOTE1X2NhY2hlX3NoYXJpbmdfc2V0KHZvaWQgKmRh dGEsIHU2NCB2YWwpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRh Owo+ICAJdTMyIHNucGNyOwo+ICAKPiAtCWlmICghKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0dF TjcoZGV2X3ByaXYpKSkKPiArCWlmICghKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfR0VOKGRl dl9wcml2LCA3KSkpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICAJaWYgKHZhbCA+IDMpCj4g QEAgLTQ1NDUsNyArNDU0NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQljaGVycnl2aWV3X3NzZXVfZGV2aWNlX3N0 YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+ICAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3By aXYpKSB7Cj4gIAkJYnJvYWR3ZWxsX3NzZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUp Owo+IC0JfSBlbHNlIGlmIChJU19HRU45KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19H RU4oZGV2X3ByaXYsIDkpKSB7Cj4gIAkJZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYs ICZzc2V1KTsKPiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+ICAJ CWdlbjEwX3NzZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+IGluZGV4IGIzMTBhODk3YTRhZC4uNzdjMGY5N2ZlNzdjIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTEzMiwxNSArMTMyLDE1IEBAIGludGVsX3BjaF90eXBl KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgc2hvcnQg aWQpCj4gIAlzd2l0Y2ggKGlkKSB7Cj4gIAljYXNlIElOVEVMX1BDSF9JQlhfREVWSUNFX0lEX1RZ UEU6Cj4gIAkJRFJNX0RFQlVHX0tNUygiRm91bmQgSWJleCBQZWFrIFBDSFxuIik7Cj4gLQkJV0FS Tl9PTighSVNfR0VONShkZXZfcHJpdikpOwo+ICsJCVdBUk5fT04oIUlTX0dFTihkZXZfcHJpdiwg NSkpOwo+ICAJCXJldHVybiBQQ0hfSUJYOwo+ICAJY2FzZSBJTlRFTF9QQ0hfQ1BUX0RFVklDRV9J RF9UWVBFOgo+ICAJCURSTV9ERUJVR19LTVMoIkZvdW5kIENvdWdhclBvaW50IFBDSFxuIik7Cj4g LQkJV0FSTl9PTighSVNfR0VONihkZXZfcHJpdikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikp Owo+ICsJCVdBUk5fT04oIUlTX0dFTihkZXZfcHJpdiwgNikgJiYgIUlTX0lWWUJSSURHRShkZXZf cHJpdikpOwo+ICAJCXJldHVybiBQQ0hfQ1BUOwo+ICAJY2FzZSBJTlRFTF9QQ0hfUFBUX0RFVklD RV9JRF9UWVBFOgo+ICAJCURSTV9ERUJVR19LTVMoIkZvdW5kIFBhbnRoZXJQb2ludCBQQ0hcbiIp Owo+IC0JCVdBUk5fT04oIUlTX0dFTjYoZGV2X3ByaXYpICYmICFJU19JVllCUklER0UoZGV2X3By aXYpKTsKPiArCQlXQVJOX09OKCFJU19HRU4oZGV2X3ByaXYsIDYpICYmICFJU19JVllCUklER0Uo ZGV2X3ByaXYpKTsKPiAgCQkvKiBQYW50aGVyUG9pbnQgaXMgQ1BUIGNvbXBhdGlibGUgKi8KPiAg CQlyZXR1cm4gUENIX0NQVDsKPiAgCWNhc2UgSU5URUxfUENIX0xQVF9ERVZJQ0VfSURfVFlQRToK PiBAQCAtMjE3LDkgKzIxNyw5IEBAIGludGVsX3ZpcnRfZGV0ZWN0X3BjaChjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBtYWtlIGFuIGVkdWNhdGVkIGd1ZXNz IGFzIHRvIHdoaWNoIFBDSCBpcyByZWFsbHkgdGhlcmUuCj4gIAkgKi8KPiAgCj4gLQlpZiAoSVNf R0VONShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlpZCA9IElO VEVMX1BDSF9JQlhfREVWSUNFX0lEX1RZUEU7Cj4gLQllbHNlIGlmIChJU19HRU42KGRldl9wcml2 KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAJCWlkID0gSU5URUxfUENIX0NQVF9E RVZJQ0VfSURfVFlQRTsKPiAgCWVsc2UgaWYgKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElTX0JE V19VTFQoZGV2X3ByaXYpKQo+ICAJCWlkID0gSU5URUxfUENIX0xQVF9MUF9ERVZJQ0VfSURfVFlQ RTsKPiBAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9tbWlvX3NldHVwKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludCBtbWlvX2JhcjsKPiAgCWludCBt bWlvX3NpemU7Cj4gIAo+IC0JbW1pb19iYXIgPSBJU19HRU4yKGRldl9wcml2KSA/IDEgOiAwOwo+ ICsJbW1pb19iYXIgPSBJU19HRU4oZGV2X3ByaXYsIDIpID8gMSA6IDA7Cj4gIAkvKgo+ICAJICog QmVmb3JlIGdlbjQsIHRoZSByZWdpc3RlcnMgYW5kIHRoZSBHVFQgYXJlIGJlaGluZCBkaWZmZXJl bnQgQkFScy4KPiAgCSAqIEhvd2V2ZXIsIGZyb20gZ2VuNCBvbndhcmRzLCB0aGUgcmVnaXN0ZXJz IGFuZCB0aGUgR1RUIGFyZSBzaGFyZWQKPiBAQCAtMTM0MSw3ICsxMzQxLDcgQEAgaW50ZWxfZ2V0 X2RyYW1faW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBOZWVk IHRvIGNhbGN1bGF0ZSBiYW5kd2lkdGggb25seSBmb3IgR2VuOSAqLwo+ICAJaWYgKElTX0JST1hU T04oZGV2X3ByaXYpKQo+ICAJCXJldCA9IGJ4dF9nZXRfZHJhbV9pbmZvKGRldl9wcml2KTsKPiAt CWVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA5KSkKPiAgCQlyZXQgPSBza2xfZ2V0X2RyYW1faW5mbyhkZXZfcHJpdik7Cj4gIAllbHNlCj4g IAkJcmV0ID0gc2tsX2RyYW1fZ2V0X2NoYW5uZWxzX2luZm8oZGV2X3ByaXYpOwo+IEBAIC0xNDM2 LDcgKzE0MzYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcGNpX3NldF9tYXN0ZXIocGRldik7Cj4gIAo+ICAJ Lyogb3ZlcmxheSBvbiBnZW4yIGlzIGJyb2tlbiBhbmQgY2FuJ3QgYWRkcmVzcyBhYm92ZSAxRyAq Lwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAy KSkgewo+ICAJCXJldCA9IGRtYV9zZXRfY29oZXJlbnRfbWFzaygmcGRldi0+ZGV2LCBETUFfQklU X01BU0soMzApKTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNl dCBETUEgbWFza1xuIik7Cj4gQEAgLTE1NzQsNyArMTU3NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVf ZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlh Y3BpX3ZpZGVvX3JlZ2lzdGVyKCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYp KQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJaW50ZWxfZ3B1X2lwc19pbml0KGRl dl9wcml2KTsKPiAgCj4gIAlpbnRlbF9hdWRpb19pbml0KGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCBhZmZjYjAyOGZmOGQuLjY2MGQzNWFlZDIwZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMjE2LDYgKzIyMTYsMTAgQEAgaW50ZWxfaW5mbyhj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICNkZWZpbmUgSVNfR0VO X1JBTkdFKGRldl9wcml2LCBzLCBlKSBcCj4gIAkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFz ayAmIElOVEVMX0dFTl9NQVNLKChzKSwgKGUpKSkpCj4gIAo+ICsjZGVmaW5lIElTX0dFTihkZXZf cHJpdiwgbikgXAo+ICsJKEJVSUxEX0JVR19PTl9aRVJPKCFfX2J1aWx0aW5fY29uc3RhbnRfcChu KSkgKyBcCj4gKwkgKGRldl9wcml2KS0+aW5mby5nZW4gPT0gKG4pKQo+ICsKPiAgLyoKPiAgICog UmV0dXJuIHRydWUgaWYgcmV2aXNpb24gaXMgaW4gcmFuZ2UgW3NpbmNlLHVudGlsXSBpbmNsdXNp dmUuCj4gICAqCj4gQEAgLTIzNjcsMjYgKzIzNzEsOSBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgI2RlZmluZSBJU19JQ0xfUkVWSUQocCwg c2luY2UsIHVudGlsKSBcCj4gIAkoSVNfSUNFTEFLRShwKSAmJiBJU19SRVZJRChwLCBzaW5jZSwg dW50aWwpKQo+ICAKPiAtLyoKPiAtICogVGhlIGdlblggZGVzaWduYXRpb24gdHlwaWNhbGx5IHJl ZmVycyB0byB0aGUgcmVuZGVyIGVuZ2luZSwgc28gcmVuZGVyCj4gLSAqIGNhcGFiaWxpdHkgcmVs YXRlZCBjaGVja3Mgc2hvdWxkIHVzZSBJU19HRU4sIHdoaWxlIGRpc3BsYXkgYW5kIG90aGVyIGNo ZWNrcwo+IC0gKiBoYXZlIHRoZWlyIG93biAoZS5nLiBIQVNfUENIX1NQTElUIGZvciBJTEsrIGRp c3BsYXksIElTX2ZvbyBmb3IgcGFydGljdWxhcgo+IC0gKiBjaGlwcywgZXRjLikuCj4gLSAqLwo+ IC0jZGVmaW5lIElTX0dFTjIoZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNr ICYgQklUKDEpKSkKPiAtI2RlZmluZSBJU19HRU4zKGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+ aW5mby5nZW5fbWFzayAmIEJJVCgyKSkpCj4gLSNkZWZpbmUgSVNfR0VONChkZXZfcHJpdikJKCEh KChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoMykpKQo+IC0jZGVmaW5lIElTX0dFTjUo ZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDQpKSkKPiAtI2Rl ZmluZSBJU19HRU42KGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJ VCg1KSkpCj4gLSNkZWZpbmUgSVNfR0VONyhkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8u Z2VuX21hc2sgJiBCSVQoNikpKQo+IC0jZGVmaW5lIElTX0dFTjgoZGV2X3ByaXYpCSghISgoZGV2 X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDcpKSkKPiAtI2RlZmluZSBJU19HRU45KGRldl9w cml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJVCg4KSkpCj4gLSNkZWZpbmUg SVNfR0VOMTAoZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDkp KSkKPiAtI2RlZmluZSBJU19HRU4xMShkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2Vu X21hc2sgJiBCSVQoMTApKSkKPiAtCj4gICNkZWZpbmUgSVNfTFAoZGV2X3ByaXYpCShJTlRFTF9J TkZPKGRldl9wcml2KS0+aXNfbHApCj4gLSNkZWZpbmUgSVNfR0VOOV9MUChkZXZfcHJpdikJKElT X0dFTjkoZGV2X3ByaXYpICYmIElTX0xQKGRldl9wcml2KSkKPiAtI2RlZmluZSBJU19HRU45X0JD KGRldl9wcml2KQkoSVNfR0VOOShkZXZfcHJpdikgJiYgIUlTX0xQKGRldl9wcml2KSkKPiArI2Rl ZmluZSBJU19HRU45X0xQKGRldl9wcml2KQkoSVNfR0VOKGRldl9wcml2LCA5KSAmJiBJU19MUChk ZXZfcHJpdikpCj4gKyNkZWZpbmUgSVNfR0VOOV9CQyhkZXZfcHJpdikJKElTX0dFTihkZXZfcHJp diwgOSkgJiYgIUlTX0xQKGRldl9wcml2KSkKPiAgCj4gICNkZWZpbmUgRU5HSU5FX01BU0soaWQp CUJJVChpZCkKPiAgI2RlZmluZSBSRU5ERVJfUklORwlFTkdJTkVfTUFTSyhSQ1MpCj4gQEAgLTI0 MDcsNyArMjM5NCw3IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAjZGVmaW5lIEhBU19CTFQoZGV2X3ByaXYpCUhBU19FTkdJTkUoZGV2X3By aXYsIEJDUykKPiAgI2RlZmluZSBIQVNfVkVCT1goZGV2X3ByaXYpCUhBU19FTkdJTkUoZGV2X3By aXYsIFZFQ1MpCj4gIAo+IC0jZGVmaW5lIEhBU19MRUdBQ1lfU0VNQVBIT1JFUyhkZXZfcHJpdikg SVNfR0VONyhkZXZfcHJpdikKPiArI2RlZmluZSBIQVNfTEVHQUNZX1NFTUFQSE9SRVMoZGV2X3By aXYpIElTX0dFTihkZXZfcHJpdiwgNykKPiAgCj4gICNkZWZpbmUgSEFTX0xMQyhkZXZfcHJpdikJ KChkZXZfcHJpdiktPmluZm8uaGFzX2xsYykKPiAgI2RlZmluZSBIQVNfU05PT1AoZGV2X3ByaXYp CSgoZGV2X3ByaXYpLT5pbmZvLmhhc19zbm9vcCkKPiBAQCAtMjQ1OSw3ICsyNDQ2LDcgQEAgaW50 ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIC8qIFdp dGggdGhlIDk0NSBhbmQgbGF0ZXIsIFkgdGlsaW5nIGdvdCBhZGp1c3RlZCBzbyB0aGF0IGl0IHdh cyAzMiAxMjgtYnl0ZQo+ICAgKiByb3dzLCB3aGljaCBjaGFuZ2VkIHRoZSBhbGlnbm1lbnQgcmVx dWlyZW1lbnRzIGFuZCBmZW5jZSBwcm9ncmFtbWluZy4KPiAgICovCj4gLSNkZWZpbmUgSEFTXzEy OF9CWVRFX1lfVElMSU5HKGRldl9wcml2KSAoIUlTX0dFTjIoZGV2X3ByaXYpICYmIFwKPiArI2Rl ZmluZSBIQVNfMTI4X0JZVEVfWV9USUxJTkcoZGV2X3ByaXYpICghSVNfR0VOKGRldl9wcml2LCAy KSAmJiBcCj4gIAkJCQkJICEoSVNfSTkxNUcoZGV2X3ByaXYpIHx8IFwKPiAgCQkJCQkgSVNfSTkx NUdNKGRldl9wcml2KSkpCj4gICNkZWZpbmUgU1VQUE9SVFNfVFYoZGV2X3ByaXYpCQkoKGRldl9w cml2KS0+aW5mby5kaXNwbGF5LnN1cHBvcnRzX3R2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IGluZGV4IGQzNmE5NzU1YWQ5MS4uMzllZTY3ZTAxYmI3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gQEAgLTUyMjYsMTUgKzUyMjYsMTUgQEAgdm9pZCBpOTE1X2dlbV9pbml0X3N3aXp6 bGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlJOTE1X1dSSVRFKERJ U1BfQVJCX0NUTCwgSTkxNV9SRUFEKERJU1BfQVJCX0NUTCkgfAo+ICAJCQkJIERJU1BfVElMRV9T VVJGQUNFX1NXSVpaTElORyk7Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYg KElTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCUk5MTVfV1JJVEUoVElM RUNUTCwgSTkxNV9SRUFEKFRJTEVDVEwpIHwgVElMRUNUTF9TV1pDVEwpOwo+IC0JaWYgKElTX0dF TjYoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJSTkxNV9XUklU RShBUkJfTU9ERSwgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfU05CKSk7Cj4g LQllbHNlIGlmIChJU19HRU43KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJp diwgNykpCj4gIAkJSTkxNV9XUklURShBUkJfTU9ERSwgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9N T0RFX1NXSVpaTEVfSVZCKSk7Cj4gLQllbHNlIGlmIChJU19HRU44KGRldl9wcml2KSkKPiArCWVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOCkpCj4gIAkJSTkxNV9XUklURShHQU1UQVJCTU9ERSwg X01BU0tFRF9CSVRfRU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfQkRXKSk7Cj4gIAllbHNlCj4gIAkJ QlVHKCk7Cj4gQEAgLTUyNTYsMTAgKzUyNTYsMTAgQEAgc3RhdGljIHZvaWQgaW5pdF91bnVzZWRf cmluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWluaXRfdW51c2Vk X3JpbmcoZGV2X3ByaXYsIFNSQjFfQkFTRSk7Cj4gIAkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJp diwgU1JCMl9CQVNFKTsKPiAgCQlpbml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBTUkIzX0JBU0Up Owo+IC0JfSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19H RU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgU1JCMF9C QVNFKTsKPiAgCQlpbml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBTUkIxX0JBU0UpOwo+IC0JfSBl bHNlIGlmIChJU19HRU4zKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3By aXYsIDMpKSB7Cj4gIAkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgUFJCMV9CQVNFKTsKPiAg CQlpbml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBQUkIyX0JBU0UpOwo+ICAJfQo+IEBAIC01NTgz LDcgKzU1ODMsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAl9Cj4gIAo+ICAJcmV0ID0gaTkxNV9nZW1faW5pdF9zY3JhdGNoKGRldl9w cml2LAo+IC0JCQkJICAgIElTX0dFTjIoZGV2X3ByaXYpID8gU1pfMjU2SyA6IFBBR0VfU0laRSk7 Cj4gKwkJCQkgICAgSVNfR0VOKGRldl9wcml2LCAyKSA/IFNaXzI1NksgOiBQQUdFX1NJWkUpOwo+ ICAJaWYgKHJldCkgewo+ICAJCUdFTV9CVUdfT04ocmV0ID09IC1FSU8pOwo+ICAJCWdvdG8gZXJy X2dndHQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDM3 MWMwNzA4NzA5NS4uMDE0MTUyZTJiYzY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYwo+IEBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIHUzMiBkZWZhdWx0X2Rl c2NfdGVtcGxhdGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAkJYWRk cmVzc19tb2RlID0gSU5URUxfTEVHQUNZXzY0Ql9DT05URVhUOwo+ICAJZGVzYyB8PSBhZGRyZXNz X21vZGUgPDwgR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFX1NISUZUOwo+ICAKPiAtCWlmIChJU19H RU44KGk5MTUpKQo+ICsJaWYgKElTX0dFTihpOTE1LCA4KSkKPiAgCQlkZXNjIHw9IEdFTjhfQ1RY X0wzTExDX0NPSEVSRU5UOwo+ICAKPiAgCS8qIFRPRE86IFdhRGlzYWJsZUxpdGVSZXN0b3JlIHdo ZW4gd2Ugc3RhcnQgdXNpbmcgc2VtYXBob3JlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDEwYTRhZmI0ZjIzNS4uZWIyNmY0ODE3ZmNlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xMzg1 LDcgKzEzODUsNyBAQCBlYl9yZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICpl YiwKPiAgCQkgKiBiYXRjaGJ1ZmZlcnMuCj4gIAkJICovCj4gIAkJaWYgKHJlbG9jLT53cml0ZV9k b21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OICYmCj4gLQkJICAgIElTX0dFTjYo ZWItPmk5MTUpKSB7Cj4gKwkJICAgIElTX0dFTihlYi0+aTkxNSwgNikpIHsKPiAgCQkJZXJyID0g aTkxNV92bWFfYmluZCh0YXJnZXQsIHRhcmdldC0+b2JqLT5jYWNoZV9sZXZlbCwKPiAgCQkJCQkg ICAgUElOX0dMT0JBTCk7Cj4gIAkJCWlmIChXQVJOX09OQ0UoZXJyLAo+IEBAIC0xODk4LDcgKzE4 OTgsNyBAQCBzdGF0aWMgaW50IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKPiAgCXUzMiAqY3M7Cj4gIAlpbnQgaTsKPiAgCj4gLQlpZiAoIUlTX0dF TjcocnEtPmk5MTUpIHx8IHJxLT5lbmdpbmUtPmlkICE9IFJDUykgewo+ICsJaWYgKCFJU19HRU4o cnEtPmk5MTUsIDcpIHx8IHJxLT5lbmdpbmUtPmlkICE9IFJDUykgewo+ICAJCURSTV9ERUJVRygi c29sIHJlc2V0IGlzIGdlbjcvcmNzIG9ubHlcbiIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJ fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gaW5kZXggZDU0 OGFjMDVjY2Q3Li4yNGRmMmUyYThmYzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9mZW5jZV9yZWcuYwo+IEBAIC0xOTMsOSArMTkzLDkgQEAgc3RhdGljIHZvaWQgZmVuY2Vf d3JpdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCj4gIAkgKiBhbmQgZXhwbGlj aXRseSBtYW5hZ2VkIGZvciBpbnRlcm5hbCB1c2Vycy4KPiAgCSAqLwo+ICAKPiAtCWlmIChJU19H RU4yKGZlbmNlLT5pOTE1KSkKPiArCWlmIChJU19HRU4oZmVuY2UtPmk5MTUsIDIpKQo+ICAJCWk4 MzBfd3JpdGVfZmVuY2VfcmVnKGZlbmNlLCB2bWEpOwo+IC0JZWxzZSBpZiAoSVNfR0VOMyhmZW5j ZS0+aTkxNSkpCj4gKwllbHNlIGlmIChJU19HRU4oZmVuY2UtPmk5MTUsIDMpKQo+ICAJCWk5MTVf d3JpdGVfZmVuY2VfcmVnKGZlbmNlLCB2bWEpOwo+ICAJZWxzZQo+ICAJCWk5NjVfd3JpdGVfZmVu Y2VfcmVnKGZlbmNlLCB2bWEpOwo+IEBAIC01OTYsMTMgKzU5NiwxMyBAQCBpOTE1X2dlbV9kZXRl Y3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ CQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKPiAgCQkJfQo+ICAJCX0KPiAt CX0gZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCA1KSkgewo+ICAJCS8qIE9uIElyb25sYWtlIHdoYXRldmVyIERSQU0gY29uZmlnLCBH UFUgYWx3YXlzIGRvCj4gIAkJICogc2FtZSBzd2l6emxpbmcgc2V0dXAuCj4gIAkJICovCj4gIAkJ c3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTA7Cj4gIAkJc3dpenpsZV95ID0gSTkx NV9CSVRfNl9TV0laWkxFXzk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4g Kwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgCQkvKiBBcyBmYXIgYXMgd2Ug a25vdywgdGhlIDg2NSBkb2Vzbid0IGhhdmUgdGhlc2UgYml0IDYKPiAgCQkgKiBzd2l6emxpbmcg aXNzdWVzLgo+ICAJCSAqLwo+IEBAIC02NDcsNyArNjQ3LDcgQEAgaTkxNV9nZW1fZGV0ZWN0X2Jp dF82X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCX0KPiAg Cj4gIAkJLyogY2hlY2sgZm9yIEwtc2hhcGVkIG1lbW9yeSBha2EgbW9kaWZpZWQgZW5oYW5jZWQg YWRkcmVzc2luZyAqLwo+IC0JCWlmIChJU19HRU40KGRldl9wcml2KSAmJgo+ICsJCWlmIChJU19H RU4oZGV2X3ByaXYsIDQpICYmCj4gIAkJICAgICEoSTkxNV9SRUFEKERDQzIpICYgRENDMl9NT0RJ RklFRF9FTkhBTkNFRF9ESVNBQkxFKSkgewo+ICAJCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NX SVpaTEVfVU5LTk9XTjsKPiAgCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05P V047Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBhZGQxZmU3YWViOTMu LjYwOWMyZmQxZWEzNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAg LTIxOTUsOSArMjE5NSw5IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlndHRfd3JpdGVfd29ya2Fyb3VuZHMoZGV2X3By aXYpOwo+ICAKPiAtCWlmIChJU19HRU42KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3By aXYsIDYpKQo+ICAJCWdlbjZfcHBndHRfZW5hYmxlKGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElT X0dFTjcoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkKPiAgCQln ZW43X3BwZ3R0X2VuYWJsZShkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTIyNzks NyArMjI3OSw3IEBAIHN0YXRpYyBib29sIG5lZWRzX2lkbGVfbWFwcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBRdWVyeSBpbnRlbF9pb21tdSB0byBzZWUgaWYgd2Ug bmVlZCB0aGUgd29ya2Fyb3VuZC4gUHJlc3VtYWJseSB0aGF0Cj4gIAkgKiB3YXMgbG9hZGVkIGZp cnN0Lgo+ICAJICovCj4gLQlyZXR1cm4gSVNfR0VONShkZXZfcHJpdikgJiYgSVNfTU9CSUxFKGRl dl9wcml2KSAmJiBpbnRlbF92dGRfYWN0aXZlKCk7Cj4gKwlyZXR1cm4gSVNfR0VOKGRldl9wcml2 LCA1KSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpICYmIGludGVsX3Z0ZF9hY3RpdmUoKTsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgZ2VuNl9jaGVja19mYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gaW5k ZXggZjI5YTdmZjdjMzYyLi4yZjc1NmE5NzY4OWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYwo+IEBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIGludCBpOTE1X2Fk anVzdF9zdG9sZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJlc291 cmNlX3NpemVfdCBnZ3R0X3N0YXJ0Owo+ICAKPiAgCQlnZ3R0X3N0YXJ0ID0gSTkxNV9SRUFEKFBH VEJMX0NUTCk7Cj4gLQkJaWYgKElTX0dFTjQoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2 X3ByaXYsIDQpKQo+ICAJCQlnZ3R0X3N0YXJ0ID0gKGdndHRfc3RhcnQgJiBQR1RCTF9BRERSRVNT X0xPX01BU0spIHwKPiAgCQkJCSAgICAgKGdndHRfc3RhcnQgJiBQR1RCTF9BRERSRVNTX0hJX01B U0spIDw8IDI4Owo+ICAJCWVsc2UKPiBAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBpbnQgaTkx NV9hZGp1c3Rfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkg KiBHRU4zIGZpcm13YXJlIGxpa2VzIHRvIHNtYXNoIHBjaSBicmlkZ2VzIGludG8gdGhlIHN0b2xl bgo+ICAJCSAqIHJhbmdlLiBBcHBhcmVudGx5IHRoaXMgd29ya3MuCj4gIAkJICovCj4gLQkJaWYg KHIgPT0gTlVMTCAmJiAhSVNfR0VOMyhkZXZfcHJpdikpIHsKPiArCQlpZiAociA9PSBOVUxMICYm ICFJU19HRU4oZGV2X3ByaXYsIDMpKSB7Cj4gIAkJCURSTV9FUlJPUigiY29uZmxpY3QgZGV0ZWN0 ZWQgd2l0aCBzdG9sZW4gcmVnaW9uOiAlcFJcbiIsCj4gIAkJCQkgIGRzbSk7Cj4gIAo+IEBAIC0x OTQsNyArMTk0LDggQEAgc3RhdGljIHZvaWQgZzR4X2dldF9zdG9sZW5fcmVzZXJ2ZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICogV2hldGhlciBJTEsgcmVhbGx5IHJl dXNlcyB0aGUgRUxLIHJlZ2lzdGVyIGZvciB0aGlzIGlzIHVuY2xlYXIuCj4gIAkgKiBMZXQncyBz ZWUgaWYgd2UgY2F0Y2ggYW55b25lIHdpdGggdGhpcyBzdXBwb3NlZGx5IGVuYWJsZWQgb24gSUxL Lgo+ICAJICovCj4gLQlXQVJOKElTX0dFTjUoZGV2X3ByaXYpLCAiSUxLIHN0b2xlbiByZXNlcnZl ZCBmb3VuZD8gMHglMDh4XG4iLCByZWdfdmFsKTsKPiArCVdBUk4oSVNfR0VOKGRldl9wcml2LCA1 KSwgIklMSyBzdG9sZW4gcmVzZXJ2ZWQgZm91bmQ/IDB4JTA4eFxuIiwKPiArCSAgICAgcmVnX3Zh bCk7Cj4gIAo+ICAJaWYgKCEocmVnX3ZhbCAmIEc0WF9TVE9MRU5fUkVTRVJWRURfQUREUjJfTUFT SykpCj4gIAkJcmV0dXJuOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV90aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4g aW5kZXggZDlkYzlkZjUyM2I1Li4zOTMxOWZmMTY3OWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aWxpbmcuYwo+IEBAIC04Nyw3ICs4Nyw3IEBAIHUzMiBpOTE1X2dlbV9mZW5j ZV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJfQo+ICAKPiAgCS8qIFBy ZXZpb3VzIGNoaXBzIG5lZWQgYSBwb3dlci1vZi10d28gZmVuY2UgcmVnaW9uIHdoZW4gdGlsaW5n ICovCj4gLQlpZiAoSVNfR0VOMyhpOTE1KSkKPiArCWlmIChJU19HRU4oaTkxNSwgMykpCj4gIAkJ Z2d0dF9zaXplID0gMTAyNCoxMDI0Owo+ICAJZWxzZQo+ICAJCWdndHRfc2l6ZSA9IDUxMioxMDI0 Owo+IEBAIC0xNjIsNyArMTYyLDcgQEAgaTkxNV90aWxpbmdfb2soc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAtCWlmIChJU19H RU4yKGk5MTUpIHx8Cj4gKwlpZiAoSVNfR0VOKGk5MTUsIDIpIHx8Cj4gIAkgICAgKHRpbGluZyA9 PSBJOTE1X1RJTElOR19ZICYmIEhBU18xMjhfQllURV9ZX1RJTElORyhpOTE1KSkpCj4gIAkJdGls ZV93aWR0aCA9IDEyODsKPiAgCWVsc2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKPiBpbmRleCAwNzQ2NTEyM2MxNjYuLmNjZmQ5MWM3MjQ3NyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC03MzUsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQg X19lcnJfcHJpbnRfdG9fc2dsKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4g IAkJZXJyX3ByaW50ZihtLCAiRE9ORV9SRUc6IDB4JTA4eFxuIiwgZXJyb3ItPmRvbmVfcmVnKTsK PiAgCX0KPiAgCj4gLQlpZiAoSVNfR0VONyhtLT5pOTE1KSkKPiArCWlmIChJU19HRU4obS0+aTkx NSwgNykpCj4gIAkJZXJyX3ByaW50ZihtLCAiRVJSX0lOVDogMHglMDh4XG4iLCBlcnJvci0+ZXJy X2ludCk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3ItPmVuZ2luZSk7 IGkrKykgewo+IEBAIC0xMzE0LDcgKzEzMTQsNyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRf ZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ICAJaWYgKCFI V1NfTkVFRFNfUEhZU0lDQUwoZGV2X3ByaXYpKSB7Cj4gIAkJaTkxNV9yZWdfdCBtbWlvOwo+ICAK PiAtCQlpZiAoSVNfR0VONyhkZXZfcHJpdikpIHsKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA3 KSkgewo+ICAJCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAgCQkJZGVmYXVsdDoKPiAgCQkJY2Fz ZSBSQ1M6Cj4gQEAgLTEzMzAsNyArMTMzMCw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3JlY29yZF9l bmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsCj4gIAkJCQltbWlv ID0gVkVCT1hfSFdTX1BHQV9HRU43Owo+ICAJCQkJYnJlYWs7Cj4gIAkJCX0KPiAtCQl9IGVsc2Ug aWYgKElTX0dFTjYoZW5naW5lLT5pOTE1KSkgewo+ICsJCX0gZWxzZSBpZiAoSVNfR0VOKGVuZ2lu ZS0+aTkxNSwgNikpIHsKPiAgCQkJbW1pbyA9IFJJTkdfSFdTX1BHQV9HRU42KGVuZ2luZS0+bW1p b19iYXNlKTsKPiAgCQl9IGVsc2Ugewo+ICAJCQkvKiBYWFg6IGdlbjggcmV0dXJucyB0byBzYW5p dHkgKi8KPiBAQCAtMTM1MiwxMCArMTM1MiwxMCBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRf ZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ICAKPiAgCQll ZS0+dm1faW5mby5nZnhfbW9kZSA9IEk5MTVfUkVBRChSSU5HX01PREVfR0VONyhlbmdpbmUpKTsK PiAgCj4gLQkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYs IDYpKQo+ICAJCQllZS0+dm1faW5mby5wcF9kaXJfYmFzZSA9Cj4gIAkJCQlJOTE1X1JFQUQoUklO R19QUF9ESVJfQkFTRV9SRUFEKGVuZ2luZSkpOwo+IC0JCWVsc2UgaWYgKElTX0dFTjcoZGV2X3By aXYpKQo+ICsJCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gIAkJCWVlLT52bV9pbmZv LnBwX2Rpcl9iYXNlID0KPiAgCQkJCUk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkp Owo+ICAJCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiBAQCAtMTcyNSw3ICsx NzI1LDcgQEAgc3RhdGljIHZvaWQgY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGk5MTVfZ3B1X3N0 YXRlICplcnJvcikKPiAgCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFEX0ZXKEZPUkNFV0FL RV9WTFYpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19HRU43KGRldl9wcml2KSkKPiArCWlmIChJU19H RU4oZGV2X3ByaXYsIDcpKQo+ICAJCWVycm9yLT5lcnJfaW50ID0gSTkxNV9SRUFEKEdFTjdfRVJS X0lOVCk7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+IEBAIC0xNzMz LDcgKzE3MzMsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QgaTkxNV9n cHVfc3RhdGUgKmVycm9yKQo+ICAJCWVycm9yLT5mYXVsdF9kYXRhMSA9IEk5MTVfUkVBRChHRU44 X0ZBVUxUX1RMQl9EQVRBMSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7 Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCWVycm9yLT5mb3JjZXdha2UgPSBJ OTE1X1JFQURfRlcoRk9SQ0VXQUtFKTsKPiAgCQllcnJvci0+Z2FiX2N0bCA9IEk5MTVfUkVBRChH QUJfQ1RMKTsKPiAgCQllcnJvci0+Z2Z4X21vZGUgPSBJOTE1X1JFQUQoR0ZYX01PREUpOwo+IEBA IC0xNzUzLDcgKzE3NTMsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3Qg aTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJCWVycm9yLT5jY2lkID0gSTkxNV9SRUFEKENDSUQp Owo+ICAKPiAgCS8qIDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzICovCj4gLQlpZiAoSVNf R0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2 X3ByaXYsIDYpIHx8IElTX0dFTihkZXZfcHJpdiwgNykpIHsKPiAgCQllcnJvci0+Z2FtX2Vjb2No ayA9IEk5MTVfUkVBRChHQU1fRUNPQ0hLKTsKPiAgCQllcnJvci0+Z2FjX2VjbyA9IEk5MTVfUkVB RChHQUNfRUNPX0JJVFMpOwo+ICAJfQo+IEBAIC0xNzc3LDcgKzE3NzcsNyBAQCBzdGF0aWMgdm9p ZCBjYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJCWVy cm9yLT5pZXIgPSBJOTE1X1JFQUQoREVJRVIpOwo+ICAJCWVycm9yLT5ndGllclswXSA9IEk5MTVf UkVBRChHVElFUik7Cj4gIAkJZXJyb3ItPm5ndGllciA9IDE7Cj4gLQl9IGVsc2UgaWYgKElTX0dF TjIoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMikpIHsKPiAg CQllcnJvci0+aWVyID0gSTkxNV9SRUFEMTYoSUVSKTsKPiAgCX0gZWxzZSBpZiAoIUlTX1ZBTExF WVZJRVcoZGV2X3ByaXYpKSB7Cj4gIAkJZXJyb3ItPmllciA9IEk5MTVfUkVBRChJRVIpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IGQ0NDdkN2Q1MDhmNC4uZTJkYWM5YjVmNGNlIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMg aW50IF9faW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4g IAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiAgCQl2dG90YWwg Lz0gMjsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9w cml2LCAyKSkKPiAgCQlwb3NpdGlvbiA9IEk5MTVfUkVBRF9GVyhQSVBFRFNMKHBpcGUpKSAmIERT TF9MSU5FTUFTS19HRU4yOwo+ICAJZWxzZQo+ICAJCXBvc2l0aW9uID0gSTkxNV9SRUFEX0ZXKFBJ UEVEU0wocGlwZSkpICYgRFNMX0xJTkVNQVNLX0dFTjM7Cj4gQEAgLTEwMzAsNyArMTAzMCw3IEBA IHN0YXRpYyBib29sIGk5MTVfZ2V0X2NydGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPiAgCWlmIChzdGltZSkKPiAgCQkqc3RpbWUgPSBrdGlt ZV9nZXQoKTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwgSVNfRzRYKGRldl9wcml2 KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYs IDIpIHx8IElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7Cj4g IAkJLyogTm8gb2J2aW91cyBwaXhlbGNvdW50IHJlZ2lzdGVyLiBPbmx5IHF1ZXJ5IHZlcnRpY2Fs Cj4gIAkJICogc2Nhbm91dCBwb3NpdGlvbiBmcm9tIERpc3BsYXkgc2NhbiBsaW5lIHJlZ2lzdGVy Lgo+ICAJCSAqLwo+IEBAIC0xMDkwLDcgKzEwOTAsNyBAQCBzdGF0aWMgYm9vbCBpOTE1X2dldF9j cnRjX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUs Cj4gIAllbHNlCj4gIAkJcG9zaXRpb24gKz0gdnRvdGFsIC0gdmJsX2VuZDsKPiAgCj4gLQlpZiAo SVNfR0VOMihkZXZfcHJpdikgfHwgSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3By aXYpID49IDUpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpIHx8IElTX0c0WChkZXZfcHJp dikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7Cj4gIAkJKnZwb3MgPSBwb3NpdGlvbjsK PiAgCQkqaHBvcyA9IDA7Cj4gIAl9IGVsc2Ugewo+IEBAIC0yNTQ3LDcgKzI1NDcsNyBAQCBzdGF0 aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJSTkxNV9XUklURShTREVJSVIsIHBjaF9paXIpOwo+ICAJfQo+ICAKPiAt CWlmIChJU19HRU41KGRldl9wcml2KSAmJiBkZV9paXIgJiBERV9QQ1VfRVZFTlQpCj4gKwlpZiAo SVNfR0VOKGRldl9wcml2LCA1KSAmJiBkZV9paXIgJiBERV9QQ1VfRVZFTlQpCj4gIAkJaXJvbmxh a2VfcnBzX2NoYW5nZV9pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gIH0KPiAgCj4gQEAgLTMyNDMs NyArMzI0Myw3IEBAIHZvaWQgaTkxNV9jbGVhcl9lcnJvcl9yZWdpc3RlcnMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAl1MzIgZWlyOwo+ICAKPiAtCWlmICghSVNf R0VOMihkZXZfcHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJSTkxNV9X UklURShQR1RCTF9FUiwgSTkxNV9SRUFEKFBHVEJMX0VSKSk7Cj4gIAo+ICAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPCA0KQo+IEBAIC0zNTg2LDExICszNTg2LDExIEBAIHN0YXRpYyB2b2lkIGly b25sYWtlX2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAo+IC0JaWYgKElT X0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJSTkxNV9X UklURShIV1NUQU0sIDB4ZmZmZmZmZmYpOwo+ICAKPiAgCUdFTjNfSVJRX1JFU0VUKERFKTsKPiAt CWlmIChJU19HRU43KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDcpKQo+ICAJ CUk5MTVfV1JJVEUoR0VON19FUlJfSU5ULCAweGZmZmZmZmZmKTsKPiAgCj4gIAlpZiAoSVNfSEFT V0VMTChkZXZfcHJpdikpIHsKPiBAQCAtNDA0NSw3ICs0MDQ1LDcgQEAgc3RhdGljIHZvaWQgZ2Vu NV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCX0KPiAgCj4g IAlndF9pcnFzIHw9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVDsKPiAtCWlmIChJU19HRU41KGRl dl9wcml2KSkgewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgCQlndF9pcnFzIHw9 IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gIAl9IGVsc2Ugewo+ICAJCWd0X2lycXMgfD0gR1Rf QkxUX1VTRVJfSU5URVJSVVBUIHwgR1RfQlNEX1VTRVJfSU5URVJSVVBUOwo+IEBAIC00ODM2LDcg KzQ4MzYsNyBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gIAkJcnBzLT5wbV9p bnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNUX1RPX0dVQzsKPiAgCj4g LQlpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKSB7 Cj4gIAkJLyogR2VuMiBkb2Vzbid0IGhhdmUgYSBoYXJkd2FyZSBmcmFtZSBjb3VudGVyICovCj4g IAkJZGV2LT5tYXhfdmJsYW5rX2NvdW50ID0gMDsKPiAgCX0gZWxzZSBpZiAoSVNfRzRYKGRldl9w cml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiBAQCAtNDg1Miw3ICs0ODUyLDcg QEAgdm9pZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkgKiBHZW4yIGRvZXNuJ3QgaGF2ZSBhIGhhcmR3YXJlIGZyYW1lIGNvdW50ZXIgYW5kIHNv IGRlcGVuZHMgb24KPiAgCSAqIHZibGFuayBpbnRlcnJ1cHRzIHRvIHByb2R1Y2Ugc2FuZSB2Ymxh bmsgc2V1cXVlbmNlIG51bWJlcnMuCj4gIAkgKi8KPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikp Cj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJZGV2LT52YmxhbmtfZGlzYWJsZV9p bW1lZGlhdGUgPSB0cnVlOwo+ICAKPiAgCS8qIE1vc3QgcGxhdGZvcm1zIHRyZWF0IHRoZSBkaXNw bGF5IGlycSBibG9jayBhcyBhbiBhbHdheXMtb24KPiBAQCAtNDkyNCwxNCArNDkyNCwxNCBAQCB2 b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpcm9ubGFrZV9kaXNhYmxlX3ZibGFuazsK PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaWxrX2hwZF9pcnFfc2V0dXA7 Cj4gIAl9IGVsc2Ugewo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJCWlmIChJU19H RU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGk4 eHhfaXJxX3Jlc2V0Owo+ICAJCQlkZXYtPmRyaXZlci0+aXJxX3Bvc3RpbnN0YWxsID0gaTh4eF9p cnFfcG9zdGluc3RhbGw7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfaGFuZGxlciA9IGk4eHhfaXJx X2hhbmRsZXI7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gaTh4eF9pcnFfcmVz ZXQ7Cj4gIAkJCWRldi0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rID0gaTh4eF9lbmFibGVfdmJsYW5r Owo+ICAJCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpOHh4X2Rpc2FibGVfdmJsYW5r Owo+IC0JCX0gZWxzZSBpZiAoSVNfR0VOMyhkZXZfcHJpdikpIHsKPiArCQl9IGVsc2UgaWYgKElT X0dFTihkZXZfcHJpdiwgMykpIHsKPiAgCQkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0g aTkxNV9pcnFfcmVzZXQ7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwgPSBpOTE1 X2lycV9wb3N0aW5zdGFsbDsKPiAgCQkJZGV2LT5kcml2ZXItPmlycV91bmluc3RhbGwgPSBpOTE1 X2lycV9yZXNldDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGluZGV4IGFkMDA5NWJlNDM1 ZC4uNmM3OTkyMzIwNDQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMzQx NSw3ICszNDE1LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQgPSBnZW44X29hX3Jl YWQ7Cj4gIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdlbjhfb2Ff aHdfdGFpbF9yZWFkOwo+ICAKPiAtCQlpZiAoSVNfR0VOOChkZXZfcHJpdikgfHwgSVNfR0VOOShk ZXZfcHJpdikpIHsKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA4KSB8fCBJU19HRU4oZGV2X3By aXYsIDkpKSB7Cj4gIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9iX2NvdW50ZXJf cmVnID0KPiAgCQkJCWdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHI7Cj4gIAkJCWRldl9wcml2 LT5wZXJmLm9hLm9wcy5pc192YWxpZF9tdXhfcmVnID0KPiBAQCAtMzQzMSw3ICszNDMxLDcgQEAg dm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhfZW5hYmxl X21ldHJpY19zZXQ7Cj4gIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJpY19z ZXQgPSBnZW44X2Rpc2FibGVfbWV0cmljX3NldDsKPiAgCj4gLQkJCWlmIChJU19HRU44KGRldl9w cml2KSkgewo+ICsJCQlpZiAoSVNfR0VOKGRldl9wcml2LCA4KSkgewo+ICAJCQkJZGV2X3ByaXYt PnBlcmYub2EuY3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyMDsKPiAgCQkJCWRldl9wcml2LT5w ZXJmLm9hLmN0eF9mbGV4ZXUwX29mZnNldCA9IDB4MmNlOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N1c3BlbmQuYwo+IGluZGV4IDhmM2FhNGRjMGM5OC4uZjQwYmE1ZTQyOWUwIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBAQCAtNjUsNyArNjUsNyBAQCBpbnQgaTkx NV9zYXZlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlp OTE1X3NhdmVfZGlzcGxheShkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKElTX0dFTjQoZGV2X3ByaXYp KQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNCkpCj4gIAkJcGNpX3JlYWRfY29uZmlnX3dvcmQo cGRldiwgR0NER01CVVMsCj4gIAkJCQkgICAgICZkZXZfcHJpdi0+cmVnZmlsZS5zYXZlR0NER01C VVMpOwo+ICAKPiBAQCAtNzcsMTQgKzc3LDE0IEBAIGludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZU1J X0FSQl9TVEFURSA9IEk5MTVfUkVBRChNSV9BUkJfU1RBVEUpOwo+ICAKPiAgCS8qIFNjcmF0Y2gg c3BhY2UgKi8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSAmJiBJU19NT0JJTEUoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7 Cj4gIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewo+ICAJCQlkZXZfcHJpdi0+cmVnZmlsZS5z YXZlU1dGMFtpXSA9IEk5MTVfUkVBRChTV0YwKGkpKTsKPiAgCQkJZGV2X3ByaXYtPnJlZ2ZpbGUu c2F2ZVNXRjFbaV0gPSBJOTE1X1JFQUQoU1dGMShpKSk7Cj4gIAkJfQo+ICAJCWZvciAoaSA9IDA7 IGkgPCAzOyBpKyspCj4gIAkJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVTV0YzW2ldID0gSTkxNV9S RUFEKFNXRjMoaSkpOwo+IC0JfSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBl bHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJZm9yIChpID0gMDsgaSA8IDc7IGkr KykKPiAgCQkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjFbaV0gPSBJOTE1X1JFQUQoU1dGMShp KSk7Cj4gIAl9IGVsc2UgaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYpKSB7Cj4gQEAgLTEw OCw3ICsxMDgsNyBAQCBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gIAo+IC0JaWYgKElTX0dFTjQoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZf cHJpdiwgNCkpCj4gIAkJcGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIEdDREdNQlVTLAo+ICAJ CQkJICAgICAgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUdDREdNQlVTKTsKPiAgCWk5MTVfcmVzdG9y ZV9kaXNwbGF5KGRldl9wcml2KTsKPiBAQCAtMTIyLDE0ICsxMjIsMTQgQEAgaW50IGk5MTVfcmVz dG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlJOTE1X1dS SVRFKE1JX0FSQl9TVEFURSwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZU1JX0FSQl9TVEFURSB8IDB4 ZmZmZjAwMDApOwo+ICAKPiAgCS8qIFNjcmF0Y2ggc3BhY2UgKi8KPiAtCWlmIChJU19HRU4yKGRl dl9wcml2KSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2 LCAyKSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7Cj4gIAkJZm9yIChpID0gMDsgaSA8IDc7IGkr Kykgewo+ICAJCQlJOTE1X1dSSVRFKFNXRjAoaSksIGRldl9wcml2LT5yZWdmaWxlLnNhdmVTV0Yw W2ldKTsKPiAgCQkJSTkxNV9XUklURShTV0YxKGkpLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dG MVtpXSk7Cj4gIAkJfQo+ICAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCj4gIAkJCUk5MTVfV1JJ VEUoU1dGMyhpKSwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjNbaV0pOwo+IC0JfSBlbHNlIGlm IChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIp KSB7Cj4gIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykKPiAgCQkJSTkxNV9XUklURShTV0YxKGkp LCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dGMVtpXSk7Cj4gIAl9IGVsc2UgaWYgKEhBU19HTUNI X0RJU1BMQVkoZGV2X3ByaXYpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBp bmRleCA4Y2IwMmYyOGQzMGMuLmZkZmM3NDI1ZTY0NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F0b21pYy5jCj4gQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9t aWNfc2V0dXBfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0 YQo+ICAJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLmZiICYmCj4gIAkgICAg cGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+aXNfeXV2ICYmCj4gIAkgICAgcGxhbmVfc3Rh dGUtPmJhc2UuZmItPmZvcm1hdC0+bnVtX3BsYW5lcyA+IDEpIHsKPiAtCQlpZiAoSVNfR0VOOShk ZXZfcHJpdikgJiYKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJgo+ICAJCSAgICAhSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQkJbW9kZSA9IFNLTF9QU19TQ0FMRVJfTU9ERV9O VjEyOwo+ICAJCX0gZWxzZSBpZiAoaWNsX2lzX2hkcl9wbGFuZSh0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSkpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4g aW5kZXggYWU1NWE2ODY1ZDVjLi4wNTcxYWEyODQ2YTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F1ZGlvLmMKPiBAQCAtNzU4LDcgKzc1OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfYXVkaW9f Y29tcG9uZW50X2NvZGVjX3dha2Vfb3ZlcnJpZGUoc3RydWN0IGRldmljZSAqa2RldiwKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShrZGV2KTsKPiAg CXUzMiB0bXA7Cj4gIAo+IC0JaWYgKCFJU19HRU45KGRldl9wcml2KSkKPiArCWlmICghSVNfR0VO KGRldl9wcml2LCA5KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaTkxNV9hdWRpb19jb21wb25lbnRf Z2V0X3Bvd2VyKGtkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+IGluZGV4IDI1 ZTNhYmE5Y2RlZC4uMjAyMWU0ODRhMjg3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NkY2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNs ay5jCj4gQEAgLTIxNDAsNyArMjE0MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcGl4ZWxfcmF0ZV90 b19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHsKPiAgCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJ CXJldHVybiBESVZfUk9VTkRfVVAocGl4ZWxfcmF0ZSwgMik7Cj4gLQllbHNlIGlmIChJU19HRU45 KGRldl9wcml2KSB8fAo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5KSB8fAo+ICAJCSBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCXJldHVy biBwaXhlbF9yYXRlOwo+ICAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gQEAg LTIxNzYsNyArMjE3Niw3IEBAIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCWlmIChJU19DQU5OT05M QUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ICAJCQkvKiBEaXNw bGF5IFdBICMxMTQ1OiBnbGssY25sICovCj4gIAkJCW1pbl9jZGNsayA9IG1heCgzMTY4MDAsIG1p bl9jZGNsayk7Cj4gLQkJfSBlbHNlIGlmIChJU19HRU45KGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKSB7Cj4gKwkJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDkpIHx8IElT X0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQkJLyogRGlzcGxheSBXQSAjMTE0NDogc2tsLGJ4 dCAqLwo+ICAJCQltaW5fY2RjbGsgPSBtYXgoNDMyMDAwLCBtaW5fY2RjbGspOwo+ICAJCX0KPiBA QCAtMjUzNyw3ICsyNTM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9jb21wdXRlX21heF9kb3RjbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCXJldHVybiAy ICogbWF4X2NkY2xrX2ZyZXE7Cj4gLQllbHNlIGlmIChJU19HRU45KGRldl9wcml2KSB8fAo+ICsJ ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5KSB8fAo+ICAJCSBJU19CUk9BRFdFTEwoZGV2X3By aXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBtYXhfY2RjbGtfZnJlcTsK PiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IEBAIC0yNzg1LDkgKzI3ODUs OSBAQCB2b2lkIGludGVsX2luaXRfY2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayA9IGhzd19nZXRfY2Rj bGs7Cj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSB2bHZfZ2V0X2Nk Y2xrOwo+IC0JZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfSVZZQlJJREdFKGRldl9w cml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRl dl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBmaXhlZF80MDBtaHpf Z2V0X2NkY2xrOwo+IC0JZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJ U19HRU4oZGV2X3ByaXYsIDUpKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayA9IGZp eGVkXzQ1MG1oel9nZXRfY2RjbGs7Cj4gIAllbHNlIGlmIChJU19HTTQ1KGRldl9wcml2KSkKPiAg CQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBnbTQ1X2dldF9jZGNsazsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4IDY4ZjJmYjg5ZWNlMy4uYmY0ZmQ3MzliNjhjIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBAQCAtMzIyLDcgKzMyMiw3IEBAIGludGVsX2Ny dF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJICogREFD IGxpbWl0IHN1cHBvc2VkbHkgMzU1IE1Iei4KPiAgCQkgKi8KPiAgCQltYXhfY2xvY2sgPSAyNzAw MDA7Cj4gLQllbHNlIGlmIChJU19HRU4zKGRldl9wcml2KSB8fCBJU19HRU40KGRldl9wcml2KSkK PiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMykgfHwgSVNfR0VOKGRldl9wcml2LCA0KSkK PiAgCQltYXhfY2xvY2sgPSA0MDAwMDA7Cj4gIAllbHNlCj4gIAkJbWF4X2Nsb2NrID0gMzUwMDAw Owo+IEBAIC02NjYsNyArNjY2LDcgQEAgaW50ZWxfY3J0X2xvYWRfZGV0ZWN0KHN0cnVjdCBpbnRl bF9jcnQgKmNydCwgdWludDMyX3QgcGlwZSkKPiAgCS8qIFNldCB0aGUgYm9yZGVyIGNvbG9yIHRv IHB1cnBsZS4gKi8KPiAgCUk5MTVfV1JJVEUoYmNscnBhdF9yZWcsIDB4NTAwMDUwKTsKPiAgCj4g LQlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikp IHsKPiAgCQl1aW50MzJfdCBwaXBlY29uZiA9IEk5MTVfUkVBRChwaXBlY29uZl9yZWcpOwo+ICAJ CUk5MTVfV1JJVEUocGlwZWNvbmZfcmVnLCBwaXBlY29uZiB8IFBJUEVDT05GX0ZPUkNFX0JPUkRF Uik7Cj4gIAkJUE9TVElOR19SRUFEKHBpcGVjb25mX3JlZyk7Cj4gQEAgLTk4MSw3ICs5ODEsNyBA QCB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCWVsc2UKPiAgCQljcnQtPmJhc2UuY3J0Y19tYXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8 ICgxIDw8IDIpOwo+ICAKPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4o ZGV2X3ByaXYsIDIpKQo+ICAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAwOwo+ICAJ ZWxzZQo+ICAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAxOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IDFlNTYzMTkzMzRmMy4uMzMyNzkw Mjc5ZTFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4g QEAgLTc0OCw3ICs3NDgsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChz dHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMCkgewo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gIAkJCWluZm8t Pm51bV9zY2FsZXJzW3BpcGVdID0gMjsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikp IHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5KSkgewo+ICAJCWluZm8tPm51bV9z Y2FsZXJzW1BJUEVfQV0gPSAyOwo+ICAJCWluZm8tPm51bV9zY2FsZXJzW1BJUEVfQl0gPSAyOwo+ ICAJCWluZm8tPm51bV9zY2FsZXJzW1BJUEVfQ10gPSAxOwo+IEBAIC03NTYsMTAgKzc1NiwxMCBA QCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNl X2luZm8gKmluZm8pCj4gIAo+ICAJQlVJTERfQlVHX09OKEk5MTVfTlVNX0VOR0lORVMgPiBCSVRT X1BFUl9UWVBFKGludGVsX3JpbmdfbWFza190KSk7Cj4gIAo+IC0JaWYgKElTX0dFTjExKGRldl9w cml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDExKSkKPiAgCQlmb3JfZWFjaF9waXBlKGRl dl9wcml2LCBwaXBlKQo+ICAJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDY7Cj4gLQllbHNl IGlmIChJU19HRU4xMChkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gKwll bHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDEwKSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkK PiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ICAJCQlpbmZvLT5udW1fc3ByaXRl c1twaXBlXSA9IDM7Cj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+IEBAIC03 ODcsNyArNzg3LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0 IGludGVsX2RldmljZV9pbmZvICppbmZvKQo+ICAJCURSTV9JTkZPKCJEaXNwbGF5IGRpc2FibGVk IChtb2R1bGUgcGFyYW1ldGVyKVxuIik7Cj4gIAkJaW5mby0+bnVtX3BpcGVzID0gMDsKPiAgCX0g ZWxzZSBpZiAoSEFTX0RJU1BMQVkoZGV2X3ByaXYpICYmCj4gLQkJICAgKElTX0dFTjcoZGV2X3By aXYpIHx8IElTX0dFTjgoZGV2X3ByaXYpKSAmJgo+ICsJCSAgIChJU19HRU4oZGV2X3ByaXYsIDcp IHx8IElTX0dFTihkZXZfcHJpdiwgOCkpICYmCj4gIAkJICAgSEFTX1BDSF9TUExJVChkZXZfcHJp dikpIHsKPiAgCQl1MzIgZnVzZV9zdHJhcCA9IEk5MTVfUkVBRChGVVNFX1NUUkFQKTsKPiAgCQl1 MzIgc2Z1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoU0ZVU0VfU1RSQVApOwo+IEBAIC04MTEsNyArODEx LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGludGVsX2Rl dmljZV9pbmZvICppbmZvKQo+ICAJCQlEUk1fSU5GTygiUGlwZUMgZnVzZWQgb2ZmXG4iKTsKPiAg CQkJaW5mby0+bnVtX3BpcGVzIC09IDE7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChIQVNfRElTUExB WShkZXZfcHJpdikgJiYgSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSEFTX0RJ U1BMQVkoZGV2X3ByaXYpICYmIElTX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgCQl1MzIgZGZzbSA9 IEk5MTVfUkVBRChTS0xfREZTTSk7Cj4gIAkJdTggZGlzYWJsZWRfbWFzayA9IDA7Cj4gIAkJYm9v bCBpbnZhbGlkOwo+IEBAIC04NTEsMTQgKzg1MSwxNCBAQCB2b2lkIGludGVsX2RldmljZV9pbmZv X3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4gIAkJY2hlcnJ5 dmlld19zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKQo+ICAJCWJyb2Fkd2VsbF9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gLQll bHNlIGlmIChJU19HRU45KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwg OSkpCj4gIAkJZ2VuOV9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gLQllbHNlIGlmIChJU19H RU4xMChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDEwKSkKPiAgCQln ZW4xMF9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDExKQo+ICAJCWdlbjExX3NzZXVfaW5mb19pbml0KGRldl9wcml2KTsKPiAgCj4g LQlpZiAoSVNfR0VONihkZXZfcHJpdikgJiYgaW50ZWxfdnRkX2FjdGl2ZSgpKSB7Cj4gKwlpZiAo SVNfR0VOKGRldl9wcml2LCA2KSAmJiBpbnRlbF92dGRfYWN0aXZlKCkpIHsKPiAgCQlEUk1fSU5G TygiRGlzYWJsaW5nIHBwR1RUIGZvciBWVC1kIHN1cHBvcnRcbiIpOwo+ICAJCWluZm8tPnBwZ3R0 ID0gSU5URUxfUFBHVFRfTk9ORTsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gaW5kZXggMDdjODYxODg0YzcwLi4wN2RkYjA2ZmVjNjUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgYm9vbCBw aXBlX3NjYW5saW5lX2lzX21vdmluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAl1MzIgbGluZTEsIGxpbmUyOwo+ICAJdTMyIGxpbmVfbWFzazsKPiAgCj4gLQlpZiAoSVNf R0VOMihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlsaW5lX21h c2sgPSBEU0xfTElORU1BU0tfR0VOMjsKPiAgCWVsc2UKPiAgCQlsaW5lX21hc2sgPSBEU0xfTElO RU1BU0tfR0VOMzsKPiBAQCAtMTExMCw3ICsxMTEwLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Zk aV90eF9wbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl1 MzIgdmFsOwo+ICAKPiAgCS8qIElMSyBGREkgUExMIGlzIGFsd2F5cyBlbmFibGVkICovCj4gLQlp ZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgCQly ZXR1cm47Cj4gIAo+ICAJLyogT24gSGFzd2VsbCwgRERJIHBvcnRzIGFyZSByZXNwb25zaWJsZSBm b3IgdGhlIEZESSBQTEwgc2V0dXAgKi8KPiBAQCAtMTg1MCw3ICsxODUwLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZGlzYWJsZV9waXBlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfdGlsZV9zaXplKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JcmV0dXJuIElT X0dFTjIoZGV2X3ByaXYpID8gMjA0OCA6IDQwOTY7Cj4gKwlyZXR1cm4gSVNfR0VOKGRldl9wcml2 LCAyKSA/IDIwNDggOiA0MDk2Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgaW50Cj4gQEAg LTE4NjMsNyArMTg2Myw3IEBAIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSkKPiAgCWNhc2UgRFJNX0ZPUk1BVF9N T0RfTElORUFSOgo+ICAJCXJldHVybiBjcHA7Cj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJ TEVEOgo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2 LCAyKSkKPiAgCQkJcmV0dXJuIDEyODsKPiAgCQllbHNlCj4gIAkJCXJldHVybiA1MTI7Cj4gQEAg LTE4NzIsNyArMTg3Miw3IEBAIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSkKPiAgCQkJcmV0dXJuIDEyODsKPiAg CQkvKiBmYWxsIHRocm91Z2ggKi8KPiAgCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4g LQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IEhBU18xMjhfQllURV9ZX1RJTElORyhkZXZfcHJp dikpCj4gKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgMikgfHwgSEFTXzEyOF9CWVRFX1lfVElMSU5H KGRldl9wcml2KSkKPiAgCQkJcmV0dXJuIDEyODsKPiAgCQllbHNlCj4gIAkJCXJldHVybiA1MTI7 Cj4gQEAgLTMxOTMsOCArMzE5Myw4IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJZHNwY250ciA9IERJ U1BMQVlfUExBTkVfRU5BQkxFIHwgRElTUFBMQU5FX0dBTU1BX0VOQUJMRTsKPiAgCj4gLQlpZiAo SVNfRzRYKGRldl9wcml2KSB8fCBJU19HRU41KGRldl9wcml2KSB8fAo+IC0JICAgIElTX0dFTjYo ZGV2X3ByaXYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfRzRYKGRldl9w cml2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDUpIHx8Cj4gKwkgICAgSVNfR0VOKGRldl9wcml2LCA2 KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RS SUNLTEVfRkVFRF9ESVNBQkxFOwo+ICAKPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IEBAIC00MTIwLDcgKzQxMjAsNyBAQCBzdGF0aWMgdm9p ZCBnZW42X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJdGVtcCA9 IEk5MTVfUkVBRChyZWcpOwo+ICAJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsKPiAgCXRl bXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8yOwo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCXRlbXAgJj0gfkZESV9MSU5L X1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiAgCQkvKiBTTkItQiAqLwo+ICAJCXRlbXAgfD0gRkRJX0xJ TktfVFJBSU5fNDAwTVZfMERCX1NOQl9COwo+IEBAIC00OTE5LDEwICs0OTE5LDEwIEBAIHNrbF91 cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBib29sIGZv cmNlX2RldGFjaCwKPiAgCS8qIHJhbmdlIGNoZWNrcyAqLwo+ICAJaWYgKHNyY193IDwgU0tMX01J Tl9TUkNfVyB8fCBzcmNfaCA8IFNLTF9NSU5fU1JDX0ggfHwKPiAgCSAgICBkc3RfdyA8IFNLTF9N SU5fRFNUX1cgfHwgZHN0X2ggPCBTS0xfTUlOX0RTVF9IIHx8Cj4gLQkgICAgKElTX0dFTjExKGRl dl9wcml2KSAmJgo+ICsJICAgIChJU19HRU4oZGV2X3ByaXYsIDExKSAmJgo+ICAJICAgICAoc3Jj X3cgPiBJQ0xfTUFYX1NSQ19XIHx8IHNyY19oID4gSUNMX01BWF9TUkNfSCB8fAo+ICAJICAgICAg ZHN0X3cgPiBJQ0xfTUFYX0RTVF9XIHx8IGRzdF9oID4gSUNMX01BWF9EU1RfSCkpIHx8Cj4gLQkg ICAgKCFJU19HRU4xMShkZXZfcHJpdikgJiYKPiArCSAgICAoIUlTX0dFTihkZXZfcHJpdiwgMTEp ICYmCj4gIAkgICAgIChzcmNfdyA+IFNLTF9NQVhfU1JDX1cgfHwgc3JjX2ggPiBTS0xfTUFYX1NS Q19IIHx8Cj4gIAkgICAgICBkc3RfdyA+IFNLTF9NQVhfRFNUX1cgfHwgZHN0X2ggPiBTS0xfTUFY X0RTVF9IKSkpCXsKPiAgCQlEUk1fREVCVUdfS01TKCJzY2FsZXJfdXNlciBpbmRleCAldS4ldTog c3JjICV1eCV1IGRzdCAldXgldSAiCj4gQEAgLTUyMTMsNyArNTIxMyw3IEBAIGludGVsX3Bvc3Rf ZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJICogRklYTUU6IE5lZWQg dG8gZml4IHRoZSBsb2dpYyB0byB3b3JrIHdoZW4gd2UgdHVybiBvZmYgYWxsIHBsYW5lcwo+ICAJ ICogYnV0IGxlYXZlIHRoZSBwaXBlIHJ1bm5pbmcuCj4gIAkgKi8KPiAtCWlmIChJU19HRU4yKGRl dl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWludGVsX3NldF9jcHVf Zmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwo+ICAKPiAgCS8q IFVuZGVycnVucyBkb24ndCBhbHdheXMgcmFpc2UgaW50ZXJydXB0cywgc28gY2hlY2sgbWFudWFs bHkuICovCj4gQEAgLTUyMzQsNyArNTIzNCw3IEBAIGludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnlf bm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJICogR2VuMiByZXBvcnRzIHBpcGUg dW5kZXJydW5zIHdoZW5ldmVyIGFsbCBwbGFuZXMgYXJlIGRpc2FibGVkLgo+ICAJICogU28gZGlz YWJsZSB1bmRlcnJ1biByZXBvcnRpbmcgYmVmb3JlIGFsbCB0aGUgcGxhbmVzIGdldCBkaXNhYmxl ZC4KPiAgCSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZf cHJpdiwgMikpCj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZf cHJpdiwgcGlwZSwgZmFsc2UpOwo+ICAKPiAgCWhzd19kaXNhYmxlX2lwcyh0b19pbnRlbF9jcnRj X3N0YXRlKGNydGMtPnN0YXRlKSk7Cj4gQEAgLTUyOTIsNyArNTI5Miw3IEBAIHN0YXRpYyBib29s IG5lZWRzX252MTJfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJl dHVybiBmYWxzZTsKPiAgCj4gIAkvKiBXQSBEaXNwbGF5ICMwODI3OiBHZW45OmFsbCAqLwo+IC0J aWYgKElTX0dFTjkoZGV2X3ByaXYpICYmICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCWlm IChJU19HRU4oZGV2X3ByaXYsIDkpICYmICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQly ZXR1cm4gdHJ1ZTsKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTUzNjUsNyArNTM2NSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJCSAqIEdlbjIgcmVwb3J0cyBwaXBlIHVuZGVycnVucyB3 aGVuZXZlciBhbGwgcGxhbmVzIGFyZSBkaXNhYmxlZC4KPiAgCQkgKiBTbyBkaXNhYmxlIHVuZGVy cnVuIHJlcG9ydGluZyBiZWZvcmUgYWxsIHRoZSBwbGFuZXMgZ2V0IGRpc2FibGVkLgo+ICAJCSAq Lwo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSAmJiBvbGRfcHJpbWFyeV9zdGF0ZS0+dmlzaWJs ZSAmJgo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpICYmIG9sZF9wcmltYXJ5X3N0YXRlLT52 aXNpYmxlICYmCj4gIAkJICAgIChtb2Rlc2V0IHx8ICFuZXdfcHJpbWFyeV9zdGF0ZS0+YmFzZS52 aXNpYmxlKSkKPiAgCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZf cHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ICAJfQo+IEBAIC02MTg0LDcgKzYxODQsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZywKPiAgCj4gIAlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+ICAKPiAtCWlmICgh SVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJaW50 ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlwZSwgdHJ1ZSk7 Cj4gIAo+ICAJaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xk X3N0YXRlKTsKPiBAQCAtNjIzNiw3ICs2MjM2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rp c2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJICogT24g Z2VuMiBwbGFuZXMgYXJlIGRvdWJsZSBidWZmZXJlZCBidXQgdGhlIHBpcGUgaXNuJ3QsIHNvIHdl IG11c3QKPiAgCSAqIHdhaXQgZm9yIHBsYW5lcyB0byBmdWxseSB0dXJuIG9mZiBiZWZvcmUgZGlz YWJsaW5nIHRoZSBwaXBlLgo+ICAJICovCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlp ZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3By aXYsIHBpcGUpOwo+ICAKPiAgCWludGVsX2VuY29kZXJzX2Rpc2FibGUoY3J0Yywgb2xkX2NydGNf c3RhdGUsIG9sZF9zdGF0ZSk7Cj4gQEAgLTYyNjEsNyArNjI2MSw3IEBAIHN0YXRpYyB2b2lkIGk5 eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwK PiAgCj4gIAlpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKGNydGMsIG9sZF9jcnRjX3N0 YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAo IUlTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3Jl cG9ydGluZyhkZXZfcHJpdiwgcGlwZSwgZmFsc2UpOwo+ICAKPiAgCWlmICghZGV2X3ByaXYtPmRp c3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKQo+IEBAIC02ODY4LDcgKzY4NjgsNyBAQCBzdGF0aWMg Ym9vbCB0cmFuc2NvZGVyX2hhc19tMl9uMihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkgKiBTdHJpY3RseSBzcGVha2luZyBzb21lIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxl IGJlZm9yZQo+ICAJICogZ2VuNywgYnV0IHdlIG9ubHkgc3VwcG9ydCBEUlJTIG9uIGdlbjcrCj4g IAkgKi8KPiAtCXJldHVybiBJU19HRU43KGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9w cml2KTsKPiArCXJldHVybiBJU19HRU4oZGV2X3ByaXYsIDcpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRf bV9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IEBAIC05MDA1 LDcgKzkwMDUsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9nZXRfcGZpdF9jb25maWcoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gIAkJLyogV2UgY3VycmVudGx5IGRvIG5vdCBmcmVlIGFzc2ln bmVtZW50cyBvZiBwYW5lbCBmaXR0ZXJzIG9uCj4gIAkJICogaXZiL2hzdyAoc2luY2Ugd2UgZG9u J3QgdXNlIHRoZSBoaWdoZXIgdXBzY2FsaW5nIG1vZGVzIHdoaWNoCj4gIAkJICogZGlmZmVyZW50 aWF0ZXMgdGhlbSkgc28ganVzdCBXQVJOIGFib3V0IHRoaXMgY2FzZSBmb3Igbm93LiAqLwo+IC0J CWlmIChJU19HRU43KGRldl9wcml2KSkgewo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDcpKSB7 Cj4gIAkJCVdBUk5fT04oKHRtcCAmIFBGX1BJUEVfU0VMX01BU0tfSVZCKSAhPQo+ICAJCQkJUEZf UElQRV9TRUxfSVZCKGNydGMtPnBpcGUpKTsKPiAgCQl9Cj4gQEAgLTk5OTUsNyArOTk5NSw3IEBA IHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAl1MzIgY250bCA9IDA7Cj4gIAo+IC0JaWYgKElT X0dFTjYoZGV2X3ByaXYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VO KGRldl9wcml2LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAJCWNudGwgfD0gTUNV UlNPUl9UUklDS0xFX0ZFRURfRElTQUJMRTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8PSAxMCkgewo+IEBAIC0xMDQ2OCw3ICsxMDQ2OCw3IEBAIHN0YXRpYyBpbnQgaTl4eF9wbGxf cmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJuIGRldl9wcml2LT52YnQu bHZkc19zc2NfZnJlcTsKPiAgCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKQo+ICAJ CXJldHVybiAxMjAwMDA7Cj4gLQllbHNlIGlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwllbHNl IGlmICghSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlyZXR1cm4gOTYwMDA7Cj4gIAllbHNlCj4g IAkJcmV0dXJuIDQ4MDAwOwo+IEBAIC0xMDUwMSw3ICsxMDUwMSw3IEBAIHN0YXRpYyB2b2lkIGk5 eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJY2xvY2subTIg PSAoZnAgJiBGUF9NMl9ESVZfTUFTSykgPj4gRlBfTTJfRElWX1NISUZUOwo+ICAJfQo+ICAKPiAt CWlmICghSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCWlmICghSVNfR0VOKGRldl9wcml2LCAyKSkg ewo+ICAJCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCj4gIAkJCWNsb2NrLnAxID0gZmZzKChk cGxsICYgRFBMTF9GUEEwMV9QMV9QT1NUX0RJVl9NQVNLX1BJTkVWSUVXKSA+Pgo+ICAJCQkJRFBM TF9GUEEwMV9QMV9QT1NUX0RJVl9TSElGVF9QSU5FVklFVyk7Cj4gQEAgLTEwODE3LDcgKzEwODE3 LDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCSAqIHRoZSB3L2Egb24gYWxsIHRocmVl IHBsYXRmb3Jtcy4KPiAgCSAqLwo+ICAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9TUFJJVEUwICYm Cj4gLQkgICAgKElTX0dFTjUoZGV2X3ByaXYpIHx8IElTX0dFTjYoZGV2X3ByaXYpIHx8Cj4gKwkg ICAgKElTX0dFTihkZXZfcHJpdiwgNSkgfHwgSVNfR0VOKGRldl9wcml2LCA2KSB8fAo+ICAJICAg ICBJU19JVllCUklER0UoZGV2X3ByaXYpKSAmJgo+ICAJICAgICh0dXJuX29uIHx8ICghbmVlZHNf c2NhbGluZyhvbGRfcGxhbmVfc3RhdGUpICYmCj4gIAkJCSBuZWVkc19zY2FsaW5nKHRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKSkpKSkKPiBAQCAtMTIzNzgsNyArMTIzNzgsNyBAQCBz dGF0aWMgdm9pZCB1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJICogSG93ZXZlciBpZiBxdWVyaWVkIGp1c3QgYmVmb3Jl IHRoZSBzdGFydCBvZiB2Ymxhbmsgd2UnbGwgZ2V0IGFuCj4gIAkgKiBhbnN3ZXIgdGhhdCdzIHNs aWdodGx5IGluIHRoZSBmdXR1cmUuCj4gIAkgKi8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkg ewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gIAkJaW50IHZ0b3RhbDsKPiAgCj4gQEAgLTEzNTc4LDcgKzEzNTc4LDcgQEAgdm9pZCBp bnRlbF9jcnRjX2FybV9maWZvX3VuZGVycnVuKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKPiAgCj4gLQlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKCFJU19HRU4o ZGV2X3ByaXYsIDIpKQo+ICAJCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmco ZGV2X3ByaXYsIGNydGMtPnBpcGUsIHRydWUpOwo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5oYXNf cGNoX2VuY29kZXIpIHsKPiBAQCAtMTQxODUsNyArMTQxODUsNyBAQCBzdGF0aWMgYm9vbCBoYXNf ZWRwX2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKChJOTE1X1JF QUQoRFBfQSkgJiBEUF9ERVRFQ1RFRCkgPT0gMCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0J aWYgKElTX0dFTjUoZGV2X3ByaXYpICYmIChJOTE1X1JFQUQoRlVTRV9TVFJBUCkgJiBJTEtfZURQ X0FfRElTQUJMRSkpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA1KSAmJiAoSTkxNV9SRUFEKEZV U0VfU1RSQVApICYgSUxLX2VEUF9BX0RJU0FCTEUpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4g IAlyZXR1cm4gdHJ1ZTsKPiBAQCAtMTQzOTcsNyArMTQzOTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQl9 Cj4gIAo+ICAJCXZsdl9kc2lfaW5pdChkZXZfcHJpdik7Cj4gLQl9IGVsc2UgaWYgKCFJU19HRU4y KGRldl9wcml2KSAmJiAhSVNfUElORVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKCFJ U19HRU4oZGV2X3ByaXYsIDIpICYmICFJU19QSU5FVklFVyhkZXZfcHJpdikpIHsKPiAgCQlib29s IGZvdW5kID0gZmFsc2U7Cj4gIAo+ICAJCWlmIChJOTE1X1JFQUQoR0VOM19TRFZPQikgJiBTRFZP X0RFVEVDVEVEKSB7Cj4gQEAgLTE0NDMxLDcgKzE0NDMxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf c2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJ CWlmIChJU19HNFgoZGV2X3ByaXYpICYmIChJOTE1X1JFQUQoRFBfRCkgJiBEUF9ERVRFQ1RFRCkp Cj4gIAkJCWludGVsX2RwX2luaXQoZGV2X3ByaXYsIERQX0QsIFBPUlRfRCk7Cj4gLQl9IGVsc2Ug aWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIp KQo+ICAJCWludGVsX2R2b19pbml0KGRldl9wcml2KTsKPiAgCj4gIAlpZiAoU1VQUE9SVFNfVFYo ZGV2X3ByaXYpKQo+IEBAIC0xNDYyOSw3ICsxNDYyOSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJh bWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAo+ICAJCSAq IHJlcXVpcmUgdGhlIGVudGlyZSBmYiB0byBhY2NvbW1vZGF0ZSB0aGF0IHRvIGF2b2lkCj4gIAkJ ICogcG90ZW50aWFsIHJ1bnRpbWUgZXJyb3JzIGF0IHBsYW5lIGNvbmZpZ3VyYXRpb24gdGltZS4K PiAgCQkgKi8KPiAtCQlpZiAoSVNfR0VOOShkZXZfcHJpdikgJiYgaSA9PSAwICYmIGZiLT53aWR0 aCA+IDM4NDAgJiYKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJiBpID09IDAgJiYgZmIt PndpZHRoID4gMzg0MCAmJgo+ICAJCSAgICBpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkK PiAgCQkJc3RyaWRlX2FsaWdubWVudCAqPSA0Owo+ICAKPiBAQCAtMTQ4MzQsNyArMTQ4MzQsNyBA QCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2NrID0gcG52 X2NydGNfY29tcHV0ZV9jbG9jazsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZSA9 IGk5eHhfY3J0Y19lbmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0g aTl4eF9jcnRjX2Rpc2FibGU7Cj4gLQl9IGVsc2UgaWYgKCFJU19HRU4yKGRldl9wcml2KSkgewo+ ICsJfSBlbHNlIGlmICghSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAJCWRldl9wcml2LT5kaXNw bGF5LmdldF9waXBlX2NvbmZpZyA9IGk5eHhfZ2V0X3BpcGVfY29uZmlnOwo+ICAJCWRldl9wcml2 LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5lX2NvbmZpZyA9Cj4gIAkJCWk5eHhfZ2V0X2luaXRp YWxfcGxhbmVfY29uZmlnOwo+IEBAIC0xNDg1MCw5ICsxNDg1MCw5IEBAIHZvaWQgaW50ZWxfaW5p dF9kaXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpOXh4X2NydGNfZGlzYWJsZTsKPiAgCX0K PiAgCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYs IDUpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBpcm9ubGFrZV9m ZGlfbGlua190cmFpbjsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmZk aV9saW5rX3RyYWluID0gZ2VuNl9mZGlfbGlua190cmFpbjsKPiAgCX0gZWxzZSBpZiAoSVNfSVZZ QlJJREdFKGRldl9wcml2KSkgewo+ICAJCS8qIEZJWE1FOiBkZXRlY3QgQjArIHN0ZXBwaW5nIGFu ZCB1c2UgYXV0byB0cmFpbmluZyAqLwo+IEBAIC0xNDk4NCwxMiArMTQ5ODQsMTIgQEAgc3RhdGlj IHZvaWQgc2FuaXRpemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAg c3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2ZkaV9wbGxfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICsJaWYg KElTX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgCQl1MzIgZmRpX3BsbF9jbGsgPQo+ICAJCQlJOTE1 X1JFQUQoRkRJX1BMTF9CSU9TXzApICYgRkRJX1BMTF9GQl9DTE9DS19NQVNLOwo+ICAKPiAgCQlk ZXZfcHJpdi0+ZmRpX3BsbF9mcmVxID0gKGZkaV9wbGxfY2xrICsgMikgKiAxMDAwMDsKPiAtCX0g ZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkgewo+ ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJp dikpIHsKPiAgCQlkZXZfcHJpdi0+ZmRpX3BsbF9mcmVxID0gMjcwMDAwOwo+ICAJfSBlbHNlIHsK PiAgCQlyZXR1cm47Cj4gQEAgLTE1MTA1LDEwICsxNTEwNSwxMCBAQCBpbnQgaW50ZWxfbW9kZXNl dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl9Cj4gIAo+ICAJLyogbWF4aW11bSBm cmFtZWJ1ZmZlciBkaW1lbnNpb25zICovCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiAr CWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lk dGggPSAyMDQ4Owo+ICAJCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIwNDg7Cj4gLQl9 IGVsc2UgaWYgKElTX0dFTjMoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZf cHJpdiwgMykpIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDQwOTY7Cj4gIAkJ ZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5NjsKPiAgCX0gZWxzZSB7Cj4gQEAgLTE1 MTE5LDcgKzE1MTE5LDcgQEAgaW50IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJaWYgKElTX0k4NDVHKGRldl9wcml2KSB8fCBJU19JODY1RyhkZXZfcHJpdikp IHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93aWR0aCA9IElTX0k4NDVHKGRldl9wcml2 KSA/IDY0IDogNTEyOwo+ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hlaWdodCA9IDEwMjM7 Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dF TihkZXZfcHJpdiwgMikpIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93aWR0aCA9IDY0 Owo+ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hlaWdodCA9IDY0Owo+ICAJfSBlbHNlIHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCBkZTQyMTk3MjFjYmMuLjJlMGNjYmZiNWMy ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0zNDQsNyArMzQ0LDcgQEAgaW50 ZWxfZHBfc2V0X3NvdXJjZV9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKPiAgCQlzb3VyY2VfcmF0ZXMgPSBjbmxfcmF0 ZXM7Cj4gIAkJc2l6ZSA9IEFSUkFZX1NJWkUoY25sX3JhdGVzKTsKPiAtCQlpZiAoSVNfR0VOMTAo ZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2X3ByaXYsIDEwKSkKPiAgCQkJbWF4X3JhdGUg PSBjbmxfbWF4X3NvdXJjZV9yYXRlKGludGVsX2RwKTsKPiAgCQllbHNlCj4gIAkJCW1heF9yYXRl ID0gaWNsX21heF9zb3VyY2VfcmF0ZShpbnRlbF9kcCk7Cj4gQEAgLTExMjgsNyArMTEyOCw3IEBA IHN0YXRpYyB1aW50MzJfdCBnNHhfZ2V0X2F1eF9zZW5kX2N0bChzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAo+ICAJCQl0b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAg CXVpbnQzMl90IHByZWNoYXJnZSwgdGltZW91dDsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJp dikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlwcmVjaGFyZ2UgPSAzOwo+ICAJ ZWxzZQo+ICAJCXByZWNoYXJnZSA9IDU7Cj4gQEAgLTI1ODUsNyArMjU4NSw3IEBAIHN0YXRpYyB2 b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAKPiAgCXBwX2N0 cmxfcmVnID0gX3BwX2N0cmxfcmVnKGludGVsX2RwKTsKPiAgCXBwID0gaXJvbmxha2VfZ2V0X3Bw X2NvbnRyb2woaW50ZWxfZHApOwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gKwlpZiAo SVNfR0VOKGRldl9wcml2LCA1KSkgewo+ICAJCS8qIElMSyB3b3JrYXJvdW5kOiBkaXNhYmxlIHJl c2V0IGFyb3VuZCBwb3dlciBzZXF1ZW5jZSAqLwo+ICAJCXBwICY9IH5QQU5FTF9QT1dFUl9SRVNF VDsKPiAgCQlJOTE1X1dSSVRFKHBwX2N0cmxfcmVnLCBwcCk7Cj4gQEAgLTI1OTMsNyArMjU5Myw3 IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ICAJfQo+ICAKPiAgCXBwIHw9IFBBTkVMX1BPV0VSX09OOwo+IC0JaWYgKCFJU19HRU41KGRldl9w cml2KSkKPiArCWlmICghSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlwcCB8PSBQQU5FTF9QT1dF Ul9SRVNFVDsKPiAgCj4gIAlJOTE1X1dSSVRFKHBwX2N0cmxfcmVnLCBwcCk7Cj4gQEAgLTI2MDIs NyArMjYwMiw3IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ICAJd2FpdF9wYW5lbF9vbihpbnRlbF9kcCk7Cj4gIAlpbnRlbF9kcC0+bGFzdF9w b3dlcl9vbiA9IGppZmZpZXM7Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gKwlp ZiAoSVNfR0VOKGRldl9wcml2LCA1KSkgewo+ICAJCXBwIHw9IFBBTkVMX1BPV0VSX1JFU0VUOyAv KiByZXN0b3JlIHBhbmVsIHJlc2V0IGJpdCAqLwo+ICAJCUk5MTVfV1JJVEUocHBfY3RybF9yZWcs IHBwKTsKPiAgCQlQT1NUSU5HX1JFQUQocHBfY3RybF9yZWcpOwo+IEBAIC0yODMxLDcgKzI4MzEs NyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lZHBfcGxsX29uKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gIAkgKiAxLiBXYWl0IGZvciB0aGUgc3RhcnQgb2YgdmVydGljYWwgYmxhbmsgb24g dGhlIGVuYWJsZWQgcGlwZSBnb2luZyB0byBGREkKPiAgCSAqIDIuIFByb2dyYW0gRFAgUExMIGVu YWJsZQo+ICAJICovCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRl dl9wcml2LCA1KSkKPiAgCQlpbnRlbF93YWl0X2Zvcl92YmxhbmtfaWZfYWN0aXZlKGRldl9wcml2 LCAhY3J0Yy0+cGlwZSk7Cj4gIAo+ICAJaW50ZWxfZHAtPkRQIHw9IERQX1BMTF9FTkFCTEU7Cj4g QEAgLTM4NDksNyArMzg0OSw3IEBAIGludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gIAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikg JiYgcG9ydCA9PSBQT1JUX0EpIHsKPiAgCQlzaWduYWxfbGV2ZWxzID0gaXZiX2NwdV9lZHBfc2ln bmFsX2xldmVscyh0cmFpbl9zZXQpOwo+ICAJCW1hc2sgPSBFRFBfTElOS19UUkFJTl9WT0xfRU1Q X01BU0tfSVZCOwo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRldl9wcml2KSAmJiBwb3J0ID09IFBP UlRfQSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpICYmIHBvcnQgPT0gUE9S VF9BKSB7Cj4gIAkJc2lnbmFsX2xldmVscyA9IHNuYl9jcHVfZWRwX3NpZ25hbF9sZXZlbHModHJh aW5fc2V0KTsKPiAgCQltYXNrID0gRURQX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLX1NOQjsKPiAg CX0gZWxzZSB7Cj4gQEAgLTUyNzEsMTcgKzUyNzEsMTcgQEAgYm9vbCBpbnRlbF9kaWdpdGFsX3Bv cnRfY29ubmVjdGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICAJCXJldHVybiBpY2xfZGlnaXRhbF9wb3J0X2Nv bm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElTX0dFTjEwKGRldl9wcml2KSB8fCBJU19H RU45X0JDKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTApIHx8IElT X0dFTjlfQkMoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBzcHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3Rl ZChlbmNvZGVyKTsKPiAgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCXJldHVy biBieHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElTX0dF TjgoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA4KSkKPiAgCQlyZXR1 cm4gYmR3X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChJU19H RU43KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNykpCj4gIAkJcmV0 dXJuIGl2Yl9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGVuY29kZXIpOwo+IC0JZWxzZSBpZiAoSVNf R0VONihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQo+ICAJCXJl dHVybiBzbmJfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElT X0dFTjUoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgCQly ZXR1cm4gaWxrX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gIAo+ICAJTUlTU0lO R19DQVNFKElOVEVMX0dFTihkZXZfcHJpdikpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCj4gaW5kZXggZmU1ZTg3YjZlMWFmLi44ZmY3OTRkYjc4ODEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC00MzgsNyArNDM4LDcgQEAgdm9p ZCBpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCB1MzIgc2Vxbm8pCj4gIAkgKiB0aGUgc2VtYXBob3JlIHZhbHVlLCB0aGVuIHdoZW4g dGhlIHNlcW5vIG1vdmVzIGJhY2t3YXJkcyBhbGwKPiAgCSAqIGZ1dHVyZSB3YWl0cyB3aWxsIGNv bXBsZXRlIGluc3RhbnRseSAoY2F1c2luZyByZW5kZXJpbmcgY29ycnVwdGlvbikuCj4gIAkgKi8K PiAtCWlmIChJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSkgewo+ICsJaWYg KElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfR0VOKGRldl9wcml2LCA3KSkgewo+ICAJCUk5MTVf V1JJVEUoUklOR19TWU5DXzAoZW5naW5lLT5tbWlvX2Jhc2UpLCAwKTsKPiAgCQlJOTE1X1dSSVRF KFJJTkdfU1lOQ18xKGVuZ2luZS0+bW1pb19iYXNlKSwgMCk7Cj4gIAkJaWYgKEhBU19WRUJPWChk ZXZfcHJpdikpCj4gQEAgLTc3NCw3ICs3NzQsNyBAQCB1MzIgaW50ZWxfY2FsY3VsYXRlX21jcl9z X3NzX3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl1MzIgc2xp Y2UgPSBmbHMoc3NldS0+c2xpY2VfbWFzayk7Cj4gIAl1MzIgc3Vic2xpY2UgPSBmbHMoc3NldS0+ c3Vic2xpY2VfbWFza1tzbGljZV0pOwo+ICAKPiAtCWlmIChJU19HRU4xMChkZXZfcHJpdikpCj4g KwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCkpCj4gIAkJbWNyX3Nfc3Nfc2VsZWN0ID0gR0VOOF9N Q1JfU0xJQ0Uoc2xpY2UpIHwKPiAgCQkJCSAgR0VOOF9NQ1JfU1VCU0xJQ0Uoc3Vic2xpY2UpOwo+ ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwo+IGluZGV4IGI1N2UzMWZjMGYxZS4uMWQzZmYwMjZkMWJjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgaW50IGludGVsX2Zi Y19jYWxjdWxhdGVfY2ZiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJaW50IGxpbmVzOwo+ICAKPiAgCWludGVsX2ZiY19nZXRfcGxhbmVfc291cmNlX3NpemUoY2Fj aGUsIE5VTEwsICZsaW5lcyk7Cj4gLQlpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gKwlpZiAoSVNf R0VOKGRldl9wcml2LCA3KSkKPiAgCQlsaW5lcyA9IG1pbihsaW5lcywgMjA0OCk7Cj4gIAllbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gIAkJbGluZXMgPSBtaW4obGluZXMsIDI1 NjApOwo+IEBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIHZvaWQgaTh4eF9mYmNfYWN0aXZhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWNmYl9waXRjaCA9IHBhcmFt cy0+ZmIuc3RyaWRlOwo+ICAKPiAgCS8qIEZCQ19DVEwgd2FudHMgMzJCIG9yIDY0QiB1bml0cyAq Lwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikp Cj4gIAkJY2ZiX3BpdGNoID0gKGNmYl9waXRjaCAvIDMyKSAtIDE7Cj4gIAllbHNlCj4gIAkJY2Zi X3BpdGNoID0gKGNmYl9waXRjaCAvIDY0KSAtIDE7Cj4gQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0 aWMgdm9pZCBpOHh4X2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlmb3IgKGkgPSAwOyBpIDwgKEZCQ19MTF9TSVpFIC8gMzIpICsgMTsgaSsrKQo+ICAJ CUk5MTVfV1JJVEUoRkJDX1RBRyhpKSwgMCk7Cj4gIAo+IC0JaWYgKElTX0dFTjQoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkgewo+ICAJCXUzMiBmYmNfY3RsMjsKPiAg Cj4gIAkJLyogU2V0IGl0IHVwLi4uICovCj4gQEAgLTIzMyw5ICsyMzMsOSBAQCBzdGF0aWMgdm9p ZCBpbGtfZmJjX2FjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg Cj4gIAlpZiAocGFyYW1zLT5mbGFncyAmIFBMQU5FX0hBU19GRU5DRSkgewo+ICAJCWRwZmNfY3Rs IHw9IERQRkNfQ1RMX0ZFTkNFX0VOOwo+IC0JCWlmIChJU19HRU41KGRldl9wcml2KSkKPiArCQlp ZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgCQkJZHBmY19jdGwgfD0gcGFyYW1zLT52bWEtPmZl bmNlLT5pZDsKPiAtCQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCQlpZiAoSVNfR0VOKGRl dl9wcml2LCA2KSkgewo+ICAJCQlJOTE1X1dSSVRFKFNOQl9EUEZDX0NUTF9TQSwKPiAgCQkJCSAg IFNOQl9DUFVfRkVOQ0VfRU5BQkxFIHwKPiAgCQkJCSAgIHBhcmFtcy0+dm1hLT5mZW5jZS0+aWQp Owo+IEBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgaWxrX2ZiY19hY3RpdmF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCQkgICBwYXJhbXMtPmNydGMuZmVu Y2VfeV9vZmZzZXQpOwo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gLQkJaWYgKElTX0dFTjYoZGV2X3By aXYpKSB7Cj4gKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpIHsKPiAgCQkJSTkxNV9XUklURShT TkJfRFBGQ19DVExfU0EsIDApOwo+ICAJCQlJOTE1X1dSSVRFKERQRkNfQ1BVX0ZFTkNFX09GRlNF VCwgMCk7Cj4gIAkJfQo+IEBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgZ2VuN19mYmNf YWN0aXZhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50IHRocmVz aG9sZCA9IGRldl9wcml2LT5mYmMudGhyZXNob2xkOwo+ICAKPiAgCS8qIERpc3BsYXkgV0EgIzA1 Mjk6IHNrbCwga2JsLCBieHQuICovCj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikgJiYgIUlTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJiAhSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQl1MzIgdmFsID0gSTkxNV9SRUFEKENISUNLRU5f TUlTQ180KTsKPiAgCj4gIAkJdmFsICY9IH4oRkJDX1NUUklERV9PVkVSUklERSB8IEZCQ19TVFJJ REVfTUFTSyk7Cj4gQEAgLTU4MSwxMCArNTgxLDEwIEBAIHN0YXRpYyBib29sIHN0cmlkZV9pc192 YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAoc3RyaWRlIDwg NTEyKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwg SVNfR0VOMyhkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSB8fCBJU19HRU4o ZGV2X3ByaXYsIDMpKQo+ICAJCXJldHVybiBzdHJpZGUgPT0gNDA5NiB8fCBzdHJpZGUgPT0gODE5 MjsKPiAgCj4gLQlpZiAoSVNfR0VONChkZXZfcHJpdikgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYg c3RyaWRlIDwgMjA0OCkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDQpICYmICFJU19HNFgoZGV2 X3ByaXYpICYmIHN0cmlkZSA8IDIwNDgpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWlmIChz dHJpZGUgPiAxNjM4NCkKPiBAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIHBpeGVsX2Zv cm1hdF9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAljYXNl IERSTV9GT1JNQVRfWFJHQjE1NTU6Cj4gIAljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ICAJCS8q IDE2YnBwIG5vdCBzdXBwb3J0ZWQgb24gZ2VuMiAqLwo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2 KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJ CS8qIFdhRmJjT25seTF0bzFSYXRpbzpjdGcgKi8KPiAgCQlpZiAoSVNfRzRYKGRldl9wcml2KSkK PiBAQCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY19nZXRfcmVnX3BhcmFt cyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlwYXJhbXMtPmNmYl9zaXplID0gaW50 ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShkZXZfcHJpdiwgY2FjaGUpOwo+ICAKPiAtCWlmIChJ U19HRU45KGRldl9wcml2KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNf R0VOKGRldl9wcml2LCA5KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJcGFyYW1z LT5nZW45X3dhX2NmYl9zdHJpZGUgPSBESVZfUk9VTkRfVVAoY2FjaGUtPnBsYW5lLnNyY193LAo+ ICAJCQkJCQkzMiAqIGZiYy0+dGhyZXNob2xkKSAqIDg7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gaW5kZXggNzdjMTIzY2M4ODE3Li5mZjI3NDNj Y2JlY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRl cnJ1bi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5j Cj4gQEAgLTI2MCw5ICsyNjAsOSBAQCBzdGF0aWMgYm9vbCBfX2ludGVsX3NldF9jcHVfZmlmb191 bmRlcnJ1bl9yZXBvcnRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlpZiAoSEFT X0dNQ0hfRElTUExBWShkZXZfcHJpdikpCj4gIAkJaTl4eF9zZXRfZmlmb191bmRlcnJ1bl9yZXBv cnRpbmcoZGV2LCBwaXBlLCBlbmFibGUsIG9sZCk7Cj4gLQllbHNlIGlmIChJU19HRU41KGRldl9w cml2KSB8fCBJU19HRU42KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwg NSkgfHwgSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlpcm9ubGFrZV9zZXRfZmlmb191bmRlcnJ1 bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUpOwo+IC0JZWxzZSBpZiAoSVNfR0VONyhkZXZf cHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDcpKQo+ICAJCWl2eWJyaWRnZV9z ZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUsIG9sZCk7Cj4gIAll bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gIAkJYnJvYWR3ZWxsX3NldF9maWZv X3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSk7Cj4gQEAgLTQyMyw3ICs0MjMs NyBAQCB2b2lkIGludGVsX2NoZWNrX2NwdV9maWZvX3VuZGVycnVucyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2 KSkKPiAgCQkJaTl4eF9jaGVja19maWZvX3VuZGVycnVucyhjcnRjKTsKPiAtCQllbHNlIGlmIChJ U19HRU43KGRldl9wcml2KSkKPiArCQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDcpKQo+ICAJ CQlpdnlicmlkZ2VfY2hlY2tfZmlmb191bmRlcnJ1bnMoY3J0Yyk7Cj4gIAl9Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZncuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jCj4gaW5kZXggYTY3MTQ0ZWU1Y2ViLi40YjQzN2UwNWUy Y2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZncuYwo+IEBAIC0xMTUsNyArMTE1 LDcgQEAgc3RhdGljIHZvaWQgZ3VjX3ByZXBhcmVfeGZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cj4gIAllbHNlCj4gIAkJSTkxNV9XUklURShHRU45X0dUX1BNX0NPTkZJRywgR1RfRE9PUkJFTExf RU5BQkxFKTsKPiAgCj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4o ZGV2X3ByaXYsIDkpKSB7Cj4gIAkJLyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBj bG9ja3MgKi8KPiAgCQlJOTE1X1dSSVRFKEdFTjdfTUlTQ0NQQ1RMLCAoR0VOOF9ET1BfQ0xPQ0tf R0FURV9HVUNfRU5BQkxFIHwKPiAgCQkJCQkgICAgSTkxNV9SRUFEKEdFTjdfTUlTQ0NQQ1RMKSkp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jCj4gaW5kZXggNDE5MjFhODQz ZDQyLi40OTVmYTE0NWYzN2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hl Y2suYwo+IEBAIC0yMzYsNyArMjM2LDcgQEAgZW5naW5lX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgdTY0IGFjdGhkKQo+ICAJaWYgKGhhICE9IEVOR0lORV9ERUFEKQo+ICAJ CXJldHVybiBoYTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VO KGRldl9wcml2LCAyKSkKPiAgCQlyZXR1cm4gRU5HSU5FX0RFQUQ7Cj4gIAo+ICAJLyogSXMgdGhl IGNoaXAgaGFuZ2luZyBvbiBhIFdBSVRfRk9SX0VWRU5UPwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCj4gaW5kZXggZDdmYTMwMWI1ZWM3Li45Y2I4ZmI4ZjE5ODIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+IEBAIC0yMDAyLDcgKzIwMDIsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1p dF9mbHVzaF9yZW5kZXIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKPiAgCQkgKiBPbiBH RU45OiBiZWZvcmUgVkZfQ0FDSEVfSU5WQUxJREFURSB3ZSBuZWVkIHRvIGVtaXQgYSBOVUxMCj4g IAkJICogcGlwZSBjb250cm9sLgo+ICAJCSAqLwo+IC0JCWlmIChJU19HRU45KHJlcXVlc3QtPmk5 MTUpKQo+ICsJCWlmIChJU19HRU4ocmVxdWVzdC0+aTkxNSwgOSkpCj4gIAkJCXZmX2ZsdXNoX3dh ID0gdHJ1ZTsKPiAgCj4gIAkJLyogV2FGb3JHQU1IYW5nOmtibCAqLwo+IEBAIC0yMzU3LDcgKzIz NTcsNyBAQCBtYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ ICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3Vy IG9uIHRoZSBmaXJzdAo+ICAJICogc2xpY2UuCj4gIAkgKi8KPiAtCWlmIChJU19HRU4xMShkZXZf cHJpdikgJiYgc2xpY2VzID09IDEgJiYgc3Vic2xpY2VzID49IDQpIHsKPiArCWlmIChJU19HRU4o ZGV2X3ByaXYsIDExKSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgewo+ICAJCUdF TV9CVUdfT04oc3Vic2xpY2VzICYgMSk7Cj4gIAo+ICAJCXN1YnNsaWNlX3BnID0gZmFsc2U7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IGluZGV4IGU2YzVkOTg1ZWEwYS4uYjg1ZTE5NWY3 YzhhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IEBAIC0yNzksNyArMjc5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX2VuYWJsZV9sdmRzKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICAJICogc3BlY2lhbCBsdmRzIGRpdGhlciBjb250cm9sIGJpdCBvbiBwY2gt c3BsaXQgcGxhdGZvcm1zLCBkaXRoZXJpbmcgaXMKPiAgCSAqIG9ubHkgY29udHJvbGxlZCB0aHJv dWdoIHRoZSBQSVBFQ09ORiByZWcuCj4gIAkgKi8KPiAtCWlmIChJU19HRU40KGRldl9wcml2KSkg ewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNCkpIHsKPiAgCQkvKgo+ICAJCSAqIEJzcGVjIHdv cmRpbmcgc3VnZ2VzdHMgdGhhdCBMVkRTIHBvcnQgZGl0aGVyaW5nIG9ubHkgZXhpc3RzCj4gIAkJ ICogZm9yIDE4YnBwIHBhbmVscy4KPiBAQCAtOTE5LDcgKzkxOSw3IEBAIHZvaWQgaW50ZWxfbHZk c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludGVsX2VuY29k ZXItPmNsb25lYWJsZSA9IDA7Cj4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCj4gIAkJ aW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIp Owo+IC0JZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU4oZGV2 X3ByaXYsIDQpKQo+ICAJCWludGVsX2VuY29kZXItPmNydGNfbWFzayA9ICgxIDw8IDApIHwgKDEg PDwgMSk7Cj4gIAllbHNlCj4gIAkJaW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEgPDwgMSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IGluZGV4IDc3ZTk4NzFhOGM5YS4uZTk3NmM1 Y2U1NDc5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IEBAIC0xOTMsNyArMTkz LDcgQEAgc3RhdGljIGJvb2wgZ2V0X21vY3Nfc2V0dGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJfQo+ICAKPiAgCS8qIFdhRGlzYWJsZVNraXBDYWNoaW5nOnNrbCxi eHQsa2JsLGdsayAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VO KGRldl9wcml2LCA5KSkgewo+ICAJCWludCBpOwo+ICAKPiAgCQlmb3IgKGkgPSAwOyBpIDwgdGFi bGUtPnNpemU7IGkrKykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gaW5kZXgg MjBlYTdjOTlkMTNhLi5jMTUzYmUwNDMwNzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jCj4gQEAgLTU0MSw3ICs1NDEsNyBAQCBzdGF0aWMgdTMyIGNhbGNfc3dpZHRoc3co c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgb2Zmc2V0LCB1MzIgd2lkdAo+ ICB7Cj4gIAl1MzIgc3c7Cj4gIAo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKElT X0dFTihkZXZfcHJpdiwgMikpCj4gIAkJc3cgPSBBTElHTigob2Zmc2V0ICYgMzEpICsgd2lkdGgs IDMyKTsKPiAgCWVsc2UKPiAgCQlzdyA9IEFMSUdOKChvZmZzZXQgJiA2MykgKyB3aWR0aCwgNjQp Owo+IEBAIC03NzgsNyArNzc4LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2RvX3B1dF9p bWFnZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgCQl1MzIgb2NvbmZpZzsKPiAg Cj4gIAkJb2NvbmZpZyA9IE9DT05GX0NDX09VVF84QklUOwo+IC0JCWlmIChJU19HRU40KGRldl9w cml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkKPiAgCQkJb2NvbmZpZyB8PSBPQ09O Rl9DU0NfTU9ERV9CVDcwOTsKPiAgCQlvY29uZmlnIHw9IHBpcGUgPT0gMCA/Cj4gIAkJCU9DT05G X1BJUEVfQSA6IE9DT05GX1BJUEVfQjsKPiBAQCAtMTAxMiw3ICsxMDEyLDcgQEAgc3RhdGljIGlu dCBjaGVja19vdmVybGF5X3NyYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAo+ICAJaWYgKHJlYy0+c3RyaWRlX1kgJiBzdHJpZGVfbWFzayB8fCByZWMtPnN0cmlkZV9VViAm IHN0cmlkZV9tYXNrKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IC0JaWYgKElTX0dFTjQoZGV2X3By aXYpICYmIHJlYy0+c3RyaWRlX1kgPCA1MTIpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSAm JiByZWMtPnN0cmlkZV9ZIDwgNTEyKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXRtcCA9 IChyZWMtPmZsYWdzICYgSTkxNV9PVkVSTEFZX1RZUEVfTUFTSykgPT0gSTkxNV9PVkVSTEFZX1lV Vl9QTEFOQVIgPwo+IEBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBpbnQgaW50ZWxfb3ZlcmxheV9hdHRy c19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCWF0dHJzLT5j b250cmFzdCAgID0gb3ZlcmxheS0+Y29udHJhc3Q7Cj4gIAkJYXR0cnMtPnNhdHVyYXRpb24gPSBv dmVybGF5LT5zYXR1cmF0aW9uOwo+ICAKPiAtCQlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKSB7Cj4g KwkJaWYgKCFJU19HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJCWF0dHJzLT5nYW1tYTAgPSBJOTE1 X1JFQUQoT0dBTUMwKTsKPiAgCQkJYXR0cnMtPmdhbW1hMSA9IEk5MTVfUkVBRChPR0FNQzEpOwo+ ICAJCQlhdHRycy0+Z2FtbWEyID0gSTkxNV9SRUFEKE9HQU1DMik7Cj4gQEAgLTEyNzAsNyArMTI3 MCw3IEBAIGludCBpbnRlbF9vdmVybGF5X2F0dHJzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gIAkJdXBkYXRlX3JlZ19hdHRycyhvdmVybGF5LCBvdmVybGF5LT5y ZWdzKTsKPiAgCj4gIAkJaWYgKGF0dHJzLT5mbGFncyAmIEk5MTVfT1ZFUkxBWV9VUERBVEVfR0FN TUEpIHsKPiAtCQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJCQlpZiAoSVNfR0VOKGRldl9w cml2LCAyKSkKPiAgCQkJCWdvdG8gb3V0X3VubG9jazsKPiAgCj4gIAkJCWlmIChvdmVybGF5LT5h Y3RpdmUpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCBlNmNkN2I1NWMw MTguLmVlM2UwODQyZDU0MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBA IC01NjMsNyArNTYzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfYmFja2xpZ2h0KGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLCB1MzIKPiAgCQlwY2lfd3JpdGVf Y29uZmlnX2J5dGUoZGV2X3ByaXYtPmRybS5wZGV2LCBMQlBDLCBsYnBjKTsKPiAgCX0KPiAgCj4g LQlpZiAoSVNfR0VONChkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDQpKSB7 Cj4gIAkJbWFzayA9IEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7Cj4gIAl9IGVsc2Ugewo+ICAJ CWxldmVsIDw8PSAxOwo+IEBAIC05MjksNyArOTI5LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFi bGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAJICogODU1Z20gb25seSwgYnV0IGNoZWNraW5nIGZvciBnZW4yIGlzIHNhZmUsIGFzIDg1NWdt IGlzIHRoZSBvbmx5IGdlbjIKPiAgCSAqIHRoYXQgaGFzIGJhY2tsaWdodC4KPiAgCSAqLwo+IC0J aWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJ STkxNV9XUklURShCTENfSElTVF9DVEwsIEJMTV9ISVNUT0dSQU1fRU5BQkxFKTsKPiAgfQo+ICAK PiBAQCAtMTU1Nyw3ICsxNTU3LDcgQEAgc3RhdGljIGludCBpOXh4X3NldHVwX2JhY2tsaWdodChz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0gcGlwZSB1bnUKPiAgCj4gIAlj dGwgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwpOwo+ICAKPiAtCWlmIChJU19HRU4yKGRldl9wcml2 KSB8fCBJU19JOTE1R00oZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikpCj4gKwlpZiAo SVNfR0VOKGRldl9wcml2LCAyKSB8fCBJU19JOTE1R00oZGV2X3ByaXYpIHx8IElTX0k5NDVHTShk ZXZfcHJpdikpCj4gIAkJcGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2RlID0gY3RsICYg QkxNX0xFR0FDWV9NT0RFOwo+ICAKPiAgCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCj4gQEAg LTE4ODYsNyArMTg4Niw3IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVj dCBpbnRlbF9wYW5lbCAqcGFuZWwpCj4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuZ2V0ID0gdmx2X2dl dF9iYWNrbGlnaHQ7Cj4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdtID0gdmx2X2h6X3Rv X3B3bTsKPiAgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjQoZGV2X3ByaXYpKSB7Cj4gKwl9IGVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNCkpIHsKPiAgCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVw ID0gaTk2NV9zZXR1cF9iYWNrbGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBp OTY1X2VuYWJsZV9iYWNrbGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5kaXNhYmxlID0gaTk2 NV9kaXNhYmxlX2JhY2tsaWdodDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGlwZV9jcmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMK PiBpbmRleCBmM2M5MDEwZTMzMmEuLjllODcwY2FmODEwNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcGlwZV9jcmMuYwo+IEBAIC00MjcsMTMgKzQyNywxMyBAQCBzdGF0aWMgaW50IGdl dF9uZXdfY3JjX2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkgICAgICAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2UgKnNvdXJjZSwgdTMyICp2YWwsCj4g IAkJCSAgICAgICBib29sIHNldF93YSkKPiAgewo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJcmV0dXJuIGk4eHhfcGlwZV9jcmNfY3Rs X3JlZyhzb3VyY2UsIHZhbCk7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkK PiAgCQlyZXR1cm4gaTl4eF9waXBlX2NyY19jdGxfcmVnKGRldl9wcml2LCBwaXBlLCBzb3VyY2Us IHZhbCk7Cj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gdmx2X3BpcGVfY3JjX2N0bF9yZWcoZGV2X3ByaXYs IHBpcGUsIHNvdXJjZSwgdmFsKTsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpIHx8IElT X0dFTjYoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSB8fCBJU19H RU4oZGV2X3ByaXYsIDYpKQo+ICAJCXJldHVybiBpbGtfcGlwZV9jcmNfY3RsX3JlZyhzb3VyY2Us IHZhbCk7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIGl2Yl9waXBlX2NyY19jdGxfcmVnKGRldl9wcml2 LCBwaXBlLCBzb3VyY2UsIHZhbCwgc2V0X3dhKTsKPiBAQCAtNTQ0LDEzICs1NDQsMTMgQEAgc3Rh dGljIGludAo+ICBpbnRlbF9pc192YWxpZF9jcmNfc291cmNlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJICBjb25zdCBlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSBz b3VyY2UpCj4gIHsKPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2 X3ByaXYsIDIpKQo+ICAJCXJldHVybiBpOHh4X2NyY19zb3VyY2VfdmFsaWQoZGV2X3ByaXYsIHNv dXJjZSk7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPiAgCQlyZXR1cm4g aTl4eF9jcmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBzb3VyY2UpOwo+ICAJZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmV0 dXJuIHZsdl9jcmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBzb3VyY2UpOwo+IC0JZWxzZSBpZiAo SVNfR0VONShkZXZfcHJpdikgfHwgSVNfR0VONihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19H RU4oZGV2X3ByaXYsIDUpIHx8IElTX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJcmV0dXJuIGlsa19j cmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBzb3VyY2UpOwo+ICAJZWxzZQo+ICAJCXJldHVybiBp dmJfY3JjX3NvdXJjZV92YWxpZChkZXZfcHJpdiwgc291cmNlKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKPiBpbmRleCBhMjZiNGVkZGRhMjUuLjlkNmJlY2VjNDIwMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+IEBAIC0yMjczLDcgKzIyNzMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCj4gIAo+ICAJaWYgKElTX0k5 NDVHTShkZXZfcHJpdikpCj4gIAkJd21faW5mbyA9ICZpOTQ1X3dtX2luZm87Cj4gLQllbHNlIGlm ICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwllbHNlIGlmICghSVNfR0VOKGRldl9wcml2LCAyKSkK PiAgCQl3bV9pbmZvID0gJmk5MTVfd21faW5mbzsKPiAgCWVsc2UKPiAgCQl3bV9pbmZvID0gJmk4 MzBfYV93bV9pbmZvOwo+IEBAIC0yMjg3LDcgKzIyODcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCj4gIAkJCWNydGMtPmJhc2Uu cHJpbWFyeS0+c3RhdGUtPmZiOwo+ICAJCWludCBjcHA7Cj4gIAo+IC0JCWlmIChJU19HRU4yKGRl dl9wcml2KSkKPiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAgCQkJY3BwID0gNDsKPiAg CQllbHNlCj4gIAkJCWNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiBAQCAtMjMwMiw3ICsyMzAy LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGludGVsX2NydGMgKnVudXNl ZF9jcnRjKQo+ICAJCQlwbGFuZWFfd20gPSB3bV9pbmZvLT5tYXhfd207Cj4gIAl9Cj4gIAo+IC0J aWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJ d21faW5mbyA9ICZpODMwX2JjX3dtX2luZm87Cj4gIAo+ICAJZmlmb19zaXplID0gZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZShkZXZfcHJpdiwgUExBTkVfQik7Cj4gQEAgLTIzMTQsNyAr MjMxNCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1 bnVzZWRfY3J0YykKPiAgCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4gIAkJaW50 IGNwcDsKPiAgCj4gLQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU4oZGV2 X3ByaXYsIDIpKQo+ICAJCQljcHAgPSA0Owo+ICAJCWVsc2UKPiAgCQkJY3BwID0gZmItPmZvcm1h dC0+Y3BwWzBdOwo+IEBAIC0yOTI2LDcgKzI5MjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9maXh1 cF9zcHJfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgICAgICAgdWludDE2X3Qgd21bNV0pCj4gIHsKPiAgCS8qIElMSyBzcHJpdGUgTFAwIGxhdGVu Y3kgaXMgMTMwMCBucyAqLwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dF TihkZXZfcHJpdiwgNSkpCj4gIAkJd21bMF0gPSAxMzsKPiAgfQo+ICAKPiBAQCAtMjkzNCw3ICsy OTM0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZml4dXBfY3VyX3dtX2xhdGVuY3koc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAgIHVpbnQxNl90IHdtWzVdKQo+ ICB7Cj4gIAkvKiBJTEsgY3Vyc29yIExQMCBsYXRlbmN5IGlzIDEzMDAgbnMgKi8KPiAtCWlmIChJ U19HRU41KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKQo+ICAJCXdtWzBd ID0gMTM7Cj4gIH0KPiAgCj4gQEAgLTMwNjEsNyArMzA2MSw3IEBAIHN0YXRpYyB2b2lkIGlsa19z ZXR1cF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlu dGVsX3ByaW50X3dtX2xhdGVuY3koZGV2X3ByaXYsICJTcHJpdGUiLCBkZXZfcHJpdi0+d20uc3By X2xhdGVuY3kpOwo+ICAJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXZfcHJpdiwgIkN1cnNvciIs IGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeSk7Cj4gIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCXNuYl93bV9sYXRlbmN5X3F1 aXJrKGRldl9wcml2KTsKPiAgCQlzbmJfd21fbHAzX2lycV9xdWlyayhkZXZfcHJpdik7Cj4gIAl9 Cj4gQEAgLTMzMTgsNyArMzMxOCw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9tZXJnZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJICogV2hhdCB3ZSBzaG91bGQgY2hlY2sgaGVyZSBpcyB3aGV0 aGVyIEZCQyBjYW4gYmUKPiAgCSAqIGVuYWJsZWQgc29tZXRpbWUgbGF0ZXIuCj4gIAkgKi8KPiAt CWlmIChJU19HRU41KGRldl9wcml2KSAmJiAhbWVyZ2VkLT5mYmNfd21fZW5hYmxlZCAmJgo+ICsJ aWYgKElTX0dFTihkZXZfcHJpdiwgNSkgJiYgIW1lcmdlZC0+ZmJjX3dtX2VuYWJsZWQgJiYKPiAg CSAgICBpbnRlbF9mYmNfaXNfYWN0aXZlKGRldl9wcml2KSkgewo+ICAJCWZvciAobGV2ZWwgPSAy OyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAgCQkJc3RydWN0IGludGVsX3dtX2xl dmVsICp3bSA9ICZtZXJnZWQtPndtW2xldmVsXTsKPiBAQCAtMzc1Niw5ICszNzU2LDkgQEAgYm9v bCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICAJaWYgKCFpbnRlbF9oYXNfc2FndihkZXZfcHJpdikpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAK PiAtCWlmIChJU19HRU45KGRldl9wcml2KSkKPiArCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpKQo+ ICAJCXNhZ3ZfYmxvY2tfdGltZV91cyA9IDMwOwo+IC0JZWxzZSBpZiAoSVNfR0VOMTAoZGV2X3By aXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAxMCkpCj4gIAkJc2Fndl9ibG9ja190 aW1lX3VzID0gMjA7Cj4gIAllbHNlCj4gIAkJc2Fndl9ibG9ja190aW1lX3VzID0gMTA7Cj4gQEAg LTQ3MDIsNyArNDcwMiw3IEBAIHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAKPiAgCQl3cC0+cGxhbmVfYmxvY2tzX3Bl cl9saW5lID0gZGl2X2ZpeGVkMTYoaW50ZXJtX3BicGwsCj4gIAkJCQkJCQl3cC0+eV9taW5fc2Nh bmxpbmVzKTsKPiAtCX0gZWxzZSBpZiAod3AtPnhfdGlsZWQgJiYgSVNfR0VOOShkZXZfcHJpdikp IHsKPiArCX0gZWxzZSBpZiAod3AtPnhfdGlsZWQgJiYgSVNfR0VOKGRldl9wcml2LCA5KSkgewo+ ICAJCWludGVybV9wYnBsID0gRElWX1JPVU5EX1VQKHdwLT5wbGFuZV9ieXRlc19wZXJfbGluZSwK PiAgCQkJCQkgICB3cC0+ZGJ1Zl9ibG9ja19zaXplKTsKPiAgCQl3cC0+cGxhbmVfYmxvY2tzX3Bl cl9saW5lID0gdTMyX3RvX2ZpeGVkMTYoaW50ZXJtX3BicGwpOwo+IEBAIC00NzY4LDEzICs0NzY4 LDEzIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWV0aG9kMjsKPiAg CQl9IGVsc2UgaWYgKGRkYl9hbGxvY2F0aW9uID49Cj4gIAkJCSBmaXhlZDE2X3RvX3UzMl9yb3Vu ZF91cCh3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lKSkgewo+IC0JCQlpZiAoSVNfR0VOOShkZXZf cHJpdikgJiYKPiArCQkJaWYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYKPiAgCQkJICAgICFJU19H RU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZDE2 KG1ldGhvZDEsIG1ldGhvZDIpOwo+ICAJCQllbHNlCj4gIAkJCQlzZWxlY3RlZF9yZXN1bHQgPSBt ZXRob2QyOwo+ICAJCX0gZWxzZSBpZiAobGF0ZW5jeSA+PSB3cC0+bGluZXRpbWVfdXMpIHsKPiAt CQkJaWYgKElTX0dFTjkoZGV2X3ByaXYpICYmCj4gKwkJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkp ICYmCj4gIAkJCSAgICAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJCQlzZWxlY3RlZF9y ZXN1bHQgPSBtaW5fZml4ZWQxNihtZXRob2QxLCBtZXRob2QyKTsKPiAgCQkJZWxzZQo+IEBAIC03 MDQ5LDcgKzcwNDksNyBAQCBzdGF0aWMgdm9pZCBnZW45X2VuYWJsZV9ycHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2 X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCS8qIFByb2dyYW0gZGVmYXVsdHMgYW5kIHRo cmVzaG9sZHMgZm9yIFJQUyAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYpKQo+ICsJaWYgKElT X0dFTihkZXZfcHJpdiwgOSkpCj4gIAkJSTkxNV9XUklURShHRU42X1JDX1ZJREVPX0ZSRVEsCj4g IAkJCUdFTjlfRlJFUVVFTkNZKGRldl9wcml2LT5ndF9wbS5ycHMucnAxX2ZyZXEpKTsKPiAgCj4g QEAgLTcyODUsOSArNzI4NSw5IEBAIHN0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JjNihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJcmM2dmlkcyA9IDA7Cj4gIAlyZXQg PSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2LCBHRU42X1BDT0RFX1JFQURfUkM2VklE UywgJnJjNnZpZHMpOwo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpICYmIHJldCkgewo+ICsJaWYg KElTX0dFTihkZXZfcHJpdiwgNikgJiYgcmV0KSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiQ291 bGRuJ3QgY2hlY2sgZm9yIEJJT1Mgd29ya2Fyb3VuZFxuIik7Cj4gLQl9IGVsc2UgaWYgKElTX0dF TjYoZGV2X3ByaXYpICYmIChHRU42X0RFQ09ERV9SQzZfVklEKHJjNnZpZHMgJiAweGZmKSA8IDQ1 MCkpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2KSAmJiAoR0VONl9ERUNPREVf UkM2X1ZJRChyYzZ2aWRzICYgMHhmZikgPCA0NTApKSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigi WW91IHNob3VsZCB1cGRhdGUgeW91ciBCSU9TLiBDb3JyZWN0aW5nIG1pbmltdW0gcmM2IHZvbHRh Z2UgKCVkbVYtPiVkbVYpXG4iLAo+ICAJCQkgIEdFTjZfREVDT0RFX1JDNl9WSUQocmM2dmlkcyAm IDB4ZmYpLCA0NTApOwo+ICAJCXJjNnZpZHMgJj0gMHhmZmZmMDA7Cj4gQEAgLTc5ODcsNyArNzk4 Nyw3IEBAIHVuc2lnbmVkIGxvbmcgaTkxNV9jaGlwc2V0X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcgdmFsOwo+ICAKPiAtCWlmICgh SVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycSgmbWNoZGV2X2xvY2spOwo+IEBAIC04MDcxLDcg KzgwNzEsNyBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfdXBkYXRlX2dmeF92YWwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgdm9pZCBpOTE1X3VwZGF0ZV9nZnhfdmFsKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKCFJU19HRU41KGRl dl9wcml2KSkKPiArCWlmICghSVNfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlyZXR1cm47Cj4gIAo+ ICAJc3Bpbl9sb2NrX2lycSgmbWNoZGV2X2xvY2spOwo+IEBAIC04MTIyLDcgKzgxMjIsNyBAQCB1 bnNpZ25lZCBsb25nIGk5MTVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcgdmFsOwo+ICAKPiAtCWlmICghSVNfR0VONShkZXZf cHJpdikpCj4gKwlpZiAoIUlTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ ICAJc3Bpbl9sb2NrX2lycSgmbWNoZGV2X2xvY2spOwo+IEBAIC04NDEwLDcgKzg0MTAsNyBAQCB2 b2lkIGludGVsX2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCQkJICAgICAgaW50ZWxfZnJlcV9vcGNvZGUoZGV2X3ByaXYsIDQ1MCkpOwo+ICAK PiAgCS8qIEFmdGVyIHNldHRpbmcgbWF4LXNvZnRsaW1pdCwgZmluZCB0aGUgb3ZlcmNsb2NrIG1h eCBmcmVxICovCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikgfHwKPiArCWlmIChJU19HRU4oZGV2 X3ByaXYsIDYpIHx8Cj4gIAkgICAgSVNfSVZZQlJJREdFKGRldl9wcml2KSB8fCBJU19IQVNXRUxM KGRldl9wcml2KSkgewo+ICAJCXUzMiBwYXJhbXMgPSAwOwo+ICAKPiBAQCAtOTQ4MCw5ICs5NDgw LDkgQEAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZ19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRp bmcgPSBpdmJfaW5pdF9jbG9ja19nYXRpbmc7Cj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IHZsdl9p bml0X2Nsb2NrX2dhdGluZzsKPiAtCWVsc2UgaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJZWxz ZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Ns b2NrX2dhdGluZyA9IGdlbjZfaW5pdF9jbG9ja19nYXRpbmc7Cj4gLQllbHNlIGlmIChJU19HRU41 KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJZGV2X3By aXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpbGtfaW5pdF9jbG9ja19nYXRpbmc7Cj4g IAllbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRf Y2xvY2tfZ2F0aW5nID0gZzR4X2luaXRfY2xvY2tfZ2F0aW5nOwo+IEBAIC05NDkwLDExICs5NDkw LDExIEBAIHZvaWQgaW50ZWxfaW5pdF9jbG9ja19nYXRpbmdfaG9va3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0 aW5nID0gaTk2NWdtX2luaXRfY2xvY2tfZ2F0aW5nOwo+ICAJZWxzZSBpZiAoSVNfSTk2NUcoZGV2 X3ByaXYpKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gaTk2NWdf aW5pdF9jbG9ja19nYXRpbmc7Cj4gLQllbHNlIGlmIChJU19HRU4zKGRldl9wcml2KSkKPiArCWVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMykpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9j bG9ja19nYXRpbmcgPSBnZW4zX2luaXRfY2xvY2tfZ2F0aW5nOwo+ICAJZWxzZSBpZiAoSVNfSTg1 WChkZXZfcHJpdikgfHwgSVNfSTg2NUcoZGV2X3ByaXYpKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmluaXRfY2xvY2tfZ2F0aW5nID0gaTg1eF9pbml0X2Nsb2NrX2dhdGluZzsKPiAtCWVsc2UgaWYg KElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiAg CQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGk4MzBfaW5pdF9jbG9ja19n YXRpbmc7Cj4gIAllbHNlIHsKPiAgCQlNSVNTSU5HX0NBU0UoSU5URUxfREVWSUQoZGV2X3ByaXYp KTsKPiBAQCAtOTUwOCw3ICs5NTA4LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIEZvciBjeHNyICovCj4gIAlpZiAoSVNfUElO RVZJRVcoZGV2X3ByaXYpKQo+ICAJCWk5MTVfcGluZXZpZXdfZ2V0X21lbV9mcmVxKGRldl9wcml2 KTsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCA1KSkKPiAgCQlpOTE1X2lyb25sYWtlX2dldF9tZW1fZnJlcShkZXZfcHJpdik7Cj4g IAo+ICAJLyogRm9yIEZJRk8gd2F0ZXJtYXJrIHVwZGF0ZXMgKi8KPiBAQCAtOTUyMCw5ICs5NTIw LDkgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpIHsKPiAgCQlpbGtfc2V0 dXBfd21fbGF0ZW5jeShkZXZfcHJpdik7Cj4gIAo+IC0JCWlmICgoSVNfR0VONShkZXZfcHJpdikg JiYgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5WzFdICYmCj4gKwkJaWYgKChJU19HRU4oZGV2X3By aXYsIDUpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVsxXSAmJgo+ICAJCSAgICAgZGV2X3By aXYtPndtLnNwcl9sYXRlbmN5WzFdICYmIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeVsxXSkgfHwK PiAtCQkgICAgKCFJU19HRU41KGRldl9wcml2KSAmJiBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lb MF0gJiYKPiArCQkgICAgKCFJU19HRU4oZGV2X3ByaXYsIDUpICYmIGRldl9wcml2LT53bS5wcmlf bGF0ZW5jeVswXSAmJgo+ICAJCSAgICAgZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5WzBdICYmIGRl dl9wcml2LT53bS5jdXJfbGF0ZW5jeVswXSkpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29t cHV0ZV9waXBlX3dtID0gaWxrX2NvbXB1dGVfcGlwZV93bTsKPiAgCQkJZGV2X3ByaXYtPmRpc3Bs YXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20gPQo+IEBAIC05NTYzLDEyICs5NTYzLDEyIEBAIHZv aWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ CWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bSA9IE5VTEw7Cj4gIAkJfSBlbHNlCj4gIAkJCWRl dl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bSA9IHBpbmV2aWV3X3VwZGF0ZV93bTsKPiAtCX0gZWxz ZSBpZiAoSVNfR0VONChkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA0KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bSA9IGk5NjVfdXBkYXRlX3dt Owo+IC0JfSBlbHNlIGlmIChJU19HRU4zKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19H RU4oZGV2X3ByaXYsIDMpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaTl4 eF91cGRhdGVfd207Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZSA9IGk5eHhf Z2V0X2ZpZm9fc2l6ZTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ICAJCWlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+bnVtX3BpcGVzID09IDEpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gaTg0NV91cGRhdGVfd207Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9maWZvX3NpemUg PSBpODQ1X2dldF9maWZvX3NpemU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBpbmRleCA0 YzRkZDFjMzEwY2UuLmRjZTM5ZjA2YjY4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wc3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j Cj4gQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxp ZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQlwc3JfbWF4X2ggPSA0MDk2 Owo+ICAJCXBzcl9tYXhfdiA9IDIzMDQ7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYp KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgCQlwc3JfbWF4X2gg PSAzNjQwOwo+ICAJCXBzcl9tYXhfdiA9IDIzMDQ7Cj4gIAl9Cj4gQEAgLTY4Niw3ICs2ODYsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZf cHJpdikpCj4gIAkJaHN3X3Bzcl9zZXR1cF9hdXgoaW50ZWxfZHApOwo+ICAKPiAtCWlmIChkZXZf cHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VOOShkZXZfcHJpdikgJiYKPiArCWlmIChk ZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJgo+ICAJ CQkJCSAgICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkpIHsKPiAgCQlpOTE1X3JlZ190IHJlZyA9 IGdlbjlfY2hpY2tlbl90cmFuc19yZWcoZGV2X3ByaXYsCj4gIAkJCQkJCQljcHVfdHJhbnNjb2Rl cik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGEyMDVj YzllNjBjYy4uYmI4YzkwMjg0Mzg1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+IEBAIC0xMjQsNyArMTI0LDcgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIG1vZGUpCj4gIAljbWQgPSBNSV9GTFVTSDsKPiAg CWlmIChtb2RlICYgRU1JVF9JTlZBTElEQVRFKSB7Cj4gIAkJY21kIHw9IE1JX0VYRV9GTFVTSDsK PiAtCQlpZiAoSVNfRzRYKHJxLT5pOTE1KSB8fCBJU19HRU41KHJxLT5pOTE1KSkKPiArCQlpZiAo SVNfRzRYKHJxLT5pOTE1KSB8fCBJU19HRU4ocnEtPmk5MTUsIDUpKQo+ICAJCQljbWQgfD0gTUlf SU5WQUxJREFURV9JU1A7Cj4gIAl9Cj4gIAo+IEBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIAkvKiBUaGUgcmluZyBzdGF0dXMgcGFnZSBhZGRyZXNzZXMgYXJlIG5vIGxvbmdl ciBuZXh0IHRvIHRoZSByZXN0IG9mCj4gIAkgKiB0aGUgcmluZyByZWdpc3RlcnMgYXMgb2YgZ2Vu Ny4KPiAgCSAqLwo+IC0JaWYgKElTX0dFTjcoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRl dl9wcml2LCA3KSkgewo+ICAJCXN3aXRjaCAoZW5naW5lLT5pZCkgewo+ICAJCS8qCj4gIAkJICog Tm8gbW9yZSByaW5ncyBleGlzdCBvbiBHZW43LiBEZWZhdWx0IGNhc2UgaXMgb25seSB0byBzaHV0 IHVwCj4gQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX3NldHVwX3N0 YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCQkJbW1pbyA9IFZF Qk9YX0hXU19QR0FfR0VONzsKPiAgCQkJYnJlYWs7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChJU19H RU42KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4g IAkJbW1pbyA9IFJJTkdfSFdTX1BHQV9HRU42KGVuZ2luZS0+bW1pb19iYXNlKTsKPiAgCX0gZWxz ZSB7Cj4gIAkJbW1pbyA9IFJJTkdfSFdTX1BHQShlbmdpbmUtPm1taW9fYmFzZSk7Cj4gQEAgLTY4 NCwxNyArNjg0LDE3IEBAIHN0YXRpYyBpbnQgaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gIAo+ICAJLyogUmVxdWlyZWQgZm9yIHRoZSBoYXJkd2FyZSB0 byBwcm9ncmFtIHNjYW5saW5lIHZhbHVlcyBmb3Igd2FpdGluZyAqLwo+ICAJLyogV2FFbmFibGVG bHVzaFRsYkludmFsaWRhdGlvbk1vZGU6c25iICovCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikp Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlJOTE1X1dSSVRFKEdGWF9NT0RFLAo+ ICAJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1RMQl9JTlZBTElEQVRFX0VYUExJQ0lUKSk7 Cj4gIAo+ICAJLyogV2FCQ1NWQ1NUbGJJbnZhbGlkYXRpb25Nb2RlOml2Yix2bHYsaHN3ICovCj4g LQlpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkKPiAg CQlJOTE1X1dSSVRFKEdGWF9NT0RFX0dFTjcsCj4gIAkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShH RlhfVExCX0lOVkFMSURBVEVfRVhQTElDSVQpIHwKPiAgCQkJICAgX01BU0tFRF9CSVRfRU5BQkxF KEdGWF9SRVBMQVlfTU9ERSkpOwo+ICAKPiAtCWlmIChJU19HRU42KGRldl9wcml2KSkgewo+ICsJ aWYgKElTX0dFTihkZXZfcHJpdiwgNikpIHsKPiAgCQkvKiBGcm9tIHRoZSBTYW5keWJyaWRnZSBQ Uk0sIHZvbHVtZSAxIHBhcnQgMywgcGFnZSAyNDoKPiAgCQkgKiAiSWYgdGhpcyBiaXQgaXMgc2V0 LCBTVEN1bml0IHdpbGwgaGF2ZSBMUkEgYXMgcmVwbGFjZW1lbnQKPiAgCQkgKiAgcG9saWN5LiBb Li4uXSBUaGlzIGJpdCBtdXN0IGJlIHJlc2V0LiAgTFJBIHJlcGxhY2VtZW50Cj4gQEAgLTE1NzMs NyArMTU3Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAg CWNvbnN0IGludCBudW1fcmluZ3MgPQo+ICAJCS8qIFVzZSBhbiBleHRlbmRlZCB3L2Egb24gZ2Vu NyBpZiBzaWduYWxsaW5nIGZyb20gb3RoZXIgcmluZ3MgKi8KPiAtCQkoSEFTX0xFR0FDWV9TRU1B UEhPUkVTKGk5MTUpICYmIElTX0dFTjcoaTkxNSkpID8KPiArCQkoSEFTX0xFR0FDWV9TRU1BUEhP UkVTKGk5MTUpICYmIElTX0dFTihpOTE1LCA3KSkgPwo+ICAJCUlOVEVMX0lORk8oaTkxNSktPm51 bV9yaW5ncyAtIDEgOgo+ICAJCTA7Cj4gIAlib29sIGZvcmNlX3Jlc3RvcmUgPSBmYWxzZTsKPiBA QCAtMTU4OCw3ICsxNTg4LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbWlfc2V0X2NvbnRleHQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBmbGFncykKPiAgCQlmbGFncyB8PSBNSV9TQVZFX0VY VF9TVEFURV9FTiB8IE1JX1JFU1RPUkVfRVhUX1NUQVRFX0VOOwo+ICAKPiAgCWxlbiA9IDQ7Cj4g LQlpZiAoSVNfR0VONyhpOTE1KSkKPiArCWlmIChJU19HRU4oaTkxNSwgNykpCj4gIAkJbGVuICs9 IDIgKyAobnVtX3JpbmdzID8gNCpudW1fcmluZ3MgKyA2IDogMCk7Cj4gIAlpZiAoZmxhZ3MgJiBN SV9GT1JDRV9SRVNUT1JFKSB7Cj4gIAkJR0VNX0JVR19PTihmbGFncyAmIE1JX1JFU1RPUkVfSU5I SUJJVCk7Cj4gQEAgLTE2MDIsNyArMTYwMiw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9j b250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4gIAkJcmV0dXJuIFBU Ul9FUlIoY3MpOwo+ICAKPiAgCS8qIFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRNaVNldENvbnRl eHQ6aXZiLHZsdixoc3csYmR3LGNodiAqLwo+IC0JaWYgKElTX0dFTjcoaTkxNSkpIHsKPiArCWlm IChJU19HRU4oaTkxNSwgNykpIHsKPiAgCQkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJf RElTQUJMRTsKPiAgCQlpZiAobnVtX3JpbmdzKSB7Cj4gIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnNpZ25hbGxlcjsKPiBAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgc3RhdGljIGlubGluZSBpbnQg bWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBmbGFncykKPiAgCSAq Lwo+ICAJKmNzKysgPSBNSV9OT09QOwo+ICAKPiAtCWlmIChJU19HRU43KGk5MTUpKSB7Cj4gKwlp ZiAoSVNfR0VOKGk5MTUsIDcpKSB7Cj4gIAkJaWYgKG51bV9yaW5ncykgewo+ICAJCQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7Cj4gIAkJCWk5MTVfcmVnX3QgbGFzdF9yZWcgPSB7 fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KPiBAQCAtMjI3Miw5ICsyMjcyLDkgQEAgaW50IGludGVs X2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgCQllbmdpbmUtPmluaXRfY29u dGV4dCA9IGludGVsX3Jjc19jdHhfaW5pdDsKPiAgCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW43 X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IC0JCWlmIChJU19HRU42KGRldl9wcml2KSkKPiArCQlpZiAo SVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9yZW5k ZXJfcmluZ19mbHVzaDsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkgewo+ICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9 IGdlbjRfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gIAl9IGVsc2Ugewo+ICAJCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNCkKPiBAQCAtMjMwNCwxMyArMjMwNCwxMyBAQCBpbnQgaW50ZWxfaW5pdF9i c2RfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAgCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgCQkvKiBnZW42IGJzZCBuZWVkcyBhIHNw ZWNpYWwgd2EgZm9yIHRhaWwgdXBkYXRlcyAqLwo+IC0JCWlmIChJU19HRU42KGRldl9wcml2KSkK PiArCQlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkKPiAgCQkJZW5naW5lLT5zZXRfZGVmYXVsdF9z dWJtaXNzaW9uID0gZ2VuNl9ic2Rfc2V0X2RlZmF1bHRfc3VibWlzc2lvbjsKPiAgCQllbmdpbmUt PmVtaXRfZmx1c2ggPSBnZW42X2JzZF9yaW5nX2ZsdXNoOwo+ICAJCWVuZ2luZS0+aXJxX2VuYWJs ZV9tYXNrID0gR1RfQlNEX1VTRVJfSU5URVJSVVBUOwo+ICAJfSBlbHNlIHsKPiAgCQllbmdpbmUt PmVtaXRfZmx1c2ggPSBic2RfcmluZ19mbHVzaDsKPiAtCQlpZiAoSVNfR0VONShkZXZfcHJpdikp Cj4gKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9t YXNrID0gSUxLX0JTRF9VU0VSX0lOVEVSUlVQVDsKPiAgCQllbHNlCj4gIAkJCWVuZ2luZS0+aXJx X2VuYWJsZV9tYXNrID0gSTkxNV9CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDcyZWRhYTdmZjQxMS4uMWFlNzRlNTc5Mzg2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC05NCwx MSArOTQsMTEgQEAgaGFuZ2NoZWNrX2FjdGlvbl90b19zdHIoY29uc3QgZW51bSBpbnRlbF9lbmdp bmVfaGFuZ2NoZWNrX2FjdGlvbiBhKQo+ICAjZGVmaW5lIEk5MTVfTUFYX1NVQlNMSUNFUyA4Cj4g IAo+ICAjZGVmaW5lIGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykgXAo+IC0JKElTX0dF TjcoZGV2X3ByaXZfXykgPyBcCj4gKwkoSVNfR0VOKGRldl9wcml2X18sIDcpID8gXAo+ICAJIDEg OiBJTlRFTF9JTkZPKGRldl9wcml2X18pLT5zc2V1LnNsaWNlX21hc2spCj4gIAo+ICAjZGVmaW5l IGluc3Rkb25lX3N1YnNsaWNlX21hc2soZGV2X3ByaXZfXykgXAo+IC0JKElTX0dFTjcoZGV2X3By aXZfXykgPyBcCj4gKwkoSVNfR0VOKGRldl9wcml2X18sIDcpID8gXAo+ICAJIDEgOiBJTlRFTF9J TkZPKGRldl9wcml2X18pLT5zc2V1LnN1YnNsaWNlX21hc2tbMF0pCj4gIAo+ICAjZGVmaW5lIGZv cl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2X18sIHNsaWNlX18sIHN1YnNs aWNlX18pIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGlt ZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXgg NDM1MGE1MjcwNDIzLi45ZTk1MDFmODJmMDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcnVudGltZV9wbS5jCj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgYm9vbCBoc3dfcG93 ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCSAq IEJJT1MncyBvd24gcmVxdWVzdCBiaXRzLCB3aGljaCBhcmUgZm9yY2VkLW9uIGZvciB0aGVzZSBw b3dlciB3ZWxscwo+ICAJICogd2hlbiBleGl0aW5nIERDNS82Lgo+ICAJICovCj4gLQlpZiAoSVNf R0VOOShkZXZfcHJpdikgJiYgIUlTX0dFTjlfTFAoZGV2X3ByaXYpICYmCj4gKwlpZiAoSVNfR0VO KGRldl9wcml2LCA5KSAmJiAhSVNfR0VOOV9MUChkZXZfcHJpdikgJiYKPiAgCSAgICAoaWQgPT0g U0tMX0RJU1BfUFdfMSB8fCBpZCA9PSBTS0xfRElTUF9QV19NSVNDX0lPKSkKPiAgCQl2YWwgfD0g STkxNV9SRUFEKHJlZ3MtPmJpb3MpOwo+ICAKPiBAQCAtMzA1OCw3ICszMDU4LDcgQEAgc3RhdGlj IHVpbnQzMl90IGdldF9hbGxvd2VkX2RjX21hc2soY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCSAqIHN1c3BlbmQvcmVzdW1lLCBzbyBhbGxvdyBpdCB1bmNvbmRp dGlvbmFsbHkuCj4gIAkJICovCj4gIAkJbWFzayA9IERDX1NUQVRFX0VOX0RDOTsKPiAtCX0gZWxz ZSBpZiAoSVNfR0VOMTAoZGV2X3ByaXYpIHx8IElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4gKwl9 IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTApIHx8IElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7 Cj4gIAkJbWF4X2RjID0gMjsKPiAgCQltYXNrID0gMDsKPiAgCX0gZWxzZSBpZiAoSVNfR0VOOV9M UChkZXZfcHJpdikpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IGQy ZTAwM2Q4ZjNkYi4uZjcwZDJjNjA3OTAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAlkdnNjbnRy ID0gRFZTX0VOQUJMRSB8IERWU19HQU1NQV9FTkFCTEU7Cj4gIAo+IC0JaWYgKElTX0dFTjYoZGV2 X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJZHZzY250ciB8PSBEVlNf VFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+ICAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQp IHsKPiBAQCAtMTk4Myw3ICsxOTgzLDcgQEAgc3RhdGljIGJvb2wgc2tsX3BsYW5lX2hhc19wbGFu YXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJaWYgKElTX1NLWUxBS0Uo ZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAg Cj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikgJiYgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpICYm IHBpcGUgPT0gUElQRV9DKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYgIUlTX0dFTUlO SUxBS0UoZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9DKQo+ICAJCXJldHVybiBmYWxzZTsKPiAg Cj4gIAlpZiAocGxhbmVfaWQgIT0gUExBTkVfUFJJTUFSWSAmJiBwbGFuZV9pZCAhPSBQTEFORV9T UFJJVEUwKQo+IEBAIC0yMTYzLDcgKzIxNjMsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlwbGFuZS0+Y2hlY2tfcGxh bmUgPSBnNHhfc3ByaXRlX2NoZWNrOwo+ICAKPiAgCQltb2RpZmllcnMgPSBpOXh4X3BsYW5lX2Zv cm1hdF9tb2RpZmllcnM7Cj4gLQkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7Cj4gKwkJaWYgKElT X0dFTihkZXZfcHJpdiwgNikpIHsKPiAgCQkJZm9ybWF0cyA9IHNuYl9wbGFuZV9mb3JtYXRzOwo+ ICAJCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoc25iX3BsYW5lX2Zvcm1hdHMpOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmMKPiBpbmRleCBiMzRjMzE4YjIzOGQuLjQ0N2IxZGU3N2NjNyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+IEBAIC0zNTQsNyArMzU0LDcgQEAgaW50IGlu dGVsX3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICAJLyog V2FFbmFibGV1S2VybmVsSGVhZGVyVmFsaWRGaXg6c2tsICovCj4gIAkvKiBXYUVuYWJsZUd1Q0Jv b3RIYXNoQ2hlY2tOb3RTZXQ6c2tsLGJ4dCxrYmwgKi8KPiAtCWlmIChJU19HRU45KGk5MTUpKQo+ ICsJaWYgKElTX0dFTihpOTE1LCA5KSkKPiAgCQlhdHRlbXB0cyA9IDM7Cj4gIAllbHNlCj4gIAkJ YXR0ZW1wdHMgPSAxOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggNjMx YjQxNjVmZTAwLi5jNmViMDUzYThmYWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuYwo+IEBAIC01MjgsNyArNTI4LDcgQEAgY2hlY2tfZm9yX3VuY2xhaW1lZF9tbWlvKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlyZXQgfD0gdmx2X2NoZWNrX2Zv cl91bmNsYWltZWRfbW1pbyhkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYp IHx8IElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNf R0VOKGRldl9wcml2LCA3KSkKPiAgCQlyZXQgfD0gZ2VuNl9jaGVja19mb3JfZmlmb19kZWJ1Zyhk ZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiBAQCAtNTU2LDcgKzU1Niw3IEBAIHN0YXRp YyB2b2lkIF9faW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0 KGRldl9wcml2LAo+ICAJCQkJCQkgICAgICByZXN0b3JlX2ZvcmNld2FrZSk7Cj4gIAo+IC0JCWlm IChJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VO KGRldl9wcml2LCA2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDcpKQo+ICAJCQlkZXZfcHJpdi0+dW5j b3JlLmZpZm9fY291bnQgPQo+ICAJCQkJZmlmb19mcmVlX2VudHJpZXMoZGV2X3ByaXYpOwo+ICAJ CXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiBAQCAtMTM5OCw3ICsx Mzk4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 PSA1IHx8IGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0J aWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2KSkgewo+ ICAJCWRldl9wcml2LT51bmNvcmUuZndfcmVzZXQgPSAwOwo+ICAJCWRldl9wcml2LT51bmNvcmUu Zndfc2V0ID0gRk9SQ0VXQUtFX0tFUk5FTDsKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ3X2NsZWFy ID0gMDsKPiBAQCAtMTQzNyw3ICsxNDM3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3 X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCQkg ICAgICAgRk9SQ0VXQUtFX01FRElBX1ZFQk9YX0dFTjExKGkpLAo+ICAJCQkJICAgICAgIEZPUkNF V0FLRV9BQ0tfTUVESUFfVkVCT1hfR0VOMTEoaSkpOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNf R0VOMTAoZGV2X3ByaXYpIHx8IElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElT X0dFTihkZXZfcHJpdiwgMTApIHx8IElTX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgCQlkZXZfcHJp di0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0KPiAgCQkJZndfZG9tYWluc19nZXRfd2l0 aF9mYWxsYmFjazsKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0g ZndfZG9tYWluc19wdXQ7Cj4gQEAgLTE1MDMsNyArMTUwMyw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX1JFTkRFUiwKPiAg CQkJCSAgICAgICBGT1JDRVdBS0UsIEZPUkNFV0FLRV9BQ0spOwo+ICAJCX0KPiAtCX0gZWxzZSBp ZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2 KSkgewo+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICAJCQlm d19kb21haW5zX2dldF93aXRoX3RocmVhZF9zdGF0dXM7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS5m dW5jcy5mb3JjZV93YWtlX3B1dCA9IGZ3X2RvbWFpbnNfcHV0Owo+IEBAIC0xNTcwLDcgKzE1NzAs NyBAQCB2b2lkIGludGVsX3VuY29yZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDIsIDQpIHx8IGludGVsX3ZncHVf YWN0aXZlKGRldl9wcml2KSkgewo+ICAJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyhkZXZfcHJp diwgZ2VuMik7Cj4gIAkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1MoZGV2X3ByaXYsIGdlbjIpOwo+ IC0JfSBlbHNlIGlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4o ZGV2X3ByaXYsIDUpKSB7Cj4gIAkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGRldl9wcml2LCBn ZW41KTsKPiAgCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyhkZXZfcHJpdiwgZ2VuNSk7Cj4gIAl9 IGVsc2UgaWYgKElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNiwgNykpIHsKPiBAQCAtMTU4Miw3ICsx NTgyLDcgQEAgdm9pZCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkJfSBlbHNlIHsKPiAgCQkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1MoZGV2 X3ByaXYsIGdlbjYpOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfR0VOOChkZXZfcHJpdikpIHsK PiArCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA4KSkgewo+ICAJCWlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewo+ICAJCQlBU1NJR05fRldfRE9NQUlOU19UQUJMRShfX2Nodl9md19y YW5nZXMpOwo+ICAJCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1MoZGV2X3ByaXYsIGZ3dGFibGUp Owo+IEBAIC0yMTczLDcgKzIxNzMsNyBAQCBzdGF0aWMgcmVzZXRfZnVuYyBpbnRlbF9nZXRfZ3B1 X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlyZXR1cm4gZ2Vu OF9yZXNldF9lbmdpbmVzOwo+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ ICAJCXJldHVybiBnZW42X3Jlc2V0X2VuZ2luZXM7Cj4gLQllbHNlIGlmIChJU19HRU41KGRldl9w cml2KSkKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJcmV0dXJuIGlyb25s YWtlX2RvX3Jlc2V0Owo+ICAJZWxzZSBpZiAoSVNfRzRYKGRldl9wcml2KSkKPiAgCQlyZXR1cm4g ZzR4X2RvX3Jlc2V0Owo+IEBAIC0yMzQxLDcgKzIzNDEsNyBAQCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2Zvcl93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJZndf ZG9tYWlucyA9IF9fZ2VuMTFfZnd0YWJsZV9yZWdfd3JpdGVfZndfZG9tYWlucyhvZmZzZXQpOwo+ ICAJfSBlbHNlIGlmIChIQVNfRldUQUJMRShkZXZfcHJpdikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKSB7Cj4gIAkJZndfZG9tYWlucyA9IF9fZnd0YWJsZV9yZWdfd3JpdGVfZndfZG9tYWlu cyhvZmZzZXQpOwo+IC0JfSBlbHNlIGlmIChJU19HRU44KGRldl9wcml2KSkgewo+ICsJfSBlbHNl IGlmIChJU19HRU4oZGV2X3ByaXYsIDgpKSB7Cj4gIAkJZndfZG9tYWlucyA9IF9fZ2VuOF9yZWdf d3JpdGVfZndfZG9tYWlucyhvZmZzZXQpOwo+ICAJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoZGV2 X3ByaXYsIDYsIDcpKSB7Cj4gIAkJZndfZG9tYWlucyA9IEZPUkNFV0FLRV9SRU5ERVI7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jCj4gaW5kZXggOTJjYjgyZGQwYzA3Li42MzBjODg3Njgy ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMKPiBAQCAtMTMwLDExICsxMzAs MTEgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfaHdfcmVzdHJpY3Rpb24oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gIHsKPiAgCWludCBlcnIgPSAwOwo+ICAKPiAtCWlmIChJU19H RU45KGk5MTUpKQo+ICsJaWYgKElTX0dFTihpOTE1LCA5KSkKPiAgCQllcnIgPSBnZW45X2NoZWNr X2R3b3JkX2dhcChndWNfd29wY21fYmFzZSwgZ3VjX3dvcGNtX3NpemUpOwo+ICAKPiAgCWlmICgh ZXJyICYmCj4gLQkgICAgKElTX0dFTjkoaTkxNSkgfHwgSVNfQ05MX1JFVklEKGk5MTUsIENOTF9S RVZJRF9BMCwgQ05MX1JFVklEX0EwKSkpCj4gKwkgICAgKElTX0dFTihpOTE1LCA5KSB8fCBJU19D TkxfUkVWSUQoaTkxNSwgQ05MX1JFVklEX0EwLCBDTkxfUkVWSURfQTApKSkKPiAgCQllcnIgPSBn ZW45X2NoZWNrX2h1Y19md19maXRzKGd1Y193b3BjbV9zaXplLCBodWNfZndfc2l6ZSk7Cj4gIAo+ ICAJcmV0dXJuIGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf d29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMK PiBpbmRleCBhNGFiNzhiZGNiYmYuLjcxZDE3MjUwZjFmZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC0xMTg0LDcgKzExODQsNyBAQCBzdGF0aWMg dm9pZCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAJCQkgICAgUE1GTFVTSERPTkVfTE5FQkxLKTsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfR0VOOShp OTE1KSB8fCBJU19DQU5OT05MQUtFKGk5MTUpKSB7Cj4gKwlpZiAoSVNfR0VOKGk5MTUsIDkpIHx8 IElTX0NBTk5PTkxBS0UoaTkxNSkpIHsKPiAgCQkvKiBXYUVuYWJsZVByZWVtcHRpb25HcmFudWxh cml0eUNvbnRyb2xCeVVNRDpza2wsYnh0LGtibCxjZmwsY25sICovCj4gIAkJd2FfbWFza2VkX2Vu KHdhbCwKPiAgCQkJICAgICBHRU43X0ZGX1NMSUNFX0NTX0NISUNLRU4xLAo+IEBAIC0xMjA1LDcg KzEyMDUsNyBAQCBzdGF0aWMgdm9pZCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAJCQkgICAgIEdFTjlfUE9PTEVEX0VVX0xPQURfQkFMQU5DSU5H X0ZJWF9ESVNBQkxFKTsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfR0VOOShpOTE1KSkgewo+ICsJaWYg KElTX0dFTihpOTE1LCA5KSkgewo+ICAJCS8qIFdhQ29udGV4dFN3aXRjaFdpdGhDb25jdXJyZW50 VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gIAkJd2FfbWFza2VkX2VuKHdh bCwKPiAgCQkJICAgICBHRU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAoKLS0gCkphbmkgTmlrdWxhLCBJ bnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==