From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: prefer INTEL_GEN(dev_priv) to INTEL_INFO(dev)->gen Date: Mon, 13 Jun 2016 10:28:12 +0100 Message-ID: <575E7CAC.8090205@linux.intel.com> References: <1465580157-31867-1-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0BE4D6E418 for ; Mon, 13 Jun 2016 09:28:15 +0000 (UTC) In-Reply-To: <1465580157-31867-1-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEwLzA2LzE2IDE4OjM1LCBEYXZlIEdvcmRvbiB3cm90ZToKPiBNb3JlIENvY2NpbmVsbGVy eSAuLi4KPgo+IFdoZXJldmVyIHdlIGZpbmQgIklOVEVMX0lORk8oZGV2KS0+Z2VuIiwgYW5kIGhh dmUgYSBzdWl0YWJsZQo+ICJkZXZfcHJpdiIgaW4gc2NvcGUsIHJlcGxhY2UgaXQgd2l0aCAiSU5U RUxfR0VOKGRldl9wcml2KSIuCj4gQXQgdGhpcyB0aW1lLCB3ZSd2ZSBmb3VuZCAxODkgaW5zdGFu Y2VzLCBhbmQgZWFjaCByZXBsYWNlbWVudAo+IHNhdmVzIG9uZSBtZW1vcnkgY3ljbGUgYXQgcnVu dGltZSBhbmQgdHdvIGJ5dGVzIG9mIGNvZGVzcGFjZQo+ICh+MzYwIGJ5dGVzIHRvdGFsIHRleHQg c2l6ZSByZWR1Y3Rpb24pLgo+Cj4gQGRldl9wcml2X3BhcmFtQAo+IGZ1bmN0aW9uIEZVTkM7Cj4g aWRleHByZXNzaW9uIHN0cnVjdCBkcm1fZGV2aWNlICpERVY7Cj4gaWRlbnRpZmllciBERVZfUFJJ VjsKPiBAQAo+IEZVTkMoLi4uLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqREVWX1BSSVYsIC4u LikKPiB7Cj4gICAgICA8Li4uCj4gLSAgIElOVEVMX0lORk8oREVWKS0+Z2VuCj4gKyAgIElOVEVM X0dFTihERVZfUFJJVikKPiAgICAgIC4uLj4KPiB9Cj4KPiBAZGV2X3ByaXZfbG9jYWxACj4gaWRl eHByZXNzaW9uIHN0cnVjdCBkcm1fZGV2aWNlICpERVY7Cj4gaWRlbnRpZmllciBERVZfUFJJVjsK PiBleHByZXNzaW9uIEU7Cj4gQEAKPiB7Cj4gICAgICAuLi4KPiAoCj4gICAgICBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqREVWX1BSSVY7Cj4gfAo+ICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKkRFVl9QUklWID0gRTsKPiApCj4gICAgICA8Li4uCj4gLSAgIElOVEVMX0lORk8oREVWKS0+ Z2VuCj4gKyAgIElOVEVMX0dFTihERVZfUFJJVikKPiAgICAgIC4uLj4KPiB9Cj4KPiBQbHVzIG1h bnVhbCBkZWxldGlvbiBvZiBvbmUgbm93LXVudXNlZCBsb2NhbCAiZGV2Ii4KPgo+IFNpZ25lZC1v ZmYtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgNTIgKysrKysrKy0t LS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgICAgICB8ICAx NiArKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgIHwg ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAg IDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICAg OCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMgICAgICB8ICAg OCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8ICAx MiArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAgICAgfCAg IDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8ICAx NCArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgfCAg MTIgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgICAgIHwg IDIwICsrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyAgICAgICAg IHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgICAgICAg fCAgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgICAgICB8 ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwg MTExICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jICAgICAgICAgICAgfCAgMjAgKysrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcGxsX21nci5jICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2x2ZHMuYyAgICAgICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgICAgICAgIHwgIDE4ICsrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wc3IuYyAgICAgICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nkdm8uYyAgICAgICAgICB8ICAgOCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3R2LmMgICAgICAgICAgICB8ICAgMiArLQo+ICAgMjIgZmlsZXMgY2hhbmdlZCwg MTY3IGluc2VydGlvbnMoKyksIDE2OCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gaW5kZXggZTRmMmM1NS4uNmExMDZkNSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgaW50IGk5MTVf Z2VtX3BhZ2VmbGlwX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAgCQkJ CSAgIGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKGNydGMpKTsKPiAgIAkJCXNlcV9wcmlu dGYobSwgIiVkIHByZXBhcmVzXG4iLCBhdG9taWNfcmVhZCgmd29yay0+cGVuZGluZykpOwo+Cj4g LQkJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ICsJCQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA0KQo+ICAgCQkJCWFkZHIgPSBJOTE1X0hJX0RJU1BCQVNFKEk5MTVfUkVBRChE U1BTVVJGKGNydGMtPnBsYW5lKSkpOwo+ICAgCQkJZWxzZQo+ICAgCQkJCWFkZHIgPSBJOTE1X1JF QUQoRFNQQUREUihjcnRjLT5wbGFuZSkpOwo+IEBAIC04NjksNyArODY5LDcgQEAgc3RhdGljIGlu dCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAg IAkJCSAgIEk5MTVfUkVBRChHRU44X1BDVV9JSVIpKTsKPiAgIAkJc2VxX3ByaW50ZihtLCAiUENV IGludGVycnVwdCBlbmFibGU6XHQlMDh4XG4iLAo+ICAgCQkJICAgSTkxNV9SRUFEKEdFTjhfUENV X0lFUikpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gKwl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICAgCQlzZXFfcHJpbnRmKG0s ICJNYXN0ZXIgSW50ZXJydXB0IENvbnRyb2w6XHQlMDh4XG4iLAo+ICAgCQkJICAgSTkxNV9SRUFE KEdFTjhfTUFTVEVSX0lSUSkpOwo+Cj4gQEAgLTk5NSw3ICs5OTUsNyBAQCBzdGF0aWMgaW50IGk5 MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAgCQkJ ICAgSTkxNV9SRUFEKEdUSU1SKSk7Cj4gICAJfQo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGRldl9wcml2KSB7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gICAJCQlzZXFfcHJpbnRmKG0sCj4gICAJ CQkJICAgIkdyYXBoaWNzIEludGVycnVwdCBtYXNrICglcyk6CSUwOHhcbiIsCj4gICAJCQkJICAg ZW5naW5lLT5uYW1lLCBJOTE1X1JFQURfSU1SKGVuZ2luZSkpOwo+IEBAIC0xMjMyLDcgKzEyMzIs NyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCj4gICAJCQkgICAiZWZmaWNpZW50IChSUGUpIGZyZXF1ZW5jeTogJWQgTUh6 XG4iLAo+ICAgCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuZWZm aWNpZW50X2ZyZXEpKTsKPiAgIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2sp Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gKwl9IGVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+ICAgCQl1MzIgcnBfc3RhdGVfbGltaXRz Owo+ICAgCQl1MzIgZ3RfcGVyZl9zdGF0dXM7Cj4gICAJCXUzMiBycF9zdGF0ZV9jYXA7Cj4gQEAg LTE3NDUsNyArMTc0NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mYmNfZmNfZ2V0KHZvaWQgKmRhdGEs IHU2NCAqdmFsKQo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkYXRhOwo+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4KPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDcgfHwgIUhBU19GQkMoZGV2KSkKPiArCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNyB8fCAhSEFTX0ZCQyhkZXYpKQo+ICAgCQlyZXR1cm4gLUVOT0RF VjsKPgo+ICAgCSp2YWwgPSBkZXZfcHJpdi0+ZmJjLmZhbHNlX2NvbG9yOwo+IEBAIC0xNzU5LDcg KzE3NTksNyBAQCBzdGF0aWMgaW50IGk5MTVfZmJjX2ZjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFs KQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gICAJdTMyIHJlZzsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNyB8fCAh SEFTX0ZCQyhkZXYpKQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA3IHx8ICFIQVNfRkJD KGRldikpCj4gICAJCXJldHVybiAtRU5PREVWOwo+Cj4gICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmZiYy5sb2NrKTsKPiBAQCAtMTc5NSw3ICsxNzk1LDcgQEAgc3RhdGljIGludCBpOTE1X2lwc19z dGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJc2VxX3ByaW50Ziht LCAiRW5hYmxlZCBieSBrZXJuZWwgcGFyYW1ldGVyOiAlc1xuIiwKPiAgIAkJICAgeWVzbm8oaTkx NS5lbmFibGVfaXBzKSk7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gICAJCXNlcV9wdXRzKG0sICJDdXJy ZW50bHk6IHVua25vd25cbiIpOwo+ICAgCX0gZWxzZSB7Cj4gICAJCWlmIChJOTE1X1JFQUQoSVBT X0NUTCkgJiBJUFNfRU5BQkxFKQo+IEBAIC0yMjY2LDcgKzIyNjYsNyBAQCBzdGF0aWMgaW50IGk5 MTVfc3dpenpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgIAkJCSAg IEk5MTVfUkVBRDE2KEMwRFJCMykpOwo+ICAgCQlzZXFfcHJpbnRmKG0sICJDMURSQjMgPSAweCUw NHhcbiIsCj4gICAJCQkgICBJOTE1X1JFQUQxNihDMURSQjMpKTsKPiAtCX0gZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDYpIHsKPiAgIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzAgPSAweCUwOHhcbiIs Cj4gICAJCQkgICBJOTE1X1JFQUQoTUFEX0RJTU1fQzApKTsKPiAgIAkJc2VxX3ByaW50ZihtLCAi TUFEX0RJTU1fQzEgPSAweCUwOHhcbiIsCj4gQEAgLTIyNzUsNyArMjI3NSw3IEBAIHN0YXRpYyBp bnQgaTkxNV9zd2l6emxlX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAg CQkJICAgSTkxNV9SRUFEKE1BRF9ESU1NX0MyKSk7Cj4gICAJCXNlcV9wcmludGYobSwgIlRJTEVD VEwgPSAweCUwOHhcbiIsCj4gICAJCQkgICBJOTE1X1JFQUQoVElMRUNUTCkpOwo+IC0JCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpCj4gICAJCQlzZXFfcHJpbnRmKG0sICJHQU1UQVJCTU9ERSA9IDB4JTA4eFxuIiwKPiAgIAkJ CQkgICBJOTE1X1JFQUQoR0FNVEFSQk1PREUpKTsKPiAgIAkJZWxzZQo+IEBAIC0yMzgwLDkgKzIz ODAsOSBAQCBzdGF0aWMgaW50IGk5MTVfcHBndHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmRhdGEpCj4gICAJCXJldHVybiByZXQ7Cj4gICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKPiArCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDgpCj4gICAJCWdlbjhfcHBndHRfaW5mbyhtLCBkZXYpOwo+IC0J ZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiArCWVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNikKPiAgIAkJZ2VuNl9wcGd0dF9pbmZvKG0sIGRldik7Cj4KPiAgIAlt dXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiBAQCAtMjc0MSw3ICsyNzQxLDcgQEAg c3RhdGljIGludCBpOTE1X2VuZXJneV91SihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gICAJdTY0IHBvd2VyOwo+ICAgCXUzMiB1bml0czsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKPiAgIAkJcmV0dXJu IC1FTk9ERVY7Cj4KPiAgIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gQEAgLTMz MzgsNyArMzMzOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kZGJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKPiAgIAllbnVtIHBpcGUgcGlwZTsKPiAgIAlpbnQgcGxhbmU7Cj4K PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDkpCj4gICAJCXJldHVybiAwOwo+Cj4gICAJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2 KTsKPiBAQCAtNDA5MSw3ICs0MDkxLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAo+Cj4gICAJaWYgKElTX0dF TjIoZGV2KSkKPiAgIAkJcmV0ID0gaTh4eF9waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2YWwp Owo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICsJZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDUpCj4gICAJCXJldCA9IGk5eHhfcGlwZV9jcmNfY3RsX3JlZyhk ZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwpOwo+ICAgCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gICAJCXJldCA9IHZsdl9waXBlX2NyY19jdGxfcmVn KGRldiwgcGlwZSwgJnNvdXJjZSwgJnZhbCk7Cj4gQEAgLTQ1NzgsNyArNDU3OCw3IEBAIHN0YXRp YyBpbnQgcHJpX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgIAljb25zdCB1aW50MTZfdCAqbGF0ZW5jaWVzOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gICAJCWxh dGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAgIAllbHNlCj4gICAJCWxhdGVu Y2llcyA9IHRvX2k5MTUoZGV2KS0+d20ucHJpX2xhdGVuY3k7Cj4gQEAgLTQ1OTQsNyArNDU5NCw3 IEBAIHN0YXRpYyBpbnQgc3ByX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmRhdGEpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiAgIAljb25zdCB1aW50MTZfdCAqbGF0ZW5jaWVzOwo+Cj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp Cj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAgIAllbHNlCj4g ICAJCWxhdGVuY2llcyA9IHRvX2k5MTUoZGV2KS0+d20uc3ByX2xhdGVuY3k7Cj4gQEAgLTQ2MTAs NyArNDYxMCw3IEBAIHN0YXRpYyBpbnQgY3VyX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAljb25zdCB1aW50MTZfdCAqbGF0ZW5jaWVzOwo+Cj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpCj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAg IAllbHNlCj4gICAJCWxhdGVuY2llcyA9IHRvX2k5MTUoZGV2KS0+d20uY3VyX2xhdGVuY3k7Cj4g QEAgLTQ3MDEsNyArNDcwMSw3IEBAIHN0YXRpYyBzc2l6ZV90IHByaV93bV9sYXRlbmN5X3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXVpbnQx Nl90ICpsYXRlbmNpZXM7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgIAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYt PndtLnNrbF9sYXRlbmN5Owo+ICAgCWVsc2UKPiAgIAkJbGF0ZW5jaWVzID0gdG9faTkxNShkZXYp LT53bS5wcmlfbGF0ZW5jeTsKPiBAQCAtNDcxNyw3ICs0NzE3LDcgQEAgc3RhdGljIHNzaXplX3Qg c3ByX3dtX2xhdGVuY3lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2Vy ICp1YnVmLAo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gICAJdWludDE2X3QgKmxhdGVuY2llczsKPgo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAgCQls YXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4gICAJZWxzZQo+ICAgCQlsYXRl bmNpZXMgPSB0b19pOTE1KGRldiktPndtLnNwcl9sYXRlbmN5Owo+IEBAIC00NzMzLDcgKzQ3MzMs NyBAQCBzdGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmls ZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAl1aW50MTZfdCAqbGF0ZW5jaWVzOwo+ Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpCj4gICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsK PiAgIAllbHNlCj4gICAJCWxhdGVuY2llcyA9IHRvX2k5MTUoZGV2KS0+d20uY3VyX2xhdGVuY3k7 Cj4gQEAgLTQ5NzMsNyArNDk3Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGN1cl93bV9sYXRlbmN5X3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCWlu dCByZXQ7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDYpCj4gICAJCXJldHVybiAtRU5PREVWOwo+Cj4gICAJZmx1c2hfZGVs YXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5ZWRfcmVzdW1lX3dvcmspOwo+IEBAIC00OTk2 LDcgKzQ5OTYsNyBAQCBzdGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gICAJdTMyIGh3X21heCwgaHdf bWluOwo+ICAgCWludCByZXQ7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4gICAJCXJldHVybiAtRU5PREVWOwo+Cj4g ICAJZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5ZWRfcmVzdW1lX3dvcmsp Owo+IEBAIC01MDQwLDcgKzUwNDAsNyBAQCBzdGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93 cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlp bnQgcmV0Owo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA2KQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPgo+ICAgCWZsdXNoX2Rl bGF5ZWRfd29yaygmZGV2X3ByaXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93b3JrKTsKPiBAQCAtNTA2 Myw3ICs1MDYzLDcgQEAgc3RhdGljIHNzaXplX3QgY3VyX3dtX2xhdGVuY3lfd3JpdGUoc3RydWN0 IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAo+ICAgCXUzMiBod19tYXgsIGh3 X21pbjsKPiAgIAlpbnQgcmV0Owo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPgo+ ICAgCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93b3Jr KTsKPiBAQCAtNTM0MSw3ICs1MzQxLDcgQEAgc3RhdGljIGludCBpOTE1X2ZvcmNld2FrZV9vcGVu KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+ICAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBpbm9kZS0+aV9wcml2YXRlOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8IDYpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4gICAJCXJldHVy biAwOwo+Cj4gICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+IEBAIC01MzU1LDcg KzUzNTUsNyBAQCBzdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtlX3JlbGVhc2Uoc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGlub2RlLT5pX3ByaXZhdGU7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNikK PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggMDdlZGFlZC4uYWZkNDU5OCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIGludCBpOTE1X2dl dHBhcmFtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCXZhbHVlID0g MTsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBJOTE1X1BBUkFNX0hBU19FWEVDX0NPTlNUQU5UUzoK PiAtCQl2YWx1ZSA9IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQ7Cj4gKwkJdmFsdWUgPSBJTlRF TF9HRU4oZGV2X3ByaXYpID49IDQ7Cj4gICAJCWJyZWFrOwo+ICAgCWNhc2UgSTkxNV9QQVJBTV9I QVNfUkVMQVhFRF9ERUxUQToKPiAgIAkJdmFsdWUgPSAxOwo+IEBAIC0yNjEsMTIgKzI2MSwxMiBA QCBzdGF0aWMgaW50IGk5MTVfZ2V0X2JyaWRnZV9kZXYoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgIGludGVsX2FsbG9jX21jaGJhcl9yZXNvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gLQlpbnQgcmVnID0gSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCA/IE1DSEJBUl9J OTY1IDogTUNIQkFSX0k5MTU7Cj4gKwlpbnQgcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA0 ID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKPiAgIAl1MzIgdGVtcF9sbywgdGVtcF9oaSA9 IDA7Cj4gICAJdTY0IG1jaGJhcl9hZGRyOwo+ICAgCWludCByZXQ7Cj4KPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA0KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPiAg IAkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcgKyA0LCAm dGVtcF9oaSk7Cj4gICAJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2 LCByZWcsICZ0ZW1wX2xvKTsKPiAgIAltY2hiYXJfYWRkciA9ICgodTY0KXRlbXBfaGkgPDwgMzIp IHwgdGVtcF9sbzsKPiBAQCAtMjkzLDcgKzI5Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRfYnJp ZGdlX2RldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCX0K Pgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCj4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA0KQo+ICAgCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldl9wcml2LT5icmlk Z2VfZGV2LCByZWcgKyA0LAo+ICAgCQkJCSAgICAgICB1cHBlcl8zMl9iaXRzKGRldl9wcml2LT5t Y2hfcmVzLnN0YXJ0KSk7Cj4KPiBAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9n ZXRfYnJpZGdlX2RldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgaW50ZWxfc2V0dXBfbWNo YmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWludCBtY2hiYXJfcmVnID0g SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7Cj4g KwlpbnQgbWNoYmFyX3JlZyA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCA/IE1DSEJBUl9JOTY1 IDogTUNIQkFSX0k5MTU7Cj4gICAJdTMyIHRlbXA7Cj4gICAJYm9vbCBlbmFibGVkOwo+Cj4gQEAg LTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0X2JyaWRnZV9kZXYoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIGludGVsX3RlYXJkb3duX21jaGJhcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gLQlpbnQgbWNoYmFyX3JlZyA9IElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQgPyBNQ0hCQVJfSTk2NSA6IE1DSEJBUl9JOTE1Owo+ICsJaW50IG1jaGJhcl9yZWcgPSBJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDQgPyBNQ0hCQVJfSTk2NSA6IE1DSEJBUl9JOTE1Owo+Cj4g ICAJaWYgKGRldl9wcml2LT5tY2hiYXJfbmVlZF9kaXNhYmxlKSB7Cj4gICAJCWlmIChJU19JOTE1 RyhkZXYpIHx8IElTX0k5MTVHTShkZXYpKSB7Cj4gQEAgLTk0OCw3ICs5NDgsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgIAkJY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChkZXYpOwo+ICAgCWVsc2UgaWYgKElT X0JST0FEV0VMTChkZXYpKQo+ICAgCQlicm9hZHdlbGxfc3NldV9pbmZvX2luaXQoZGV2KTsKPiAt CWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpCj4gICAJCWdlbjlfc3NldV9pbmZvX2luaXQoZGV2KTsKPgo+ICAg CWluZm8tPmhhc19zbm9vcCA9ICFpbmZvLT5oYXNfbGxjOwo+IEBAIC0xMTQzLDcgKzExNDMsNyBA QCBzdGF0aWMgaW50IGk5MTVfbW1pb19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAg CSAqIHRoZSByZWdpc3RlciBCQVIgcmVtYWlucyB0aGUgc2FtZSBzaXplIGZvciBhbGwgdGhlIGVh cmxpZXIKPiAgIAkgKiBnZW5lcmF0aW9ucyB1cCB0byBJcm9ubGFrZS4KPiAgIAkgKi8KPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDUpCj4gICAJCW1taW9fc2l6ZSA9IDUxMiAqIDEwMjQ7Cj4gICAJZWxzZQo+ICAgCQltbWlvX3Np emUgPSAyICogMTAyNCAqIDEwMjQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggODcy YzYwNjAuLjk3ZGRiYTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtOTk4LDcg Kzk5OCw3IEBAIGludCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAkgKiBwcmV2aW91cyBjb25jZXJucyB0aGF0IGl0IGRvZXNuJ3QgcmVzcG9uZCB3ZWxs IHRvIHNvbWUgZm9ybXMKPiAgIAkgKiBvZiByZS1pbml0IGFmdGVyIHJlc2V0Lgo+ICAgCSAqLwo+ IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID4gNSkKPiAgIAkJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4KPiAg IAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBlYWU4ZDdhLi40YWVl ZTc5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQ3NzgsNyArNDc3OCw3IEBA IHZvaWQgaTkxNV9nZW1faW5pdF9zd2l6emxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1IHx8Cj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDUgfHwKPiAgIAkgICAgZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVf eCA9PSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORSkKPiAgIAkJcmV0dXJuOwo+Cj4gQEAgLTQ4OTUs NyArNDg5NSw3IEBAIGludCBpOTE1X2dlbV9pbml0X2VuZ2luZXMoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgIAkJCXUzMiB0ZW1wID0gSTkxNV9SRUFEKEdFTjdfTVNHX0NUTCk7Cj4gICAJCQl0 ZW1wICY9IH4oV0FJVF9GT1JfUENIX0ZMUl9BQ0sgfCBXQUlUX0ZPUl9QQ0hfUkVTRVRfQUNLKTsK PiAgIAkJCUk5MTVfV1JJVEUoR0VON19NU0dfQ1RMLCB0ZW1wKTsKPiAtCQl9IGVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKPiArCQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNykgewo+ICAgCQkJdTMyIHRlbXAgPSBJOTE1X1JFQUQoSFNXX05ERV9SU1RXUk5f T1BUKTsKPiAgIAkJCXRlbXAgJj0gflJFU0VUX1BDSF9IQU5EU0hBS0VfRU5BQkxFOwo+ICAgCQkJ STkxNV9XUklURShIU1dfTkRFX1JTVFdSTl9PUFQsIHRlbXApOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCA4MDk3Njk4Li44NmUwNTJjIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0zMzUs NyArMzM1LDcgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBnZW44X25vbmNhbm9uaWNhbF9hZGRy KHVpbnQ2NF90IGFkZHJlc3MpCj4gICAJCQkJCSAgICAgIG9mZnNldCAmIFBBR0VfTUFTSyk7Cj4g ICAJaW93cml0ZTMyKGxvd2VyXzMyX2JpdHMoZGVsdGEpLCByZWxvY19wYWdlICsgb2Zmc2V0X2lu X3BhZ2Uob2Zmc2V0KSk7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gICAJCW9mZnNldCArPSBzaXplb2Yo dWludDMyX3QpOwo+Cj4gICAJCWlmIChvZmZzZXRfaW5fcGFnZShvZmZzZXQpID09IDApIHsKPiBA QCAtMTI1NCwxOSArMTI1NCwxOSBAQCBzdGF0aWMgYm9vbCBvbmx5X21hcHBhYmxlX2Zvcl9yZWxv Yyh1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICAJCX0KPgo+ICAgCQlpZiAoaW5zdHBfbW9kZSAhPSBk ZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKPiAtCQkJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgNCkgewo+ICsJCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKPiAg IAkJCQlEUk1fREVCVUcoIm5vIHJlbCBjb25zdGFudHMgb24gcHJlLWdlbjRcbiIpOwo+ICAgCQkJ CXJldHVybiAtRUlOVkFMOwo+ICAgCQkJfQo+Cj4gLQkJCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+IDUgJiYKPiArCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA1ICYmCj4gICAJCQkgICAg aW5zdHBfbW9kZSA9PSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFKSB7Cj4gICAJCQkJ RFJNX0RFQlVHKCJyZWwgc3VyZmFjZSBjb25zdGFudHMgbW9kZSBpbnZhbGlkIG9uIGdlbjUrXG4i KTsKPiAgIAkJCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAkJCX0KPgo+ICAgCQkJLyogVGhlIEhXIGNo YW5nZWQgdGhlIG1lYW5pbmcgb24gdGhpcyBiaXQgb24gZ2VuNiAqLwo+IC0JCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNikKPiArCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikK PiAgIAkJCQlpbnN0cF9tYXNrICY9IH5JOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFOwo+ ICAgCQl9Cj4gICAJCWJyZWFrOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwo+ IGluZGV4IDJiNmJkYzIuLjAxM2U2OWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2ZlbmNlLmMKPiBAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3dyaXRlX2ZlbmNl X3JlZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVnLAo+ICAgCWk5MTVfcmVnX3QgZmVu Y2VfcmVnX2xvLCBmZW5jZV9yZWdfaGk7Cj4gICAJaW50IGZlbmNlX3BpdGNoX3NoaWZ0Owo+Cj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNikgewo+ICAgCQlmZW5jZV9yZWdfbG8gPSBGRU5DRV9SRUdfR0VONl9MTyhyZWcp Owo+ICAgCQlmZW5jZV9yZWdfaGkgPSBGRU5DRV9SRUdfR0VONl9ISShyZWcpOwo+ICAgCQlmZW5j ZV9waXRjaF9zaGlmdCA9IEdFTjZfRkVOQ0VfUElUQ0hfU0hJRlQ7Cj4gQEAgLTIwOSw3ICsyMDks NyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV93cml0ZV9mZW5jZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgcmVnLAo+ICAgCQlpODMwX3dyaXRlX2ZlbmNlX3JlZyhkZXYsIHJlZywgb2JqKTsK PiAgIAllbHNlIGlmIChJU19HRU4zKGRldikpCj4gICAJCWk5MTVfd3JpdGVfZmVuY2VfcmVnKGRl diwgcmVnLCBvYmopOwo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKPiAr CWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPiAgIAkJaTk2NV93cml0ZV9mZW5j ZV9yZWcoZGV2LCByZWcsIG9iaik7Cj4KPiAgIAkvKiBBbmQgc2ltaWxhcmx5IGJlIHBhcmFub2lk IHRoYXQgbm8gZGlyZWN0IGFjY2VzcyB0byB0aGlzIHJlZ2lvbgo+IEBAIC01NTMsNyArNTUzLDcg QEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAgCXVpbnQzMl90IHN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwo+ICAg CXVpbnQzMl90IHN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwo+Cj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCB8fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPiAr CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7CgpX aGlsZSB3ZSBhcmUgY2h1cm5pbmcgOiksIGNvdWxkIGxvb2tzIGZvciBib3RoIGRldl9wcml2IGFu ZCBkZXYgaW4gdGhlIApzYW1lIGNvbmRpdGlvbiBsaWtlIGhlcmUgYW5kIHRpZHkgdGhvc2UuCgo+ ICAgCQkvKgo+ICAgCQkgKiBPbiBCRFcrLCBzd2l6emxpbmcgaXMgbm90IHVzZWQuIFdlIGxlYXZl IHRoZSBDUFUgbWVtb3J5Cj4gICAJCSAqIGNvbnRyb2xsZXIgaW4gY2hhcmdlIG9mIG9wdGltaXpp bmcgbWVtb3J5IGFjY2Vzc2VzIHdpdGhvdXQKPiBAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgaTkx NV9nZW1fcmVzdG9yZV9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJICovCj4g ICAJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOwo+ICAgCQlzd2l6emxlX3kg PSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNikgewo+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsK PiAgIAkJaWYgKGRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUpIHsKPiAgIAkJCWlmIChJ OTE1X1JFQUQoRElTUF9BUkJfQ1RMKSAmCj4gICAJCQkgICAgRElTUF9USUxFX1NVUkZBQ0VfU1dJ WlpMSU5HKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA0NjY4NDc3 Li5hYzg2MGFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjMy NCw3ICsyMzI0LDcgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCS8qIERvbid0IGJvdGhlciBtZXNzaW5nIHdpdGggZmF1bHRz IHByZSBHRU42IGFzIHdlIGhhdmUgbGl0dGxlCj4gICAJICogZG9jdW1lbnRhdGlvbiBzdXBwb3J0 aW5nIHRoYXQgaXQncyBhIGdvb2QgaWRlYS4KPiAgIAkgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8IDYpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4gICAJCXJldHVy bjsKPgo+ICAgCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXZfcHJpdik7Cj4gQEAgLTMw NTQsNyArMzA1NCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dn dHQgKmdndHQpCj4KPiAgIAlwY2lfcmVhZF9jb25maWdfd29yZChkZXYtPnBkZXYsIFNOQl9HTUNI X0NUUkwsICZzbmJfZ21jaF9jdGwpOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICAgCQlnZ3R0LT5zdG9s ZW5fc2l6ZSA9IGdlbjlfZ2V0X3N0b2xlbl9zaXplKHNuYl9nbWNoX2N0bCk7Cj4gICAJCWdndHQt PnNpemUgPSBnZW44X2dldF90b3RhbF9ndHRfc2l6ZShzbmJfZ21jaF9jdGwpOwo+ICAgCX0gZWxz ZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gQEAgLTMxNzMsMTAgKzMxNzMsMTAgQEAgaW50 IGk5MTVfZ2d0dF9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJc3RydWN0IGk5 MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAgIAlpbnQgcmV0Owo+Cj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PD0gNSkgewo+ICAgCQlnZ3R0LT5wcm9iZSA9IGk5MTVfZ21jaF9wcm9iZTsKPiAgIAkJZ2d0dC0+ YmFzZS5jbGVhbnVwID0gaTkxNV9nbWNoX3JlbW92ZTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA4KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4 KSB7Cj4gICAJCWdndHQtPnByb2JlID0gZ2VuNl9nbWNoX3Byb2JlOwo+ICAgCQlnZ3R0LT5iYXNl LmNsZWFudXAgPSBnZW42X2dtY2hfcmVtb3ZlOwo+Cj4gQEAgLTMxODYsNyArMzE4Niw3IEBAIGlu dCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJZ2d0dC0+ YmFzZS5wdGVfZW5jb2RlID0gaHN3X3B0ZV9lbmNvZGU7Cj4gICAJCWVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKPiAgIAkJCWdndHQtPmJhc2UucHRlX2VuY29kZSA9IGJ5dF9wdGVfZW5jb2Rl Owo+IC0JCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpCj4gKwkJZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA3KQo+ICAgCQkJZ2d0dC0+YmFzZS5wdGVfZW5jb2RlID0g aXZiX3B0ZV9lbmNvZGU7Cj4gICAJCWVsc2UKPiAgIAkJCWdndHQtPmJhc2UucHRlX2VuY29kZSA9 IHNuYl9wdGVfZW5jb2RlOwo+IEBAIC0zMjcxLDcgKzMyNzEsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jl c3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCQlXQVJOX09O KGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKSk7Cj4gICAJfQo+ Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOCkgewo+ICAgCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElTX0JST1hU T04oZGV2KSkKPiAgIAkJCWNodl9zZXR1cF9wcml2YXRlX3BwYXQoZGV2X3ByaXYpOwo+ICAgCQll bHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBpbmRleCBlOWNkODIy Li43YjgzODNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0 b2xlbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBA QCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGk5MTVfc3RvbGVuX3RvX3Bo eXNpY2FsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJICoKPiAgIAkgKi8KPiAgIAliYXNl ID0gMDsKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSAzKSB7Cj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAzKSB7Cj4gICAJCXUzMiBic207Cj4KPiAgIAkJcGNpX3JlYWRfY29u ZmlnX2R3b3JkKGRldi0+cGRldiwgSU5URUxfQlNNLCAmYnNtKTsKPiBAQCAtMTkyLDcgKzE5Miw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGk5MTVfc3RvbGVuX3RvX3BoeXNpY2FsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gICAJCXJldHVybiAwOwo+Cj4gICAJLyogbWFrZSBzdXJlIHdlIGRv bid0IGNsb2JiZXIgdGhlIEdUVCBpZiBpdCdzIHdpdGhpbiBzdG9sZW4gbWVtb3J5ICovCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAhSVNfRzMzKGRldikgJiYgIUlTX0c0WChk ZXYpKSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmICFJU19HMzMoZGV2KSAm JiAhSVNfRzRYKGRldikpIHsKPiAgIAkJc3RydWN0IHsKPiAgIAkJCXUzMiBzdGFydCwgZW5kOwo+ ICAgCQl9IHN0b2xlblsyXSA9IHsKPiBAQCAtNDA1LDcgKzQwNSw3IEBAIGludCBpOTE1X2dlbV9p bml0X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCW11dGV4X2luaXQoJmRldl9w cml2LT5tbS5zdG9sZW5fbG9jayk7Cj4KPiAgICNpZmRlZiBDT05GSUdfSU5URUxfSU9NTVUKPiAt CWlmIChpbnRlbF9pb21tdV9nZnhfbWFwcGVkICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCkg ewo+ICsJaWYgKGludGVsX2lvbW11X2dmeF9tYXBwZWQgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8 IDgpIHsKPiAgIAkJRFJNX0lORk8oIkRNQVIgYWN0aXZlLCBkaXNhYmxpbmcgdXNlIG9mIHN0b2xl biBtZW1vcnlcbiIpOwo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5jCj4gaW5kZXggMzRmZjI0NS4uMWRhMDljNSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0zODIsNyArMzgyLDcgQEAgaW50IGk5MTVf ZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4K PiAgIAllcnJfcHJpbnRmKG0sICJFSVI6IDB4JTA4eFxuIiwgZXJyb3ItPmVpcik7Cj4gICAJZXJy X3ByaW50ZihtLCAiSUVSOiAweCUwOHhcbiIsIGVycm9yLT5pZXIpOwo+IC0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsK PiAgIAkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPiAgIAkJCWVycl9wcmludGYobSwgIkdUSUVS IGd0ICVkOiAweCUwOHhcbiIsIGksCj4gICAJCQkJICAgZXJyb3ItPmd0aWVyW2ldKTsKPiBAQCAt NDAxLDEwICs0MDEsMTAgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1f aTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gICAJCWVycl9wcmludGYobSwgIiAgSU5TVERPTkVf JWQ6IDB4JTA4eFxuIiwgaSwKPiAgIAkJCSAgIGVycm9yLT5leHRyYV9pbnN0ZG9uZVtpXSk7Cj4K PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA2KSB7Cj4gICAJCWVycl9wcmludGYobSwgIkVSUk9SOiAweCUwOHhcbiIsIGVy cm9yLT5lcnJvcik7Cj4KPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKPiArCQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICAgCQkJZXJyX3ByaW50ZihtLCAiRkFVTFRf VExCX0RBVEE6IDB4JTA4eCAweCUwOHhcbiIsCj4gICAJCQkJICAgZXJyb3ItPmZhdWx0X2RhdGEx LCBlcnJvci0+ZmF1bHRfZGF0YTApOwo+Cj4gQEAgLTEyNTEsNyArMTI1MSw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAgCWlmIChJU19HRU43KGRldikpCj4gICAJCWVycm9yLT5lcnJfaW50ID0gSTkxNV9S RUFEKEdFTjdfRVJSX0lOVCk7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7 Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gICAJCWVycm9yLT5mYXVsdF9k YXRhMCA9IEk5MTVfUkVBRChHRU44X0ZBVUxUX1RMQl9EQVRBMCk7Cj4gICAJCWVycm9yLT5mYXVs dF9kYXRhMSA9IEk5MTVfUkVBRChHRU44X0ZBVUxUX1RMQl9EQVRBMSk7Cj4gICAJfQo+IEBAIC0x MjYzLDEwICsxMjYzLDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCX0KPgo+ICAgCS8qIDI6IFJlZ2lz dGVycyB3aGljaCBiZWxvbmcgdG8gbXVsdGlwbGUgZ2VuZXJhdGlvbnMgKi8KPiAtCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA3KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykK PiAgIAkJZXJyb3ItPmZvcmNld2FrZSA9IEk5MTVfUkVBRF9GVyhGT1JDRVdBS0VfTVQpOwo+Cj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNikgewo+ICAgCQllcnJvci0+ZGVycm1yID0gSTkxNV9SRUFEKERFUlJNUik7Cj4g ICAJCWVycm9yLT5lcnJvciA9IEk5MTVfUkVBRChFUlJPUl9HRU42KTsKPiAgIAkJZXJyb3ItPmRv bmVfcmVnID0gSTkxNV9SRUFEKERPTkVfUkVHKTsKPiBAQCAtMTI4Miw3ICsxMjgyLDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gICAJaWYgKEhBU19IV19DT05URVhUUyhkZXYpKQo+ICAgCQllcnJvci0+Y2Np ZCA9IEk5MTVfUkVBRChDQ0lEKTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgp IHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJZXJyb3ItPmllciA9 IEk5MTVfUkVBRChHRU44X0RFX01JU0NfSUVSKTsKPiAgIAkJZm9yIChpID0gMDsgaSA8IDQ7IGkr KykKPiAgIAkJCWVycm9yLT5ndGllcltpXSA9IEk5MTVfUkVBRChHRU44X0dUX0lFUihpKSk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggNDM3OGE2NS4uMmI3ZDI5MiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0yNzI5LDcgKzI3MjksNyBAQCBzdGF0aWMgaW50IGk5 MTVfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlw ZSkKPiAgIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUo JmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDQpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICAgCQlpOTE1X2Vu YWJsZV9waXBlc3RhdChkZXZfcHJpdiwgcGlwZSwKPiAgIAkJCQkgICAgIFBJUEVfU1RBUlRfVkJM QU5LX0lOVEVSUlVQVF9TVEFUVVMpOwo+ICAgCWVsc2UKPiBAQCAtMjc0NCw3ICsyNzQ0LDcgQEAg c3RhdGljIGludCBpcm9ubGFrZV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCBwaXBlKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsK PiAtCXVpbnQzMl90IGJpdCA9IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSA/IERFX1BJUEVf VkJMQU5LX0lWQihwaXBlKSA6Cj4gKwl1aW50MzJfdCBiaXQgPSAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA3KSA/IERFX1BJUEVfVkJMQU5LX0lWQihwaXBlKSA6Cj4gICAJCQkJCQkgICAgIERFX1BJ UEVfVkJMQU5LKHBpcGUpOwo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFf bG9jaywgaXJxZmxhZ3MpOwo+IEBAIC0yNzk4LDcgKzI3OTgsNyBAQCBzdGF0aWMgdm9pZCBpcm9u bGFrZV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQg cGlwZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gLQl1aW50MzJfdCBi aXQgPSAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgPyBERV9QSVBFX1ZCTEFOS19JVkIocGlw ZSkgOgo+ICsJdWludDMyX3QgYml0ID0gKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgPyBERV9Q SVBFX1ZCTEFOS19JVkIocGlwZSkgOgo+ICAgCQkJCQkJICAgICBERV9QSVBFX1ZCTEFOSyhwaXBl KTsKPgo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdz KTsKPiBAQCAtMzMwMyw3ICszMzAzLDcgQEAgc3RhdGljIHZvaWQgZ2VuNV9ndF9pcnFfcmVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Cj4gICAJR0VONV9JUlFfUkVTRVQoR1QpOwo+IC0J aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA2KQo+ICAgCQlHRU41X0lSUV9SRVNFVChHRU42X1BNKTsKPiAgIH0KPgo+IEBAIC0zNjQw LDcgKzM2NDAsNyBAQCBzdGF0aWMgdm9pZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+Cj4gICAJR0VONV9JUlFfSU5JVChHVCwgZGV2X3ByaXYtPmd0X2ly cV9tYXNrLCBndF9pcnFzKTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsK PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgIAkJLyoKPiAgIAkJICogUlBT IGludGVycnVwdHMgd2lsbCBnZXQgZW5hYmxlZC9kaXNhYmxlZCBvbiBkZW1hbmQgd2hlbiBSUFMK PiAgIAkJICogaXRzZWxmIGlzIGVuYWJsZWQvZGlzYWJsZWQuCj4gQEAgLTM2NTgsNyArMzY1OCw3 IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAgIAl1MzIgZGlzcGxheV9tYXNrLCBleHRyYV9tYXNrOwo+Cj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g Nykgewo+ICAgCQlkaXNwbGF5X21hc2sgPSAoREVfTUFTVEVSX0lSUV9DT05UUk9MIHwgREVfR1NF X0lWQiB8Cj4gICAJCQkJREVfUENIX0VWRU5UX0lWQiB8IERFX1BMQU5FQ19GTElQX0RPTkVfSVZC IHwKPiAgIAkJCQlERV9QTEFORUJfRkxJUF9ET05FX0lWQiB8Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zdXNwZW5kLmMKPiBpbmRleCAzNGUwNjFhLi4wNDhhN2UxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zdXNwZW5kLmMKPiBAQCAtMzQsMTMgKzM0LDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVf c2F2ZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPgo+ICAgCS8qIERpc3BsYXkg YXJiaXRyYXRpb24gY29udHJvbCAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQp Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0KQo+ICAgCQlkZXZfcHJpdi0+cmVnZmls ZS5zYXZlRFNQQVJCID0gSTkxNV9SRUFEKERTUEFSQik7Cj4KPiAgIAkvKiBMVkRTIHN0YXRlICov Cj4gICAJaWYgKEhBU19QQ0hfSUJYKGRldikgfHwgSEFTX1BDSF9DUFQoZGV2KSkKPiAgIAkJZGV2 X3ByaXYtPnJlZ2ZpbGUuc2F2ZUxWRFMgPSBJOTE1X1JFQUQoUENIX0xWRFMpOwo+IC0JZWxzZSBp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiBJU19NT0JJTEUoZGV2KSAmJiAhSVNfSTgz MChkZXYpKQo+ICsJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmIElTX01PQklM RShkZXYpICYmICFJU19JODMwKGRldikpCj4gICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVMVkRT ID0gSTkxNV9SRUFEKExWRFMpOwo+Cj4gICAJLyogUGFuZWwgcG93ZXIgc2VxdWVuY2VyICovCj4g QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9zYXZlX2Rpc3BsYXkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyA9 IEk5MTVfUkVBRChQQ0hfUFBfT05fREVMQVlTKTsKPiAgIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2 ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09GRl9ERUxBWVMpOwo+ICAgCQlkZXZf cHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUiA9IEk5MTVfUkVBRChQQ0hfUFBfRElWSVNPUik7 Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQpIHsKPiArCX0gZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0KSB7Cj4gICAJCWRldl9wcml2LT5yZWdmaWxlLnNh dmVQUF9DT05UUk9MID0gSTkxNV9SRUFEKFBQX0NPTlRST0wpOwo+ICAgCQlkZXZfcHJpdi0+cmVn ZmlsZS5zYXZlUFBfT05fREVMQVlTID0gSTkxNV9SRUFEKFBQX09OX0RFTEFZUyk7Cj4gICAJCWRl dl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFEKFBQX09GRl9ERUxB WVMpOwo+IEBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJfQo+Cj4gICAJLyogc2F2ZSBGQkMgaW50ZXJ2YWwg Ki8KPiAtCWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAh SVNfRzRYKGRldikpCj4gKwlpZiAoSEFTX0ZCQyhkZXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikg PD0gNCAmJiAhSVNfRzRYKGRldikpCj4gICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVGQkNfQ09O VFJPTCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7Cj4gICB9Cj4KPiBAQCAtNjcsNyArNjcsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAgCXUzMiBtYXNrID0gMHhmZmZmZmZmZjsKPgo+ICAgCS8qIERpc3BsYXkgYXJiaXRyYXRp b24gKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA0KQo+ICsJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gNCkKPiAgIAkJSTkxNV9XUklURShEU1BBUkIsIGRldl9wcml2LT5yZWdm aWxlLnNhdmVEU1BBUkIpOwo+Cj4gICAJbWFzayA9IH5MVkRTX1BPUlRfRU47Cj4gQEAgLTc1LDcg Kzc1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAkvKiBMVkRTIHN0YXRlICovCj4gICAJaWYgKEhBU19QQ0hfSUJYKGRldikg fHwgSEFTX1BDSF9DUFQoZGV2KSkKPiAgIAkJSTkxNV9XUklURShQQ0hfTFZEUywgZGV2X3ByaXYt PnJlZ2ZpbGUuc2F2ZUxWRFMgJiBtYXNrKTsKPiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuIDw9IDQgJiYgSVNfTU9CSUxFKGRldikgJiYgIUlTX0k4MzAoZGV2KSkKPiArCWVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCAmJiBJU19NT0JJTEUoZGV2KSAmJiAhSVNfSTgzMChk ZXYpKQo+ICAgCQlJOTE1X1dSSVRFKExWRFMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVMVkRTICYg bWFzayk7Cj4KPiAgIAkvKiBQYW5lbCBwb3dlciBzZXF1ZW5jZXIgKi8KPiBAQCAtODQsNyArODQs NyBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAgCQlJOTE1X1dSSVRFKFBDSF9QUF9PRkZfREVMQVlTLCBkZXZfcHJpdi0+cmVnZmls ZS5zYXZlUFBfT0ZGX0RFTEFZUyk7Cj4gICAJCUk5MTVfV1JJVEUoUENIX1BQX0RJVklTT1IsIGRl dl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SKTsKPiAgIAkJSTkxNV9XUklURShQQ0hfUFBf Q09OVFJPTCwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0NPTlRST0wpOwo+IC0JfSBlbHNlIGlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA0KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPD0gNCkgewo+ICAgCQlJOTE1X1dSSVRFKFBQX09OX0RFTEFZUywgZGV2X3ByaXYt PnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7Cj4gICAJCUk5MTVfV1JJVEUoUFBfT0ZGX0RFTEFZ UywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+ICAgCQlJOTE1X1dSSVRF KFBQX0RJVklTT1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SKTsKPiBAQCAtOTUs NyArOTUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgCWludGVsX2ZiY19nbG9iYWxfZGlzYWJsZShkZXZfcHJpdik7Cj4KPiAg IAkvKiByZXN0b3JlIEZCQyBpbnRlcnZhbCAqLwo+IC0JaWYgKEhBU19GQkMoZGV2KSAmJiBJTlRF TF9JTkZPKGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSkKPiArCWlmIChIQVNfRkJDKGRl dikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmICFJU19HNFgoZGV2KSkKPiAgIAkJSTkx NV9XUklURShGQkNfQ09OVFJPTCwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUZCQ19DT05UUk9MKTsK Pgo+ICAgCWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYpOwo+IEBAIC0xMTUsNyArMTE1LDcgQEAgaW50 IGk5MTVfc2F2ZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJCSAgICAgJmRl dl9wcml2LT5yZWdmaWxlLnNhdmVHQ0RHTUJVUyk7Cj4KPiAgIAkvKiBDYWNoZSBtb2RlIHN0YXRl ICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA3KQo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA3KQo+ICAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlQ0FDSEVfTU9ERV8wID0g STkxNV9SRUFEKENBQ0hFX01PREVfMCk7Cj4KPiAgIAkvKiBNZW1vcnkgQXJiaXRyYXRpb24gc3Rh dGUgKi8KPiBAQCAtMTYxLDcgKzE2MSw3IEBAIGludCBpOTE1X3Jlc3RvcmVfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgIAlpOTE1X3Jlc3RvcmVfZGlzcGxheShkZXYpOwo+Cj4gICAJ LyogQ2FjaGUgbW9kZSBzdGF0ZSAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNykK PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPiAgIAkJSTkxNV9XUklURShDQUNIRV9N T0RFXzAsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVDQUNIRV9NT0RFXzAgfAo+ICAgCQkJICAgMHhm ZmZmMDAwMCk7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29s b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiBpbmRleCA1MjJmNWEy Li43NzhkZWMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gQEAgLTE3OSw3 ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gICAJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTUUo cGlwZSksIDApOwo+ICAgCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0xPKHBpcGUpLCAwKTsK Pgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNikgewo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPiA2KSB7Cj4gICAJCXVpbnQxNl90IHBvc3RvZmYgPSAwOwo+Cj4gICAJCWlmIChp bnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY3J0LmMKPiBpbmRleCA2MjI5NjgxLi42NjhmNTdlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY3J0LmMKPiBAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydF9zZXRf ZHBtcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCj4gICAJY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7Cj4gICAJdTMyIGFkcGE7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA1KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPiAgIAkJYWRw YSA9IEFEUEFfSE9UUExVR19CSVRTOwo+ICAgCWVsc2UKPiAgIAkJYWRwYSA9IDA7Cj4gQEAgLTY1 Myw3ICs2NTMsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfZGV0ZWN0X2RkYyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCWlmIChpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlw ZShjb25uZWN0b3IsIE5VTEwsICZ0bXAsICZjdHgpKSB7Cj4gICAJCWlmIChpbnRlbF9jcnRfZGV0 ZWN0X2RkYyhjb25uZWN0b3IpKQo+ICAgCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25u ZWN0ZWQ7Cj4gLQkJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICsJCWVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+ICAgCQkJc3RhdHVzID0gaW50ZWxfY3J0X2xv YWRfZGV0ZWN0KGNydCwKPiAgIAkJCQl0b19pbnRlbF9jcnRjKGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMpLT5waXBlKTsKPiAgIAkJZWxzZSBpZiAoaTkxNS5sb2FkX2RldGVjdF90ZXN0KQo+IEBAIC03 MTksNyArNzE5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0X3Jlc2V0KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfY3J0ICpjcnQgPSBpbnRlbF9h dHRhY2hlZF9jcnQoY29ubmVjdG9yKTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDUpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiAgIAkJdTMyIGFkcGE7 Cj4KPiAgIAkJYWRwYSA9IEk5MTVfUkVBRChjcnQtPmFkcGFfcmVnKTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+IGluZGV4IDAyMmI0MWQuLjcxZDhmYjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+IEBAIC0xNjcxLDcgKzE2NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlf cG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAgCWlm IChJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKPiAgIAkJSTkxNV9XUklURShE UExMX0NUUkwyLCAoSTkxNV9SRUFEKERQTExfQ1RSTDIpIHwKPiAgIAkJCQkJRFBMTF9DVFJMMl9E RElfQ0xLX09GRihwb3J0KSkpOwo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5 KQo+ICsJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4gICAJCUk5MTVfV1JJVEUo UE9SVF9DTEtfU0VMKHBvcnQpLCBQT1JUX0NMS19TRUxfTk9ORSk7Cj4KPiAgIAlpZiAodHlwZSA9 PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+IEBAIC0xNzA1LDcgKzE3MDUsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9lbmFibGVfZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ ICAgCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4gICAJCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4KPiAtCQlpZiAo cG9ydCA9PSBQT1JUX0EgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KQo+ICsJCWlmIChwb3J0 ID09IFBPUlRfQSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPiAgIAkJCWludGVsX2RwX3N0 b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4KPiAgIAkJaW50ZWxfZWRwX2JhY2tsaWdodF9vbihp bnRlbF9kcCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDQ3M2M4 ZmQuLjk4NGI5ZmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAg LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAgCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2Rl ciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gICAJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICAgCQlpOTE1X3JlZ190IHJlZyA9IFBJUEVD T05GKGNwdV90cmFuc2NvZGVyKTsKPgo+ICAgCQkvKiBXYWl0IGZvciB0aGUgUGlwZSBTdGF0ZSB0 byBnbyBvZmYgKi8KPiBAQCAtMTMzOCwxMSArMTMzOCwxMCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRf cGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgc3RhdGljIHZvaWQg YXNzZXJ0X3BsYW5lc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gICAJCQkJICAgZW51bSBwaXBlIHBpcGUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgIAlpbnQgaTsKPgo+ICAgCS8qIFByaW1hcnkgcGxhbmVz IGFyZSBmaXhlZCB0byBwaXBlcyBvbiBnZW40KyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAgIAkJdTMy IHZhbCA9IEk5MTVfUkVBRChEU1BDTlRSKHBpcGUpKTsKPiAgIAkJSTkxNV9TVEFURV9XQVJOKHZh bCAmIERJU1BMQVlfUExBTkVfRU5BQkxFLAo+ICAgCQkgICAgICJwbGFuZSAlYyBhc3NlcnRpb24g ZmFpbHVyZSwgc2hvdWxkIGJlIGRpc2FibGVkIGJ1dCBub3RcbiIsCj4gQEAgLTEzNjcsNyArMTM2 Niw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3By aXYtPmRldjsKPiAgIAlpbnQgc3ByaXRlOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gOSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICAgCQlmb3JfZWFj aF9zcHJpdGUoZGV2X3ByaXYsIHBpcGUsIHNwcml0ZSkgewo+ICAgCQkJdTMyIHZhbCA9IEk5MTVf UkVBRChQTEFORV9DVEwocGlwZSwgc3ByaXRlKSk7Cj4gICAJCQlJOTE1X1NUQVRFX1dBUk4odmFs ICYgUExBTkVfQ1RMX0VOQUJMRSwKPiBAQCAtMTM4MSwxMiArMTM4MCwxMiBAQCBzdGF0aWMgdm9p ZCBhc3NlcnRfc3ByaXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gICAJCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBv ZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAo+ICAgCQkJICAgICBzcHJpdGVf bmFtZShwaXBlLCBzcHJpdGUpLCBwaXBlX25hbWUocGlwZSkpOwo+ICAgCQl9Cj4gLQl9IGVsc2Ug aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA3KSB7Cj4gICAJCXUzMiB2YWwgPSBJOTE1X1JFQUQoU1BSQ1RMKHBpcGUp KTsKPiAgIAkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIFNQUklURV9FTkFCTEUsCj4gICAJCSAgICAg InNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1 dCBpcyBzdGlsbCBhY3RpdmVcbiIsCj4gICAJCSAgICAgcGxhbmVfbmFtZShwaXBlKSwgcGlwZV9u YW1lKHBpcGUpKTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgewo+ ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiAgIAkJdTMyIHZhbCA9 IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKPiAgIAkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIERW U19FTkFCTEUsCj4gICAJCSAgICAgInNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxk IGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCj4gQEAgLTE2ODUsNyAr MTY4NCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKPiAgIAlQT1NUSU5HX1JFQUQocmVnKTsKPiAgIAl1ZGVsYXkoMTUwKTsKPgo+IC0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDQpIHsKPiAgIAkJSTkxNV9XUklURShEUExMX01EKGNydGMtPnBpcGUpLAo+ICAgCQkJICAg Y3J0Yy0+Y29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGxfbWQpOwo+ICAgCX0gZWxzZSB7Cj4gQEAg LTI2NjAsNyArMjY1OSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKPgo+ICAgCWRzcGNudHIgfD0gRElTUExBWV9QTEFO RV9FTkFCTEU7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKPiArCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewo+ICAgCQlpZiAoaW50ZWxfY3J0Yy0+cGlwZSA9PSBQ SVBFX0IpCj4gICAJCQlkc3BjbnRyIHw9IERJU1BQTEFORV9TRUxfUElQRV9COwo+Cj4gQEAgLTI3 MDUsNyArMjcwNCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKPiAgIAkJQlVHKCk7Cj4gICAJfQo+Cj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNCAmJgo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NCAmJgo+ICAgCSAgICBvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCj4gICAJ CWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwo+Cj4gQEAgLTI3MTQsNyArMjcxMyw3IEBAIHN0 YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJp bWFyeSwKPgo+ICAgCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogY3Bw Owo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNCkgewo+ICAgCQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9Cj4g ICAJCQlpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwgZmIsIDAsCj4gICAJCQkJCQkg IGZiLT5waXRjaGVzWzBdLCByb3RhdGlvbik7Cj4gQEAgLTI3NDIsNyArMjc0MSw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFy eSwKPiAgIAlJOTE1X1dSSVRFKHJlZywgZHNwY250cik7Cj4KPiAgIAlJOTE1X1dSSVRFKERTUFNU UklERShwbGFuZSksIGZiLT5waXRjaGVzWzBdKTsKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gICAJCUk5MTVf V1JJVEUoRFNQU1VSRihwbGFuZSksCj4gICAJCQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSArIGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKPiAgIAkJSTkxNV9XUklURShEU1BU SUxFT0ZGKHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4gQEAgLTMyNTYsNyArMzI1NSw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgIAkJICAgKHBpcGVfY29uZmlnLT5waXBlX3NyY19oIC0gMSkpOwo+Cj4gICAJLyogb24g c2t5bGFrZSB0aGlzIGlzIGRvbmUgYnkgZGV0YWNoaW5nIHNjYWxlcnMgKi8KPiAtCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSB7Cj4gICAJCXNrbF9kZXRhY2hfc2NhbGVycyhjcnRjKTsKPgo+ICAgCQlpZiAocGlwZV9jb25m aWctPnBjaF9wZml0LmVuYWJsZWQpCj4gQEAgLTQ4ODgsNyArNDg4Nyw3IEBAIHN0YXRpYyB2b2lk IGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgCWlmICghaW50 ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHNpX2VuY29kZXIpCj4gICAJCWludGVsX2RkaV9lbmFibGVf cGlwZV9jbG9jayhpbnRlbF9jcnRjKTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDkpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAgCQlza3lsYWtlX3BmaXRf ZW5hYmxlKGludGVsX2NydGMpOwo+ICAgCWVsc2UKPiAgIAkJaXJvbmxha2VfcGZpdF9lbmFibGUo aW50ZWxfY3J0Yyk7Cj4gQEAgLTUwNTEsNyArNTA1MCw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxf Y3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgIAlpZiAoIWludGVsX2NydGMt PmNvbmZpZy0+aGFzX2RzaV9lbmNvZGVyKQo+ICAgCQlpbnRlbF9kZGlfZGlzYWJsZV90cmFuc2Nv ZGVyX2Z1bmMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyKTsKPgo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAgCQlz a3lsYWtlX3NjYWxlcl9kaXNhYmxlKGludGVsX2NydGMpOwo+ICAgCWVsc2UKPiAgIAkJaXJvbmxh a2VfcGZpdF9kaXNhYmxlKGludGVsX2NydGMsIGZhbHNlKTsKPiBAQCAtNjYyOSw3ICs2NjI4LDcg QEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gICAJaW50IGNsb2NrX2xpbWl0 ID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuIDwgNCkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4gICAJCWNsb2Nr X2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAvIDEwOwo+Cj4gICAJCS8qCj4g QEAgLTY2NjMsNyArNjY2Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgIAkvKiBDYW50aWdhKyBjYW5ub3QgaGFuZGxl IG1vZGVzIHdpdGggYSBoc3luYyBmcm9udCBwb3JjaCBvZiAwLgo+ICAgCSAqIFdhUHJ1bmVNb2Rl V2l0aEluY29ycmVjdEhzeW5jT2Zmc2V0OmN0ZyxlbGssaWxrLHNuYixpdmIsdmx2LGhzdy4KPiAg IAkgKi8KPiAtCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiA0IHx8IElTX0c0WChkZXYpKSAm Jgo+ICsJaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNCB8fCBJU19HNFgoZGV2KSkgJiYKPiAg IAkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oc3luY19zdGFydCA9PSBhZGp1c3RlZF9tb2RlLT5jcnRj X2hkaXNwbGF5KQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPgo+IEBAIC03MjI3LDcgKzcyMjYsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAgCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgIAllbnVtIHRyYW5zY29k ZXIgdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4KPiAtCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA1KSB7Cj4gICAJCUk5MTVfV1JJVEUoUElQRV9EQVRBX00xKHRyYW5zY29kZXIpLCBUVV9TSVpF KG1fbi0+dHUpIHwgbV9uLT5nbWNoX20pOwo+ICAgCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMSh0 cmFuc2NvZGVyKSwgbV9uLT5nbWNoX24pOwo+ICAgCQlJOTE1X1dSSVRFKFBJUEVfTElOS19NMSh0 cmFuc2NvZGVyKSwgbV9uLT5saW5rX20pOwo+IEBAIC03MjM2LDcgKzcyMzUsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAo+ICAgCQkgKiBmb3IgZ2VuIDwgOCkgYW5kIGlmIERSUlMgaXMgc3VwcG9ydGVkICh0byBtYWtl IHN1cmUgdGhlCj4gICAJCSAqIHJlZ2lzdGVycyBhcmUgbm90IHVubmVjZXNzYXJpbHkgYWNjZXNz ZWQpLgo+ICAgCQkgKi8KPiAtCQlpZiAobTJfbjIgJiYgKElTX0NIRVJSWVZJRVcoZGV2KSB8fCBJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDgpICYmCj4gKwkJaWYgKG0yX24yICYmIChJU19DSEVSUllW SUVXKGRldikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA8IDgpICYmCj4gICAJCQljcnRjLT5jb25m aWctPmhhc19kcnJzKSB7Cj4gICAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9NMih0cmFuc2NvZGVy KSwKPiAgIAkJCQkJVFVfU0laRShtMl9uMi0+dHUpIHwgbTJfbjItPmdtY2hfbSk7Cj4gQEAgLTc2 MjYsNyArNzYyNSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY29tcHV0ZV9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAgCQlkcGxsIHw9IERQTExCX0xWRFNfUDJfQ0xPQ0tfRElWXzE0Owo+ ICAgCQlicmVhazsKPiAgIAl9Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKPiAr CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gICAJCWRwbGwgfD0gKDYgPDwgUExMX0xP QURfUFVMU0VfUEhBU0VfU0hJRlQpOwo+Cj4gICAJaWYgKGNydGNfc3RhdGUtPnNkdm9fdHZfY2xv Y2spCj4gQEAgLTc2NDAsNyArNzYzOSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY29tcHV0ZV9kcGxs KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAgCWRwbGwgfD0gRFBMTF9WQ09fRU5BQkxFOwo+ ICAgCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUuZHBsbCA9IGRwbGw7Cj4KPiAtCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0 KSB7Cj4gICAJCXUzMiBkcGxsX21kID0gKGNydGNfc3RhdGUtPnBpeGVsX211bHRpcGxpZXIgLSAx KQo+ICAgCQkJPDwgRFBMTF9NRF9VRElfTVVMVElQTElFUl9TSElGVDsKPiAgIAkJY3J0Y19zdGF0 ZS0+ZHBsbF9od19zdGF0ZS5kcGxsX21kID0gZHBsbF9tZDsKPiBAQCAtNzcxMyw3ICs3NzEyLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YykKPiAgIAkJCXZzeW5jc2hpZnQgKz0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90 YWw7Cj4gICAJfQo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiAzKQo+ICsJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPiAzKQo+ICAgCQlJOTE1X1dSSVRFKFZTWU5DU0hJRlQoY3B1X3Ry YW5zY29kZXIpLCB2c3luY3NoaWZ0KTsKPgo+ICAgCUk5MTVfV1JJVEUoSFRPVEFMKGNwdV90cmFu c2NvZGVyKSwKPiBAQCAtNzg4Miw3ICs3ODgxLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlw ZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gICAJfQo+Cj4gICAJaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxB R19JTlRFUkxBQ0UpIHsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0IHx8Cj4gKwkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8Cj4gICAJCSAgICBpbnRlbF9waXBlX2hhc190 eXBlKGludGVsX2NydGMsIElOVEVMX09VVFBVVF9TRFZPKSkKPiAgIAkJCXBpcGVjb25mIHw9IFBJ UEVDT05GX0lOVEVSTEFDRV9XX0ZJRUxEX0lORElDQVRJT047Cj4gICAJCWVsc2UKPiBAQCAtODA5 NCw3ICs4MDkzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAl1aW50MzJfdCB0bXA7Cj4KPiAtCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA8PSAzICYmIChJU19JODMwKGRldikgfHwgIUlTX01PQklMRShkZXYpKSkKPiAr CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMgJiYgKElTX0k4MzAoZGV2KSB8fCAhSVNfTU9C SUxFKGRldikpKQo+ICAgCQlyZXR1cm47Cj4KPiAgIAl0bXAgPSBJOTE1X1JFQUQoUEZJVF9DT05U Uk9MKTsKPiBAQCAtODEwMiw3ICs4MTAxLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJCXJldHVybjsKPgo+ICAgCS8qIENo ZWNrIHdoZXRoZXIgdGhlIHBmaXQgaXMgYXR0YWNoZWQgdG8gb3VyIHBpcGUuICovCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDQpIHsKPiAgIAkJaWYgKGNydGMtPnBpcGUgIT0gUElQRV9CKQo+ICAgCQkJcmV0dXJuOwo+ICAg CX0gZWxzZSB7Cj4gQEAgLTgxNjYsNyArODE2NSw3IEBAIHN0YXRpYyB2b2lkIHZsdl9jcnRjX2Ns b2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPgo+ICAgCWZiID0gJmludGVsX2ZiLT5i YXNlOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICAgCQlpZiAodmFsICYgRElTUFBMQU5FX1RJTEVEKSB7 Cj4gICAJCQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7Cj4gICAJCQlmYi0+ bW9kaWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiBAQCAtODE3OCw3ICs4MTc3 LDcgQEAgc3RhdGljIHZvaWQgdmx2X2NydGNfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICAgCWZiLT5waXhlbF9mb3JtYXQgPSBmb3VyY2M7Cj4gICAJZmItPmJpdHNfcGVyX3Bp eGVsID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZm91cmNjLCAwKSAqIDg7Cj4KPiAtCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0 KSB7Cj4gICAJCWlmIChwbGFuZV9jb25maWctPnRpbGluZykKPiAgIAkJCW9mZnNldCA9IEk5MTVf UkVBRChEU1BUSUxFT0ZGKHBsYW5lKSk7Cj4gICAJCWVsc2UKPiBAQCAtODI4Niw3ICs4Mjg1LDcg QEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gICAJICAgICh0bXAgJiBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1QpKQo+ICAgCQlw aXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSA9IHRydWU7Cj4KPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA8IDQpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4gICAJ CXBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSA9IHRtcCAmIFBJUEVDT05GX0RPVUJMRV9XSURFOwo+ Cj4gICAJaW50ZWxfZ2V0X3BpcGVfdGltaW5ncyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTgy OTQsNyArODI5Myw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+Cj4gICAJaTl4eF9nZXRfcGZpdF9jb25maWcoY3J0YywgcGlwZV9j b25maWcpOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICAgCQkvKiBObyB3YXkgdG8gcmVhZCBpdCBvdXQg b24gcGlwZXMgQiBhbmQgQyAqLwo+ICAgCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpICYmIGNydGMt PnBpcGUgIT0gUElQRV9BKQo+ICAgCQkJdG1wID0gZGV2X3ByaXYtPmNodl9kcGxsX21kW2NydGMt PnBpcGVdOwo+IEBAIC05MDc0LDcgKzkwNzMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJh bnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkg ewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+ICAgCQltX24tPmxpbmtfbSA9 IEk5MTVfUkVBRChQSVBFX0xJTktfTTEodHJhbnNjb2RlcikpOwo+ICAgCQltX24tPmxpbmtfbiA9 IEk5MTVfUkVBRChQSVBFX0xJTktfTjEodHJhbnNjb2RlcikpOwo+ICAgCQltX24tPmdtY2hfbSA9 IEk5MTVfUkVBRChQSVBFX0RBVEFfTTEodHJhbnNjb2RlcikpCj4gQEAgLTkwODYsNyArOTA4NSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gICAJCSAqIGdlbiA8IDgpIGFuZCBpZiBEUlJTIGlzIHN1cHBvcnRlZCAo dG8gbWFrZSBzdXJlIHRoZQo+ICAgCQkgKiByZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5 IHJlYWQpLgo+ICAgCQkgKi8KPiAtCQlpZiAobTJfbjIgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA4ICYmCj4gKwkJaWYgKG0yX24yICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA4ICYmCj4gICAJ CQljcnRjLT5jb25maWctPmhhc19kcnJzKSB7Cj4gICAJCQltMl9uMi0+bGlua19tID0gSTkxNV9S RUFEKFBJUEVfTElOS19NMih0cmFuc2NvZGVyKSk7Cj4gICAJCQltMl9uMi0+bGlua19uID0JSTkx NV9SRUFEKFBJUEVfTElOS19OMih0cmFuc2NvZGVyKSk7Cj4gQEAgLTkyODgsNyArOTI4Nyw3IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPgo+ICAgCWZiID0gJmludGVsX2ZiLT5iYXNlOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICAg CQlpZiAodmFsICYgRElTUFBMQU5FX1RJTEVEKSB7Cj4gICAJCQlwbGFuZV9jb25maWctPnRpbGlu ZyA9IEk5MTVfVElMSU5HX1g7Cj4gICAJCQlmYi0+bW9kaWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9N T0RfWF9USUxFRDsKPiBAQCAtMTAxMTAsNyArMTAxMDksNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxs X2dldF9kZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgIAkgKiBEREkg RS4gU28ganVzdCBjaGVjayB3aGV0aGVyIHRoaXMgcGlwZSBpcyB3aXJlZCB0byBEREkgRSBhbmQg d2hldGhlcgo+ICAgCSAqIHRoZSBQQ0ggdHJhbnNjb2RlciBpcyBvbi4KPiAgIAkgKi8KPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkgJiYKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgOSAmJgo+ICAgCSAgICAocG9ydCA9PSBQT1JUX0UpICYmIEk5MTVfUkVBRChMUFRfVFJBTlND T05GKSAmIFRSQU5TX0VOQUJMRSkgewo+ICAgCQlwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVy ID0gdHJ1ZTsKPgo+IEBAIC0xMDE2MSwxMSArMTAxNjAsMTEgQEAgc3RhdGljIGJvb2wgaGFzd2Vs bF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJcGlwZV9jb25m aWctPmdhbW1hX21vZGUgPQo+ICAgCQlJOTE1X1JFQUQoR0FNTUFfTU9ERShjcnRjLT5waXBlKSkg JiBHQU1NQV9NT0RFX01PREVfTUFTSzsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDkpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiAgIAkJc2tsX2luaXRf c2NhbGVycyhkZXYsIGNydGMsIHBpcGVfY29uZmlnKTsKPiAgIAl9Cj4KPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7 Cj4gICAJCXBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2NhbGVyX2lkID0gLTE7Cj4gICAJCXBp cGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2NhbGVyX3VzZXJzICY9IH4oMSA8PCBTS0xfQ1JUQ19J TkRFWCk7Cj4gICAJfQo+IEBAIC0xMDE3Myw3ICsxMDE3Miw3IEBAIHN0YXRpYyBib29sIGhhc3dl bGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAgCXBvd2VyX2Rv bWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihjcnRjLT5waXBlKTsKPiAgIAlp ZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9t YWluKSkgewo+ICAgCQlwb3dlcl9kb21haW5fbWFzayB8PSBCSVQocG93ZXJfZG9tYWluKTsKPiAt CQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA5KQo+ICAgCQkJc2t5bGFrZV9nZXRfcGZpdF9jb25maWcoY3J0YywgcGlwZV9jb25m aWcpOwo+ICAgCQllbHNlCj4gICAJCQlpcm9ubGFrZV9nZXRfcGZpdF9jb25maWcoY3J0YywgcGlw ZV9jb25maWcpOwo+IEBAIC0xMTA0Niw3ICsxMTA0NSw3IEBAIHN0YXRpYyBib29sIF9fcGFnZWZs aXBfZmluaXNoZWRfY3Moc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJICogcmVhbGx5IG5l ZWRlZCB0aGVyZS4gQnV0IHNpbmNlIGN0ZyBoYXMgdGhlIHJlZ2lzdGVycywKPiAgIAkgKiBpbmNs dWRlIGl0IGluIHRoZSBjaGVjayBhbnl3YXkuCj4gICAJICovCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA1ICYmICFJU19HNFgoZGV2KSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNSAmJiAhSVNfRzRYKGRldikpCj4gICAJCXJldHVybiB0cnVlOwo+Cj4gICAJLyoKPiBAQCAt MTE2NTMsNyArMTE2NTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgIAkgKiBUSUxFT0ZGL0xJTk9GRiByZWdpc3RlcnMgY2FuJ3Qg YmUgY2hhbmdlZCB2aWEgTUkgZGlzcGxheSBmbGlwcy4KPiAgIAkgKiBOb3RlIHRoYXQgcGl0Y2gg Y2hhbmdlcyBjb3VsZCBhbHNvIGFmZmVjdCB0aGVzZSByZWdpc3Rlci4KPiAgIAkgKi8KPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDMgJiYKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID4gMyAmJgo+ICAgCSAgICAoZmItPm9mZnNldHNbMF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPm9m ZnNldHNbMF0gfHwKPiAgIAkgICAgIGZiLT5waXRjaGVzWzBdICE9IGNydGMtPnByaW1hcnktPmZi LT5waXRjaGVzWzBdKSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTExNzIwLDcgKzExNzE5 LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4KPiAgIAlhdG9taWNfaW5jKCZpbnRlbF9jcnRjLT51bnBpbl93b3JrX2NvdW50KTsKPgo+ IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCj4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXYpKQo+ICAgCQl3b3JrLT5mbGlw X2NvdW50ID0gSTkxNV9SRUFEKFBJUEVfRkxJUENPVU5UX0c0WChwaXBlKSkgKyAxOwo+Cj4gICAJ aWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiBAQCAtMTE3 MzAsNyArMTE3MjksNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgIAkJCWVuZ2luZSA9IE5VTEw7Cj4gICAJfSBlbHNlIGlmIChJU19J VllCUklER0UoZGV2KSB8fCBJU19IQVNXRUxMKGRldikpIHsKPiAgIAkJZW5naW5lID0gJmRldl9w cml2LT5lbmdpbmVbQkNTXTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g Nykgewo+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKPiAgIAkJZW5n aW5lID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKG9iai0+bGFzdF93cml0ZV9yZXEpOwo+ ICAgCQlpZiAoZW5naW5lID09IE5VTEwgfHwgZW5naW5lLT5pZCAhPSBSQ1MpCj4gICAJCQllbmdp bmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwo+IEBAIC0xMTkxOSw3ICsxMTkxOCw3IEBAIGlu dCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiAgIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5mYjsKPiAgIAlpbnQgcmV0Owo+Cj4gLQlpZiAoY3J0Y19zdGF0ZSAmJiBJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA5ICYmCj4gKwlpZiAoY3J0Y19zdGF0ZSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkgJiYKPiAgIAkgICAgcGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7 Cj4gICAJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKAo+ICAgCQkJdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjX3N0YXRlKSwKPiBAQCAtMTE5ODcsNyArMTE5ODYsNyBAQCBpbnQgaW50ZWxf cGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4KPiAgIAkvKiBQcmUtZ2VuOSBwbGF0Zm9ybXMgbmVlZCB0d28tc3RlcCB3YXRlcm1hcmsg dXBkYXRlcyAqLwo+ICAgCWlmICgocGlwZV9jb25maWctPnVwZGF0ZV93bV9wcmUgfHwgcGlwZV9j b25maWctPnVwZGF0ZV93bV9wb3N0KSAmJgo+IC0JICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg OSAmJiBkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKQo+ICsJICAgIElOVEVM X0dFTihkZXZfcHJpdikgPCA5ICYmIGRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFy a3MpCj4gICAJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPndtLm5lZWRfcG9zdHZi bF91cGRhdGUgPSB0cnVlOwo+Cj4gICAJaWYgKHZpc2libGUgfHwgd2FzX3Zpc2libGUpCj4gQEAg LTEyMTIzLDcgKzEyMTIyLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJCQlwaXBlX2NvbmZpZy0+d20uaWxrLmludGVybWVk aWF0ZSA9IHBpcGVfY29uZmlnLT53bS5pbGsub3B0aW1hbDsKPiAgIAl9Cj4KPiAtCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSB7Cj4gICAJCWlmIChtb2RlX2NoYW5nZWQpCj4gICAJCQlyZXQgPSBza2xfdXBkYXRlX3NjYWxl cl9jcnRjKHBpcGVfY29uZmlnKTsKPgo+IEBAIC0xMjkyOCw3ICsxMjkyNyw3IEBAIHN0YXRpYyB2 b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAJY29uc3QgZW51 bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAgCWludCBwbGFuZTsKPgo+IC0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSB8fCAhbmV3X3N0YXRlLT5hY3RpdmUpCj4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19zdGF0ZS0+YWN0aXZlKQo+ICAgCQlyZXR1 cm47Cj4KPiAgIAlza2xfZGRiX2dldF9od19zdGF0ZShkZXZfcHJpdiwgJmh3X2RkYik7Cj4gQEAg LTE0NDQ2LDcgKzE0NDQ1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQo+ICAgCWNydGNfc3RhdGUtPmJhc2UuY3J0YyA9ICZp bnRlbF9jcnRjLT5iYXNlOwo+Cj4gICAJLyogaW5pdGlhbGl6ZSBzaGFyZWQgc2NhbGVycyAqLwo+ IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPiAgIAkJaWYgKHBpcGUgPT0gUElQRV9DKQo+ICAgCQkJaW50ZWxfY3J0 Yy0+bnVtX3NjYWxlcnMgPSAxOwo+ICAgCQllbHNlCj4gQEAgLTE0NDc1LDcgKzE0NDc0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBw aXBlKQo+ICAgCSAqLwo+ICAgCWludGVsX2NydGMtPnBpcGUgPSBwaXBlOwo+ICAgCWludGVsX2Ny dGMtPnBsYW5lID0gcGlwZTsKPiAtCWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA0KSB7Cj4gKwlpZiAoSEFTX0ZCQyhkZXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikg PCA0KSB7Cj4gICAJCURSTV9ERUJVR19LTVMoInN3YXBwaW5nIHBpcGVzICYgcGxhbmVzIGZvciBG QkNcbiIpOwo+ICAgCQlpbnRlbF9jcnRjLT5wbGFuZSA9ICFwaXBlOwo+ICAgCX0KPiBAQCAtMTQ1 NzUsNyArMTQ1NzQsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfcHJlc2VudChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5 KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ Cj4gICAJaWYgKElTX0hTV19VTFQoZGV2KSB8fCBJU19CRFdfVUxUKGRldikpCj4gQEAgLTE0ODky LDcgKzE0ODkxLDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gICAJc3dpdGNoIChtb2RlX2NtZC0+bW9kaWZpZXJbMF0pIHsKPiAg IAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+ICAgCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPiArCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKPiAgIAkJCURSTV9ERUJVRygiVW5zdXBwb3J0ZWQg dGlsaW5nIDB4JWxseCFcbiIsCj4gICAJCQkJICBtb2RlX2NtZC0+bW9kaWZpZXJbMF0pOwo+ICAg CQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE0OTQwLDcgKzE0OTM5LDcgQEAgc3RhdGljIGludCBp bnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJY2FzZSBE Uk1fRk9STUFUX0FSR0I4ODg4Ogo+ICAgCQlicmVhazsKPiAgIAljYXNlIERSTV9GT1JNQVRfWFJH QjE1NTU6Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMykgewo+ICsJCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID4gMykgewo+ICAgCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhl bCBmb3JtYXQ6ICVzXG4iLAo+ICAgCQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+ cGl4ZWxfZm9ybWF0KSk7Cj4gICAJCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTQ5NDgsNyArMTQ5 NDcsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICAg CQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmCj4gLQkJ ICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkgewo+ICsJCSAgICBJTlRFTF9HRU4oZGV2X3By aXYpIDwgOSkgewo+ICAgCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVz XG4iLAo+ICAgCQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0 KSk7Cj4gICAJCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTQ5NTcsNyArMTQ5NTYsNyBAQCBzdGF0 aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg IAljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gICAJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAx MDEwOgo+ICAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKPiAtCQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA0KSB7Cj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4g ICAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gICAJCQkJ ICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPiAgIAkJCXJl dHVybiAtRUlOVkFMOwo+IEBAIC0xNDk3NCw3ICsxNDk3Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf ZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgo+ICAgCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+ICAgCWNhc2UgRFJNX0ZPUk1B VF9WWVVZOgo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpIHsKPiArCQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDUpIHsKPiAgIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4 ZWwgZm9ybWF0OiAlc1xuIiwKPiAgIAkJCQkgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQt PnBpeGVsX2Zvcm1hdCkpOwo+ICAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE1NzQ3LDcgKzE1 NzQ2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YykKPiAgIAkvKiBXZSBuZWVkIHRvIHNhbml0aXplIHRoZSBwbGFuZSAtPiBwaXBlIG1h cHBpbmcgZmlyc3QgYmVjYXVzZSB0aGlzIHdpbGwKPiAgIAkgKiBkaXNhYmxlIHRoZSBjcnRjIChh bmQgaGVuY2UgY2hhbmdlIHRoZSBzdGF0ZSkgaWYgaXQgaXMgd3JvbmcuIE5vdGUKPiAgIAkgKiB0 aGF0IGdlbjQrIGhhcyBhIGZpeGVkIHBsYW5lIC0+IHBpcGUgbWFwcGluZy4gICovCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0ICYmICFpbnRlbF9jaGVja19wbGFuZV9tYXBwaW5nKGNy dGMpKSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgJiYgIWludGVsX2NoZWNrX3Bs YW5lX21hcHBpbmcoY3J0YykpIHsKPiAgIAkJYm9vbCBwbGFuZTsKPgo+ICAgCQlEUk1fREVCVUdf S01TKCJbQ1JUQzolZDolc10gd3JvbmcgcGxhbmUgY29ubmVjdGlvbiBkZXRlY3RlZCFcbiIsCj4g QEAgLTE2Mjc4LDcgKzE2Mjc3LDcgQEAgdm9pZCBpbnRlbF9jb25uZWN0b3JfYXR0YWNoX2VuY29k ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAgaW50IGludGVsX21vZGVz ZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN0YXRlKQo+ICAg ewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gLQl1bnNpZ25lZCByZWcgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ID8gU05CX0dN Q0hfQ1RSTCA6IElOVEVMX0dNQ0hfQ1RSTDsKPiArCXVuc2lnbmVkIHJlZyA9IElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9HTUNIX0NUUkw7Cj4gICAJdTE2 IGdtY2hfY3RybDsKPgo+ICAgCWlmIChwY2lfcmVhZF9jb25maWdfd29yZChkZXZfcHJpdi0+YnJp ZGdlX2RldiwgcmVnLCAmZ21jaF9jdHJsKSkgewo+IEBAIC0xNjQ1MywxMyArMTY0NTIsMTMgQEAg c3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jfc3RhdGUgKgo+ICAgCQllcnJfcHJpbnRmKG0sICJQ bGFuZSBbJWRdOlxuIiwgaSk7Cj4gICAJCWVycl9wcmludGYobSwgIiAgQ05UUjogJTA4eFxuIiwg ZXJyb3ItPnBsYW5lW2ldLmNvbnRyb2wpOwo+ICAgCQllcnJfcHJpbnRmKG0sICIgIFNUUklERTog JTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnN0cmlkZSk7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDw9IDMpIHsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAzKSB7Cj4gICAJ CQllcnJfcHJpbnRmKG0sICIgIFNJWkU6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zaXplKTsK PiAgIAkJCWVycl9wcmludGYobSwgIiAgUE9TOiAlMDh4XG4iLCBlcnJvci0+cGxhbmVbaV0ucG9z KTsKPiAgIAkJfQo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA3ICYmICFJU19IQVNX RUxMKGRldikpCj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNyAmJiAhSVNfSEFTV0VM TChkZXYpKQo+ICAgCQkJZXJyX3ByaW50ZihtLCAiICBBRERSOiAlMDh4XG4iLCBlcnJvci0+cGxh bmVbaV0uYWRkcik7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gICAJCQllcnJfcHJpbnRmKG0sICIgIFNV UkY6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zdXJmYWNlKTsKPiAgIAkJCWVycl9wcmludGYo bSwgIiAgVElMRU9GRjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnRpbGVfb2Zmc2V0KTsKPiAg IAkJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IGY5N2NkNTMuLjcyYzg2OWIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgdm9pZCBp bnRlbF9kcF9jb21wdXRlX3JhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBvcnRf Y2xvY2ssCj4gICAJCWludGVsX2ZpeGVkX3BhbmVsX21vZGUoaW50ZWxfY29ubmVjdG9yLT5wYW5l bC5maXhlZF9tb2RlLAo+ICAgCQkJCSAgICAgICBhZGp1c3RlZF9tb2RlKTsKPgo+IC0JCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkgewo+ICAgCQkJaW50IHJldDsKPiAgIAkJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX2Ny dGMocGlwZV9jb25maWcpOwo+ICAgCQkJaWYgKHJldCkKPiBAQCAtMjgzOSw3ICsyODM5LDcgQEAg c3RhdGljIHZvaWQgY2h2X2RwX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4KPiAgIAlpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAgCQlyZXR1cm4gRFBfVFJB SU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOwo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gOSkgewo+ICsJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gICAJ CWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nICYmIHBvcnQgPT0gUE9SVF9BKQo+ICAg CQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPiAgIAkJcmV0dXJuIERQ X1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKPiBAQCAtMzM5Niw3ICszMzk2LDcgQEAgdm9p ZCBpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gICAJCQlEUk1fREVCVUdfS01TKCJEZXRlY3RlZCBFRFAgUFNSIFBhbmVsLlxuIik7Cj4gICAJ CX0KPgo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5ICYmCj4gKwkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSAmJgo+ICAgCQkJKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQ X1BTUjJfSVNfU1VQUE9SVEVEKSkgewo+ICAgCQkJdWludDhfdCBmcmFtZV9zeW5jX2NhcDsKPgo+ IEBAIC00NjcxLDcgKzQ2NzEsNyBAQCBib29sIGludGVsX2RwX2lzX2VkcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKPiAgIAkgKiBlRFAgbm90IHN1cHBvcnRlZCBvbiBn NHguIHNvIGJhaWwgb3V0IGVhcmx5IGp1c3QKPiAgIAkgKiBmb3IgYSBiaXQgZXh0cmEgc2FmZXR5 IGluIGNhc2UgdGhlIFZCVCBpcyBib25rZXJzLgo+ICAgCSAqLwo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgNSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPiAgIAkJcmV0 dXJuIGZhbHNlOwo+Cj4gICAJaWYgKHBvcnQgPT0gUE9SVF9BKQo+IEBAIC00OTg1LDcgKzQ5ODUs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQo+ICAgCQlyZXR1cm47Cj4gICAJfQo+Cj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPiAg IAkJc3dpdGNoIChpbmRleCkgewo+ICAgCQljYXNlIERSUlNfSElHSF9SUjoKPiAgIAkJCWludGVs X2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOwo+IEBAIC00OTk3LDcgKzQ5OTcsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgcmVmcmVzaF9yYXRlKQo+ICAgCQlkZWZhdWx0Ogo+ICAgCQkJRFJNX0VSUk9SKCJVbnN1 cHBvcnRlZCByZWZyZXNocmF0ZSB0eXBlXG4iKTsKPiAgIAkJfQo+IC0JfSBlbHNlIGlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+IDYpIHsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+IDYpIHsKPiAgIAkJaTkxNV9yZWdfdCByZWcgPSBQSVBFQ09ORihpbnRlbF9jcnRjLT5jb25m aWctPmNwdV90cmFuc2NvZGVyKTsKPiAgIAkJdTMyIHZhbDsKPgo+IEBAIC01Mjc0LDcgKzUyNzQs NyBAQCB2b2lkIGludGVsX2VkcF9kcnJzX2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g ICAJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5kcnJzLndvcmssIGludGVsX2VkcF9kcnJz X2Rvd25jbG9ja193b3JrKTsKPiAgIAltdXRleF9pbml0KCZkZXZfcHJpdi0+ZHJycy5tdXRleCk7 Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2KSB7Cj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8PSA2KSB7Cj4gICAJCURSTV9ERUJVR19LTVMoIkRSUlMgc3VwcG9ydGVkIGZv ciBHZW43IGFuZCBhYm92ZVxuIik7Cj4gICAJCXJldHVybiBOVUxMOwo+ICAgCX0KPiBAQCAtNTQy OSw3ICs1NDI5LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gICAJaW50ZWxfZHAtPnBwc19waXBlID0gSU5WQUxJRF9Q SVBFOwo+Cj4gICAJLyogaW50ZWxfZHAgdmZ1bmNzICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gICAJCWludGVs X2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSBza2xfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+ ICAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKPiAgIAkJ aW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IGhzd19nZXRfYXV4X2Nsb2NrX2Rpdmlk ZXI7Cj4gQEAgLTU0MzgsNyArNTQzOCw3IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nv bm5lY3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAgCWVsc2UKPiAgIAkJaW50ZWxf ZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IGc0eF9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4K PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKPiAgIAkJaW50ZWxfZHAtPmdldF9hdXhfc2VuZF9jdGwgPSBza2xfZ2V0X2F1 eF9zZW5kX2N0bDsKPiAgIAllbHNlCj4gICAJCWludGVsX2RwLT5nZXRfYXV4X3NlbmRfY3RsID0g ZzR4X2dldF9hdXhfc2VuZF9jdGw7Cj4gQEAgLTU2MTUsNyArNTYxNSw3IEBAIGJvb2wgaW50ZWxf ZHBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCX0gZWxzZSB7Cj4gICAJCWludGVs X2VuY29kZXItPnByZV9lbmFibGUgPSBnNHhfcHJlX2VuYWJsZV9kcDsKPiAgIAkJaW50ZWxfZW5j b2Rlci0+ZW5hYmxlID0gZzR4X2VuYWJsZV9kcDsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNSkKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQo+ICAgCQkJaW50ZWxf ZW5jb2Rlci0+cG9zdF9kaXNhYmxlID0gaWxrX3Bvc3RfZGlzYWJsZV9kcDsKPiAgIAl9Cj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiBpbmRleCBjMGVmZjE1Li5mY2U0MDUy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gQEAgLTE1Niw3ICsx NTYsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMg KmNydGMpCj4gICAJdW5zaWduZWQgY3J0Y19tYXNrID0gMSA8PCBkcm1fY3J0Y19pbmRleCgmY3J0 Yy0+YmFzZSk7Cj4KPiAgIAkvKiBQQ0ggb25seSBhdmFpbGFibGUgb24gSUxLKyAqLwo+IC0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NSkKPiAgIAkJcmV0dXJuOwo+Cj4gICAJaWYgKHBsbCA9PSBOVUxMKQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9sdmRzLmMKPiBpbmRleCA2MmVhYTg5Li5hZTE5YTYyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2x2ZHMuYwo+IEBAIC0xMjIsMTIgKzEyMiwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9s dmRzX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4KPiAgIAlwaXBl X2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+Cj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ ICAgCQlwaXBlX2NvbmZpZy0+Z21jaF9wZml0Lmx2ZHNfYm9yZGVyX2JpdHMgPQo+ICAgCQkJdG1w ICYgTFZEU19CT1JERVJfRU5BQkxFOwo+Cj4gICAJLyogZ2VuMi8zIHN0b3JlIGRpdGhlciBzdGF0 ZSBpbiBwZml0IGNvbnRyb2wsIG5lZWRzIHRvIG1hdGNoICovCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKPiAgIAkJ dG1wID0gSTkxNV9SRUFEKFBGSVRfQ09OVFJPTCk7Cj4KPiAgIAkJcGlwZV9jb25maWctPmdtY2hf cGZpdC5jb250cm9sIHw9IHRtcCAmIFBBTkVMXzhUTzZfRElUSEVSX0VOQUJMRTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiBpbmRleCA2NThhNzU2Li42ZTBhNmQ5IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gQEAgLTIxNTUsMTQgKzIxNTUsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxf cmVhZF93bV9sYXRlbmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQxNl90IHdtWzhdKQo+ ICAgCQl3bVsyXSA9IChzc2twZCA+PiAxMikgJiAweEZGOwo+ICAgCQl3bVszXSA9IChzc2twZCA+ PiAyMCkgJiAweDFGRjsKPiAgIAkJd21bNF0gPSAoc3NrcGQgPj4gMzIpICYgMHgxRkY7Cj4gLQl9 IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gICAJCXVpbnQzMl90IHNza3BkID0gSTkxNV9SRUFE KE1DSF9TU0tQRCk7Cj4KPiAgIAkJd21bMF0gPSAoc3NrcGQgPj4gU1NLUERfV00wX1NISUZUKSAm IFNTS1BEX1dNX01BU0s7Cj4gICAJCXdtWzFdID0gKHNza3BkID4+IFNTS1BEX1dNMV9TSElGVCkg JiBTU0tQRF9XTV9NQVNLOwo+ICAgCQl3bVsyXSA9IChzc2twZCA+PiBTU0tQRF9XTTJfU0hJRlQp ICYgU1NLUERfV01fTUFTSzsKPiAgIAkJd21bM10gPSAoc3NrcGQgPj4gU1NLUERfV00zX1NISUZU KSAmIFNTS1BEX1dNX01BU0s7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDUpIHsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7Cj4gICAJCXVp bnQzMl90IG1sdHIgPSBJOTE1X1JFQUQoTUxUUl9JTEspOwo+Cj4gICAJCS8qIElMSyBwcmltYXJ5 IExQMCBsYXRlbmN5IGlzIDcwMCBucyAqLwo+IEBAIC0yMzY3LDcgKzIzNjcsNyBAQCBzdGF0aWMg aW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkK PiAgIAl1c2FibGVfbGV2ZWwgPSBtYXhfbGV2ZWw7Cj4KPiAgIAkvKiBJTEsvU05COiBMUDIrIHdh dGVybWFya3Mgb25seSB3L28gc3ByaXRlcyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu IDw9IDYgJiYgcGlwZV93bS0+c3ByaXRlc19lbmFibGVkKQo+ICsJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gNiAmJiBwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQpCj4gICAJCXVzYWJsZV9sZXZl bCA9IDE7Cj4KPiAgIAkvKiBJTEsvU05CL0lWQjogTFAxKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNj YWxpbmcgKi8KPiBAQCAtMjUxMCwxMiArMjUxMCwxMiBAQCBzdGF0aWMgdm9pZCBpbGtfd21fbWVy Z2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpbnQgbGFzdF9lbmFibGVkX2xldmVsID0g bWF4X2xldmVsOwo+Cj4gICAJLyogSUxLL1NOQi9JVkI6IExQMSsgd2F0ZXJtYXJrcyBvbmx5IHcv IHNpbmdsZSBwaXBlICovCj4gLQlpZiAoKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDYgfHwgSVNf SVZZQlJJREdFKGRldikpICYmCj4gKwlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNiB8fCBJ U19JVllCUklER0UoZGV2KSkgJiYKPiAgIAkgICAgY29uZmlnLT5udW1fcGlwZXNfYWN0aXZlID4g MSkKPiAgIAkJbGFzdF9lbmFibGVkX2xldmVsID0gMDsKPgo+ICAgCS8qIElMSzogRkJDIFdNIG11 c3QgYmUgZGlzYWJsZWQgYWx3YXlzICovCj4gLQltZXJnZWQtPmZiY193bV9lbmFibGVkID0gSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNjsKPiArCW1lcmdlZC0+ZmJjX3dtX2VuYWJsZWQgPSBJTlRF TF9HRU4oZGV2X3ByaXYpID49IDY7Cj4KPiAgIAkvKiBtZXJnZSBlYWNoIFdNMSsgbGV2ZWwgKi8K PiAgIAlmb3IgKGxldmVsID0gMTsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gQEAg LTI4MjEsNyArMjgyMSw3IEBAIHN0YXRpYyB2b2lkIGlsa193cml0ZV93bV92YWx1ZXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCSAgICBwcmV2aW91cy0+d21fbHBfc3By WzBdICE9IHJlc3VsdHMtPndtX2xwX3NwclswXSkKPiAgIAkJSTkxNV9XUklURShXTTFTX0xQX0lM SywgcmVzdWx0cy0+d21fbHBfc3ByWzBdKTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDcpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKPiAgIAkJaWYgKGRp cnR5ICYgV01fRElSVFlfTFAoMikgJiYgcHJldmlvdXMtPndtX2xwX3NwclsxXSAhPSByZXN1bHRz LT53bV9scF9zcHJbMV0pCj4gICAJCQlJOTE1X1dSSVRFKFdNMlNfTFBfSVZCLCByZXN1bHRzLT53 bV9scF9zcHJbMV0pOwo+ICAgCQlpZiAoZGlydHkgJiBXTV9ESVJUWV9MUCgzKSAmJiBwcmV2aW91 cy0+d21fbHBfc3ByWzJdICE9IHJlc3VsdHMtPndtX2xwX3NwclsyXSkKPiBAQCAtNDA1Niw3ICs0 MDU2LDcgQEAgc3RhdGljIHZvaWQgaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJaWxrX3dtX21lcmdlKGRldiwgJmNvbmZpZywgJm1h eCwgJmxwX3dtXzFfMik7Cj4KPiAgIAkvKiA1LzYgc3BsaXQgb25seSBpbiBzaW5nbGUgcGlwZSBj b25maWcgb24gSVZCKyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYKPiAr CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcgJiYKPiAgIAkgICAgY29uZmlnLm51bV9waXBl c19hY3RpdmUgPT0gMSAmJiBjb25maWcuc3ByaXRlc19lbmFibGVkKSB7Cj4gICAJCWlsa19jb21w dXRlX3dtX21heGltdW1zKGRldiwgMSwgJmNvbmZpZywgSU5URUxfRERCX1BBUlRfNV82LCAmbWF4 KTsKPiAgIAkJaWxrX3dtX21lcmdlKGRldiwgJmNvbmZpZywgJm1heCwgJmxwX3dtXzVfNik7Cj4g QEAgLTQ0MzUsNyArNDQzNSw3IEBAIHZvaWQgaWxrX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAgCWh3LT53bV9scFsyXSA9IEk5MTVfUkVBRChXTTNfTFBfSUxLKTsK Pgo+ICAgCWh3LT53bV9scF9zcHJbMF0gPSBJOTE1X1JFQUQoV00xU19MUF9JTEspOwo+IC0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDcpIHsKPiAgIAkJaHctPndtX2xwX3NwclsxXSA9IEk5MTVfUkVBRChXTTJTX0xQX0lWQik7 Cj4gICAJCWh3LT53bV9scF9zcHJbMl0gPSBJOTE1X1JFQUQoV00zU19MUF9JVkIpOwo+ICAgCX0K PiBAQCAtNzUzNyw3ICs3NTM3LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gICAJCWk5MTVfaXJvbmxha2VfZ2V0X21lbV9mcmVxKGRldik7Cj4KPiAgIAkv KiBGb3IgRklGTyB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDkpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiAgIAkJc2ts X3NldHVwX3dtX2xhdGVuY3koZGV2KTsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gc2tsX3VwZGF0ZV93bTsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9nbG9iYWxf d2F0ZXJtYXJrcyA9IHNrbF9jb21wdXRlX3dtOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4g aW5kZXggMjlhMDliZi4uM2Q5YjY3YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wc3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4g QEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgIAkJLyogRW5hYmxlIFBTUiBvbiB0aGUgcGFuZWwgKi8KPiAgIAkJaHN3 X3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7Cj4KPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gOSkKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAgCQkJaW50ZWxf cHNyX2FjdGl2YXRlKGludGVsX2RwKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQl2bHZfcHNyX3NldHVw X3ZzYyhpbnRlbF9kcCk7Cj4gQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFi bGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgIAkgKiAgICAgLSBPbiBIU1cvQkRXIHdl IGdldCBhIHJlY292ZXJhYmxlIGZyb3plbiBzY3JlZW4gdW50aWwgbmV4dAo+ICAgCSAqICAgICAg IGV4aXQtYWN0aXZhdGUgc2VxdWVuY2UuCj4gICAJICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA5KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQo+ICAgCQlzY2hlZHVs ZV9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5wc3Iud29yaywKPiAgIAkJCQkgICAgICBtc2Vjc190 b19qaWZmaWVzKGludGVsX2RwLT5wYW5lbF9wb3dlcl9jeWNsZV9kZWxheSAqIDUpKTsKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMKPiBpbmRleCAxYTcxNDU2Li5mNGUxYjc0IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+IEBAIC0xMjcxLDEzICsxMjcxLDEzIEBAIHN0YXRp YyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlcikKPiAgIAkJcmV0dXJuOwo+Cj4gICAJLyogU2V0IHRoZSBTRFZPIGNvbnRyb2wgcmVn cy4gKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gICAJCS8qIFRoZSByZWFsIG1vZGUgcG9sYXJpdHkgaXMg c2V0IGJ5IHRoZSBTRFZPIGNvbW1hbmRzLCB1c2luZwo+ICAgCQkgKiBzdHJ1Y3QgaW50ZWxfc2R2 b19kdGQuICovCj4gICAJCXNkdm94ID0gU0RWT19WU1lOQ19BQ1RJVkVfSElHSCB8IFNEVk9fSFNZ TkNfQUNUSVZFX0hJR0g7Cj4gICAJCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmIGNydGMtPmNv bmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiAgIAkJCXNkdm94IHw9IEhETUlfQ09MT1JfUkFO R0VfMTZfMjM1Owo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpCj4gKwkJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ICAgCQkJc2R2b3ggfD0gU0RWT19CT1JERVJfRU5BQkxF Owo+ICAgCX0gZWxzZSB7Cj4gICAJCXNkdm94ID0gSTkxNV9SRUFEKGludGVsX3Nkdm8tPnNkdm9f cmVnKTsKPiBAQCAtMTI5Niw3ICsxMjk2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19wcmVf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAgCWlmIChpbnRl bF9zZHZvLT5oYXNfaGRtaV9hdWRpbykKPiAgIAkJc2R2b3ggfD0gU0RWT19BVURJT19FTkFCTEU7 Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KSB7Cj4gICAJCS8qIGRvbmUgaW4gY3J0Y19tb2RlX3NldCBhcyB0aGUg ZHBsbF9tZCByZWcgbXVzdCBiZSB3cml0dGVuIGVhcmx5ICovCj4gICAJfSBlbHNlIGlmIChJU19J OTQ1RyhkZXYpIHx8IElTX0k5NDVHTShkZXYpIHx8IElTX0czMyhkZXYpKSB7Cj4gICAJCS8qIGRv bmUgaW4gY3J0Y19tb2RlX3NldCBhcyBpdCBsaXZlcyBpbnNpZGUgdGhlIGRwbGwgcmVnaXN0ZXIg Ki8KPiBAQCAtMTMwNiw3ICsxMzA2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19wcmVfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAgCX0KPgo+ICAgCWlm IChpbnB1dF9kdGQucGFydDIuc2R2b19mbGFncyAmIFNEVk9fTkVFRF9UT19TVEFMTCAmJgo+IC0J ICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkKPiArCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNSkKPiAgIAkJc2R2b3ggfD0gU0RWT19TVEFMTF9TRUxFQ1Q7Cj4gICAJaW50ZWxfc2R2b193 cml0ZV9zZHZveChpbnRlbF9zZHZvLCBzZHZveCk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90 di5jCj4gaW5kZXggMWYzYTBlMS4uNzFhNjVlZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF90di5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYu Ywo+IEBAIC0xMDk5LDcgKzEwOTksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF90dl9wcmVfZW5hYmxl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+Cj4gICAJc2V0X2NvbG9yX2NvbnZlcnNp b24oZGV2X3ByaXYsIGNvbG9yX2NvbnZlcnNpb24pOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gICAJCUk5MTVf V1JJVEUoVFZfQ0xSX0tOT0JTLCAweDAwNDA0MDAwKTsKPiAgIAllbHNlCj4gICAJCUk5MTVfV1JJ VEUoVFZfQ0xSX0tOT0JTLCAweDAwNjA2MDAwKTsKPgoKQSBmZXcgaW5zdGFuY2VzIG9mIHRoZSBz bWFsbCBjb21tZW50IEkgbWFkZSBhYm92ZSwgd2hpY2ggSSB0aGluayB3b3VsZCAKYmUgYSBnb29k IG9wcG9ydHVuaXR5LiBPdGhlcndpc2UgYWxsIGxvb2tzIE9LLgoKUmV2aWV3ZWQtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpCdXQgbmVlZHMgbW9yZSBhY2tz LCBzaW5jZSBsYXN0IHRpbWUgd2UgZGlzY3Vzc2VkIHRoaXMgY29uY2x1c2lvbiB3YXMgaXQgCndh cyB0b28gbXVjaCBkaXNydXB0aW9uIGZvciB0aGUgYmVuZWZpdC4KClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==