From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 13/15] drm/i915: dev_priv cleanup in intel_display.c Date: Thu, 17 Nov 2016 15:20:34 +0100 Message-ID: <7ae9e78c-0045-1ab0-2369-fc2850351bf4@linux.intel.com> References: <1479286545-15020-14-git-send-email-tvrtko.ursulin@linux.intel.com> <1479299562-18417-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7081F6E218 for ; Thu, 17 Nov 2016 14:20:37 +0000 (UTC) In-Reply-To: <1479299562-18417-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTYtMTEtMTYgb20gMTM6MzIgc2NocmVlZiBUdnJ0a28gVXJzdWxpbjoKPiBGcm9tOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Cj4gdjI6IFJlYmFzZS4KPgo+ IFNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICB8ICAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDMgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTY3ICsrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgOTcg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCBjZTM0ZTdhYjQ0 YWIuLjQ0NWZlYzljMjg0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC00OTUs NyArNDk1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpOTE1X3ZnYV9zZXRfZGVjb2RlKHZvaWQg KmNvb2tpZSwgYm9vbCBzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNv b2tpZTsKPiAgCj4gLQlpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoZGV2LCBzdGF0ZSk7Cj4g KwlpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUodG9faTkxNShkZXYpLCBzdGF0ZSk7CmRldl9w cml2ID0gY29va2llLCBhbmQgZml4dXAgdmdhX2NsaWVudF9yZWdpc3RlciB0byBwYXNzIGRldl9w cml2IGluc3RlYWQgb2YgZGV2PwoKZWl0aGVyIHdheQoKUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gIAlpZiAoc3RhdGUp Cj4gIAkJcmV0dXJuIFZHQV9SU1JDX0xFR0FDWV9JTyB8IFZHQV9SU1JDX0xFR0FDWV9NRU0gfAo+ ICAJCSAgICAgICBWR0FfUlNSQ19OT1JNQUxfSU8gfCBWR0FfUlNSQ19OT1JNQUxfTUVNOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDY5ZTM2NThmMDBlMi4uNzBhNzM2YTAyZTI2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTM0ODEsNyArMzQ4MSw4IEBAIGV4dGVy biB2b2lkIGludGVsX21vZGVzZXRfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g IGV4dGVybiB2b2lkIGludGVsX21vZGVzZXRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPiAgZXh0ZXJuIGludCBpbnRlbF9jb25uZWN0b3JfcmVnaXN0ZXIoc3RydWN0IGRybV9jb25u ZWN0b3IgKik7Cj4gIGV4dGVybiB2b2lkIGludGVsX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKHN0cnVj dCBkcm1fY29ubmVjdG9yICopOwo+IC1leHRlcm4gaW50IGludGVsX21vZGVzZXRfdmdhX3NldF9z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN0YXRlKTsKPiArZXh0ZXJuIGludCBp bnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICsJCQkJICAgICAgIGJvb2wgc3RhdGUpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9kaXNw bGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgZXh0ZXJuIHZvaWQgaTkxNV9y ZWRpc2FibGVfdmdhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGV4dGVy biB2b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYV9wb3dlcl9vbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBk YTFlMjllYzllYjYuLmU0ZjE5ODVhNTU5MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiBAQCAtMTAzNSw5ICsxMDM1LDggQEAgZW51bSB0cmFuc2NvZGVyIGludGVsX3Bp cGVfdG9fY3B1X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJcmV0dXJuIGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIH0KPiAgCj4gLXN0YXRp YyBib29sIHBpcGVfZHNsX3N0b3BwZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBl IHBpcGUpCj4gK3N0YXRpYyBib29sIHBpcGVfZHNsX3N0b3BwZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBQ SVBFRFNMKHBpcGUpOwo+ICAJdTMyIGxpbmUxLCBsaW5lMjsKPiAgCXUzMiBsaW5lX21hc2s7Cj4g QEAgLTEwNzIsMTIgKzEwNzEsMTEgQEAgc3RhdGljIGJvb2wgcGlwZV9kc2xfc3RvcHBlZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKPiAgICovCj4gIHN0YXRpYyB2b2lk IGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0g dHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7 Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAg CQlpOTE1X3JlZ190IHJlZyA9IFBJUEVDT05GKGNwdV90cmFuc2NvZGVyKTsKPiAgCj4gIAkJLyog V2FpdCBmb3IgdGhlIFBpcGUgU3RhdGUgdG8gZ28gb2ZmICovCj4gQEAgLTEwODcsNyArMTA4NSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQo+ICAJCQlXQVJOKDEsICJwaXBlX29mZiB3YWl0IHRpbWVkIG91dFxuIik7Cj4gIAl9 IGVsc2Ugewo+ICAJCS8qIFdhaXQgZm9yIHRoZSBkaXNwbGF5IGxpbmUgdG8gc2V0dGxlICovCj4g LQkJaWYgKHdhaXRfZm9yKHBpcGVfZHNsX3N0b3BwZWQoZGV2LCBwaXBlKSwgMTAwKSkKPiArCQlp ZiAod2FpdF9mb3IocGlwZV9kc2xfc3RvcHBlZChkZXZfcHJpdiwgcGlwZSksIDEwMCkpCj4gIAkJ CVdBUk4oMSwgInBpcGVfb2ZmIHdhaXQgdGltZWQgb3V0XG4iKTsKPiAgCX0KPiAgfQo+IEBAIC0x MjkzLDExICsxMjkxLDEwIEBAIHN0YXRpYyB2b2lkIGFzc2VydF9wbGFuZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyB2b2lkIGFzc2VydF9wbGFuZXNfZGlzYWJs ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgZW51bSBwaXBl IHBpcGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsK PiAgCWludCBpOwo+ICAKPiAgCS8qIFByaW1hcnkgcGxhbmVzIGFyZSBmaXhlZCB0byBwaXBlcyBv biBnZW40KyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAgCQl1MzIgdmFsID0gSTkxNV9SRUFEKERTUENO VFIocGlwZSkpOwo+ICAJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBESVNQTEFZX1BMQU5FX0VOQUJM RSwKPiAgCQkgICAgICJwbGFuZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIGRpc2Fi bGVkIGJ1dCBub3RcbiIsCj4gQEAgLTEzMTksMTAgKzEzMTYsOSBAQCBzdGF0aWMgdm9pZCBhc3Nl cnRfcGxhbmVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg c3RhdGljIHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCQkJICAgIGVudW0gcGlwZSBwaXBlKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gIAlpbnQgc3ByaXRlOwo+ICAKPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA5KSB7Cj4gIAkJZm9yX2VhY2hfc3ByaXRlKGRldl9wcml2LCBwaXBlLCBzcHJpdGUp IHsKPiAgCQkJdTMyIHZhbCA9IEk5MTVfUkVBRChQTEFORV9DVEwocGlwZSwgc3ByaXRlKSk7Cj4g IAkJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBQTEFORV9DVExfRU5BQkxFLAo+IEBAIC0xMzM2LDEy ICsxMzMyLDEyIEBAIHN0YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAic3ByaXRlICVjIGFzc2VydGlv biBmYWlsdXJlLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxu IiwKPiAgCQkJICAgICBzcHJpdGVfbmFtZShwaXBlLCBzcHJpdGUpLCBwaXBlX25hbWUocGlwZSkp Owo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgewo+ICsJ fSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKPiAgCQl1MzIgdmFsID0gSTkx NV9SRUFEKFNQUkNUTChwaXBlKSk7Cj4gIAkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIFNQUklURV9F TkFCTEUsCj4gIAkJICAgICAic3ByaXRlICVjIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUg b2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwKPiAgCQkgICAgIHBsYW5lX25h bWUocGlwZSksIHBpcGVfbmFtZShwaXBlKSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDUpIHsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7 Cj4gIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKPiAgCQlJOTE1X1NUQVRF X1dBUk4odmFsICYgRFZTX0VOQUJMRSwKPiAgCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9uIGZh aWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAo+ IEBAIC0xNTk1LDEyICsxNTkxLDEyIEBAIHN0YXRpYyB2b2lkIGNodl9lbmFibGVfcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGludGVsX251 bV9kdm9fcGlwZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArc3RhdGljIGludCBpbnRlbF9u dW1fZHZvX3BpcGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJ c3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gIAlpbnQgY291bnQgPSAwOwo+ICAKPiAtCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZf cHJpdi0+ZHJtLCBjcnRjKSB7Cj4gIAkJY291bnQgKz0gY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZl ICYmCj4gIAkJCWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRf RFZPKTsKPiAgCX0KPiBAQCAtMTYxMCw4ICsxNjA2LDcgQEAgc3RhdGljIGludCBpbnRlbF9udW1f ZHZvX3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4 X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBE UExMKGNydGMtPnBpcGUpOwo+ICAJdTMyIGRwbGwgPSBjcnRjLT5jb25maWctPmRwbGxfaHdfc3Rh dGUuZHBsbDsKPiAgCj4gQEAgLTE2MjIsNyArMTYxNyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5h YmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCQlhc3NlcnRfcGFuZWxfdW5sb2Nr ZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwo+ICAKPiAgCS8qIEVuYWJsZSBEVk8gMnggY2xvY2sg b24gYm90aCBQTExzIGlmIG5lY2Vzc2FyeSAqLwo+IC0JaWYgKElTX0k4MzAoZGV2X3ByaXYpICYm IGludGVsX251bV9kdm9fcGlwZXMoZGV2KSA+IDApIHsKPiArCWlmIChJU19JODMwKGRldl9wcml2 KSAmJiBpbnRlbF9udW1fZHZvX3BpcGVzKGRldl9wcml2KSA+IDApIHsKPiAgCQkvKgo+ICAJCSAq IEl0IGFwcGVhcnMgdG8gYmUgaW1wb3J0YW50IHRoYXQgd2UgZG9uJ3QgZW5hYmxlIHRoaXMKPiAg CQkgKiBmb3IgdGhlIGN1cnJlbnQgcGlwZSBiZWZvcmUgb3RoZXJ3aXNlIGNvbmZpZ3VyaW5nIHRo ZQo+IEBAIC0xNjQ3LDcgKzE2NDIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCj4gIAlQT1NUSU5HX1JFQUQocmVnKTsKPiAgCXVkZWxheSgx NTApOwo+ICAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gIAkJSTkxNV9XUklURShEUExMX01EKGNydGMtPnBp cGUpLAo+ICAJCQkgICBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Cj4gIAl9 IGVsc2Ugewo+IEBAIC0xNjgyLDE0ICsxNjc3LDEzIEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxl X3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgICovCj4gIHN0YXRpYyB2b2lkIGk5eHhf ZGlzYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOwo+ICAKPiAgCS8qIERpc2FibGUgRFZPIDJ4IGNsb2NrIG9uIGJvdGggUExMcyBp ZiBuZWNlc3NhcnkgKi8KPiAgCWlmIChJU19JODMwKGRldl9wcml2KSAmJgo+ICAJICAgIGludGVs X2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFZPKSAmJgo+IC0JICAg ICFpbnRlbF9udW1fZHZvX3BpcGVzKGRldikpIHsKPiArCSAgICAhaW50ZWxfbnVtX2R2b19waXBl cyhkZXZfcHJpdikpIHsKPiAgCQlJOTE1X1dSSVRFKERQTEwoUElQRV9CKSwKPiAgCQkJICAgSTkx NV9SRUFEKERQTEwoUElQRV9CKSkgJiB+RFBMTF9EVk9fMlhfTU9ERSk7Cj4gIAkJSTkxNV9XUklU RShEUExMKFBJUEVfQSksCj4gQEAgLTMwMDQsOCArMjk5OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhf dXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKPiAgCQkJCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHByaW1hcnktPmRldjsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocHJpbWFyeS0+ZGV2KTsKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiAgCWludCBwbGFuZSA9IGludGVsX2NydGMtPnBsYW5lOwo+IEBAIC0zMDIwLDcgKzMwMTMsNyBA QCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnByaW1hcnksCj4gIAo+ICAJZHNwY250ciB8PSBESVNQTEFZX1BMQU5FX0VOQUJMRTsKPiAgCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDQpIHsKPiAgCQlpZiAoaW50ZWxfY3J0Yy0+cGlwZSA9PSBQSVBFX0IpCj4gIAkJCWRz cGNudHIgfD0gRElTUFBMQU5FX1NFTF9QSVBFX0I7Cj4gIAo+IEBAIC0zMDgwLDcgKzMwNzMsNyBA QCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnByaW1hcnksCj4gIAo+ICAJaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBwbGFuZV9zdGF0 ZSwgMCk7Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCj4gKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0K PiAgCQkJaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCAwKTsK PiAgCj4gQEAgLTMwOTMsNyArMzA4Niw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKPiAgCj4gIAlsaW5lYXJfb2Zmc2V0 ID0gaW50ZWxfZmJfeHlfdG9fbGluZWFyKHgsIHksIHBsYW5lX3N0YXRlLCAwKTsKPiAgCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PCA0KQo+ICAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0gbGluZWFyX29mZnNldDsKPiAg Cj4gIAlpbnRlbF9jcnRjLT5hZGp1c3RlZF94ID0geDsKPiBAQCAtMzEwMiw3ICszMDk1LDcgQEAg c3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw cmltYXJ5LAo+ICAJSTkxNV9XUklURShyZWcsIGRzcGNudHIpOwo+ICAKPiAgCUk5MTVfV1JJVEUo RFNQU1RSSURFKHBsYW5lKSwgZmItPnBpdGNoZXNbMF0pOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAgCQlJ OTE1X1dSSVRFKERTUFNVUkYocGxhbmUpLAo+ICAJCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZi LCByb3RhdGlvbikgKwo+ICAJCQkgICBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCk7Cj4gQEAg LTM2ODAsOCArMzY3Myw3IEBAIHN0YXRpYyBib29sIGludGVsX2NydGNfaGFzX3BlbmRpbmdfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCSAgICAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZyA9Cj4gIAkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsK PiAgCj4gQEAgLTM3MDYsNyArMzY5OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkgICAocGlwZV9jb25maWctPnBp cGVfc3JjX2ggLSAxKSk7Cj4gIAo+ICAJLyogb24gc2t5bGFrZSB0aGlzIGlzIGRvbmUgYnkgZGV0 YWNoaW5nIHNjYWxlcnMgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gIAkJc2tsX2RldGFjaF9zY2FsZXJz KGNydGMpOwo+ICAKPiAgCQlpZiAocGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQpCj4gQEAg LTU0MDYsOCArNTM5OCw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGlwZV9j b25maWctPmJhc2UuY3J0YzsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGUsIGhzd193b3JrYXJvdW5kX3BpcGU7Cj4g IAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRlbF9jcnRjLT5jb25maWctPmNw dV90cmFuc2NvZGVyOwo+IEBAIC01NDY3LDcgKzU0NTgsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxs X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCWlm ICghdHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKQo+ICAJCWludGVsX2RkaV9lbmFi bGVfcGlwZV9jbG9jayhpbnRlbF9jcnRjKTsKPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gIAkJc2t5bGFrZV9w Zml0X2VuYWJsZShpbnRlbF9jcnRjKTsKPiAgCWVsc2UKPiAgCQlpcm9ubGFrZV9wZml0X2VuYWJs ZShpbnRlbF9jcnRjKTsKPiBAQCAtNTYwMCw4ICs1NTkxLDcgQEAgc3RhdGljIHZvaWQgaGFzd2Vs bF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ ICAJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGM7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gQEAgLTU2 MjQsNyArNTYxNCw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAgCWlmICghdHJhbnNjb2Rlcl9pc19k c2koY3B1X3RyYW5zY29kZXIpKQo+ICAJCWludGVsX2RkaV9kaXNhYmxlX3RyYW5zY29kZXJfZnVu YyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIpOwo+ICAKPiAtCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgCQlza3lsYWtl X3NjYWxlcl9kaXNhYmxlKGludGVsX2NydGMpOwo+ICAJZWxzZQo+ICAJCWlyb25sYWtlX3BmaXRf ZGlzYWJsZShpbnRlbF9jcnRjLCBmYWxzZSk7Cj4gQEAgLTcxOTMsNyArNzE4Myw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgY2xvY2tfbGltaXQgPSBkZXZfcHJp di0+bWF4X2RvdGNsa19mcmVxOwo+ICAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQp IHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewo+ICAJCWNsb2NrX2xpbWl0ID0g ZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAvIDEwOwo+ICAKPiAgCQkvKgo+IEBAIC03Nzg3 LDEyICs3Nzc3LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24o c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAq bV9uLAo+ICAJCQkJCSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm0yX24yKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWludCBwaXBlID0g Y3J0Yy0+cGlwZTsKPiAgCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmln LT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkg ewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+ICAJCUk5MTVfV1JJVEUoUElQ RV9EQVRBX00xKHRyYW5zY29kZXIpLCBUVV9TSVpFKG1fbi0+dHUpIHwgbV9uLT5nbWNoX20pOwo+ ICAJCUk5MTVfV1JJVEUoUElQRV9EQVRBX04xKHRyYW5zY29kZXIpLCBtX24tPmdtY2hfbik7Cj4g IAkJSTkxNV9XUklURShQSVBFX0xJTktfTTEodHJhbnNjb2RlciksIG1fbi0+bGlua19tKTsKPiBA QCAtODI0Niw4ICs4MjM1LDcgQEAgc3RhdGljIHZvaWQgaTh4eF9jb21wdXRlX2RwbGwoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1p bmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gaW50ZWxfY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2NydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNj b2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZpbnRlbF9jcnRjLT5jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiBAQCAtODI3Myw3ICs4MjYxLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAg CQkJdnN5bmNzaGlmdCArPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsKPiAgCX0KPiAgCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiAzKQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPiAzKQo+ICAJCUk5MTVfV1JJVEUoVlNZTkNTSElGVChjcHVfdHJhbnNjb2RlciksIHZzeW5j c2hpZnQpOwo+ICAKPiAgCUk5MTVfV1JJVEUoSFRPVEFMKGNwdV90cmFuc2NvZGVyKSwKPiBAQCAt ODM5Niw4ICs4Mzg0LDcgQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBl Y29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgewo+IC0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7Cj4gIAl1aW50MzJf dCBwaXBlY29uZjsKPiAgCj4gIAlwaXBlY29uZiA9IDA7Cj4gQEAgLTg0NDMsNyArODQzMCw3IEBA IHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjKQo+ICAJfQo+ICAKPiAgCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7Cj4gLQkJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgNCB8fAo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAo+ ICAJCSAgICBpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywgSU5URUxfT1VU UFVUX1NEVk8pKQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9JTlRFUkxBQ0VfV19GSUVMRF9J TkRJQ0FUSU9OOwo+ICAJCWVsc2UKPiBAQCAtODY1MSw4ICs4NjM4LDcgQEAgc3RhdGljIGludCB2 bHZfY3J0Y19jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICBzdGF0aWMg dm9pZCBpOXh4X2dldF9wZml0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJ CSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJdWludDMyX3QgdG1wOwo+ ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMgJiYKPiBAQCAtODY2NCw3ICs4NjUw LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIENoZWNrIHdoZXRoZXIgdGhlIHBmaXQgaXMg YXR0YWNoZWQgdG8gb3VyIHBpcGUuICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0 KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKPiAgCQlpZiAoY3J0Yy0+cGlw ZSAhPSBQSVBFX0IpCj4gIAkJCXJldHVybjsKPiAgCX0gZWxzZSB7Cj4gQEAgLTg3MjgsNyArODcx NCw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICAKPiAgCWZiID0gJmludGVsX2ZiLT5iYXNlOwo+ICAKPiAtCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4g IAkJaWYgKHZhbCAmIERJU1BQTEFORV9USUxFRCkgewo+ICAJCQlwbGFuZV9jb25maWctPnRpbGlu ZyA9IEk5MTVfVElMSU5HX1g7Cj4gIAkJCWZiLT5tb2RpZmllclswXSA9IEk5MTVfRk9STUFUX01P RF9YX1RJTEVEOwo+IEBAIC04NzQwLDcgKzg3MjYsNyBAQCBpOXh4X2dldF9pbml0aWFsX3BsYW5l X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWZiLT5waXhlbF9mb3JtYXQgPSBm b3VyY2M7Cj4gIAlmYi0+Yml0c19wZXJfcGl4ZWwgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmb3Vy Y2MsIDApICogODsKPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICAJCWlmIChwbGFuZV9jb25maWctPnRp bGluZykKPiAgCQkJb2Zmc2V0ID0gSTkxNV9SRUFEKERTUFRJTEVPRkYocGxhbmUpKTsKPiAgCQll bHNlCj4gQEAgLTg4MDksOCArODc5NSw3IEBAIHN0YXRpYyB2b2lkIGNodl9jcnRjX2Nsb2NrX2dl dChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93 ZXJfZG9tYWluOwo+ICAJdWludDMyX3QgdG1wOwo+ICAJYm9vbCByZXQ7Cj4gQEAgLTg4NDksNyAr ODgzNCw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJICAgICh0bXAgJiBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1QpKQo+ ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1ZTsKPiAgCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0 KQo+ICAJCXBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSA9IHRtcCAmIFBJUEVDT05GX0RPVUJMRV9X SURFOwo+ICAKPiAgCWludGVsX2dldF9waXBlX3RpbWluZ3MoY3J0YywgcGlwZV9jb25maWcpOwo+ IEBAIC04ODU3LDcgKzg4NDIsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlpOXh4X2dldF9wZml0X2NvbmZpZyhjcnRj LCBwaXBlX2NvbmZpZyk7Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsK PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAgCQkvKiBObyB3YXkgdG8gcmVh ZCBpdCBvdXQgb24gcGlwZXMgQiBhbmQgQyAqLwo+ICAJCWlmIChJU19DSEVSUllWSUVXKGRldl9w cml2KSAmJiBjcnRjLT5waXBlICE9IFBJUEVfQSkKPiAgCQkJdG1wID0gZGV2X3ByaXYtPmNodl9k cGxsX21kW2NydGMtPnBpcGVdOwo+IEBAIC05NjU0LDExICs5NjM5LDEwIEBAIHN0YXRpYyB2b2lk IGludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbV9uLAo+ICAJCQkJCSBzdHJ1Y3QgaW50ZWxf bGlua19tX24gKm0yX24yKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNSkgewo+ICAJCW1fbi0+bGlua19tID0gSTkxNV9SRUFEKFBJUEVfTElOS19NMSh0cmFu c2NvZGVyKSk7Cj4gIAkJbV9uLT5saW5rX24gPSBJOTE1X1JFQUQoUElQRV9MSU5LX04xKHRyYW5z Y29kZXIpKTsKPiAgCQltX24tPmdtY2hfbSA9IEk5MTVfUkVBRChQSVBFX0RBVEFfTTEodHJhbnNj b2RlcikpCj4gQEAgLTk2NzAsNyArOTY1NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFu c2NvZGVyX2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJICogZ2VuIDwgOCkg YW5kIGlmIERSUlMgaXMgc3VwcG9ydGVkICh0byBtYWtlIHN1cmUgdGhlCj4gIAkJICogcmVnaXN0 ZXJzIGFyZSBub3QgdW5uZWNlc3NhcmlseSByZWFkKS4KPiAgCQkgKi8KPiAtCQlpZiAobTJfbjIg JiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmCj4gKwkJaWYgKG0yX24yICYmIElOVEVMX0dF TihkZXZfcHJpdikgPCA4ICYmCj4gIAkJCWNydGMtPmNvbmZpZy0+aGFzX2RycnMpIHsKPiAgCQkJ bTJfbjItPmxpbmtfbSA9IEk5MTVfUkVBRChQSVBFX0xJTktfTTIodHJhbnNjb2RlcikpOwo+ICAJ CQltMl9uMi0+bGlua19uID0JSTkxNV9SRUFEKFBJUEVfTElOS19OMih0cmFuc2NvZGVyKSk7Cj4g QEAgLTk4NzIsNyArOTg1Niw3IEBAIGlyb25sYWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlmYiA9ICZpbnRlbF9mYi0+YmFzZTsKPiAg Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNCkgewo+ICAJCWlmICh2YWwgJiBESVNQUExBTkVfVElMRUQpIHsKPiAgCQkJ cGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X1RJTElOR19YOwo+ICAJCQlmYi0+bW9kaWZpZXJb MF0gPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiBAQCAtMTA2NjIsOCArMTA2NDYsNyBAQCBz dGF0aWMgYm9vbCBieHRfZ2V0X2RzaV90cmFuc2NvZGVyX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9kZGlfcG9ydF9zdGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNl LmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7Cj4gIAllbnVtIHBv cnQgcG9ydDsKPiAgCXVpbnQzMl90IHRtcDsKPiBAQCAtMTA2OTAsNyArMTA2NzMsNyBAQCBzdGF0 aWMgdm9pZCBoYXN3ZWxsX2dldF9kZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgCSAqIERESSBFLiBTbyBqdXN0IGNoZWNrIHdoZXRoZXIgdGhpcyBwaXBlIGlzIHdpcmVk IHRvIERESSBFIGFuZCB3aGV0aGVyCj4gIAkgKiB0aGUgUENIIHRyYW5zY29kZXIgaXMgb24uCj4g IAkgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkgJiYKPiArCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgOSAmJgo+ICAJICAgIChwb3J0ID09IFBPUlRfRSkgJiYgSTkxNV9SRUFE KExQVF9UUkFOU0NPTkYpICYgVFJBTlNfRU5BQkxFKSB7Cj4gIAkJcGlwZV9jb25maWctPmhhc19w Y2hfZW5jb2RlciA9IHRydWU7Cj4gIAo+IEBAIC0xMDcwNSw4ICsxMDY4OCw3IEBAIHN0YXRpYyB2 b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4g IHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gIAl1bnNpZ25l ZCBsb25nIHBvd2VyX2RvbWFpbl9tYXNrOwo+ICAJYm9vbCBhY3RpdmU7Cj4gQEAgLTEwNzM5LDcg KzEwNzIxLDcgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gIAlwaXBlX2NvbmZpZy0+Z2FtbWFfbW9kZSA9Cj4gIAkJSTkxNV9S RUFEKEdBTU1BX01PREUoY3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0s7Cj4gIAo+ IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPiAgCQlza2xfaW5pdF9zY2FsZXJzKGRldl9wcml2LCBjcnRjLCBwaXBl X2NvbmZpZyk7Cj4gIAo+ICAJCXBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2NhbGVyX2lkID0g LTE7Cj4gQEAgLTEwNzQ5LDcgKzEwNzMxLDcgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlw ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlwb3dlcl9kb21haW4gPSBQT1dF Ul9ET01BSU5fUElQRV9QQU5FTF9GSVRURVIoY3J0Yy0+cGlwZSk7Cj4gIAlpZiAoaW50ZWxfZGlz cGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKSkgewo+ICAJ CXBvd2VyX2RvbWFpbl9tYXNrIHw9IEJJVChwb3dlcl9kb21haW4pOwo+IC0JCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KQo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4g IAkJCXNreWxha2VfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKPiAgCQllbHNl Cj4gIAkJCWlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAg LTEyMTgxLDcgKzEyMTYzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkgKiBUSUxFT0ZGL0xJTk9GRiByZWdpc3RlcnMgY2FuJ3Qg YmUgY2hhbmdlZCB2aWEgTUkgZGlzcGxheSBmbGlwcy4KPiAgCSAqIE5vdGUgdGhhdCBwaXRjaCBj aGFuZ2VzIGNvdWxkIGFsc28gYWZmZWN0IHRoZXNlIHJlZ2lzdGVyLgo+ICAJICovCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPiAzICYmCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ IDMgJiYKPiAgCSAgICAoZmItPm9mZnNldHNbMF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPm9mZnNl dHNbMF0gfHwKPiAgCSAgICAgZmItPnBpdGNoZXNbMF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPnBp dGNoZXNbMF0pKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xMjI1Niw3ICsxMjIzOCw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJCQllbmdpbmUgPSBOVUxMOwo+ICAJfSBlbHNlIGlmIChJU19JVllCUklER0UoZGV2X3ByaXYp IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gIAkJZW5naW5lID0gZGV2X3ByaXYtPmVuZ2lu ZVtCQ1NdOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7Cj4gKwl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewo+ICAJCWVuZ2luZSA9IGk5MTVf Z2VtX29iamVjdF9sYXN0X3dyaXRlX2VuZ2luZShvYmopOwo+ICAJCWlmIChlbmdpbmUgPT0gTlVM TCB8fCBlbmdpbmUtPmlkICE9IFJDUykKPiAgCQkJZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtC Q1NdOwo+IEBAIC0xMjUxMyw3ICsxMjQ5NSw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2Fs Y19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAkvKiBQ cmUtZ2VuOSBwbGF0Zm9ybXMgbmVlZCB0d28tc3RlcCB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+ICAJ aWYgKChwaXBlX2NvbmZpZy0+dXBkYXRlX3dtX3ByZSB8fCBwaXBlX2NvbmZpZy0+dXBkYXRlX3dt X3Bvc3QpICYmCj4gLQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5ICYmIGRldl9wcml2LT5k aXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MpCj4gKwkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8 IDkgJiYgZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcykKPiAgCQl0b19pbnRl bF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gdHJ1ZTsK PiAgCj4gIAlpZiAodmlzaWJsZSB8fCB3YXNfdmlzaWJsZSkKPiBAQCAtMTI2MTgsNyArMTI2MDAs NyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAgCQkgKiBvbGQgc3RhdGUgYW5kIHRoZSBuZXcgc3RhdGUuICBXZSBjYW4gcHJvZ3Jh bSB0aGVzZQo+ICAJCSAqIGltbWVkaWF0ZWx5Lgo+ICAJCSAqLwo+IC0JCXJldCA9IGRldl9wcml2 LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKGNydGMtPmRldiwKPiArCQlyZXQgPSBk ZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bShkZXYsCj4gIAkJCQkJCQkJ aW50ZWxfY3J0YywKPiAgCQkJCQkJCQlwaXBlX2NvbmZpZyk7Cj4gIAkJaWYgKHJldCkgewo+IEBA IC0xMjYzMCw3ICsxMjYxMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2so c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQlwaXBlX2NvbmZpZy0+d20uaWxrLmludGVybWVk aWF0ZSA9IHBpcGVfY29uZmlnLT53bS5pbGsub3B0aW1hbDsKPiAgCX0KPiAgCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkgewo+ICAJCWlmIChtb2RlX2NoYW5nZWQpCj4gIAkJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVy X2NydGMocGlwZV9jb25maWcpOwo+ICAKPiBAQCAtMTMxODcsMTIgKzEzMTY5LDExIEBAIGludGVs X2NvbXBhcmVfbGlua19tX24oY29uc3Qgc3RydWN0IGludGVsX2xpbmtfbV9uICptX24sCj4gIH0K PiAgCj4gIHN0YXRpYyBib29sCj4gLWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAraW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1 cnJlbnRfY29uZmlnLAo+ICAJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZywKPiAgCQkJICBib29sIGFkanVzdCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJYm9vbCByZXQgPSB0cnVlOwo+ICAKPiAgI2Rl ZmluZSBJTlRFTF9FUlJfT1JfREJHX0tNUyhmbXQsIC4uLikgXAo+IEBAIC0xMzMxMiw3ICsxMzI5 Myw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCVBJUEVfQ09ORl9DSEVDS19JKGxhbmVfY291bnQpOwo+ICAJUElQRV9DT05GX0NIRUNLX1go bGFuZV9sYXRfb3B0aW1fbWFzayk7Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg OCkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KSB7Cj4gIAkJUElQRV9DT05GX0NI RUNLX01fTihkcF9tX24pOwo+ICAKPiAgCQlpZiAoY3VycmVudF9jb25maWctPmhhc19kcnJzKQo+ IEBAIC0xMzM2MSw3ICsxMzM0Miw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQuY29u dHJvbCk7Cj4gIAkvKiBwZml0IHJhdGlvcyBhcmUgYXV0b2NvbXB1dGVkIGJ5IHRoZSBodyBvbiBn ZW40KyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKPiArCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNCkKPiAgCQlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQucGdtX3Jh dGlvcyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQubHZkc19ib3JkZXJfYml0cyk7 Cj4gIAo+IEBAIC0xMzQzNiw4ICsxMzQxNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BpcGVfY29u ZmlnX3Nhbml0eV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0 YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCSAg ICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiAgCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gaHdf ZGRiLCAqc3dfZGRiOwo+ICAJc3RydWN0IHNrbF9waXBlX3dtIGh3X3dtLCAqc3dfd207Cj4gIAlz dHJ1Y3Qgc2tsX3BsYW5lX3dtICpod19wbGFuZV93bSwgKnN3X3BsYW5lX3dtOwo+IEBAIC0xMzQ0 Niw3ICsxMzQyNiw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gIAljb25zdCBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4g IAlpbnQgcGxhbmUsIGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2 KTsKPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5IHx8ICFuZXdfc3RhdGUtPmFj dGl2ZSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSB8fCAhbmV3X3N0YXRlLT5hY3Rp dmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCXNrbF9waXBlX3dtX2dldF9od19zdGF0ZShjcnRjLCAm aHdfd20pOwo+IEBAIC0xMzY3NSw3ICsxMzY1NSw3IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgCWludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9jaGVjayhkZXZf cHJpdiwgcGlwZV9jb25maWcpOwo+ICAKPiAgCXN3X2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpOwo+IC0JaWYgKCFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwg c3dfY29uZmlnLAo+ICsJaWYgKCFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldl9wcml2LCBz d19jb25maWcsCj4gIAkJCQkgICAgICAgcGlwZV9jb25maWcsIGZhbHNlKSkgewo+ICAJCUk5MTVf U1RBVEVfV0FSTigxLCAicGlwZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIVxuIik7Cj4gIAkJaW50ZWxf ZHVtcF9waXBlX2NvbmZpZyhpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywKPiBAQCAtMTQwOTUsNyAr MTQwNzUsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAJCX0KPiAgCj4gIAkJaWYgKGk5MTUuZmFzdGJvb3QgJiYKPiAtCQkgICAgaW50 ZWxfcGlwZV9jb25maWdfY29tcGFyZShkZXYsCj4gKwkJICAgIGludGVsX3BpcGVfY29uZmlnX2Nv bXBhcmUoZGV2X3ByaXYsCj4gIAkJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSks Cj4gIAkJCQkJcGlwZV9jb25maWcsIHRydWUpKSB7Cj4gIAkJCWNydGNfc3RhdGUtPm1vZGVfY2hh bmdlZCA9IGZhbHNlOwo+IEBAIC0xNTQyNSwxMSArMTU0MDUsOSBAQCBzdGF0aWMgYm9vbCBoYXNf ZWRwX2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0dXJuIHRydWU7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIGludGVsX2NydF9wcmVzZW50KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3N0YXRpYyBib29sIGludGVsX2NydF9wcmVzZW50KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA5KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAo+ICAJaWYgKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElTX0JEV19VTFQoZGV2X3ByaXYp KQo+IEBAIC0xNTUwMyw3ICsxNTQ4MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291dHB1 dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCSAqLwo+ICAJaW50ZWxfbHZkc19pbml0KGRl dik7Cj4gIAo+IC0JaWYgKGludGVsX2NydF9wcmVzZW50KGRldikpCj4gKwlpZiAoaW50ZWxfY3J0 X3ByZXNlbnQoZGV2X3ByaXYpKQo+ICAJCWludGVsX2NydF9pbml0KGRldik7Cj4gIAo+ICAJaWYg KElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gQEAgLTE1NzkzLDcgKzE1NzcxLDcgQEAgc3RhdGlj IGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlz d2l0Y2ggKG1vZGVfY21kLT5tb2RpZmllclswXSkgewo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRDoKPiAgCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+IC0JCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkp IHsKPiAgCQkJRFJNX0RFQlVHKCJVbnN1cHBvcnRlZCB0aWxpbmcgMHglbGx4IVxuIiwKPiAgCQkJ CSAgbW9kZV9jbWQtPm1vZGlmaWVyWzBdKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE1 ODU2LDcgKzE1ODM0LDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4gIAkJYnJl YWs7Cj4gIAljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID4gMykgewo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMykgewo+ICAJCQlE Uk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gIAkJCSAgICAgICAg ICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFt ZSkpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTU4NjQsNyArMTU4NDIsNyBAQCBzdGF0 aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CQlicmVhazsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiAgCQlpZiAoIUlTX1ZBTExF WVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+IC0JCSAgICBJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPiArCQkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8 IDkpIHsKPiAgCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ ICAJCQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0 LCAmZm9ybWF0X25hbWUpKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE1ODczLDcgKzE1 ODUxLDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gIAljYXNlIERSTV9GT1JN QVRfWFJHQjIxMDEwMTA6Cj4gIAljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6Cj4gLQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkgewo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCkgewo+ICAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIs Cj4gIAkJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3Jt YXQsICZmb3JtYXRfbmFtZSkpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTU4OTAsNyAr MTU4NjgsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ICAJY2FzZSBEUk1fRk9STUFU X1lWWVU6Cj4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA1KSB7Cj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1KSB7Cj4gIAkJCURS TV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiAgCQkJICAgICAgICAg IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1l KSk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xNjY2Nyw3ICsxNjY0NSw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkv KiBXZSBuZWVkIHRvIHNhbml0aXplIHRoZSBwbGFuZSAtPiBwaXBlIG1hcHBpbmcgZmlyc3QgYmVj YXVzZSB0aGlzIHdpbGwKPiAgCSAqIGRpc2FibGUgdGhlIGNydGMgKGFuZCBoZW5jZSBjaGFuZ2Ug dGhlIHN0YXRlKSBpZiBpdCBpcyB3cm9uZy4gTm90ZQo+ICAJICogdGhhdCBnZW40KyBoYXMgYSBm aXhlZCBwbGFuZSAtPiBwaXBlIG1hcHBpbmcuICAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuIDwgNCAmJiAhaW50ZWxfY2hlY2tfcGxhbmVfbWFwcGluZyhjcnRjKSkgewo+ICsJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA0ICYmICFpbnRlbF9jaGVja19wbGFuZV9tYXBwaW5nKGNydGMp KSB7Cj4gIAkJYm9vbCBwbGFuZTsKPiAgCj4gIAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNd IHdyb25nIHBsYW5lIGNvbm5lY3Rpb24gZGV0ZWN0ZWQhXG4iLAo+IEBAIC0xNzE3NywxMCArMTcx NTUsOSBAQCB2b2lkIGludGVsX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIC8qCj4gICAqIHNldCB2Z2EgZGVjb2RlIHN0YXRlIC0g dHJ1ZSA9PSBlbmFibGUgVkdBIGRlY29kZQo+ICAgKi8KPiAtaW50IGludGVsX21vZGVzZXRfdmdh X3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN0YXRlKQo+ICtpbnQgaW50 ZWxfbW9kZXNldF92Z2Ffc2V0X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgYm9vbCBzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+IC0JdW5zaWduZWQgcmVnID0gSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9HTUNIX0NUUkw7Cj4gKwl1bnNpZ25lZCByZWcg PSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYgPyBTTkJfR01DSF9DVFJMIDogSU5URUxfR01DSF9D VFJMOwo+ICAJdTE2IGdtY2hfY3RybDsKPiAgCj4gIAlpZiAocGNpX3JlYWRfY29uZmlnX3dvcmQo ZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZywgJmdtY2hfY3RybCkpIHsKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK