From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 03/19] drm/i915: Store a i915 backpointer from engine, and use it Date: Thu, 5 May 2016 12:15:40 +0100 Message-ID: <572B2B5C.5050102@linux.intel.com> References: <1462439768-8615-1-git-send-email-chris@chris-wilson.co.uk> <1462439768-8615-3-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id D70FE6E4DD for ; Thu, 5 May 2016 11:15:42 +0000 (UTC) In-Reply-To: <1462439768-8615-3-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA1LzA1LzE2IDEwOjE1LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gICAgIHRleHQJICAgZGF0 YQkgICAgYnNzCSAgICBkZWMJICAgIGhleAlmaWxlbmFtZQo+IDYzMDkzNTEJMzU3ODcxNAkgNjk2 MzIwCTEwNTg0Mzg1CSBhMTgxNDEJdm1saW51eAo+IDYzMDgzOTEJMzU3ODcxNAkgNjk2MzIwCTEw NTgzNDI1CSBhMTdkODEJdm1saW51eAo+Cj4gQWxtb3N0IDFLaUIgb2YgY29kZSByZWR1Y3Rpb24u CgpJIHJlYWQgaXQgYWxsIC0gaXQgd2FzIG9uZSB0ZWRpb3VzIHJldmlldy4gOikgRm91bmQgc29t ZSBtaXNzZWQgCm9wcG9ydHVuaXRpZXMgaGVyZSBhbmQgdGhlcmUsIHJlYWQgYmVsb3cuCgpFaXRo ZXIgd2F5LAoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+CgpCdXQgd291bGQgcmVjb21tZW5kIGNvbGxlY3Rpbmcgc29tZSBhY2tzIHNpbmNlIGl0 IHdpbGwgZGlzdHVyYiBhIGxvdCBvZiAKd29yay4KCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfY21kX3BhcnNlci5jICAgICAgIHwgIDEyICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICB8ICAgOCArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgICAgICAgICAgfCAgIDkgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgIHwgIDEwICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8ICAzNSArKy0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICB8ICA0NyArKy0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgfCAgNDggKystLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgICAgICAgIHwgICA0ICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICB8ICAgNiArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgICAgfCAgMzIgKy0t Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyB8ICAxMyAr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyAgICAgfCAgIDQg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgIHwgIDc5 ICsrKystLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAg ICB8ICA4MCArKysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oICAg ICAgICAgICAgfCAgMzYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jICAgICAgICAgfCAgNDkgKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgICAgICAgICAgIHwgICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYyAgICAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgICAgICAgfCAxMzggKysrKysrLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmggICAgICAgICAgICAgfCAgIDMgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX21vY3MuYyAgICAgICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgICB8ICAgMyArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgfCAgIDUgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgIHwgMjkwICsrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAg ICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgICAg ICAgIHwgIDE0ICstCj4gICAyNiBmaWxlcyBjaGFuZ2VkLCA0NDIgaW5zZXJ0aW9ucygrKSwgNDk5 IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Y21kX3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBp bmRleCA2OWExYmE4ZWJkZmIuLjM1MjI0ZWEzMDIwMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfY21kX3BhcnNlci5jCj4gQEAgLTc1MCwxMiArNzUwLDEyIEBAIGludCBpOTE1X2NtZF9w YXJzZXJfaW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpbnQg Y21kX3RhYmxlX2NvdW50Owo+ICAgCWludCByZXQ7Cj4KPiAtCWlmICghSVNfR0VONyhlbmdpbmUt PmRldikpCj4gKwlpZiAoIUlTX0dFTjcoZW5naW5lLT5pOTE1KSkKPiAgIAkJcmV0dXJuIDA7Cj4K PiAgIAlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAgIAljYXNlIFJDUzoKPiAtCQlpZiAoSVNfSEFT V0VMTChlbmdpbmUtPmRldikpIHsKPiArCQlpZiAoSVNfSEFTV0VMTChlbmdpbmUtPmk5MTUpKSB7 Cj4gICAJCQljbWRfdGFibGVzID0gaHN3X3JlbmRlcl9yaW5nX2NtZHM7Cj4gICAJCQljbWRfdGFi bGVfY291bnQgPQo+ICAgCQkJCUFSUkFZX1NJWkUoaHN3X3JlbmRlcl9yaW5nX2NtZHMpOwo+IEBA IC03NjQsNyArNzY0LDcgQEAgaW50IGk5MTVfY21kX3BhcnNlcl9pbml0X3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkJY21kX3RhYmxlX2NvdW50ID0gQVJSQVlfU0la RShnZW43X3JlbmRlcl9jbWRzKTsKPiAgIAkJfQo+Cj4gLQkJaWYgKElTX0hBU1dFTEwoZW5naW5l LT5kZXYpKSB7Cj4gKwkJaWYgKElTX0hBU1dFTEwoZW5naW5lLT5pOTE1KSkgewo+ICAgCQkJZW5n aW5lLT5yZWdfdGFibGVzID0gaHN3X3JlbmRlcl9yZWdfdGFibGVzOwo+ICAgCQkJZW5naW5lLT5y ZWdfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKGhzd19yZW5kZXJfcmVnX3RhYmxlcyk7Cj4gICAJ CX0gZWxzZSB7Cj4gQEAgLTc4MCw3ICs3ODAsNyBAQCBpbnQgaTkxNV9jbWRfcGFyc2VyX2luaXRf cmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCWVuZ2luZS0+Z2V0X2Nt ZF9sZW5ndGhfbWFzayA9IGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2s7Cj4gICAJCWJyZWFr Owo+ICAgCWNhc2UgQkNTOgo+IC0JCWlmIChJU19IQVNXRUxMKGVuZ2luZS0+ZGV2KSkgewo+ICsJ CWlmIChJU19IQVNXRUxMKGVuZ2luZS0+aTkxNSkpIHsKPiAgIAkJCWNtZF90YWJsZXMgPSBoc3df Ymx0X3JpbmdfY21kczsKPiAgIAkJCWNtZF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUoaHN3X2Js dF9yaW5nX2NtZHMpOwo+ICAgCQl9IGVsc2Ugewo+IEBAIC03ODgsNyArNzg4LDcgQEAgaW50IGk5 MTVfY21kX3BhcnNlcl9pbml0X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCQkJY21kX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShnZW43X2JsdF9jbWRzKTsKPiAgIAkJ fQo+Cj4gLQkJaWYgKElTX0hBU1dFTEwoZW5naW5lLT5kZXYpKSB7Cj4gKwkJaWYgKElTX0hBU1dF TEwoZW5naW5lLT5pOTE1KSkgewo+ICAgCQkJZW5naW5lLT5yZWdfdGFibGVzID0gaHN3X2JsdF9y ZWdfdGFibGVzOwo+ICAgCQkJZW5naW5lLT5yZWdfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKGhz d19ibHRfcmVnX3RhYmxlcyk7Cj4gICAJCX0gZWxzZSB7Cj4gQEAgLTEwMzUsNyArMTAzNSw3IEBA IGJvb2wgaTkxNV9uZWVkc19jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIAlpZiAoIWVuZ2luZS0+bmVlZHNfY21kX3BhcnNlcikKPiAgIAkJcmV0dXJuIGZhbHNl Owo+Cj4gLQlpZiAoIVVTRVNfUFBHVFQoZW5naW5lLT5kZXYpKQo+ICsJaWYgKCFVU0VTX1BQR1RU KGVuZ2luZS0+aTkxNSkpCj4gICAJCXJldHVybiBmYWxzZTsKPgo+ICAgCXJldHVybiAoaTkxNS5l bmFibGVfY21kX3BhcnNlciA9PSAxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ IGluZGV4IDZhZDAwOGMxOTZiNS4uNjY5ODk1N2VkZTNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTM4Myw3ICsxMzgzLDcgQEAgc3RhdGljIGludCBpOTE1X2hh bmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAgCQlzZXFu b1tpZF0gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOwo+ICAgCX0KPgo+IC0JaTkxNV9nZXRf ZXh0cmFfaW5zdGRvbmUoZGV2LCBpbnN0ZG9uZSk7Cj4gKwlpOTE1X2dldF9leHRyYV9pbnN0ZG9u ZShkZXZfcHJpdiwgaW5zdGRvbmUpOwo+Cj4gICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYpOwo+Cj4gQEAgLTMxNjUsNyArMzE2NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zZW1hcGhvcmVf c3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAgCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOwo+ICAgCWludCBqLCByZXQ7Cj4KPiAtCWlmICghaTkxNV9zZW1hcGhvcmVf aXNfZW5hYmxlZChkZXYpKSB7Cj4gKwlpZiAoIWk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2 X3ByaXYpKSB7Cj4gICAJCXNlcV9wdXRzKG0sICJTZW1hcGhvcmVzIGFyZSBkaXNhYmxlZFxuIik7 Cj4gICAJCXJldHVybiAwOwo+ICAgCX0KPiBAQCAtNDc2Niw3ICs0NzY2LDcgQEAgaTkxNV93ZWRn ZWRfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4KPiAgIAlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7Cj4KPiAtCWk5MTVfaGFuZGxlX2Vycm9yKGRldiwgdmFsLAo+ICsJaTkxNV9oYW5k bGVfZXJyb3IoZGV2X3ByaXYsIHZhbCwKPiAgIAkJCSAgIk1hbnVhbGx5IHNldHRpbmcgd2VkZ2Vk IHRvICVsbHUiLCB2YWwpOwo+Cj4gICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ IEBAIC00OTE2LDcgKzQ5MTYsNyBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1 NjQgdmFsKQo+ICAgCX0KPgo+ICAgCWlmICh2YWwgJiAoRFJPUF9SRVRJUkUgfCBEUk9QX0FDVElW RSkpCj4gLQkJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldik7Cj4gKwkJaTkxNV9nZW1fcmV0 aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKPgo+ICAgCWlmICh2YWwgJiBEUk9QX0JPVU5EKQo+ICAg CQlpOTE1X2dlbV9zaHJpbmsoZGV2X3ByaXYsIExPTkdfTUFYLCBJOTE1X1NIUklOS19CT1VORCk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggYWQ3YWJlNTE3NzAwLi40NmFjMWRhNjRh MDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBAQCAtMTg2LDcgKzE4Niw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ICAgCQl2YWx1ZSA9IDE7Cj4gICAJCWJyZWFrOwo+ICAgCWNhc2UgSTkxNV9QQVJBTV9IQVNf U0VNQVBIT1JFUzoKPiAtCQl2YWx1ZSA9IGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KTsK PiArCQl2YWx1ZSA9IGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpOwo+ICAgCQli cmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSEFTX1BSSU1FX1ZNQVBfRkxVU0g6Cj4gICAJCXZh bHVlID0gMTsKPiBAQCAtOTcwLDcgKzk3MCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9p bmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJIGluZm8tPmhh c19ldV9wZyA/ICJ5IiA6ICJuIik7Cj4KPiAgIAlpOTE1LmVuYWJsZV9leGVjbGlzdHMgPQo+IC0J CWludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoZGV2LCBpOTE1LmVuYWJsZV9leGVjbGlz dHMpOwo+ICsJCWludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoZGV2X3ByaXYsCj4gKwkJ CQkJICAgICAgIAlpOTE1LmVuYWJsZV9leGVjbGlzdHMpOwo+Cj4gICAJLyoKPiAgIAkgKiBpOTE1 LmVuYWJsZV9wcGd0dCBpcyByZWFkLW9ubHksIHNvIGRvIGFuIGVhcmx5IHBhc3MgdG8gdmFsaWRh dGUgdGhlCj4gQEAgLTk3OSw3ICs5ODAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5m b19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkgKiB0aGFuIGV2ZXJ5 IHRpbWUgd2UgY2hlY2sgaW50ZWxfZW5hYmxlX3BwZ3R0KCkuCj4gICAJICovCj4gICAJaTkxNS5l bmFibGVfcHBndHQgPQo+IC0JCWludGVsX3Nhbml0aXplX2VuYWJsZV9wcGd0dChkZXYsIGk5MTUu ZW5hYmxlX3BwZ3R0KTsKPiArCQlpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoZGV2X3ByaXYs IGk5MTUuZW5hYmxlX3BwZ3R0KTsKPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJwcGd0dCBtb2RlOiAl aVxuIiwgaTkxNS5lbmFibGVfcHBndHQpOwo+ICAgfQo+Cj4gQEAgLTEzNDUsNyArMTM0Niw3IEBA IHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIAkgKiBOb3RpZnkgYSB2YWxpZCBzdXJmYWNlIGFmdGVyIG1vZGVzZXR0 aW5nLAo+ICAgCSAqIHdoZW4gcnVubmluZyBpbnNpZGUgYSBWTS4KPiAgIAkgKi8KPiAtCWlmIChp bnRlbF92Z3B1X2FjdGl2ZShkZXYpKQo+ICsJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2 KSkKPiAgIAkJSTkxNV9XUklURSh2Z3RpZl9yZWcoZGlzcGxheV9yZWFkeSksIFZHVF9EUlZfRElT UExBWV9SRUFEWSk7Cj4KPiAgIAlpOTE1X3NldHVwX3N5c2ZzKGRldik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gaW5kZXggOWZkMjIxYzk3Mjc1Li4xN2FlZjFlOTI3NzAgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNTMwLDkgKzUzMCw5IEBAIHZvaWQgaW50ZWxfZGV0ZWN0 X3BjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCXBjaV9kZXZfcHV0KHBjaCk7Cj4gICB9 Cj4KPiAtYm9vbCBpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gK2Jvb2wgaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4KPiAg IAlpZiAoaTkxNS5zZW1hcGhvcmVzID49IDApCj4gQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIGk5 MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPgo+ICAgI2lm ZGVmIENPTkZJR19JTlRFTF9JT01NVQo+ICAgCS8qIEVuYWJsZSBzZW1hcGhvcmVzIG9uIFNOQiB3 aGVuIElPIHJlbWFwcGluZyBpcyBvZmYgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA9 PSA2ICYmIGludGVsX2lvbW11X2dmeF9tYXBwZWQpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA9PSA2ICYmIGludGVsX2lvbW11X2dmeF9tYXBwZWQpCgpDb3VsZCB1c2UgSVNfR0VONi4KCj4g ICAJCXJldHVybiBmYWxzZTsKPiAgICNlbmRpZgo+Cj4gQEAgLTkxNCw5ICs5MTQsOSBAQCBpbnQg aTkxNV9yZXN1bWVfc3dpdGNoZXJvbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgICogICAt IHJlLWluaXQgaW50ZXJydXB0IHN0YXRlCj4gICAgKiAgIC0gcmUtaW5pdCBkaXNwbGF5Cj4gICAg Ki8KPiAtaW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAraW50IGk5MTVf cmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICAgCXN0cnVjdCBpOTE1X2dwdV9l cnJvciAqZXJyb3IgPSAmZGV2X3ByaXYtPmdwdV9lcnJvcjsKPiAgIAl1bnNpZ25lZCByZXNldF9j b3VudGVyOwo+ICAgCWludCByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDU0 OTZhYmExY2Q1Li5jMTYyYjgyNTI3M2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBA QCAtMjc1NCw3ICsyNzU0LDggQEAgZXh0ZXJuIGludCBpOTE1X21heF9pb2N0bDsKPiAgIGV4dGVy biBpbnQgaTkxNV9zdXNwZW5kX3N3aXRjaGVyb28oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgcG1f bWVzc2FnZV90IHN0YXRlKTsKPiAgIGV4dGVybiBpbnQgaTkxNV9yZXN1bWVfc3dpdGNoZXJvbyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPgo+IC1pbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX3Bw Z3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcHBndHQpOwo+ICtpbnQgaW50 ZWxfc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiArCQkJICAgICAgIAlpbnQgZW5hYmxlX3BwZ3R0KTsKPgo+ICAgLyogaTkxNV9kbWEuYyAq Lwo+ICAgdm9pZCBfX3ByaW50ZigzLCA0KQo+IEBAIC0yNzc4LDcgKzI3NzksNyBAQCBleHRlcm4g bG9uZyBpOTE1X2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNt ZCwKPiAgICNlbmRpZgo+ICAgZXh0ZXJuIGludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrKTsKPiAgIGV4dGVybiBib29sIGludGVsX2hhc19n cHVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gLWV4dGVybiBpbnQgaTkxNV9yZXNl dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIGludCBpOTE1X3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICBleHRlcm4gaW50IGludGVsX2d1Y19y ZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgZXh0ZXJuIHZvaWQg aW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7Cj4gICBleHRlcm4gdW5zaWduZWQgbG9uZyBpOTE1X2NoaXBzZXRfdmFsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gQEAgLTI3OTUsOSArMjc5NiwxMCBAQCB2b2lkIGlu dGVsX2hwZF9jYW5jZWxfd29yayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ ICAgYm9vbCBpbnRlbF9ocGRfcGluX3RvX3BvcnQoZW51bSBocGRfcGluIHBpbiwgZW51bSBwb3J0 ICpwb3J0KTsKPgo+ICAgLyogaTkxNV9pcnEuYyAqLwo+IC12b2lkIGk5MTVfcXVldWVfaGFuZ2No ZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGk5MTVfcXVldWVfaGFuZ2NoZWNr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICBfX3ByaW50ZigzLCA0KQo+ IC12b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBlbmdp bmVfbWFzaywKPiArdm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gKwkJICAgICAgIHUzMiBlbmdpbmVfbWFzaywKPiAgIAkJICAgICAgIGNv bnN0IGNoYXIgKmZtdCwgLi4uKTsKPgo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfaXJxX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBAQCAtMjgyNyw5ICsyODI5LDkgQEAg dm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgIHU2NCBpbnRlbF91bmNvcmVfZWRyYW1fc2l6ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+Cj4gICB2b2lkIGFzc2VydF9mb3JjZXdha2Vz X2luYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXN0YXRpYyBp bmxpbmUgYm9vbCBpbnRlbF92Z3B1X2FjdGl2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtz dGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdmdwdV9hY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAgewo+IC0JcmV0dXJuIHRvX2k5MTUoZGV2KS0+dmdwdS5hY3RpdmU7 Cj4gKwlyZXR1cm4gZGV2X3ByaXYtPnZncHUuYWN0aXZlOwo+ICAgfQo+Cj4gICB2b2lkCj4gQEAg LTMwOTcsMTMgKzMwOTksMTMgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3Rf Y29tcGxldGVkKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCSByZXEt PnNlcW5vKTsKPiAgIH0KPgo+IC1pbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2dldF9zZXFubyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgKnNlcW5vKTsKPiAraW50IF9fbXVzdF9jaGVjayBp OTE1X2dlbV9nZXRfc2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg KnNlcW5vKTsKPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHUzMiBzZXFubyk7Cj4KPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqCj4gICBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSk7Cj4KPiAtYm9vbCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4gK2Jvb2wgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGk5MTVfZ2VtX3JldGlyZV9y ZXF1ZXN0c19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4KPiAgIHN0YXRp YyBpbmxpbmUgdTMyIGk5MTVfcmVzZXRfY291bnRlcihzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVy cm9yKQo+IEBAIC0zMzUwLDkgKzMzNTIsOSBAQCBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2 aWN0X2Zvcl92bWEoc3RydWN0IGk5MTVfdm1hICp0YXJnZXQpOwo+ICAgaW50IGk5MTVfZ2VtX2V2 aWN0X3ZtKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBib29sIGRvX2lkbGUpOwo+Cj4g ICAvKiBiZWxvbmdzIGluIGk5MTVfZ2VtX2d0dC5oICovCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyBp bmxpbmUgdm9pZCBpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIHsKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCj4gKwlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDYpCgpJTlRFTF9HRU4KCj4gICAJCWludGVs X2d0dF9jaGlwc2V0X2ZsdXNoKCk7Cj4gICB9Cj4KPiBAQCAtMzQzMSwxNCArMzQzMywxNSBAQCBz dGF0aWMgaW5saW5lIHZvaWQgaTkxNV9lcnJvcl9zdGF0ZV9idWZfcmVsZWFzZSgKPiAgIHsKPiAg IAlrZnJlZShlYi0+YnVmKTsKPiAgIH0KPiAtdm9pZCBpOTE1X2NhcHR1cmVfZXJyb3Jfc3RhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrLAo+ICt2b2lkIGk5MTVfY2Fw dHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJ CSAgICAgIHUzMiBlbmdpbmVfbWFzaywKPiAgIAkJCSAgICAgIGNvbnN0IGNoYXIgKmVycm9yX21z Zyk7Cj4gICB2b2lkIGk5MTVfZXJyb3Jfc3RhdGVfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gICAJCQkgIHN0cnVjdCBpOTE1X2Vycm9yX3N0YXRlX2ZpbGVfcHJpdiAqZXJyb3JfcHJpdik7 Cj4gICB2b2lkIGk5MTVfZXJyb3Jfc3RhdGVfcHV0KHN0cnVjdCBpOTE1X2Vycm9yX3N0YXRlX2Zp bGVfcHJpdiAqZXJyb3JfcHJpdik7Cj4gICB2b2lkIGk5MTVfZGVzdHJveV9lcnJvcl9zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPgo+IC12b2lkIGk5MTVfZ2V0X2V4dHJhX2luc3Rkb25l KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90ICppbnN0ZG9uZSk7Cj4gK3ZvaWQgaTkx NV9nZXRfZXh0cmFfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 aW50MzJfdCAqaW5zdGRvbmUpOwo+ICAgY29uc3QgY2hhciAqaTkxNV9jYWNoZV9sZXZlbF9zdHIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCB0eXBlKTsKPgo+ICAgLyogaTkxNV9j bWRfcGFyc2VyLmMgKi8KPiBAQCAtMzU0NiwxOCArMzU0OSwyMCBAQCBleHRlcm4gdm9pZCBpbnRl bF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg ZXh0ZXJuIHZvaWQgaW50ZWxfZGV0ZWN0X3BjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAg IGV4dGVybiBpbnQgaW50ZWxfZW5hYmxlX3JjNihjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPgo+IC1leHRlcm4gYm9vbCBpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICtleHRlcm4gYm9vbCBpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICBpbnQgaTkxNV9yZWdfcmVhZF9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJc3RydWN0IGRy bV9maWxlICpmaWxlKTsKPiAgIGludCBpOTE1X2dldF9yZXNldF9zdGF0c19pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJICAgICAgIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSk7Cj4KPiAgIC8qIG92ZXJsYXkgKi8KPiAtZXh0ZXJuIHN0cnVjdCBpbnRlbF9vdmVy bGF5X2Vycm9yX3N0YXRlICppbnRlbF9vdmVybGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4gK2V4dGVybiBzdHJ1Y3QgaW50ZWxfb3ZlcmxheV9lcnJvcl9z dGF0ZSAqCj4gK2ludGVsX292ZXJsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfb3ZlcmxheV9wcmlu dF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAo+ICAgCQkJ CQkgICAgc3RydWN0IGludGVsX292ZXJsYXlfZXJyb3Jfc3RhdGUgKmVycm9yKTsKPgo+IC1leHRl cm4gc3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jfc3RhdGUgKmludGVsX2Rpc3BsYXlfY2FwdHVy ZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIHN0cnVjdCBp bnRlbF9kaXNwbGF5X2Vycm9yX3N0YXRlICoKPiAraW50ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9y X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICBleHRlcm4gdm9p ZCBpbnRlbF9kaXNwbGF5X3ByaW50X2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9z dGF0ZV9idWYgKmUsCj4gICAJCQkJCSAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJ CQkgICAgc3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jfc3RhdGUgKmVycm9yKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBhODhlNmM5ZTk1MTYuLmM5OWQxYjJjNjVkNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xNzcsNyArMTc3LDcgQEAgaTkxNV9nZW1fb2Jq ZWN0X2dldF9wYWdlc19waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJ CXZhZGRyICs9IFBBR0VfU0laRTsKPiAgIAl9Cj4KPiAtCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2go b2JqLT5iYXNlLmRldik7Cj4gKwlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHRvX2k5MTUob2JqLT5i YXNlLmRldikpOwo+Cj4gICAJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsK PiAgIAlpZiAoc3QgPT0gTlVMTCkKPiBAQCAtMzQ3LDcgKzM0Nyw3IEBAIGk5MTVfZ2VtX3BoeXNf cHdyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJfQo+Cj4gICAJZHJt X2NsZmx1c2hfdmlydF9yYW5nZSh2YWRkciwgYXJncy0+c2l6ZSk7Cj4gLQlpOTE1X2dlbV9jaGlw c2V0X2ZsdXNoKGRldik7Cj4gKwlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHRvX2k5MTUoZGV2KSk7 Cj4KPiAgIG91dDoKPiAgIAlpbnRlbF9mYl9vYmpfZmx1c2gob2JqLCBmYWxzZSwgT1JJR0lOX0NQ VSk7Cj4gQEAgLTEwMDYsNyArMTAwNiw3IEBAIG91dDoKPiAgIAl9Cj4KPiAgIAlpZiAobmVlZHNf Y2xmbHVzaF9hZnRlcikKPiAtCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKGRldik7Cj4gKwkJaTkx NV9nZW1fY2hpcHNldF9mbHVzaCh0b19pOTE1KGRldikpOwo+ICAgCWVsc2UKPiAgIAkJb2JqLT5j YWNoZV9kaXJ0eSA9IHRydWU7Cj4KPiBAQCAtMTIzMCw4ICsxMjMwLDcgQEAgaW50IF9faTkxNV93 YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQlzdHJ1 Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShyZXEpOwo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKPiAgIAljb25zdCBib29sIGlycV90ZXN0X2luX3By b2dyZXNzID0KPiAgIAkJQUNDRVNTX09OQ0UoZGV2X3ByaXYtPmdwdV9lcnJvci50ZXN0X2lycV9y aW5ncykgJiBpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOwo+ICAgCWludCBzdGF0ZSA9IGludGVy cnVwdGlibGUgPyBUQVNLX0lOVEVSUlVQVElCTEUgOiBUQVNLX1VOSU5URVJSVVBUSUJMRTsKPiBA QCAtMTQyOSw3ICsxNDI4LDcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV9fdXB0byhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnRtcDsKPgo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT5kZXYtPnN0cnVjdF9tdXRl eCk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmk5MTUtPmRldi0+c3RydWN0X211 dGV4KTsKPgo+ICAgCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpc3QpKQo+ICAgCQlyZXR1cm47Cj4g QEAgLTI1MDIsOSArMjUwMSw4IEBAIGk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IHJpbmcpCj4gICB9Cj4KPiAgIHN0YXRpYyBp bnQKPiAtaTkxNV9nZW1faW5pdF9zZXFubyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vx bm8pCj4gK2k5MTVfZ2VtX2luaXRfc2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MzIgc2Vxbm8pCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKPiAgIAlpbnQgcmV0Owo+Cj4gQEAgLTI1MTQsNyArMjUxMiw3IEBAIGk5MTVfZ2VtX2luaXRf c2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKQo+ICAgCQlpZiAocmV0KQo+ ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4gLQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2 KTsKPiArCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4KPiAgIAkvKiBGaW5h bGx5IHJlc2V0IGh3IHN0YXRlICovCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3By aXYpCj4gQEAgLTI1MzQsNyArMjUzMiw3IEBAIGludCBpOTE1X2dlbV9zZXRfc2Vxbm8oc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKQo+ICAgCS8qIEhXUyBwYWdlIG5lZWRzIHRvIGJl IHNldCBsZXNzIHRoYW4gd2hhdCB3ZQo+ICAgCSAqIHdpbGwgaW5qZWN0IHRvIHJpbmcKPiAgIAkg Ki8KPiAtCXJldCA9IGk5MTVfZ2VtX2luaXRfc2Vxbm8oZGV2LCBzZXFubyAtIDEpOwo+ICsJcmV0 ID0gaTkxNV9nZW1faW5pdF9zZXFubyhkZXZfcHJpdiwgc2Vxbm8gLSAxKTsKPiAgIAlpZiAocmV0 KQo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gQEAgLTI1NTAsMTMgKzI1NDgsMTEgQEAgaW50IGk5MTVf Z2VtX3NldF9zZXFubyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pCj4gICB9Cj4K PiAgIGludAo+IC1pOTE1X2dlbV9nZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMy ICpzZXFubykKPiAraTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyICpzZXFubykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+ICAgCS8qIHJlc2VydmUgMCBmb3Igbm9u LXNlcW5vICovCj4gICAJaWYgKGRldl9wcml2LT5uZXh0X3NlcW5vID09IDApIHsKPiAtCQlpbnQg cmV0ID0gaTkxNV9nZW1faW5pdF9zZXFubyhkZXYsIDApOwo+ICsJCWludCByZXQgPSBpOTE1X2dl bV9pbml0X3NlcW5vKGRldl9wcml2LCAwKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiBy ZXQ7Cj4KPiBAQCAtMjY1NCw3ICsyNjUwLDcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCS8qIE5vdCBhbGxvd2VkIHRv IGZhaWwhICovCj4gICAJV0FSTihyZXQsICJlbWl0fGFkZF9yZXF1ZXN0IGZhaWxlZDogJWQhXG4i LCByZXQpOwo+Cj4gLQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhlbmdpbmUtPmRldik7Cj4gKwlpOTE1 X3F1ZXVlX2hhbmdjaGVjayhlbmdpbmUtPmk5MTUpOwo+Cj4gICAJcXVldWVfZGVsYXllZF93b3Jr KGRldl9wcml2LT53cSwKPiAgIAkJCSAgICZkZXZfcHJpdi0+bW0ucmV0aXJlX3dvcmssCj4gQEAg LTI3MjgsNyArMjcyNCw3IEBAIF9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAg IAkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipyZXFfb3V0KQo+ICAgewo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmdpbmUtPmRldik7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJ dW5zaWduZWQgcmVzZXRfY291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdw dV9lcnJvcik7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gICAJaW50 IHJldDsKPiBAQCAtMjc1MCw3ICsyNzQ2LDcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlpZiAocmVxID09IE5VTEwpCj4gICAJ CXJldHVybiAtRU5PTUVNOwo+Cj4gLQlyZXQgPSBpOTE1X2dlbV9nZXRfc2Vxbm8oZW5naW5lLT5k ZXYsICZyZXEtPnNlcW5vKTsKPiArCXJldCA9IGk5MTVfZ2VtX2dldF9zZXFubyhlbmdpbmUtPmk5 MTUsICZyZXEtPnNlcW5vKTsKCldlIGhhdmUgZGV2X3ByaXYgYWJvdmUuCgo+ICAgCWlmIChyZXQp Cj4gICAJCWdvdG8gZXJyOwo+Cj4gQEAgLTI4MDcsNyArMjgwMyw3IEBAIGk5MTVfZ2VtX3JlcXVl c3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCWludCBlcnI7Cj4K PiAgIAlpZiAoY3R4ID09IE5VTEwpCj4gLQkJY3R4ID0gdG9faTkxNShlbmdpbmUtPmRldiktPmtl cm5lbF9jb250ZXh0Owo+ICsJCWN0eCA9IGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQ7Cj4g ICAJZXJyID0gX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4LCAmcmVxKTsKPiAg IAlyZXR1cm4gZXJyID8gRVJSX1BUUihlcnIpIDogcmVxOwo+ICAgfQo+IEBAIC0yOTgyLDkgKzI5 NzgsOCBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICB9Cj4KPiAgIGJvb2wKPiAtaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3Rz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK2k5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlib29sIGlkbGUgPSB0cnVlOwo+Cj4gQEAgLTMwMTcsNyAr MzAxMiw3IEBAIGk5MTVfZ2VtX3JldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQo+ICAgCS8qIENvbWUgYmFjayBsYXRlciBpZiB0aGUgZGV2aWNlIGlzIGJ1c3kuLi4g Ki8KPiAgIAlpZGxlID0gZmFsc2U7Cj4gICAJaWYgKG11dGV4X3RyeWxvY2soJmRldi0+c3RydWN0 X211dGV4KSkgewo+IC0JCWlkbGUgPSBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2KTsKPiAr CQlpZGxlID0gaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKPiAgIAkJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJfQo+ICAgCWlmICghaWRsZSkKPiBAQCAt MzE4Niw3ICszMTgxLDcgQEAgX19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+ICAgCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChmcm9t X3JlcSwgdHJ1ZSkpCj4gICAJCXJldHVybiAwOwo+Cj4gLQlpZiAoIWk5MTVfc2VtYXBob3JlX2lz X2VuYWJsZWQob2JqLT5iYXNlLmRldikpIHsKPiArCWlmICghaTkxNV9zZW1hcGhvcmVfaXNfZW5h YmxlZCh0b19pOTE1KG9iai0+YmFzZS5kZXYpKSkgewo+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CgpNYXliZSB3b3J0aCBwdWxsaW5n IHVwIHRoZSBsb2NhbCB0byBmdW5jdGlvbiBsZXZlbCBzaW5jZSB0aGVyZSBhcmUgbm93IAp0d28g bGluZXMgbmV4dCB0byBlYWNoIG90aGVyIGRvaW5nIHRoZSBzYW1lIGRlcmVmZXJlbmNpbmc/Cgo+ ICAgCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KGZyb21fcmVxLAo+ICAgCQkJCQkgIGk5MTUt Pm1tLmludGVycnVwdGlibGUsCj4gQEAgLTM3MTksNyArMzcxNCw3IEBAIGk5MTVfZ2VtX29iamVj dF9mbHVzaF9jcHVfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Cj4gICAJCXJldHVybjsKPgo+ICAgCWlmIChpOTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmosIG9i ai0+cGluX2Rpc3BsYXkpKQo+IC0JCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2gob2JqLT5iYXNlLmRl dik7Cj4gKwkJaTkxNV9nZW1fY2hpcHNldF9mbHVzaCh0b19pOTE1KG9iai0+YmFzZS5kZXYpKTsK Pgo+ICAgCW9sZF93cml0ZV9kb21haW4gPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluOwo+ICAgCW9i ai0+YmFzZS53cml0ZV9kb21haW4gPSAwOwo+IEBAIC0zOTE3LDcgKzM5MTIsNyBAQCBvdXQ6Cj4g ICAJICAgIG9iai0+YmFzZS53cml0ZV9kb21haW4gIT0gSTkxNV9HRU1fRE9NQUlOX0NQVSAmJgo+ ICAgCSAgICBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChvYmopKSB7Cj4gICAJCWlmIChpOTE1X2dl bV9jbGZsdXNoX29iamVjdChvYmosIHRydWUpKQo+IC0JCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNo KG9iai0+YmFzZS5kZXYpOwo+ICsJCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHRvX2k5MTUob2Jq LT5iYXNlLmRldikpOwo+ICAgCX0KPgo+ICAgCXJldHVybiAwOwo+IEBAIC00Njk1LDcgKzQ2OTAs NyBAQCBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJaWYgKHJl dCkKPiAgIAkJZ290byBlcnI7Cj4KPiAtCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXYpOwo+ ICsJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKPgo+ICAgCWk5MTVfZ2VtX3N0 b3BfZW5naW5lcyhkZXYpOwo+ICAgCWk5MTVfZ2VtX2NvbnRleHRfbG9zdChkZXZfcHJpdik7Cj4g QEAgLTQ5ODYsNyArNDk4MSw3IEBAIGk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWVsc2UKPiAgIAkJZGV2X3ByaXYtPm51bV9m ZW5jZV9yZWdzID0gODsKPgo+IC0JaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCj4gKwlpZiAo aW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKQo+ICAgCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3Jl Z3MgPQo+ICAgCQkJCUk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMuZmVuY2VfbnVtKSk7Cj4K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggYjFiNzA0YzJj MDAxLi4yZGNmMThjZmM4MDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCj4gQEAgLTk5LDI4ICs5OSwyNyBAQAo+ICAgI2RlZmluZSBHRU42X0NPTlRFWFRfQUxJ R04gKDY0PDwxMCkKPiAgICNkZWZpbmUgR0VON19DT05URVhUX0FMSUdOIDQwOTYKPgo+IC1zdGF0 aWMgc2l6ZV90IGdldF9jb250ZXh0X2FsaWdubWVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICtzdGF0aWMgc2l6ZV90IGdldF9jb250ZXh0X2FsaWdubWVudChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlpZiAoSVNfR0VONihkZXYpKQo+ICsJaWYgKElTX0dF TjYoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gR0VONl9DT05URVhUX0FMSUdOOwo+Cj4gICAJcmV0 dXJuIEdFTjdfQ09OVEVYVF9BTElHTjsKPiAgIH0KPgo+IC1zdGF0aWMgaW50IGdldF9jb250ZXh0 X3NpemUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArc3RhdGljIGludCBnZXRfY29udGV4dF9z aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJaW50IHJl dDsKPiAgIAl1MzIgcmVnOwo+Cj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+Z2VuKSB7Cj4g Kwlzd2l0Y2ggKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4pIHsKCklOVEVMX0dFTgoKPiAgIAlj YXNlIDY6Cj4gICAJCXJlZyA9IEk5MTVfUkVBRChDWFRfU0laRSk7Cj4gICAJCXJldCA9IEdFTjZf Q1hUX1RPVEFMX1NJWkUocmVnKSAqIDY0Owo+ICAgCQlicmVhazsKPiAgIAljYXNlIDc6Cj4gICAJ CXJlZyA9IEk5MTVfUkVBRChHRU43X0NYVF9TSVpFKTsKPiAtCQlpZiAoSVNfSEFTV0VMTChkZXYp KQo+ICsJCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkKPiAgIAkJCXJldCA9IEhTV19DWFRfVE9U QUxfU0laRTsKPiAgIAkJZWxzZQo+ICAgCQkJcmV0ID0gR0VON19DWFRfVE9UQUxfU0laRShyZWcp ICogNjQ7Cj4gQEAgLTIyNCw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IGFzc2lnbl9od19pZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkICpvdXQpCj4gICAJCSAqIEZs dXNoIGFueSBwZW5kaW5nIHJldGlyZXMgdG8gaG9wZWZ1bGx5IHJlbGVhc2Ugc29tZQo+ICAgCQkg KiBzdGFsZSBjb250ZXh0cyBhbmQgdHJ5IGFnYWluLgo+ICAgCQkgKi8KPiAtCQlpOTE1X2dlbV9y ZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYtPmRldik7Cj4gKwkJaTkxNV9nZW1fcmV0aXJlX3JlcXVl c3RzKGRldl9wcml2KTsKPiAgIAkJcmV0ID0gaWRhX3NpbXBsZV9nZXQoJmRldl9wcml2LT5jb250 ZXh0X2h3X2lkYSwKPiAgIAkJCQkgICAgIDAsIE1BWF9DT05URVhUX0hXX0lELCBHRlBfS0VSTkVM KTsKPiAgIAkJaWYgKHJldCA8IDApCj4gQEAgLTMyMCw3ICszMTksNyBAQCBpOTE1X2dlbV9jcmVh dGVfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkgKiBjb250ZXh0Lgo+ICAg CQkgKi8KPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0eC0+bGVnYWN5X2h3X2N0 eC5yY3Nfc3RhdGUsCj4gLQkJCQkJICAgIGdldF9jb250ZXh0X2FsaWdubWVudChkZXYpLCAwKTsK PiArCQkJCQkgICAgZ2V0X2NvbnRleHRfYWxpZ25tZW50KHRvX2k5MTUoZGV2KSksIDApOwo+ICAg CQlpZiAocmV0KSB7Cj4gICAJCQlEUk1fREVCVUdfRFJJVkVSKCJDb3VsZG4ndCBwaW4gJWRcbiIs IHJldCk7Cj4gICAJCQlnb3RvIGVycl9kZXN0cm95Owo+IEBAIC0zODksNyArMzg4LDggQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWlmIChX QVJOX09OKGRldl9wcml2LT5rZXJuZWxfY29udGV4dCkpCj4gICAJCXJldHVybiAwOwo+Cj4gLQlp ZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSAmJiBIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRl dikpIHsKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikgJiYKPiArCSAgICBIQVNf TE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KSkgewo+ICAgCQlpZiAoIWk5MTUuZW5hYmxl X2V4ZWNsaXN0cykgewo+ICAgCQkJRFJNX0lORk8oIk9ubHkgRVhFQ0xJU1QgbW9kZSBpcyBzdXBw b3J0ZWQgaW4gdmdwdS5cbiIpOwo+ICAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTQwNCw4ICs0 MDQsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJCS8qIE5COiBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsuIFdlIHdpbGwgYWxsb2NhdGUg b3VyIG93bgo+ICAgCQkgKiBiYWNraW5nIG9iamVjdHMgYXMgd2UgbmVlZCB0aGVtLCB0aGFuayB5 b3UgdmVyeSBtdWNoICovCj4gICAJCWRldl9wcml2LT5od19jb250ZXh0X3NpemUgPSAwOwo+IC0J fSBlbHNlIGlmIChIQVNfSFdfQ09OVEVYVFMoZGV2KSkgewo+IC0JCWRldl9wcml2LT5od19jb250 ZXh0X3NpemUgPSByb3VuZF91cChnZXRfY29udGV4dF9zaXplKGRldiksIDQwOTYpOwo+ICsJfSBl bHNlIGlmIChIQVNfSFdfQ09OVEVYVFMoZGV2X3ByaXYpKSB7Cj4gKwkJZGV2X3ByaXYtPmh3X2Nv bnRleHRfc2l6ZSA9Cj4gKwkJCXJvdW5kX3VwKGdldF9jb250ZXh0X3NpemUoZGV2X3ByaXYpLCA0 MDk2KTsKPiAgIAkJaWYgKGRldl9wcml2LT5od19jb250ZXh0X3NpemUgPiAoMTw8MjApKSB7Cj4g ICAJCQlEUk1fREVCVUdfRFJJVkVSKCJEaXNhYmxpbmcgSFcgQ29udGV4dHM7IGludmFsaWQgc2l6 ZSAlZFxuIiwKPiAgIAkJCQkJIGRldl9wcml2LT5od19jb250ZXh0X3NpemUpOwo+IEBAIC01MDks MTIgKzUxMCwxMyBAQCBpOTE1X2dlbV9jb250ZXh0X2dldChzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYsIHUzMiBpZCkKPiAgIHN0YXRpYyBpbmxpbmUgaW50Cj4gICBtaV9z ZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdz KQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1 Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+ICAg CXUzMiBmbGFncyA9IGh3X2ZsYWdzIHwgTUlfTU1fU1BBQ0VfR1RUOwo+ICAgCWNvbnN0IGludCBu dW1fcmluZ3MgPQo+ICAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9hIG9uIGl2YisgaWYgc2lnbmFs bGluZyBmcm9tIG90aGVyIHJpbmdzICovCj4gLQkJaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChl bmdpbmUtPmRldikgPwo+IC0JCWh3ZWlnaHQzMihJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+cmlu Z19tYXNrKSAtIDEgOgo+ICsJCWk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpID8K PiArCQlod2VpZ2h0MzIoSU5URUxfSU5GTyhkZXZfcHJpdiktPnJpbmdfbWFzaykgLSAxIDoKPiAg IAkJMDsKPiAgIAlpbnQgbGVuLCByZXQ7Cj4KPiBAQCAtNTIzLDIxICs1MjUsMjEgQEAgbWlfc2V0 X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykK PiAgIAkgKiBleHBsaWNpdGx5LCBzbyB3ZSByZWx5IG9uIHRoZSB2YWx1ZSBhdCByaW5nIGluaXQs IHN0b3JlZCBpbgo+ICAgCSAqIGl0bGJfYmVmb3JlX2N0eF9zd2l0Y2guCj4gICAJICovCj4gLQlp ZiAoSVNfR0VONihlbmdpbmUtPmRldikpIHsKPiArCWlmIChJU19HRU42KGRldl9wcml2KSkgewo+ ICAgCQlyZXQgPSBlbmdpbmUtPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIDApOwo+ ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4KPiAgIAkvKiBUaGVzZSBm bGFncyBhcmUgZm9yIHJlc291cmNlIHN0cmVhbWVyIG9uIEhTVysgKi8KPiAtCWlmIChJU19IQVNX RUxMKGVuZ2luZS0+ZGV2KSB8fCBJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuID49IDgpCj4g KwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ ICAgCQlmbGFncyB8PSAoSFNXX01JX1JTX1NBVkVfU1RBVEVfRU4gfCBIU1dfTUlfUlNfUkVTVE9S RV9TVEFURV9FTik7Cj4gLQllbHNlIGlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuIDwg OCkKPiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQo+ICAgCQlmbGFncyB8PSAo TUlfU0FWRV9FWFRfU1RBVEVfRU4gfCBNSV9SRVNUT1JFX0VYVF9TVEFURV9FTik7Cj4KPgo+ICAg CWxlbiA9IDQ7Cj4gLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA+PSA3KQo+ICsJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKPiAgIAkJbGVuICs9IDIgKyAobnVtX3Jpbmdz ID8gNCpudW1fcmluZ3MgKyA2IDogMCk7Cj4KPiAgIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgbGVuKTsKPiBAQCAtNTQ1LDE0ICs1NDcsMTQgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKPiAgIAkJcmV0dXJuIHJldDsK Pgo+ICAgCS8qIFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRNaVNldENvbnRleHQ6aXZiLHZsdixo c3csYmR3LGNodiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPj0gNykg ewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewo+ICAgCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJU0FCTEUpOwo+ICAgCQlpZiAobnVt X3JpbmdzKSB7Cj4gICAJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7Cj4KPiAg IAkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCj4gICAJCQkJCU1JX0xPQURfUkVHSVNURVJfSU1N KG51bV9yaW5ncykpOwo+IC0JCQlmb3JfZWFjaF9lbmdpbmUoc2lnbmFsbGVyLCB0b19pOTE1KGVu Z2luZS0+ZGV2KSkgewo+ICsJCQlmb3JfZWFjaF9lbmdpbmUoc2lnbmFsbGVyLCBkZXZfcHJpdikg ewo+ICAgCQkJCWlmIChzaWduYWxsZXIgPT0gZW5naW5lKQo+ICAgCQkJCQljb250aW51ZTsKPgo+ IEBAIC01NzUsMTQgKzU3NywxNCBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+ICAgCSAqLwo+ICAgCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX05PT1ApOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdl biA+PSA3KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gICAJCWlmIChu dW1fcmluZ3MpIHsKPiAgIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKPiAg IAkJCWk5MTVfcmVnX3QgbGFzdF9yZWcgPSB7fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KPgo+ICAg CQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKPiAgIAkJCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0o bnVtX3JpbmdzKSk7Cj4gLQkJCWZvcl9lYWNoX2VuZ2luZShzaWduYWxsZXIsIHRvX2k5MTUoZW5n aW5lLT5kZXYpKSB7Cj4gKwkJCWZvcl9lYWNoX2VuZ2luZShzaWduYWxsZXIsIGRldl9wcml2KSB7 Cj4gICAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCj4gICAJCQkJCWNvbnRpbnVlOwo+Cj4g QEAgLTY3Myw3ICs2NzUsNyBAQCBuZWVkc19wZF9sb2FkX3ByZShzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQsCj4gICAJaWYgKGVuZ2luZS0+aWQgIT0gUkNTKQo+ICAgCQlyZXR1cm4gdHJ1ZTsK Pgo+IC0JaWYgKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPCA4KQo+ICsJaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpIDwgOCkKPiAgIAkJcmV0dXJuIHRydWU7Cj4KPiAgIAlyZXR1cm4g ZmFsc2U7Cj4gQEAgLTcxMCw3ICs3MTIsNyBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0Y2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4KPiAgIAkvKiBUcnlpbmcgdG8gcGluIGZp cnN0IG1ha2VzIGVycm9yIGhhbmRsaW5nIGVhc2llci4gKi8KPiAgIAlyZXQgPSBpOTE1X2dlbV9v YmpfZ2d0dF9waW4odG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlLAo+IC0JCQkJICAgIGdldF9j b250ZXh0X2FsaWdubWVudChlbmdpbmUtPmRldiksCj4gKwkJCQkgICAgZ2V0X2NvbnRleHRfYWxp Z25tZW50KGVuZ2luZS0+aTkxNSksCj4gICAJCQkJICAgIDApOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V2aWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4gaW5kZXgg ZWExZjhkMWJkMjI4Li5iMTQ0YzNmNWM2NTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V2aWN0LmMKPiBAQCAtMTU0LDcgKzE1NCw3IEBAIG5vbmU6Cj4gICAJCWlmIChyZXQpCj4g ICAJCQlyZXR1cm4gcmV0Owo+Cj4gLQkJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldik7Cj4g KwkJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHRvX2k5MTUoZGV2KSk7Cj4gICAJCWdvdG8gc2Vh cmNoX2FnYWluOwo+ICAgCX0KPgo+IEBAIC0yNjUsNyArMjY1LDcgQEAgaW50IGk5MTVfZ2VtX2V2 aWN0X3ZtKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBib29sIGRvX2lkbGUpCj4gICAJ CWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+Cj4gLQkJaTkxNV9nZW1fcmV0aXJlX3JlcXVl c3RzKHZtLT5kZXYpOwo+ICsJCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyh0b19pOTE1KHZtLT5k ZXYpKTsKPgo+ICAgCQlXQVJOX09OKCFsaXN0X2VtcHR5KCZ2bS0+YWN0aXZlX2xpc3QpKTsKPiAg IAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4 IGUwZWU1ZDFhYzM3Mi4uYTU0YTI0M2NjYWFjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC03MjQsNyArNzI0LDcgQEAgaTkxNV9nZW1fZXhl Y2J1ZmZlcl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIG9yZGVyZWRf dm1hczsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIHBpbm5lZF92bWFzOwo+IC0JYm9vbCBoYXNfZmVu Y2VkX2dwdV9hY2Nlc3MgPSBJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuIDwgNDsKPiArCWJv b2wgaGFzX2ZlbmNlZF9ncHVfYWNjZXNzID0gSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCA0Owo+ ICAgCWludCByZXRyeTsKPgo+ICAgCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKGVuZ2lu ZSk7Cj4gQEAgLTk2NSw3ICs5NjUsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fZ3B1 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCX0KPgo+ICAgCWlmIChmbHVz aF9jaGlwc2V0KQo+IC0JCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2gocmVxLT5lbmdpbmUtPmRldik7 Cj4gKwkJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChyZXEtPmVuZ2luZS0+aTkxNSk7Cj4KPiAgIAlp ZiAoZmx1c2hfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJTl9HVFQpCj4gICAJCXdtYigpOwo+IEBA IC0xMTE5LDcgKzExMTksNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fYWN0aXZlKHN0 cnVjdCBsaXN0X2hlYWQgKnZtYXMsCj4gICAJCWlmIChlbnRyeS0+ZmxhZ3MgJiBFWEVDX09CSkVD VF9ORUVEU19GRU5DRSkgewo+ICAgCQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFz dF9mZW5jZWRfcmVxLCByZXEpOwo+ICAgCQkJaWYgKGVudHJ5LT5mbGFncyAmIF9fRVhFQ19PQkpF Q1RfSEFTX0ZFTkNFKSB7Cj4gLQkJCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuZ2luZS0+ZGV2KTsKPiArCQkJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAkJCQlsaXN0X21vdmVfdGFpbCgmZGV2X3ByaXYt PmZlbmNlX3JlZ3Nbb2JqLT5mZW5jZV9yZWddLmxydV9saXN0LAo+ICAgCQkJCQkgICAgICAgJmRl dl9wcml2LT5tbS5mZW5jZV9saXN0KTsKPiAgIAkJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwo+IGluZGV4IDM2NGNmODIzNjAyMS4uNGUzNDQ3MDdjZWJjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTEwLDE3ICsxMTAsMTkgQEAgY29uc3Qgc3Ry dWN0IGk5MTVfZ2d0dF92aWV3IGk5MTVfZ2d0dF92aWV3X3JvdGF0ZWQgPSB7Cj4gICAJLnR5cGUg PSBJOTE1X0dHVFRfVklFV19ST1RBVEVELAo+ICAgfTsKPgo+IC1pbnQgaW50ZWxfc2FuaXRpemVf ZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcHBndHQpCj4g K2ludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCQkgICAgICAgCWludCBlbmFibGVfcHBndHQpCj4gICB7Cj4gICAJYm9v bCBoYXNfYWxpYXNpbmdfcHBndHQ7Cj4gICAJYm9vbCBoYXNfZnVsbF9wcGd0dDsKPiAgIAlib29s IGhhc19mdWxsXzQ4Yml0X3BwZ3R0Owo+Cj4gLQloYXNfYWxpYXNpbmdfcHBndHQgPSBJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA2Owo+IC0JaGFzX2Z1bGxfcHBndHQgPSBJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA3Owo+IC0JaGFzX2Z1bGxfNDhiaXRfcHBndHQgPSBJU19CUk9BRFdFTEwoZGV2KSB8 fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5Owo+ICsJaGFzX2FsaWFzaW5nX3BwZ3R0ID0gSU5U RUxfR0VOKGRldl9wcml2KSA+PSA2Owo+ICsJaGFzX2Z1bGxfcHBndHQgPSBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDc7Cj4gKwloYXNfZnVsbF80OGJpdF9wcGd0dCA9Cj4gKwkgICAgICAgCUlTX0JS T0FEV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5Owo+Cj4gLQlpZiAo aW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJp dikpCj4gICAJCWhhc19mdWxsX3BwZ3R0ID0gZmFsc2U7IC8qIGVtdWxhdGlvbiBpcyB0b28gaGFy ZCAqLwo+Cj4gICAJaWYgKCFoYXNfYWxpYXNpbmdfcHBndHQpCj4gQEAgLTEzMCw3ICsxMzIsNyBA QCBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBlbmFibGVfcHBndHQpCj4gICAJICogV2UgZG9uJ3QgYWxsb3cgZGlzYWJsaW5nIFBQR1RU IGZvciBnZW45KyBhcyBpdCdzIGEgcmVxdWlyZW1lbnQgZm9yCj4gICAJICogZXhlY2xpc3RzLCB0 aGUgc29sZSBtZWNoYW5pc20gYXZhaWxhYmxlIHRvIHN1Ym1pdCB3b3JrLgo+ICAgCSAqLwo+IC0J aWYgKGVuYWJsZV9wcGd0dCA9PSAwICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkKPiArCWlm IChlbmFibGVfcHBndHQgPT0gMCAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPiAgIAkJcmV0 dXJuIDA7Cj4KPiAgIAlpZiAoZW5hYmxlX3BwZ3R0ID09IDEpCj4gQEAgLTE0NCwxOSArMTQ2LDE5 IEBAIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IGVuYWJsZV9wcGd0dCkKPgo+ICAgI2lmZGVmIENPTkZJR19JTlRFTF9JT01NVQo+ICAg CS8qIERpc2FibGUgcHBndHQgb24gU05CIGlmIFZULWQgaXMgb24uICovCj4gLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPT0gNiAmJiBpbnRlbF9pb21tdV9nZnhfbWFwcGVkKSB7Cj4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA9PSA2ICYmIGludGVsX2lvbW11X2dmeF9tYXBwZWQpIHsKCklT X0dFTjYgPwoKPiAgIAkJRFJNX0lORk8oIkRpc2FibGluZyBQUEdUVCBiZWNhdXNlIFZULWQgaXMg b25cbiIpOwo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gICAjZW5kaWYKPgo+ICAgCS8qIEVhcmx5 IFZMViBkb2Vzbid0IGhhdmUgdGhpcyAqLwo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBk ZXYtPnBkZXYtPnJldmlzaW9uIDwgMHhiKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikgJiYgZGV2X3ByaXYtPmRldi0+cGRldi0+cmV2aXNpb24gPCAweGIpIHsKPiAgIAkJRFJNX0RF QlVHX0RSSVZFUigiZGlzYWJsaW5nIFBQR1RUIG9uIHByZS1CMyBzdGVwIFZMVlxuIik7Cj4gICAJ CXJldHVybiAwOwo+ICAgCX0KPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDggJiYg aTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAm JiBpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gICAJCXJldHVybiBoYXNfZnVsbF80OGJpdF9wcGd0 dCA/IDMgOiAyOwo+ICAgCWVsc2UKPiAgIAkJcmV0dXJuIGhhc19hbGlhc2luZ19wcGd0dCA/IDEg OiAwOwo+IEBAIC05OTQsNyArOTk2LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVw KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0pOwo+Cj4gLQlpZiAoaW50ZWxfdmdw dV9hY3RpdmUodm0tPmRldikpCj4gKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUodG9faTkxNSh2bS0+ ZGV2KSkpCj4gICAJCWdlbjhfcHBndHRfbm90aWZ5X3ZndChwcGd0dCwgZmFsc2UpOwo+Cj4gICAJ aWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkKPiBAQCAtMTU0NSwx NCArMTU0NywxNCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQpCj4gICAJCQkJCQkJICAgICAgMCwgMCwKPiAgIAkJCQkJCQkgICAgICBHRU44 X1BNTDRFX1NISUZUKTsKPgo+IC0JCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShwcGd0dC0+YmFzZS5k ZXYpKSB7Cj4gKwkJaWYgKGludGVsX3ZncHVfYWN0aXZlKHRvX2k5MTUocHBndHQtPmJhc2UuZGV2 KSkpIHsKPiAgIAkJCXJldCA9IGdlbjhfcHJlYWxsb2NhdGVfdG9wX2xldmVsX3BkcHMocHBndHQp Owo+ICAgCQkJaWYgKHJldCkKPiAgIAkJCQlnb3RvIGZyZWVfc2NyYXRjaDsKPiAgIAkJfQo+ICAg CX0KPgo+IC0JaWYgKGludGVsX3ZncHVfYWN0aXZlKHBwZ3R0LT5iYXNlLmRldikpCj4gKwlpZiAo aW50ZWxfdmdwdV9hY3RpdmUodG9faTkxNShwcGd0dC0+YmFzZS5kZXYpKSkKPiAgIAkJZ2VuOF9w cGd0dF9ub3RpZnlfdmd0KHBwZ3R0LCB0cnVlKTsKPgo+ICAgCXJldHVybiAwOwo+IEBAIC0yMDgw LDcgKzIwODIsNyBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQpCj4gICAJfSBlbHNlCj4gICAJCUJVRygpOwo+Cj4gLQlpZiAoaW50ZWxfdmdw dV9hY3RpdmUoZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJ CXBwZ3R0LT5zd2l0Y2hfbW0gPSB2Z3B1X21tX3N3aXRjaDsKPgo+ICAgCXJldCA9IGdlbjZfcHBn dHRfYWxsb2MocHBndHQpOwo+IEBAIC0yNzI5LDcgKzI3MzEsNyBAQCBzdGF0aWMgaW50IGk5MTVf Z2VtX3NldHVwX2dsb2JhbF9ndHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpOTE1X2Fk ZHJlc3Nfc3BhY2VfaW5pdCgmZ2d0dC0+YmFzZSwgZGV2X3ByaXYpOwo+ICAgCWdndHQtPmJhc2Uu dG90YWwgKz0gUEFHRV9TSVpFOwo+Cj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkgewo+ ICsJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkgewo+ICAgCQlyZXQgPSBpbnRlbF92 Z3RfYmFsbG9vbihkZXYpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiBAQCAt MjgzMyw3ICsyODM1LDcgQEAgdm9pZCBpOTE1X2dndHRfY2xlYW51cF9odyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgCWk5MTVfZ2VtX2NsZWFudXBfc3RvbGVuKGRldik7Cj4KPiAgIAlpZiAo ZHJtX21tX2luaXRpYWxpemVkKCZnZ3R0LT5iYXNlLm1tKSkgewo+IC0JCWlmIChpbnRlbF92Z3B1 X2FjdGl2ZShkZXYpKQo+ICsJCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJ CQlpbnRlbF92Z3RfZGViYWxsb29uKCk7Cj4KPiAgIAkJZHJtX21tX3Rha2Vkb3duKCZnZ3R0LT5i YXNlLm1tKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVu ZGVyX3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUu Ywo+IGluZGV4IDQyM2NmNTE0NGJjYi4uN2M5MzMyN2I3MGZlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPiBAQCAtMjksNyArMjksNyBAQAo+ ICAgI2luY2x1ZGUgImludGVsX3JlbmRlcnN0YXRlLmgiCj4KPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfcmVuZGVyc3RhdGVfcm9kYXRhICoKPiAtcmVuZGVyX3N0YXRlX2dldF9yb2RhdGEo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3QgaW50IGdlbikKPiArcmVuZGVyX3N0YXRlX2dl dF9yb2RhdGEoY29uc3QgaW50IGdlbikKPiAgIHsKPiAgIAlzd2l0Y2ggKGdlbikgewo+ICAgCWNh c2UgNjoKPiBAQCAtNDUsMTkgKzQ1LDIwIEBAIHJlbmRlcl9zdGF0ZV9nZXRfcm9kYXRhKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGNvbnN0IGludCBnZW4pCj4gICAJcmV0dXJuIE5VTEw7Cj4gICB9 Cj4KPiAtc3RhdGljIGludCByZW5kZXJfc3RhdGVfaW5pdChzdHJ1Y3QgcmVuZGVyX3N0YXRlICpz bywgc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArc3RhdGljIGludCByZW5kZXJfc3RhdGVfaW5p dChzdHJ1Y3QgcmVuZGVyX3N0YXRlICpzbywKPiArCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJaW50IHJldDsKPgo+IC0Jc28tPmdlbiA9IElOVEVM X0lORk8oZGV2KS0+Z2VuOwo+IC0Jc28tPnJvZGF0YSA9IHJlbmRlcl9zdGF0ZV9nZXRfcm9kYXRh KGRldiwgc28tPmdlbik7Cj4gKwlzby0+Z2VuID0gSU5URUxfR0VOKGRldl9wcml2KTsKPiArCXNv LT5yb2RhdGEgPSByZW5kZXJfc3RhdGVfZ2V0X3JvZGF0YShzby0+Z2VuKTsKPiAgIAlpZiAoc28t PnJvZGF0YSA9PSBOVUxMKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICAgCWlmIChzby0+cm9kYXRhLT5i YXRjaF9pdGVtcyAqIDQgPiA0MDk2KQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPgo+IC0Jc28tPm9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoZGV2LCA0MDk2KTsKPiArCXNvLT5vYmogPSBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlKGRldl9wcml2LT5kZXYsIDQwOTYpOwo+ICAgCWlmIChJU19FUlIo c28tPm9iaikpCj4gICAJCXJldHVybiBQVFJfRVJSKHNvLT5vYmopOwo+Cj4gQEAgLTE3Nyw3ICsx NzgsNyBAQCBpbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX3ByZXBhcmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+ICAgCWlmIChXQVJOX09OKGVuZ2luZS0+aWQgIT0gUkNTKSkKPiAg IAkJcmV0dXJuIC1FTk9FTlQ7Cj4KPiAtCXJldCA9IHJlbmRlcl9zdGF0ZV9pbml0KHNvLCBlbmdp bmUtPmRldik7Cj4gKwlyZXQgPSByZW5kZXJfc3RhdGVfaW5pdChzbywgZW5naW5lLT5pOTE1KTsK PiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zaHJpbmtlci5jCj4gaW5kZXggNzkwMDRmMzU2MTc0Li41MzhjMzA0OTk4NDggMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBAQCAtMTMxLDcg KzEzMSw3IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gICAJdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7Cj4KPiAgIAl0cmFjZV9pOTE1X2dlbV9z aHJpbmsoZGV2X3ByaXYsIHRhcmdldCwgZmxhZ3MpOwo+IC0JaTkxNV9nZW1fcmV0aXJlX3JlcXVl c3RzKGRldl9wcml2LT5kZXYpOwo+ICsJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2 KTsKPgo+ICAgCS8qCj4gICAJICogVW5iaW5kaW5nIG9mIG9iamVjdHMgd2lsbCByZXF1aXJlIEhX IGFjY2VzczsgTGV0IHVzIG5vdCB3YWtlIHRoZQo+IEBAIC0yMDksNyArMjA5LDcgQEAgaTkxNV9n ZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlpZiAoZmxh Z3MgJiBJOTE1X1NIUklOS19CT1VORCkKPiAgIAkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYpOwo+Cj4gLQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYtPmRldik7Cj4gKwlp OTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwo+Cj4gICAJcmV0dXJuIGNvdW50Owo+ ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IDg5NzI1Yzll ZmMyNS4uMjJkOTI2ODM5YjY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCj4gQEAgLTgyNCwxOSArODI0LDE4IEBAIHN0YXRpYyB1aW50MzJfdCBpOTE1X2Vycm9yX2dl bmVyYXRlX2NvZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXJldHVy biBlcnJvcl9jb2RlOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9mZW5j ZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3Jk X2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJICAgc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvcikKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJaW50IGk7Cj4KPiAt CWlmIChJU19HRU4zKGRldikgfHwgSVNfR0VOMihkZXYpKSB7Cj4gKwlpZiAoSVNfR0VOMyhkZXZf cHJpdikgfHwgSVNfR0VOMihkZXZfcHJpdikpIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IGRldl9w cml2LT5udW1fZmVuY2VfcmVnczsgaSsrKQo+ICAgCQkJZXJyb3ItPmZlbmNlW2ldID0gSTkxNV9S RUFEKEZFTkNFX1JFRyhpKSk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjUoZGV2KSB8fCBJU19HRU40 KGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikgfHwgSVNfR0VONChkZXZf cHJpdikpIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fZmVuY2VfcmVnczsg aSsrKQo+ICAgCQkJZXJyb3ItPmZlbmNlW2ldID0gSTkxNV9SRUFENjQoRkVOQ0VfUkVHXzk2NV9M TyhpKSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCX0g ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gICAJCWZvciAoaSA9IDA7IGkg PCBkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3M7IGkrKykKPiAgIAkJCWVycm9yLT5mZW5jZVtpXSA9 IEk5MTVfUkVBRDY0KEZFTkNFX1JFR19HRU42X0xPKGkpKTsKPiAgIAl9Cj4gQEAgLTg1MSw3ICs4 NTAsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3JlY29yZF9zZW1hcGhvcmVfc3RhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnRv Owo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+Cj4gLQlpZiAoIWk5MTVfc2VtYXBob3Jl X2lzX2VuYWJsZWQoZGV2X3ByaXYtPmRldikpCj4gKwlpZiAoIWk5MTVfc2VtYXBob3JlX2lzX2Vu YWJsZWQoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm47Cj4KPiAgIAlpZiAoIWVycm9yLT5zZW1hcGhv cmVfb2JqKQo+IEBAIC04OTMsMzEgKzg5MiwyOSBAQCBzdGF0aWMgdm9pZCBnZW42X3JlY29yZF9z ZW1hcGhvcmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCX0K PiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBpOTE1X3JlY29yZF9yaW5nX3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gK3N0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9l cnJvcl9zdGF0ZSAqZXJyb3IsCj4gICAJCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+ICAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9yaW5nICplcmluZykKPiAgIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gLQo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDYpIHsKPiAgIAkJZXJpbmctPnJjX3BzbWkgPSBJOTE1X1JFQUQoUklO R19QU01JX0NUTChlbmdpbmUtPm1taW9fYmFzZSkpOwo+ICAgCQllcmluZy0+ZmF1bHRfcmVnID0g STkxNV9SRUFEKFJJTkdfRkFVTFRfUkVHKGVuZ2luZSkpOwo+IC0JCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA4KQo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gICAJCQln ZW44X3JlY29yZF9zZW1hcGhvcmVfc3RhdGUoZGV2X3ByaXYsIGVycm9yLCBlbmdpbmUsCj4gICAJ CQkJCQkgICAgZXJpbmcpOwo+ICAgCQllbHNlCj4gICAJCQlnZW42X3JlY29yZF9zZW1hcGhvcmVf c3RhdGUoZGV2X3ByaXYsIGVuZ2luZSwgZXJpbmcpOwo+ICAgCX0KPgo+IC0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsK PiAgIAkJZXJpbmctPmZhZGRyID0gSTkxNV9SRUFEKFJJTkdfRE1BX0ZBREQoZW5naW5lLT5tbWlv X2Jhc2UpKTsKPiAgIAkJZXJpbmctPmlwZWlyID0gSTkxNV9SRUFEKFJJTkdfSVBFSVIoZW5naW5l LT5tbWlvX2Jhc2UpKTsKPiAgIAkJZXJpbmctPmlwZWhyID0gSTkxNV9SRUFEKFJJTkdfSVBFSFIo ZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgIAkJZXJpbmctPmluc3Rkb25lID0gSTkxNV9SRUFEKFJJ TkdfSU5TVERPTkUoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgIAkJZXJpbmctPmluc3RwcyA9IEk5 MTVfUkVBRChSSU5HX0lOU1RQUyhlbmdpbmUtPm1taW9fYmFzZSkpOwo+ICAgCQllcmluZy0+YmJh ZGRyID0gSTkxNV9SRUFEKFJJTkdfQkJBRERSKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gLQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4KSB7Cj4gICAJCQllcmluZy0+ZmFkZHIgfD0gKHU2NCkgSTkxNV9SRUFEKFJJTkdfRE1B X0ZBRERfVURXKGVuZ2luZS0+bW1pb19iYXNlKSkgPDwgMzI7Cj4gICAJCQllcmluZy0+YmJhZGRy IHw9ICh1NjQpIEk5MTVfUkVBRChSSU5HX0JCQUREUl9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKSA8 PCAzMjsKPiAgIAkJfQo+IEBAIC05MzksMTAgKzkzNiwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jl Y29yZF9yaW5nX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJZXJpbmctPnRhaWwg PSBJOTE1X1JFQURfVEFJTChlbmdpbmUpOwo+ICAgCWVyaW5nLT5jdGwgPSBJOTE1X1JFQURfQ1RM KGVuZ2luZSk7Cj4KPiAtCWlmIChJOTE1X05FRURfR0ZYX0hXUyhkZXYpKSB7Cj4gKwlpZiAoSTkx NV9ORUVEX0dGWF9IV1MoZGV2X3ByaXYpKSB7Cj4gICAJCWk5MTVfcmVnX3QgbW1pbzsKPgo+IC0J CWlmIChJU19HRU43KGRldikpIHsKPiArCQlpZiAoSVNfR0VONyhkZXZfcHJpdikpIHsKPiAgIAkJ CXN3aXRjaCAoZW5naW5lLT5pZCkgewo+ICAgCQkJZGVmYXVsdDoKPiAgIAkJCWNhc2UgUkNTOgo+ IEBAIC05NTgsNyArOTU1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCW1taW8gPSBWRUJPWF9IV1NfUEdBX0dFTjc7 Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9Cj4gLQkJfSBlbHNlIGlmIChJU19HRU42KGVuZ2luZS0+ ZGV2KSkgewo+ICsJCX0gZWxzZSBpZiAoSVNfR0VONihlbmdpbmUtPmk5MTUpKSB7Cj4gICAJCQlt bWlvID0gUklOR19IV1NfUEdBX0dFTjYoZW5naW5lLT5tbWlvX2Jhc2UpOwo+ICAgCQl9IGVsc2Ug ewo+ICAgCQkJLyogWFhYOiBnZW44IHJldHVybnMgdG8gc2FuaXR5ICovCj4gQEAgLTk3MSwxOCAr OTY4LDE4IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgIAllcmluZy0+aGFuZ2NoZWNrX3Njb3JlID0gZW5naW5lLT5oYW5nY2hl Y2suc2NvcmU7Cj4gICAJZXJpbmctPmhhbmdjaGVja19hY3Rpb24gPSBlbmdpbmUtPmhhbmdjaGVj ay5hY3Rpb247Cj4KPiAtCWlmIChVU0VTX1BQR1RUKGRldikpIHsKPiArCWlmIChVU0VTX1BQR1RU KGRldl9wcml2KSkgewo+ICAgCQlpbnQgaTsKPgo+ICAgCQllcmluZy0+dm1faW5mby5nZnhfbW9k ZSA9IEk5MTVfUkVBRChSSU5HX01PREVfR0VONyhlbmdpbmUpKTsKPgo+IC0JCWlmIChJU19HRU42 KGRldikpCj4gKwkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICAgCQkJZXJpbmctPnZtX2luZm8u cHBfZGlyX2Jhc2UgPQo+ICAgCQkJCUk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFX1JFQUQoZW5n aW5lKSk7Cj4gLQkJZWxzZSBpZiAoSVNfR0VONyhkZXYpKQo+ICsJCWVsc2UgaWYgKElTX0dFTjco ZGV2X3ByaXYpKQo+ICAgCQkJZXJpbmctPnZtX2luZm8ucHBfZGlyX2Jhc2UgPQo+ICAgCQkJCUk5 MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkpOwo+IC0JCWVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDgpCj4gKwkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4 KQo+ICAgCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICAgCQkJCWVyaW5nLT52bV9pbmZv LnBkcFtpXSA9Cj4gICAJCQkJCUk5MTVfUkVBRChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkp KTsKPiBAQCAtOTk4LDcgKzk5NSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9hY3Rp dmVfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkJCSAgIHN0 cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IsCj4gICAJCQkJCSAgIHN0cnVjdCBkcm1f aTkxNV9lcnJvcl9yaW5nICplcmluZykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+Cj4gICAJLyogQ3VycmVudGx5IHJlbmRlciByaW5nIGlzIHRoZSBv bmx5IEhXIGNvbnRleHQgdXNlciAqLwo+IEBAIC0xMDE2LDEwICsxMDEzLDkgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVjb3JkX2FjdGl2ZV9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKPiAgIAl9Cj4gICB9Cj4KPiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX3Jp bmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29y ZF9yaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJICBzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAgCXN0cnVjdCBpOTE1X2dndHQg KmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0Owo+ICAgCWludCBpLCBjb3VudDsKPiBAQCAtMTAzMCwxMiArMTAyNiwxMiBAQCBz dGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNvcmRfcmluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwK Pgo+ICAgCQllcnJvci0+cmluZ1tpXS5waWQgPSAtMTsKPgo+IC0JCWlmIChlbmdpbmUtPmRldiA9 PSBOVUxMKQo+ICsJCWlmIChlbmdpbmUtPmk5MTUgPT0gTlVMTCkKCmludGVsX2VuZ2luZV9pbml0 aWFsaXplZCA/Cgo+ICAgCQkJY29udGludWU7Cj4KPiAgIAkJZXJyb3ItPnJpbmdbaV0udmFsaWQg PSB0cnVlOwo+Cj4gLQkJaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShkZXYsIGVycm9yLCBlbmdpbmUs ICZlcnJvci0+cmluZ1tpXSk7Cj4gKwkJaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShkZXZfcHJpdiwg ZXJyb3IsIGVuZ2luZSwgJmVycm9yLT5yaW5nW2ldKTsKPgo+ICAgCQlyZXF1ZXN0ID0gaTkxNV9n ZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwo+ICAgCQlpZiAocmVxdWVzdCkgewo+IEBA IC0xMzAxLDE1ICsxMjk3LDE0IEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCWVycm9yLT5laXIgPSBJOTE1 X1JFQUQoRUlSKTsKPiAgIAllcnJvci0+cGd0YmxfZXIgPSBJOTE1X1JFQUQoUEdUQkxfRVIpOwo+ Cj4gLQlpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShkZXYsIGVycm9yLT5leHRyYV9pbnN0ZG9uZSk7 Cj4gKwlpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShkZXZfcHJpdiwgZXJyb3ItPmV4dHJhX2luc3Rk b25lKTsKPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gK3N0YXRpYyB2b2lkIGk5MTVfZXJyb3JfY2FwdHVyZV9tc2co c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCSAgIHN0cnVjdCBkcm1f aTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IsCj4gICAJCQkJICAgdTMyIGVuZ2luZV9tYXNrLAo+ICAg CQkJCSAgIGNvbnN0IGNoYXIgKmVycm9yX21zZykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJdTMyIGVjb2RlOwo+ICAg CWludCByaW5nX2lkID0gLTEsIGxlbjsKPgo+IEBAIC0xMzE3LDcgKzEzMTIsNyBAQCBzdGF0aWMg dm9pZCBpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4KPiAg IAlsZW4gPSBzY25wcmludGYoZXJyb3ItPmVycm9yX21zZywgc2l6ZW9mKGVycm9yLT5lcnJvcl9t c2cpLAo+ICAgCQkJIkdQVSBIQU5HOiBlY29kZSAlZDolZDoweCUwOHgiLAo+IC0JCQlJTlRFTF9J TkZPKGRldiktPmdlbiwgcmluZ19pZCwgZWNvZGUpOwo+ICsJCQlJTlRFTF9JTkZPKGRldl9wcml2 KS0+Z2VuLCByaW5nX2lkLCBlY29kZSk7CgpJTlRFTF9HRU4KCj4KPiAgIAlpZiAocmluZ19pZCAh PSAtMSAmJiBlcnJvci0+cmluZ1tyaW5nX2lkXS5waWQgIT0gLTEpCj4gICAJCWxlbiArPSBzY25w cmludGYoZXJyb3ItPmVycm9yX21zZyArIGxlbiwKPiBAQCAtMTM1MiwxMSArMTM0NywxMSBAQCBz dGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfZ2VuX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgICAqIG91dCBhIHN0cnVjdHVyZSB3aGljaCBiZWNvbWVzIGF2YWlsYWJs ZSBpbiBkZWJ1Z2ZzIGZvciB1c2VyIGxldmVsIHRvb2xzCj4gICAgKiB0byBwaWNrIHVwLgo+ICAg ICovCj4gLXZvaWQgaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHUzMiBlbmdpbmVfbWFzaywKPiArdm9pZCBpOTE1X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAgICB1MzIgZW5naW5lX21h c2ssCj4gICAJCQkgICAgICBjb25zdCBjaGFyICplcnJvcl9tc2cpCj4gICB7Cj4gICAJc3RhdGlj IGJvb2wgd2FybmVkOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yOwo+ ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiBAQCAtMTM3MiwxNSArMTM2NywxNSBAQCB2b2lk IGk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZW5n aW5lX21hc2ssCj4gICAJaTkxNV9jYXB0dXJlX2dlbl9zdGF0ZShkZXZfcHJpdiwgZXJyb3IpOwo+ ICAgCWk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoZGV2X3ByaXYsIGVycm9yKTsKPiAgIAlpOTE1X2dl bV9jYXB0dXJlX2J1ZmZlcnMoZGV2X3ByaXYsIGVycm9yKTsKPiAtCWk5MTVfZ2VtX3JlY29yZF9m ZW5jZXMoZGV2LCBlcnJvcik7Cj4gLQlpOTE1X2dlbV9yZWNvcmRfcmluZ3MoZGV2LCBlcnJvcik7 Cj4gKwlpOTE1X2dlbV9yZWNvcmRfZmVuY2VzKGRldl9wcml2LCBlcnJvcik7Cj4gKwlpOTE1X2dl bV9yZWNvcmRfcmluZ3MoZGV2X3ByaXYsIGVycm9yKTsKPgo+ICAgCWRvX2dldHRpbWVvZmRheSgm ZXJyb3ItPnRpbWUpOwo+Cj4gLQllcnJvci0+b3ZlcmxheSA9IGludGVsX292ZXJsYXlfY2FwdHVy ZV9lcnJvcl9zdGF0ZShkZXYpOwo+IC0JZXJyb3ItPmRpc3BsYXkgPSBpbnRlbF9kaXNwbGF5X2Nh cHR1cmVfZXJyb3Jfc3RhdGUoZGV2KTsKPiArCWVycm9yLT5vdmVybGF5ID0gaW50ZWxfb3Zlcmxh eV9jYXB0dXJlX2Vycm9yX3N0YXRlKGRldl9wcml2KTsKPiArCWVycm9yLT5kaXNwbGF5ID0gaW50 ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKGRldl9wcml2KTsKPgo+IC0JaTkxNV9lcnJv cl9jYXB0dXJlX21zZyhkZXYsIGVycm9yLCBlbmdpbmVfbWFzaywgZXJyb3JfbXNnKTsKPiArCWk5 MTVfZXJyb3JfY2FwdHVyZV9tc2coZGV2X3ByaXYsIGVycm9yLCBlbmdpbmVfbWFzaywgZXJyb3Jf bXNnKTsKPiAgIAlEUk1fSU5GTygiJXNcbiIsIGVycm9yLT5lcnJvcl9tc2cpOwo+Cj4gICAJc3Bp bl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5ncHVfZXJyb3IubG9jaywgZmxhZ3MpOwo+IEBAIC0x NDAwLDcgKzEzOTUsNyBAQCB2b2lkIGk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1MzIgZW5naW5lX21hc2ssCj4gICAJCURSTV9JTkZPKCJQbGVhc2UgZmls ZSBhIF9uZXdfIGJ1ZyByZXBvcnQgb24gYnVncy5mcmVlZGVza3RvcC5vcmcgYWdhaW5zdCBEUkkg LT4gRFJNL0ludGVsXG4iKTsKPiAgIAkJRFJNX0lORk8oImRybS9pOTE1IGRldmVsb3BlcnMgY2Fu IHRoZW4gcmVhc3NpZ24gdG8gdGhlIHJpZ2h0IGNvbXBvbmVudCBpZiBpdCdzIG5vdCBhIGtlcm5l bCBpc3N1ZS5cbiIpOwo+ICAgCQlEUk1fSU5GTygiVGhlIGdwdSBjcmFzaCBkdW1wIGlzIHJlcXVp cmVkIHRvIGFuYWx5emUgZ3B1IGhhbmdzLCBzbyBwbGVhc2UgYWx3YXlzIGF0dGFjaCBpdC5cbiIp Owo+IC0JCURSTV9JTkZPKCJHUFUgY3Jhc2ggZHVtcCBzYXZlZCB0byAvc3lzL2NsYXNzL2RybS9j YXJkJWQvZXJyb3JcbiIsIGRldi0+cHJpbWFyeS0+aW5kZXgpOwo+ICsJCURSTV9JTkZPKCJHUFUg Y3Jhc2ggZHVtcCBzYXZlZCB0byAvc3lzL2NsYXNzL2RybS9jYXJkJWQvZXJyb3JcbiIsIGRldl9w cml2LT5kZXYtPnByaW1hcnktPmluZGV4KTsKPiAgIAkJd2FybmVkID0gdHJ1ZTsKPiAgIAl9Cj4g ICB9Cj4gQEAgLTE0NTAsMTcgKzE0NDUsMTcgQEAgY29uc3QgY2hhciAqaTkxNV9jYWNoZV9sZXZl bF9zdHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCB0eXBlKQo+ICAgfQo+Cj4g ICAvKiBOQjogcGxlYXNlIG5vdGljZSB0aGUgbWVtc2V0ICovCj4gLXZvaWQgaTkxNV9nZXRfZXh0 cmFfaW5zdGRvbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgKmluc3Rkb25lKQo+ ICt2b2lkIGk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiArCQkJICAgICB1aW50MzJfdCAqaW5zdGRvbmUpCj4gICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCW1lbXNl dChpbnN0ZG9uZSwgMCwgc2l6ZW9mKCppbnN0ZG9uZSkgKiBJOTE1X05VTV9JTlNURE9ORV9SRUcp Owo+Cj4gLQlpZiAoSVNfR0VOMihkZXYpIHx8IElTX0dFTjMoZGV2KSkKPiArCWlmIChJU19HRU4y KGRldl9wcml2KSB8fCBJU19HRU4zKGRldl9wcml2KSkKPiAgIAkJaW5zdGRvbmVbMF0gPSBJOTE1 X1JFQUQoR0VOMl9JTlNURE9ORSk7Cj4gLQllbHNlIGlmIChJU19HRU40KGRldikgfHwgSVNfR0VO NShkZXYpIHx8IElTX0dFTjYoZGV2KSkgewo+ICsJZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikg fHwgSVNfR0VONShkZXZfcHJpdikgfHwgSVNfR0VONihkZXZfcHJpdikpIHsKPiAgIAkJaW5zdGRv bmVbMF0gPSBJOTE1X1JFQUQoUklOR19JTlNURE9ORShSRU5ERVJfUklOR19CQVNFKSk7Cj4gICAJ CWluc3Rkb25lWzFdID0gSTkxNV9SRUFEKEdFTjRfSU5TVERPTkUxKTsKPiAtCX0gZWxzZSBpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgewo+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuID49IDcpIHsKCklOVEVMX0dFTgoKPiAgIAkJaW5zdGRvbmVbMF0gPSBJOTE1 X1JFQUQoUklOR19JTlNURE9ORShSRU5ERVJfUklOR19CQVNFKSk7Cj4gICAJCWluc3Rkb25lWzFd ID0gSTkxNV9SRUFEKEdFTjdfU0NfSU5TVERPTkUpOwo+ICAgCQlpbnN0ZG9uZVsyXSA9IEk5MTVf UkVBRChHRU43X1NBTVBMRVJfSU5TVERPTkUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGlu ZGV4IDJmNmZkMzNjMDdiYS4uODg2NGVlMTkxNTRmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCj4gQEAgLTI1NTUsMTUgKzI1NTUsMTUgQEAgc3RhdGljIHZvaWQgaTkxNV9lcnJvcl93YWtl X3VwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgICAqIEZpcmUgYW4gZXJy b3IgdWV2ZW50IHNvIHVzZXJzcGFjZSBjYW4gc2VlIHRoYXQgYSBoYW5nIG9yIGVycm9yCj4gICAg KiB3YXMgZGV0ZWN0ZWQuCj4gICAgKi8KPiAtc3RhdGljIHZvaWQgaTkxNV9yZXNldF9hbmRfd2Fr ZXVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGk5MTVfcmVzZXRfYW5k X3dha2V1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3Qg a29iamVjdCAqa29iaiA9ICZkZXZfcHJpdi0+ZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqOwo+ICAg CWNoYXIgKmVycm9yX2V2ZW50W10gPSB7IEk5MTVfRVJST1JfVUVWRU5UICI9MSIsIE5VTEwgfTsK PiAgIAljaGFyICpyZXNldF9ldmVudFtdID0geyBJOTE1X1JFU0VUX1VFVkVOVCAiPTEiLCBOVUxM IH07Cj4gICAJY2hhciAqcmVzZXRfZG9uZV9ldmVudFtdID0geyBJOTE1X0VSUk9SX1VFVkVOVCAi PTAiLCBOVUxMIH07Cj4gICAJaW50IHJldDsKPgo+IC0Ja29iamVjdF91ZXZlbnRfZW52KCZkZXYt PnByaW1hcnktPmtkZXYtPmtvYmosIEtPQkpfQ0hBTkdFLCBlcnJvcl9ldmVudCk7Cj4gKwlrb2Jq ZWN0X3VldmVudF9lbnYoa29iaiwgS09CSl9DSEFOR0UsIGVycm9yX2V2ZW50KTsKPgo+ICAgCS8q Cj4gICAJICogTm90ZSB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgd29yayBpdGVtIHdoaWNoIGRvZXMg Z3B1IHJlc2V0cywgc28gd2UKPiBAQCAtMjU3Nyw4ICsyNTc3LDcgQEAgc3RhdGljIHZvaWQgaTkx NV9yZXNldF9hbmRfd2FrZXVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJICovCj4gICAJ aWYgKGk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoJmRldl9wcml2LT5ncHVfZXJyb3IpKSB7Cj4gICAJ CURSTV9ERUJVR19EUklWRVIoInJlc2V0dGluZyBjaGlwXG4iKTsKPiAtCQlrb2JqZWN0X3VldmVu dF9lbnYoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgS09CSl9DSEFOR0UsCj4gLQkJCQkgICBy ZXNldF9ldmVudCk7Cj4gKwkJa29iamVjdF91ZXZlbnRfZW52KGtvYmosIEtPQkpfQ0hBTkdFLCBy ZXNldF9ldmVudCk7Cj4KPiAgIAkJLyoKPiAgIAkJICogSW4gbW9zdCBjYXNlcyBpdCdzIGd1YXJh bnRlZWQgdGhhdCB3ZSBnZXQgaGVyZSB3aXRoIGFuIFJQTQo+IEBAIC0yNTg5LDcgKzI1ODgsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgIAkJICovCj4gICAJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPgo+IC0J CWludGVsX3ByZXBhcmVfcmVzZXQoZGV2KTsKPiArCQlpbnRlbF9wcmVwYXJlX3Jlc2V0KGRldl9w cml2KTsKPgo+ICAgCQkvKgo+ICAgCQkgKiBBbGwgc3RhdGUgcmVzZXQgX211c3RfIGJlIGNvbXBs ZXRlZCBiZWZvcmUgd2UgdXBkYXRlIHRoZQo+IEBAIC0yNTk3LDE0ICsyNTk2LDE0IEBAIHN0YXRp YyB2b2lkIGk5MTVfcmVzZXRfYW5kX3dha2V1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAg CQkgKiBwZW5kaW5nIHN0YXRlIGFuZCBub3QgcHJvcGVybHkgZHJvcCBsb2NrcywgcmVzdWx0aW5n IGluCj4gICAJCSAqIGRlYWRsb2NrcyB3aXRoIHRoZSByZXNldCB3b3JrLgo+ICAgCQkgKi8KPiAt CQlyZXQgPSBpOTE1X3Jlc2V0KGRldik7Cj4gKwkJcmV0ID0gaTkxNV9yZXNldChkZXZfcHJpdik7 Cj4KPiAtCQlpbnRlbF9maW5pc2hfcmVzZXQoZGV2KTsKPiArCQlpbnRlbF9maW5pc2hfcmVzZXQo ZGV2X3ByaXYpOwo+Cj4gICAJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPgo+ICAg CQlpZiAocmV0ID09IDApCj4gLQkJCWtvYmplY3RfdWV2ZW50X2VudigmZGV2LT5wcmltYXJ5LT5r ZGV2LT5rb2JqLAo+ICsJCQlrb2JqZWN0X3VldmVudF9lbnYoa29iaiwKPiAgIAkJCQkJICAgS09C Sl9DSEFOR0UsIHJlc2V0X2RvbmVfZXZlbnQpOwo+Cj4gICAJCS8qCj4gQEAgLTI2MTUsOSArMjYx NCw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRfYW5kX3dha2V1cChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAgCX0KPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBpOTE1X3JlcG9ydF9hbmRfY2xl YXJfZWlyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGk5MTVfcmVwb3J0 X2FuZF9jbGVhcl9laXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgIAl1aW50MzJfdCBpbnN0ZG9uZVtJOTE1X05VTV9JTlNURE9ORV9SRUddOwo+ICAgCXUzMiBl aXIgPSBJOTE1X1JFQUQoRUlSKTsKPiAgIAlpbnQgcGlwZSwgaTsKPiBAQCAtMjYyNyw5ICsyNjI1 LDkgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXBvcnRfYW5kX2NsZWFyX2VpcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+Cj4gICAJcHJfZXJyKCJyZW5kZXIgZXJyb3IgZGV0ZWN0ZWQsIEVJUjogMHgl MDh4XG4iLCBlaXIpOwo+Cj4gLQlpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShkZXYsIGluc3Rkb25l KTsKPiArCWk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKGRldl9wcml2LCBpbnN0ZG9uZSk7Cj4KPiAt CWlmIChJU19HNFgoZGV2KSkgewo+ICsJaWYgKElTX0c0WChkZXZfcHJpdikpIHsKPiAgIAkJaWYg KGVpciAmIChHTTQ1X0VSUk9SX01FTV9QUklWIHwgR000NV9FUlJPUl9DUF9QUklWKSkgewo+ICAg CQkJdTMyIGlwZWlyID0gSTkxNV9SRUFEKElQRUlSX0k5NjUpOwo+Cj4gQEAgLTI2NTEsNyArMjY0 OSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVwb3J0X2FuZF9jbGVhcl9laXIoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgIAkJfQo+ICAgCX0KPgo+IC0JaWYgKCFJU19HRU4yKGRldikpIHsKPiAr CWlmICghSVNfR0VOMihkZXZfcHJpdikpIHsKPiAgIAkJaWYgKGVpciAmIEk5MTVfRVJST1JfUEFH RV9UQUJMRSkgewo+ICAgCQkJdTMyIHBndGJsX2VyciA9IEk5MTVfUkVBRChQR1RCTF9FUik7Cj4g ICAJCQlwcl9lcnIoInBhZ2UgdGFibGUgZXJyb3JcbiIpOwo+IEBAIC0yNjczLDcgKzI2NzEsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3JlcG9ydF9hbmRfY2xlYXJfZWlyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gICAJCXByX2VycigiICBJTlNUUE06IDB4JTA4eFxuIiwgSTkxNV9SRUFEKElOU1RQ TSkpOwo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnN0ZG9uZSk7IGkrKykKPiAg IAkJCXByX2VycigiICBJTlNURE9ORV8lZDogMHglMDh4XG4iLCBpLCBpbnN0ZG9uZVtpXSk7Cj4g LQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkgewo+ICsJCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNCkgewo+ICAgCQkJdTMyIGlwZWlyID0gSTkxNV9SRUFEKElQRUlSKTsKPgo+ICAg CQkJcHJfZXJyKCIgIElQRUlSOiAweCUwOHhcbiIsIEk5MTVfUkVBRChJUEVJUikpOwo+IEBAIC0y NzE3LDEwICsyNzE1LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVwb3J0X2FuZF9jbGVhcl9laXIo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgICAqIHNvIHVzZXJzcGFjZSBrbm93cyBzb21ldGhp bmcgYmFkIGhhcHBlbmVkIChzaG91bGQgdHJpZ2dlciBjb2xsZWN0aW9uCj4gICAgKiBvZiBhIHJp bmcgZHVtcCBldGMuKS4KPiAgICAqLwo+IC12b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHUzMiBlbmdpbmVfbWFzaywKPiArdm9pZCBpOTE1X2hhbmRsZV9lcnJv cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgICAgIHUzMiBlbmdp bmVfbWFzaywKPiAgIAkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+ICAgewo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAl2 YV9saXN0IGFyZ3M7Cj4gICAJY2hhciBlcnJvcl9tc2dbODBdOwo+Cj4gQEAgLTI3MjgsOCArMjcy Niw4IEBAIHZvaWQgaTkxNV9oYW5kbGVfZXJyb3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMy IGVuZ2luZV9tYXNrLAo+ICAgCXZzY25wcmludGYoZXJyb3JfbXNnLCBzaXplb2YoZXJyb3JfbXNn KSwgZm10LCBhcmdzKTsKPiAgIAl2YV9lbmQoYXJncyk7Cj4KPiAtCWk5MTVfY2FwdHVyZV9lcnJv cl9zdGF0ZShkZXYsIGVuZ2luZV9tYXNrLCBlcnJvcl9tc2cpOwo+IC0JaTkxNV9yZXBvcnRfYW5k X2NsZWFyX2VpcihkZXYpOwo+ICsJaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKGRldl9wcml2LCBl bmdpbmVfbWFzaywgZXJyb3JfbXNnKTsKPiArCWk5MTVfcmVwb3J0X2FuZF9jbGVhcl9laXIoZGV2 X3ByaXYpOwo+Cj4gICAJaWYgKGVuZ2luZV9tYXNrKSB7Cj4gICAJCWF0b21pY19vcihJOTE1X1JF U0VUX0lOX1BST0dSRVNTX0ZMQUcsCj4gQEAgLTI3NTEsNyArMjc0OSw3IEBAIHZvaWQgaTkxNV9o YW5kbGVfZXJyb3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrLAo+ICAg CQlpOTE1X2Vycm9yX3dha2VfdXAoZGV2X3ByaXYsIGZhbHNlKTsKPiAgIAl9Cj4KPiAtCWk5MTVf cmVzZXRfYW5kX3dha2V1cChkZXYpOwo+ICsJaTkxNV9yZXNldF9hbmRfd2FrZXVwKGRldl9wcml2 KTsKPiAgIH0KPgo+ICAgLyogQ2FsbGVkIGZyb20gZHJtIGdlbmVyaWMgY29kZSwgcGFzc2VkICdj cnRjJyB3aGljaAo+IEBAIC0yODY5LDkgKzI4NjcsOSBAQCByaW5nX2lkbGUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCj4gICB9Cj4KPiAgIHN0YXRpYyBib29sCj4g LWlwZWhyX2lzX3NlbWFwaG9yZV93YWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBpcGVo cikKPiAraXBlaHJfaXNfc2VtYXBob3JlX3dhaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1MzIgaXBlaHIpCj4gICB7Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OCkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICAgCQlyZXR1cm4gKGlw ZWhyID4+IDIzKSA9PSAweDFjOwo+ICAgCX0gZWxzZSB7Cj4gICAJCWlwZWhyICY9IH5NSV9TRU1B UEhPUkVfU1lOQ19NQVNLOwo+IEBAIC0yODg0LDEwICsyODgyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICoKPiAgIHNlbWFwaG9yZV93YWl0X3RvX3NpZ25hbGxlcl9yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIGlwZWhyLAo+ICAgCQkJCSB1NjQgb2Zm c2V0KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5l LT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5pOTE1Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsK Pgo+IC0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOCkgewo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICAgCQlmb3JfZWFjaF9lbmdpbmUoc2lnbmFsbGVyLCBk ZXZfcHJpdikgewo+ICAgCQkJaWYgKGVuZ2luZSA9PSBzaWduYWxsZXIpCj4gICAJCQkJY29udGlu dWU7Cj4gQEAgLTI5MTYsNyArMjkxNCw3IEBAIHNlbWFwaG9yZV93YWl0X3RvX3NpZ25hbGxlcl9y aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIGlwZWhyLAo+ICAgc3RhdGlj IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgo+ICAgc2VtYXBob3JlX3dhaXRzX2ZvcihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAqc2Vxbm8pCj4gICB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdTMy IGNtZCwgaXBlaHIsIGhlYWQ7Cj4gICAJdTY0IG9mZnNldCA9IDA7Cj4gICAJaW50IGksIGJhY2t3 YXJkczsKPiBAQCAtMjk0Miw3ICsyOTQwLDcgQEAgc2VtYXBob3JlX3dhaXRzX2ZvcihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAqc2Vxbm8pCj4gICAJCXJldHVybiBOVUxMOwo+ Cj4gICAJaXBlaHIgPSBJOTE1X1JFQUQoUklOR19JUEVIUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ IC0JaWYgKCFpcGVocl9pc19zZW1hcGhvcmVfd2FpdChlbmdpbmUtPmRldiwgaXBlaHIpKQo+ICsJ aWYgKCFpcGVocl9pc19zZW1hcGhvcmVfd2FpdChlbmdpbmUtPmk5MTUsIGlwZWhyKSkKPiAgIAkJ cmV0dXJuIE5VTEw7Cj4KPiAgIAkvKgo+IEBAIC0yOTU0LDcgKzI5NTIsNyBAQCBzZW1hcGhvcmVf d2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpzZXFubykKPiAg IAkgKiByaW5nYnVmZmVyIGl0c2VsZi4KPiAgIAkgKi8KPiAgIAloZWFkID0gSTkxNV9SRUFEX0hF QUQoZW5naW5lKSAmIEhFQURfQUREUjsKPiAtCWJhY2t3YXJkcyA9IChJTlRFTF9JTkZPKGVuZ2lu ZS0+ZGV2KS0+Z2VuID49IDgpID8gNSA6IDQ7Cj4gKwliYWNrd2FyZHMgPSAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA4KSA/IDUgOiA0Owo+Cj4gICAJZm9yIChpID0gYmFja3dhcmRzOyBpOyAtLWkp IHsKPiAgIAkJLyoKPiBAQCAtMjk3Niw3ICsyOTc0LDcgQEAgc2VtYXBob3JlX3dhaXRzX2Zvcihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAqc2Vxbm8pCj4gICAJCXJldHVybiBO VUxMOwo+Cj4gICAJKnNlcW5vID0gaW9yZWFkMzIoZW5naW5lLT5idWZmZXItPnZpcnR1YWxfc3Rh cnQgKyBoZWFkICsgNCkgKyAxOwo+IC0JaWYgKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4g Pj0gOCkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICAgCQlvZmZzZXQg PSBpb3JlYWQzMihlbmdpbmUtPmJ1ZmZlci0+dmlydHVhbF9zdGFydCArIGhlYWQgKyAxMik7Cj4g ICAJCW9mZnNldCA8PD0gMzI7Cj4gICAJCW9mZnNldCA9IGlvcmVhZDMyKGVuZ2luZS0+YnVmZmVy LT52aXJ0dWFsX3N0YXJ0ICsgaGVhZCArIDgpOwo+IEBAIC0yOTg2LDcgKzI5ODQsNyBAQCBzZW1h cGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpzZXFu bykKPgo+ICAgc3RhdGljIGludCBzZW1hcGhvcmVfcGFzc2VkKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWdu YWxsZXI7Cj4gICAJdTMyIHNlcW5vOwo+Cj4gQEAgLTMwMjgsNyArMzAyNiw3IEBAIHN0YXRpYyBi b29sIHN1YnVuaXRzX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlp ZiAoZW5naW5lLT5pZCAhPSBSQ1MpCj4gICAJCXJldHVybiB0cnVlOwo+Cj4gLQlpOTE1X2dldF9l eHRyYV9pbnN0ZG9uZShlbmdpbmUtPmRldiwgaW5zdGRvbmUpOwo+ICsJaTkxNV9nZXRfZXh0cmFf aW5zdGRvbmUoZW5naW5lLT5pOTE1LCBpbnN0ZG9uZSk7Cj4KPiAgIAkvKiBUaGVyZSBtaWdodCBi ZSB1bnN0YWJsZSBzdWJ1bml0IHN0YXRlcyBldmVuIHdoZW4KPiAgIAkgKiBhY3R1YWwgaGVhZCBp cyBub3QgbW92aW5nLiBGaWx0ZXIgb3V0IHRoZSB1bnN0YWJsZSBvbmVzIGJ5Cj4gQEAgLTMwNjks OCArMzA2Nyw3IEBAIGhlYWRfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1 NjQgYWN0aGQpCj4gICBzdGF0aWMgZW51bSBpbnRlbF9yaW5nX2hhbmdjaGVja19hY3Rpb24KPiAg IHJpbmdfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQpCj4g ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCWVudW0gaW50 ZWxfcmluZ19oYW5nY2hlY2tfYWN0aW9uIGhhOwo+ICAgCXUzMiB0bXA7Cj4KPiBAQCAtMzA3OCw3 ICszMDc1LDcgQEAgcmluZ19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHU2 NCBhY3RoZCkKPiAgIAlpZiAoaGEgIT0gSEFOR0NIRUNLX0hVTkcpCj4gICAJCXJldHVybiBoYTsK Pgo+IC0JaWYgKElTX0dFTjIoZGV2KSkKPiArCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiAgIAkJ cmV0dXJuIEhBTkdDSEVDS19IVU5HOwo+Cj4gICAJLyogSXMgdGhlIGNoaXAgaGFuZ2luZyBvbiBh IFdBSVRfRk9SX0VWRU5UPwo+IEBAIC0zMDg4LDE5ICszMDg1LDE5IEBAIHJpbmdfc3R1Y2soc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQpCj4gICAJICovCj4gICAJdG1w ID0gSTkxNV9SRUFEX0NUTChlbmdpbmUpOwo+ICAgCWlmICh0bXAgJiBSSU5HX1dBSVQpIHsKPiAt CQlpOTE1X2hhbmRsZV9lcnJvcihkZXYsIDAsCj4gKwkJaTkxNV9oYW5kbGVfZXJyb3IoZGV2X3By aXYsIDAsCj4gICAJCQkJICAiS2lja2luZyBzdHVjayB3YWl0IG9uICVzIiwKPiAgIAkJCQkgIGVu Z2luZS0+bmFtZSk7Cj4gICAJCUk5MTVfV1JJVEVfQ1RMKGVuZ2luZSwgdG1wKTsKPiAgIAkJcmV0 dXJuIEhBTkdDSEVDS19LSUNLOwo+ICAgCX0KPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDYgJiYgdG1wICYgUklOR19XQUlUX1NFTUFQSE9SRSkgewo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNiAmJiB0bXAgJiBSSU5HX1dBSVRfU0VNQVBIT1JFKSB7Cj4gICAJCXN3aXRj aCAoc2VtYXBob3JlX3Bhc3NlZChlbmdpbmUpKSB7Cj4gICAJCWRlZmF1bHQ6Cj4gICAJCQlyZXR1 cm4gSEFOR0NIRUNLX0hVTkc7Cj4gICAJCWNhc2UgMToKPiAtCQkJaTkxNV9oYW5kbGVfZXJyb3Io ZGV2LCAwLAo+ICsJCQlpOTE1X2hhbmRsZV9lcnJvcihkZXZfcHJpdiwgMCwKPiAgIAkJCQkJICAi S2lja2luZyBzdHVjayBzZW1hcGhvcmUgb24gJXMiLAo+ICAgCQkJCQkgIGVuZ2luZS0+bmFtZSk7 Cj4gICAJCQlJOTE1X1dSSVRFX0NUTChlbmdpbmUsIHRtcCk7Cj4gQEAgLTMxMTUsNyArMzExMiw3 IEBAIHJpbmdfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQp Cj4KPiAgIHN0YXRpYyB1bnNpZ25lZCBraWNrX3dhaXRlcnMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19p OTE1KGVuZ2luZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5n aW5lLT5pOTE1Owo+ICAgCXVuc2lnbmVkIHVzZXJfaW50ZXJydXB0cyA9IFJFQURfT05DRShlbmdp bmUtPnVzZXJfaW50ZXJydXB0cyk7Cj4KPiAgIAlpZiAoZW5naW5lLT5oYW5nY2hlY2sudXNlcl9p bnRlcnJ1cHRzID09IHVzZXJfaW50ZXJydXB0cyAmJgo+IEBAIC0zMTQ0LDcgKzMxNDEsNiBAQCBz dGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAgCQljb250YWlu ZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksCj4gICAJCQkgICAgIGdwdV9lcnJvci5oYW5n Y2hlY2tfd29yay53b3JrKTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ ZGV2Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKPiAgIAlpbnQgYnVzeV9jb3VudCA9IDAsIHJpbmdzX2h1bmcgPSAwOwo+ IEBAIC0zMjcyLDIyICszMjY4LDIyIEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBz ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCX0KPgo+ICAgCWlmIChyaW5nc19odW5n KSB7Cj4gLQkJaTkxNV9oYW5kbGVfZXJyb3IoZGV2LCByaW5nc19odW5nLCAiRW5naW5lKHMpIGh1 bmciKTsKPiArCQlpOTE1X2hhbmRsZV9lcnJvcihkZXZfcHJpdiwgcmluZ3NfaHVuZywgIkVuZ2lu ZShzKSBodW5nIik7Cj4gICAJCWdvdG8gb3V0Owo+ICAgCX0KPgo+ICAgCWlmIChidXN5X2NvdW50 KQo+ICAgCQkvKiBSZXNldCB0aW1lciBjYXNlIGNoaXAgaGFuZ3Mgd2l0aG91dCBhbm90aGVyIHJl cXVlc3QKPiAgIAkJICogYmVpbmcgYWRkZWQgKi8KPiAtCQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhk ZXYpOwo+ICsJCWk5MTVfcXVldWVfaGFuZ2NoZWNrKGRldl9wcml2KTsKPgo+ICAgb3V0Ogo+ICAg CUVOQUJMRV9SUE1fV0FLRVJFRl9BU1NFUlRTKGRldl9wcml2KTsKPiAgIH0KPgo+IC12b2lkIGk5 MTVfcXVldWVfaGFuZ2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3ZvaWQgaTkxNV9x dWV1ZV9oYW5nY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ IC0Jc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplID0gJnRvX2k5MTUoZGV2KS0+Z3B1X2Vycm9yOwo+ ICsJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplID0gJmRldl9wcml2LT5ncHVfZXJyb3I7Cj4KPiAg IAlpZiAoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykKPiAgIAkJcmV0dXJuOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RyYWNlLmgKPiBpbmRleCBkYzBkZWYyMTAwOTcuLjIwYjJlNDAzOTc5MiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBAQCAtNDYyLDcgKzQ2Miw3IEBAIFRSQUNFX0VW RU5UKGk5MTVfZ2VtX3Jpbmdfc3luY190bywKPiAgIAkJCSAgICAgKSwKPgo+ICAgCSAgICBUUF9m YXN0X2Fzc2lnbigKPiAtCQkJICAgX19lbnRyeS0+ZGV2ID0gZnJvbS0+ZGV2LT5wcmltYXJ5LT5p bmRleDsKPiArCQkJICAgX19lbnRyeS0+ZGV2ID0gZnJvbS0+aTkxNS0+ZGV2LT5wcmltYXJ5LT5p bmRleDsKPiAgIAkJCSAgIF9fZW50cnktPnN5bmNfZnJvbSA9IGZyb20tPmlkOwo+ICAgCQkJICAg X19lbnRyeS0+c3luY190byA9IHRvX3JlcS0+ZW5naW5lLT5pZDsKPiAgIAkJCSAgIF9fZW50cnkt PnNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKTsKPiBAQCAtNDg2LDEzICs0 ODYsMTEgQEAgVFJBQ0VfRVZFTlQoaTkxNV9nZW1fcmluZ19kaXNwYXRjaCwKPiAgIAkJCSAgICAg KSwKPgo+ICAgCSAgICBUUF9mYXN0X2Fzc2lnbigKPiAtCQkJICAgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0KPiAtCQkJCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKHJlcSk7 Cj4gLQkJCSAgIF9fZW50cnktPmRldiA9IGVuZ2luZS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiAt CQkJICAgX19lbnRyeS0+cmluZyA9IGVuZ2luZS0+aWQ7Cj4gLQkJCSAgIF9fZW50cnktPnNlcW5v ID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKTsKPiArCQkJICAgX19lbnRyeS0+ZGV2 ID0gcmVxLT5pOTE1LT5kZXYtPnByaW1hcnktPmluZGV4Owo+ICsJCQkgICBfX2VudHJ5LT5yaW5n ID0gcmVxLT5lbmdpbmUtPmlkOwo+ICsJCQkgICBfX2VudHJ5LT5zZXFubyA9IHJlcS0+c2Vxbm87 Cj4gICAJCQkgICBfX2VudHJ5LT5mbGFncyA9IGZsYWdzOwo+IC0JCQkgICBpOTE1X3RyYWNlX2ly cV9nZXQoZW5naW5lLCByZXEpOwo+ICsJCQkgICBpOTE1X3RyYWNlX2lycV9nZXQocmVxLT5lbmdp bmUsIHJlcSk7Cj4gICAJCQkgICApLAo+Cj4gICAJICAgIFRQX3ByaW50aygiZGV2PSV1LCByaW5n PSV1LCBzZXFubz0ldSwgZmxhZ3M9JXgiLAo+IEBAIC01MTEsNyArNTA5LDcgQEAgVFJBQ0VfRVZF TlQoaTkxNV9nZW1fcmluZ19mbHVzaCwKPiAgIAkJCSAgICAgKSwKPgo+ICAgCSAgICBUUF9mYXN0 X2Fzc2lnbigKPiAtCQkJICAgX19lbnRyeS0+ZGV2ID0gcmVxLT5lbmdpbmUtPmRldi0+cHJpbWFy eS0+aW5kZXg7Cj4gKwkJCSAgIF9fZW50cnktPmRldiA9IHJlcS0+aTkxNS0+ZGV2LT5wcmltYXJ5 LT5pbmRleDsKPiAgIAkJCSAgIF9fZW50cnktPnJpbmcgPSByZXEtPmVuZ2luZS0+aWQ7Cj4gICAJ CQkgICBfX2VudHJ5LT5pbnZhbGlkYXRlID0gaW52YWxpZGF0ZTsKPiAgIAkJCSAgIF9fZW50cnkt PmZsdXNoID0gZmx1c2g7Cj4gQEAgLTUzMywxMSArNTMxLDkgQEAgREVDTEFSRV9FVkVOVF9DTEFT UyhpOTE1X2dlbV9yZXF1ZXN0LAo+ICAgCQkJICAgICApLAo+Cj4gICAJICAgIFRQX2Zhc3RfYXNz aWduKAo+IC0JCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQo+IC0JCQkJCQlp OTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUocmVxKTsKPiAtCQkJICAgX19lbnRyeS0+ZGV2ID0g ZW5naW5lLT5kZXYtPnByaW1hcnktPmluZGV4Owo+IC0JCQkgICBfX2VudHJ5LT5yaW5nID0gZW5n aW5lLT5pZDsKPiAtCQkJICAgX19lbnRyeS0+c2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9z ZXFubyhyZXEpOwo+ICsJCQkgICBfX2VudHJ5LT5kZXYgPSByZXEtPmk5MTUtPmRldi0+cHJpbWFy eS0+aW5kZXg7Cj4gKwkJCSAgIF9fZW50cnktPnJpbmcgPSByZXEtPmVuZ2luZS0+aWQ7Cj4gKwkJ CSAgIF9fZW50cnktPnNlcW5vID0gcmVxLT5zZXFubzsKPiAgIAkJCSAgICksCj4KPiAgIAkgICAg VFBfcHJpbnRrKCJkZXY9JXUsIHJpbmc9JXUsIHNlcW5vPSV1IiwKPiBAQCAtNTYwLDcgKzU1Niw3 IEBAIFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5LAo+ICAgCQkJICAgICApLAo+ Cj4gICAJICAgIFRQX2Zhc3RfYXNzaWduKAo+IC0JCQkgICBfX2VudHJ5LT5kZXYgPSBlbmdpbmUt PmRldi0+cHJpbWFyeS0+aW5kZXg7Cj4gKwkJCSAgIF9fZW50cnktPmRldiA9IGVuZ2luZS0+aTkx NS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiAgIAkJCSAgIF9fZW50cnktPnJpbmcgPSBlbmdpbmUt PmlkOwo+ICAgCQkJICAgX19lbnRyeS0+c2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUp Owo+ICAgCQkJICAgKSwKPiBAQCAtNTk3LDEzICs1OTMsMTEgQEAgVFJBQ0VfRVZFTlQoaTkxNV9n ZW1fcmVxdWVzdF93YWl0X2JlZ2luLAo+ICAgCSAgICAgKiBsZXNzIGRlc2lyYWJsZS4KPiAgIAkg ICAgICovCj4gICAJICAgIFRQX2Zhc3RfYXNzaWduKAo+IC0JCQkgICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPQo+IC0JCQkJCQlpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUocmVx KTsKPiAtCQkJICAgX19lbnRyeS0+ZGV2ID0gZW5naW5lLT5kZXYtPnByaW1hcnktPmluZGV4Owo+ IC0JCQkgICBfX2VudHJ5LT5yaW5nID0gZW5naW5lLT5pZDsKPiAtCQkJICAgX19lbnRyeS0+c2Vx bm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXEpOwo+ICsJCQkgICBfX2VudHJ5LT5k ZXYgPSByZXEtPmk5MTUtPmRldi0+cHJpbWFyeS0+aW5kZXg7Cj4gKwkJCSAgIF9fZW50cnktPnJp bmcgPSByZXEtPmVuZ2luZS0+aWQ7Cj4gKwkJCSAgIF9fZW50cnktPnNlcW5vID0gcmVxLT5zZXFu bzsKPiAgIAkJCSAgIF9fZW50cnktPmJsb2NraW5nID0KPiAtCQkJCSAgICAgbXV0ZXhfaXNfbG9j a2VkKCZlbmdpbmUtPmRldi0+c3RydWN0X211dGV4KTsKPiArCQkJCSAgICAgbXV0ZXhfaXNfbG9j a2VkKCZyZXEtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KTsKPiAgIAkJCSAgICksCj4KPiAgIAkg ICAgVFBfcHJpbnRrKCJkZXY9JXUsIHJpbmc9JXUsIHNlcW5vPSV1LCBibG9ja2luZz0lcyIsCj4g QEAgLTc5Miw3ICs3ODYsNyBAQCBUUkFDRV9FVkVOVChzd2l0Y2hfbW0sCj4gICAJCQlfX2VudHJ5 LT5yaW5nID0gZW5naW5lLT5pZDsKPiAgIAkJCV9fZW50cnktPnRvID0gdG87Cj4gICAJCQlfX2Vu dHJ5LT52bSA9IHRvLT5wcGd0dD8gJnRvLT5wcGd0dC0+YmFzZSA6IE5VTEw7Cj4gLQkJCV9fZW50 cnktPmRldiA9IGVuZ2luZS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiArCQkJX19lbnRyeS0+ZGV2 ID0gZW5naW5lLT5pOTE1LT5kZXYtPnByaW1hcnktPmluZGV4Owo+ICAgCSksCj4KPiAgIAlUUF9w cmludGsoImRldj0ldSwgcmluZz0ldSwgY3R4PSVwLCBjdHhfdm09JXAiLAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0NWMyMThkYjg2YmUuLjZlMmUyYjk4ZDMyMyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMzE0NCw0MSArMzE0 NCwzOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcHJpbWFyeV9wbGFuZXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAl9Cj4gICB9Cj4KPiAtdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3ZvaWQgaW50ZWxfcHJlcGFyZV9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJLyogbm8gcmVzZXQgc3Vw cG9ydCBmb3IgZ2VuMiAqLwo+IC0JaWYgKElTX0dFTjIoZGV2KSkKPiArCWlmIChJU19HRU4yKGRl dl9wcml2KSkKPiAgIAkJcmV0dXJuOwo+Cj4gICAJLyogcmVzZXQgZG9lc24ndCB0b3VjaCB0aGUg ZGlzcGxheSAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRl dikpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikp Cj4gICAJCXJldHVybjsKPgo+IC0JZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKPiArCWRybV9t b2Rlc2V0X2xvY2tfYWxsKGRldl9wcml2LT5kZXYpOwo+ICAgCS8qCj4gICAJICogRGlzYWJsaW5n IHRoZSBjcnRjcyBncmFjZWZ1bGx5IHNlZW1zIG5pY2VyLiBBbHNvIHRoZQo+ICAgCSAqIGczMyBk b2NzIHNheSB3ZSBzaG91bGQgYXQgbGVhc3QgZGlzYWJsZSBhbGwgdGhlIHBsYW5lcy4KPiAgIAkg Ki8KPiAtCWludGVsX2Rpc3BsYXlfc3VzcGVuZChkZXYpOwo+ICsJaW50ZWxfZGlzcGxheV9zdXNw ZW5kKGRldl9wcml2LT5kZXYpOwo+ICAgfQo+Cj4gLXZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3ZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCj4gICAJLyoKPiAgIAkgKiBGbGlwcyBp biB0aGUgcmluZ3Mgd2lsbCBiZSBudWtlZCBieSB0aGUgcmVzZXQsCj4gICAJICogc28gY29tcGxl dGUgYWxsIHBlbmRpbmcgZmxpcHMgc28gdGhhdCB1c2VyIHNwYWNlCj4gICAJICogd2lsbCBnZXQg aXRzIGV2ZW50cyBhbmQgbm90IGdldCBzdHVjay4KPiAgIAkgKi8KPiAtCWludGVsX2NvbXBsZXRl X3BhZ2VfZmxpcHMoZGV2KTsKPiArCWludGVsX2NvbXBsZXRlX3BhZ2VfZmxpcHMoZGV2X3ByaXYt PmRldik7Cj4KPiAgIAkvKiBubyByZXNldCBzdXBwb3J0IGZvciBnZW4yICovCj4gLQlpZiAoSVNf R0VOMihkZXYpKQo+ICsJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm47Cj4KPiAg IAkvKiByZXNldCBkb2Vzbid0IHRvdWNoIHRoZSBkaXNwbGF5ICovCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNSB8fCBJU19HNFgoZGV2KSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNSB8fCBJU19HNFgoZGV2X3ByaXYpKSB7Cj4gICAJCS8qCj4gICAJCSAqIEZsaXBz IGluIHRoZSByaW5ncyBoYXZlIGJlZW4gbnVrZWQgYnkgdGhlIHJlc2V0LAo+ICAgCQkgKiBzbyB1 cGRhdGUgdGhlIGJhc2UgYWRkcmVzcyBvZiBhbGwgcHJpbWFyeQo+IEBAIC0zMTg4LDcgKzMxODYs NyBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAg CQkgKiBGSVhNRTogQXRvbWljIHdpbGwgbWFrZSB0aGlzIG9ic29sZXRlIHNpbmNlIHdlIHdvbid0 IHNjaGVkdWxlCj4gICAJCSAqIENTLWJhc2VkIGZsaXBzICh3aGljaCBtaWdodCBnZXQgbG9zdCBp biBncHUgcmVzZXRzKSBhbnkgbW9yZS4KPiAgIAkJICovCj4gLQkJaW50ZWxfdXBkYXRlX3ByaW1h cnlfcGxhbmVzKGRldik7Cj4gKwkJaW50ZWxfdXBkYXRlX3ByaW1hcnlfcGxhbmVzKGRldl9wcml2 LT5kZXYpOwo+ICAgCQlyZXR1cm47Cj4gICAJfQo+Cj4gQEAgLTMxOTksMTggKzMxOTcsMTggQEAg dm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpbnRl bF9ydW50aW1lX3BtX2Rpc2FibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gICAJaW50ZWxfcnVu dGltZV9wbV9lbmFibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4KPiAtCWludGVsX21vZGVzZXRf aW5pdF9odyhkZXYpOwo+ICsJaW50ZWxfbW9kZXNldF9pbml0X2h3KGRldl9wcml2LT5kZXYpOwo+ Cj4gICAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiAgIAlpZiAoZGV2X3By aXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCkKPiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJx X3NldHVwKGRldik7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXZfcHJp di0+ZGV2KTsKPiAgIAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4KPiAt CWludGVsX2Rpc3BsYXlfcmVzdW1lKGRldik7Cj4gKwlpbnRlbF9kaXNwbGF5X3Jlc3VtZShkZXZf cHJpdi0+ZGV2KTsKPgo+ICAgCWludGVsX2hwZF9pbml0KGRldl9wcml2KTsKPgo+IC0JZHJtX21v ZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ICsJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXZfcHJp di0+ZGV2KTsKPiAgIH0KPgo+ICAgc3RhdGljIGJvb2wgaW50ZWxfY3J0Y19oYXNfcGVuZGluZ19m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiBAQCAtMTEyNTYsNyArMTEyNTQsNyBAQCBzdGF0 aWMgYm9vbCB1c2VfbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAg IAlpZiAoZW5naW5lID09IE5VTEwpCj4gICAJCXJldHVybiB0cnVlOwo+Cj4gLQlpZiAoSU5URUxf SU5GTyhlbmdpbmUtPmRldiktPmdlbiA8IDUpCj4gKwlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPCA1KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4KPiAgIAlpZiAoaTkxNS51c2VfbW1pb19mbGlw IDwgMCkKPiBAQCAtMTYxODUsOSArMTYxODMsOCBAQCBzdHJ1Y3QgaW50ZWxfZGlzcGxheV9lcnJv cl9zdGF0ZSB7Cj4gICB9Owo+Cj4gICBzdHJ1Y3QgaW50ZWxfZGlzcGxheV9lcnJvcl9zdGF0ZSAq Cj4gLWludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICtpbnRlbF9kaXNwbGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZGlzcGxheV9lcnJv cl9zdGF0ZSAqZXJyb3I7Cj4gICAJaW50IHRyYW5zY29kZXJzW10gPSB7Cj4gICAJCVRSQU5TQ09E RVJfQSwKPiBAQCAtMTYxOTcsMTQgKzE2MTk0LDE0IEBAIGludGVsX2Rpc3BsYXlfY2FwdHVyZV9l cnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCX07Cj4gICAJaW50IGk7Cj4K PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPm51bV9waXBlcyA9PSAwKQo+ICsJaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5udW1fcGlwZXMgPT0gMCkKPiAgIAkJcmV0dXJuIE5VTEw7Cj4KPiAgIAll cnJvciA9IGt6YWxsb2Moc2l6ZW9mKCplcnJvciksIEdGUF9BVE9NSUMpOwo+ICAgCWlmIChlcnJv ciA9PSBOVUxMKQo+ICAgCQlyZXR1cm4gTlVMTDsKPgo+IC0JaWYgKElTX0hBU1dFTEwoZGV2KSB8 fCBJU19CUk9BRFdFTEwoZGV2KSkKPiArCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAgCQllcnJvci0+cG93ZXJfd2VsbF9kcml2ZXIgPSBJOTE1 X1JFQUQoSFNXX1BXUl9XRUxMX0RSSVZFUik7Cj4KPiAgIAlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBpKSB7Cj4gQEAgLTE2MjIwLDI1ICsxNjIxNywyNSBAQCBpbnRlbF9kaXNwbGF5X2NhcHR1cmVf ZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPgo+ICAgCQllcnJvci0+cGxhbmVb aV0uY29udHJvbCA9IEk5MTVfUkVBRChEU1BDTlRSKGkpKTsKPiAgIAkJZXJyb3ItPnBsYW5lW2ld LnN0cmlkZSA9IEk5MTVfUkVBRChEU1BTVFJJREUoaSkpOwo+IC0JCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8PSAzKSB7Cj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMykgewo+ICAg CQkJZXJyb3ItPnBsYW5lW2ldLnNpemUgPSBJOTE1X1JFQUQoRFNQU0laRShpKSk7Cj4gICAJCQll cnJvci0+cGxhbmVbaV0ucG9zID0gSTkxNV9SRUFEKERTUFBPUyhpKSk7Cj4gICAJCX0KPiAtCQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNyAmJiAhSVNfSEFTV0VMTChkZXYpKQo+ICsJCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDcgJiYgIUlTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAg CQkJZXJyb3ItPnBsYW5lW2ldLmFkZHIgPSBJOTE1X1JFQUQoRFNQQUREUihpKSk7Cj4gLQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0KSB7Cj4gICAJCQllcnJvci0+cGxhbmVbaV0uc3VyZmFjZSA9IEk5MTVfUkVBRChEU1BT VVJGKGkpKTsKPiAgIAkJCWVycm9yLT5wbGFuZVtpXS50aWxlX29mZnNldCA9IEk5MTVfUkVBRChE U1BUSUxFT0ZGKGkpKTsKPiAgIAkJfQo+Cj4gICAJCWVycm9yLT5waXBlW2ldLnNvdXJjZSA9IEk5 MTVfUkVBRChQSVBFU1JDKGkpKTsKPgo+IC0JCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikpCj4g KwkJaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYpKQo+ICAgCQkJZXJyb3ItPnBpcGVbaV0u c3RhdCA9IEk5MTVfUkVBRChQSVBFU1RBVChpKSk7Cj4gICAJfQo+Cj4gICAJLyogTm90ZTogdGhp cyBkb2VzIG5vdCBpbmNsdWRlIERTSSB0cmFuc2NvZGVycy4gKi8KPiAtCWVycm9yLT5udW1fdHJh bnNjb2RlcnMgPSBJTlRFTF9JTkZPKGRldiktPm51bV9waXBlczsKPiArCWVycm9yLT5udW1fdHJh bnNjb2RlcnMgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzOwo+ICAgCWlmIChIQVNf RERJKGRldl9wcml2KSkKPiAgIAkJZXJyb3ItPm51bV90cmFuc2NvZGVycysrOyAvKiBBY2NvdW50 IGZvciBlRFAuICovCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDUxMDU4NTIy NzQxYS4uNjZkZTYxNjY5ODg0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAt MTIyNiw4ICsxMjI2LDggQEAgdTMyIGludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoaW50ICp4LCBp bnQgKnksCj4gICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50 IHBsYW5lLAo+ICAgCQkJICAgICAgdW5zaWduZWQgaW50IHBpdGNoLAo+ICAgCQkJICAgICAgdW5z aWduZWQgaW50IHJvdGF0aW9uKTsKPiAtdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiArdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGhzd19lbmFibGVfcGM4KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGhzd19kaXNhYmxlX3BjOChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBicm94dG9uX2luaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwo+IGluZGV4IGQ1YTdjZmVjNTg5Yi4uNGE1MjdkM2NmMDI2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtODI3LDcgKzgyNyw3IEBAIHN0YXRpYyBib29sIGludGVs X2ZiY19jYW5fY2hvb3NlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAgCWJvb2wgZW5hYmxl X2J5X2RlZmF1bHQgPSBJU19IQVNXRUxMKGRldl9wcml2KSB8fAo+ICAgCQkJCSBJU19CUk9BRFdF TEwoZGV2X3ByaXYpOwo+Cj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYtPmRldikp IHsKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpIHsKPiAgIAkJZmJjLT5ub19m YmNfcmVhc29uID0gIlZHUFUgaXMgYWN0aXZlIjsKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCX0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDgxMDYzMTZjZTU2Zi4uZTc2MjgwZDVj ZGZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMjQ2LDIxICsyNDYsMjIg QEAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4LAo+ICAgICoKPiAgICAqIFJldHVybjogMSBpZiBFeGVjbGlzdHMgaXMgc3VwcG9ydGVkIGFu ZCBoYXMgdG8gYmUgZW5hYmxlZC4KPiAgICAqLwo+IC1pbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxl X2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgZW5hYmxlX2V4ZWNsaXN0cykK PiAraW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgZW5hYmxlX2V4ZWNsaXN0cykKPiAgIHsKPiAgIAkvKiBPbiBw bGF0Zm9ybXMgd2l0aCBleGVjbGlzdCBhdmFpbGFibGUsIHZHUFUgd2lsbCBvbmx5Cj4gICAJICog c3VwcG9ydCBleGVjbGlzdCBtb2RlLCBubyByaW5nIGJ1ZmZlciBtb2RlLgo+ICAgCSAqLwo+IC0J aWYgKEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2KSAmJiBpbnRlbF92Z3B1X2FjdGl2ZShk ZXYpKQo+ICsJaWYgKEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2X3ByaXYpICYmIGludGVs X3ZncHVfYWN0aXZlKGRldl9wcml2KSkKPiAgIAkJcmV0dXJuIDE7Cj4KPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAg IAkJcmV0dXJuIDE7Cj4KPiAgIAlpZiAoZW5hYmxlX2V4ZWNsaXN0cyA9PSAwKQo+ICAgCQlyZXR1 cm4gMDsKPgo+IC0JaWYgKEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2KSAmJiBVU0VTX1BQ R1RUKGRldikgJiYKPiArCWlmIChIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KSAm Jgo+ICsJICAgIFVTRVNfUFBHVFQoZGV2X3ByaXYpICYmCj4gICAJICAgIGk5MTUudXNlX21taW9f ZmxpcCA+PSAwKQo+ICAgCQlyZXR1cm4gMTsKPgo+IEBAIC0yNzAsMTkgKzI3MSwxOSBAQCBpbnQg aW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgZW5hYmxlX2V4ZWNsaXN0cwo+ICAgc3RhdGljIHZvaWQKPiAgIGxvZ2ljYWxfcmluZ19pbml0 X3BsYXRmb3JtX2ludmFyaWFudHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg ewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+Cj4gLQlpZiAoSVNfR0VO OChkZXYpIHx8IElTX0dFTjkoZGV2KSkKPiArCWlmIChJU19HRU44KGRldl9wcml2KSB8fCBJU19H RU45KGRldl9wcml2KSkKPiAgIAkJZW5naW5lLT5pZGxlX2xpdGVfcmVzdG9yZV93YSA9IH4wOwo+ Cj4gLQllbmdpbmUtPmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhID0gKElTX1NLTF9SRVZJRChkZXYs IDAsIFNLTF9SRVZJRF9CMCkgfHwKPiAtCQkJCQlJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVW SURfQTEpKSAmJgo+ICsJZW5naW5lLT5kaXNhYmxlX2xpdGVfcmVzdG9yZV93YSA9IChJU19TS0xf UkVWSUQoZGV2X3ByaXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKPiArCQkJCQlJU19CWFRfUkVWSUQo ZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpICYmCj4gICAJCQkJCShlbmdpbmUtPmlkID09IFZD UyB8fCBlbmdpbmUtPmlkID09IFZDUzIpOwo+Cj4gICAJZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0 ZSA9IEdFTjhfQ1RYX1ZBTElEOwo+IC0JZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0ZSB8PSBHRU44 X0NUWF9BRERSRVNTSU5HX01PREUoZGV2KSA8PAo+ICsJZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0 ZSB8PSBHRU44X0NUWF9BRERSRVNTSU5HX01PREUoZGV2X3ByaXYpIDw8Cj4gICAJCQkJICAgR0VO OF9DVFhfQUREUkVTU0lOR19NT0RFX1NISUZUOwo+IC0JaWYgKElTX0dFTjgoZGV2KSkKPiArCWlm IChJU19HRU44KGRldl9wcml2KSkKPiAgIAkJZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0ZSB8PSBH RU44X0NUWF9MM0xMQ19DT0hFUkVOVDsKPiAgIAllbmdpbmUtPmN0eF9kZXNjX3RlbXBsYXRlIHw9 IEdFTjhfQ1RYX1BSSVZJTEVHRTsKPgo+IEBAIC0zNDIsOCArMzQzLDcgQEAgc3RhdGljIHZvaWQg ZXhlY2xpc3RzX2Vsc3Bfd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTAsCj4g ICB7Cj4KPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycTAtPmVuZ2luZTsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBycTAtPmk5MTU7Cj4gICAJdWludDY0X3QgZGVzY1sy XTsKPgo+ICAgCWlmIChycTEpIHsKPiBAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCSAqIElmIGlycXMgYXJlIG5vdCBhY3RpdmUgZ2VuZXJhdGUgYSB3YXJuaW5nIGFzIGJhdGNo ZXMgdGhhdCBmaW5pc2gKPiAgIAkgKiB3aXRob3V0IHRoZSBpcnFzIG1heSBnZXQgbG9zdCBhbmQg YSBHUFUgSGFuZyBtYXkgb2NjdXIuCj4gICAJICovCj4gLQlXQVJOX09OKCFpbnRlbF9pcnFzX2Vu YWJsZWQoZW5naW5lLT5kZXYtPmRldl9wcml2YXRlKSk7Cj4gKwlXQVJOX09OKCFpbnRlbF9pcnFz X2VuYWJsZWQoZW5naW5lLT5pOTE1KSk7Cj4KPiAgIAkvKiBUcnkgdG8gcmVhZCBpbiBwYWlycyAq Lwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXJzb3IsIHRtcCwgJmVuZ2luZS0+ZXhl Y2xpc3RfcXVldWUsCj4gQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgdTMyCj4gICBnZXRfY29u dGV4dF9zdGF0dXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1bnNpZ25lZCBpbnQg cmVhZF9wb2ludGVyLAo+ICAgCQkgICB1MzIgKmNvbnRleHRfaWQpCj4gICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJ dTMyIHN0YXR1czsKPgo+ICAgCXJlYWRfcG9pbnRlciAlPSBHRU44X0NTQl9FTlRSSUVTOwo+IEBA IC01MjMsNyArNTIzLDcgQEAgZ2V0X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgdW5zaWduZWQgaW50IHJlYWRfcG9pbnRlciwKPiAgIHN0YXRpYyB2b2lkIGlu dGVsX2xyY19pcnFfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEpCj4gICB7Cj4gICAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilkYXRh Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRl dl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5l LT5pOTE1Owo+ICAgCXUzMiBzdGF0dXNfcG9pbnRlcjsKPiAgIAl1bnNpZ25lZCBpbnQgcmVhZF9w b2ludGVyLCB3cml0ZV9wb2ludGVyOwo+ICAgCXUzMiBjc2JbR0VOOF9DU0JfRU5UUklFU11bMl07 Cj4gQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19jYW5jZWxfcmVxdWVz dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLCAqdG1wOwo+ICAgCUxJU1RfSEVBRChjYW5jZWxfbGlzdCk7Cj4KPiAt CVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZW5naW5lLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+ ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZlbmdpbmUtPmk5MTUtPmRldi0+c3RydWN0X211 dGV4KSk7Cj4KPiAgIAlzcGluX2xvY2tfYmgoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7Cj4gICAJ bGlzdF9yZXBsYWNlX2luaXQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUsICZjYW5jZWxfbGlzdCk7 Cj4gQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19jYW5jZWxfcmVxdWVz dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICB2b2lkIGludGVsX2xvZ2lj YWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsK PiAgIAlpbnQgcmV0Owo+Cj4gICAJaWYgKCFpbnRlbF9lbmdpbmVfaW5pdGlhbGl6ZWQoZW5naW5l KSkKPiBAQCAtOTY0LDcgKzk2NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9waW4o c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgIAlscmNfcmVnX3N0YXRlID0gdmFkZHIgKyBM UkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7Cj4KPiAgIAlyaW5nYnVmID0gY3R4LT5lbmdpbmVbZW5n aW5lLT5pZF0ucmluZ2J1ZjsKPiAtCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJf b2JqKGVuZ2luZS0+ZGV2LCByaW5nYnVmKTsKPiArCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3Jp bmdidWZmZXJfb2JqKGRldl9wcml2LCByaW5nYnVmKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3Rv IHVucGluX21hcDsKPgo+IEBAIC0xMDE5LDkgKzEwMTksNyBAQCBzdGF0aWMgaW50IGludGVsX2xv Z2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQo+ICAgCWludCByZXQsIGk7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7Cj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBy ZXEtPnJpbmdidWY7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ IC0Jc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmZGV2X3ByaXYtPndvcmthcm91bmRzOwo+ ICsJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcmVxLT5pOTE1LT53b3JrYXJvdW5kczsK Pgo+ICAgCWlmICh3LT5jb3VudCA9PSAwKQo+ICAgCQlyZXR1cm4gMDsKPiBAQCAtMTA5Miw3ICsx MDkwLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuOF9lbWl0X2ZsdXNoX2NvaGVyZW50bDNfd2Eo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCSAqIHRoaXMgYmF0Y2ggdXBkYXRl cyBHRU44X0wzU1FDUkVHNCB3aXRoIGRlZmF1bHQgdmFsdWUgd2UgbmVlZCB0bwo+ICAgCSAqIHNl dCB0aGlzIGJpdCBoZXJlIHRvIHJldGFpbiB0aGUgV0EgZHVyaW5nIGZsdXNoLgo+ICAgCSAqLwo+ IC0JaWYgKElTX1NLTF9SRVZJRChlbmdpbmUtPmRldiwgMCwgU0tMX1JFVklEX0UwKSkKPiArCWlm IChJU19TS0xfUkVWSUQoZW5naW5lLT5pOTE1LCAwLCBTS0xfUkVWSURfRTApKQo+ICAgCQlsM3Nx YzRfZmx1c2ggfD0gR0VOOF9MUVNDX1JPX1BFUkZfRElTOwo+Cj4gICAJd2FfY3R4X2VtaXQoYmF0 Y2gsIGluZGV4LCAoTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfAo+IEBAIC0xMTgxLDcgKzEx NzksNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9pbmRpcmVjdGN0eF9iYihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gICAJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBNSV9BUkJf T05fT0ZGIHwgTUlfQVJCX0RJU0FCTEUpOwo+Cj4gICAJLyogV2FGbHVzaENvaGVyZW50TDNDYWNo ZUxpbmVzQXRDb250ZXh0U3dpdGNoOmJkdyAqLwo+IC0JaWYgKElTX0JST0FEV0VMTChlbmdpbmUt PmRldikpIHsKPiArCWlmIChJU19CUk9BRFdFTEwoZW5naW5lLT5pOTE1KSkgewo+ICAgCQlpbnQg cmMgPSBnZW44X2VtaXRfZmx1c2hfY29oZXJlbnRsM193YShlbmdpbmUsIGJhdGNoLCBpbmRleCk7 Cj4gICAJCWlmIChyYyA8IDApCj4gICAJCQlyZXR1cm4gcmM7Cj4gQEAgLTEyNTMsMTIgKzEyNTEs MTEgQEAgc3RhdGljIGludCBnZW45X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+ICAgCQkJCSAgICB1aW50MzJfdCAqb2Zmc2V0KQo+ICAgewo+ICAg CWludCByZXQ7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gICAJ dWludDMyX3QgaW5kZXggPSB3YV9jdHhfc3RhcnQod2FfY3R4LCAqb2Zmc2V0LCBDQUNIRUxJTkVf RFdPUkRTKTsKPgo+ICAgCS8qIFdhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlvbjpza2wsYnh0 ICovCj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0QwKSB8fAo+IC0JICAg IElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gKwlpZiAoSVNfU0tMX1JFVklE KGVuZ2luZS0+aTkxNSwgMCwgU0tMX1JFVklEX0QwKSB8fAo+ICsJICAgIElTX0JYVF9SRVZJRChl bmdpbmUtPmk5MTUsIDAsIEJYVF9SRVZJRF9BMSkpCj4gICAJCXdhX2N0eF9lbWl0KGJhdGNoLCBp bmRleCwgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKPgo+ICAgCS8qIFdhRmx1c2hD b2hlcmVudEwzQ2FjaGVMaW5lc0F0Q29udGV4dFN3aXRjaDpza2wsYnh0ICovCj4gQEAgLTEyNzks MTIgKzEyNzYsMTEgQEAgc3RhdGljIGludCBnZW45X2luaXRfcGVyY3R4X2JiKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCSAgICAgICB1aW50MzJfdCAqY29uc3QgYmF0Y2gs Cj4gICAJCQkgICAgICAgdWludDMyX3QgKm9mZnNldCkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAgIAl1aW50MzJfdCBpbmRleCA9IHdhX2N0eF9zdGFy dCh3YV9jdHgsICpvZmZzZXQsIENBQ0hFTElORV9EV09SRFMpOwo+Cj4gICAJLyogV2FTZXREaXNh YmxlUGl4TWFza0NhbW1pbmdBbmRSaHdvSW5Db21tb25TbGljZUNoaWNrZW46c2tsLGJ4dCAqLwo+ IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKPiAtCSAgICBJU19C WFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKSB7Cj4gKwlpZiAoSVNfU0tMX1JFVklEKGVu Z2luZS0+aTkxNSwgMCwgU0tMX1JFVklEX0IwKSB8fAo+ICsJICAgIElTX0JYVF9SRVZJRChlbmdp bmUtPmk5MTUsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiAgIAkJd2FfY3R4X2VtaXQoYmF0Y2gsIGlu ZGV4LCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Cj4gICAJCXdhX2N0eF9lbWl0X3JlZyhiYXRj aCwgaW5kZXgsIEdFTjlfU0xJQ0VfQ09NTU9OX0VDT19DSElDS0VOMCk7Cj4gICAJCXdhX2N0eF9l bWl0KGJhdGNoLCBpbmRleCwKPiBAQCAtMTI5Myw3ICsxMjg5LDcgQEAgc3RhdGljIGludCBnZW45 X2luaXRfcGVyY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAl9Cj4K PiAgIAkvKiBXYUNsZWFyVGRsU3RhdGVBY2tEaXJ0eUJpdHM6Ynh0ICovCj4gLQlpZiAoSVNfQlhU X1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0IwKSkgewo+ICsJaWYgKElTX0JYVF9SRVZJRChlbmdp bmUtPmk5MTUsIDAsIEJYVF9SRVZJRF9CMCkpIHsKPiAgIAkJd2FfY3R4X2VtaXQoYmF0Y2gsIGlu ZGV4LCBNSV9MT0FEX1JFR0lTVEVSX0lNTSg0KSk7Cj4KPiAgIAkJd2FfY3R4X2VtaXRfcmVnKGJh dGNoLCBpbmRleCwgR0VOOF9TVEFURV9BQ0spOwo+IEBAIC0xMzEyLDggKzEzMDgsOCBAQCBzdGF0 aWMgaW50IGdlbjlfaW5pdF9wZXJjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+ICAgCX0KPgo+ICAgCS8qIFdhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlvbjpza2wsYnh0 ICovCj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0QwKSB8fAo+IC0JICAg IElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gKwlpZiAoSVNfU0tMX1JFVklE KGVuZ2luZS0+aTkxNSwgMCwgU0tMX1JFVklEX0QwKSB8fAo+ICsJICAgIElTX0JYVF9SRVZJRChl bmdpbmUtPmk5MTUsIDAsIEJYVF9SRVZJRF9BMSkpCj4gICAJCXdhX2N0eF9lbWl0KGJhdGNoLCBp bmRleCwgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEUpOwo+Cj4gICAJd2FfY3R4X2VtaXQo YmF0Y2gsIGluZGV4LCBNSV9CQVRDSF9CVUZGRVJfRU5EKTsKPiBAQCAtMTMyNSw3ICsxMzIxLDcg QEAgc3RhdGljIGludCBscmNfc2V0dXBfd2FfY3R4X29iaihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIHUzMiBzaXplKQo+ICAgewo+ICAgCWludCByZXQ7Cj4KPiAtCWVuZ2luZS0+d2Ff Y3R4Lm9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoZW5naW5lLT5kZXYsCj4gKwllbmdpbmUt PndhX2N0eC5vYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKGVuZ2luZS0+aTkxNS0+ZGV2LAo+ ICAgCQkJCQkJICAgUEFHRV9BTElHTihzaXplKSk7Cj4gICAJaWYgKElTX0VSUihlbmdpbmUtPndh X2N0eC5vYmopKSB7Cj4gICAJCURSTV9ERUJVR19EUklWRVIoImFsbG9jIExSQyBXQSBjdHggYmFj a2luZyBvYmogZmFpbGVkLlxuIik7Cj4gQEAgLTEzNjUsOSArMTM2MSw5IEBAIHN0YXRpYyBpbnQg aW50ZWxfaW5pdF93b3JrYXJvdW5kX2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIAlXQVJOX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKPgo+ICAgCS8qIHVwZGF0ZSB0aGlzIHdo ZW4gV0EgZm9yIGhpZ2hlciBHZW4gYXJlIGFkZGVkICovCj4gLQlpZiAoSU5URUxfSU5GTyhlbmdp bmUtPmRldiktPmdlbiA+IDkpIHsKPiArCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+IDkp IHsKPiAgIAkJRFJNX0VSUk9SKCJXQSBiYXRjaCBidWZmZXIgaXMgbm90IGluaXRpYWxpemVkIGZv ciBHZW4lZFxuIiwKPiAtCQkJICBJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuKTsKPiArCQkJ ICBJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSk7Cj4gICAJCXJldHVybiAwOwo+ICAgCX0KPgo+IEBA IC0xMzg3LDcgKzEzODMsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJYmF0Y2ggPSBrbWFwX2F0b21pYyhw YWdlKTsKPiAgIAlvZmZzZXQgPSAwOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldikt PmdlbiA9PSA4KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPT0gOCkgewoKSVNf R0VOOAoKPiAgIAkJcmV0ID0gZ2VuOF9pbml0X2luZGlyZWN0Y3R4X2JiKGVuZ2luZSwKPiAgIAkJ CQkJICAgICAgICZ3YV9jdHgtPmluZGlyZWN0X2N0eCwKPiAgIAkJCQkJICAgICAgIGJhdGNoLAo+ IEBAIC0xNDAxLDcgKzEzOTcsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9i YihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkJCSAgJm9mZnNldCk7Cj4g ICAJCWlmIChyZXQpCj4gICAJCQlnb3RvIG91dDsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhl bmdpbmUtPmRldiktPmdlbiA9PSA5KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUt Pmk5MTUpID09IDkpIHsKCklTX0dFTjkKCj4gICAJCXJldCA9IGdlbjlfaW5pdF9pbmRpcmVjdGN0 eF9iYihlbmdpbmUsCj4gICAJCQkJCSAgICAgICAmd2FfY3R4LT5pbmRpcmVjdF9jdHgsCj4gICAJ CQkJCSAgICAgICBiYXRjaCwKPiBAQCAtMTQyNyw3ICsxNDIzLDcgQEAgb3V0Ogo+Cj4gICBzdGF0 aWMgdm9pZCBscmNfaW5pdF9od3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRl dl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5l LT5pOTE1Owo+Cj4gICAJSTkxNV9XUklURShSSU5HX0hXU19QR0EoZW5naW5lLT5tbWlvX2Jhc2Up LAo+ICAgCQkgICAodTMyKWVuZ2luZS0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIpOwo+IEBAIC0xNDM2 LDggKzE0MzIsNyBAQCBzdGF0aWMgdm9pZCBscmNfaW5pdF9od3Moc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+Cj4gICBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5pOTE1Owo+ICAgCXVuc2lnbmVkIGludCBuZXh0X2NvbnRleHRfc3RhdHVzX2J1 ZmZlcl9odzsKPgo+ICAgCWxyY19pbml0X2h3cyhlbmdpbmUpOwo+IEBAIC0xNDg0LDggKzE0Nzks NyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4KPiAgIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3JlbmRlcl9yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBlbmdpbmUtPmk5MTU7Cj4gICAJaW50IHJldDsKPgo+ICAgCXJldCA9IGdlbjhfaW5pdF9jb21t b25fcmluZyhlbmdpbmUpOwo+IEBAIC0xNTYyLDcgKzE1NTYsNyBAQCBzdGF0aWMgaW50IGdlbjhf ZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAlpZiAo cmVxLT5jdHgtPnBwZ3R0ICYmCj4gICAJICAgIChpbnRlbF9lbmdpbmVfZmxhZyhyZXEtPmVuZ2lu ZSkgJiByZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzKSkgewo+ICAgCQlpZiAoIVVTRVNf RlVMTF80OEJJVF9QUEdUVChyZXEtPmk5MTUpICYmCj4gLQkJICAgICFpbnRlbF92Z3B1X2FjdGl2 ZShyZXEtPmk5MTUtPmRldikpIHsKPiArCQkgICAgIWludGVsX3ZncHVfYWN0aXZlKHJlcS0+aTkx NSkpIHsKPiAgIAkJCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3BkcHMocmVxKTsKPiAg IAkJCWlmIChyZXQpCj4gICAJCQkJcmV0dXJuIHJldDsKPiBAQCAtMTU5MCw4ICsxNTg0LDcgQEAg c3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4KPiAgIHN0YXRpYyBib29sIGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+aTkxNTsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4gICAJaWYgKFdBUk5f T04oIWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdikpKQo+IEBAIC0xNjEwLDggKzE2MDMsNyBA QCBzdGF0aWMgYm9vbCBnZW44X2xvZ2ljYWxfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPgo+ICAgc3RhdGljIHZvaWQgZ2VuOF9sb2dpY2FsX3JpbmdfcHV0X2ly cShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAgIAlz cGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gQEAgLTE2Mjgs OCArMTYyMCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0gcmluZ2J1Zi0+ZW5naW5lOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVu Z2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcXVl c3QtPmk5MTU7Cj4gICAJdWludDMyX3QgY21kOwo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTY5Nyw3 ICsxNjg4LDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIAkJICogT24gR0VOOTogYmVmb3JlIFZGX0NB Q0hFX0lOVkFMSURBVEUgd2UgbmVlZCB0byBlbWl0IGEgTlVMTAo+ICAgCQkgKiBwaXBlIGNvbnRy b2wuCj4gICAJCSAqLwo+IC0JCWlmIChJU19HRU45KGVuZ2luZS0+ZGV2KSkKPiArCQlpZiAoSVNf R0VOOShyZXF1ZXN0LT5pOTE1KSkKPiAgIAkJCXZmX2ZsdXNoX3dhID0gdHJ1ZTsKPiAgIAl9Cj4K PiBAQCAtMTg5MCw3ICsxODgxLDcgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJaWYgKFdBUk5fT04odGVzdF9iaXQo VEFTS0xFVF9TVEFURV9TQ0hFRCwgJmVuZ2luZS0+aXJxX3Rhc2tsZXQuc3RhdGUpKSkKPiAgIAkJ dGFza2xldF9raWxsKCZlbmdpbmUtPmlycV90YXNrbGV0KTsKPgo+IC0JZGV2X3ByaXYgPSBlbmdp bmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+ICAg CWlmIChlbmdpbmUtPmJ1ZmZlcikgewo+ICAgCQlpbnRlbF9sb2dpY2FsX3Jpbmdfc3RvcChlbmdp bmUpOwo+IEBAIC0xOTE0LDcgKzE5MDUsNyBAQCB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19jbGVh bnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAllbmdpbmUtPmN0eF9kZXNj X3RlbXBsYXRlID0gMDsKPgo+ICAgCWxyY19kZXN0cm95X3dhX2N0eF9vYmooZW5naW5lKTsKPiAt CWVuZ2luZS0+ZGV2ID0gTlVMTDsKPiArCWVuZ2luZS0+aTkxNSA9IE5VTEw7Cj4gICB9Cj4KPiAg IHN0YXRpYyB2b2lkCj4gQEAgLTE5MjksNyArMTkyMCw3IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0 X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJZW5naW5lLT5lbWl0 X2JiX3N0YXJ0ID0gZ2VuOF9lbWl0X2JiX3N0YXJ0Owo+ICAgCWVuZ2luZS0+Z2V0X3NlcW5vID0g Z2VuOF9nZXRfc2Vxbm87Cj4gICAJZW5naW5lLT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFubzsK PiAtCWlmIChJU19CWFRfUkVWSUQoZW5naW5lLT5kZXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiAr CWlmIChJU19CWFRfUkVWSUQoZW5naW5lLT5pOTE1LCAwLCBCWFRfUkVWSURfQTEpKSB7Cj4gICAJ CWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBieHRfYV9zZXFub19iYXJyaWVyOwo+ICAgCQll bmdpbmUtPnNldF9zZXFubyA9IGJ4dF9hX3NldF9zZXFubzsKPiAgIAl9Cj4gQEAgLTIwMjMsNyAr MjAxNCw3IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IGludGVsX2VuZ2luZV9pZCBpZCkKPiAgIAlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH4wKTsKPiAg IAlQT1NUSU5HX1JFQUQoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPgo+IC0JZW5naW5l LT5kZXYgPSBkZXY7Cj4gKwllbmdpbmUtPmk5MTUgPSBkZXZfcHJpdjsKPgo+ICAgCS8qIEludGVu dGlvbmFsbHkgbGVmdCBibGFuay4gKi8KPiAgIAllbmdpbmUtPmJ1ZmZlciA9IE5VTEw7Cj4gQEAg LTIwNTYsNyArMjA0Nyw3IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCkKPiAgIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9p cnFzKGVuZ2luZSwgaW5mby0+aXJxX3NoaWZ0KTsKPgo+ICAgCWludGVsX2VuZ2luZV9pbml0X2hh bmdjaGVjayhlbmdpbmUpOwo+IC0JaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGVuZ2luZS0+ZGV2 LCAmZW5naW5lLT5iYXRjaF9wb29sKTsKPiArCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYs ICZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+Cj4gICAJcmV0dXJuIGVuZ2luZTsKPiAgIH0KPiBAQCAt MjA2NCw3ICsyMDU1LDcgQEAgbG9naWNhbF9yaW5nX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGVudW0gaW50ZWxfZW5naW5lX2lkIGlkKQo+ICAgc3RhdGljIGludAo+ICAgbG9naWNhbF9y aW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0 IGludGVsX2NvbnRleHQgKmRjdHggPSB0b19pOTE1KGVuZ2luZS0+ZGV2KS0+a2VybmVsX2NvbnRl eHQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqZGN0eCA9IGVuZ2luZS0+aTkxNS0+a2VybmVs X2NvbnRleHQ7Cj4gICAJaW50IHJldDsKPgo+ICAgCXJldCA9IGk5MTVfY21kX3BhcnNlcl9pbml0 X3JpbmcoZW5naW5lKTsKPiBAQCAtMjIyNCw3ICsyMjE1LDcgQEAgY2xlYW51cF9yZW5kZXJfcmlu ZzoKPiAgIH0KPgo+ICAgc3RhdGljIHUzMgo+IC1tYWtlX3JwY3Moc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiArbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IHsKPiAgIAl1MzIgcnBjcyA9IDA7Cj4KPiBAQCAtMjIzMiw3ICsyMjIzLDcgQEAgbWFrZV9ycGNz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJICogTm8gZXhwbGljaXQgUlBDUyByZXF1ZXN0 IGlzIG5lZWRlZCB0byBlbnN1cmUgZnVsbAo+ICAgCSAqIHNsaWNlL3N1YnNsaWNlL0VVIGVuYWJs ZW1lbnQgcHJpb3IgdG8gR2VuOS4KPiAgIAkqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu IDwgOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPiAgIAkJcmV0dXJuIDA7Cj4K PiAgIAkvKgo+IEBAIC0yMjQxLDI0ICsyMjMyLDI0IEBAIG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgCSAqIG11c3QgbWFrZSBhbiBleHBsaWNpdCByZXF1ZXN0IHRocm91Z2gg UlBDUyBmb3IgZnVsbAo+ICAgCSAqIGVuYWJsZW1lbnQuCj4gICAJKi8KPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmhhc19zbGljZV9wZykgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5o YXNfc2xpY2VfcGcpIHsKPiAgIAkJcnBjcyB8PSBHRU44X1JQQ1NfU19DTlRfRU5BQkxFOwo+IC0J CXJwY3MgfD0gSU5URUxfSU5GTyhkZXYpLT5zbGljZV90b3RhbCA8PAo+ICsJCXJwY3MgfD0gSU5U RUxfSU5GTyhkZXZfcHJpdiktPnNsaWNlX3RvdGFsIDw8Cj4gICAJCQlHRU44X1JQQ1NfU19DTlRf U0hJRlQ7Cj4gICAJCXJwY3MgfD0gR0VOOF9SUENTX0VOQUJMRTsKPiAgIAl9Cj4KPiAtCWlmIChJ TlRFTF9JTkZPKGRldiktPmhhc19zdWJzbGljZV9wZykgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5oYXNfc3Vic2xpY2VfcGcpIHsKPiAgIAkJcnBjcyB8PSBHRU44X1JQQ1NfU1NfQ05U X0VOQUJMRTsKPiAtCQlycGNzIHw9IElOVEVMX0lORk8oZGV2KS0+c3Vic2xpY2VfcGVyX3NsaWNl IDw8Cj4gKwkJcnBjcyB8PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+c3Vic2xpY2VfcGVyX3NsaWNl IDw8Cj4gICAJCQlHRU44X1JQQ1NfU1NfQ05UX1NISUZUOwo+ICAgCQlycGNzIHw9IEdFTjhfUlBD U19FTkFCTEU7Cj4gICAJfQo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5oYXNfZXVfcGcpIHsK PiAtCQlycGNzIHw9IElOVEVMX0lORk8oZGV2KS0+ZXVfcGVyX3N1YnNsaWNlIDw8Cj4gKwlpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmhhc19ldV9wZykgewo+ICsJCXJwY3MgfD0gSU5URUxfSU5G TyhkZXZfcHJpdiktPmV1X3Blcl9zdWJzbGljZSA8PAo+ICAgCQkJR0VOOF9SUENTX0VVX01JTl9T SElGVDsKPiAtCQlycGNzIHw9IElOVEVMX0lORk8oZGV2KS0+ZXVfcGVyX3N1YnNsaWNlIDw8Cj4g KwkJcnBjcyB8PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ZXVfcGVyX3N1YnNsaWNlIDw8Cj4gICAJ CQlHRU44X1JQQ1NfRVVfTUFYX1NISUZUOwo+ICAgCQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEU7 Cj4gICAJfQo+IEBAIC0yMjcwLDkgKzIyNjEsOSBAQCBzdGF0aWMgdTMyIGludGVsX2xyX2luZGly ZWN0X2N0eF9vZmZzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAg CXUzMiBpbmRpcmVjdF9jdHhfb2Zmc2V0Owo+Cj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZW5naW5l LT5kZXYpLT5nZW4pIHsKPiArCXN3aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPiAg IAlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FTRShJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2Vu KTsKPiArCQlNSVNTSU5HX0NBU0UoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpOwo+ICAgCQkvKiBm YWxsIHRocm91Z2ggKi8KPiAgIAljYXNlIDk6Cj4gICAJCWluZGlyZWN0X2N0eF9vZmZzZXQgPQo+ IEBAIC0yMjkzLDggKzIyODQsNyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjdHgsCj4gICAJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4g ICAJCSAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAgIHsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBjdHgtPmk5MTU7Cj4gICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0ID0gY3R4LT5wcGd0dDsKPiAgIAl2b2lkICp2YWRkcjsKPiAgIAl1MzIgKnJlZ19zdGF0ZTsK PiBAQCAtMjMzMiw3ICsyMzIyLDcgQEAgcG9wdWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY3R4LAo+ICAgCQkgICAgICAgUklOR19DT05URVhUX0NPTlRST0woZW5naW5lKSwK PiAgIAkJICAgICAgIF9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9JTkhJQklUX1NZTl9DVFhf U1dJVENIIHwKPiAgIAkJCQkJICBDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8 Cj4gLQkJCQkJICAoSEFTX1JFU09VUkNFX1NUUkVBTUVSKGRldikgPwo+ICsJCQkJCSAgKEhBU19S RVNPVVJDRV9TVFJFQU1FUihkZXZfcHJpdikgPwo+ICAgCQkJCQkgICAgQ1RYX0NUUkxfUlNfQ1RY X0VOQUJMRSA6IDApKSk7Cj4gICAJQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUklOR19I RUFELCBSSU5HX0hFQUQoZW5naW5lLT5tbWlvX2Jhc2UpLAo+ICAgCQkgICAgICAgMCk7Cj4gQEAg LTI0MjEsNyArMjQxMSw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCwKPiAgIAlpZiAoZW5naW5lLT5pZCA9PSBSQ1MpIHsKPiAgIAkJcmVnX3N0YXRlW0NU WF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Cj4gICAJCUFTU0lHTl9D VFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RB VEUsCj4gLQkJCSAgICAgICBtYWtlX3JwY3MoZGV2KSk7Cj4gKwkJCSAgICAgICBtYWtlX3JwY3Mo ZGV2X3ByaXYpKTsKPiAgIAl9Cj4KPiAgIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGN0eF9v YmopOwo+IEBAIC0yNDcyLDExICsyNDYyLDExIEBAIHVpbnQzMl90IGludGVsX2xyX2NvbnRleHRf c2l6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJaW50IHJldCA9 IDA7Cj4KPiAtCVdBUk5fT04oSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA8IDgpOwo+ICsJ V0FSTl9PTihJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDgpOwoKQmFoIHRoaXMgaXMgcHJvYmFi bHkgd2F5IHRvbyBsb3cgbGV2ZWwgZm9yIHRoaXMgd2Fybi4gL2RpZ3Jlc3Npb24KCj4KPiAgIAlz d2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAgIAljYXNlIFJDUzoKPiAtCQlpZiAoSU5URUxfSU5GTyhl bmdpbmUtPmRldiktPmdlbiA+PSA5KQo+ICsJCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+ PSA5KQo+ICAgCQkJcmV0ID0gR0VOOV9MUl9DT05URVhUX1JFTkRFUl9TSVpFOwo+ICAgCQllbHNl Cj4gICAJCQlyZXQgPSBHRU44X0xSX0NPTlRFWFRfUkVOREVSX1NJWkU7Cj4gQEAgLTI1MDgsNyAr MjQ5OCw3IEBAIHVpbnQzMl90IGludGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVk X2FsbG9jKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gICAJCQkJCSAgICBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZW5naW5lLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5pOTE1LT5k ZXY7CgpWYXJpYWJsZSB1c2VkIG9ubHkgb25jZSwgY291bGQga2lsbCBpdC4KCj4gICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmo7Cj4gICAJdWludDMyX3QgY29udGV4dF9zaXpl Owo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5oCj4gaW5kZXggMjI5YjhhOTc0MjYyLi4xYWZiYTAzMzFkYzYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuaAo+IEBAIC0xMTIsNyArMTEyLDggQEAgdWludDY0X3QgaW50ZWxf bHJfY29udGV4dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gICAJCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+Cj4gICAvKiBFeGVjbGlzdHMg Ki8KPiAtaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGVuYWJsZV9leGVjbGlzdHMpOwo+ICtpbnQgaW50ZWxfc2FuaXRpemVfZW5h YmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkg ICAgaW50IGVuYWJsZV9leGVjbGlzdHMpOwo+ICAgc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJh bXM7Cj4gICBpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1 ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyICphcmdzLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiBpbmRleCA2YmE0 YmY3ZjJhODkuLmI3NjVjNzVmM2ZjZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tb2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMK PiBAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBpOTE1X3JlZ190IG1vY3NfcmVnaXN0ZXIoZW51 bSBpbnRlbF9lbmdpbmVfaWQgcmluZywgaW50IGluZGV4KQo+ICAgICovCj4gICBpbnQgaW50ZWxf bW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuZ2luZS0+ZGV2 KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsK PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB0YWJsZTsKPiAgIAl1bnNpZ25lZCBpbnQg aW5kZXg7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gaW5kZXggODU3MGM2 MGM2ZmMwLi40YTFlNzc0YmE4Y2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jCj4gQEAgLTE1MDgsOSArMTUwOCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX292ZXJsYXlfdW5t YXBfcmVnc19hdG9taWMoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4KPgo+ICAgc3Ry dWN0IGludGVsX292ZXJsYXlfZXJyb3Jfc3RhdGUgKgo+IC1pbnRlbF9vdmVybGF5X2NhcHR1cmVf ZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAraW50ZWxfb3ZlcmxheV9jYXB0 dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gICAJc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkgPSBkZXZfcHJpdi0+b3ZlcmxheTsK PiAgIAlzdHJ1Y3QgaW50ZWxfb3ZlcmxheV9lcnJvcl9zdGF0ZSAqZXJyb3I7Cj4gICAJc3RydWN0 IG92ZXJsYXlfcmVnaXN0ZXJzIF9faW9tZW0gKnJlZ3M7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gaW5kZXggMDE3YzQzMWY5MzYzLi5iYTA5N2YyZGQ1NjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBAQCAtNjM0OSw3ICs2MzQ5LDcgQEAgdm9pZCBpbnRlbF9lbmFibGVfZ3RfcG93 ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPgo+ICAgCS8qIFBvd2Vyc2F2aW5nIGlz IGNvbnRyb2xsZWQgYnkgdGhlIGhvc3Qgd2hlbiBpbnNpZGUgYSBWTSAqLwo+IC0JaWYgKGludGVs X3ZncHVfYWN0aXZlKGRldikpCj4gKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKQo+ ICAgCQlyZXR1cm47Cj4KPiAgIAlpZiAoSVNfSVJPTkxBS0VfTShkZXYpKSB7Cj4gQEAgLTc0MDUs OCArNzQwNSw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfcnBzX2Jvb3N0X3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0g Ym9vc3QtPnJlcTsKPgo+ICAgCWlmICghaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0 cnVlKSkKPiAtCQlnZW42X3Jwc19ib29zdCh0b19pOTE1KHJlcS0+ZW5naW5lLT5kZXYpLCBOVUxM LAo+IC0JCQkgICAgICAgcmVxLT5lbWl0dGVkX2ppZmZpZXMpOwo+ICsJCWdlbjZfcnBzX2Jvb3N0 KHJlcS0+aTkxNSwgTlVMTCwgcmVxLT5lbWl0dGVkX2ppZmZpZXMpOwo+Cj4gICAJaTkxNV9nZW1f cmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICAgCWtmcmVlKGJvb3N0KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggOGYzZWIzMDMzZGEwLi5lOGEyOGIw Y2NhYjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAg LTYwLDcgKzYwLDcgQEAgdm9pZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZikKPgo+ICAgYm9vbCBpbnRlbF9lbmdpbmVfc3RvcHBlZChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJcmV0dXJuIGRldl9w cml2LT5ncHVfZXJyb3Iuc3RvcF9yaW5ncyAmIGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4g ICB9Cj4KPiBAQCAtMTA2LDcgKzEwNiw2IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCSAgICAgICB1MzIJZmx1c2hfZG9tYWlu cykKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2lu ZTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAgIAl1MzIgY21k Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTQ1LDcgKzE0NCw3IEBAIGdlbjRfcmVuZGVyX3Jpbmdf Zmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCWNtZCB8PSBNSV9F WEVfRkxVU0g7Cj4KPiAgIAlpZiAoaW52YWxpZGF0ZV9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlO X0NPTU1BTkQgJiYKPiAtCSAgICAoSVNfRzRYKGRldikgfHwgSVNfR0VONShkZXYpKSkKPiArCSAg ICAoSVNfRzRYKHJlcS0+aTkxNSkgfHwgSVNfR0VONShyZXEtPmk5MTUpKSkKPiAgIAkJY21kIHw9 IE1JX0lOVkFMSURBVEVfSVNQOwo+Cj4gICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIp Owo+IEBAIC00MzEsMTkgKzQzMCwxOSBAQCBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgc3RhdGljIHZvaWQgcmluZ193cml0ZV90YWls KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCSAgICB1MzIgdmFsdWUpCj4g ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdp bmUtPmk5MTU7Cj4gICAJSTkxNV9XUklURV9UQUlMKGVuZ2luZSwgdmFsdWUpOwo+ICAgfQo+Cj4g ICB1NjQgaW50ZWxfcmluZ19nZXRfYWN0aXZlX2hlYWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5n aW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXU2NCBhY3RoZDsKPgo+IC0JaWYgKElOVEVMX0lORk8o ZW5naW5lLT5kZXYpLT5nZW4gPj0gOCkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgp Cj4gICAJCWFjdGhkID0gSTkxNV9SRUFENjRfMngzMihSSU5HX0FDVEhEKGVuZ2luZS0+bW1pb19i YXNlKSwKPiAgIAkJCQkJIFJJTkdfQUNUSERfVURXKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gLQll bHNlIGlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuID49IDQpCj4gKwllbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gICAJCWFjdGhkID0gSTkxNV9SRUFEKFJJTkdfQUNU SEQoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgIAllbHNlCj4gICAJCWFjdGhkID0gSTkxNV9SRUFE KEFDVEhEKTsKPiBAQCAtNDUzLDI1ICs0NTIsMjQgQEAgdTY0IGludGVsX3JpbmdfZ2V0X2FjdGl2 ZV9oZWFkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAgc3RhdGljIHZvaWQg cmluZ19zZXR1cF9waHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+aTkxNTsKPiAgIAl1MzIgYWRkcjsKPgo+ICAgCWFkZHIgPSBkZXZfcHJpdi0+c3Rh dHVzX3BhZ2VfZG1haC0+YnVzYWRkcjsKPiAtCWlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+ Z2VuID49IDQpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICAgCQlhZGRyIHw9 IChkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+YnVzYWRkciA+PiAyOCkgJiAweGYwOwo+ICAg CUk5MTVfV1JJVEUoSFdTX1BHQSwgYWRkcik7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIGludGVs X3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAg CWk5MTVfcmVnX3QgbW1pbzsKPgo+ICAgCS8qIFRoZSByaW5nIHN0YXR1cyBwYWdlIGFkZHJlc3Nl cyBhcmUgbm8gbG9uZ2VyIG5leHQgdG8gdGhlIHJlc3Qgb2YKPiAgIAkgKiB0aGUgcmluZyByZWdp c3RlcnMgYXMgb2YgZ2VuNy4KPiAgIAkgKi8KPiAtCWlmIChJU19HRU43KGRldikpIHsKPiArCWlm IChJU19HRU43KGRldl9wcml2KSkgewo+ICAgCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAgIAkJ Y2FzZSBSQ1M6Cj4gICAJCQltbWlvID0gUkVOREVSX0hXU19QR0FfR0VONzsKPiBAQCAtNDkxLDcg KzQ4OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkJbW1pbyA9IFZFQk9YX0hXU19QR0FfR0VO NzsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjYoZW5naW5lLT5k ZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7Cj4gICAJCW1taW8gPSBS SU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9fYmFzZSk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJ LyogWFhYOiBnZW44IHJldHVybnMgdG8gc2FuaXR5ICovCj4gQEAgLTUwOCw3ICs1MDYsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAkgKiBhcmlzZXM6IGRvIHdlIHN0aWxsIG5lZWQgdGhpcyBhbmQg aWYgc28gaG93IHNob3VsZCB3ZSBnbyBhYm91dAo+ICAgCSAqIGludmFsaWRhdGluZyB0aGUgVExC Pwo+ICAgCSAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYgJiYgSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA4KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYmIElO VEVMX0dFTihkZXZfcHJpdikgPCA4KSB7Cj4gICAJCWk5MTVfcmVnX3QgcmVnID0gUklOR19JTlNU UE0oZW5naW5lLT5tbWlvX2Jhc2UpOwo+Cj4gICAJCS8qIHJpbmcgc2hvdWxkIGJlIGlkbGUgYmVm b3JlIGlzc3VpbmcgYSBzeW5jIGZsdXNoKi8KPiBAQCAtNTI2LDkgKzUyNCw5IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+Cj4gICBzdGF0aWMgYm9vbCBzdG9wX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmdpbmUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBlbmdpbmUtPmk5MTU7Cj4KPiAtCWlmICghSVNfR0VOMihlbmdpbmUtPmRldikpIHsKPiAr CWlmICghSVNfR0VOMihkZXZfcHJpdikpIHsKPiAgIAkJSTkxNV9XUklURV9NT0RFKGVuZ2luZSwg X01BU0tFRF9CSVRfRU5BQkxFKFNUT1BfUklORykpOwo+ICAgCQlpZiAod2FpdF9mb3IoKEk5MTVf UkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpICE9IDAsIDEwMDApKSB7Cj4gICAJCQlEUk1f RVJST1IoIiVzIDogdGltZWQgb3V0IHRyeWluZyB0byBzdG9wIHJpbmdcbiIsCj4gQEAgLTU0Niw3 ICs1NDQsNyBAQCBzdGF0aWMgYm9vbCBzdG9wX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgCUk5MTVfV1JJVEVfSEVBRChlbmdpbmUsIDApOwo+ICAgCWVuZ2luZS0+d3Jp dGVfdGFpbChlbmdpbmUsIDApOwo+Cj4gLQlpZiAoIUlTX0dFTjIoZW5naW5lLT5kZXYpKSB7Cj4g KwlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gICAJCSh2b2lkKUk5MTVfUkVBRF9DVEwoZW5n aW5lKTsKPiAgIAkJSTkxNV9XUklURV9NT0RFKGVuZ2luZSwgX01BU0tFRF9CSVRfRElTQUJMRShT VE9QX1JJTkcpKTsKPiAgIAl9Cj4gQEAgLTU2MSw4ICs1NTksNyBAQCB2b2lkIGludGVsX2VuZ2lu ZV9pbml0X2hhbmdjaGVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIHN0 YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gZW5naW5lLT5idWZmZXI7Cj4gICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHJpbmdidWYtPm9iajsKPiAgIAlpbnQgcmV0ID0g MDsKPiBAQCAtNTkyLDcgKzU4OSw3IEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCX0KPiAgIAl9Cj4KPiAtCWlmIChJOTE1 X05FRURfR0ZYX0hXUyhkZXYpKQo+ICsJaWYgKEk5MTVfTkVFRF9HRlhfSFdTKGRldl9wcml2KSkK PiAgIAkJaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShlbmdpbmUpOwo+ICAgCWVsc2UKPiAg IAkJcmluZ19zZXR1cF9waHlzX3N0YXR1c19wYWdlKGVuZ2luZSk7Cj4gQEAgLTY0OSwxMiArNjQ2 LDEwIEBAIG91dDoKPiAgIHZvaWQKPiAgIGludGVsX2ZpbmlfcGlwZV9jb250cm9sKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmdpbmUtPmRldjsKPiAtCj4gICAJaWYgKGVuZ2luZS0+c2NyYXRjaC5vYmogPT0gTlVMTCkK PiAgIAkJcmV0dXJuOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgewo+ICsJ aWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDUpIHsKPiAgIAkJa3VubWFwKHNnX3BhZ2Uo ZW5naW5lLT5zY3JhdGNoLm9iai0+cGFnZXMtPnNnbCkpOwo+ICAgCQlpOTE1X2dlbV9vYmplY3Rf Z2d0dF91bnBpbihlbmdpbmUtPnNjcmF0Y2gub2JqKTsKPiAgIAl9Cj4gQEAgLTY3MCw3ICs2NjUs NyBAQCBpbnRlbF9pbml0X3BpcGVfY29udHJvbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4KPiAgIAlXQVJOX09OKGVuZ2luZS0+c2NyYXRjaC5vYmopOwo+Cj4gLQllbmdpbmUtPnNj cmF0Y2gub2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShlbmdpbmUtPmRldiwgNDA5Nik7Cj4g KwllbmdpbmUtPnNjcmF0Y2gub2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShlbmdpbmUtPmk5 MTUtPmRldiwgNDA5Nik7Cj4gICAJaWYgKElTX0VSUihlbmdpbmUtPnNjcmF0Y2gub2JqKSkgewo+ ICAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBzZXFubyBwYWdlXG4iKTsKPiAgIAkJ cmV0ID0gUFRSX0VSUihlbmdpbmUtPnNjcmF0Y2gub2JqKTsKPiBAQCAtNzA4LDExICs3MDMsOSBA QCBlcnI6Cj4KPiAgIHN0YXRpYyBpbnQgaW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0JaW50IHJldCwgaTsKPiAgIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5k cyAqdyA9ICZkZXZfcHJpdi0+d29ya2Fyb3VuZHM7Cj4gKwlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5k cyAqdyA9ICZyZXEtPmk5MTUtPndvcmthcm91bmRzOwo+ICsJaW50IHJldCwgaTsKPgo+ICAgCWlm ICh3LT5jb3VudCA9PSAwKQo+ICAgCQlyZXR1cm4gMDsKPiBAQCAtODAxLDcgKzc5NCw3IEBAIHN0 YXRpYyBpbnQgd2FfYWRkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIHN0 YXRpYyBpbnQgd2FfcmluZ193aGl0ZWxpc3RfcmVnKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAgIAkJCQkgaTkxNV9yZWdfdCByZWcpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJc3RydWN0IGk5 MTVfd29ya2Fyb3VuZHMgKndhID0gJmRldl9wcml2LT53b3JrYXJvdW5kczsKPiAgIAljb25zdCB1 aW50MzJfdCBpbmRleCA9IHdhLT5od193aGl0ZWxpc3RfY291bnRbZW5naW5lLT5pZF07Cj4KPiBA QCAtODE3LDggKzgxMCw3IEBAIHN0YXRpYyBpbnQgd2FfcmluZ193aGl0ZWxpc3RfcmVnKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPgo+ICAgc3RhdGljIGludCBnZW44X2luaXRfd29y a2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+ICAgCVdBX1NFVF9CSVRfTUFTS0VEKElO U1RQTSwgSU5TVFBNX0ZPUkNFX09SREVSSU5HKTsKPgo+IEBAIC04NjksOSArODYxLDggQEAgc3Rh dGljIGludCBnZW44X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+Cj4gICBzdGF0aWMgaW50IGJkd19pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlpbnQgcmV0Owo+IC0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPgo+ICAgCXJldCA9IGdlbjhfaW5pdF93b3JrYXJvdW5kcyhl bmdpbmUpOwo+ICAgCWlmIChyZXQpCj4gQEAgLTg5MSwxNiArODgyLDE1IEBAIHN0YXRpYyBpbnQg YmR3X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg CQkJICAvKiBXYUZvcmNlQ29udGV4dFNhdmVSZXN0b3JlTm9uQ29oZXJlbnQ6YmR3ICovCj4gICAJ CQkgIEhEQ19GT1JDRV9DT05URVhUX1NBVkVfUkVTVE9SRV9OT05fQ09IRVJFTlQgfAo+ICAgCQkJ ICAvKiBXYURpc2FibGVGZW5jZURlc3RpbmF0aW9uVG9TTE06YmR3IChwcmUtcHJvZCkgKi8KPiAt CQkJICAoSVNfQkRXX0dUMyhkZXYpID8gSERDX0ZFTkNFX0RFU1RfU0xNX0RJU0FCTEUgOiAwKSk7 Cj4gKwkJCSAgKElTX0JEV19HVDMoZGV2X3ByaXYpID8gSERDX0ZFTkNFX0RFU1RfU0xNX0RJU0FC TEUgOiAwKSk7Cj4KPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBjaHZfaW5p dF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJaW50 IHJldDsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4KPiAgIAly ZXQgPSBnZW44X2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKPiAgIAlpZiAocmV0KQo+IEBAIC05 MTcsOCArOTA3LDcgQEAgc3RhdGljIGludCBjaHZfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91 bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdWludDMyX3QgdG1wOwo+ICAgCWludCByZXQ7 Cj4KPiBAQCAtOTQxLDE0ICs5MzAsMTQgQEAgc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3Vu ZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkJICBHRU45X0RJU0FCTEVf T0NMX09PQl9TVVBQUkVTU19MT0dJQyk7Cj4KPiAgIAkvKiBXYURpc2FibGVEZ01pcnJvckZpeElu SGFsZlNsaWNlQ2hpY2tlbjU6c2tsLGJ4dCAqLwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIDAs IFNLTF9SRVZJRF9CMCkgfHwKPiAtCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURf QTEpKQo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXZfcHJpdiwgMCwgU0tMX1JFVklEX0IwKSB8fAo+ ICsJICAgIElTX0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkKPiAgIAkJV0Ff Q0xSX0JJVF9NQVNLRUQoR0VOOV9IQUxGX1NMSUNFX0NISUNLRU41LAo+ICAgCQkJCSAgR0VOOV9E R19NSVJST1JfRklYX0VOQUJMRSk7Cj4KPiAgIAkvKiBXYVNldERpc2FibGVQaXhNYXNrQ2FtbWlu Z0FuZFJod29JbkNvbW1vblNsaWNlQ2hpY2tlbjpza2wsYnh0ICovCj4gLQlpZiAoSVNfU0tMX1JF VklEKGRldiwgMCwgU0tMX1JFVklEX0IwKSB8fAo+IC0JICAgIElTX0JYVF9SRVZJRChkZXYsIDAs IEJYVF9SRVZJRF9BMSkpIHsKPiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIDAsIFNLTF9S RVZJRF9CMCkgfHwKPiArCSAgICBJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9B MSkpIHsKPiAgIAkJV0FfU0VUX0JJVF9NQVNLRUQoR0VON19DT01NT05fU0xJQ0VfQ0hJQ0tFTjEs Cj4gICAJCQkJICBHRU45X1JIV09fT1BUSU1JWkFUSU9OX0RJU0FCTEUpOwo+ICAgCQkvKgo+IEBA IC05NzQsMjAgKzk2MywyMCBAQCBzdGF0aWMgaW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkgIEdFTjlfQ0NTX1RMQl9QUkVGRVRD SF9FTkFCTEUpOwo+Cj4gICAJLyogV2FEaXNhYmxlTWFza0Jhc2VkQ2FtbWluZ0luUkNDOnNrbCxi eHQgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCBTS0xfUkVWSURfQzAsIFNLTF9SRVZJRF9D MCkgfHwKPiAtCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICsJaWYg KElTX1NLTF9SRVZJRChkZXZfcHJpdiwgU0tMX1JFVklEX0MwLCBTS0xfUkVWSURfQzApIHx8Cj4g KwkgICAgSVNfQlhUX1JFVklEKGRldl9wcml2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICAgCQlXQV9T RVRfQklUX01BU0tFRChTTElDRV9FQ09fQ0hJQ0tFTjAsCj4gICAJCQkJICBQSVhFTF9NQVNLX0NB TU1JTkdfRElTQUJMRSk7Cj4KPiAgIAkvKiBXYUZvcmNlQ29udGV4dFNhdmVSZXN0b3JlTm9uQ29o ZXJlbnQ6c2tsLGJ4dCAqLwo+ICAgCXRtcCA9IEhEQ19GT1JDRV9DT05URVhUX1NBVkVfUkVTVE9S RV9OT05fQ09IRVJFTlQ7Cj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgU0tMX1JFVklEX0YwLCBS RVZJRF9GT1JFVkVSKSB8fAo+IC0JICAgIElTX0JYVF9SRVZJRChkZXYsIEJYVF9SRVZJRF9CMCwg UkVWSURfRk9SRVZFUikpCj4gKwlpZiAoSVNfU0tMX1JFVklEKGRldl9wcml2LCBTS0xfUkVWSURf RjAsIFJFVklEX0ZPUkVWRVIpIHx8Cj4gKwkgICAgSVNfQlhUX1JFVklEKGRldl9wcml2LCBCWFRf UkVWSURfQjAsIFJFVklEX0ZPUkVWRVIpKQo+ICAgCQl0bXAgfD0gSERDX0ZPUkNFX0NTUl9OT05f Q09IRVJFTlRfT1ZSX0RJU0FCTEU7Cj4gICAJV0FfU0VUX0JJVF9NQVNLRUQoSERDX0NISUNLRU4w LCB0bXApOwo+Cj4gICAJLyogV2FEaXNhYmxlU2FtcGxlclBvd2VyQnlwYXNzRm9yU09QaW5nUG9u Zzpza2wsYnh0ICovCj4gLQlpZiAoSVNfU0tZTEFLRShkZXYpIHx8IElTX0JYVF9SRVZJRChkZXYs IDAsIEJYVF9SRVZJRF9CMCkpCj4gKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfQlhU X1JFVklEKGRldl9wcml2LCAwLCBCWFRfUkVWSURfQjApKQo+ICAgCQlXQV9TRVRfQklUX01BU0tF RChIQUxGX1NMSUNFX0NISUNLRU4zLAo+ICAgCQkJCSAgR0VOOF9TQU1QTEVSX1BPV0VSX0JZUEFT U19ESVMpOwo+Cj4gQEAgLTEwMTMsOCArMTAwMiw3IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dv cmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAgc3RhdGljIGlu dCBza2xfdHVuZV9pel9oYXNoaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg IHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdTggdmFsc1sz XSA9IHsgMCwgMCwgMCB9Owo+ICAgCXVuc2lnbmVkIGludCBpOwo+Cj4gQEAgLTEwNTUsOSArMTA0 Myw4IEBAIHN0YXRpYyBpbnQgc2tsX3R1bmVfaXpfaGFzaGluZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4KPiAgIHN0YXRpYyBpbnQgc2tsX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCWludCByZXQ7Cj4gLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Cj4gICAJcmV0ID0gZ2VuOV9pbml0X3dvcmth cm91bmRzKGVuZ2luZSk7Cj4gICAJaWYgKHJldCkKPiBAQCAtMTA2OCwxMiArMTA1NSwxMiBAQCBz dGF0aWMgaW50IHNrbF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAkgKiB1bnRpbCBEMCB3aGljaCBpcyB0aGUgZGVmYXVsdCBjYXNlIHNvIHRoaXMg aXMgZXF1aXZhbGVudCB0bwo+ICAgCSAqICFXYURpc2FibGVQZXJDdHh0UHJlZW1wdGlvbkdyYW51 bGFyaXR5Q29udHJvbDpza2wKPiAgIAkgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCBTS0xf UkVWSURfRTAsIFJFVklEX0ZPUkVWRVIpKSB7Cj4gKwlpZiAoSVNfU0tMX1JFVklEKGRldl9wcml2 LCBTS0xfUkVWSURfRTAsIFJFVklEX0ZPUkVWRVIpKSB7Cj4gICAJCUk5MTVfV1JJVEUoR0VON19G Rl9TTElDRV9DU19DSElDS0VOMSwKPiAgIAkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRU45X0ZG U0NfUEVSQ1RYX1BSRUVNUFRfQ1RSTCkpOwo+ICAgCX0KPgo+IC0JaWYgKElTX1NLTF9SRVZJRChk ZXYsIDAsIFNLTF9SRVZJRF9EMCkpIHsKPiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIDAs IFNLTF9SRVZJRF9EMCkpIHsKPiAgIAkJLyogV2FEaXNhYmxlQ2hpY2tlbkJpdFRTR0JhcnJpZXJB Y2tGb3JGRlNsaWNlQ1M6c2tsICovCj4gICAJCUk5MTVfV1JJVEUoRkZfU0xJQ0VfQ1NfQ0hJQ0tF TjIsCj4gICAJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9UU0dfQkFSUklFUl9BQ0tfRElT QUJMRSkpOwo+IEBAIC0xMDgyLDI0ICsxMDY5LDI0IEBAIHN0YXRpYyBpbnQgc2tsX2luaXRfd29y a2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCS8qIEdFTjhfTDNT UUNSRUc0IGhhcyBhIGRlcGVuZGVuY3kgd2l0aCBXQSBiYXRjaCBzbyBhbnkgbmV3IGNoYW5nZXMK PiAgIAkgKiBpbnZvbHZpbmcgdGhpcyByZWdpc3RlciBzaG91bGQgYWxzbyBiZSBhZGRlZCB0byBX QSBiYXRjaCBhcyByZXF1aXJlZC4KPiAgIAkgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCAw LCBTS0xfUkVWSURfRTApKQo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXZfcHJpdiwgMCwgU0tMX1JF VklEX0UwKSkKPiAgIAkJLyogV2FEaXNhYmxlTFNRQ1JPUEVSRmZvck9DTDpza2wgKi8KPiAgIAkJ STkxNV9XUklURShHRU44X0wzU1FDUkVHNCwgSTkxNV9SRUFEKEdFTjhfTDNTUUNSRUc0KSB8Cj4g ICAJCQkgICBHRU44X0xRU0NfUk9fUEVSRl9ESVMpOwo+Cj4gICAJLyogV2FFbmFibGVHYXBzVHN2 Q3JlZGl0Rml4OnNrbCAqLwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIFNLTF9SRVZJRF9DMCwg UkVWSURfRk9SRVZFUikpIHsKPiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIFNLTF9SRVZJ RF9DMCwgUkVWSURfRk9SRVZFUikpIHsKPiAgIAkJSTkxNV9XUklURShHRU44X0dBUkJDTlRMLCAo STkxNV9SRUFEKEdFTjhfR0FSQkNOVEwpIHwKPiAgIAkJCQkJICAgR0VOOV9HQVBTX1RTVl9DUkVE SVRfRElTQUJMRSkpOwo+ICAgCX0KPgo+ICAgCS8qIFdhRGlzYWJsZVBvd2VyQ29tcGlsZXJDbG9j a0dhdGluZzpza2wgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCBTS0xfUkVWSURfQjAsIFNL TF9SRVZJRF9CMCkpCj4gKwlpZiAoSVNfU0tMX1JFVklEKGRldl9wcml2LCBTS0xfUkVWSURfQjAs IFNLTF9SRVZJRF9CMCkpCj4gICAJCVdBX1NFVF9CSVRfTUFTS0VEKEhJWl9DSElDS0VOLAo+ICAg CQkJCSAgQkRXX0hJWl9QT1dFUl9DT01QSUxFUl9DTE9DS19HQVRJTkdfRElTQUJMRSk7Cj4KPiAg IAkvKiBUaGlzIGlzIHRpZWQgdG8gV2FGb3JjZUNvbnRleHRTYXZlUmVzdG9yZU5vbkNvaGVyZW50 ICovCj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgUkVWSURfRk9SRVZFUikpIHsKPiArCWlm IChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIDAsIFJFVklEX0ZPUkVWRVIpKSB7Cj4gICAJCS8qCj4g ICAJCSAqVXNlIEZvcmNlIE5vbi1Db2hlcmVudCB3aGVuZXZlciBleGVjdXRpbmcgYSAzRCBjb250 ZXh0LiBUaGlzCj4gICAJCSAqIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBwb3NzaWJsZSBoYW5nIGlu IHRoZSB1bmxpa2VseSBldmVudAo+IEBAIC0xMTE1LDEzICsxMTAyLDEzIEBAIHN0YXRpYyBpbnQg c2tsX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg CX0KPgo+ICAgCS8qIFdhQmFycmllclBlcmZvcm1hbmNlRml4RGlzYWJsZTpza2wgKi8KPiAtCWlm IChJU19TS0xfUkVWSUQoZGV2LCBTS0xfUkVWSURfQzAsIFNLTF9SRVZJRF9EMCkpCj4gKwlpZiAo SVNfU0tMX1JFVklEKGRldl9wcml2LCBTS0xfUkVWSURfQzAsIFNLTF9SRVZJRF9EMCkpCj4gICAJ CVdBX1NFVF9CSVRfTUFTS0VEKEhEQ19DSElDS0VOMCwKPiAgIAkJCQkgIEhEQ19GRU5DRV9ERVNU X1NMTV9ESVNBQkxFIHwKPiAgIAkJCQkgIEhEQ19CQVJSSUVSX1BFUkZPUk1BTkNFX0RJU0FCTEUp Owo+Cj4gICAJLyogV2FEaXNhYmxlU2JlQ2FjaGVEaXNwYXRjaFBvcnRTaGFyaW5nOnNrbCAqLwo+ IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9GMCkpCj4gKwlpZiAoSVNfU0tM X1JFVklEKGRldl9wcml2LCAwLCBTS0xfUkVWSURfRjApKQo+ICAgCQlXQV9TRVRfQklUX01BU0tF RCgKPiAgIAkJCUdFTjdfSEFMRl9TTElDRV9DSElDS0VOMSwKPiAgIAkJCUdFTjdfU0JFX1NTX0NB Q0hFX0RJU1BBVENIX1BPUlRfU0hBUklOR19ESVNBQkxFKTsKPiBAQCAtMTEzNiw5ICsxMTIzLDgg QEAgc3RhdGljIGludCBza2xfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4KPiAgIHN0YXRpYyBpbnQgYnh0X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCWludCByZXQ7Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Cj4gICAJcmV0ID0gZ2VuOV9pbml0X3dvcmthcm91 bmRzKGVuZ2luZSk7Cj4gICAJaWYgKHJldCkKPiBAQCAtMTE0NiwxMSArMTEzMiwxMSBAQCBzdGF0 aWMgaW50IGJ4dF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPgo+ICAgCS8qIFdhU3RvcmVNdWx0aXBsZVBURWVuYWJsZTpieHQgKi8KPiAgIAkvKiBUaGlz IGlzIGEgcmVxdWlyZW1lbnQgYWNjb3JkaW5nIHRvIEhhcmR3YXJlIHNwZWNpZmljYXRpb24gKi8K PiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICsJaWYgKElTX0JY VF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkKPiAgIAkJSTkxNV9XUklURShUSUxF Q1RMLCBJOTE1X1JFQUQoVElMRUNUTCkgfCBUSUxFQ1RMX1RMQlBGKTsKPgo+ICAgCS8qIFdhU2V0 Q2xja0dhdGluZ0Rpc2FibGVNZWRpYTpieHQgKi8KPiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCAw LCBCWFRfUkVWSURfQTEpKSB7Cj4gKwlpZiAoSVNfQlhUX1JFVklEKGRldl9wcml2LCAwLCBCWFRf UkVWSURfQTEpKSB7Cj4gICAJCUk5MTVfV1JJVEUoR0VON19NSVNDQ1BDVEwsIChJOTE1X1JFQUQo R0VON19NSVNDQ1BDVEwpICYKPiAgIAkJCQkJICAgIH5HRU44X0RPUF9DTE9DS19HQVRFX01FRElB X0VOQUJMRSkpOwo+ICAgCX0KPiBAQCAtMTE2MCw3ICsxMTQ2LDcgQEAgc3RhdGljIGludCBieHRf aW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkg IFNUQUxMX0RPUF9HQVRJTkdfRElTQUJMRSk7Cj4KPiAgIAkvKiBXYURpc2FibGVTYmVDYWNoZURp c3BhdGNoUG9ydFNoYXJpbmc6Ynh0ICovCj4gLQlpZiAoSVNfQlhUX1JFVklEKGRldiwgMCwgQlhU X1JFVklEX0IwKSkgewo+ICsJaWYgKElTX0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklE X0IwKSkgewo+ICAgCQlXQV9TRVRfQklUX01BU0tFRCgKPiAgIAkJCUdFTjdfSEFMRl9TTElDRV9D SElDS0VOMSwKPiAgIAkJCUdFTjdfU0JFX1NTX0NBQ0hFX0RJU1BBVENIX1BPUlRfU0hBUklOR19E SVNBQkxFKTsKPiBAQCAtMTE3MCw3ICsxMTU2LDcgQEAgc3RhdGljIGludCBieHRfaW5pdF93b3Jr YXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJLyogV2FEaXNhYmxl T2JqZWN0TGV2ZWxQcmVlbXB0aW9uRm9ySW5zdGFuY2VkRHJhdzpieHQgKi8KPiAgIAkvKiBXYURp c2FibGVPYmplY3RMZXZlbFByZWVtdGlvbkZvckluc3RhbmNlSWQ6Ynh0ICovCj4gICAJLyogV2FE aXNhYmxlTFNRQ1JPUEVSRmZvck9DTDpieHQgKi8KPiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCAw LCBCWFRfUkVWSURfQTEpKSB7Cj4gKwlpZiAoSVNfQlhUX1JFVklEKGRldl9wcml2LCAwLCBCWFRf UkVWSURfQTEpKSB7Cj4gICAJCXJldCA9IHdhX3Jpbmdfd2hpdGVsaXN0X3JlZyhlbmdpbmUsIEdF TjlfQ1NfREVCVUdfTU9ERTEpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiBA QCAtMTE4MSw3ICsxMTY3LDcgQEAgc3RhdGljIGludCBieHRfaW5pdF93b3JrYXJvdW5kcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJfQo+Cj4gICAJLyogV2FQcm9ncmFtTDNT cWNSZWcxRGVmYXVsdEZvclBlcmY6Ynh0ICovCj4gLQlpZiAoSVNfQlhUX1JFVklEKGRldiwgQlhU X1JFVklEX0IwLCBSRVZJRF9GT1JFVkVSKSkKPiArCWlmIChJU19CWFRfUkVWSUQoZGV2X3ByaXYs IEJYVF9SRVZJRF9CMCwgUkVWSURfRk9SRVZFUikpCj4gICAJCUk5MTVfV1JJVEUoR0VOOF9MM1NR Q1JFRzEsIEwzX0dFTkVSQUxfUFJJT19DUkVESVRTKDYyKSB8Cj4gICAJCQkJCSAgIEwzX0hJR0hf UFJJT19DUkVESVRTKDIpKTsKPgo+IEBAIC0xMTkwLDI0ICsxMTc2LDIzIEBAIHN0YXRpYyBpbnQg Ynh0X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4g ICBpbnQgaW5pdF93b3JrYXJvdW5kc19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4KPiAgIAlX QVJOX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKPgo+ICAgCWRldl9wcml2LT53b3JrYXJvdW5kcy5j b3VudCA9IDA7Cj4gICAJZGV2X3ByaXYtPndvcmthcm91bmRzLmh3X3doaXRlbGlzdF9jb3VudFtS Q1NdID0gMDsKPgo+IC0JaWYgKElTX0JST0FEV0VMTChkZXYpKQo+ICsJaWYgKElTX0JST0FEV0VM TChkZXZfcHJpdikpCj4gICAJCXJldHVybiBiZHdfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUpOwo+ Cj4gLQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQo+ICAgCQlyZXR1cm4gY2h2X2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKPgo+IC0JaWYg KElTX1NLWUxBS0UoZGV2KSkKPiArCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkKPiAgIAkJcmV0 dXJuIHNrbF9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4KPiAtCWlmIChJU19CUk9YVE9OKGRl dikpCj4gKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gICAJCXJldHVybiBieHRfaW5pdF93 b3JrYXJvdW5kcyhlbmdpbmUpOwo+Cj4gICAJcmV0dXJuIDA7Cj4gQEAgLTEyMTUsMTQgKzEyMDAs MTMgQEAgaW50IGluaXRfd29ya2Fyb3VuZHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4KPiAgIHN0YXRpYyBpbnQgaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5l LT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5p OTE1Owo+ICAgCWludCByZXQgPSBpbml0X3JpbmdfY29tbW9uKGVuZ2luZSk7Cj4gICAJaWYgKHJl dCkKPiAgIAkJcmV0dXJuIHJldDsKPgo+ICAgCS8qIFdhVGltZWRTaW5nbGVWZXJ0ZXhEaXNwYXRj aDpjbCxidyxjdGcsZWxrLGlsayxzbmIgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA0ICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNykKPiArCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDQgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDcpCj4gICAJCUk5MTVfV1JJVEUoTUlf TU9ERSwgX01BU0tFRF9CSVRfRU5BQkxFKFZTX1RJTUVSX0RJU1BBVENIKSk7Cj4KPiAgIAkvKiBX ZSBuZWVkIHRvIGRpc2FibGUgdGhlIEFzeW5jRmxpcCBwZXJmb3JtYW5jZSBvcHRpbWlzYXRpb25z IGluIG9yZGVyCj4gQEAgLTEyMzEsMjIgKzEyMTUsMjIgQEAgc3RhdGljIGludCBpbml0X3JlbmRl cl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkgKgo+ICAgCSAqIFdh RGlzYWJsZUFzeW5jRmxpcFBlcmZNb2RlOnNuYixpdmIsaHN3LHZsdgo+ICAgCSAqLwo+IC0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4KQo+ ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwg OCkKPiAgIAkJSTkxNV9XUklURShNSV9NT0RFLCBfTUFTS0VEX0JJVF9FTkFCTEUoQVNZTkNfRkxJ UF9QRVJGX0RJU0FCTEUpKTsKPgo+ICAgCS8qIFJlcXVpcmVkIGZvciB0aGUgaGFyZHdhcmUgdG8g cHJvZ3JhbSBzY2FubGluZSB2YWx1ZXMgZm9yIHdhaXRpbmcgKi8KPiAgIAkvKiBXYUVuYWJsZUZs dXNoVGxiSW52YWxpZGF0aW9uTW9kZTpzbmIgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA9PSA2KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gNikKCklTX0dFTjYKCj4gICAJ CUk5MTVfV1JJVEUoR0ZYX01PREUsCj4gICAJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1RM Ql9JTlZBTElEQVRFX0VYUExJQ0lUKSk7Cj4KPiAgIAkvKiBXYUJDU1ZDU1RsYkludmFsaWRhdGlv bk1vZGU6aXZiLHZsdixoc3cgKi8KPiAtCWlmIChJU19HRU43KGRldikpCj4gKwlpZiAoSVNfR0VO NyhkZXZfcHJpdikpCj4gICAJCUk5MTVfV1JJVEUoR0ZYX01PREVfR0VONywKPiAgIAkJCSAgIF9N QVNLRURfQklUX0VOQUJMRShHRlhfVExCX0lOVkFMSURBVEVfRVhQTElDSVQpIHwKPiAgIAkJCSAg IF9NQVNLRURfQklUX0VOQUJMRShHRlhfUkVQTEFZX01PREUpKTsKPgo+IC0JaWYgKElTX0dFTjYo ZGV2KSkgewo+ICsJaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7Cj4gICAJCS8qIEZyb20gdGhlIFNh bmR5YnJpZGdlIFBSTSwgdm9sdW1lIDEgcGFydCAzLCBwYWdlIDI0Ogo+ICAgCQkgKiAiSWYgdGhp cyBiaXQgaXMgc2V0LCBTVEN1bml0IHdpbGwgaGF2ZSBMUkEgYXMgcmVwbGFjZW1lbnQKPiAgIAkJ ICogIHBvbGljeS4gWy4uLl0gVGhpcyBiaXQgbXVzdCBiZSByZXNldC4gIExSQSByZXBsYWNlbWVu dAo+IEBAIC0xMjU2LDE5ICsxMjQwLDE4IEBAIHN0YXRpYyBpbnQgaW5pdF9yZW5kZXJfcmluZyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkgICBfTUFTS0VEX0JJVF9ESVNB QkxFKENNMF9TVENfRVZJQ1RfRElTQUJMRV9MUkFfU05CKSk7Cj4gICAJfQo+Cj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDgpCj4gKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQo+ ICAgCQlJOTE1X1dSSVRFKElOU1RQTSwgX01BU0tFRF9CSVRfRU5BQkxFKElOU1RQTV9GT1JDRV9P UkRFUklORykpOwo+Cj4gLQlpZiAoSEFTX0wzX0RQRihkZXYpKQo+IC0JCUk5MTVfV1JJVEVfSU1S KGVuZ2luZSwgfkdUX1BBUklUWV9FUlJPUihkZXYpKTsKPiArCWlmIChIQVNfTDNfRFBGKGRldl9w cml2KSkKPiArCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH5HVF9QQVJJVFlfRVJST1IoZGV2X3By aXYpKTsKPgo+ICAgCXJldHVybiBpbml0X3dvcmthcm91bmRzX3JpbmcoZW5naW5lKTsKPiAgIH0K Pgo+ICAgc3RhdGljIHZvaWQgcmVuZGVyX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5k ZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1 Owo+Cj4gICAJaWYgKGRldl9wcml2LT5zZW1hcGhvcmVfb2JqKSB7Cj4gICAJCWk5MTVfZ2VtX29i amVjdF9nZ3R0X3VucGluKGRldl9wcml2LT5zZW1hcGhvcmVfb2JqKTsKPiBAQCAtMTI4NCwxMyAr MTI2NywxMiBAQCBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICB7Cj4gICAjZGVmaW5lIE1CT1hfVVBEQVRFX0RX T1JEUyA4Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyID0gc2lnbmFsbGVy X3JlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2 Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEt Pmk5MTU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwo+ICAgCWVudW0gaW50 ZWxfZW5naW5lX2lkIGlkOwo+ICAgCWludCByZXQsIG51bV9yaW5nczsKPgo+IC0JbnVtX3Jpbmdz ID0gaHdlaWdodDMyKElOVEVMX0lORk8oZGV2KS0+cmluZ19tYXNrKTsKPiArCW51bV9yaW5ncyA9 IGh3ZWlnaHQzMihJTlRFTF9JTkZPKGRldl9wcml2KS0+cmluZ19tYXNrKTsKPiAgIAludW1fZHdv cmRzICs9IChudW1fcmluZ3MtMSkgKiBNQk9YX1VQREFURV9EV09SRFM7Cj4gICAjdW5kZWYgTUJP WF9VUERBVEVfRFdPUkRTCj4KPiBAQCAtMTMyNiwxMyArMTMwOCwxMiBAQCBzdGF0aWMgaW50IGdl bjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEs Cj4gICB7Cj4gICAjZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyA2Cj4gICAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+ZW5naW5lOwo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7Cj4gICAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqd2FpdGVyOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCWlu dCByZXQsIG51bV9yaW5nczsKPgo+IC0JbnVtX3JpbmdzID0gaHdlaWdodDMyKElOVEVMX0lORk8o ZGV2KS0+cmluZ19tYXNrKTsKPiArCW51bV9yaW5ncyA9IGh3ZWlnaHQzMihJTlRFTF9JTkZPKGRl dl9wcml2KS0+cmluZ19tYXNrKTsKPiAgIAludW1fZHdvcmRzICs9IChudW1fcmluZ3MtMSkgKiBN Qk9YX1VQREFURV9EV09SRFM7Cj4gICAjdW5kZWYgTUJPWF9VUERBVEVfRFdPUkRTCj4KPiBAQCAt MTM2NSwxNCArMTM0NiwxMyBAQCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgIAkJICAgICAgIHVuc2lnbmVkIGludCBu dW1fZHdvcmRzKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9 IHNpZ25hbGxlcl9yZXEtPmVuZ2luZTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzaWdu YWxsZXItPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzaWdu YWxsZXJfcmVxLT5pOTE1Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnVzZWxlc3M7Cj4g ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gICAJaW50IHJldCwgbnVtX3JpbmdzOwo+Cj4g ICAjZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyAzCj4gLQludW1fcmluZ3MgPSBod2VpZ2h0MzIo SU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2spOwo+ICsJbnVtX3JpbmdzID0gaHdlaWdodDMyKElO VEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2spOwo+ICAgCW51bV9kd29yZHMgKz0gcm91bmRf dXAoKG51bV9yaW5ncy0xKSAqIE1CT1hfVVBEQVRFX0RXT1JEUywgMik7Cj4gICAjdW5kZWYgTUJP WF9VUERBVEVfRFdPUkRTCj4KPiBAQCAtMTQ2MCwxMCArMTQ0MCw5IEBAIGdlbjhfcmVuZGVyX2Fk ZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgCXJldHVybiAw Owo+ICAgfQo+Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9oYXNfc2Vxbm9fd3JhcHBl ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1f aGFzX3NlcW5vX3dyYXBwZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg CQkJCQkgICAgICB1MzIgc2Vxbm8pCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXJldHVybiBkZXZfcHJpdi0+bGFzdF9z ZXFubyA8IHNlcW5vOwo+ICAgfQo+Cj4gQEAgLTE0ODEsNyArMTQ2MCw3IEBAIGdlbjhfcmluZ19z eW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqd2FpdGVyX3JlcSwKPiAgIAkgICAgICAg dTMyIHNlcW5vKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlciA9IHdh aXRlcl9yZXEtPmVuZ2luZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHdhaXRlci0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHdhaXRlcl9yZXEtPmk5MTU7Cj4gICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTUzNSw3ICsxNTE0LDcgQEAgZ2VuNl9yaW5nX3N5 bmMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0ZXJfcmVxLAo+ICAgCQlyZXR1cm4g cmV0Owo+Cj4gICAJLyogSWYgc2Vxbm8gd3JhcCBoYXBwZW5lZCwgb21pdCB0aGUgd2FpdCB3aXRo IG5vLW9wcyAqLwo+IC0JaWYgKGxpa2VseSghaTkxNV9nZW1faGFzX3NlcW5vX3dyYXBwZWQod2Fp dGVyLT5kZXYsIHNlcW5vKSkpIHsKPiArCWlmIChsaWtlbHkoIWk5MTVfZ2VtX2hhc19zZXFub193 cmFwcGVkKHdhaXRlcl9yZXEtPmk5MTUsIHNlcW5vKSkpIHsKPiAgIAkJaW50ZWxfcmluZ19lbWl0 KHdhaXRlciwgZHcxIHwgd2FpdF9tYm94KTsKPiAgIAkJaW50ZWxfcmluZ19lbWl0KHdhaXRlciwg c2Vxbm8pOwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQod2FpdGVyLCAwKTsKPiBAQCAtMTYxNiw3ICsx NTk1LDcgQEAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQo+ICAgc3RhdGljIHZvaWQKPiAgIGdlbjZfc2Vxbm9fYmFycmllcihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4KPiAgIAkvKiBXb3JrYXJvdW5kIHRv IGZvcmNlIGNvcnJlY3Qgb3JkZXJpbmcgYmV0d2VlbiBpcnEgYW5kIHNlcW5vIHdyaXRlcyBvbgo+ ICAgCSAqIGl2YiAoYW5kIG1heWJlIGFsc28gb24gc25iKSBieSByZWFkaW5nIGZyb20gYSBDUyBy ZWdpc3RlciAobGlrZQo+IEBAIC0xNjY1LDggKzE2NDQsNyBAQCBwY19yZW5kZXJfc2V0X3NlcW5v KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQo+ICAgc3RhdGljIGJv b2wKPiAgIGdlbjVfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKPgo+ICAgCWlmIChXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2 X3ByaXYpKSkKPiBAQCAtMTY4Myw4ICsxNjYxLDcgQEAgZ2VuNV9yaW5nX2dldF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIHZvaWQKPiAgIGdlbjVfcmluZ19w dXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiBAQCAt MTY5Niw4ICsxNjczLDcgQEAgZ2VuNV9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgc3RhdGljIGJvb2wKPiAgIGk5eHhfcmluZ19nZXRfaXJxKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBl bmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCWlmICghaW50ZWxf aXJxc19lbmFibGVkKGRldl9wcml2KSkKPiBAQCAtMTcxNyw4ICsxNjkzLDcgQEAgaTl4eF9yaW5n X2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIHZvaWQK PiAgIGk5eHhfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg IHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQg bG9uZyBmbGFnczsKPgo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ss IGZsYWdzKTsKPiBAQCAtMTczMyw4ICsxNzA4LDcgQEAgaTl4eF9yaW5nX3B1dF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIGJvb2wKPiAgIGk4eHhfcmluZ19n ZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ ICAgCWlmICghaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkKPiBAQCAtMTc1NCw4ICsxNzI4 LDcgQEAgaTh4eF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgc3RhdGljIHZvaWQKPiAgIGk4eHhfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRl djsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZf cHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiBAQCAtMTgwOCw4ICsxNzgxLDcgQEAgaTl4eF9hZGRf cmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHN0YXRpYyBib29s Cj4gICBnZW42X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXVuc2lnbmVk IGxvbmcgZmxhZ3M7Cj4KPiAgIAlpZiAoV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9w cml2KSkpCj4gQEAgLTE4MTcsMTAgKzE3ODksMTAgQEAgZ2VuNl9yaW5nX2dldF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9w cml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAgCWlmIChlbmdpbmUtPmlycV9yZWZjb3VudCsrID09 IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJ CWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSAmJiBlbmdpbmUtPmlkID09IFJDUykKPiAgIAkJCUk5 MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiAgIAkJCQkgICAgICAgfihlbmdpbmUtPmlycV9lbmFibGVf bWFzayB8Cj4gLQkJCQkJIEdUX1BBUklUWV9FUlJPUihkZXYpKSk7Cj4gKwkJCQkJIEdUX1BBUklU WV9FUlJPUihkZXZfcHJpdikpKTsKPiAgIAkJZWxzZQo+ICAgCQkJSTkxNV9XUklURV9JTVIoZW5n aW5lLCB+ZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICAgCQlnZW41X2VuYWJsZV9ndF9pcnEo ZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiBAQCAtMTgzMywxNCArMTgwNSwx MyBAQCBnZW42X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g ICBzdGF0aWMgdm9pZAo+ICAgZ2VuNl9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2 Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsK PiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9w cml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAgCWlmICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09 IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+IC0J CQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH5HVF9QQVJJVFlfRVJST1IoZGV2KSk7Cj4gKwkJaWYg KEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJCQlJOTE1X1dS SVRFX0lNUihlbmdpbmUsIH5HVF9QQVJJVFlfRVJST1IoZGV2X3ByaXYpKTsKPiAgIAkJZWxzZQo+ ICAgCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+MCk7Cj4gICAJCWdlbjVfZGlzYWJsZV9ndF9p cnEoZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiBAQCAtMTg1MSw4ICsxODIy LDcgQEAgZ2VuNl9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgc3RhdGljIGJvb2wKPiAgIGhzd192ZWJveF9nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRl djsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCWlmIChXQVJOX09OKCFpbnRlbF9pcnFz X2VuYWJsZWQoZGV2X3ByaXYpKSkKPiBAQCAtMTg3MSw4ICsxODQxLDcgQEAgaHN3X3ZlYm94X2dl dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIHZvaWQKPiAg IGhzd192ZWJveF9wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9u ZyBmbGFnczsKPgo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZs YWdzKTsKPiBAQCAtMTg4Niw4ICsxODU1LDcgQEAgaHN3X3ZlYm94X3B1dF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIGJvb2wKPiAgIGdlbjhfcmluZ19nZXRf aXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAg CWlmIChXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKPiBAQCAtMTg5NSw3 ICsxODYzLDcgQEAgZ2VuOF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3Mp Owo+ICAgCWlmIChlbmdpbmUtPmlycV9yZWZjb3VudCsrID09IDApIHsKPiAtCQlpZiAoSEFTX0wz X0RQRihkZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7Cj4gKwkJaWYgKEhBU19MM19EUEYoZGV2 X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7Cj4gICAJCQlJOTE1X1dSSVRFX0lNUihlbmdp bmUsCj4gICAJCQkJICAgICAgIH4oZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgfAo+ICAgCQkJCQkg R1RfUkVOREVSX0wzX1BBUklUWV9FUlJPUl9JTlRFUlJVUFQpKTsKPiBAQCAtMTkxMiwxMyArMTg4 MCwxMiBAQCBnZW44X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICBzdGF0aWMgdm9pZAo+ICAgZ2VuOF9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRl dl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAgCWlmICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50 ID09IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7 Cj4gKwkJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7CgpU aGlzIGNvbmRpdGlvbiByZXBlYXRzIGVub3VnaCB0byBhbG1vc3QgZGVzZXJ2ZSAKRU5HSU5FX05F RURTX1NPTUVUSElORyhlbmdpbmUpLiAvZGlncmVzc2lvbgoKPiAgIAkJCUk5MTVfV1JJVEVfSU1S KGVuZ2luZSwKPiAgIAkJCQkgICAgICAgfkdUX1JFTkRFUl9MM19QQVJJVFlfRVJST1JfSU5URVJS VVBUKTsKPiAgIAkJfSBlbHNlIHsKPiBAQCAtMjA0MCwxMiArMjAwNywxMiBAQCBpOTE1X2Rpc3Bh dGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4KPiAgIHN0 YXRpYyB2b2lkIGNsZWFudXBfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuZ2luZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGVuZ2luZS0+aTkxNTsKPgo+ICAgCWlmICghZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgp Cj4gICAJCXJldHVybjsKPgo+IC0JZHJtX3BjaV9mcmVlKGVuZ2luZS0+ZGV2LCBkZXZfcHJpdi0+ c3RhdHVzX3BhZ2VfZG1haCk7Cj4gKwlkcm1fcGNpX2ZyZWUoZGV2X3ByaXYtPmRldiwgZGV2X3By aXYtPnN0YXR1c19wYWdlX2RtYWgpOwo+ICAgCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRy ID0gTlVMTDsKPiAgIH0KPgo+IEBAIC0yMDcxLDcgKzIwMzgsNyBAQCBzdGF0aWMgaW50IGluaXRf c3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQl1bnNpZ25l ZCBmbGFnczsKPiAgIAkJaW50IHJldDsKPgo+IC0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGUoZW5naW5lLT5kZXYsIDQwOTYpOwo+ICsJCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUo ZW5naW5lLT5pOTE1LT5kZXYsIDQwOTYpOwo+ICAgCQlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJ CURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHN0YXR1cyBwYWdlXG4iKTsKPiAgIAkJCXJl dHVybiBQVFJfRVJSKG9iaik7Cj4gQEAgLTIwODIsNyArMjA0OSw3IEBAIHN0YXRpYyBpbnQgaW5p dF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQlnb3Rv IGVycl91bnJlZjsKPgo+ICAgCQlmbGFncyA9IDA7Cj4gLQkJaWYgKCFIQVNfTExDKGVuZ2luZS0+ ZGV2KSkKPiArCQlpZiAoIUhBU19MTEMoZW5naW5lLT5pOTE1KSkKPiAgIAkJCS8qIE9uIGczMywg d2UgY2Fubm90IHBsYWNlIEhXUyBhYm92ZSAyNTZNaUIsIHNvCj4gICAJCQkgKiByZXN0cmljdCBp dHMgcGlubmluZyB0byB0aGUgbG93IG1hcHBhYmxlIGFyZW5hLgo+ICAgCQkJICogVGhvdWdoIHRo aXMgcmVzdHJpY3Rpb24gaXMgbm90IGRvY3VtZW50ZWQgZm9yCj4gQEAgLTIxMTYsMTEgKzIwODMs MTEgQEAgZXJyX3VucmVmOgo+Cj4gICBzdGF0aWMgaW50IGluaXRfcGh5c19zdGF0dXNfcGFnZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4KPiAgIAlpZiAoIWRl dl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoKSB7Cj4gICAJCWRldl9wcml2LT5zdGF0dXNfcGFnZV9k bWFoID0KPiAtCQkJZHJtX3BjaV9hbGxvYyhlbmdpbmUtPmRldiwgUEFHRV9TSVpFLCBQQUdFX1NJ WkUpOwo+ICsJCQlkcm1fcGNpX2FsbG9jKGRldl9wcml2LT5kZXYsIFBBR0VfU0laRSwgUEFHRV9T SVpFKTsKPiAgIAkJaWYgKCFkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCkKPiAgIAkJCXJldHVy biAtRU5PTUVNOwo+ICAgCX0KPiBAQCAtMjE0NiwxMCArMjExMyw5IEBAIHZvaWQgaW50ZWxfdW5w aW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gICAJ cmluZ2J1Zi0+dm1hID0gTlVMTDsKPiAgIH0KPgo+IC1pbnQgaW50ZWxfcGluX2FuZF9tYXBfcmlu Z2J1ZmZlcl9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAraW50IGludGVsX3Bpbl9hbmRf bWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg IAkJCQkgICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICAgewo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSByaW5nYnVmLT5vYmo7Cj4gICAJLyogUmluZyB3 cmFwYXJvdW5kIGF0IG9mZnNldCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3aHkuICovCj4g ICAJdW5zaWduZWQgZmxhZ3MgPSBQSU5fT0ZGU0VUX0JJQVMgfCA0MDk2Owo+IEBAIC0yMjQ4LDEz ICsyMjE0LDEzIEBAIGludGVsX2VuZ2luZV9jcmVhdGVfcmluZ2J1ZmZlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsIGludCBzaXplKQo+ICAgCSAqIG9mIHRoZSBidWZmZXIuCj4gICAJ ICovCj4gICAJcmluZy0+ZWZmZWN0aXZlX3NpemUgPSBzaXplOwo+IC0JaWYgKElTX0k4MzAoZW5n aW5lLT5kZXYpIHx8IElTXzg0NUcoZW5naW5lLT5kZXYpKQo+ICsJaWYgKElTX0k4MzAoZW5naW5l LT5pOTE1KSB8fCBJU184NDVHKGVuZ2luZS0+aTkxNSkpCj4gICAJCXJpbmctPmVmZmVjdGl2ZV9z aXplIC09IDIgKiBDQUNIRUxJTkVfQllURVM7Cj4KPiAgIAlyaW5nLT5sYXN0X3JldGlyZWRfaGVh ZCA9IC0xOwo+ICAgCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+Cj4gLQlyZXQgPSBp bnRlbF9hbGxvY19yaW5nYnVmZmVyX29iaihlbmdpbmUtPmRldiwgcmluZyk7Cj4gKwlyZXQgPSBp bnRlbF9hbGxvY19yaW5nYnVmZmVyX29iaihlbmdpbmUtPmk5MTUtPmRldiwgcmluZyk7Cj4gICAJ aWYgKHJldCkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gYWxsb2NhdGUgcmlu Z2J1ZmZlciAlczogJWRcbiIsCj4gICAJCQkJIGVuZ2luZS0+bmFtZSwgcmV0KTsKPiBAQCAtMjI3 NywxMiArMjI0MywxMyBAQCBpbnRlbF9yaW5nYnVmZmVyX2ZyZWUoc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmcpCj4gICBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZjsKPiAgIAlpbnQgcmV0 Owo+Cj4gICAJV0FSTl9PTihlbmdpbmUtPmJ1ZmZlcik7Cj4KPiAtCWVuZ2luZS0+ZGV2ID0gZGV2 Owo+ICsJZW5naW5lLT5pOTE1ID0gZGV2X3ByaXY7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmVuZ2lu ZS0+YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPnJlcXVlc3RfbGlz dCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+IEBAIC0y MzAwLDcgKzIyNjcsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgIAl9Cj4gICAJZW5naW5lLT5idWZmZXIgPSByaW5nYnVmOwo+ Cj4gLQlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZGV2KSkgewo+ICsJaWYgKEk5MTVfTkVFRF9HRlhf SFdTKGRldl9wcml2KSkgewo+ICAgCQlyZXQgPSBpbml0X3N0YXR1c19wYWdlKGVuZ2luZSk7Cj4g ICAJCWlmIChyZXQpCj4gICAJCQlnb3RvIGVycm9yOwo+IEBAIC0yMzExLDcgKzIyNzgsNyBAQCBz dGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgIAkJCWdvdG8gZXJyb3I7Cj4gICAJfQo+Cj4gLQlyZXQgPSBpbnRlbF9waW5fYW5kX21hcF9y aW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+ICsJcmV0ID0gaW50ZWxfcGluX2FuZF9tYXBf cmluZ2J1ZmZlcl9vYmooZGV2X3ByaXYsIHJpbmdidWYpOwo+ICAgCWlmIChyZXQpIHsKPiAgIAkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gcGluIGFuZCBtYXAgcmluZ2J1ZmZlciAlczogJWRcbiIsCj4g ICAJCQkJZW5naW5lLT5uYW1lLCByZXQpOwo+IEBAIC0yMzM3LDExICsyMzA0LDExIEBAIHZvaWQg aW50ZWxfY2xlYW51cF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg CWlmICghaW50ZWxfZW5naW5lX2luaXRpYWxpemVkKGVuZ2luZSkpCj4gICAJCXJldHVybjsKPgo+ IC0JZGV2X3ByaXYgPSB0b19pOTE1KGVuZ2luZS0+ZGV2KTsKPiArCWRldl9wcml2ID0gZW5naW5l LT5pOTE1Owo+Cj4gICAJaWYgKGVuZ2luZS0+YnVmZmVyKSB7Cj4gICAJCWludGVsX3N0b3BfZW5n aW5lKGVuZ2luZSk7Cj4gLQkJV0FSTl9PTighSVNfR0VOMihlbmdpbmUtPmRldikgJiYgKEk5MTVf UkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpID09IDApOwo+ICsJCVdBUk5fT04oIUlTX0dF TjIoZGV2X3ByaXYpICYmIChJOTE1X1JFQURfTU9ERShlbmdpbmUpICYgTU9ERV9JRExFKSA9PSAw KTsKPgo+ICAgCQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihlbmdpbmUtPmJ1ZmZlcik7Cj4g ICAJCWludGVsX3JpbmdidWZmZXJfZnJlZShlbmdpbmUtPmJ1ZmZlcik7Cj4gQEAgLTIzNTEsNyAr MjMxOCw3IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCWlmIChlbmdpbmUtPmNsZWFudXApCj4gICAJCWVuZ2luZS0+Y2xlYW51 cChlbmdpbmUpOwo+Cj4gLQlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZW5naW5lLT5kZXYpKSB7Cj4g KwlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZGV2X3ByaXYpKSB7Cj4gICAJCWNsZWFudXBfc3RhdHVz X3BhZ2UoZW5naW5lKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQlXQVJOX09OKGVuZ2luZS0+aWQgIT0g UkNTKTsKPiBAQCAtMjM2MCw3ICsyMzI3LDcgQEAgdm9pZCBpbnRlbF9jbGVhbnVwX2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIAlpOTE1X2NtZF9wYXJzZXJfZmlu aV9yaW5nKGVuZ2luZSk7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJh dGNoX3Bvb2wpOwo+IC0JZW5naW5lLT5kZXYgPSBOVUxMOwo+ICsJZW5naW5lLT5pOTE1ID0gTlVM TDsKPiAgIH0KPgo+ICAgaW50IGludGVsX2VuZ2luZV9pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiBAQCAtMjUyNiw3ICsyNDkzLDcgQEAgaW50IGludGVsX3JpbmdfY2FjaGVs aW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Cj4gICB2b2lkIGlu dGVsX3JpbmdfaW5pdF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBz ZXFubykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5naW5lLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZW5naW5lLT5pOTE1Owo+Cj4gICAJLyogT3VyIHNlbWFwaG9yZSBpbXBsZW1lbnRhdGlvbiBpcyBz dHJpY3RseSBtb25vdG9uaWMgKGkuZS4gd2UgcHJvY2VlZAo+ICAgCSAqIHNvIGxvbmcgYXMgdGhl IHNlbWFwaG9yZSB2YWx1ZSBpbiB0aGUgcmVnaXN0ZXIvcGFnZSBpcyBncmVhdGVyCj4gQEAgLTI1 NjIsNyArMjUyOSw3IEBAIHZvaWQgaW50ZWxfcmluZ19pbml0X3NlcW5vKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQo+ICAgc3RhdGljIHZvaWQgZ2VuNl9ic2Rfcmlu Z193cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCQkgICAg IHUzMiB2YWx1ZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+ICAgICAgICAgIC8qIEV2ZXJ5IHRhaWwgbW92ZSBt dXN0IGZvbGxvdyB0aGUgc2VxdWVuY2UgYmVsb3cgKi8KPgo+IEBAIC0yNjA0LDcgKzI1NzEsNyBA QCBzdGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gICAJCXJldHVybiByZXQ7Cj4KPiAgIAljbWQgPSBNSV9GTFVTSF9EVzsKPiAt CWlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuID49IDgpCj4gKwlpZiAoSU5URUxfR0VO KHJlcS0+aTkxNSkgPj0gOCkKPiAgIAkJY21kICs9IDE7Cj4KPiAgIAkvKiBXZSBhbHdheXMgcmVx dWlyZSBhIGNvbW1hbmQgYmFycmllciBzbyB0aGF0IHN1YnNlcXVlbnQKPiBAQCAtMjYyNiw3ICsy NTkzLDcgQEAgc3RhdGljIGludCBnZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ICAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGNtZCk7Cj4gICAJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKPiAgIAkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIg fCBNSV9GTFVTSF9EV19VU0VfR1RUKTsKPiAtCWlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+ Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KSB7Cj4gICAJCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiB1cHBlciBhZGRyICovCj4gICAJCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIDApOyAvKiB2YWx1ZSAqLwo+ICAgCX0gZWxzZSAgewo+IEBAIC0yNzE3 LDcgKzI2ODQsNiBAQCBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCSAgIHUzMiBpbnZhbGlkYXRlLCB1MzIgZmx1c2gpCj4g ICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gICAJdWludDMyX3QgY21k Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMjcyNiw3ICsyNjkyLDcgQEAgc3RhdGljIGludCBnZW42 X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCXJldHVy biByZXQ7Cj4KPiAgIAljbWQgPSBNSV9GTFVTSF9EVzsKPiAtCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA4KQo+ICsJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49IDgpCj4gICAJCWNtZCAr PSAxOwo+Cj4gICAJLyogV2UgYWx3YXlzIHJlcXVpcmUgYSBjb21tYW5kIGJhcnJpZXIgc28gdGhh dCBzdWJzZXF1ZW50Cj4gQEAgLTI3NDcsNyArMjcxMyw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9yaW5n X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIGNtZCk7Cj4gICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKPiAgIAkJCUk5 MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0VfR1RUKTsKPiAtCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gKwlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkg Pj0gOCkgewo+ICAgCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsgLyogdXBwZXIgYWRkciAq Lwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsgLyogdmFsdWUgKi8KPiAgIAl9IGVs c2UgIHsKPiBAQCAtMjc3Myw3ICsyNzM5LDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3Jpbmdf YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJZW5naW5lLT5tbWlvX2Jhc2UgPSBS RU5ERVJfUklOR19CQVNFOwo+Cj4gICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsK CkRvdWJsZSBtaXNzISA6KQoKPiAtCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXYp KSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4gICAJ CQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKGRldiwgNDA5Nik7Cj4gICAJCQlpZiAoSVNf RVJSKG9iaikpIHsKPiAgIAkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBzZW1hcGhv cmUgYm8uIERpc2FibGluZyBzZW1hcGhvcmVzXG4iKTsKPiBAQCAtMjc5OCw3ICsyNzY0LDcgQEAg aW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBU Owo+ICAgCQllbmdpbmUtPmdldF9zZXFubyA9IHJpbmdfZ2V0X3NlcW5vOwo+ICAgCQllbmdpbmUt PnNldF9zZXFubyA9IHJpbmdfc2V0X3NlcW5vOwo+IC0JCWlmIChpOTE1X3NlbWFwaG9yZV9pc19l bmFibGVkKGRldikpIHsKPiArCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJp dikpIHsKPiAgIAkJCVdBUk5fT04oIWRldl9wcml2LT5zZW1hcGhvcmVfb2JqKTsKPiAgIAkJCWVu Z2luZS0+c2VtYXBob3JlLnN5bmNfdG8gPSBnZW44X3Jpbmdfc3luYzsKPiAgIAkJCWVuZ2luZS0+ c2VtYXBob3JlLnNpZ25hbCA9IGdlbjhfcmNzX3NpZ25hbDsKPiBAQCAtMjgxNiw3ICsyNzgyLDcg QEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42X3NlcW5vX2JhcnJpZXI7 Cj4gICAJCWVuZ2luZS0+Z2V0X3NlcW5vID0gcmluZ19nZXRfc2Vxbm87Cj4gICAJCWVuZ2luZS0+ c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gLQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2Vu YWJsZWQoZGV2KSkgewo+ICsJCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldl9wcml2 KSkgewo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc3luY190byA9IGdlbjZfcmluZ19zeW5jOwo+ ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuNl9zaWduYWw7Cj4gICAJCQkvKgo+ IEBAIC0yOTQwLDcgKzI5MDYsNyBAQCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjhfcmluZ19w dXRfaXJxOwo+ICAgCQkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJCQlnZW44 X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2Vu YWJsZWQoZGV2KSkgewo+ICsJCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJp dikpIHsKPiAgIAkJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5nX3N5bmM7 Cj4gICAJCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuOF94Y3Nfc2lnbmFsOwo+ICAg CQkJCUdFTjhfUklOR19TRU1BUEhPUkVfSU5JVChlbmdpbmUpOwo+IEBAIC0yOTUxLDcgKzI5MTcs NyBAQCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgIAkJCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjZfcmluZ19wdXRfaXJxOwo+ICAgCQkJZW5n aW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJCQlnZW42X3JpbmdfZGlzcGF0Y2hfZXhl Y2J1ZmZlcjsKPiAtCQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJ CQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgIAkJCQllbmdp bmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmM7Cj4gICAJCQkJZW5naW5lLT5z ZW1hcGhvcmUuc2lnbmFsID0gZ2VuNl9zaWduYWw7Cj4gICAJCQkJZW5naW5lLT5zZW1hcGhvcmUu bWJveC53YWl0W1JDU10gPSBNSV9TRU1BUEhPUkVfU1lOQ19WUjsKPiBAQCAtMzAxNCw3ICsyOTgw LDcgQEAgaW50IGludGVsX2luaXRfYnNkMl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAgCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjhfcmluZ19wdXRfaXJxOwo+ICAgCWVuZ2lu ZS0+ZGlzcGF0Y2hfZXhlY2J1ZmZlciA9Cj4gICAJCQlnZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1 ZmZlcjsKPiAtCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldikpIHsKPiArCWlmIChp OTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldl9wcml2KSkgewo+ICAgCQllbmdpbmUtPnNlbWFw aG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5nX3N5bmM7Cj4gICAJCWVuZ2luZS0+c2VtYXBob3JlLnNp Z25hbCA9IGdlbjhfeGNzX3NpZ25hbDsKPiAgIAkJR0VOOF9SSU5HX1NFTUFQSE9SRV9JTklUKGVu Z2luZSk7Cj4gQEAgLTMwNDcsNyArMzAxMyw3IEBAIGludCBpbnRlbF9pbml0X2JsdF9yaW5nX2J1 ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQllbmdpbmUtPmlycV9nZXQgPSBnZW44 X3JpbmdfZ2V0X2lycTsKPiAgIAkJZW5naW5lLT5pcnFfcHV0ID0gZ2VuOF9yaW5nX3B1dF9pcnE7 Cj4gICAJCWVuZ2luZS0+ZGlzcGF0Y2hfZXhlY2J1ZmZlciA9IGdlbjhfcmluZ19kaXNwYXRjaF9l eGVjYnVmZmVyOwo+IC0JCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldikpIHsKPiAr CQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgIAkJCWVuZ2lu ZS0+c2VtYXBob3JlLnN5bmNfdG8gPSBnZW44X3Jpbmdfc3luYzsKPiAgIAkJCWVuZ2luZS0+c2Vt YXBob3JlLnNpZ25hbCA9IGdlbjhfeGNzX3NpZ25hbDsKPiAgIAkJCUdFTjhfUklOR19TRU1BUEhP UkVfSU5JVChlbmdpbmUpOwo+IEBAIC0zMDU3LDcgKzMwMjMsNyBAQCBpbnQgaW50ZWxfaW5pdF9i bHRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJZW5naW5lLT5pcnFf Z2V0ID0gZ2VuNl9yaW5nX2dldF9pcnE7Cj4gICAJCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjZfcmlu Z19wdXRfaXJxOwo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZmZXIgPSBnZW42X3Jpbmdf ZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChk ZXYpKSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4g ICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBnZW42X3NpZ25hbDsKPiAgIAkJCWVuZ2lu ZS0+c2VtYXBob3JlLnN5bmNfdG8gPSBnZW42X3Jpbmdfc3luYzsKPiAgIAkJCS8qCj4gQEAgLTMx MDgsNyArMzA3NCw3IEBAIGludCBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVmZmVyKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gICAJCWVuZ2luZS0+aXJxX2dldCA9IGdlbjhfcmluZ19nZXRfaXJx Owo+ICAgCQllbmdpbmUtPmlycV9wdXQgPSBnZW44X3JpbmdfcHV0X2lycTsKPiAgIAkJZW5naW5l LT5kaXNwYXRjaF9leGVjYnVmZmVyID0gZ2VuOF9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXI7Cj4g LQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJCWlmIChpOTE1X3Nl bWFwaG9yZV9pc19lbmFibGVkKGRldl9wcml2KSkgewo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUu c3luY190byA9IGdlbjhfcmluZ19zeW5jOwo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFs ID0gZ2VuOF94Y3Nfc2lnbmFsOwo+ICAgCQkJR0VOOF9SSU5HX1NFTUFQSE9SRV9JTklUKGVuZ2lu ZSk7Cj4gQEAgLTMxMTgsNyArMzA4NCw3IEBAIGludCBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWVuZ2luZS0+aXJxX2dldCA9IGhzd192 ZWJveF9nZXRfaXJxOwo+ICAgCQllbmdpbmUtPmlycV9wdXQgPSBoc3dfdmVib3hfcHV0X2lycTsK PiAgIAkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0gZ2VuNl9yaW5nX2Rpc3BhdGNoX2V4 ZWNidWZmZXI7Cj4gLQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJ CWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldl9wcml2KSkgewo+ICAgCQkJZW5naW5l LT5zZW1hcGhvcmUuc3luY190byA9IGdlbjZfcmluZ19zeW5jOwo+ICAgCQkJZW5naW5lLT5zZW1h cGhvcmUuc2lnbmFsID0gZ2VuNl9zaWduYWw7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5tYm94 LndhaXRbUkNTXSA9IE1JX1NFTUFQSE9SRV9TWU5DX1ZFUjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggNzIzZmY2MTYwZmJiLi45MjllN2I0YWYyYTQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTE0MSw3ICsx NDEsOCBAQCBzdHJ1Y3QgIGk5MTVfY3R4X3dvcmthcm91bmRzIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgfTsKPgo+IC1zdHJ1Y3QgIGludGVsX2VuZ2luZV9jcyB7 Cj4gK3N0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTU7Cj4gICAJY29uc3QgY2hhcgkqbmFtZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCB7 Cj4gICAJCVJDUyA9IDAsCj4gQEAgLTE1Niw3ICsxNTcsNiBAQCBzdHJ1Y3QgIGludGVsX2VuZ2lu ZV9jcyB7Cj4gICAJdW5zaWduZWQgaW50IGh3X2lkOwo+ICAgCXVuc2lnbmVkIGludCBndWNfaWQ7 IC8qIFhYWCBzYW1lIGFzIGh3X2lkPyAqLwo+ICAgCXUzMgkJbW1pb19iYXNlOwo+IC0Jc3RydWN0 CQlkcm1fZGV2aWNlICpkZXY7Cj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKmJ1ZmZlcjsK PiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGJ1ZmZlcnM7Cj4KPiBAQCAtMzUwLDcgKzM1MCw3IEBAIHN0 cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbAo+ICAgaW50ZWxf ZW5naW5lX2luaXRpYWxpemVkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsK PiAtCXJldHVybiBlbmdpbmUtPmRldiAhPSBOVUxMOwo+ICsJcmV0dXJuIGVuZ2luZS0+aTkxNSAh PSBOVUxMOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkCj4gQEAgLTQyNSw3ICs0 MjUsNyBAQCBpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4KPiAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICoKPiAgIGludGVsX2VuZ2luZV9j cmVhdGVfcmluZ2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBzaXpl KTsKPiAtaW50IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gK2ludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1Zik7Cj4gICB2b2lkIGludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiAgIHZvaWQgaW50ZWxfcmluZ2J1ZmZl cl9mcmVlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91bmNvcmUuYwo+IGluZGV4IDRmMWRmZTYxNjg1Ni4uNGVhMmJmMmMyYTRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAtMTM4MSw3ICsxMzgxLDcgQEAgdm9p ZCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQlicmVhazsK PiAgIAl9Cj4KPiAtCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXYpKSB7Cj4gKwlpZiAoaW50ZWxf dmdwdV9hY3RpdmUoZGV2X3ByaXYpKSB7Cj4gICAJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyh2 Z3B1KTsKPiAgIAkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModmdwdSk7Cj4gICAJfQo+IEBAIC0x NjYzLDggKzE2NjMsOCBAQCBzdGF0aWMgaW50IHdhaXRfZm9yX3JlZ2lzdGVyX2Z3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPgo+ICAgc3RhdGljIGludCBnZW44X3JlcXVlc3Rf ZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlpbnQg cmV0Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYt PmRldl9wcml2YXRlOwo+Cj4gICAJSTkxNV9XUklURV9GVyhSSU5HX1JFU0VUX0NUTChlbmdpbmUt Pm1taW9fYmFzZSksCj4gICAJCSAgICAgIF9NQVNLRURfQklUX0VOQUJMRShSRVNFVF9DVExfUkVR VUVTVF9SRVNFVCkpOwo+IEBAIC0xNjgyLDcgKzE2ODIsNyBAQCBzdGF0aWMgaW50IGdlbjhfcmVx dWVzdF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICBz dGF0aWMgdm9pZCBnZW44X3VucmVxdWVzdF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+Cj4gICAJSTkxNV9XUklURV9GVyhSSU5HX1JFU0VU X0NUTChlbmdpbmUtPm1taW9fYmFzZSksCj4gICAJCSAgICAgIF9NQVNLRURfQklUX0RJU0FCTEUo UkVTRVRfQ1RMX1JFUVVFU1RfUkVTRVQpKTsKPiBAQCAtMTgwMiwxMCArMTgwMiwxMCBAQCBpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIHsKPiAgIAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnM7Cj4KPiAt CWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdi0+ZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1 X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJCXJldHVybiAwOwo+Cj4gLQlzd2l0Y2ggKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4pIHsKPiArCXN3aXRjaCAoSU5URUxfR0VOKGRldl9wcml2KSkgewo+ ICAgCWNhc2UgOToKPiAgIAkJZndfZG9tYWlucyA9IF9fZ2VuOV9yZWdfcmVhZF9md19kb21haW5z KGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpOwo+ICAgCQlicmVhazsKPiBAQCAtMTg0MiwxMCAr MTg0MiwxMCBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl93cml0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICB7Cj4gICAJZW51bSBmb3JjZXdha2VfZG9tYWlucyBm d19kb21haW5zOwo+Cj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYtPmRldikpCj4g KwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gMDsKPgo+IC0J c3dpdGNoIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuKSB7Cj4gKwlzd2l0Y2ggKElOVEVMX0dF TihkZXZfcHJpdikpIHsKPiAgIAljYXNlIDk6Cj4gICAJCWZ3X2RvbWFpbnMgPSBfX2dlbjlfcmVn X3dyaXRlX2Z3X2RvbWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7Cj4gICAJCWJyZWFr Owo+CgpSZWdhcmRzLAoKVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK