From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 34/42] drm/i915: get rid of crtc->config in intel_display.c, part 1 Date: Tue, 12 May 2015 16:13:54 +0200 Message-ID: <55520AA2.1090308@linux.intel.com> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431354318-11995-35-git-send-email-maarten.lankhorst@linux.intel.com> <20150512101136.GP15256@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id ACA446E027 for ; Tue, 12 May 2015 07:14:14 -0700 (PDT) In-Reply-To: <20150512101136.GP15256@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTItMDUtMTUgb20gMTI6MTEgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIE1vbiwgTWF5 IDExLCAyMDE1IGF0IDA0OjI1OjEwUE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+ PiBSZW1vdmVkIHNvbWUgb2NjdXJlbmNlcywgcm91Z2hseSBiYXNlZCBvbiB3aGVyZSB0aGUgZXJy b3JzIG9mCj4+IHJlbW92aW5nIGNydGMtPmNvbmZpZyBvY2N1cmVkLiBCZWNhdXNlIGl0J3MgdXNl ZCBhIGxvdCBpbiB0aGlzCj4+IGZpbGUgdGhlIGNoYW5nZXMgYXJlIGRvbmUgaW4gcGFzc2VzLgo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RA bGludXguaW50ZWwuY29tPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyB8IDIwNSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA0ICstCj4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAgIDIgKy0KPj4gIDMgZmlsZXMgY2hhbmdlZCwg MTA1IGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRleCAwMDQwNjdiZDBiNmMuLmZiMmVjYjY1YWFhYSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMTE0MSwyOSArMTE0 MSwyMCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZHNpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpCj4+ICAjZGVmaW5lIGFzc2VydF9kc2lfcGxsX2VuYWJs ZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgdHJ1ZSkKPj4gICNkZWZpbmUgYXNzZXJ0X2RzaV9wbGxf ZGlzYWJsZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgZmFsc2UpCj4+ICAKPj4gLXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqCj4+IC1pbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQo+PiAtCWlmIChjcnRjLT5jb25m aWctPnNoYXJlZF9kcGxsIDwgMCkKPj4gLQkJcmV0dXJuIE5VTEw7Cj4+IC0KPj4gLQlyZXR1cm4g JmRldl9wcml2LT5zaGFyZWRfZHBsbHNbY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbF07Cj4+IC19 Cj4+IC0KPj4gIC8qIEZvciBJTEsrICovCj4+ICB2b2lkIGFzc2VydF9zaGFyZWRfZHBsbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+IC0JCQlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGwgKnBsbCwKPj4gKwkJCWVudW0gaW50ZWxfZHBsbF9pZCBzaGFyZWRfZHBsbCwKPj4gIAkJ CWJvb2wgc3RhdGUpCj4+ICB7Cj4+IC0JYm9vbCBjdXJfc3RhdGU7Cj4+ICAJc3RydWN0IGludGVs X2RwbGxfaHdfc3RhdGUgaHdfc3RhdGU7Cj4+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGw7Cj4+ICsJYm9vbCBjdXJfc3RhdGU7Cj4+ICAKPj4gLQlpZiAoV0FSTiAoIXBsbCwKPj4gKwlp ZiAoV0FSTihzaGFyZWRfZHBsbCA8IDAsCj4+ICAJCSAgImFzc2VydGluZyBEUExMICVzIHdpdGgg bm8gRFBMTFxuIiwgc3RhdGVfc3RyaW5nKHN0YXRlKSkpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAr CXBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW3NoYXJlZF9kcGxsXTsKPj4gIAljdXJfc3Rh dGUgPSBwbGwtPmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxsLCAmaHdfc3RhdGUpOwo+PiAgCUk5 MTVfU1RBVEVfV0FSTihjdXJfc3RhdGUgIT0gc3RhdGUsCj4+ICAJICAgICAiJXMgYXNzZXJ0aW9u IGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVzKVxuIiwKPj4gQEAgLTE2OTEsNyArMTY4 Miw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpCj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNydGMtPmJhc2UuZGV2Owo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJaW50IHJlZyA9IERQTEwoY3J0Yy0+cGlwZSk7Cj4+ IC0JdTMyIGRwbGwgPSBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbDsKPj4gKwl1MzIg ZHBsbCA9IHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGw7Cj4gTG90cyBvZiB5b3VyIHBh dGNoZXMgYXJlIHNwcmlua2xlZCB3aXRoIHVucmVsYXRlZCBjcnRjLT5jb25maWcgLT4KPiBwaXBl X2NvbmZpZyBjb252ZXJzaW9ucy4gT3IganVzdCBwbGFpbiByb2xsaW5nIG91dCBvZiBhIGxvY2Fs IHZhcmlhYmxlCj4gaW5zdGVhZCBvZiBhY2Nlc3Npbmcgc29tZSBvdGhlciBwb2ludGVyLiBUaGF0 IG1ha2VzIGl0IGZhaXJseSBoYXJkIHRvCj4gcmV2aWV3IHRoZW0gZm9yIGEgZ2l2ZW4gdG9waWMg KGxpa2Ugc2hhcmVkIGRwbGwgaGVyZSkgc2luY2UgaXQncyBuZXZlcgo+IGNsZWFyIHdoZXRoZXIg aXQgcmVhbGx5IGluY2x1ZGVzIGV2ZXJ5dGhpbmcsIGFuZCB3aGF0J3MgdGhlIHJlYXNvbiBmb3Ig YWxsCj4gdGhlIG90aGVyIGh1bmtzLgo+Cj4+ICAKPj4gIAlhc3NlcnRfcGlwZV9kaXNhYmxlZChk ZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBjcnRjLT5waXBlKTsKPj4gIAo+ PiBAQCAtMTcyMSw3ICsxNzEyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGkKPj4gIAo+PiAg CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4+ICAJCUk5MTVfV1JJVEUoRFBMTF9N RChjcnRjLT5waXBlKSwKPj4gLQkJCSAgIGNydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxs X21kKTsKPj4gKwkJCSAgIHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGxfbWQpOwo+PiAg CX0gZWxzZSB7Cj4+ICAJCS8qIFRoZSBwaXhlbCBtdWx0aXBsaWVyIGNhbiBvbmx5IGJlIHVwZGF0 ZWQgb25jZSB0aGUKPj4gIAkJICogRFBMTCBpcyBlbmFibGVkIGFuZCB0aGUgY2xvY2tzIGFyZSBz dGFibGUuCj4+IEBAIC0xODU5LDIwICsxODUwLDE5IEBAIHZvaWQgdmx2X3dhaXRfcG9ydF9yZWFk eShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCSAgICAgcG9ydF9uYW1l KGRwb3J0LT5wb3J0KSwgSTkxNV9SRUFEKGRwbGxfcmVnKSAmIHBvcnRfbWFzaywgZXhwZWN0ZWRf bWFzayk7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyB2b2lkIGludGVsX3ByZXBhcmVfc2hhcmVkX2Rw bGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ICtzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJl X3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gKwkJCQkg ICAgICBlbnVtIGludGVsX2RwbGxfaWQgc2hhcmVkX2RwbGwpCj4+ICB7Cj4+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+IC0Jc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICpwbGwgPSBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpOwo+PiArCXN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbc2hhcmVk X2RwbGxdOwo+IFdoeSBjaGFuZ2UgYW55dGhpbmcgaGVyZT8gVGhpcyBpcyBjYWxsZWQgZnJvbSBl bmFibGUgaG9va3MsIHNvIGNhbiBrZWVwIG9uCj4gYWNjZXNzaW5nIGludGVsX2NydGMtPnN0YXRl IC4uLiBvciBub3Q/CkkgZ290IHJpZCBvZiBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsLCBiZWNh dXNlIGl0IG9ubHkgcmVxdWlyZWQgcGlwZV9jb25maWctPnNoYXJlZF9kcGxsIEkgZmVsdCBpdCBj b3VsZCBiZSBwYXNzZWQgYXMgYXJndW1lbnQgaW5zdGVhZC4KCj4+ICAKPj4gLQlpZiAoV0FSTl9P TihwbGwgPT0gTlVMTCkpCj4+ICsJaWYgKFdBUk5fT04oc2hhcmVkX2RwbGwgPCAwKSkKPj4gIAkJ cmV0dXJuOwo+PiAgCj4+ICAJV0FSTl9PTighcGxsLT5jb25maWcuY3J0Y19tYXNrKTsKPj4gIAlp ZiAocGxsLT5hY3RpdmUgPT0gMCkgewo+PiAgCQlEUk1fREVCVUdfRFJJVkVSKCJzZXR0aW5nIHVw ICVzXG4iLCBwbGwtPm5hbWUpOwo+PiAgCQlXQVJOX09OKHBsbC0+b24pOwo+PiAtCQlhc3NlcnRf c2hhcmVkX2RwbGxfZGlzYWJsZWQoZGV2X3ByaXYsIHBsbCk7Cj4+ICsJCWFzc2VydF9zaGFyZWRf ZHBsbF9kaXNhYmxlZChkZXZfcHJpdiwgc2hhcmVkX2RwbGwpOwo+PiAgCj4+ICAJCXBsbC0+bW9k ZV9zZXQoZGV2X3ByaXYsIHBsbCk7Cj4+ICAJfQo+PiBAQCAtMTg4NiwyNSArMTg3NiwyMyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQo+PiAgICogVGhlIFBDSCBQTEwgbmVlZHMgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIFBD SCB0cmFuc2NvZGVyLCBzaW5jZSBpdAo+PiAgICogZHJpdmVzIHRoZSB0cmFuc2NvZGVyIGNsb2Nr Lgo+PiAgICovCj4+IC1zdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCj4+ICtzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2Rw bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiArCQkJCSAgICAgZW51bSBp bnRlbF9kcGxsX2lkIHNoYXJlZF9kcGxsKQo+PiAgewo+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5iYXNlLmRldjsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAtCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxs ID0gaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChjcnRjKTsKPj4gKwlzdHJ1Y3QgaW50ZWxfc2hh cmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW3NoYXJlZF9kcGxsXTsKPj4g IAo+PiAtCWlmIChXQVJOX09OKHBsbCA9PSBOVUxMKSkKPj4gKwlpZiAoV0FSTl9PTihzaGFyZWRf ZHBsbCA8IDApKQo+PiAgCQlyZXR1cm47Cj4+ICAKPj4gIAlpZiAoV0FSTl9PTihwbGwtPmNvbmZp Zy5jcnRjX21hc2sgPT0gMCkpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAtCURSTV9ERUJVR19LTVMo ImVuYWJsZSAlcyAoYWN0aXZlICVkLCBvbj8gJWQpIGZvciBjcnRjICVkXG4iLAo+PiAtCQkgICAg ICBwbGwtPm5hbWUsIHBsbC0+YWN0aXZlLCBwbGwtPm9uLAo+PiAtCQkgICAgICBjcnRjLT5iYXNl LmJhc2UuaWQpOwo+PiArCURSTV9ERUJVR19LTVMoImVuYWJsZSAlcyAoYWN0aXZlICVkLCBvbj8g JWQpXG4iLAo+PiArCQkgICAgICBwbGwtPm5hbWUsIHBsbC0+YWN0aXZlLCBwbGwtPm9uKTsKPj4g IAo+PiAgCWlmIChwbGwtPmFjdGl2ZSsrKSB7Cj4+ICAJCVdBUk5fT04oIXBsbC0+b24pOwo+PiAt CQlhc3NlcnRfc2hhcmVkX2RwbGxfZW5hYmxlZChkZXZfcHJpdiwgcGxsKTsKPj4gKwkJYXNzZXJ0 X3NoYXJlZF9kcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHNoYXJlZF9kcGxsKTsKPj4gIAkJcmV0dXJu Owo+PiAgCX0KPj4gIAlXQVJOX09OKHBsbC0+b24pOwo+PiBAQCAtMTkxNiwzMCArMTkwNCwyOSBA QCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMg KmNydGMpCj4+ICAJcGxsLT5vbiA9IHRydWU7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyB2b2lkIGlu dGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ICtzdGF0 aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPj4gKwkJCQkgICAgICBlbnVtIGludGVsX2RwbGxfaWQgc2hhcmVkX2RwbGwp Cj4+ICB7Cj4+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+PiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ IC0Jc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSBpbnRlbF9jcnRjX3RvX3NoYXJlZF9k cGxsKGNydGMpOwo+PiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gJmRldl9wcml2 LT5zaGFyZWRfZHBsbHNbc2hhcmVkX2RwbGxdOwo+PiArCj4+ICsJaWYgKHNoYXJlZF9kcGxsIDwg MCkKPj4gKwkJcmV0dXJuOwo+PiAgCj4+ICAJLyogUENIIG9ubHkgYXZhaWxhYmxlIG9uIElMSysg Ki8KPj4gLQlCVUdfT04oSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KTsKPj4gLQlpZiAoV0FSTl9P TihwbGwgPT0gTlVMTCkpCj4+IC0JICAgICAgIHJldHVybjsKPj4gKwlCVUdfT04oZGV2X3ByaXYt PmluZm8uZ2VuIDwgNSk7Cj4+ICAKPj4gIAlpZiAoV0FSTl9PTihwbGwtPmNvbmZpZy5jcnRjX21h c2sgPT0gMCkpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAtCURSTV9ERUJVR19LTVMoImRpc2FibGUg JXMgKGFjdGl2ZSAlZCwgb24/ICVkKSBmb3IgY3J0YyAlZFxuIiwKPj4gLQkJICAgICAgcGxsLT5u YW1lLCBwbGwtPmFjdGl2ZSwgcGxsLT5vbiwKPj4gLQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlk KTsKPj4gKwlEUk1fREVCVUdfS01TKCJkaXNhYmxlICVzIChhY3RpdmUgJWQsIG9uPyAlZClcbiIs Cj4+ICsJCSAgICAgIHBsbC0+bmFtZSwgcGxsLT5hY3RpdmUsIHBsbC0+b24pOwo+PiAgCj4+ICAJ aWYgKFdBUk5fT04ocGxsLT5hY3RpdmUgPT0gMCkpIHsKPj4gLQkJYXNzZXJ0X3NoYXJlZF9kcGxs X2Rpc2FibGVkKGRldl9wcml2LCBwbGwpOwo+PiArCQlhc3NlcnRfc2hhcmVkX2RwbGxfZGlzYWJs ZWQoZGV2X3ByaXYsIHNoYXJlZF9kcGxsKTsKPj4gIAkJcmV0dXJuOwo+PiAgCX0KPj4gIAo+PiAt CWFzc2VydF9zaGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LCBwbGwpOwo+PiArCWFzc2VydF9z aGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LCBzaGFyZWRfZHBsbCk7Cj4+ICAJV0FSTl9PTigh cGxsLT5vbik7Cj4+ICAJaWYgKC0tcGxsLT5hY3RpdmUpCj4+ICAJCXJldHVybjsKPj4gQEAgLTE5 NjQsOCArMTk1MSw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2VuYWJsZV9wY2hfdHJhbnNjb2Rl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJQlVHX09OKCFIQVNfUENI X1NQTElUKGRldikpOwo+PiAgCj4+ICAJLyogTWFrZSBzdXJlIFBDSCBEUExMIGlzIGVuYWJsZWQg Ki8KPj4gLQlhc3NlcnRfc2hhcmVkX2RwbGxfZW5hYmxlZChkZXZfcHJpdiwKPj4gLQkJCQkgICBp bnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGludGVsX2NydGMpKTsKPj4gKwlhc3NlcnRfc2hhcmVk X2RwbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPnNoYXJlZF9kcGxsKTsKPj4gIAo+ PiAgCS8qIEZESSBtdXN0IGJlIGZlZWRpbmcgdXMgYml0cyBmb3IgUENIIHBvcnRzICovCj4+ICAJ YXNzZXJ0X2ZkaV90eF9lbmFibGVkKGRldl9wcml2LCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29k ZXIsIHBpcGUpOwo+PiBAQCAtMjEyNiw3ICsyMTEyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5h YmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ICAJCWVsc2UKPj4gIAkJCWFzc2Vy dF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4+ICAJZWxzZSB7Cj4+IC0JCWlmIChjcnRj LT5jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+PiArCQlpZiAocGlwZV9jb25maWctPmhhc19w Y2hfZW5jb2Rlcikgewo+PiAgCQkJLyogaWYgZHJpdmluZyB0aGUgUENILCB3ZSBuZWVkIEZESSBl bmFibGVkICovCj4+ICAJCQlhc3NlcnRfZmRpX3J4X3BsbF9lbmFibGVkKGRldl9wcml2LCBwY2hf dHJhbnNjb2Rlcik7Cj4+ICAJCQlhc3NlcnRfZmRpX3R4X3BsbF9lbmFibGVkKGRldl9wcml2LAo+ PiBAQCAtMjYyMiw2ICsyNjA4LDggQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJYm9vbCB2aXNpYmxlID0gdG9faW50ZWxf cGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpLT52aXNpYmxlOwo+PiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4+ICAJaW50IHBsYW5lID0gaW50ZWxfY3J0Yy0+cGxhbmU7Cj4+ ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPj4gKwkJdG9faW50ZWxf Y3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4+ICAJdW5zaWduZWQgbG9uZyBsaW5lYXJfb2Zmc2V0 Owo+PiAgCXUzMiBkc3BjbnRyOwo+PiAgCXUzMiByZWcgPSBEU1BDTlRSKHBsYW5lKTsKPj4gQEAg LTI2NTUsMTMgKzI2NDMsMTMgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFu ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJCSAqIHdoaWNoIHNob3VsZCBhbHdheXMgYmUg dGhlIHVzZXIncyByZXF1ZXN0ZWQgc2l6ZS4KPj4gIAkJICovCj4+ICAJCUk5MTVfV1JJVEUoRFNQ U0laRShwbGFuZSksCj4+IC0JCQkgICAoKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAt IDEpIDw8IDE2KSB8Cj4+IC0JCQkgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0g MSkpOwo+PiArCQkJICAgKChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4+ ICsJCQkgICAocGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4+ICAJCUk5MTVfV1JJVEUo RFNQUE9TKHBsYW5lKSwgMCk7Cj4+ICAJfSBlbHNlIGlmIChJU19DSEVSUllWSUVXKGRldikgJiYg cGxhbmUgPT0gUExBTkVfQikgewo+PiAgCQlJOTE1X1dSSVRFKFBSSU1TSVpFKHBsYW5lKSwKPj4g LQkJCSAgICgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPj4g LQkJCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4+ICsJCQkgICAo KHBpcGVfY29uZmlnLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPj4gKwkJCSAgIChwaXBlX2Nv bmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPj4gIAkJSTkxNV9XUklURShQUklNUE9TKHBsYW5lKSwg MCk7Cj4+ICAJCUk5MTVfV1JJVEUoUFJJTUNOU1RBTFBIQShwbGFuZSksIDApOwo+PiAgCX0KPj4g QEAgLTI3MTksMTQgKzI3MDcsMTQgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJaWYgKGNydGMtPnByaW1hcnktPnN0YXRl LT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4+ICAJCWRzcGNudHIgfD0gRElT UFBMQU5FX1JPVEFURV8xODA7Cj4+ICAKPj4gLQkJeCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5w aXBlX3NyY193IC0gMSk7Cj4+IC0JCXkgKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNf aCAtIDEpOwo+PiArCQl4ICs9IChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwo+PiArCQl5 ICs9IChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOwo+PiAgCj4+ICAJCS8qIEZpbmRpbmcg dGhlIGxhc3QgcGl4ZWwgb2YgdGhlIGxhc3QgbGluZSBvZiB0aGUgZGlzcGxheQo+PiAgCQlkYXRh IGFuZCBhZGRpbmcgdG8gbGluZWFyX29mZnNldCovCj4+ICAJCWxpbmVhcl9vZmZzZXQgKz0KPj4g LQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBd ICsKPj4gLQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3Np emU7Cj4+ICsJCQkocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBd ICsKPj4gKwkJCShwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsKPiBV bnJlbGF0ZWQgY2hhbmdlcyBhYm92ZSwgb3IgZG8gSSBtaXNzIHNvbWV0aGluZz8KV2hhdCdzIHVu cmVsYXRlZD8gQnV0IHllYWggSSBtb3N0bHkgc3BsaXQgaXQgdXAgYnkgZml4aW5nIHRoaW5ncyB1 cCB1bnRpbCBpdCBzdGFydGVkIGNvbXBpbGluZyBhZ2Fpbi4gSSBzaG91bGQgc3BsaXQgdGhlIGRp c3BsYXkgc3R1ZmYgdXAgZnVydGhlci4KCj4+ICAJfQo+PiAgCj4+ICAJSTkxNV9XUklURShyZWcs IGRzcGNudHIpOwo+PiBAQCAtMjgxOCwxNyArMjgwNiwyMCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFr ZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJCQkJCSAg ICAgICBmYi0+cGl0Y2hlc1swXSk7Cj4+ICAJbGluZWFyX29mZnNldCAtPSBpbnRlbF9jcnRjLT5k c3BhZGRyX29mZnNldDsKPj4gIAlpZiAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uID09 IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPj4gKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnID0KPj4gKwkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+PiAr Cj4+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7Cj4+ICAKPj4gIAkJaWYgKCFJ U19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKSB7Cj4+IC0JCQl4ICs9IChpbnRl bF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKTsKPj4gLQkJCXkgKz0gKGludGVsX2NydGMt PmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOwo+PiArCQkJeCArPSAocGlwZV9jb25maWctPnBpcGVf c3JjX3cgLSAxKTsKPj4gKwkJCXkgKz0gKHBpcGVfY29uZmlnLT5waXBlX3NyY19oIC0gMSk7Cj4+ ICAKPj4gIAkJCS8qIEZpbmRpbmcgdGhlIGxhc3QgcGl4ZWwgb2YgdGhlIGxhc3QgbGluZSBvZiB0 aGUgZGlzcGxheQo+PiAgCQkJZGF0YSBhbmQgYWRkaW5nIHRvIGxpbmVhcl9vZmZzZXQqLwo+PiAg CQkJbGluZWFyX29mZnNldCArPQo+PiAtCQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3Jj X2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKPj4gLQkJCQkoaW50ZWxfY3J0Yy0+Y29uZmlnLT5w aXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+PiArCQkJCShwaXBlX2NvbmZpZy0+cGlwZV9z cmNfaCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwo+PiArCQkJCShwaXBlX2NvbmZpZy0+cGlwZV9z cmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsKPj4gIAkJfQo+PiAgCX0KPj4gIAo+PiBAQCAtMjkwMSwx MiArMjg5MiwxMyBAQCB2b2lkIHNrbF9kZXRhY2hfc2NhbGVycyhzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YykKPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9z dGF0ZTsKPj4gIAlpbnQgaTsKPj4gIAo+PiAtCWlmICghaW50ZWxfY3J0YyB8fCAhaW50ZWxfY3J0 Yy0+Y29uZmlnKQo+PiArCWlmICghaW50ZWxfY3J0YykKPj4gIAkJcmV0dXJuOwo+PiAgCj4+ICAJ ZGV2ID0gaW50ZWxfY3J0Yy0+YmFzZS5kZXY7Cj4+ICAJZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+PiAtCXNjYWxlcl9zdGF0ZSA9ICZpbnRlbF9jcnRjLT5jb25maWctPnNjYWxlcl9zdGF0 ZTsKPj4gKwlzY2FsZXJfc3RhdGUgPQo+PiArCQkmdG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9j cnRjLT5iYXNlLnN0YXRlKS0+c2NhbGVyX3N0YXRlOwo+PiAgCj4+ICAJLyogbG9vcCB0aHJvdWdo IGFuZCBkaXNhYmxlIHNjYWxlcnMgdGhhdCBhcmVuJ3QgaW4gdXNlICovCj4+ICAJZm9yIChpID0g MDsgaSA8IGludGVsX2NydGMtPm51bV9zY2FsZXJzOyBpKyspIHsKPj4gQEAgLTMyOTgsNiArMzI5 MCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX3NpemUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMpCj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Cj4+ICsJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPj4gKwkJdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKPj4gIAo+PiAgCWlmICghaTkxNS5mYXN0Ym9vdCkK Pj4gIAkJcmV0dXJuOwo+PiBAQCAtMzMxNiwyMCArMzMxMCwyMCBAQCBzdGF0aWMgdm9pZCBpbnRl bF91cGRhdGVfcGlwZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiAgCSAqIHRoZW4g dXBkYXRlIHRoZSBwaXBlc3JjIGFuZCBwZml0IHN0YXRlLCBldmVuIG9uIHRoZSBmbGlwIHBhdGgu Cj4+ICAJICovCj4+ICAKPj4gLQlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlOwo+PiArCWFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZTsKPj4gIAo+PiAgCUk5MTVfV1JJVEUoUElQRVNSQyhjcnRjLT5waXBlKSwKPj4g IAkJICAgKChhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5IC0gMSkgPDwgMTYpIHwKPj4gIAkJ ICAgKGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkgLSAxKSk7Cj4+IC0JaWYgKCFjcnRjLT5j b25maWctPnBjaF9wZml0LmVuYWJsZWQgJiYKPj4gKwlpZiAoIXBpcGVfY29uZmlnLT5wY2hfcGZp dC5lbmFibGVkICYmCj4+ICAJICAgIChpbnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVMX09V VFBVVF9MVkRTKSB8fAo+PiAgCSAgICAgaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJTlRFTF9P VVRQVVRfRURQKSkpIHsKPj4gIAkJSTkxNV9XUklURShQRl9DVEwoY3J0Yy0+cGlwZSksIDApOwo+ PiAgCQlJOTE1X1dSSVRFKFBGX1dJTl9QT1MoY3J0Yy0+cGlwZSksIDApOwo+PiAgCQlJOTE1X1dS SVRFKFBGX1dJTl9TWihjcnRjLT5waXBlKSwgMCk7Cj4+ICAJfQo+PiAtCWNydGMtPmNvbmZpZy0+ cGlwZV9zcmNfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4+IC0JY3J0Yy0+Y29u ZmlnLT5waXBlX3NyY19oID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPj4gKwlwaXBl X2NvbmZpZy0+cGlwZV9zcmNfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4+ICsJ cGlwZV9jb25maWctPnBpcGVfc3JjX2ggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBpbnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPj4gQEAgLTMzNzksNiArMzM3Myw4IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+PiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZyA9Cj4+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gIAl1MzIgcmVnLCB0ZW1wLCB0cmll czsKPj4gIAo+PiBAQCAtMzM5Niw3ICszMzkyLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZmRp X2xpbmtfdHJhaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+PiAgCXJlZyA9IEZESV9UWF9DVEwo cGlwZSk7Cj4+ICAJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwo+PiAgCXRlbXAgJj0gfkZESV9EUF9Q T1JUX1dJRFRIX01BU0s7Cj4+IC0JdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChpbnRlbF9jcnRj LT5jb25maWctPmZkaV9sYW5lcyk7Cj4+ICsJdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChwaXBl X2NvbmZpZy0+ZmRpX2xhbmVzKTsKPj4gIAl0ZW1wICY9IH5GRElfTElOS19UUkFJTl9OT05FOwo+ PiAgCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xOwo+PiAgCUk5MTVfV1JJVEUocmVn LCB0ZW1wIHwgRkRJX1RYX0VOQUJMRSk7Cj4+IEBAIC0zNDc2LDYgKzM0NzIsOCBAQCBzdGF0aWMg dm9pZCBnZW42X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+PiArCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZyA9Cj4+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpOwo+PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gIAl1MzIgcmVnLCB0ZW1w LCBpLCByZXRyeTsKPj4gIAo+PiBAQCAtMzQ5NCw3ICszNDkyLDcgQEAgc3RhdGljIHZvaWQgZ2Vu Nl9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICAJcmVnID0gRkRJX1RY X0NUTChwaXBlKTsKPj4gIAl0ZW1wID0gSTkxNV9SRUFEKHJlZyk7Cj4+ICAJdGVtcCAmPSB+RkRJ X0RQX1BPUlRfV0lEVEhfTUFTSzsKPj4gLQl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRIKGludGVs X2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzKTsKPj4gKwl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRI KHBpcGVfY29uZmlnLT5mZGlfbGFuZXMpOwo+PiAgCXRlbXAgJj0gfkZESV9MSU5LX1RSQUlOX05P TkU7Cj4+ICAJdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzE7Cj4+ICAJdGVtcCAmPSB+ RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLOwo+PiBAQCAtMzYwOCw2ICszNjA2LDggQEAgc3Rh dGljIHZvaWQgaXZiX21hbnVhbF9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAgCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+PiArCQl0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKTsKPj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4+ICAJdTMy IHJlZywgdGVtcCwgaSwgajsKPj4gIAo+PiBAQCAtMzY0NSw3ICszNjQ1LDcgQEAgc3RhdGljIHZv aWQgaXZiX21hbnVhbF9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICAJ CXJlZyA9IEZESV9UWF9DVEwocGlwZSk7Cj4+ICAJCXRlbXAgPSBJOTE1X1JFQUQocmVnKTsKPj4g IAkJdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKPj4gLQkJdGVtcCB8PSBGRElfRFBf UE9SVF9XSURUSChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyk7Cj4+ICsJCXRlbXAgfD0g RkRJX0RQX1BPUlRfV0lEVEgocGlwZV9jb25maWctPmZkaV9sYW5lcyk7Cj4+ICAJCXRlbXAgfD0g RkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xX0lWQjsKPj4gIAkJdGVtcCAmPSB+RkRJX0xJTktfVFJB SU5fVk9MX0VNUF9NQVNLOwo+PiAgCQl0ZW1wIHw9IHNuYl9iX2ZkaV90cmFpbl9wYXJhbVtqLzJd Owo+PiBAQCAtMzkxNCwxMSArMzkxNCwxMCBAQCB2b2lkIGludGVsX2NydGNfd2FpdF9mb3JfcGVu ZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICB9Cj4+ICAKPj4gIC8qIFByb2dy YW0gaUNMS0lQIGNsb2NrIHRvIHRoZSBkZXNpcmVkIGZyZXF1ZW5jeSAqLwo+PiAtc3RhdGljIHZv aWQgbHB0X3Byb2dyYW1faWNsa2lwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gK3N0YXRpYyB2 b2lkIGxwdF9wcm9ncmFtX2ljbGtpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4+ICsJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+PiAg ewo+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQlpbnQgY2xv Y2sgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrOwo+PiArCWludCBjbG9jayA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19jbG9jazsKPj4gIAl1MzIgZGl2c2VsLCBwaGFzZWluYywgYXV4ZGl2LCBwaGFzZWRpciA9 IDA7Cj4+ICAJdTMyIHRlbXA7Cj4+ICAKPj4gQEAgLTQwMDIsMTMgKzQwMDEsMTAgQEAgc3RhdGlj IHZvaWQgbHB0X3Byb2dyYW1faWNsa2lwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIAltdXRl eF91bmxvY2soJmRldl9wcml2LT5kcGlvX2xvY2spOwo+PiAgfQo+PiAgCj4+IC1zdGF0aWMgdm9p ZCBpcm9ubGFrZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPj4gK3N0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gKwkJCQkJCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciwKPj4gIAkJCQkJCWVudW0gcGlwZSBwY2hfdHJhbnNjb2RlcikK Pj4gIHsKPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4g LQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFu c2NvZGVyOwo+PiAtCj4+ICAJSTkxNV9XUklURShQQ0hfVFJBTlNfSFRPVEFMKHBjaF90cmFuc2Nv ZGVyKSwKPj4gIAkJICAgSTkxNV9SRUFEKEhUT1RBTChjcHVfdHJhbnNjb2RlcikpKTsKPj4gIAlJ OTE1X1dSSVRFKFBDSF9UUkFOU19IQkxBTksocGNoX3RyYW5zY29kZXIpLAo+PiBAQCAtNDAyNiw3 ICs0MDIyLDggQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWlu Z3Moc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJCSAgIEk5MTVfUkVBRChWU1lOQ1NISUZU KGNwdV90cmFuc2NvZGVyKSkpOwo+PiAgfQo+PiAgCj4+IC1zdGF0aWMgdm9pZCBjcHRfc2V0X2Zk aV9iY19iaWZ1cmNhdGlvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIGVuYWJsZSkKPj4g K3N0YXRpYyB2b2lkIGNwdF9zZXRfZmRpX2JjX2JpZnVyY2F0aW9uKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4+ICsJCQkJICAgICAgIGJvb2wgZW5hYmxlKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICAJdWludDMyX3Qg dGVtcDsKPj4gQEAgLTQwNDcsMTUgKzQwNDQsMTUgQEAgc3RhdGljIHZvaWQgY3B0X3NldF9mZGlf YmNfYmlmdXJjYXRpb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpCj4+ICAJ UE9TVElOR19SRUFEKFNPVVRIX0NISUNLRU4xKTsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIHZvaWQg aXZ5YnJpZGdlX3VwZGF0ZV9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMpCj4+ICtzdGF0aWMgdm9pZCBpdnlicmlkZ2VfdXBkYXRlX2ZkaV9iY19iaWZ1cmNh dGlvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YywKPj4gKwkJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln KQo+PiAgewo+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRl djsKPj4gLQo+PiAgCXN3aXRjaCAoaW50ZWxfY3J0Yy0+cGlwZSkgewo+PiAgCWNhc2UgUElQRV9B Ogo+PiAgCQlicmVhazsKPj4gIAljYXNlIFBJUEVfQjoKPj4gLQkJaWYgKGludGVsX2NydGMtPmNv bmZpZy0+ZmRpX2xhbmVzID4gMikKPj4gKwkJaWYgKHBpcGVfY29uZmlnLT5mZGlfbGFuZXMgPiAy KQo+PiAgCQkJY3B0X3NldF9mZGlfYmNfYmlmdXJjYXRpb24oZGV2LCBmYWxzZSk7Cj4+ICAJCWVs c2UKPj4gIAkJCWNwdF9zZXRfZmRpX2JjX2JpZnVyY2F0aW9uKGRldiwgdHJ1ZSk7Cj4+IEBAIC00 MDc4LDcgKzQwNzUsOCBAQCBzdGF0aWMgdm9pZCBpdnlicmlkZ2VfdXBkYXRlX2ZkaV9iY19iaWZ1 cmNhdGlvbihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPj4gICAqICAgLSBEUCB0cmFu c2NvZGluZyBiaXRzCj4+ICAgKiAgIC0gdHJhbnNjb2Rlcgo+PiAgICovCj4+IC1zdGF0aWMgdm9p ZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+PiArc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2Vu YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICsJCQkJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Cj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPj4gQEAgLTQwODksNyArNDA4Nyw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Bj aF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Cj4+ICAJYXNzZXJ0X3BjaF90cmFuc2NvZGVyX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlKTsKPj4g IAo+PiAgCWlmIChJU19JVllCUklER0UoZGV2KSkKPj4gLQkJaXZ5YnJpZGdlX3VwZGF0ZV9mZGlf YmNfYmlmdXJjYXRpb24oaW50ZWxfY3J0Yyk7Cj4+ICsJCWl2eWJyaWRnZV91cGRhdGVfZmRpX2Jj X2JpZnVyY2F0aW9uKGRldiwgaW50ZWxfY3J0YywKPj4gKwkJCQkJCSAgICBwaXBlX2NvbmZpZyk7 Cj4+ICAKPj4gIAkvKiBXcml0ZSB0aGUgVFUgc2l6ZSBiaXRzIGJlZm9yZSBmZGkgbGluayB0cmFp bmluZywgc28gdGhhdCBlcnJvcgo+PiAgCSAqIGRldGVjdGlvbiB3b3Jrcy4gKi8KPj4gQEAgLTQx MjEsMTEgKzQxMjAsMTIgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKPj4gIAkgKiBOb3RlIHRo YXQgZW5hYmxlX3NoYXJlZF9kcGxsIHRyaWVzIHRvIGRvIHRoZSByaWdodCB0aGluZywgYnV0Cj4+ ICAJICogZ2V0X3NoYXJlZF9kcGxsIHVuY29uZGl0aW9uYWxseSByZXNldHMgdGhlIHBsbCAtIHdl IG5lZWQgdGhhdCB0byBoYXZlCj4+ICAJICogdGhlIHJpZ2h0IExWRFMgZW5hYmxlIHNlcXVlbmNl LiAqLwo+PiAtCWludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPj4gKwlpbnRl bF9lbmFibGVfc2hhcmVkX2RwbGwoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7 Cj4+ICAKPj4gIAkvKiBzZXQgdHJhbnNjb2RlciB0aW1pbmcsIHBhbmVsIG11c3QgYWxsb3cgaXQg Ki8KPj4gIAlhc3NlcnRfcGFuZWxfdW5sb2NrZWQoZGV2X3ByaXYsIHBpcGUpOwo+PiAtCWlyb25s YWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKGludGVsX2NydGMsIHBpcGUpOwo+PiArCWly b25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKGRldl9wcml2LAo+PiArCQkJCQkgICAg cGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKPj4gIAo+PiAgCWludGVsX2ZkaV9u b3JtYWxfdHJhaW4oY3J0Yyk7Cj4+ICAKPj4gQEAgLTQxNjYsMTkgKzQxNjYsMTcgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICoKPj4gIAlpcm9ubGFrZV9lbmFibGVfcGNoX3RyYW5zY29kZXIoZGV2 X3ByaXYsIHBpcGUsIHBpcGVfY29uZmlnKTsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIHZvaWQgbHB0 X3BjaF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+PiArc3RhdGljIHZvaWQgbHB0X3Bj aF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiArCQkJICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+PiAgewo+PiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPj4gKwllbnVtIHRy YW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4+ ICAKPj4gIAlhc3NlcnRfcGNoX3RyYW5zY29kZXJfZGlzYWJsZWQoZGV2X3ByaXYsIFRSQU5TQ09E RVJfQSk7Cj4+ICAKPj4gLQlscHRfcHJvZ3JhbV9pY2xraXAoY3J0Yyk7Cj4+ICsJbHB0X3Byb2dy YW1faWNsa2lwKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7Cj4+ICAKPj4gIAkvKiBTZXQgdHJhbnNj b2RlciB0aW1pbmcuICovCj4+IC0JaXJvbmxha2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWluZ3Mo aW50ZWxfY3J0YywgUElQRV9BKTsKPj4gKwlpcm9ubGFrZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGlt aW5ncyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIFBJUEVfQSk7Cj4+ICAKPj4gIAlscHRfZW5h YmxlX3BjaF90cmFuc2NvZGVyKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7Cj4+ICB9Cj4+IEBA IC00NzgxLDcgKzQ3NzksOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4+ICAJcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKTsKPj4gIAo+PiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVy KQo+PiAtCQlpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKGludGVsX2NydGMpOwo+PiArCQlpbnRl bF9wcmVwYXJlX3NoYXJlZF9kcGxsKGRldl9wcml2LAo+PiArCQkJCQkgIHBpcGVfY29uZmlnLT5z aGFyZWRfZHBsbCk7Cj4+ICAKPj4gIAlpZiAocGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyKQo+ PiAgCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPj4gQEAgLTQ4NTQsOCAr NDg1Myw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+PiAgCVdBUk5fT04oIWNydGMtPnN0YXRlLT5lbmFibGUpOwo+PiAgCj4+ICAJcGlw ZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPj4gLQlpZiAoaW50 ZWxfY3J0Y190b19zaGFyZWRfZHBsbChpbnRlbF9jcnRjKSkKPj4gLQkJaW50ZWxfZW5hYmxlX3No YXJlZF9kcGxsKGludGVsX2NydGMpOwo+PiArCWlmIChwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwg Pj0gMCkKPj4gKwkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGRldl9wcml2LCBwaXBlX2NvbmZp Zy0+c2hhcmVkX2RwbGwpOwo+PiAgCj4+ICAJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2Rl cikKPj4gIAkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9OMSk7Cj4+IEBAIC00OTEw LDcgKzQ5MDksNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPj4gIAlpbnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKPj4gIAo+PiAg CWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikKPj4gLQkJbHB0X3BjaF9l bmFibGUoY3J0Yyk7Cj4+ICsJCWxwdF9wY2hfZW5hYmxlKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7 Cj4+ICAKPj4gIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKPj4g IAkJaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNydGMsCj4+IEBAIC0xMTkyOSw3ICsx MTkyOCw4IEBAIGNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4+ICAJCSAgICAgcGxsLT5vbiwgYWN0aXZlKTsKPj4gIAo+PiAgCQlmb3JfZWFjaF9pbnRlbF9j cnRjKGRldiwgY3J0Yykgewo+PiAtCQkJaWYgKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAmJiBp bnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBsbCkKPj4gKwkJCWlmIChjcnRjLT5i YXNlLnN0YXRlLT5hY3RpdmUgJiYKPj4gKwkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PmJhc2Uuc3RhdGUpLT5zaGFyZWRfZHBsbCA9PSBpKQo+PiAgCQkJCWFjdGl2ZV9jcnRjcysrOwo+ PiAgCQl9Cj4+ICAJCUk5MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZSAhPSBhY3RpdmVfY3J0Y3Ms Cj4+IEBAIC0xMjMxMSw3ICsxMjMxMSw2IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+ICAJX19pbnRlbF9zZXRfbW9kZV91cGRh dGVfcGxhbmVzKGRldiwgc3RhdGUpOwo+PiAgCj4+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKPj4gLQkJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+PiAgCQlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWc7Cj4+ICAKPj4gIAkJaWYgKCFuZWVkc19tb2Rlc2V0KGNydGMt PnN0YXRlKSkKPj4gQEAgLTEyMzI0LDggKzEyMzIzLDcgQEAgc3RhdGljIGludCBfX2ludGVsX3Nl dF9tb2RlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gIAkJaW50ZWxfY3J0Y19k cG1zX292ZXJsYXlfZGlzYWJsZSh0b19pbnRlbF9jcnRjKGNydGMpKTsKPj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuY3J0Y19kaXNhYmxlKGNydGMsIHBpcGVfY29uZmlnKTsKPj4gIAo+PiAtCQlpZiAo aW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChpbnRlbF9jcnRjKSkKPj4gLQkJCWludGVsX2Rpc2Fi bGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7Cj4+ICsJCWludGVsX2Rpc2FibGVfc2hhcmVkX2Rw bGwoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7Cj4+ICAJfQo+PiAgCj4+ICAJ LyogT25seSBhZnRlciBkaXNhYmxpbmcgYWxsIG91dHB1dCBwaXBlbGluZXMgdGhhdCB3aWxsIGJl IGNoYW5nZWQgY2FuIHdlCj4+IEBAIC0xMjcxOSw3ICsxMjcxNyw5IEBAIHN0YXRpYyB2b2lkIGli eF9wY2hfZHBsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4g IAo+PiAgCS8qIE1ha2Ugc3VyZSBubyB0cmFuc2NvZGVyIGlzbid0IHN0aWxsIGRlcGVuZGluZyBv biB1cy4gKi8KPj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+PiAtCQlpZiAo aW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChjcnRjKSA9PSBwbGwpCj4+ICsJCWludCBpID0gcGxs IC0gZGV2X3ByaXYtPnNoYXJlZF9kcGxsczsKPj4gKwo+PiArCQlpZiAodG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5iYXNlLnN0YXRlKS0+c2hhcmVkX2RwbGwgPT0gaSkKPj4gIAkJCWFzc2VydF9w Y2hfdHJhbnNjb2Rlcl9kaXNhYmxlZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7Cj4+ICAJfQo+IFRo aXMgaXMgY2FsbGVkIHdpdGggdGhlIHdpdGggdGhlIG5ldyBjb25maWcgYWxyZWFkeSBwdXQgaW4g cGxhY2UsIGJ1dCBpdAo+IHNob3VsZCBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgX29sZF8gcGlw ZSBjb25maWdzIHRoYXQgdXNlZCB0aGUgZHBsbCBhcmUKPiByZWFsbHkgYWxsIHNodXQgZG93bi4g VGhpcyB3b24ndCBtaXNmaXJlIHNpbmNlIGlmIHdlIHNodXQgaXQgZG93biB0byB1c2UKPiBpdCBp biBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gdGhlbiB0aG9zZSBwaXBlcyBzaG91bGQgYmUgb2Zj IG9mZiB0b28uCj4gT3RvaCB3ZSBkbyBjaGVjayBiZWZvcmUgZW5hYmxpbmcgdGhlIHBpcGUgdGhh dCB0aGUgZHBsbCBpcyBydW5uaW5nLCBoZW5jZQo+IEkgdGhpbmsgdGhpcyBpcyByZWR1bmRhbnQg YW5kIG1heWJlIHdlIGNvdWxkIHJlbW92ZQo+IGl0IHJpZ2h0IGF3YXk/ClJlbW92aW5nIHNvdW5k cyBmaW5lLgoKfk1hYXJ0ZW4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK