From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v2 05/11] drm/i915: Allow mmio updates on all platforms, v2. Date: Fri, 15 Apr 2016 15:31:50 +0300 Message-ID: <1460723510.6600.36.camel@gmail.com> References: <1460539104-15661-1-git-send-email-maarten.lankhorst@linux.intel.com> <1460539104-15661-6-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: In-Reply-To: <1460539104-15661-6-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 , intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE2LTA0LTEzIGF0IDExOjE4ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBSZW5hbWUgaW50ZWxfdW5waW5fd29yayB0byBpbnRlbF9mbGlwX3dvcmsgYW5kIHVzZSBp dCBmb3IgbW1pbyBmbGlwcwo+IGFuZCB1bnBpbm5pbmcuCgpJIHRoaW5rIHRoZSByZW5hbWUgc2hv dWxkIGJlIGEgc2VwYXJhdGUgcGF0Y2guCgpBbmRlcgoKPiAgVXNlIGZsaXBfcXVldWVkX3JlcSB0 byBob2xkIHRoZSB3YWl0IHJlcXVlc3QgaW4gdGhlCj4gbW1pbyBjYXNlIGFuZCBhbGxvdyB0aGUg dmJsYW5rIGludGVycnVwdCB0byBjb21wbGV0ZSBtbWlvIHdvcmsgdG8KPiBoYXZlIG1taW8gZmxp cHMgcnVuIGNvcnJlY3RseSBvbiBnNCBhbmQgZWFybGllci4KPiAKPiBDaGFuZ2VzIHNpbmNlIHYx Ogo+IC0gQWRkIHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCkgdG8gX19pbnRlbF9wYWdlZmxpcF9zdGFs bF9jaGVjaywKPiAgIHRvIG1hdGNoIHRoZSBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKSBpbiBwaXBl X3VwZGF0ZV9lbmQoKS4KPiAtIENoZWNrIGZvciBjdXIgIT0gZmxpcF9xdWV1ZWRfdmJsYW5rIGlu IHBhZ2VmbGlwX3N0YWxsX2NoZWNrLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hv cnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyNzEgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+IC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDE4ICst LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgIDggKy0KPiAgNCBm aWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAyMDYgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IGMzYjAyOWU3YmZmZC4uNTY2MmNk NWExYTlkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNTc0LDEw ICs1NzQsMTAgQEAgc3RhdGljIGludCBpOTE1X2dlbV9wYWdlZmxpcF9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwKPiB2b2lkICpkYXRhKQo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMp IHsKPiAgCQljb25zdCBjaGFyIHBpcGUgPSBwaXBlX25hbWUoY3J0Yy0+cGlwZSk7Cj4gIAkJY29u c3QgY2hhciBwbGFuZSA9IHBsYW5lX25hbWUoY3J0Yy0+cGxhbmUpOwo+IC0JCXN0cnVjdCBpbnRl bF91bnBpbl93b3JrICp3b3JrOwo+ICsJCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcms7Cj4g IAo+ICAJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Cj4gLQkJd29yayA9IGNydGMt PnVucGluX3dvcms7Cj4gKwkJd29yayA9IGNydGMtPmZsaXBfd29yazsKPiAgCQlpZiAod29yayA9 PSBOVUxMKSB7Cj4gIAkJCXNlcV9wcmludGYobSwgIk5vIGZsaXAgZHVlIG9uIHBpcGUgJWMgKHBs YW5lICVjKVxuIiwKPiAgCQkJCSAgIHBpcGUsIHBsYW5lKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCBmMWE4OTUxNTNlNjQuLmI2MTRmMTE4Yjk3MyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNDgsNiArNDgsMTEgQEAKPiAg I2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9kbWEtYnVm Lmg+Cj4gIAo+ICtzdGF0aWMgYm9vbCBpc19tbWlvX3dvcmsoc3RydWN0IGludGVsX2ZsaXBfd29y ayAqd29yaykKPiArewo+ICsJcmV0dXJuIHdvcmstPm1taW9fd29yay5mdW5jOwo+ICt9Cj4gKwo+ ICAvKiBQcmltYXJ5IHBsYW5lIGZvcm1hdHMgZm9yIGdlbiA8PSAzICovCj4gIHN0YXRpYyBjb25z dCB1aW50MzJfdCBpOHh4X3ByaW1hcnlfZm9ybWF0c1tdID0gewo+ICAJRFJNX0ZPUk1BVF9DOCwK PiBAQCAtMzI4NSw3ICszMjkwLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0Y19oYXNfcGVuZGlu Z19mbGlwKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4g IAlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+IC0JcGVuZGluZyA9IHRvX2ludGVs X2NydGMoY3J0YyktPnVucGluX3dvcmsgIT0gTlVMTDsKPiArCXBlbmRpbmcgPSB0b19pbnRlbF9j cnRjKGNydGMpLT5mbGlwX3dvcmsgIT0gTlVMTDsKPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2LT5l dmVudF9sb2NrKTsKPiAgCj4gIAlyZXR1cm4gcGVuZGluZzsKPiBAQCAtMzg2NCw3ICszODY5LDcg QEAgYm9vbCBpbnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJCWlmIChhdG9taWNfcmVhZCgmY3J0Yy0+dW5waW5fd29ya19jb3VudCkgPT0gMCkKPiAg CQkJY29udGludWU7Cj4gIAo+IC0JCWlmIChjcnRjLT51bnBpbl93b3JrKQo+ICsJCWlmIChjcnRj LT5mbGlwX3dvcmspCj4gIAkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGNydGMtPnBpcGUp Owo+ICAKPiAgCQlyZXR1cm4gdHJ1ZTsKPiBAQCAtMzg3NiwxMSArMzg4MSwxMSBAQCBib29sIGlu dGVsX2hhc19wZW5kaW5nX2ZiX3VucGluKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldikKPiAgc3Rh dGljIHZvaWQgcGFnZV9mbGlwX2NvbXBsZXRlZChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShp bnRlbF9jcnRjLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yayA9 IGludGVsX2NydGMtPnVucGluX3dvcms7Cj4gKwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3Jr ID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3JrOwo+ICAKPiAtCS8qIGVuc3VyZSB0aGF0IHRoZSB1bnBp biB3b3JrIGlzIGNvbnNpc3RlbnQgd3J0IC0+cGVuZGluZy4gKi8KPiArCS8qIGVuc3VyZSB0aGF0 IHRoZSBmbGlwIHdvcmsgaXMgY29uc2lzdGVudCB3cnQgLT5wZW5kaW5nLiAqLwo+ICAJc21wX3Jt YigpOwo+IC0JaW50ZWxfY3J0Yy0+dW5waW5fd29yayA9IE5VTEw7Cj4gKwlpbnRlbF9jcnRjLT5m bGlwX3dvcmsgPSBOVUxMOwo+ICAKPiAgCWlmICh3b3JrLT5ldmVudCkKPiAgCQlkcm1fc2VuZF92 YmxhbmtfZXZlbnQoaW50ZWxfY3J0Yy0+YmFzZS5kZXYsCj4gQEAgLTM4OTAsNyArMzg5NSw3IEBA IHN0YXRpYyB2b2lkIHBhZ2VfZmxpcF9jb21wbGV0ZWQoc3RydWN0IGludGVsX2NydGMKPiAqaW50 ZWxfY3J0YykKPiAgCWRybV9jcnRjX3ZibGFua19wdXQoJmludGVsX2NydGMtPmJhc2UpOwo+ICAK PiAgCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlKTsKPiAtCXF1ZXVl X3dvcmsoZGV2X3ByaXYtPndxLCAmd29yay0+d29yayk7Cj4gKwlxdWV1ZV93b3JrKGRldl9wcml2 LT53cSwgJndvcmstPnVucGluX3dvcmspOwo+ICAKPiAgCXRyYWNlX2k5MTVfZmxpcF9jb21wbGV0 ZShpbnRlbF9jcnRjLT5wbGFuZSwKPiAgCQkJCSB3b3JrLT5wZW5kaW5nX2ZsaXBfb2JqKTsKPiBA QCAtMzkxNCw5ICszOTE5LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y193YWl0X2Zvcl9wZW5k aW5nX2ZsaXBzKHN0cnVjdAo+IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCWlmIChyZXQgPT0gMCkg ewo+ICAJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiArCQlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrOwo+ICAKPiAgCQlzcGluX2xvY2tf aXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+IC0JCWlmIChpbnRlbF9jcnRjLT51bnBpbl93b3JrKSB7 Cj4gKwkJd29yayA9IGludGVsX2NydGMtPmZsaXBfd29yazsKPiArCQlpZiAod29yayAmJiAhaXNf bW1pb193b3JrKHdvcmspKSB7Cj4gIAkJCVdBUk5fT05DRSgxLCAiUmVtb3Zpbmcgc3R1Y2sgcGFn ZSBmbGlwXG4iKTsKPiAgCQkJcGFnZV9mbGlwX2NvbXBsZXRlZChpbnRlbF9jcnRjKTsKPiAgCQl9 Cj4gQEAgLTYzMDgsNyArNjMxNSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9u b2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMKPiAqY3J0YykKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYg KHRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKS0+dmlzaWJsZSkgewo+ IC0JCVdBUk5fT04oaW50ZWxfY3J0Yy0+dW5waW5fd29yayk7Cj4gKwkJV0FSTl9PTihpbnRlbF9j cnRjLT5mbGlwX3dvcmspOwo+ICAKPiAgCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5X25vYXRv bWljKGNydGMpOwo+ICAKPiBAQCAtMTA4ODEsMTUgKzEwODg4LDE2IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfZGVzdHJveShzdHJ1Y3QgZHJtX2NydGMKPiAqY3J0YykKPiAgewo+ICAJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0cnVjdCBpbnRlbF91bnBpbl93b3Jr ICp3b3JrOwo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKPiAgCj4gIAlzcGluX2xv Y2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+IC0Jd29yayA9IGludGVsX2NydGMtPnVucGluX3dv cms7Cj4gLQlpbnRlbF9jcnRjLT51bnBpbl93b3JrID0gTlVMTDsKPiArCXdvcmsgPSBpbnRlbF9j cnRjLT5mbGlwX3dvcms7Cj4gKwlpbnRlbF9jcnRjLT5mbGlwX3dvcmsgPSBOVUxMOwo+ICAJc3Bp bl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+ICAKPiAgCWlmICh3b3JrKSB7Cj4gLQkJ Y2FuY2VsX3dvcmtfc3luYygmd29yay0+d29yayk7Cj4gKwkJY2FuY2VsX3dvcmtfc3luYygmd29y ay0+bW1pb193b3JrKTsKPiArCQljYW5jZWxfd29ya19zeW5jKCZ3b3JrLT51bnBpbl93b3JrKTsK PiAgCQlrZnJlZSh3b3JrKTsKPiAgCX0KPiAgCj4gQEAgLTEwOTAwLDEyICsxMDkwOCwxNSBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3koc3RydWN0IGRybV9jcnRjCj4gKmNydGMpCj4g IAo+ICBzdGF0aWMgdm9pZCBpbnRlbF91bnBpbl93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAq X193b3JrKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yayA9Cj4gLQkJY29u dGFpbmVyX29mKF9fd29yaywgc3RydWN0IGludGVsX3VucGluX3dvcmssIHdvcmspOwo+ICsJc3Ry dWN0IGludGVsX2ZsaXBfd29yayAqd29yayA9Cj4gKwkJY29udGFpbmVyX29mKF9fd29yaywgc3Ry dWN0IGludGVsX2ZsaXBfd29yaywgdW5waW5fd29yayk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMod29yay0+Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0 Yy0+YmFzZS5wcmltYXJ5Owo+ICAKPiArCWlmIChpc19tbWlvX3dvcmsod29yaykpCj4gKwkJZmx1 c2hfd29yaygmd29yay0+bW1pb193b3JrKTsKPiArCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gIAlpbnRlbF91bnBpbl9mYl9vYmood29yay0+b2xkX2ZiLCBwcmltYXJ5LT5z dGF0ZS0+cm90YXRpb24pOwo+ICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJndvcmstPnBl bmRpbmdfZmxpcF9vYmotPmJhc2UpOwo+IEBAIC0xMDk3MSwxNiArMTA5ODIsMTYgQEAgc3RhdGlj IGJvb2wgcGFnZV9mbGlwX2ZpbmlzaGVkKHN0cnVjdCBpbnRlbF9jcnRjCj4gKmNydGMpCj4gIAkg KiBhbnl3YXksIHdlIGRvbid0IHJlYWxseSBjYXJlLgo+ICAJICovCj4gIAlyZXR1cm4gKEk5MTVf UkVBRChEU1BTVVJGTElWRShjcnRjLT5wbGFuZSkpICYgfjB4ZmZmKSA9PQo+IC0JCWNydGMtPnVu cGluX3dvcmstPmd0dF9vZmZzZXQgJiYKPiArCQljcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQg JiYKPiAgCQlnNHhfZmxpcF9jb3VudF9hZnRlcl9lcShJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRf RzRYKGNydGMKPiAtPnBpcGUpKSwKPiAtCQkJCSAgICBjcnRjLT51bnBpbl93b3JrLT5mbGlwX2Nv dW50KTsKPiArCQkJCSAgICBjcnRjLT5mbGlwX3dvcmstPmZsaXBfY291bnQpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBkb19pbnRlbF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkJCQkgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0cnVj dCBpbnRlbF91bnBpbl93b3JrICp3b3JrOwo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29y azsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAo+ICAJLyogSWdub3JlIGVhcmx5IHZibGFu ayBpcnFzICovCj4gQEAgLTEwOTkyLDExICsxMTAwMywxMSBAQCBzdGF0aWMgdm9pZCBkb19pbnRl bF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqIGxvc3Qg cGFnZWZsaXBzKSBzbyBuZWVkcyB0aGUgZnVsbCBpcnFzYXZlIHNwaW5sb2Nrcy4KPiAgCSAqLwo+ ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+IC0Jd29yayA9 IGludGVsX2NydGMtPnVucGluX3dvcms7Cj4gKwl3b3JrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3Jr Owo+ICAKPiAgCWlmICh3b3JrID09IE5VTEwgfHwKPiAgCSAgICBhdG9taWNfcmVhZCgmd29yay0+ cGVuZGluZykgPT0gSU5URUxfRkxJUF9JTkFDVElWRSB8fAo+IC0JICAgIXBhZ2VfZmxpcF9maW5p c2hlZChpbnRlbF9jcnRjKSkgewo+ICsJICAgICFwYWdlX2ZsaXBfZmluaXNoZWQoaW50ZWxfY3J0 YykpIHsKPiAgCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdz KTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gQEAgLTExMDIyLDcgKzExMDMzLDcgQEAgdm9pZCBpbnRl bF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgaW50IHBs YW5lKQo+ICAJZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChkZXYsIGNydGMpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKHN0cnVjdCBp bnRlbF91bnBpbl93b3JrICp3b3JrKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbWFya19w YWdlX2ZsaXBfYWN0aXZlKHN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcmspCj4gIHsKPiAgCS8q IEVuc3VyZSB0aGF0IHRoZSB3b3JrIGl0ZW0gaXMgY29uc2lzdGVudCB3aGVuIGFjdGl2YXRpbmcg aXQgLi4uICovCj4gIAlzbXBfd21iKCk7Cj4gQEAgLTExMDU5LDEwICsxMTA3MCw5IEBAIHN0YXRp YyBpbnQgaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwKPiAg CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUCB8Cj4gIAkJCU1JX0RJU1BM QVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwo+ICAJaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgZmItPnBpdGNoZXNbMF0pOwo+IC0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxf Y3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwo+ICAJaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgMCk7IC8qIGF1eCBkaXNwbGF5IGJhc2UgYWRkcmVzcywgdW51c2VkICovCj4gIAo+ IC0JaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKGludGVsX2NydGMtPnVucGluX3dvcmspOwo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTExMDkxLDEwICsxMTEwMSw5IEBAIHN0YXRpYyBp bnQgaW50ZWxfZ2VuM19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwKPiAgCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwKPiAgCQkJTUlfRElT UExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLCBmYi0+cGl0Y2hlc1swXSk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpbnRl bF9jcnRjLT51bnBpbl93b3JrLT5ndHRfb2Zmc2V0KTsKPiArCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7Cj4gIAlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9OT09QKTsKPiAgCj4gLQlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUo aW50ZWxfY3J0Yy0+dW5waW5fd29yayk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMTEx MjIsNyArMTExMzEsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVfZmxpcChzdHJ1Y3Qg ZHJtX2RldmljZQo+ICpkZXYsCj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZ X0ZMSVAgfAo+ICAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsK PiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBdKTsKPiAtCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQgfAo+ICsJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0 IHwKPiAgCQkJb2JqLT50aWxpbmdfbW9kZSk7Cj4gIAo+ICAJLyogWFhYIEVuYWJsaW5nIHRoZSBw YW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxpcCBpcyBzbyBmYXIKPiBAQCAtMTExMzMsNyArMTEx NDIsNiBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rldmlj ZQo+ICpkZXYsCj4gIAlwaXBlc3JjID0gSTkxNV9SRUFEKFBJUEVTUkMoaW50ZWxfY3J0Yy0+cGlw ZSkpICYgMHgwZmZmMGZmZjsKPiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHBmIHwgcGlwZXNy Yyk7Cj4gIAo+IC0JaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKGludGVsX2NydGMtPnVucGlu X3dvcmspOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTExMTU3LDcgKzExMTY1LDcgQEAg c3RhdGljIGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2 LAo+ICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExBWV9GTElQIHwKPiAgCQkJTUlf RElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Cj4gIAlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUpOwo+IC0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+dW5waW5fd29yay0+Z3R0X29mZnNldCk7Cj4g KwlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZz ZXQpOwo+ICAKPiAgCS8qIENvbnRyYXJ5IHRvIHRoZSBzdWdnZXN0aW9ucyBpbiB0aGUgZG9jdW1l bnRhdGlvbiwKPiAgCSAqICJFbmFibGUgUGFuZWwgRml0dGVyIiBkb2VzIG5vdCBzZWVtIHRvIGJl IHJlcXVpcmVkIHdoZW4gcGFnZQo+IEBAIC0xMTE2OSw3ICsxMTE3Nyw2IEBAIHN0YXRpYyBpbnQg aW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwKPiAgCXBpcGVz cmMgPSBJOTE1X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAweDBmZmYwZmZmOwo+ ICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgcGYgfCBwaXBlc3JjKTsKPiAgCj4gLQlpbnRlbF9t YXJrX3BhZ2VfZmxpcF9hY3RpdmUoaW50ZWxfY3J0Yy0+dW5waW5fd29yayk7Cj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiBAQCAtMTEyNjEsMTAgKzExMjY4LDkgQEAgc3RhdGljIGludCBpbnRlbF9n ZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2LAo+ICAKPiAgCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwgcGxhbmVfYml0KTsKPiAgCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIChmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUp KTsKPiAtCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0 dF9vZmZzZXQpOwo+ICsJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93 b3JrLT5ndHRfb2Zmc2V0KTsKPiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIChNSV9OT09QKSk7 Cj4gIAo+IC0JaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKGludGVsX2NydGMtPnVucGluX3dv cmspOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTExMjgyLDkgKzExMjg4LDYgQEAgc3Rh dGljIGJvb2wgdXNlX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gKmVuZ2luZSwK PiAgCWlmIChlbmdpbmUgPT0gTlVMTCkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gLQlpZiAoSU5U RUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA8IDUpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAg CWlmIChpOTE1LnVzZV9tbWlvX2ZsaXAgPCAwKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCWVsc2Ug aWYgKGk5MTUudXNlX21taW9fZmxpcCA+IDApCj4gQEAgLTExMjk5LDEyNiArMTEzMDIsMjEgQEAg c3RhdGljIGJvb2wgdXNlX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gKmVuZ2lu ZSwKPiAgCQlyZXR1cm4gZW5naW5lICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmoK PiAtPmxhc3Rfd3JpdGVfcmVxKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX2RvX21taW9f ZmxpcChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAtCQkJICAgICB1bnNpZ25lZCBp bnQgcm90YXRpb24sCj4gLQkJCSAgICAgc3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcmspCj4g K3N0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0 ICp3KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY3J0Yy0+YmFzZS5k ZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBpbnRlbF9jcnRjLT5iYXNlLnBy aW1hcnktPmZiOwo+IC0JY29uc3QgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ IC0JdTMyIGN0bCwgc3RyaWRlLCB0aWxlX2hlaWdodDsKPiAtCj4gLQljdGwgPSBJOTE1X1JFQUQo UExBTkVfQ1RMKHBpcGUsIDApKTsKPiAtCWN0bCAmPSB+UExBTkVfQ1RMX1RJTEVEX01BU0s7Cj4g LQlzd2l0Y2ggKGZiLT5tb2RpZmllclswXSkgewo+IC0JY2FzZSBEUk1fRk9STUFUX01PRF9OT05F Ogo+IC0JCWJyZWFrOwo+IC0JY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiAtCQljdGwg fD0gUExBTkVfQ1RMX1RJTEVEX1g7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEOgo+IC0JCWN0bCB8PSBQTEFORV9DVExfVElMRURfWTsKPiAtCQlicmVhazsKPiAt CWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+IC0JCWN0bCB8PSBQTEFORV9DVExfVElM RURfWUY7Cj4gLQkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FTRShmYi0+bW9k aWZpZXJbMF0pOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBUaGUgc3RyaWRlIGlzIGVpdGhlciBl eHByZXNzZWQgYXMgYSBtdWx0aXBsZSBvZiA2NCBieXRlcyBjaHVua3MKPiBmb3IKPiAtCSAqIGxp bmVhciBidWZmZXJzIG9yIGluIG51bWJlciBvZiB0aWxlcyBmb3IgdGlsZWQgYnVmZmVycy4KPiAt CSAqLwo+IC0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKPiAtCQkv KiBzdHJpZGUgPSBTdXJmYWNlIGhlaWdodCBpbiB0aWxlcyAqLwo+IC0JCXRpbGVfaGVpZ2h0ID0g aW50ZWxfdGlsZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwKPiAwKTsKPiAtCQlz dHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+IC0JfSBlbHNl IHsKPiAtCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSAvCj4gLQkJCWludGVsX2ZiX3N0cmlkZV9h bGlnbm1lbnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwKPiAtCQkJCQkJICBmYi0+cGl4ZWxf Zm9ybWF0KTsKPiAtCX0KPiAtCj4gLQkvKgo+IC0JICogQm90aCBQTEFORV9DVEwgYW5kIFBMQU5F X1NUUklERSBhcmUgbm90IHVwZGF0ZWQgb24gdmJsYW5rIGJ1dCBvbgo+IC0JICogUExBTkVfU1VS RiB1cGRhdGVzLCB0aGUgdXBkYXRlIGlzIHRoZW4gZ3VhcmFudGVlZCB0byBiZSBhdG9taWMuCj4g LQkgKi8KPiAtCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBjdGwpOwo+IC0JSTkxNV9X UklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gLQo+IC0JSTkxNV9XUklURShQ TEFORV9TVVJGKHBpcGUsIDApLCB3b3JrLT5ndHRfb2Zmc2V0KTsKPiAtCVBPU1RJTkdfUkVBRChQ TEFORV9TVVJGKHBpcGUsIDApKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgaWxrX2RvX21taW9f ZmxpcChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAtCQkJICAgICBzdHJ1Y3QgaW50 ZWxfdW5waW5fd29yayAqd29yaykKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2NydGMtPmJhc2UuZGV2Owo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yayA9Cj4g KwkJY29udGFpbmVyX29mKHcsIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmssIG1taW9fd29yayk7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMod29yay0+Y3J0Yyk7Cj4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGlu dGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9Cj4gLQkJdG9faW50ZWxfZnJhbWVidWZmZXIoaW50 ZWxfY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gaW50ZWxfZmItPm9iajsKPiAtCWk5MTVfcmVnX3QgcmVnID0gRFNQQ05UUihpbnRl bF9jcnRjLT5wbGFuZSk7Cj4gLQl1MzIgZHNwY250cjsKPiAtCj4gLQlkc3BjbnRyID0gSTkxNV9S RUFEKHJlZyk7Cj4gLQo+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9O RSkKPiAtCQlkc3BjbnRyIHw9IERJU1BQTEFORV9USUxFRDsKPiAtCWVsc2UKPiAtCQlkc3BjbnRy ICY9IH5ESVNQUExBTkVfVElMRUQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnByaW1hcnkgPSB0 b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpOwo+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihwcmltYXJ5LT5iYXNlLnN0YXRlCj4gLT5mYik7 Cj4gIAo+IC0JSTkxNV9XUklURShyZWcsIGRzcGNudHIpOwo+IC0KPiAtCUk5MTVfV1JJVEUoRFNQ U1VSRihpbnRlbF9jcnRjLT5wbGFuZSksIHdvcmstPmd0dF9vZmZzZXQpOwo+IC0JUE9TVElOR19S RUFEKERTUFNVUkYoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKPiAtfQo+IC0KPiAtLyoKPiAtICogWFhY OiBUaGlzIGlzIHRoZSB0ZW1wb3Jhcnkgd2F5IHRvIHVwZGF0ZSB0aGUgcGxhbmUgcmVnaXN0ZXJz IHVudGlsIHdlIGdldAo+IC0gKiBhcm91bmQgdG8gdXNpbmcgdGhlIHVzdWFsIHBsYW5lIHVwZGF0 ZSBmdW5jdGlvbnMgZm9yIE1NSU8gZmxpcHMKPiAtICovCj4gLXN0YXRpYyB2b2lkIGludGVsX2Rv X21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfbW1pb19mbGlwICptbWlvX2ZsaXApCj4gLXsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gbW1pb19mbGlwLT5jcnRjOwo+IC0Jc3RydWN0IGludGVs X3VucGluX3dvcmsgKndvcms7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycSgmY3J0Yy0+YmFzZS5kZXYt PmV2ZW50X2xvY2spOwo+IC0Jd29yayA9IGNydGMtPnVucGluX3dvcms7Cj4gLQlzcGluX3VubG9j a19pcnEoJmNydGMtPmJhc2UuZGV2LT5ldmVudF9sb2NrKTsKPiAtCWlmICh3b3JrID09IE5VTEwp Cj4gLQkJcmV0dXJuOwo+IC0KPiAtCWludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNydGMpOwo+IC0K PiAtCWlmIChJTlRFTF9JTkZPKG1taW9fZmxpcC0+aTkxNSktPmdlbiA+PSA5KQo+IC0JCXNrbF9k b19tbWlvX2ZsaXAoY3J0YywgbW1pb19mbGlwLT5yb3RhdGlvbiwgd29yayk7Cj4gLQllbHNlCj4g LQkJLyogdXNlX21taW9fZmxpcCgpIHJldHJpY3RzIE1NSU8gZmxpcHMgdG8gaWxrKyAqLwo+IC0J CWlsa19kb19tbWlvX2ZsaXAoY3J0Yywgd29yayk7Cj4gLQo+IC0JaW50ZWxfcGlwZV91cGRhdGVf ZW5kKGNydGMpOwo+IC0KPiAtCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZSh3b3JrKTsKPiAt fQo+IC0KPiAtc3RhdGljIHZvaWQgaW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgKm1taW9fZmxp cCA9Cj4gLQkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAsIHdvcmsp Owo+IC0Jc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9Cj4gLQkJdG9faW50ZWxf ZnJhbWVidWZmZXIobW1pb19mbGlwLT5jcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKPiAtCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYi0+b2JqOwo+IC0KPiAtCWlmICht bWlvX2ZsaXAtPnJlcSkgewo+IC0JCVdBUk5fT04oX19pOTE1X3dhaXRfcmVxdWVzdChtbWlvX2Zs aXAtPnJlcSwKPiAtCQkJCQkgICAgbW1pb19mbGlwLT5jcnRjLT5yZXNldF9jb3VudGVyLAo+ICsJ aWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkKPiArCQlXQVJOX09OKF9faTkxNV93YWl0X3JlcXVl c3Qod29yay0+ZmxpcF9xdWV1ZWRfcmVxLAo+ICsJCQkJCSAgICBjcnRjLT5yZXNldF9jb3VudGVy LAo+ICAJCQkJCSAgICBmYWxzZSwgTlVMTCwKPiAtCQkJCQkgICAgJm1taW9fZmxpcC0+aTkxNQo+ IC0+cnBzLm1taW9mbGlwcykpOwo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3Vu bG9ja2VkKG1taW9fZmxpcC0+cmVxKTsKPiAtCX0KPiArCQkJCQkgICAgJmRldl9wcml2LT5ycHMu bW1pb2ZsaXBzKSk7Cj4gIAo+ICAJLyogRm9yIGZyYW1lYnVmZmVyIGJhY2tlZCBieSBkbWFidWYs IHdhaXQgZm9yIGZlbmNlICovCj4gIAlpZiAob2JqLT5iYXNlLmRtYV9idWYpCj4gQEAgLTExNDI2 LDI5ICsxMTMyNCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKHN0 cnVjdAo+IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJCQkJCQkJICAgIGZhbHNlLCBmYWxzZSwKPiAg CQkJCQkJCSAgIAo+ICBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKPiAgCj4gLQlpbnRlbF9k b19tbWlvX2ZsaXAobW1pb19mbGlwKTsKPiAtCWtmcmVlKG1taW9fZmxpcCk7Cj4gLX0KPiAtCj4g LXN0YXRpYyBpbnQgaW50ZWxfcXVldWVfbW1pb19mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gLQkJCQkgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCQkJIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgKm1taW9fZmxp cDsKPiAtCj4gLQltbWlvX2ZsaXAgPSBrbWFsbG9jKHNpemVvZigqbW1pb19mbGlwKSwgR0ZQX0tF Uk5FTCk7Cj4gLQlpZiAobW1pb19mbGlwID09IE5VTEwpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4g LQo+IC0JbW1pb19mbGlwLT5pOTE1ID0gdG9faTkxNShkZXYpOwo+IC0JbW1pb19mbGlwLT5yZXEg PSBpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShvYmotPmxhc3Rfd3JpdGVfcmVxKTsKPiAtCW1t aW9fZmxpcC0+Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQltbWlvX2ZsaXAtPnJvdGF0 aW9uID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uOwo+IC0KPiAtCUlOSVRfV09SSygm bW1pb19mbGlwLT53b3JrLCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKTsKPiAtCXNjaGVkdWxl X3dvcmsoJm1taW9fZmxpcC0+d29yayk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwlpbnRlbF9waXBl X3VwZGF0ZV9zdGFydChjcnRjKTsKPiArCXByaW1hcnktPnVwZGF0ZV9wbGFuZSgmcHJpbWFyeS0+ YmFzZSwKPiArCQkJICAgICAgY3J0Yy0+Y29uZmlnLAo+ICsJCQkgICAgICB0b19pbnRlbF9wbGFu ZV9zdGF0ZShwcmltYXJ5LT5iYXNlLnN0YXRlKSk7Cj4gKwlpbnRlbF9waXBlX3VwZGF0ZV9lbmQo Y3J0Yywgd29yayk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfZGVmYXVsdF9xdWV1ZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTExNDY2LDcgKzExMzQ2LDcgQEAgc3Rh dGljIGJvb2wgX19pbnRlbF9wYWdlZmxpcF9zdGFsbF9jaGVjayhzdHJ1Y3QKPiBkcm1fZGV2aWNl ICpkZXYsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yayA9IGludGVsX2Ny dGMtPnVucGluX3dvcms7Cj4gKwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrID0gaW50ZWxf Y3J0Yy0+ZmxpcF93b3JrOwo+ICAJdTMyIGFkZHI7Cj4gIAl1MzIgcGVuZGluZzsKPiAgCj4gQEAg LTExNDc0LDYgKzExMzU0LDE1IEBAIHN0YXRpYyBib29sIF9faW50ZWxfcGFnZWZsaXBfc3RhbGxf Y2hlY2soc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ICAJaWYgKHBlbmRpbmcgPT0gSU5URUxf RkxJUF9JTkFDVElWRSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICsJc21wX21iX19hZnRlcl9h dG9taWMoKTsKPiArCj4gKwlpZiAoaXNfbW1pb193b3JrKHdvcmspKSB7Cj4gKwkJdTMyIGN1ciA9 IGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKGludGVsX2NydGMpOwo+ICsKPiArCQkvKiBN TUlPIHdvcmsgY29tcGxldGVzIHdoZW4gdmJsYW5rIGlzIGRpZmZlcmVudCBmcm9tCj4gZmxpcF9x dWV1ZWRfdmJsYW5rLiAqLwo+ICsJCXJldHVybiBjdXIgIT0gd29yay0+ZmxpcF9xdWV1ZWRfdmJs YW5rOwo+ICsJfQo+ICsKPiAgCWlmICh3b3JrLT5mbGlwX3JlYWR5X3ZibGFuayA9PSAwKSB7Cj4g IAkJaWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSAmJgo+ICAJCSAgICAhaTkxNV9nZW1fcmVxdWVz dF9jb21wbGV0ZWQod29yay0+ZmxpcF9xdWV1ZWRfcmVxLCB0cnVlKSkKPiBAQCAtMTE1MDQsNyAr MTEzOTMsNyBAQCB2b2lkIGludGVsX2NoZWNrX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQKPiBwaXBlKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGRldl9wcml2LT5w aXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3 b3JrOwo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKPiAgCj4gIAlXQVJOX09OKCFp bl9pbnRlcnJ1cHQoKSk7Cj4gIAo+IEBAIC0xMTUxMiwxNCArMTE0MDEsMTUgQEAgdm9pZCBpbnRl bF9jaGVja19wYWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBpbnQgcGlwZSkKPiAg CQlyZXR1cm47Cj4gIAo+ICAJc3Bpbl9sb2NrKCZkZXYtPmV2ZW50X2xvY2spOwo+IC0Jd29yayA9 IGludGVsX2NydGMtPnVucGluX3dvcms7Cj4gKwl3b3JrID0gaW50ZWxfY3J0Yy0+ZmxpcF93b3Jr Owo+ICAJaWYgKHdvcmsgIT0gTlVMTCAmJiBfX2ludGVsX3BhZ2VmbGlwX3N0YWxsX2NoZWNrKGRl diwgY3J0YykpIHsKPiAtCQlXQVJOX09OQ0UoMSwgIktpY2tpbmcgc3R1Y2sgcGFnZSBmbGlwOiBx dWV1ZWQgYXQgJWQsIG5vdwo+ICVkXG4iLAo+ICsJCVdBUk5fT05DRSghaXNfbW1pb193b3JrKHdv cmspLAo+ICsJCQkgICJLaWNraW5nIHN0dWNrIHBhZ2UgZmxpcDogcXVldWVkIGF0ICVkLCBub3cg JWRcbiIsCj4gIAkJCSB3b3JrLT5mbGlwX3F1ZXVlZF92YmxhbmssIGRybV92YmxhbmtfY291bnQo ZGV2LAo+IHBpcGUpKTsKPiAgCQlwYWdlX2ZsaXBfY29tcGxldGVkKGludGVsX2NydGMpOwo+ICAJ CXdvcmsgPSBOVUxMOwo+ICAJfQo+IC0JaWYgKHdvcmsgIT0gTlVMTCAmJgo+ICsJaWYgKHdvcmsg IT0gTlVMTCAmJiAhaXNfbW1pb193b3JrKHdvcmspICYmCj4gIAkgICAgZHJtX3ZibGFua19jb3Vu dChkZXYsIHBpcGUpIC0gd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID4gMSkKPiAgCQlpbnRlbF9x dWV1ZV9ycHNfYm9vc3RfZm9yX3JlcXVlc3QoZGV2LCB3b3JrCj4gLT5mbGlwX3F1ZXVlZF9yZXEp Owo+ICAJc3Bpbl91bmxvY2soJmRldi0+ZXZlbnRfbG9jayk7Cj4gQEAgLTExNTM3LDcgKzExNDI3 LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKPiAgCWVu dW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXN0cnVjdCBpbnRlbF91bnBpbl93 b3JrICp3b3JrOwo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKPiAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgCWJvb2wgbW1pb19mbGlwOwo+ICAJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0gTlVMTDsKPiBAQCAtMTE1NzQsMTUgKzExNDY0 LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjCj4g KmNydGMsCj4gIAl3b3JrLT5ldmVudCA9IGV2ZW50Owo+ICAJd29yay0+Y3J0YyA9IGNydGM7Cj4g IAl3b3JrLT5vbGRfZmIgPSBvbGRfZmI7Cj4gLQlJTklUX1dPUksoJndvcmstPndvcmssIGludGVs X3VucGluX3dvcmtfZm4pOwo+ICsJSU5JVF9XT1JLKCZ3b3JrLT51bnBpbl93b3JrLCBpbnRlbF91 bnBpbl93b3JrX2ZuKTsKPiAgCj4gIAlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpOwo+ ICAJaWYgKHJldCkKPiAgCQlnb3RvIGZyZWVfd29yazsKPiAgCj4gLQkvKiBXZSBib3Jyb3cgdGhl IGV2ZW50IHNwaW4gbG9jayBmb3IgcHJvdGVjdGluZyB1bnBpbl93b3JrICovCj4gKwkvKiBXZSBi b3Jyb3cgdGhlIGV2ZW50IHNwaW4gbG9jayBmb3IgcHJvdGVjdGluZyBmbGlwX3dvcmsgKi8KPiAg CXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Cj4gLQlpZiAoaW50ZWxfY3J0Yy0+dW5w aW5fd29yaykgewo+ICsJaWYgKGludGVsX2NydGMtPmZsaXBfd29yaykgewo+ICAJCS8qIEJlZm9y ZSBkZWNsYXJpbmcgdGhlIGZsaXAgcXVldWUgd2VkZ2VkLCBjaGVjayBpZgo+ICAJCSAqIHRoZSBo YXJkd2FyZSBjb21wbGV0ZWQgdGhlIG9wZXJhdGlvbiBiZWhpbmQgb3VyIGJhY2tzLgo+ICAJCSAq Lwo+IEBAIC0xMTU5OCw3ICsxMTQ4OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2Zs aXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQlyZXR1cm4gLUVCVVNZOwo+ICAJCX0KPiAg CX0KPiAtCWludGVsX2NydGMtPnVucGluX3dvcmsgPSB3b3JrOwo+ICsJaW50ZWxfY3J0Yy0+Zmxp cF93b3JrID0gd29yazsKPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAg Cj4gIAlpZiAoYXRvbWljX3JlYWQoJmludGVsX2NydGMtPnVucGluX3dvcmtfY291bnQpID49IDIp Cj4gQEAgLTExNjY3LDIzICsxMTU1NywyMiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjLAo+ICAJd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5r ID0gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNydGMpOwo+ICAKPiAgCWlmIChtbWlvX2ZsaXApIHsK PiAtCQlyZXQgPSBpbnRlbF9xdWV1ZV9tbWlvX2ZsaXAoZGV2LCBjcnRjLCBvYmopOwo+IC0JCWlm IChyZXQpCj4gLQkJCWdvdG8gY2xlYW51cF91bnBpbjsKPiArCQlJTklUX1dPUksoJndvcmstPm1t aW9fd29yaywgaW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyk7Cj4gIAo+ICAJCWk5MTVfZ2VtX3Jl cXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCj4gIAkJCQkJb2JqLT5sYXN0X3dy aXRlX3JlcSk7Cj4gKwo+ICsJCXNjaGVkdWxlX3dvcmsoJndvcmstPm1taW9fd29yayk7Cj4gIAl9 IGVsc2Ugewo+ICsJCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlwX3F1ZXVlZF9y ZXEsIHJlcXVlc3QpOwo+ICAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAoZGV2 LCBjcnRjLCBmYiwgb2JqLAo+IHJlcXVlc3QsCj4gIAkJCQkJCSAgIHBhZ2VfZmxpcF9mbGFncyk7 Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBjbGVhbnVwX3VucGluOwo+ICAKPiAtCQlpOTE1X2dl bV9yZXF1ZXN0X2Fzc2lnbigmd29yay0+ZmxpcF9xdWV1ZWRfcmVxLCByZXF1ZXN0KTsKPiAtCX0K PiAtCj4gLQlpZiAocmVxdWVzdCkKPiArCQlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUod29y ayk7Cj4gIAkJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXF1ZXN0KTsKPiArCX0KPiAgCj4g IAl3b3JrLT5mbGlwX3F1ZXVlZF92YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY291bnQoY3J0Yyk7 Cj4gIAo+IEBAIC0xMTcxMyw3ICsxMTYwMiw3IEBAIGNsZWFudXA6Cj4gIAlkcm1fZnJhbWVidWZm ZXJfdW5yZWZlcmVuY2Uod29yay0+b2xkX2ZiKTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZkZXYt PmV2ZW50X2xvY2spOwo+IC0JaW50ZWxfY3J0Yy0+dW5waW5fd29yayA9IE5VTEw7Cj4gKwlpbnRl bF9jcnRjLT5mbGlwX3dvcmsgPSBOVUxMOwo+ICAJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50 X2xvY2spOwo+ICAKPiAgCWRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7Cj4gQEAgLTE0MDE4LDcg KzEzOTA3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmluaXNoX2NydGNfY29tbWl0KHN0cnVjdCBk cm1fY3J0Ywo+ICpjcnRjLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAo+IC0JaW50ZWxfcGlwZV91cGRhdGVfZW5kKGludGVs X2NydGMpOwo+ICsJaW50ZWxfcGlwZV91cGRhdGVfZW5kKGludGVsX2NydGMsIE5VTEwpOwo+ICB9 Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggYTI3MTJmNmYx ZWIzLi5kNDZhZmYwMzUwYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC01 OTIsMTQgKzU5Miw2IEBAIHN0cnVjdCB2bHZfd21fc3RhdGUgewo+ICAJYm9vbCBjeHNyOwo+ICB9 Owo+ICAKPiAtc3RydWN0IGludGVsX21taW9fZmxpcCB7Cj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg d29yazsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+IC0Jc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAtCXVu c2lnbmVkIGludCByb3RhdGlvbjsKPiAtfTsKPiAtCj4gIHN0cnVjdCBpbnRlbF9jcnRjIHsKPiAg CXN0cnVjdCBkcm1fY3J0YyBiYXNlOwo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gQEAgLTYxNCw3ICs2 MDYsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7Cj4gIAl1bnNpZ25lZCBsb25nIGVuYWJsZWRfcG93 ZXJfZG9tYWluczsKPiAgCWJvb2wgbG93ZnJlcV9hdmFpbDsKPiAgCXN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5Owo+IC0Jc3RydWN0IGludGVsX3VucGluX3dvcmsgKnVucGluX3dvcms7Cj4g KwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICpmbGlwX3dvcms7Cj4gIAo+ICAJYXRvbWljX3QgdW5w aW5fd29ya19jb3VudDsKPiAgCj4gQEAgLTkzNyw4ICs5MjksMTAgQEAgaW50ZWxfZ2V0X2NydGNf Zm9yX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludAo+IHBsYW5lKQo+ICAJcmV0dXJu IGRldl9wcml2LT5wbGFuZV90b19jcnRjX21hcHBpbmdbcGxhbmVdOwo+ICB9Cj4gIAo+IC1zdHJ1 Y3QgaW50ZWxfdW5waW5fd29yayB7Cj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiArc3Ry dWN0IGludGVsX2ZsaXBfd29yayB7Cj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgdW5waW5fd29yazsK PiArCXN0cnVjdCB3b3JrX3N0cnVjdCBtbWlvX3dvcms7Cj4gKwo+ICAJc3RydWN0IGRybV9jcnRj ICpjcnRjOwo+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiOwo+ICAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKnBlbmRpbmdfZmxpcF9vYmo7Cj4gQEAgLTE2MTgsNyArMTYxMiw3 IEBAIGludCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlw ZQo+IHBpcGUsIGludCBwbGFuZSk7Cj4gIGludCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9ya2V5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCSAgICAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2KTsKPiAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0Yyk7Cj4gLXZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKTsKPiArdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmsKPiAqd29yayk7Cj4gIAo+ICAv KiBpbnRlbF90di5jICovCj4gIHZvaWQgaW50ZWxfdHZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggZTJkZTZiMGRm NWE4Li44ZWM3Y2U1NDk4MzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ IEBAIC0xNTEsMTMgKzE1MSwxOSBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQo+ICAgKiByZS1lbmFibGVzIGludGVycnVwdHMgYW5kIHZlcmlm aWVzIHRoZSB1cGRhdGUgd2FzIGFjdHVhbGx5IGNvbXBsZXRlZAo+ICAgKiBiZWZvcmUgYSB2Ymxh bmsgdXNpbmcgdGhlIHZhbHVlIG9mIEBzdGFydF92YmxfY291bnQuCj4gICAqLwo+IC12b2lkIGlu dGVsX3BpcGVfdXBkYXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiArdm9pZCBpbnRl bF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9m bGlwX3dvcmsKPiAqd29yaykKPiAgewo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ ICAJaW50IHNjYW5saW5lX2VuZCA9IGludGVsX2dldF9jcnRjX3NjYW5saW5lKGNydGMpOwo+ICAJ dTMyIGVuZF92YmxfY291bnQgPSBpbnRlbF9jcnRjX2dldF92YmxhbmtfY291bnRlcihjcnRjKTsK PiAgCWt0aW1lX3QgZW5kX3ZibF90aW1lID0ga3RpbWVfZ2V0KCk7Cj4gIAo+ICsJaWYgKHdvcmsp IHsKPiArCQl3b3JrLT5mbGlwX3F1ZXVlZF92YmxhbmsgPSBlbmRfdmJsX2NvdW50Owo+ICsJCXNt cF9tYl9fYmVmb3JlX2F0b21pYygpOwo+ICsJCWF0b21pY19zZXQoJndvcmstPnBlbmRpbmcsIElO VEVMX0ZMSVBfUEVORElORyk7Cj4gKwl9Cj4gKwo+ICAJdHJhY2VfaTkxNV9waXBlX3VwZGF0ZV9l bmQoY3J0YywgZW5kX3ZibF9jb3VudCwgc2NhbmxpbmVfZW5kKTsKPiAgCj4gIAlsb2NhbF9pcnFf ZW5hYmxlKCk7Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=