From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 34/42] drm/i915: get rid of crtc->config in intel_display.c, part 1 Date: Tue, 12 May 2015 12:11:36 +0200 Message-ID: <20150512101136.GP15256@phenom.ffwll.local> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431354318-11995-35-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48]) by gabe.freedesktop.org (Postfix) with ESMTP id 968596E5C2 for ; Tue, 12 May 2015 03:09:16 -0700 (PDT) Received: by wggj6 with SMTP id j6so3209461wgg.3 for ; Tue, 12 May 2015 03:09:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1431354318-11995-35-git-send-email-maarten.lankhorst@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: Maarten Lankhorst Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMTEsIDIwMTUgYXQgMDQ6MjU6MTBQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gUmVtb3ZlZCBzb21lIG9jY3VyZW5jZXMsIHJvdWdobHkgYmFzZWQgb24gd2hl cmUgdGhlIGVycm9ycyBvZgo+IHJlbW92aW5nIGNydGMtPmNvbmZpZyBvY2N1cmVkLiBCZWNhdXNl IGl0J3MgdXNlZCBhIGxvdCBpbiB0aGlzCj4gZmlsZSB0aGUgY2hhbmdlcyBhcmUgZG9uZSBpbiBw YXNzZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIHwgMjA1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgNCArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAgIDIgKy0KPiAgMyBmaWxlcyBjaGFuZ2Vk LCAxMDUgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAwMDQwNjdiZDBiNmMuLmZiMmVjYjY1YWFhYSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTE0MSwyOSArMTE0MSwy MCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZHNpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGJvb2wgc3RhdGUpCj4gICNkZWZpbmUgYXNzZXJ0X2RzaV9wbGxfZW5hYmxlZChk KSBhc3NlcnRfZHNpX3BsbChkLCB0cnVlKQo+ICAjZGVmaW5lIGFzc2VydF9kc2lfcGxsX2Rpc2Fi bGVkKGQpIGFzc2VydF9kc2lfcGxsKGQsIGZhbHNlKQo+ICAKPiAtc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICoKPiAtaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+ YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+IC0KPiAtCWlmIChjcnRjLT5jb25maWctPnNoYXJlZF9k cGxsIDwgMCkKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4gLQlyZXR1cm4gJmRldl9wcml2LT5zaGFy ZWRfZHBsbHNbY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbF07Cj4gLX0KPiAtCj4gIC8qIEZvciBJ TEsrICovCj4gIHZvaWQgYXNzZXJ0X3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAtCQkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwsCj4gKwkJCWVu dW0gaW50ZWxfZHBsbF9pZCBzaGFyZWRfZHBsbCwKPiAgCQkJYm9vbCBzdGF0ZSkKPiAgewo+IC0J Ym9vbCBjdXJfc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSBod19zdGF0ZTsK PiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICsJYm9vbCBjdXJfc3RhdGU7Cj4g IAo+IC0JaWYgKFdBUk4gKCFwbGwsCj4gKwlpZiAoV0FSTihzaGFyZWRfZHBsbCA8IDAsCj4gIAkJ ICAiYXNzZXJ0aW5nIERQTEwgJXMgd2l0aCBubyBEUExMXG4iLCBzdGF0ZV9zdHJpbmcoc3RhdGUp KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICsJcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbc2hh cmVkX2RwbGxdOwo+ICAJY3VyX3N0YXRlID0gcGxsLT5nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBs bCwgJmh3X3N0YXRlKTsKPiAgCUk5MTVfU1RBVEVfV0FSTihjdXJfc3RhdGUgIT0gc3RhdGUsCj4g IAkgICAgICIlcyBhc3NlcnRpb24gZmFpbHVyZSAoZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4i LAo+IEBAIC0xNjkxLDcgKzE2ODIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaQo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWludCByZWcgPSBEUExM KGNydGMtPnBpcGUpOwo+IC0JdTMyIGRwbGwgPSBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUu ZHBsbDsKPiArCXUzMiBkcGxsID0gcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbDsKCkxv dHMgb2YgeW91ciBwYXRjaGVzIGFyZSBzcHJpbmtsZWQgd2l0aCB1bnJlbGF0ZWQgY3J0Yy0+Y29u ZmlnIC0+CnBpcGVfY29uZmlnIGNvbnZlcnNpb25zLiBPciBqdXN0IHBsYWluIHJvbGxpbmcgb3V0 IG9mIGEgbG9jYWwgdmFyaWFibGUKaW5zdGVhZCBvZiBhY2Nlc3Npbmcgc29tZSBvdGhlciBwb2lu dGVyLiBUaGF0IG1ha2VzIGl0IGZhaXJseSBoYXJkIHRvCnJldmlldyB0aGVtIGZvciBhIGdpdmVu IHRvcGljIChsaWtlIHNoYXJlZCBkcGxsIGhlcmUpIHNpbmNlIGl0J3MgbmV2ZXIKY2xlYXIgd2hl dGhlciBpdCByZWFsbHkgaW5jbHVkZXMgZXZlcnl0aGluZywgYW5kIHdoYXQncyB0aGUgcmVhc29u IGZvciBhbGwKdGhlIG90aGVyIGh1bmtzLgoKPiAgCj4gIAlhc3NlcnRfcGlwZV9kaXNhYmxlZChk ZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBjcnRjLT5waXBlKTsKPiAgCj4g QEAgLTE3MjEsNyArMTcxMiw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpCj4gIAo+ICAJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiAgCQlJOTE1X1dSSVRFKERQTExfTUQoY3J0 Yy0+cGlwZSksCj4gLQkJCSAgIGNydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsX21kKTsK PiArCQkJICAgcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Cj4gIAl9IGVsc2Ug ewo+ICAJCS8qIFRoZSBwaXhlbCBtdWx0aXBsaWVyIGNhbiBvbmx5IGJlIHVwZGF0ZWQgb25jZSB0 aGUKPiAgCQkgKiBEUExMIGlzIGVuYWJsZWQgYW5kIHRoZSBjbG9ja3MgYXJlIHN0YWJsZS4KPiBA QCAtMTg1OSwyMCArMTg1MCwxOSBAQCB2b2lkIHZsdl93YWl0X3BvcnRfcmVhZHkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSAgICAgcG9ydF9uYW1lKGRwb3J0LT5wb3J0 KSwgSTkxNV9SRUFEKGRwbGxfcmVnKSAmIHBvcnRfbWFzaywgZXhwZWN0ZWRfbWFzayk7Cj4gIH0K PiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gK3N0YXRpYyB2b2lkIGludGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICAgZW51bSBpbnRlbF9k cGxsX2lkIHNoYXJlZF9kcGxsKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSBpbnRlbF9j cnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpOwo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tzaGFyZWRfZHBsbF07CgpXaHkgY2hhbmdlIGFu eXRoaW5nIGhlcmU/IFRoaXMgaXMgY2FsbGVkIGZyb20gZW5hYmxlIGhvb2tzLCBzbyBjYW4ga2Vl cCBvbgphY2Nlc3NpbmcgaW50ZWxfY3J0Yy0+c3RhdGUgLi4uIG9yIG5vdD8KPiAgCj4gLQlpZiAo V0FSTl9PTihwbGwgPT0gTlVMTCkpCj4gKwlpZiAoV0FSTl9PTihzaGFyZWRfZHBsbCA8IDApKQo+ ICAJCXJldHVybjsKPiAgCj4gIAlXQVJOX09OKCFwbGwtPmNvbmZpZy5jcnRjX21hc2spOwo+ICAJ aWYgKHBsbC0+YWN0aXZlID09IDApIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJzZXR0aW5nIHVw ICVzXG4iLCBwbGwtPm5hbWUpOwo+ICAJCVdBUk5fT04ocGxsLT5vbik7Cj4gLQkJYXNzZXJ0X3No YXJlZF9kcGxsX2Rpc2FibGVkKGRldl9wcml2LCBwbGwpOwo+ICsJCWFzc2VydF9zaGFyZWRfZHBs bF9kaXNhYmxlZChkZXZfcHJpdiwgc2hhcmVkX2RwbGwpOwo+ICAKPiAgCQlwbGwtPm1vZGVfc2V0 KGRldl9wcml2LCBwbGwpOwo+ICAJfQo+IEBAIC0xODg2LDI1ICsxODc2LDIzIEBAIHN0YXRpYyB2 b2lkIGludGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4g ICAqIFRoZSBQQ0ggUExMIG5lZWRzIHRvIGJlIGVuYWJsZWQgYmVmb3JlIHRoZSBQQ0ggdHJhbnNj b2Rlciwgc2luY2UgaXQKPiAgICogZHJpdmVzIHRoZSB0cmFuc2NvZGVyIGNsb2NrLgo+ICAgKi8K PiAtc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICBlbnVtIGludGVsX2RwbGxfaWQg c2hhcmVkX2RwbGwpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNl LmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IGludGVsX2NydGNfdG9f c2hhcmVkX2RwbGwoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9ICZk ZXZfcHJpdi0+c2hhcmVkX2RwbGxzW3NoYXJlZF9kcGxsXTsKPiAgCj4gLQlpZiAoV0FSTl9PTihw bGwgPT0gTlVMTCkpCj4gKwlpZiAoV0FSTl9PTihzaGFyZWRfZHBsbCA8IDApKQo+ICAJCXJldHVy bjsKPiAgCj4gIAlpZiAoV0FSTl9PTihwbGwtPmNvbmZpZy5jcnRjX21hc2sgPT0gMCkpCj4gIAkJ cmV0dXJuOwo+ICAKPiAtCURSTV9ERUJVR19LTVMoImVuYWJsZSAlcyAoYWN0aXZlICVkLCBvbj8g JWQpIGZvciBjcnRjICVkXG4iLAo+IC0JCSAgICAgIHBsbC0+bmFtZSwgcGxsLT5hY3RpdmUsIHBs bC0+b24sCj4gLQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkKTsKPiArCURSTV9ERUJVR19LTVMo ImVuYWJsZSAlcyAoYWN0aXZlICVkLCBvbj8gJWQpXG4iLAo+ICsJCSAgICAgIHBsbC0+bmFtZSwg cGxsLT5hY3RpdmUsIHBsbC0+b24pOwo+ICAKPiAgCWlmIChwbGwtPmFjdGl2ZSsrKSB7Cj4gIAkJ V0FSTl9PTighcGxsLT5vbik7Cj4gLQkJYXNzZXJ0X3NoYXJlZF9kcGxsX2VuYWJsZWQoZGV2X3By aXYsIHBsbCk7Cj4gKwkJYXNzZXJ0X3NoYXJlZF9kcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHNoYXJl ZF9kcGxsKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAlXQVJOX09OKHBsbC0+b24pOwo+IEBAIC0x OTE2LDMwICsxOTA0LDI5IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCXBsbC0+b24gPSB0cnVlOwo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICAgIGVudW0gaW50ZWxfZHBsbF9pZCBz aGFyZWRfZHBsbCkKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2Uu ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gaW50ZWxfY3J0Y190b19z aGFyZWRfZHBsbChjcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gJmRl dl9wcml2LT5zaGFyZWRfZHBsbHNbc2hhcmVkX2RwbGxdOwo+ICsKPiArCWlmIChzaGFyZWRfZHBs bCA8IDApCj4gKwkJcmV0dXJuOwo+ICAKPiAgCS8qIFBDSCBvbmx5IGF2YWlsYWJsZSBvbiBJTEsr ICovCj4gLQlCVUdfT04oSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KTsKPiAtCWlmIChXQVJOX09O KHBsbCA9PSBOVUxMKSkKPiAtCSAgICAgICByZXR1cm47Cj4gKwlCVUdfT04oZGV2X3ByaXYtPmlu Zm8uZ2VuIDwgNSk7Cj4gIAo+ICAJaWYgKFdBUk5fT04ocGxsLT5jb25maWcuY3J0Y19tYXNrID09 IDApKQo+ICAJCXJldHVybjsKPiAgCj4gLQlEUk1fREVCVUdfS01TKCJkaXNhYmxlICVzIChhY3Rp dmUgJWQsIG9uPyAlZCkgZm9yIGNydGMgJWRcbiIsCj4gLQkJICAgICAgcGxsLT5uYW1lLCBwbGwt PmFjdGl2ZSwgcGxsLT5vbiwKPiAtCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQpOwo+ICsJRFJN X0RFQlVHX0tNUygiZGlzYWJsZSAlcyAoYWN0aXZlICVkLCBvbj8gJWQpXG4iLAo+ICsJCSAgICAg IHBsbC0+bmFtZSwgcGxsLT5hY3RpdmUsIHBsbC0+b24pOwo+ICAKPiAgCWlmIChXQVJOX09OKHBs bC0+YWN0aXZlID09IDApKSB7Cj4gLQkJYXNzZXJ0X3NoYXJlZF9kcGxsX2Rpc2FibGVkKGRldl9w cml2LCBwbGwpOwo+ICsJCWFzc2VydF9zaGFyZWRfZHBsbF9kaXNhYmxlZChkZXZfcHJpdiwgc2hh cmVkX2RwbGwpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gLQlhc3NlcnRfc2hhcmVkX2RwbGxf ZW5hYmxlZChkZXZfcHJpdiwgcGxsKTsKPiArCWFzc2VydF9zaGFyZWRfZHBsbF9lbmFibGVkKGRl dl9wcml2LCBzaGFyZWRfZHBsbCk7Cj4gIAlXQVJOX09OKCFwbGwtPm9uKTsKPiAgCWlmICgtLXBs bC0+YWN0aXZlKQo+ICAJCXJldHVybjsKPiBAQCAtMTk2NCw4ICsxOTUxLDcgQEAgc3RhdGljIHZv aWQgaXJvbmxha2VfZW5hYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCUJVR19PTighSEFTX1BDSF9TUExJVChkZXYpKTsKPiAgCj4gIAkvKiBN YWtlIHN1cmUgUENIIERQTEwgaXMgZW5hYmxlZCAqLwo+IC0JYXNzZXJ0X3NoYXJlZF9kcGxsX2Vu YWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkgICBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGludGVs X2NydGMpKTsKPiArCWFzc2VydF9zaGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LCBwaXBlX2Nv bmZpZy0+c2hhcmVkX2RwbGwpOwo+ICAKPiAgCS8qIEZESSBtdXN0IGJlIGZlZWRpbmcgdXMgYml0 cyBmb3IgUENIIHBvcnRzICovCj4gIAlhc3NlcnRfZmRpX3R4X2VuYWJsZWQoZGV2X3ByaXYsIHBp cGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciwgcGlwZSk7Cj4gQEAgLTIxMjYsNyArMjExMiw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9waXBlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ICAJCWVsc2UKPiAgCQkJYXNzZXJ0X3BsbF9lbmFibGVkKGRldl9wcml2LCBwaXBlKTsKPiAgCWVs c2Ugewo+IC0JCWlmIChjcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+ICsJCWlmIChw aXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gIAkJCS8qIGlmIGRyaXZpbmcgdGhlIFBD SCwgd2UgbmVlZCBGREkgZW5hYmxlZCAqLwo+ICAJCQlhc3NlcnRfZmRpX3J4X3BsbF9lbmFibGVk KGRldl9wcml2LCBwY2hfdHJhbnNjb2Rlcik7Cj4gIAkJCWFzc2VydF9mZGlfdHhfcGxsX2VuYWJs ZWQoZGV2X3ByaXYsCj4gQEAgLTI2MjIsNiArMjYwOCw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJYm9vbCB2aXNpYmxl ID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52aXNpYmxlOwo+ICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCWludCBwbGFuZSA9IGludGVsX2NydGMt PnBsYW5lOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPiArCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAgCXVuc2lnbmVkIGxvbmcgbGluZWFy X29mZnNldDsKPiAgCXUzMiBkc3BjbnRyOwo+ICAJdTMyIHJlZyA9IERTUENOVFIocGxhbmUpOwo+ IEBAIC0yNjU1LDEzICsyNjQzLDEzIEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSAqIHdoaWNoIHNob3VsZCBhbHdheXMg YmUgdGhlIHVzZXIncyByZXF1ZXN0ZWQgc2l6ZS4KPiAgCQkgKi8KPiAgCQlJOTE1X1dSSVRFKERT UFNJWkUocGxhbmUpLAo+IC0JCQkgICAoKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAt IDEpIDw8IDE2KSB8Cj4gLQkJCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAx KSk7Cj4gKwkJCSAgICgocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKSA8PCAxNikgfAo+ICsJ CQkgICAocGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4gIAkJSTkxNV9XUklURShEU1BQ T1MocGxhbmUpLCAwKTsKPiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYpICYmIHBsYW5l ID09IFBMQU5FX0IpIHsKPiAgCQlJOTE1X1dSSVRFKFBSSU1TSVpFKHBsYW5lKSwKPiAtCQkJICAg KChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSA8PCAxNikgfAo+IC0JCQkgICAo aW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkpOwo+ICsJCQkgICAoKHBpcGVfY29u ZmlnLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiArCQkJICAgKHBpcGVfY29uZmlnLT5waXBl X3NyY193IC0gMSkpOwo+ICAJCUk5MTVfV1JJVEUoUFJJTVBPUyhwbGFuZSksIDApOwo+ICAJCUk5 MTVfV1JJVEUoUFJJTUNOU1RBTFBIQShwbGFuZSksIDApOwo+ICAJfQo+IEBAIC0yNzE5LDE0ICsy NzA3LDE0IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAJaWYgKGNydGMtPnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbiA9PSBC SVQoRFJNX1JPVEFURV8xODApKSB7Cj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfUk9UQVRFXzE4 MDsKPiAgCj4gLQkJeCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSk7Cj4g LQkJeSArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSk7Cj4gKwkJeCArPSAo cGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAxKTsKPiArCQl5ICs9IChwaXBlX2NvbmZpZy0+cGlw ZV9zcmNfaCAtIDEpOwo+ICAKPiAgCQkvKiBGaW5kaW5nIHRoZSBsYXN0IHBpeGVsIG9mIHRoZSBs YXN0IGxpbmUgb2YgdGhlIGRpc3BsYXkKPiAgCQlkYXRhIGFuZCBhZGRpbmcgdG8gbGluZWFyX29m ZnNldCovCj4gIAkJbGluZWFyX29mZnNldCArPQo+IC0JCQkoaW50ZWxfY3J0Yy0+Y29uZmlnLT5w aXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCj4gLQkJCShpbnRlbF9jcnRjLT5jb25m aWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7Cj4gKwkJCShwaXBlX2NvbmZpZy0+cGlw ZV9zcmNfaCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwo+ICsJCQkocGlwZV9jb25maWctPnBpcGVf c3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7CgpVbnJlbGF0ZWQgY2hhbmdlcyBhYm92ZSwgb3IgZG8g SSBtaXNzIHNvbWV0aGluZz8KCj4gIAl9Cj4gIAo+ICAJSTkxNV9XUklURShyZWcsIGRzcGNudHIp Owo+IEBAIC0yODE4LDE3ICsyODA2LDIwIEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCQkgICAgICAgZmItPnBp dGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNl dDsKPiAgCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RB VEVfMTgwKSkgewo+ICsJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9Cj4g KwkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsKPiAgCQlkc3BjbnRyIHw9 IERJU1BQTEFORV9ST1RBVEVfMTgwOwo+ICAKPiAgCQlpZiAoIUlTX0hBU1dFTEwoZGV2KSAmJiAh SVNfQlJPQURXRUxMKGRldikpIHsKPiAtCQkJeCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBl X3NyY193IC0gMSk7Cj4gLQkJCXkgKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAt IDEpOwo+ICsJCQl4ICs9IChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+ICsJCQl5ICs9 IChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOwo+ICAKPiAgCQkJLyogRmluZGluZyB0aGUg bGFzdCBwaXhlbCBvZiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBkaXNwbGF5Cj4gIAkJCWRhdGEgYW5k IGFkZGluZyB0byBsaW5lYXJfb2Zmc2V0Ki8KPiAgCQkJbGluZWFyX29mZnNldCArPQo+IC0JCQkJ KGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwo+ IC0JCQkJKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsK PiArCQkJCShwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwo+ ICsJCQkJKHBpcGVfY29uZmlnLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ICAJCX0K PiAgCX0KPiAgCj4gQEAgLTI5MDEsMTIgKzI4OTIsMTMgQEAgdm9pZCBza2xfZGV0YWNoX3NjYWxl cnMoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19z Y2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZTsKPiAgCWludCBpOwo+ICAKPiAtCWlmICghaW50ZWxf Y3J0YyB8fCAhaW50ZWxfY3J0Yy0+Y29uZmlnKQo+ICsJaWYgKCFpbnRlbF9jcnRjKQo+ICAJCXJl dHVybjsKPiAgCj4gIAlkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAgCWRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXNjYWxlcl9zdGF0ZSA9ICZpbnRlbF9jcnRjLT5jb25maWct PnNjYWxlcl9zdGF0ZTsKPiArCXNjYWxlcl9zdGF0ZSA9Cj4gKwkJJnRvX2ludGVsX2NydGNfc3Rh dGUoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSktPnNjYWxlcl9zdGF0ZTsKPiAgCj4gIAkvKiBsb29w IHRocm91Z2ggYW5kIGRpc2FibGUgc2NhbGVycyB0aGF0IGFyZW4ndCBpbiB1c2UgKi8KPiAgCWZv ciAoaSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5udW1fc2NhbGVyczsgaSsrKSB7Cj4gQEAgLTMyOTgs NiArMzI5MCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX3NpemUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5k ZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCXRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gIAo+ICAJaWYgKCFpOTE1LmZhc3Rib290KQo+ ICAJCXJldHVybjsKPiBAQCAtMzMxNiwyMCArMzMxMCwyMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF91 cGRhdGVfcGlwZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJICogdGhlbiB1cGRh dGUgdGhlIHBpcGVzcmMgYW5kIHBmaXQgc3RhdGUsIGV2ZW4gb24gdGhlIGZsaXAgcGF0aC4KPiAg CSAqLwo+ICAKPiAtCWFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7Cj4gKwlhZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gIAo+ICAJSTkxNV9XUklURShQSVBFU1JDKGNydGMtPnBpcGUpLAo+ICAJCSAgICgoYWRq dXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSAtIDEpIDw8IDE2KSB8Cj4gIAkJICAgKGFkanVzdGVk X21vZGUtPmNydGNfdmRpc3BsYXkgLSAxKSk7Cj4gLQlpZiAoIWNydGMtPmNvbmZpZy0+cGNoX3Bm aXQuZW5hYmxlZCAmJgo+ICsJaWYgKCFwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCAmJgo+ ICAJICAgIChpbnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSB8fAo+ ICAJICAgICBpbnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVMX09VVFBVVF9FRFApKSkgewo+ ICAJCUk5MTVfV1JJVEUoUEZfQ1RMKGNydGMtPnBpcGUpLCAwKTsKPiAgCQlJOTE1X1dSSVRFKFBG X1dJTl9QT1MoY3J0Yy0+cGlwZSksIDApOwo+ICAJCUk5MTVfV1JJVEUoUEZfV0lOX1NaKGNydGMt PnBpcGUpLCAwKTsKPiAgCX0KPiAtCWNydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyA9IGFkanVzdGVk X21vZGUtPmNydGNfaGRpc3BsYXk7Cj4gLQljcnRjLT5jb25maWctPnBpcGVfc3JjX2ggPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICsJcGlwZV9jb25maWctPnBpcGVfc3JjX3cgPSBh ZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICsJcGlwZV9jb25maWctPnBpcGVfc3JjX2gg PSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBp bnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiBAQCAtMzM3OSw2 ICszMzczLDggQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZmRpX2xpbmtfdHJhaW4oc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCXRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ ICAJdTMyIHJlZywgdGVtcCwgdHJpZXM7Cj4gIAo+IEBAIC0zMzk2LDcgKzMzOTIsNyBAQCBzdGF0 aWMgdm9pZCBpcm9ubGFrZV9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g IAlyZWcgPSBGRElfVFhfQ1RMKHBpcGUpOwo+ICAJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJ dGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPiAtCXRlbXAgfD0gRkRJX0RQX1BPUlRf V0lEVEgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5mZGlfbGFuZXMpOwo+ICsJdGVtcCB8PSBGRElfRFBf UE9SVF9XSURUSChwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsKPiAgCXRlbXAgJj0gfkZESV9MSU5L X1RSQUlOX05PTkU7Cj4gIAl0ZW1wIHw9IEZESV9MSU5LX1RSQUlOX1BBVFRFUk5fMTsKPiAgCUk5 MTVfV1JJVEUocmVnLCB0ZW1wIHwgRkRJX1RYX0VOQUJMRSk7Cj4gQEAgLTM0NzYsNiArMzQ3Miw4 IEBAIHN0YXRpYyB2b2lkIGdlbjZfZmRpX2xpbmtfdHJhaW4oc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJdTMyIHJlZywg dGVtcCwgaSwgcmV0cnk7Cj4gIAo+IEBAIC0zNDk0LDcgKzM0OTIsNyBAQCBzdGF0aWMgdm9pZCBn ZW42X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXJlZyA9IEZESV9U WF9DVEwocGlwZSk7Cj4gIAl0ZW1wID0gSTkxNV9SRUFEKHJlZyk7Cj4gIAl0ZW1wICY9IH5GRElf RFBfUE9SVF9XSURUSF9NQVNLOwo+IC0JdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChpbnRlbF9j cnRjLT5jb25maWctPmZkaV9sYW5lcyk7Cj4gKwl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRIKHBp cGVfY29uZmlnLT5mZGlfbGFuZXMpOwo+ICAJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsK PiAgCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xOwo+ICAJdGVtcCAmPSB+RkRJX0xJ TktfVFJBSU5fVk9MX0VNUF9NQVNLOwo+IEBAIC0zNjA4LDYgKzM2MDYsOCBAQCBzdGF0aWMgdm9p ZCBpdmJfbWFudWFsX2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnID0KPiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KTsKPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXUzMiByZWcsIHRlbXAsIGks IGo7Cj4gIAo+IEBAIC0zNjQ1LDcgKzM2NDUsNyBAQCBzdGF0aWMgdm9pZCBpdmJfbWFudWFsX2Zk aV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlyZWcgPSBGRElfVFhfQ1RM KHBpcGUpOwo+ICAJCXRlbXAgPSBJOTE1X1JFQUQocmVnKTsKPiAgCQl0ZW1wICY9IH5GRElfRFBf UE9SVF9XSURUSF9NQVNLOwo+IC0JCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5mZGlfbGFuZXMpOwo+ICsJCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgocGlw ZV9jb25maWctPmZkaV9sYW5lcyk7Cj4gIAkJdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJO XzFfSVZCOwo+ICAJCXRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiAgCQl0 ZW1wIHw9IHNuYl9iX2ZkaV90cmFpbl9wYXJhbVtqLzJdOwo+IEBAIC0zOTE0LDExICszOTE0LDEw IEBAIHZvaWQgaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiAgfQo+ICAKPiAgLyogUHJvZ3JhbSBpQ0xLSVAgY2xvY2sgdG8gdGhlIGRlc2ly ZWQgZnJlcXVlbmN5ICovCj4gLXN0YXRpYyB2b2lkIGxwdF9wcm9ncmFtX2ljbGtpcChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gK3N0YXRpYyB2b2lkIGxwdF9wcm9ncmFtX2ljbGtpcChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+IC0JaW50IGNsb2NrID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiArCWludCBjbG9jayA9IHBpcGVfY29uZmln LT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAgCXUzMiBkaXZzZWwsIHBoYXNlaW5j LCBhdXhkaXYsIHBoYXNlZGlyID0gMDsKPiAgCXUzMiB0ZW1wOwo+ICAKPiBAQCAtNDAwMiwxMyAr NDAwMSwxMCBAQCBzdGF0aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xraXAoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHBpb19sb2NrKTsKPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWluZ3Moc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gK3N0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF90cmFuc2NvZGVy X3NldF90aW1pbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQkJ ZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyLAo+ICAJCQkJCQllbnVtIHBpcGUgcGNoX3Ry YW5zY29kZXIpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRl djsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNw dV90cmFuc2NvZGVyOwo+IC0KPiAgCUk5MTVfV1JJVEUoUENIX1RSQU5TX0hUT1RBTChwY2hfdHJh bnNjb2RlciksCj4gIAkJICAgSTkxNV9SRUFEKEhUT1RBTChjcHVfdHJhbnNjb2RlcikpKTsKPiAg CUk5MTVfV1JJVEUoUENIX1RSQU5TX0hCTEFOSyhwY2hfdHJhbnNjb2RlciksCj4gQEAgLTQwMjYs NyArNDAyMiw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1p bmdzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAgIEk5MTVfUkVBRChWU1lOQ1NISUZU KGNwdV90cmFuc2NvZGVyKSkpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBjcHRfc2V0X2ZkaV9i Y19iaWZ1cmNhdGlvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIGVuYWJsZSkKPiArc3Rh dGljIHZvaWQgY3B0X3NldF9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiArCQkJCSAgICAgICBib29sIGVuYWJsZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXVpbnQzMl90IHRlbXA7Cj4g QEAgLTQwNDcsMTUgKzQwNDQsMTUgQEAgc3RhdGljIHZvaWQgY3B0X3NldF9mZGlfYmNfYmlmdXJj YXRpb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpCj4gIAlQT1NUSU5HX1JF QUQoU09VVEhfQ0hJQ0tFTjEpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpdnlicmlkZ2VfdXBk YXRlX2ZkaV9iY19iaWZ1cmNhdGlvbihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAr c3RhdGljIHZvaWQgaXZ5YnJpZGdlX3VwZGF0ZV9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAr CQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAtCj4gIAlzd2l0Y2gg KGludGVsX2NydGMtPnBpcGUpIHsKPiAgCWNhc2UgUElQRV9BOgo+ICAJCWJyZWFrOwo+ICAJY2Fz ZSBQSVBFX0I6Cj4gLQkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzID4gMikKPiAr CQlpZiAocGlwZV9jb25maWctPmZkaV9sYW5lcyA+IDIpCj4gIAkJCWNwdF9zZXRfZmRpX2JjX2Jp ZnVyY2F0aW9uKGRldiwgZmFsc2UpOwo+ICAJCWVsc2UKPiAgCQkJY3B0X3NldF9mZGlfYmNfYmlm dXJjYXRpb24oZGV2LCB0cnVlKTsKPiBAQCAtNDA3OCw3ICs0MDc1LDggQEAgc3RhdGljIHZvaWQg aXZ5YnJpZGdlX3VwZGF0ZV9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMpCj4gICAqICAgLSBEUCB0cmFuc2NvZGluZyBiaXRzCj4gICAqICAgLSB0cmFuc2Nv ZGVyCj4gICAqLwo+IC1zdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICtzdGF0 aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJ CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTQwODksNyArNDA4Nyw4IEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX3BjaF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqCj4gIAlhc3NlcnRfcGNoX3RyYW5zY29kZXJfZGlzYWJsZWQoZGV2 X3ByaXYsIHBpcGUpOwo+ICAKPiAgCWlmIChJU19JVllCUklER0UoZGV2KSkKPiAtCQlpdnlicmlk Z2VfdXBkYXRlX2ZkaV9iY19iaWZ1cmNhdGlvbihpbnRlbF9jcnRjKTsKPiArCQlpdnlicmlkZ2Vf dXBkYXRlX2ZkaV9iY19iaWZ1cmNhdGlvbihkZXYsIGludGVsX2NydGMsCj4gKwkJCQkJCSAgICBw aXBlX2NvbmZpZyk7Cj4gIAo+ICAJLyogV3JpdGUgdGhlIFRVIHNpemUgYml0cyBiZWZvcmUgZmRp IGxpbmsgdHJhaW5pbmcsIHNvIHRoYXQgZXJyb3IKPiAgCSAqIGRldGVjdGlvbiB3b3Jrcy4gKi8K PiBAQCAtNDEyMSwxMSArNDEyMCwxMiBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxl KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKgo+ICAJICog Tm90ZSB0aGF0IGVuYWJsZV9zaGFyZWRfZHBsbCB0cmllcyB0byBkbyB0aGUgcmlnaHQgdGhpbmcs IGJ1dAo+ICAJICogZ2V0X3NoYXJlZF9kcGxsIHVuY29uZGl0aW9uYWxseSByZXNldHMgdGhlIHBs bCAtIHdlIG5lZWQgdGhhdCB0byBoYXZlCj4gIAkgKiB0aGUgcmlnaHQgTFZEUyBlbmFibGUgc2Vx dWVuY2UuICovCj4gLQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7Cj4gKwlp bnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBs bCk7Cj4gIAo+ICAJLyogc2V0IHRyYW5zY29kZXIgdGltaW5nLCBwYW5lbCBtdXN0IGFsbG93IGl0 ICovCj4gIAlhc3NlcnRfcGFuZWxfdW5sb2NrZWQoZGV2X3ByaXYsIHBpcGUpOwo+IC0JaXJvbmxh a2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWluZ3MoaW50ZWxfY3J0YywgcGlwZSk7Cj4gKwlpcm9u bGFrZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGltaW5ncyhkZXZfcHJpdiwKPiArCQkJCQkgICAgcGlw ZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKPiAgCj4gIAlpbnRlbF9mZGlfbm9ybWFs X3RyYWluKGNydGMpOwo+ICAKPiBAQCAtNDE2NiwxOSArNDE2NiwxNyBAQCBzdGF0aWMgdm9pZCBp cm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKgo+ICAJaXJvbmxha2VfZW5hYmxlX3BjaF90cmFuc2NvZGVyKGRldl9wcml2LCBw aXBlLCBwaXBlX2NvbmZpZyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGxwdF9wY2hfZW5hYmxl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgbHB0X3BjaF9lbmFibGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0 Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNj b2RlciA9IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gIAlhc3NlcnRfcGNoX3Ry YW5zY29kZXJfZGlzYWJsZWQoZGV2X3ByaXYsIFRSQU5TQ09ERVJfQSk7Cj4gIAo+IC0JbHB0X3By b2dyYW1faWNsa2lwKGNydGMpOwo+ICsJbHB0X3Byb2dyYW1faWNsa2lwKGRldl9wcml2LCBwaXBl X2NvbmZpZyk7Cj4gIAo+ICAJLyogU2V0IHRyYW5zY29kZXIgdGltaW5nLiAqLwo+IC0JaXJvbmxh a2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWluZ3MoaW50ZWxfY3J0YywgUElQRV9BKTsKPiArCWly b25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rl ciwgUElQRV9BKTsKPiAgCj4gIAlscHRfZW5hYmxlX3BjaF90cmFuc2NvZGVyKGRldl9wcml2LCBj cHVfdHJhbnNjb2Rlcik7Cj4gIH0KPiBAQCAtNDc4MSw3ICs0Nzc5LDggQEAgc3RhdGljIHZvaWQg aXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJcGlwZV9jb25m aWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAgCj4gIAlpZiAocGlwZV9j b25maWctPmhhc19wY2hfZW5jb2RlcikKPiAtCQlpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKGlu dGVsX2NydGMpOwo+ICsJCWludGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoZGV2X3ByaXYsCj4gKwkJ CQkJICBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+ aGFzX2RwX2VuY29kZXIpCj4gIAkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9OMSk7 Cj4gQEAgLTQ4NTQsOCArNDg1Myw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJV0FSTl9PTighY3J0Yy0+c3RhdGUtPmVuYWJsZSk7 Cj4gIAo+ICAJcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsK PiAtCWlmIChpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGludGVsX2NydGMpKQo+IC0JCWludGVs X2VuYWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPiArCWlmIChwaXBlX2NvbmZpZy0+c2hh cmVkX2RwbGwgPj0gMCkKPiArCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoZGV2X3ByaXYsIHBp cGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7Cj4gIAo+ICAJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBf ZW5jb2RlcikKPiAgCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPiBAQCAt NDkxMCw3ICs0OTA5LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIAlpbnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKPiAgCj4g IAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gLQkJbHB0X3BjaF9l bmFibGUoY3J0Yyk7Cj4gKwkJbHB0X3BjaF9lbmFibGUoZGV2X3ByaXYsIHBpcGVfY29uZmlnKTsK PiAgCj4gIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKPiAgCQlp bnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywKPiBAQCAtMTE5MjksNyArMTE5Mjgs OCBAQCBjaGVja19zaGFyZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ CSAgICAgcGxsLT5vbiwgYWN0aXZlKTsKPiAgCj4gIAkJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYs IGNydGMpIHsKPiAtCQkJaWYgKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAmJiBpbnRlbF9jcnRj X3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBsbCkKPiArCQkJaWYgKGNydGMtPmJhc2Uuc3RhdGUt PmFjdGl2ZSAmJgo+ICsJCQkgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRl KS0+c2hhcmVkX2RwbGwgPT0gaSkKPiAgCQkJCWFjdGl2ZV9jcnRjcysrOwo+ICAJCX0KPiAgCQlJ OTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmUgIT0gYWN0aXZlX2NydGNzLAo+IEBAIC0xMjMxMSw3 ICsxMjMxMSw2IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAlfX2ludGVsX3NldF9tb2RlX3VwZGF0ZV9wbGFuZXMoZGV2LCBz dGF0ZSk7Cj4gIAo+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2Ny dGNfc3RhdGUsIGkpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gIAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln Owo+ICAKPiAgCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKQo+IEBAIC0xMjMyNCw4 ICsxMjMyMyw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAkJaW50ZWxfY3J0Y19kcG1zX292ZXJsYXlfZGlzYWJsZSh0b19p bnRlbF9jcnRjKGNydGMpKTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0 YywgcGlwZV9jb25maWcpOwo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChp bnRlbF9jcnRjKSkKPiAtCQkJaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsK PiArCQlpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKGRldl9wcml2LCBwaXBlX2NvbmZpZy0+c2hh cmVkX2RwbGwpOwo+ICAJfQo+ICAKPiAgCS8qIE9ubHkgYWZ0ZXIgZGlzYWJsaW5nIGFsbCBvdXRw dXQgcGlwZWxpbmVzIHRoYXQgd2lsbCBiZSBjaGFuZ2VkIGNhbiB3ZQo+IEBAIC0xMjcxOSw3ICsx MjcxNyw5IEBAIHN0YXRpYyB2b2lkIGlieF9wY2hfZHBsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAkvKiBNYWtlIHN1cmUgbm8gdHJhbnNjb2RlciBp c24ndCBzdGlsbCBkZXBlbmRpbmcgb24gdXMuICovCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRl diwgY3J0Yykgewo+IC0JCWlmIChpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBs bCkKPiArCQlpbnQgaSA9IHBsbCAtIGRldl9wcml2LT5zaGFyZWRfZHBsbHM7Cj4gKwo+ICsJCWlm ICh0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpLT5zaGFyZWRfZHBsbCA9PSBp KQo+ICAJCQlhc3NlcnRfcGNoX3RyYW5zY29kZXJfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBp cGUpOwo+ICAJfQoKVGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgd2l0aCB0aGUgbmV3IGNvbmZpZyBh bHJlYWR5IHB1dCBpbiBwbGFjZSwgYnV0IGl0CnNob3VsZCBjaGVjayB3aGV0aGVyIGFueSBvZiB0 aGUgX29sZF8gcGlwZSBjb25maWdzIHRoYXQgdXNlZCB0aGUgZHBsbCBhcmUKcmVhbGx5IGFsbCBz aHV0IGRvd24uIFRoaXMgd29uJ3QgbWlzZmlyZSBzaW5jZSBpZiB3ZSBzaHV0IGl0IGRvd24gdG8g dXNlCml0IGluIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiB0aGVuIHRob3NlIHBpcGVzIHNob3Vs ZCBiZSBvZmMgb2ZmIHRvby4KT3RvaCB3ZSBkbyBjaGVjayBiZWZvcmUgZW5hYmxpbmcgdGhlIHBp cGUgdGhhdCB0aGUgZHBsbCBpcyBydW5uaW5nLCBoZW5jZQpJIHRoaW5rIHRoaXMgaXMgcmVkdW5k YW50IGFuZCBtYXliZSB3ZSBjb3VsZCByZW1vdmUKaXQgcmlnaHQgYXdheT8KLURhbmllbAoKPiAg Cj4gQEAgLTE0Nzk4LDcgKzE0Nzk4LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFk b3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcGxsLT5hY3RpdmUgPSAw Owo+ICAJCXBsbC0+Y29uZmlnLmNydGNfbWFzayA9IDA7Cj4gIAkJZm9yX2VhY2hfaW50ZWxfY3J0 YyhkZXYsIGNydGMpIHsKPiAtCQkJaWYgKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAmJiBpbnRl bF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBsbCkgewo+ICsJCQlpZiAoY3J0Yy0+YmFz ZS5zdGF0ZS0+YWN0aXZlICYmCj4gKwkJCSAgICBpID09IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+YmFzZS5zdGF0ZSktPnNoYXJlZF9kcGxsKSB7Cj4gIAkJCQlwbGwtPmFjdGl2ZSsrOwo+ICAJ CQkJcGxsLT5jb25maWcuY3J0Y19tYXNrIHw9IDEgPDwgY3J0Yy0+cGlwZTsKPiAgCQkJfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMWEwYjBjZDg1N2MzLi43OTc5YTJmNjgzOGMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xMDU4LDEwICsxMDU4LDggQEAg Ym9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJ ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSk7Cj4gIAo+ICAvKiBzaGFyZWQgZHBsbCBm dW5jdGlvbnMgKi8KPiAtc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9jcnRjX3RvX3No YXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiAgdm9pZCBhc3NlcnRfc2hhcmVk X2RwbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQlzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiAtCQkJYm9vbCBzdGF0ZSk7Cj4gKwkJCWVudW0gaW50ZWxf ZHBsbF9pZCwgYm9vbCBzdGF0ZSk7Cj4gICNkZWZpbmUgYXNzZXJ0X3NoYXJlZF9kcGxsX2VuYWJs ZWQoZCwgcCkgYXNzZXJ0X3NoYXJlZF9kcGxsKGQsIHAsIHRydWUpCj4gICNkZWZpbmUgYXNzZXJ0 X3NoYXJlZF9kcGxsX2Rpc2FibGVkKGQsIHApIGFzc2VydF9zaGFyZWRfZHBsbChkLCBwLCBmYWxz ZSkKPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9nZXRfc2hhcmVkX2RwbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IGluZGV4 IDhhYWFhMjQxNDRmMC4uNTI3ODhlZDZmNzc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwo+IEBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX2VuYWJsZV9s dmRzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJaWYgKEhBU19QQ0hfU1BMSVQo ZGV2KSkgewo+ICAJCWFzc2VydF9mZGlfcnhfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlKTsK PiAgCQlhc3NlcnRfc2hhcmVkX2RwbGxfZGlzYWJsZWQoZGV2X3ByaXYsCj4gLQkJCQkJICAgIGlu dGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0YykpOwo+ICsJCQkJCSAgICBwaXBlX2NvbmZpZy0+ c2hhcmVkX2RwbGwpOwo+ICAJfSBlbHNlIHsKPiAgCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9w cml2LCBwaXBlKTsKPiAgCX0KPiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK