From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 08/10] drm/i915: Nuke intel_digital_port->port Date: Thu, 9 Nov 2017 15:50:15 +0200 Message-ID: <20171109135015.GO10981@intel.com> References: <20171031205123.13123-1-ville.syrjala@linux.intel.com> <20171031205123.13123-9-ville.syrjala@linux.intel.com> <1510192696.8287.24.camel@dk-H97M-D3H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA2726E33D for ; Thu, 9 Nov 2017 13:50:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1510192696.8287.24.camel@dk-H97M-D3H> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Pandiyan, Dhinakaran" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMDksIDIwMTcgYXQgMDE6Mzc6NDhBTSArMDAwMCwgUGFuZGl5YW4sIERoaW5h a2FyYW4gd3JvdGU6Cj4gCj4gT24gVHVlLCAyMDE3LTEwLTMxIGF0IDIyOjUxICswMjAwLCBWaWxs ZSBTeXJqYWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiA+IAo+ID4gUmVtb3ZlIGludGVsX2RpZ2l0YWxfcG9ydC0+cG9y dCBhbmQgcmVwbGFjZSBpdHMgdXNlcnMgd2l0aAo+ID4gaW50ZWxfZW5jb2Rlci0+cG9ydC4gaW50 ZWxfZW5jb2Rlci0+cG9ydCBpcyBhIHN1cGVyc2V0IG9mCj4gPiBpbnRlbF9kaWdpdGFsX3BvcnQt PnBvcnQsIGFuZCBpdCB3b3JrcyBjb3JyZWN0bHkgZXZlbiBmb3IKPiA+IE1TVCBlbmNvZGVycy4K PiA+IAo+ID4gUGVyZm9ybWVkIHdpdGggY29jY2k6Cj4gPiBAQAo+ID4gQEAKPiA+IHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgewo+ID4gICAgICAgIC4uLgo+ID4gLSAgICAgICBlbnVtIHBvcnQg cG9ydDsKPiA+ICAgICAgICAuLi4KPiA+IH0KPiA+IAo+ID4gQEAKPiA+IHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKkQ7Cj4gPiBleHByZXNzaW9uIEU7Cj4gPiBAQAo+ID4gLSBELT5wb3J0ID0g RTsKPiA+IAo+ID4gQEAKPiA+IHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKkQ7Cj4gPiBAQAo+ ID4gLSBELT5wb3J0Cj4gPiArIEQtPmJhc2UucG9ydAo+ID4gCj4gPiBAQAo+ID4gZXhwcmVzc2lv biBFOwo+ID4gQEAKPiA+ICgKPiA+IC0gZHBfdG9fZGlnX3BvcnQoRSktPnBvcnQKPiA+ICsgZHBf dG9fZGlnX3BvcnQoRSktPmJhc2UucG9ydAo+ID4gfAo+ID4gLSBlbmNfdG9fZGlnX3BvcnQoRSkt PnBvcnQKPiA+ICsgdG9faW50ZWxfZW5jb2RlcihFKS0+cG9ydAo+ID4gKQo+ID4gCj4gPiBAQAo+ ID4gZXhwcmVzc2lvbiBFOwo+ID4gQEAKPiA+IC0gdG9faW50ZWxfZW5jb2RlcigmRS0+YmFzZSkK PiA+ICsgRQo+ID4gCj4gPiBAQAo+ID4gc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqRDsKPiA+ IGlkZW50aWZpZXIgSSwgTTsKPiA+IEBACj4gPiAgIEkgPSAmRC0+YmFzZQo+ID4gPC4uLgo+ID4g KAo+ID4gLSBELT5iYXNlLk0KPiA+ICsgSS0+TQo+ID4gfAo+ID4gLSAmRC0+YmFzZQo+ID4gKyBJ Cj4gPiApCj4gPiAuLi4+Cj4gPiAKPiA+IEBACj4gPiBpZGVudGlmaWVyIEQ7Cj4gPiBleHByZXNz aW9uIEU7Cj4gPiBpZGVudGlmaWVyIE07Cj4gPiBAQAo+ID4gIEQgPSBlbmNfdG9fZGlnX3BvcnQo JkUtPmJhc2UpCj4gPiA8Li4uCj4gPiAoCj4gPiAtIEQtPmJhc2UuTQo+ID4gKyBFLT5NCj4gPiB8 Cj4gPiAtICZELT5iYXNlCj4gPiArIEUKPiA+ICkKPiA+IC4uLj4KPiA+IAo+ID4gQEAKPiA+IGV4 cHJlc3Npb24gRTsKPiA+IGlkZW50aWZpZXIgTTsKPiA+IEBACj4gPiAoCj4gPiAtIGVuY190b19k aWdfcG9ydCgmRS0+YmFzZSktPmJhc2UuTQo+ID4gKyBFLT5NCj4gPiB8Cj4gPiAtIGVuY190b19k aWdfcG9ydCgmRS0+YmFzZSktPmJhc2UKPiA+ICsgRQo+ID4gfAo+ID4gLSBlbmNfdG9fbXN0KCZF LT5iYXNlKS0+cHJpbWFyeS0+YmFzZS5wb3J0Cj4gPiArIEUtPnBvcnQKPiA+ICkKPiA+IAo+ID4g QEAKPiA+IGV4cHJlc3Npb24gRTsKPiA+IGlkZW50aWZpZXIgRDsKPiA+IEBACj4gPiAtIHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKkQgPSBFOwo+ID4gLi4uIHdoZW4gIT0gRAo+ID4gCj4gCj4g Cj4gVGhlIHNjcmlwdCBoYXMgZW5kZWQgdXAgY3JlYXRpbmcgaW50ZWxfZGlnX3BvcnQtPmJhc2Uu cG9ydCBkZXJlZmVyZW5jZXMKPiBpbiBzb21lIHBsYWNlcyB3aGVyZSBlbmNvZGVyLT5wb3J0IHdh cyBwb3NzaWJsZSwgYnV0IGhhcyB3b3JrZWQgcHJldHR5Cj4gd2VsbCBvdGhlcndpc2UuCgpJIGd1 ZXNzIEkgbWlzc2VkIHNvbWUgcGF0dGVybiBpbiB0aGUgY2xlYW51cC4gSG1tLiBJIHdvbmRlciBp ZiB0aGF0CmVudGlyZSB0aGluZyBjb3VsZCBiZSBzaW1wbGlmaWVkIGEgYml0LiBJJ2xsIGdpdmUg aXQgYW5vdGhlciB0cnkuCgo+IAo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jICAgfCAgIDIgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYyAgICAgIHwgIDEzICsrLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jICB8ICAxMyArKystLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICAgICAgfCAxMDMgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgIDYgKy0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jIHwgIDEyICsrLS0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgIHwgICA1ICstCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICB8ICAxNyArKystLS0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jIHwgICA0ICstCj4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcHNyLmMgICAgICB8ICAgNCArLQo+ID4gIDEwIGZpbGVzIGNoYW5nZWQsIDg3 IGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+ID4gaW5kZXggMzk4ODNjZDkxNWRiLi5kODkzMjFmMDQ2OGMgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+IEBAIC0zNjAzLDcgKzM2MDMs NyBAQCBzdGF0aWMgaW50IGk5MTVfZHBfbXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4gPiAgCQkJY29udGludWU7Cj4gPiAgCj4gPiAgCQlzZXFfcHJpbnRmKG0sICJN U1QgU291cmNlIFBvcnQgJWNcbiIsCj4gPiAtCQkJICAgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0 LT5wb3J0KSk7Cj4gPiArCQkJICAgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQp KTsKPiA+ICAJCWRybV9kcF9tc3RfZHVtcF90b3BvbG9neShtLCAmaW50ZWxfZGlnX3BvcnQtPmRw Lm1zdF9tZ3IpOwo+ID4gIAl9Cj4gPiAgCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29u bl9pdGVyKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBpbmRleCBhY2U2NzRjZDc5 YjkuLjY1YWI1NTQ5NmFiNyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4g QEAgLTE4MDEsOCArMTgwMSw4IEBAIHN0YXRpYyB2b2lkIHNrbF9kZGlfc2V0X2lib29zdChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkgICAgICAgaW50IGxldmVsLCBlbnVt IGludGVsX291dHB1dF90eXBlIHR5cGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7 Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxf ZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gLQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2Rp Z19wb3J0LT5wb3J0Owo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVy LT5wb3J0Owo+ID4gIAl1aW50OF90IGlib29zdDsKPiA+ICAKPiA+ICAJaWYgKHR5cGUgPT0gSU5U RUxfT1VUUFVUX0hETUkpCj4gPiBAQCAtMjQ3MCw3ICsyNDcwLDcgQEAgdm9pZCBpbnRlbF9kZGlf cHJlcGFyZV9saW5rX3JldHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChp bnRlbF9kcCk7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPiAg CQl0b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+IC0JZW51bSBwb3J0 IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gIAl1aW50MzJfdCB2YWw7Cj4gPiAgCWJvb2wgd2Fp dCA9IGZhbHNlOwo+ID4gIAo+ID4gQEAgLTI2OTgsNyArMjY5OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICoKPiA+ICBpbnRlbF9kZGlfaW5pdF9kcF9jb25uZWN0b3Ioc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxf ZGlnX3BvcnQtPnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJh c2UucG9ydDsKPiA+ICAKPiA+ICAJY29ubmVjdG9yID0gaW50ZWxfY29ubmVjdG9yX2FsbG9jKCk7 Cj4gPiAgCWlmICghY29ubmVjdG9yKQo+ID4gQEAgLTI3MTcsNyArMjcxNyw3IEBAIHN0YXRpYyBz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICoKPiA+ICBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3Rv cihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiA+ICB7Cj4gPiAg CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+IC0JZW51bSBwb3J0IHBvcnQg PSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdf cG9ydC0+YmFzZS5wb3J0Owo+ID4gIAo+ID4gIAljb25uZWN0b3IgPSBpbnRlbF9jb25uZWN0b3Jf YWxsb2MoKTsKPiA+ICAJaWYgKCFjb25uZWN0b3IpCj4gPiBAQCAtMjczMyw3ICsyNzMzLDcgQEAg c3RhdGljIGJvb2wgaW50ZWxfZGRpX2FfZm9yY2VfNF9sYW5lcyhzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkcG9ydCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZHBvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gIAo+ID4gLQlpZiAoZHBv cnQtPnBvcnQgIT0gUE9SVF9BKQo+ID4gKwlpZiAoZHBvcnQtPmJhc2UucG9ydCAhPSBQT1JUX0Ep Cj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCj4gPiAgCWlmIChkcG9ydC0+c2F2ZWRfcG9ydF9i aXRzICYgRERJX0FfNF9MQU5FUykKPiA+IEBAIC0yODM2LDcgKzI4MzYsNiBAQCB2b2lkIGludGVs X2RkaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBv cnQpCj4gPiAgCWludGVsX2VuY29kZXItPnN1c3BlbmQgPSBpbnRlbF9kcF9lbmNvZGVyX3N1c3Bl bmQ7Cj4gPiAgCWludGVsX2VuY29kZXItPmdldF9wb3dlcl9kb21haW5zID0gaW50ZWxfZGRpX2dl dF9wb3dlcl9kb21haW5zOwo+ID4gIAo+ID4gLQlpbnRlbF9kaWdfcG9ydC0+cG9ydCA9IHBvcnQ7 Cj4gPiAgCWludGVsX2RpZ19wb3J0LT5zYXZlZF9wb3J0X2JpdHMgPSBJOTE1X1JFQUQoRERJX0JV Rl9DVEwocG9ydCkpICYKPiA+ICAJCQkJCSAgKERESV9CVUZfUE9SVF9SRVZFUlNBTCB8Cj4gPiAg CQkJCQkgICBERElfQV80X0xBTkVTKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiA+IGluZGV4IDczN2RlMjUxZDBmOC4uYzc1YmNmOTg5NDU0IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0xNzAzLDcgKzE3MDMsNyBAQCB2b2lk IHZsdl93YWl0X3BvcnRfcmVhZHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gIAl1MzIgcG9ydF9tYXNrOwo+ID4gIAlpOTE1X3JlZ190IGRwbGxfcmVnOwo+ID4gIAo+ID4g LQlzd2l0Y2ggKGRwb3J0LT5wb3J0KSB7Cj4gPiArCXN3aXRjaCAoZHBvcnQtPmJhc2UucG9ydCkg ewo+ID4gIAljYXNlIFBPUlRfQjoKPiA+ICAJCXBvcnRfbWFzayA9IERQTExfUE9SVEJfUkVBRFlf TUFTSzsKPiA+ICAJCWRwbGxfcmVnID0gRFBMTCgwKTsKPiA+IEBAIC0xNzI1LDcgKzE3MjUsOCBA QCB2b2lkIHZsdl93YWl0X3BvcnRfcmVhZHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gIAkJCQkgICAgZHBsbF9yZWcsIHBvcnRfbWFzaywgZXhwZWN0ZWRfbWFzaywKPiA+ ICAJCQkJICAgIDEwMDApKQo+ID4gIAkJV0FSTigxLCAidGltZWQgb3V0IHdhaXRpbmcgZm9yIHBv cnQgJWMgcmVhZHk6IGdvdCAweCV4LCBleHBlY3RlZCAweCV4XG4iLAo+ID4gLQkJICAgICBwb3J0 X25hbWUoZHBvcnQtPnBvcnQpLCBJOTE1X1JFQUQoZHBsbF9yZWcpICYgcG9ydF9tYXNrLCBleHBl Y3RlZF9tYXNrKTsKPiA+ICsJCSAgICAgcG9ydF9uYW1lKGRwb3J0LT5iYXNlLnBvcnQpLAo+ID4g KwkJICAgICBJOTE1X1JFQUQoZHBsbF9yZWcpICYgcG9ydF9tYXNrLCBleHBlY3RlZF9tYXNrKTsK PiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgaXJvbmxha2VfZW5hYmxlX3BjaF90cmFuc2Nv ZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IEBAIC00NDgyLDcgKzQ0 ODMsNyBAQCBpbnRlbF90cmFuc19kcF9wb3J0X3NlbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiA+ICAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgJmNydGMtPmJhc2UsIGVuY29kZXIp IHsKPiA+ICAJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUCB8fAo+ID4gIAkJ ICAgIGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+IC0JCQlyZXR1cm4gZW5j X3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKS0+cG9ydDsKPiA+ICsJCQlyZXR1cm4gZW5jb2Rl ci0+cG9ydDsKPiA+ICAJfQo+ID4gIAo+ID4gIAlyZXR1cm4gLTE7Cj4gPiBAQCAtNzYzMyw3ICs3 NjM0LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfaW5pdF9wY2hfcmVmY2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICAJCQlicmVhazsKPiA+ICAJCWNhc2UgSU5URUxf T1VUUFVUX0VEUDoKPiA+ICAJCQloYXNfcGFuZWwgPSB0cnVlOwo+ID4gLQkJCWlmIChlbmNfdG9f ZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpLT5wb3J0ID09IFBPUlRfQSkKPiA+ICsJCQlpZiAoZW5j b2Rlci0+cG9ydCA9PSBQT1JUX0EpCj4gPiAgCQkJCWhhc19jcHVfZWRwID0gdHJ1ZTsKPiA+ICAJ CQlicmVhazsKPiA+ICAJCWRlZmF1bHQ6Cj4gPiBAQCAtMTA3NTYsNyArMTA3NTcsNyBAQCBzdGF0 aWMgYm9vbCBjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiA+ICAJCWNhc2UgSU5URUxfT1VUUFVUX0RQOgo+ID4gIAkJY2FzZSBJTlRF TF9PVVRQVVRfSERNSToKPiA+ICAJCWNhc2UgSU5URUxfT1VUUFVUX0VEUDoKPiA+IC0JCQlwb3J0 X21hc2sgPSAxIDw8IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSktPnBvcnQ7Cj4gPiAr CQkJcG9ydF9tYXNrID0gMSA8PCBlbmNvZGVyLT5wb3J0Owo+ID4gIAo+ID4gIAkJCS8qIHRoZSBz YW1lIHBvcnQgbXVzdG4ndCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgKi8KPiA+ICAJCQlpZiAodXNl ZF9wb3J0cyAmIHBvcnRfbWFzaykKPiA+IEBAIC0xMDc2Niw3ICsxMDc2Nyw3IEBAIHN0YXRpYyBi b29sIGNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+ID4gIAkJCWJyZWFrOwo+ID4gIAkJY2FzZSBJTlRFTF9PVVRQVVRfRFBfTVNUOgo+ ID4gIAkJCXVzZWRfbXN0X3BvcnRzIHw9Cj4gPiAtCQkJCTEgPDwgZW5jX3RvX21zdCgmZW5jb2Rl ci0+YmFzZSktPnByaW1hcnktPnBvcnQ7Cj4gPiArCQkJCTEgPDwgZW5jb2Rlci0+cG9ydDsKPiA+ ICAJCQlicmVhazsKPiA+ICAJCWRlZmF1bHQ6Cj4gPiAgCQkJYnJlYWs7Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKPiA+IGluZGV4IDAxNTFjOGQxOGI3OS4uYjgxNTM1ZmRlZjFkIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTIyMyw3ICsyMjMsNyBAQCBpbnRlbF9k cF9zZXRfc291cmNlX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgewo+ID4g IAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gZGlnX3Bv cnQtPnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBwb3J0ID0gZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+ ICAJY29uc3QgaW50ICpzb3VyY2VfcmF0ZXM7Cj4gPiAgCWludCBzaXplOwo+ID4gIAl1MzIgdm9s dGFnZTsKPiA+IEBAIC00NzksMTEgKzQ3OSwxMSBAQCB2bHZfcG93ZXJfc2VxdWVuY2VyX2tpY2so c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAKPiA+ICAJaWYgKFdBUk4oSTkxNV9SRUFE KGludGVsX2RwLT5vdXRwdXRfcmVnKSAmIERQX1BPUlRfRU4sCj4gPiAgCQkgInNraXBwaW5nIHBp cGUgJWMgcG93ZXIgc2VxZXVuY2VyIGtpY2sgZHVlIHRvIHBvcnQgJWMgYmVpbmcgYWN0aXZlXG4i LAo+ID4gLQkJIHBpcGVfbmFtZShwaXBlKSwgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5wb3J0 KSkpCj4gPiArCQkgcGlwZV9uYW1lKHBpcGUpLCBwb3J0X25hbWUoaW50ZWxfZGlnX3BvcnQtPmJh c2UucG9ydCkpKQo+ID4gIAkJcmV0dXJuOwo+ID4gIAo+ID4gIAlEUk1fREVCVUdfS01TKCJraWNr aW5nIHBpcGUgJWMgcG93ZXIgc2VxdWVuY2VyIGZvciBwb3J0ICVjXG4iLAo+ID4gLQkJICAgICAg cGlwZV9uYW1lKHBpcGUpLCBwb3J0X25hbWUoaW50ZWxfZGlnX3BvcnQtPnBvcnQpKTsKPiA+ICsJ CSAgICAgIHBpcGVfbmFtZShwaXBlKSwgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5iYXNlLnBv cnQpKTsKPiA+ICAKPiA+ICAJLyogUHJlc2VydmUgdGhlIEJJT1MtY29tcHV0ZWQgZGV0ZWN0ZWQg Yml0LiBUaGlzIGlzCj4gPiAgCSAqIHN1cHBvc2VkIHRvIGJlIHJlYWQtb25seS4KPiA+IEBAIC02 MTAsNyArNjEwLDcgQEAgdmx2X3Bvd2VyX3NlcXVlbmNlcl9waXBlKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCj4gPiAgCj4gPiAgCURSTV9ERUJVR19LTVMoInBpY2tlZCBwaXBlICVjIHBvd2Vy IHNlcXVlbmNlciBmb3IgcG9ydCAlY1xuIiwKPiA+ICAJCSAgICAgIHBpcGVfbmFtZShpbnRlbF9k cC0+cHBzX3BpcGUpLAo+ID4gLQkJICAgICAgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5wb3J0 KSk7Cj4gPiArCQkgICAgICBwb3J0X25hbWUoaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydCkpOwo+ ID4gIAo+ID4gIAkvKiBpbml0IHBvd2VyIHNlcXVlbmNlciBvbiB0aGlzIHBpcGUgYW5kIHBvcnQg Ki8KPiA+ICAJaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoZGV2LCBpbnRlbF9k cCk7Cj4gPiBAQCAtNzA2LDcgKzcwNiw3IEBAIHZsdl9pbml0aWFsX3Bvd2VyX3NlcXVlbmNlcl9z ZXR1cChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4g PiAtCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gPiArCWVudW0gcG9y dCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+ICAKPiA+ICAJbG9ja2RlcF9h c3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4gPiAgCj4gPiBAQCAtOTY2LDcgKzk2 Niw3IEBAIHN0YXRpYyB1aW50MzJfdCBpbGtfZ2V0X2F1eF9jbG9ja19kaXZpZGVyKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIGludCBpbmRleCkKPiA+ICAJICogbGlrZSB0byBydW4gYXQgMk1I ei4gIFNvLCB0YWtlIHRoZSBjZGNsayBvciBQQ0ggcmF3Y2xrIHZhbHVlIGFuZAo+ID4gIAkgKiBk aXZpZGUgYnkgMjAwMCBhbmQgdXNlIHRoYXQKPiA+ICAJICovCj4gPiAtCWlmIChpbnRlbF9kaWdf cG9ydC0+cG9ydCA9PSBQT1JUX0EpCj4gPiArCWlmIChpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0 ID09IFBPUlRfQSkKPiA+ICAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChkZXZfcHJpdi0+Y2Rj bGsuaHcuY2RjbGssIDIwMDApOwo+ID4gIAllbHNlCj4gPiAgCQlyZXR1cm4gRElWX1JPVU5EX0NM T1NFU1QoZGV2X3ByaXYtPnJhd2Nsa19mcmVxLCAyMDAwKTsKPiA+IEBAIC05NzcsNyArOTc3LDcg QEAgc3RhdGljIHVpbnQzMl90IGhzd19nZXRfYXV4X2Nsb2NrX2RpdmlkZXIoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgaW50IGluZGV4KQo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kaWdfcG9ydC0+YmFz ZS5iYXNlLmRldik7Cj4gPiAgCj4gPiAtCWlmIChpbnRlbF9kaWdfcG9ydC0+cG9ydCAhPSBQT1JU X0EgJiYgSEFTX1BDSF9MUFRfSChkZXZfcHJpdikpIHsKPiA+ICsJaWYgKGludGVsX2RpZ19wb3J0 LT5iYXNlLnBvcnQgIT0gUE9SVF9BICYmIEhBU19QQ0hfTFBUX0goZGV2X3ByaXYpKSB7Cj4gPiAg CQkvKiBXb3JrYXJvdW5kIGZvciBub24tVUxUIEhTVyAqLwo+ID4gIAkJc3dpdGNoIChpbmRleCkg ewo+ID4gIAkJY2FzZSAwOiByZXR1cm4gNjM7Cj4gPiBAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfYXV4X3JlZ19pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g PiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGlu dGVsX2RwX3RvX2RldihpbnRlbF9kcCkpOwo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2F1 eF9wb3J0KGRldl9wcml2LAo+ID4gLQkJCQkJZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0 KTsKPiA+ICsJCQkJCWRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5wb3J0KTsKPiA+ICAJ aW50IGk7Cj4gPiAgCj4gPiAgCWludGVsX2RwLT5hdXhfY2hfY3RsX3JlZyA9IGludGVsX2F1eF9j dGxfcmVnKGRldl9wcml2LCBwb3J0KTsKPiA+IEBAIC0xNDY1LDcgKzE0NjUsNyBAQCBzdGF0aWMg dm9pZAo+ID4gIGludGVsX2RwX2F1eF9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g PiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRw X3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdf cG9ydC0+cG9ydDsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5w b3J0Owo+ID4gIAo+ID4gIAlpbnRlbF9hdXhfcmVnX2luaXQoaW50ZWxfZHApOwo+ID4gIAlkcm1f ZHBfYXV4X2luaXQoJmludGVsX2RwLT5hdXgpOwo+ID4gQEAgLTE2MzUsNyArMTYzNSw3IEBAIGlu dGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJh c2UuZGV2KTsKPiA+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAm cGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiA+ICAJc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAtCWVudW0gcG9y dCBwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ID4gKwllbnVtIHBvcnQg cG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5wb3J0Owo+IAo+IGVuY29kZXIt PnBvcnQgCj4gCj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiA+ICAJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiA+ICAJ c3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0K PiA+IEBAIC0xODU5LDcgKzE4NTksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVu Y190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGRwX3Rv X2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5wb3J0Owo+IAo+IFNhbWUgaGVyZS4KPiA+ICAJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNy dGMpOwo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gIAo+ID4gQEAgLTIwNzQsNyAr MjA3NCw3IEBAIHN0YXRpYyBib29sIGVkcF9wYW5lbF92ZGRfb24oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGludGVsX2Rw LT5hdXhfcG93ZXJfZG9tYWluKTsKPiA+ICAKPiA+ICAJRFJNX0RFQlVHX0tNUygiVHVybmluZyBl RFAgcG9ydCAlYyBWREQgb25cbiIsCj4gPiAtCQkgICAgICBwb3J0X25hbWUoaW50ZWxfZGlnX3Bv cnQtPnBvcnQpKTsKPiA+ICsJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdfcG9ydC0+YmFzZS5w b3J0KSk7Cj4gPiAgCj4gPiAgCWlmICghZWRwX2hhdmVfcGFuZWxfcG93ZXIoaW50ZWxfZHApKQo+ ID4gIAkJd2FpdF9wYW5lbF9wb3dlcl9jeWNsZShpbnRlbF9kcCk7Cj4gPiBAQCAtMjA5NCw3ICsy MDk0LDcgQEAgc3RhdGljIGJvb2wgZWRwX3BhbmVsX3ZkZF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ID4gIAkgKi8KPiA+ICAJaWYgKCFlZHBfaGF2ZV9wYW5lbF9wb3dlcihpbnRlbF9k cCkpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoImVEUCBwb3J0ICVjIHBhbmVsIHBvd2VyIHdhc24n dCBlbmFibGVkXG4iLAo+ID4gLQkJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdfcG9ydC0+cG9y dCkpOwo+ID4gKwkJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0KSk7 Cj4gPiAgCQltc2xlZXAoaW50ZWxfZHAtPnBhbmVsX3Bvd2VyX3VwX2RlbGF5KTsKPiA+ICAJfQo+ ID4gIAo+ID4gQEAgLTIxMjAsNyArMjEyMCw3IEBAIHZvaWQgaW50ZWxfZWRwX3BhbmVsX3ZkZF9v bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gIAlwcHNfdW5sb2NrKGludGVsX2RwKTsK PiA+ICAKPiA+ICAJSTkxNV9TVEFURV9XQVJOKCF2ZGQsICJlRFAgcG9ydCAlYyBWREQgYWxyZWFk eSByZXF1ZXN0ZWQgb25cbiIsCj4gPiAtCSAgICAgcG9ydF9uYW1lKGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKS0+cG9ydCkpOwo+ID4gKwkgICAgIHBvcnRfbmFtZShkcF90b19kaWdfcG9ydChpbnRl bF9kcCktPmJhc2UucG9ydCkpOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBlZHBfcGFu ZWxfdmRkX29mZl9zeW5jKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiBAQCAtMjE0MCw3 ICsyMTQwLDcgQEAgc3RhdGljIHZvaWQgZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ID4gIAkJcmV0dXJuOwo+ID4gIAo+ID4gIAlEUk1fREVCVUdfS01T KCJUdXJuaW5nIGVEUCBwb3J0ICVjIFZERCBvZmZcbiIsCj4gPiAtCQkgICAgICBwb3J0X25hbWUo aW50ZWxfZGlnX3BvcnQtPnBvcnQpKTsKPiA+ICsJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdf cG9ydC0+YmFzZS5wb3J0KSk7Cj4gPiAgCj4gPiAgCXBwID0gaXJvbmxha2VfZ2V0X3BwX2NvbnRy b2woaW50ZWxfZHApOwo+ID4gIAlwcCAmPSB+RURQX0ZPUkNFX1ZERDsKPiA+IEBAIC0yMjAwLDcg KzIyMDAsNyBAQCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxfdmRkX29mZihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCBib29sIHN5bmMpCj4gPiAgCQlyZXR1cm47Cj4gPiAgCj4gPiAgCUk5MTVfU1RB VEVfV0FSTighaW50ZWxfZHAtPndhbnRfcGFuZWxfdmRkLCAiZURQIHBvcnQgJWMgVkREIG5vdCBm b3JjZWQgb24iLAo+ID4gLQkgICAgIHBvcnRfbmFtZShkcF90b19kaWdfcG9ydChpbnRlbF9kcCkt PnBvcnQpKTsKPiA+ICsJICAgICBwb3J0X25hbWUoZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5i YXNlLnBvcnQpKTsKPiA+ICAKPiA+ICAJaW50ZWxfZHAtPndhbnRfcGFuZWxfdmRkID0gZmFsc2U7 Cj4gPiAgCj4gPiBAQCAtMjIyMywxMSArMjIyMywxMSBAQCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxf b24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAJCXJldHVybjsKPiA+ICAKPiA+ICAJ RFJNX0RFQlVHX0tNUygiVHVybiBlRFAgcG9ydCAlYyBwYW5lbCBwb3dlciBvblxuIiwKPiA+IC0J CSAgICAgIHBvcnRfbmFtZShkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPnBvcnQpKTsKPiA+ICsJ CSAgICAgIHBvcnRfbmFtZShkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9ydCkpOwo+ ID4gIAo+ID4gIAlpZiAoV0FSTihlZHBfaGF2ZV9wYW5lbF9wb3dlcihpbnRlbF9kcCksCj4gPiAg CQkgImVEUCBwb3J0ICVjIHBhbmVsIHBvd2VyIGFscmVhZHkgb25cbiIsCj4gPiAtCQkgcG9ydF9u YW1lKGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+cG9ydCkpKQo+ID4gKwkJIHBvcnRfbmFtZShk cF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9ydCkpKQo+ID4gIAkJcmV0dXJuOwo+ID4g IAo+ID4gIAl3YWl0X3BhbmVsX3Bvd2VyX2N5Y2xlKGludGVsX2RwKTsKPiA+IEBAIC0yMjgyLDEw ICsyMjgyLDEwIEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vZmYoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiA+ICAJCXJldHVybjsKPiA+ICAKPiA+ICAJRFJNX0RFQlVHX0tNUygiVHVybiBl RFAgcG9ydCAlYyBwYW5lbCBwb3dlciBvZmZcbiIsCj4gPiAtCQkgICAgICBwb3J0X25hbWUoZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0KSk7Cj4gPiArCQkgICAgICBwb3J0X25hbWUoZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLnBvcnQpKTsKPiA+ICAKPiA+ICAJV0FSTighaW50 ZWxfZHAtPndhbnRfcGFuZWxfdmRkLCAiTmVlZCBlRFAgcG9ydCAlYyBWREQgdG8gdHVybiBvZmYg cGFuZWxcbiIsCj4gPiAtCSAgICAgcG9ydF9uYW1lKGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+ cG9ydCkpOwo+ID4gKwkgICAgIHBvcnRfbmFtZShkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJh c2UucG9ydCkpOwo+ID4gIAo+ID4gIAlwcCA9IGlyb25sYWtlX2dldF9wcF9jb250cm9sKGludGVs X2RwKTsKPiA+ICAJLyogV2UgbmVlZCB0byBzd2l0Y2ggb2ZmIHBhbmVsIHBvd2VyIF9hbmRfIGZv cmNlIHZkZCwgZm9yIG90aGVyd2lzZSBzb21lCj4gPiBAQCAtMjQzNyw3ICsyNDM3LDcgQEAgc3Rh dGljIHZvaWQgYXNzZXJ0X2RwX3BvcnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBz dGF0ZSkKPiA+ICAKPiA+ICAJSTkxNV9TVEFURV9XQVJOKGN1cl9zdGF0ZSAhPSBzdGF0ZSwKPiA+ ICAJCQkiRFAgcG9ydCAlYyBzdGF0ZSBhc3NlcnRpb24gZmFpbHVyZSAoZXhwZWN0ZWQgJXMsIGN1 cnJlbnQgJXMpXG4iLAo+ID4gLQkJCXBvcnRfbmFtZShkaWdfcG9ydC0+cG9ydCksCj4gPiArCQkJ cG9ydF9uYW1lKGRpZ19wb3J0LT5iYXNlLnBvcnQpLAo+ID4gIAkJCW9ub2ZmKHN0YXRlKSwgb25v ZmYoY3VyX3N0YXRlKSk7Cj4gPiAgfQo+ID4gICNkZWZpbmUgYXNzZXJ0X2RwX3BvcnRfZGlzYWJs ZWQoZCkgYXNzZXJ0X2RwX3BvcnQoKGQpLCBmYWxzZSkKPiA+IEBAIC0yNTcwLDcgKzI1NzAsNyBA QCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gPiAgCQkJCSAgZW51bSBwaXBlICpwaXBlKQo+ID4gIHsKPiA+ICAJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4g PiAtCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ID4g KwllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5wb3J0Owo+ ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAJdTMy IHRtcDsKPiA+IEBAIC0yNjI1LDcgKzI2MjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAl1MzIgdG1wLCBmbGFn cyA9IDA7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsK PiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ ID4gLQllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+cG9ydDsKPiA+ ICsJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9ydDsK PiA+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmln LT5iYXNlLmNydGMpOwo+ID4gIAo+ID4gIAlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfRURQKQo+ID4gQEAgLTI3OTQsNyArMjc5NCw3IEBAIF9pbnRlbF9kcF9zZXRfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ID4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAt CWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBw b3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+ICAKPiA+ICAJaWYgKGRwX3RyYWlu X3BhdCAmIERQX1RSQUlOSU5HX1BBVFRFUk5fTUFTSykKPiA+ICAJCURSTV9ERUJVR19LTVMoIlVz aW5nIERQIHRyYWluaW5nIHBhdHRlcm4gVFBTJWRcbiIsCj4gPiBAQCAtMjk2OSw3ICsyOTY5LDcg QEAgc3RhdGljIHZvaWQgZzR4X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPiAgCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNv bm5fc3RhdGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBkcF90b19k aWdfcG9ydChpbnRlbF9kcCktPnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApLT5iYXNlLnBvcnQ7Cj4gPiAgCj4gPiAgCWludGVsX2RwX3ByZXBhcmUo ZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ID4gIAo+ID4gQEAgLTMwMDIsNyArMzAwMiw3IEBAIHN0 YXRpYyB2b2lkIHZsdl9kZXRhY2hfcG93ZXJfc2VxdWVuY2VyKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCj4gPiAgCSAqIGZyb20gYSBwb3J0Lgo+ID4gIAkgKi8KPiA+ICAJRFJNX0RFQlVHX0tN UygiZGV0YWNoaW5nIHBpcGUgJWMgcG93ZXIgc2VxdWVuY2VyIGZyb20gcG9ydCAlY1xuIiwKPiA+ IC0JCSAgICAgIHBpcGVfbmFtZShwaXBlKSwgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5wb3J0 KSk7Cj4gPiArCQkgICAgICBwaXBlX25hbWUocGlwZSksIHBvcnRfbmFtZShpbnRlbF9kaWdfcG9y dC0+YmFzZS5wb3J0KSk7Cj4gPiAgCUk5MTVfV1JJVEUocHBfb25fcmVnLCAwKTsKPiA+ICAJUE9T VElOR19SRUFEKHBwX29uX3JlZyk7Cj4gPiAgCj4gPiBAQCAtMzAyNiw3ICszMDI2LDcgQEAgc3Rh dGljIHZvaWQgdmx2X3N0ZWFsX3Bvd2VyX3NlcXVlbmNlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gIAkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxf ZHAoJmVuY29kZXItPmJhc2UpOwo+ID4gLQkJcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2Rw KS0+cG9ydDsKPiA+ICsJCXBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9y dDsKPiA+ICAKPiA+ICAJCVdBUk4oaW50ZWxfZHAtPmFjdGl2ZV9waXBlID09IHBpcGUsCj4gPiAg CQkgICAgICJzdGVhbGluZyBwaXBlICVjIHBvd2VyIHNlcXVlbmNlciBmcm9tIGFjdGl2ZSAoZSlE UCBwb3J0ICVjXG4iLAo+ID4gQEAgLTMxNzgsNyArMzE3OCw3IEBAIHVpbnQ4X3QKPiA+ICBpbnRl bF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gIHsKPiA+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kcF90b19k ZXYoaW50ZWxfZHApKTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCktPnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxf ZHApLT5iYXNlLnBvcnQ7Cj4gPiAgCj4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp IHsKPiA+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKS0+YmFzZTsKPiA+IEBAIC0zMTk3LDcgKzMxOTcsNyBAQCB1aW50OF90Cj4gPiAg aW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50 OF90IHZvbHRhZ2Vfc3dpbmcpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2RwX3RvX2RldihpbnRlbF9kcCkpOwo+ID4gLQllbnVt IHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+cG9ydDsKPiA+ICsJZW51bSBw b3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9ydDsKPiA+ICAKPiA+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ID4gIAkJc3dpdGNoICh2b2x0YWdl X3N3aW5nICYgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLKSB7Cj4gPiBAQCAtMzUzMSw3ICsz NTMxLDcgQEAgdm9pZAo+ID4gIGludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+IC0JZW51bSBwb3J0 IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRl bF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50 ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAJdWludDMyX3Qgc2lnbmFsX2xldmVscywg bWFzayA9IDA7Cj4gPiBAQCAtMzU5MSw3ICszNTkxLDcgQEAgdm9pZCBpbnRlbF9kcF9zZXRfaWRs ZV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgCXN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHAp Owo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFz ZS5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ICsJ ZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gIAl1aW50MzJf dCB2YWw7Cj4gPiAgCj4gPiAgCWlmICghSEFTX0RESShkZXZfcHJpdikpCj4gPiBAQCAtNDQ5MCw3 ICs0NDkwLDcgQEAgc3RhdGljIGJvb2wgaWJ4X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIHsKPiA+ICAJdTMyIGJpdDsKPiA+ICAK PiA+IC0Jc3dpdGNoIChwb3J0LT5wb3J0KSB7Cj4gPiArCXN3aXRjaCAocG9ydC0+YmFzZS5wb3J0 KSB7Cj4gPiAgCWNhc2UgUE9SVF9COgo+ID4gIAkJYml0ID0gU0RFX1BPUlRCX0hPVFBMVUc7Cj4g PiAgCQlicmVhazsKPiA+IEBAIC00NTAxLDcgKzQ1MDEsNyBAQCBzdGF0aWMgYm9vbCBpYnhfZGln aXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiAgCQliaXQgPSBTREVfUE9SVERfSE9UUExVRzsKPiA+ICAJCWJyZWFrOwo+ID4gIAlkZWZhdWx0 Ogo+ID4gLQkJTUlTU0lOR19DQVNFKHBvcnQtPnBvcnQpOwo+ID4gKwkJTUlTU0lOR19DQVNFKHBv cnQtPmJhc2UucG9ydCk7Cj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCX0KPiA+ICAKPiA+IEBA IC00NTEzLDcgKzQ1MTMsNyBAQCBzdGF0aWMgYm9vbCBjcHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3Rl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgewo+ID4gIAl1MzIgYml0 Owo+ID4gIAo+ID4gLQlzd2l0Y2ggKHBvcnQtPnBvcnQpIHsKPiA+ICsJc3dpdGNoIChwb3J0LT5i YXNlLnBvcnQpIHsKPiA+ICAJY2FzZSBQT1JUX0I6Cj4gPiAgCQliaXQgPSBTREVfUE9SVEJfSE9U UExVR19DUFQ7Cj4gPiAgCQlicmVhazsKPiA+IEBAIC00NTI0LDcgKzQ1MjQsNyBAQCBzdGF0aWMg Ym9vbCBjcHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiAgCQliaXQgPSBTREVfUE9SVERfSE9UUExVR19DUFQ7Cj4gPiAgCQlicmVh azsKPiA+ICAJZGVmYXVsdDoKPiA+IC0JCU1JU1NJTkdfQ0FTRShwb3J0LT5wb3J0KTsKPiA+ICsJ CU1JU1NJTkdfQ0FTRShwb3J0LT5iYXNlLnBvcnQpOwo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4g IAl9Cj4gPiAgCj4gPiBAQCAtNDUzNiw3ICs0NTM2LDcgQEAgc3RhdGljIGJvb2wgc3B0X2RpZ2l0 YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4g IHsKPiA+ICAJdTMyIGJpdDsKPiA+ICAKPiA+IC0Jc3dpdGNoIChwb3J0LT5wb3J0KSB7Cj4gPiAr CXN3aXRjaCAocG9ydC0+YmFzZS5wb3J0KSB7Cj4gPiAgCWNhc2UgUE9SVF9BOgo+ID4gIAkJYml0 ID0gU0RFX1BPUlRBX0hPVFBMVUdfU1BUOwo+ID4gIAkJYnJlYWs7Cj4gPiBAQCAtNDU1NSw3ICs0 NTU1LDcgQEAgc3RhdGljIGJvb2wgZzR4X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIHsKPiA+ICAJdTMyIGJpdDsKPiA+ICAKPiA+ IC0Jc3dpdGNoIChwb3J0LT5wb3J0KSB7Cj4gPiArCXN3aXRjaCAocG9ydC0+YmFzZS5wb3J0KSB7 Cj4gPiAgCWNhc2UgUE9SVF9COgo+ID4gIAkJYml0ID0gUE9SVEJfSE9UUExVR19MSVZFX1NUQVRV U19HNFg7Cj4gPiAgCQlicmVhazsKPiA+IEBAIC00NTY2LDcgKzQ1NjYsNyBAQCBzdGF0aWMgYm9v bCBnNHhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiAgCQliaXQgPSBQT1JURF9IT1RQTFVHX0xJVkVfU1RBVFVTX0c0WDsKPiA+ICAJ CWJyZWFrOwo+ID4gIAlkZWZhdWx0Ogo+ID4gLQkJTUlTU0lOR19DQVNFKHBvcnQtPnBvcnQpOwo+ ID4gKwkJTUlTU0lOR19DQVNFKHBvcnQtPmJhc2UucG9ydCk7Cj4gPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gPiAgCX0KPiA+ICAKPiA+IEBAIC00NTc4LDcgKzQ1NzgsNyBAQCBzdGF0aWMgYm9vbCBnbTQ1 X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gIHsKPiA+ICAJdTMyIGJpdDsKPiA+ICAKPiA+IC0Jc3dpdGNoIChwb3J0LT5wb3J0KSB7 Cj4gPiArCXN3aXRjaCAocG9ydC0+YmFzZS5wb3J0KSB7Cj4gPiAgCWNhc2UgUE9SVF9COgo+ID4g IAkJYml0ID0gUE9SVEJfSE9UUExVR19MSVZFX1NUQVRVU19HTTQ1Owo+ID4gIAkJYnJlYWs7Cj4g PiBAQCAtNDU4OSw3ICs0NTg5LDcgQEAgc3RhdGljIGJvb2wgZ200NV9kaWdpdGFsX3BvcnRfY29u bmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCWJpdCA9IFBP UlREX0hPVFBMVUdfTElWRV9TVEFUVVNfR000NTsKPiA+ICAJCWJyZWFrOwo+ID4gIAlkZWZhdWx0 Ogo+ID4gLQkJTUlTU0lOR19DQVNFKHBvcnQtPnBvcnQpOwo+ID4gKwkJTUlTU0lOR19DQVNFKHBv cnQtPmJhc2UucG9ydCk7Cj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCX0KPiA+ICAKPiA+IEBA IC00NTk5LDcgKzQ1OTksNyBAQCBzdGF0aWMgYm9vbCBnbTQ1X2RpZ2l0YWxfcG9ydF9jb25uZWN0 ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIHN0YXRpYyBib29sIGls a19kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKnBvcnQpCj4gPiAg ewo+ID4gLQlpZiAocG9ydC0+cG9ydCA9PSBQT1JUX0EpCj4gPiArCWlmIChwb3J0LT5iYXNlLnBv cnQgPT0gUE9SVF9BKQo+ID4gIAkJcmV0dXJuIEk5MTVfUkVBRChERUlTUikgJiBERV9EUF9BX0hP VFBMVUc7Cj4gPiAgCWVsc2UKPiA+ICAJCXJldHVybiBpYnhfZGlnaXRhbF9wb3J0X2Nvbm5lY3Rl ZChkZXZfcHJpdiwgcG9ydCk7Cj4gPiBAQCAtNDYwOCw3ICs0NjA4LDcgQEAgc3RhdGljIGJvb2wg aWxrX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gIHN0YXRpYyBib29sIHNuYl9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKnBvcnQpCj4gPiAgewo+ID4gLQlpZiAocG9ydC0+cG9ydCA9PSBQT1JUX0Ep Cj4gPiArCWlmIChwb3J0LT5iYXNlLnBvcnQgPT0gUE9SVF9BKQo+ID4gIAkJcmV0dXJuIEk5MTVf UkVBRChERUlTUikgJiBERV9EUF9BX0hPVFBMVUc7Cj4gPiAgCWVsc2UKPiA+ICAJCXJldHVybiBj cHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gPiBAQCAtNDYxNyw3 ICs0NjE3LDcgQEAgc3RhdGljIGJvb2wgc25iX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIHN0YXRpYyBib29sIGl2Yl9kaWdpdGFs X3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJ CQkJICAgICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKnBvcnQpCj4gPiAgewo+ID4gLQlp ZiAocG9ydC0+cG9ydCA9PSBQT1JUX0EpCj4gPiArCWlmIChwb3J0LT5iYXNlLnBvcnQgPT0gUE9S VF9BKQo+ID4gIAkJcmV0dXJuIEk5MTVfUkVBRChERUlTUikgJiBERV9EUF9BX0hPVFBMVUdfSVZC Owo+ID4gIAllbHNlCj4gPiAgCQlyZXR1cm4gY3B0X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2 X3ByaXYsIHBvcnQpOwo+ID4gQEAgLTQ2MjYsNyArNDYyNiw3IEBAIHN0YXRpYyBib29sIGl2Yl9k aWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ICBzdGF0aWMgYm9vbCBiZHdfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpwb3J0KQo+ID4gIHsKPiA+IC0JaWYgKHBvcnQtPnBvcnQgPT0gUE9SVF9BKQo+ID4g KwlpZiAocG9ydC0+YmFzZS5wb3J0ID09IFBPUlRfQSkKPiA+ICAJCXJldHVybiBJOTE1X1JFQUQo R0VOOF9ERV9QT1JUX0lTUikgJiBHRU44X1BPUlRfRFBfQV9IT1RQTFVHOwo+ID4gIAllbHNlCj4g PiAgCQlyZXR1cm4gY3B0X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+ ID4gQEAgLTUxMDksMTIgKzUxMDksMTIgQEAgaW50ZWxfZHBfaHBkX3B1bHNlKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBib29sIGxvbmdfaHBkKQo+ID4gIAkJICog InZkZCBvZmYgLT4gbG9uZyBocGQgLT4gdmRkIG9uIC0+IGRldGVjdCAtPiB2ZGQgb2ZmIC0+IC4u LiIKPiA+ICAJCSAqLwo+ID4gIAkJRFJNX0RFQlVHX0tNUygiaWdub3JpbmcgbG9uZyBocGQgb24g ZURQIHBvcnQgJWNcbiIsCj4gPiAtCQkJICAgICAgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5w b3J0KSk7Cj4gPiArCQkJICAgICAgcG9ydF9uYW1lKGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQp KTsKPiA+ICAJCXJldHVybiBJUlFfSEFORExFRDsKPiA+ICAJfQo+ID4gIAo+ID4gIAlEUk1fREVC VUdfS01TKCJnb3QgaHBkIGlycSBvbiBwb3J0ICVjIC0gJXNcbiIsCj4gPiAtCQkgICAgICBwb3J0 X25hbWUoaW50ZWxfZGlnX3BvcnQtPnBvcnQpLAo+ID4gKwkJICAgICAgcG9ydF9uYW1lKGludGVs X2RpZ19wb3J0LT5iYXNlLnBvcnQpLAo+ID4gIAkJICAgICAgbG9uZ19ocGQgPyAibG9uZyIgOiAi c2hvcnQiKTsKPiA+ICAKPiA+ICAJaWYgKGxvbmdfaHBkKSB7Cj4gPiBAQCAtNTM2NCw3ICs1MzY0 LDcgQEAgaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCXUzMiBwcF9vbiwgcHBfb2ZmLCBwcF9kaXYsIHBvcnRf c2VsID0gMDsKPiA+ICAJaW50IGRpdiA9IGRldl9wcml2LT5yYXdjbGtfZnJlcSAvIDEwMDA7Cj4g PiAgCXN0cnVjdCBwcHNfcmVnaXN0ZXJzIHJlZ3M7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGRwX3Rv X2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5wb3J0Owo+ID4gIAljb25zdCBzdHJ1Y3QgZWRwX3Bv d2VyX3NlcSAqc2VxID0gJmludGVsX2RwLT5wcHNfZGVsYXlzOwo+ID4gIAo+ID4gIAlsb2NrZGVw X2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiA+IEBAIC01OTY1LDkgKzU5NjUs OSBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcl9wb3J0X2luZm8oc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyID0gJmludGVsX2RpZ19wb3J0LT5iYXNlOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKPiA+ICAKPiA+IC0JZW5jb2Rlci0+aHBkX3BpbiA9 IGludGVsX2hwZF9waW4oaW50ZWxfZGlnX3BvcnQtPnBvcnQpOwo+ID4gKwllbmNvZGVyLT5ocGRf cGluID0gaW50ZWxfaHBkX3BpbihlbmNvZGVyLT5wb3J0KTsKPiA+ICAKPiA+IC0Jc3dpdGNoIChp bnRlbF9kaWdfcG9ydC0+cG9ydCkgewo+ID4gKwlzd2l0Y2ggKGVuY29kZXItPnBvcnQpIHsKPiA+ ICAJY2FzZSBQT1JUX0E6Cj4gPiAgCQlpbnRlbF9kcC0+YXV4X3Bvd2VyX2RvbWFpbiA9IFBPV0VS X0RPTUFJTl9BVVhfQTsKPiA+ICAJCWJyZWFrOwo+ID4gQEAgLTU5ODUsNyArNTk4NSw3IEBAIGlu dGVsX2RwX2luaXRfY29ubmVjdG9yX3BvcnRfaW5mbyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCkKPiA+ICAJCWludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluID0gUE9X RVJfRE9NQUlOX0FVWF9EOwo+ID4gIAkJYnJlYWs7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAtCQlNSVNT SU5HX0NBU0UoaW50ZWxfZGlnX3BvcnQtPnBvcnQpOwo+ID4gKwkJTUlTU0lOR19DQVNFKGVuY29k ZXItPnBvcnQpOwo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTYwMjEsNyArNjAyMSw3IEBA IGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAo+ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZp bnRlbF9kaWdfcG9ydC0+YmFzZTsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVs X2VuY29kZXItPmJhc2UuZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQt PnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZW5jb2Rlci0+cG9ydDsKPiA+ICAJ aW50IHR5cGU7Cj4gPiAgCj4gPiAgCS8qIEluaXRpYWxpemUgdGhlIHdvcmsgZm9yIG1vZGVzZXQg aW4gY2FzZSBvZiBsaW5rIHRyYWluIGZhaWx1cmUgKi8KPiA+IEBAIC02MTkxLDcgKzYxOTEsNiBA QCBib29sIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gIAkJaW50ZWxfZW5jb2Rlci0+ZGlzYWJsZSA9IGc0eF9kaXNhYmxlX2RwOwo+ID4gIAl9Cj4g PiAgCj4gPiAtCWludGVsX2RpZ19wb3J0LT5wb3J0ID0gcG9ydDsKPiA+ICAJaW50ZWxfZGlnX3Bv cnQtPmRwLm91dHB1dF9yZWcgPSBvdXRwdXRfcmVnOwo+ID4gIAlpbnRlbF9kaWdfcG9ydC0+bWF4 X2xhbmVzID0gNDsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiBp bmRleCA2NTNjYTM5Nzg5YjguLmMzZGUwOTE4ZWUxMyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYwo+ID4gQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9tc3RfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBpbnRlbF9tc3QtPnBy aW1hcnk7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQt PmRwOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+ cG9ydDsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ ID4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPQo+ID4gIAkJdG9faW50ZWxf Y29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPiAgCWludCByZXQ7Cj4gPiBAQCAt MjUzLDcgKzI1Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9lbmFibGVfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0ID0gaW50ZWxfbXN0LT5wcmltYXJ5Owo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiAtCWVudW0g cG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gPiArCWVudW0gcG9ydCBwb3J0ID0g aW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+ICAJRFJN X0RFQlVHX0tNUygiYWN0aXZlIGxpbmtzICVkXG4iLCBpbnRlbF9kcC0+YWN0aXZlX21zdF9saW5r cyk7Cj4gPiBAQCAtNTUyLDcgKzU1Miw3IEBAIGludGVsX2RwX2NyZWF0ZV9mYWtlX21zdF9lbmNv ZGVyKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBlbnVtCj4gPiAg Cj4gPiAgCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRFBfTVNUOwo+ID4gIAlp bnRlbF9lbmNvZGVyLT5wb3dlcl9kb21haW4gPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3dlcl9k b21haW47Cj4gPiAtCWludGVsX2VuY29kZXItPnBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsK PiA+ICsJaW50ZWxfZW5jb2Rlci0+cG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4g PiAgCWludGVsX2VuY29kZXItPmNydGNfbWFzayA9IDB4NzsKPiA+ICAJaW50ZWxfZW5jb2Rlci0+ Y2xvbmVhYmxlID0gMDsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcGlvX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHku Ywo+ID4gaW5kZXggNGY0YTBiZjEyZjhjLi43MDQwNDFmNzBkOTMgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gPiBAQCAtNTg2LDkgKzU4Niw4IEBAIGJ4dF9k ZGlfcGh5X2NhbGNfbGFuZV9sYXRfb3B0aW1fbWFzayh1aW50OF90IGxhbmVfY291bnQpCj4gPiAg dm9pZCBieHRfZGRpX3BoeV9zZXRfbGFuZV9vcHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4gIAkJCQkgICAgIHVpbnQ4X3QgbGFuZV9sYXRfb3B0aW1fbWFzaykKPiA+ ICB7Cj4gPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRwb3J0ID0gZW5jX3RvX2RpZ19w b3J0KCZlbmNvZGVyLT5iYXNlKTsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiAtCWVudW0gcG9ydCBwb3J0 ID0gZHBvcnQtPnBvcnQ7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGVuY29k ZXItPnBvcnQ7Cj4gPiAgCWVudW0gZHBpb19waHkgcGh5Owo+ID4gIAllbnVtIGRwaW9fY2hhbm5l bCBjaDsKPiA+ICAJaW50IGxhbmU7Cj4gPiBAQCAtNjEzLDkgKzYxMiw4IEBAIHZvaWQgYnh0X2Rk aV9waHlfc2V0X2xhbmVfb3B0aW1fbWFzayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiA+ICB1aW50OF90Cj4gPiAgYnh0X2RkaV9waHlfZ2V0X2xhbmVfbGF0X29wdGltX21hc2soc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZHBvcnQtPmJhc2Uu YmFzZS5kZXYpOwo+ID4gLQllbnVtIHBvcnQgcG9ydCA9IGRwb3J0LT5wb3J0Owo+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ID4gIAllbnVtIGRwaW9f cGh5IHBoeTsKPiA+ICAJZW51bSBkcGlvX2NoYW5uZWwgY2g7Cj4gPiAgCWludCBsYW5lOwo+ID4g QEAgLTY0MSw3ICs2MzksNyBAQCB2b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gIAlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFz ZSk7Cj4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhk cG9ydC0+YmFzZS5iYXNlLmNydGMpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiA+ICAJZW51bSBkcGlvX2No YW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7Cj4gPiAgCWVudW0gcGlwZSBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ICAJdTMyIHZhbDsKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiBpbmRleCAwMGI0ODg2ODgwNDIuLmEwYTVjZWFkODY4YyAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTEwNTYsNyArMTA1Niw2IEBAIHN0cnVj dCBpbnRlbF9sc3Bjb24gewo+ID4gIAo+ID4gIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewo+ ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciBiYXNlOwo+ID4gLQllbnVtIHBvcnQgcG9ydDsKPiA+ ICAJdTMyIHNhdmVkX3BvcnRfYml0czsKPiA+ICAJc3RydWN0IGludGVsX2RwIGRwOwo+ID4gIAlz dHJ1Y3QgaW50ZWxfaGRtaSBoZG1pOwo+ID4gQEAgLTEwODgsNyArMTA4Nyw3IEBAIHN0cnVjdCBp bnRlbF9kcF9tc3RfZW5jb2RlciB7Cj4gPiAgc3RhdGljIGlubGluZSBlbnVtIGRwaW9fY2hhbm5l bAo+ID4gIHZsdl9kcG9ydF90b19jaGFubmVsKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRw b3J0KQo+ID4gIHsKPiA+IC0Jc3dpdGNoIChkcG9ydC0+cG9ydCkgewo+ID4gKwlzd2l0Y2ggKGRw b3J0LT5iYXNlLnBvcnQpIHsKPiA+ICAJY2FzZSBQT1JUX0I6Cj4gPiAgCWNhc2UgUE9SVF9EOgo+ ID4gIAkJcmV0dXJuIERQSU9fQ0gwOwo+ID4gQEAgLTExMDIsNyArMTEwMSw3IEBAIHZsdl9kcG9y dF90b19jaGFubmVsKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRwb3J0KQo+ID4gIHN0YXRp YyBpbmxpbmUgZW51bSBkcGlvX3BoeQo+ID4gIHZsdl9kcG9ydF90b19waHkoc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqZHBvcnQpCj4gPiAgewo+ID4gLQlzd2l0Y2ggKGRwb3J0LT5wb3J0KSB7 Cj4gPiArCXN3aXRjaCAoZHBvcnQtPmJhc2UucG9ydCkgewo+ID4gIAljYXNlIFBPUlRfQjoKPiA+ ICAJY2FzZSBQT1JUX0M6Cj4gPiAgCQlyZXR1cm4gRFBJT19QSFkwOwo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYwo+ID4gaW5kZXggMWYyMjU4ZGVjMDllLi4yZDk1ZGI2NGNkZjIgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gQEAgLTE4Niw3ICsxODYsNyBAQCBz dGF0aWMgYm9vbCBnNHhfaW5mb2ZyYW1lX2VuYWJsZWQoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLAo+ID4gIAlpZiAoKHZhbCAmIFZJREVPX0RJUF9FTkFCTEUpID09IDApCj4gPiAgCQlyZXR1 cm4gZmFsc2U7Cj4gPiAgCj4gPiAtCWlmICgodmFsICYgVklERU9fRElQX1BPUlRfTUFTSykgIT0g VklERU9fRElQX1BPUlQoaW50ZWxfZGlnX3BvcnQtPnBvcnQpKQo+ID4gKwlpZiAoKHZhbCAmIFZJ REVPX0RJUF9QT1JUX01BU0spICE9IFZJREVPX0RJUF9QT1JUKGludGVsX2RpZ19wb3J0LT5iYXNl LnBvcnQpKQo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAo+ID4gIAlyZXR1cm4gdmFsICYgKFZJ REVPX0RJUF9FTkFCTEVfQVZJIHwKPiA+IEBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wg aWJ4X2luZm9mcmFtZV9lbmFibGVkKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJ aWYgKCh2YWwgJiBWSURFT19ESVBfRU5BQkxFKSA9PSAwKQo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ ID4gIAo+ID4gLQlpZiAoKHZhbCAmIFZJREVPX0RJUF9QT1JUX01BU0spICE9IFZJREVPX0RJUF9Q T1JUKGludGVsX2RpZ19wb3J0LT5wb3J0KSkKPiA+ICsJaWYgKCh2YWwgJiBWSURFT19ESVBfUE9S VF9NQVNLKSAhPSBWSURFT19ESVBfUE9SVChpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0KSkKPiA+ ICAJCXJldHVybiBmYWxzZTsKPiA+ICAKPiA+ICAJcmV0dXJuIHZhbCAmIChWSURFT19ESVBfRU5B QkxFX0FWSSB8Cj4gPiBAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBib29sIHZsdl9pbmZvZnJh bWVfZW5hYmxlZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCWlmICgodmFsICYg VklERU9fRElQX0VOQUJMRSkgPT0gMCkKPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ICAKPiA+IC0J aWYgKCh2YWwgJiBWSURFT19ESVBfUE9SVF9NQVNLKSAhPSBWSURFT19ESVBfUE9SVChpbnRlbF9k aWdfcG9ydC0+cG9ydCkpCj4gPiArCWlmICgodmFsICYgVklERU9fRElQX1BPUlRfTUFTSykgIT0g VklERU9fRElQX1BPUlQoaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydCkpCj4gPiAgCQlyZXR1cm4g ZmFsc2U7Cj4gPiAgCj4gPiAgCXJldHVybiB2YWwgJiAoVklERU9fRElQX0VOQUJMRV9BVkkgfAo+ ID4gQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0aWMgdm9pZCBnNHhfc2V0X2luZm9mcmFtZXMoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxf aGRtaSA9ICZpbnRlbF9kaWdfcG9ydC0+aGRtaTsKPiA+ICAJaTkxNV9yZWdfdCByZWcgPSBWSURF T19ESVBfQ1RMOwo+ID4gIAl1MzIgdmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4gPiAtCXUzMiBwb3J0 ID0gVklERU9fRElQX1BPUlQoaW50ZWxfZGlnX3BvcnQtPnBvcnQpOwo+ID4gKwl1MzIgcG9ydCA9 IFZJREVPX0RJUF9QT1JUKGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQpOwo+ID4gIAo+ID4gIAlh c3NlcnRfaGRtaV9wb3J0X2Rpc2FibGVkKGludGVsX2hkbWkpOwo+ID4gIAo+ID4gQEAgLTY4Niw3 ICs2ODYsNyBAQCBzdGF0aWMgdm9pZCBpYnhfc2V0X2luZm9mcmFtZXMoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyLAo+ID4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9ICZpbnRl bF9kaWdfcG9ydC0+aGRtaTsKPiA+ICAJaTkxNV9yZWdfdCByZWcgPSBUVklERU9fRElQX0NUTChp bnRlbF9jcnRjLT5waXBlKTsKPiA+ICAJdTMyIHZhbCA9IEk5MTVfUkVBRChyZWcpOwo+ID4gLQl1 MzIgcG9ydCA9IFZJREVPX0RJUF9QT1JUKGludGVsX2RpZ19wb3J0LT5wb3J0KTsKPiA+ICsJdTMy IHBvcnQgPSBWSURFT19ESVBfUE9SVChpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0KTsKPiA+ICAK PiA+ICAJYXNzZXJ0X2hkbWlfcG9ydF9kaXNhYmxlZChpbnRlbF9oZG1pKTsKPiA+ICAKPiA+IEBA IC03ODIsNyArNzgyLDcgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkg PSBlbmNfdG9faW50ZWxfaGRtaShlbmNvZGVyKTsKPiA+ICAJaTkxNV9yZWdfdCByZWcgPSBWTFZf VFZJREVPX0RJUF9DVEwoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gPiAgCXUzMiB2YWwgPSBJOTE1X1JF QUQocmVnKTsKPiA+IC0JdTMyIHBvcnQgPSBWSURFT19ESVBfUE9SVChpbnRlbF9kaWdfcG9ydC0+ cG9ydCk7Cj4gPiArCXUzMiBwb3J0ID0gVklERU9fRElQX1BPUlQoaW50ZWxfZGlnX3BvcnQtPmJh c2UucG9ydCk7Cj4gPiAgCj4gPiAgCWFzc2VydF9oZG1pX3BvcnRfZGlzYWJsZWQoaW50ZWxfaGRt aSk7Cj4gPiAgCj4gPiBAQCAtMTU0NSw3ICsxNTQ1LDcgQEAgaW50ZWxfaGRtaV9kcF9kdWFsX21v ZGVfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgaGFzX2VkaWQp Cj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+ZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2hkbWkgKmhkbWkgPSBpbnRlbF9h dHRhY2hlZF9oZG1pKGNvbm5lY3Rvcik7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gaGRtaV90b19k aWdfcG9ydChoZG1pKS0+cG9ydDsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBoZG1pX3RvX2RpZ19w b3J0KGhkbWkpLT5iYXNlLnBvcnQ7Cj4gPiAgCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9 Cj4gPiAgCQlpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihkZXZfcHJpdiwgaGRtaS0+ZGRjX2J1cyk7 Cj4gPiAgCWVudW0gZHJtX2RwX2R1YWxfbW9kZV90eXBlIHR5cGUgPSBkcm1fZHBfZHVhbF9tb2Rl X2RldGVjdChhZGFwdGVyKTsKPiA+IEBAIC0yMDE1LDcgKzIwMTUsNyBAQCB2b2lkIGludGVsX2hk bWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCj4gPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2Rp Z19wb3J0LT5iYXNlOwo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZW5jb2Rl ci0+YmFzZS5kZXY7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsK PiA+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9lbmNvZGVyLT5wb3J0Owo+ID4gIAo+ID4gIAlE Uk1fREVCVUdfS01TKCJBZGRpbmcgSERNSSBjb25uZWN0b3Igb24gcG9ydCAlY1xuIiwKPiA+ICAJ CSAgICAgIHBvcnRfbmFtZShwb3J0KSk7Cj4gPiBAQCAtMjEzNSw3ICsyMTM1LDYgQEAgdm9pZCBp bnRlbF9oZG1pX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAlp ZiAoSVNfRzRYKGRldl9wcml2KSkKPiA+ICAJCWludGVsX2VuY29kZXItPmNsb25lYWJsZSB8PSAx IDw8IElOVEVMX09VVFBVVF9IRE1JOwo+ID4gIAo+ID4gLQlpbnRlbF9kaWdfcG9ydC0+cG9ydCA9 IHBvcnQ7Cj4gPiAgCWludGVsX2RpZ19wb3J0LT5oZG1pLmhkbWlfcmVnID0gaGRtaV9yZWc7Cj4g PiAgCWludGVsX2RpZ19wb3J0LT5kcC5vdXRwdXRfcmVnID0gSU5WQUxJRF9NTUlPX1JFRzsKPiA+ ICAJaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA9IDQ7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BpcGVfY3JjLmMKPiA+IGluZGV4IDg5OTgzOWYyZjdjNi4uNjE2NDFkNDc5YjkzIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ID4gQEAgLTI2OSw3ICsy NjksNyBAQCBzdGF0aWMgaW50IGk5eHhfcGlwZV9jcmNfYXV0b19zb3VyY2Uoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAkJY2FzZSBJTlRFTF9PVVRQVVRfRFA6Cj4gPiAg CQljYXNlIElOVEVMX09VVFBVVF9FRFA6Cj4gPiAgCQkJZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3Bv cnQoJmVuY29kZXItPmJhc2UpOwo+IFRoaXMgY2FuIGJlIGVsaW1pbmF0ZWQuCj4gPiAtCQkJc3dp dGNoIChkaWdfcG9ydC0+cG9ydCkgewo+ID4gKwkJCXN3aXRjaCAoZGlnX3BvcnQtPmJhc2UucG9y dCkgewo+ID4gIAkJCWNhc2UgUE9SVF9COgo+ID4gIAkJCQkqc291cmNlID0gSU5URUxfUElQRV9D UkNfU09VUkNFX0RQX0I7Cj4gPiAgCQkJCWJyZWFrOwo+ID4gQEAgLTI4MSw3ICsyODEsNyBAQCBz dGF0aWMgaW50IGk5eHhfcGlwZV9jcmNfYXV0b19zb3VyY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gIAkJCQlicmVhazsKPiA+ICAJCQlkZWZhdWx0Ogo+ID4gIAkJCQlX QVJOKDEsICJub25leGlzdGluZyBEUCBwb3J0ICVjXG4iLAo+ID4gLQkJCQkgICAgIHBvcnRfbmFt ZShkaWdfcG9ydC0+cG9ydCkpOwo+ID4gKwkJCQkgICAgIHBvcnRfbmFtZShkaWdfcG9ydC0+YmFz ZS5wb3J0KSk7Cj4gPiAgCQkJCWJyZWFrOwo+ID4gIAkJCX0KPiA+ICAJCQlicmVhazsKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gPiBpbmRleCA2ZTNiNDMwZmNjZGMuLmExYWQ4NWZhNWMx YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ID4gQEAgLTE2Myw3ICsxNjMs NyBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCj4gPiAgCQlbM10gPSAxIC0gMSwKPiA+ICAJCVs0XSA9IERQX1NFVF9QT1dFUl9EMCwK PiA+ICAJfTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+cG9ydDsKPiA+ICsJZW51 bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gIAl1MzIgYXV4X2N0bDsKPiA+ ICAJaW50IGk7Cj4gPiAgCj4gPiBAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgaW50ZWxfcHNyX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCSAqIG9uZXMuIFNp bmNlIGJ5IERpc3BsYXkgZGVzaWduIHRyYW5zY29kZXIgRURQIGlzIHRpZWQgdG8gcG9ydCBBCj4g PiAgCSAqIHdlIGNhbiBzYWZlbHkgZXNjYXBlIGJhc2VkIG9uIHRoZSBwb3J0IEEuCj4gPiAgCSAq Lwo+ID4gLQlpZiAoSEFTX0RESShkZXZfcHJpdikgJiYgZGlnX3BvcnQtPnBvcnQgIT0gUE9SVF9B KSB7Cj4gPiArCWlmIChIQVNfRERJKGRldl9wcml2KSAmJiBkaWdfcG9ydC0+YmFzZS5wb3J0ICE9 IFBPUlRfQSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IFBv cnQgbm90IHN1cHBvcnRlZFxuIik7Cj4gPiAgCQlyZXR1cm47Cj4gPiAgCX0KCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=