From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 4/6] drm/i915: Allow mmio updates on all platforms. Date: Wed, 23 Mar 2016 17:07:30 +0200 Message-ID: <20160323150730.GV4329@intel.com> References: <1458739472-6582-1-git-send-email-maarten.lankhorst@linux.intel.com> <1458739472-6582-5-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 481826E0F3 for ; Wed, 23 Mar 2016 15:07:45 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1458739472-6582-5-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMjMsIDIwMTYgYXQgMDI6MjQ6MzBQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gUmVuYW1lIGludGVsX3VucGluX3dvcmsgdG8gaW50ZWxfZmxpcF93b3JrIGFu ZCB1c2UgaXQgZm9yIG1taW8gZmxpcHMKPiBhbmQgdW5waW5uaW5nLiBVc2UgZmxpcF9xdWV1ZWRf cmVxIHRvIGhvbGQgdGhlIHdhaXQgcmVxdWVzdCBpbiB0aGUKPiBtbWlvIGNhc2UgYW5kIGFsbG93 IHRoZSB2YmxhbmsgaW50ZXJydXB0IHRvIGNvbXBsZXRlIG1taW8gd29yayB0bwo+IGhhdmUgbW1p byBmbGlwcyBydW4gY29ycmVjdGx5IG9uIGc0IGFuZCBlYXJsaWVyLgoKQmVmb3JlIHlvdSBhY3R1 YWxseSBnbyBhbmQgdHJ1c3QgZHJtX3ZibGFua19jb3VudCgpIHlvdSBzaG91bGQgbWFrZSBpdApy YWNlIGZyZWUuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAyNzEgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDE2ICstLQo+ICAzIGZpbGVzIGNo YW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDIwNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDRhMDA3OGMxN2NkMS4uYmMyYWU3MGFiY2VhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNTczLDEwICs1NzMsMTAg QEAgc3RhdGljIGludCBpOTE1X2dlbV9wYWdlZmxpcF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gIAkJY29u c3QgY2hhciBwaXBlID0gcGlwZV9uYW1lKGNydGMtPnBpcGUpOwo+ICAJCWNvbnN0IGNoYXIgcGxh bmUgPSBwbGFuZV9uYW1lKGNydGMtPnBsYW5lKTsKPiAtCQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29y ayAqd29yazsKPiArCQlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrOwo+ICAKPiAgCQlzcGlu X2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+IC0JCXdvcmsgPSBjcnRjLT51bnBpbl93b3Jr Owo+ICsJCXdvcmsgPSBjcnRjLT5mbGlwX3dvcms7Cj4gIAkJaWYgKHdvcmsgPT0gTlVMTCkgewo+ ICAJCQlzZXFfcHJpbnRmKG0sICJObyBmbGlwIGR1ZSBvbiBwaXBlICVjIChwbGFuZSAlYylcbiIs Cj4gIAkJCQkgICBwaXBlLCBwbGFuZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IGluZGV4IGM1MmViMWJiNGYyNC4uM2IwODIwMjBhYWI4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC00Nyw2ICs0NywxMSBAQAo+ICAjaW5jbHVkZSA8bGlu dXgvcmVzZXJ2YXRpb24uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPiAgCj4gK3N0 YXRpYyBib29sIGlzX21taW9fd29yayhzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQo+ICt7 Cj4gKwlyZXR1cm4gd29yay0+bW1pb193b3JrLmZ1bmM7Cj4gK30KPiArCj4gIC8qIFByaW1hcnkg cGxhbmUgZm9ybWF0cyBmb3IgZ2VuIDw9IDMgKi8KPiAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGk4 eHhfcHJpbWFyeV9mb3JtYXRzW10gPSB7Cj4gIAlEUk1fRk9STUFUX0M4LAo+IEBAIC0zMjQzLDcg KzMyNDgsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRjX2hhc19wZW5kaW5nX2ZsaXAoc3RydWN0 IGRybV9jcnRjICpjcnRjKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlzcGluX2xvY2tfaXJx KCZkZXYtPmV2ZW50X2xvY2spOwo+IC0JcGVuZGluZyA9IHRvX2ludGVsX2NydGMoY3J0YyktPnVu cGluX3dvcmsgIT0gTlVMTDsKPiArCXBlbmRpbmcgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5mbGlw X3dvcmsgIT0gTlVMTDsKPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAg Cj4gIAlyZXR1cm4gcGVuZGluZzsKPiBAQCAtMzgyNSw3ICszODMwLDcgQEAgYm9vbCBpbnRlbF9o YXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCWlmIChhdG9t aWNfcmVhZCgmY3J0Yy0+dW5waW5fd29ya19jb3VudCkgPT0gMCkKPiAgCQkJY29udGludWU7Cj4g IAo+IC0JCWlmIChjcnRjLT51bnBpbl93b3JrKQo+ICsJCWlmIChjcnRjLT5mbGlwX3dvcmspCj4g IAkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGNydGMtPnBpcGUpOwo+ICAKPiAgCQlyZXR1 cm4gdHJ1ZTsKPiBAQCAtMzgzNywxMSArMzg0MiwxMSBAQCBib29sIGludGVsX2hhc19wZW5kaW5n X2ZiX3VucGluKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHN0YXRpYyB2b2lkIHBhZ2VfZmxp cF9jb21wbGV0ZWQoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5k ZXYpOwo+IC0Jc3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcmsgPSBpbnRlbF9jcnRjLT51bnBp bl93b3JrOwo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yayA9IGludGVsX2NydGMtPmZs aXBfd29yazsKPiAgCj4gLQkvKiBlbnN1cmUgdGhhdCB0aGUgdW5waW4gd29yayBpcyBjb25zaXN0 ZW50IHdydCAtPnBlbmRpbmcuICovCj4gKwkvKiBlbnN1cmUgdGhhdCB0aGUgZmxpcCB3b3JrIGlz IGNvbnNpc3RlbnQgd3J0IC0+cGVuZGluZy4gKi8KPiAgCXNtcF9ybWIoKTsKPiAtCWludGVsX2Ny dGMtPnVucGluX3dvcmsgPSBOVUxMOwo+ICsJaW50ZWxfY3J0Yy0+ZmxpcF93b3JrID0gTlVMTDsK PiAgCj4gIAlpZiAod29yay0+ZXZlbnQpCj4gIAkJZHJtX3NlbmRfdmJsYW5rX2V2ZW50KGludGVs X2NydGMtPmJhc2UuZGV2LAo+IEBAIC0zODUxLDcgKzM4NTYsNyBAQCBzdGF0aWMgdm9pZCBwYWdl X2ZsaXBfY29tcGxldGVkKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICAJZHJtX2Ny dGNfdmJsYW5rX3B1dCgmaW50ZWxfY3J0Yy0+YmFzZSk7Cj4gIAo+ICAJd2FrZV91cF9hbGwoJmRl dl9wcml2LT5wZW5kaW5nX2ZsaXBfcXVldWUpOwo+IC0JcXVldWVfd29yayhkZXZfcHJpdi0+d3Es ICZ3b3JrLT53b3JrKTsKPiArCXF1ZXVlX3dvcmsoZGV2X3ByaXYtPndxLCAmd29yay0+dW5waW5f d29yayk7Cj4gIAo+ICAJdHJhY2VfaTkxNV9mbGlwX2NvbXBsZXRlKGludGVsX2NydGMtPnBsYW5l LAo+ICAJCQkJIHdvcmstPnBlbmRpbmdfZmxpcF9vYmopOwo+IEBAIC0zODc1LDkgKzM4ODAsMTEg QEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAKPiAgCWlmIChyZXQgPT0gMCkgewo+ICAJCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCQlzdHJ1Y3QgaW50ZWxf ZmxpcF93b3JrICp3b3JrOwo+ICAKPiAgCQlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2sp Owo+IC0JCWlmIChpbnRlbF9jcnRjLT51bnBpbl93b3JrKSB7Cj4gKwkJd29yayA9IGludGVsX2Ny dGMtPmZsaXBfd29yazsKPiArCQlpZiAod29yayAmJiAhaXNfbW1pb193b3JrKHdvcmspKSB7Cj4g IAkJCVdBUk5fT05DRSgxLCAiUmVtb3Zpbmcgc3R1Y2sgcGFnZSBmbGlwXG4iKTsKPiAgCQkJcGFn ZV9mbGlwX2NvbXBsZXRlZChpbnRlbF9jcnRjKTsKPiAgCQl9Cj4gQEAgLTYyNTksNyArNjI2Niw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmICh0b19pbnRlbF9wbGFuZV9zdGF0ZShj cnRjLT5wcmltYXJ5LT5zdGF0ZSktPnZpc2libGUpIHsKPiAtCQlXQVJOX09OKGludGVsX2NydGMt PnVucGluX3dvcmspOwo+ICsJCVdBUk5fT04oaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKTsKPiAgCj4g IAkJaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeV9ub2F0b21pYyhjcnRjKTsKPiAgCj4gQEAgLTEw NzgxLDE1ICsxMDc4OCwxNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3koc3RydWN0 IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ ZGV2Owo+IC0Jc3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcms7Cj4gKwlzdHJ1Y3QgaW50ZWxf ZmxpcF93b3JrICp3b3JrOwo+ICAKPiAgCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7 Cj4gLQl3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5fd29yazsKPiAtCWludGVsX2NydGMtPnVucGlu X3dvcmsgPSBOVUxMOwo+ICsJd29yayA9IGludGVsX2NydGMtPmZsaXBfd29yazsKPiArCWludGVs X2NydGMtPmZsaXBfd29yayA9IE5VTEw7Cj4gIAlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRf bG9jayk7Cj4gIAo+ICAJaWYgKHdvcmspIHsKPiAtCQljYW5jZWxfd29ya19zeW5jKCZ3b3JrLT53 b3JrKTsKPiArCQljYW5jZWxfd29ya19zeW5jKCZ3b3JrLT5tbWlvX3dvcmspOwo+ICsJCWNhbmNl bF93b3JrX3N5bmMoJndvcmstPnVucGluX3dvcmspOwo+ICAJCWtmcmVlKHdvcmspOwo+ICAJfQo+ ICAKPiBAQCAtMTA4MDAsMTIgKzEwODA4LDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGVz dHJveShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF91bnBp bl93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqX193b3JrKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfdW5waW5fd29yayAqd29yayA9Cj4gLQkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IGlu dGVsX3VucGluX3dvcmssIHdvcmspOwo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yayA9 Cj4gKwkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IGludGVsX2ZsaXBfd29yaywgdW5waW5f d29yayk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMod29yay0+ Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+YmFzZS5wcmltYXJ5Owo+ICAKPiArCWlm IChpc19tbWlvX3dvcmsod29yaykpCj4gKwkJZmx1c2hfd29yaygmd29yay0+bW1pb193b3JrKTsK PiArCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlpbnRlbF91bnBpbl9m Yl9vYmood29yay0+b2xkX2ZiLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOwo+ICAJZHJtX2dl bV9vYmplY3RfdW5yZWZlcmVuY2UoJndvcmstPnBlbmRpbmdfZmxpcF9vYmotPmJhc2UpOwo+IEBA IC0xMDg3MSwxNiArMTA4ODIsMTYgQEAgc3RhdGljIGJvb2wgcGFnZV9mbGlwX2ZpbmlzaGVkKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJICogYW55d2F5LCB3ZSBkb24ndCByZWFsbHkgY2Fy ZS4KPiAgCSAqLwo+ICAJcmV0dXJuIChJOTE1X1JFQUQoRFNQU1VSRkxJVkUoY3J0Yy0+cGxhbmUp KSAmIH4weGZmZikgPT0KPiAtCQljcnRjLT51bnBpbl93b3JrLT5ndHRfb2Zmc2V0ICYmCj4gKwkJ Y3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0ICYmCj4gIAkJZzR4X2ZsaXBfY291bnRfYWZ0ZXJf ZXEoSTkxNV9SRUFEKFBJUEVfRkxJUENPVU5UX0c0WChjcnRjLT5waXBlKSksCj4gLQkJCQkgICAg Y3J0Yy0+dW5waW5fd29yay0+ZmxpcF9jb3VudCk7Cj4gKwkJCQkgICAgY3J0Yy0+ZmxpcF93b3Jr LT5mbGlwX2NvdW50KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZG9faW50ZWxfZmluaXNoX3Bh Z2VfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJICAgICAgc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yazsKPiArCXN0 cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcms7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAK PiAgCS8qIElnbm9yZSBlYXJseSB2YmxhbmsgaXJxcyAqLwo+IEBAIC0xMDg5MiwxMSArMTA5MDMs MTEgQEAgc3RhdGljIHZvaWQgZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJICogbG9zdCBwYWdlZmxpcHMpIHNvIG5lZWRzIHRoZSBmdWxsIGlycXNh dmUgc3BpbmxvY2tzLgo+ICAJICovCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9s b2NrLCBmbGFncyk7Cj4gLQl3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5fd29yazsKPiArCXdvcmsg PSBpbnRlbF9jcnRjLT5mbGlwX3dvcms7Cj4gIAo+ICAJaWYgKHdvcmsgPT0gTlVMTCB8fAo+ICAJ ICAgIGF0b21pY19yZWFkKCZ3b3JrLT5wZW5kaW5nKSA9PSBJTlRFTF9GTElQX0lOQUNUSVZFIHx8 Cj4gLQkgICAhcGFnZV9mbGlwX2ZpbmlzaGVkKGludGVsX2NydGMpKSB7Cj4gKwkgICAgIXBhZ2Vf ZmxpcF9maW5pc2hlZChpbnRlbF9jcnRjKSkgewo+ICAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+ICAJCXJldHVybjsKPiAgCX0KPiBAQCAtMTA5MjIs NyArMTA5MzMsNyBAQCB2b2lkIGludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IHBsYW5lKQo+ICAJZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChk ZXYsIGNydGMpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbWFya19wYWdl X2ZsaXBfYWN0aXZlKHN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrKQo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKHN0cnVjdCBpbnRlbF9mbGlwX3dv cmsgKndvcmspCj4gIHsKPiAgCS8qIEVuc3VyZSB0aGF0IHRoZSB3b3JrIGl0ZW0gaXMgY29uc2lz dGVudCB3aGVuIGFjdGl2YXRpbmcgaXQgLi4uICovCj4gIAlzbXBfd21iKCk7Cj4gQEAgLTEwOTU5 LDEwICsxMDk3MCw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZM SVAgfAo+ICAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKPiAg CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBdKTsKPiAtCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwo+ICsJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsK PiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiBhdXggZGlzcGxheSBiYXNlIGFkZHJl c3MsIHVudXNlZCAqLwo+ICAKPiAtCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9j cnRjLT51bnBpbl93b3JrKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0xMDk5MSwxMCAr MTEwMDEsOSBAQCBzdGF0aWMgaW50IGludGVsX2dlbjNfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExBWV9GTElQX0k5 MTUgfAo+ICAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKPiAg CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBdKTsKPiAtCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0dF9vZmZzZXQpOwo+ICsJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsK PiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwo+ICAKPiAtCWludGVsX21hcmtf cGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjLT51bnBpbl93b3JrKTsKPiAgCXJldHVybiAwOwo+ ICB9Cj4gIAo+IEBAIC0xMTAyMiw3ICsxMTAzMSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNF9x dWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBNSV9ESVNQTEFZX0ZMSVAgfAo+ICAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxf Y3J0Yy0+cGxhbmUpKTsKPiAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBd KTsKPiAtCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPnVucGluX3dvcmstPmd0 dF9vZmZzZXQgfAo+ICsJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93 b3JrLT5ndHRfb2Zmc2V0IHwKPiAgCQkJb2JqLT50aWxpbmdfbW9kZSk7Cj4gIAo+ICAJLyogWFhY IEVuYWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxpcCBpcyBzbyBmYXIKPiBA QCAtMTEwMzMsNyArMTEwNDIsNiBAQCBzdGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJcGlwZXNyYyA9IEk5MTVfUkVBRChQSVBFU1JDKGlu dGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7Cj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBwZiB8IHBpcGVzcmMpOwo+ICAKPiAtCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShpbnRl bF9jcnRjLT51bnBpbl93b3JrKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0xMTA1Nyw3 ICsxMTA2NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZMSVAg fAo+ICAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKPiAgCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBdIHwgb2JqLT50aWxpbmdfbW9kZSk7 Cj4gLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpbnRlbF9jcnRjLT51bnBpbl93b3JrLT5ndHRf b2Zmc2V0KTsKPiArCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29y ay0+Z3R0X29mZnNldCk7Cj4gIAo+ICAJLyogQ29udHJhcnkgdG8gdGhlIHN1Z2dlc3Rpb25zIGlu IHRoZSBkb2N1bWVudGF0aW9uLAo+ICAJICogIkVuYWJsZSBQYW5lbCBGaXR0ZXIiIGRvZXMgbm90 IHNlZW0gdG8gYmUgcmVxdWlyZWQgd2hlbiBwYWdlCj4gQEAgLTExMDY5LDcgKzExMDc3LDYgQEAg c3RhdGljIGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCXBpcGVzcmMgPSBJOTE1X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAweDBm ZmYwZmZmOwo+ICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgcGYgfCBwaXBlc3JjKTsKPiAgCj4g LQlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUoaW50ZWxfY3J0Yy0+dW5waW5fd29yayk7Cj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMTExNjEsMTAgKzExMTY4LDkgQEAgc3RhdGljIGlu dCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5lX2JpdCk7 Cj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAoZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGlu Z19tb2RlKSk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpbnRlbF9jcnRjLT51bnBpbl93 b3JrLT5ndHRfb2Zmc2V0KTsKPiArCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMt PmZsaXBfd29yay0+Z3R0X29mZnNldCk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAoTUlf Tk9PUCkpOwo+ICAKPiAtCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjLT51 bnBpbl93b3JrKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0xMTE4Miw5ICsxMTE4OCw2 IEBAIHN0YXRpYyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+ICAJaWYgKGVuZ2luZSA9PSBOVUxMKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAtCWlm IChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuIDwgNSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4g LQo+ICAJaWYgKGk5MTUudXNlX21taW9fZmxpcCA8IDApCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJ ZWxzZSBpZiAoaTkxNS51c2VfbW1pb19mbGlwID4gMCkKPiBAQCAtMTExOTksMTI2ICsxMTIwMiwy MSBAQCBzdGF0aWMgYm9vbCB1c2VfbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAgCQlyZXR1cm4gZW5naW5lICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShv YmotPmxhc3Rfd3JpdGVfcmVxKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX2RvX21taW9f ZmxpcChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAtCQkJICAgICB1bnNpZ25lZCBp bnQgcm90YXRpb24sCj4gLQkJCSAgICAgc3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcmspCj4g LXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g LQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGludGVsX2NydGMtPmJhc2UucHJpbWFyeS0+ ZmI7Cj4gLQljb25zdCBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gLQl1MzIg Y3RsLCBzdHJpZGUsIHRpbGVfaGVpZ2h0Owo+IC0KPiAtCWN0bCA9IEk5MTVfUkVBRChQTEFORV9D VEwocGlwZSwgMCkpOwo+IC0JY3RsICY9IH5QTEFORV9DVExfVElMRURfTUFTSzsKPiAtCXN3aXRj aCAoZmItPm1vZGlmaWVyWzBdKSB7Cj4gLQljYXNlIERSTV9GT1JNQVRfTU9EX05PTkU6Cj4gLQkJ YnJlYWs7Cj4gLQljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+IC0JCWN0bCB8PSBQTEFO RV9DVExfVElMRURfWDsKPiAtCQlicmVhazsKPiAtCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ6Cj4gLQkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBJ OTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gLQkJY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZRjsK PiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmllclsw XSk7Cj4gLQl9Cj4gLQo+IC0JLyoKPiAtCSAqIFRoZSBzdHJpZGUgaXMgZWl0aGVyIGV4cHJlc3Nl ZCBhcyBhIG11bHRpcGxlIG9mIDY0IGJ5dGVzIGNodW5rcyBmb3IKPiAtCSAqIGxpbmVhciBidWZm ZXJzIG9yIGluIG51bWJlciBvZiB0aWxlcyBmb3IgdGlsZWQgYnVmZmVycy4KPiAtCSAqLwo+IC0J aWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKPiAtCQkvKiBzdHJpZGUg PSBTdXJmYWNlIGhlaWdodCBpbiB0aWxlcyAqLwo+IC0JCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGls ZV9oZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwgMCk7Cj4gLQkJc3RyaWRlID0gRElW X1JPVU5EX1VQKGZiLT5oZWlnaHQsIHRpbGVfaGVpZ2h0KTsKPiAtCX0gZWxzZSB7Cj4gLQkJc3Ry aWRlID0gZmItPnBpdGNoZXNbMF0gLwo+IC0JCQlpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRl dl9wcml2LCBmYi0+bW9kaWZpZXJbMF0sCj4gLQkJCQkJCSAgZmItPnBpeGVsX2Zvcm1hdCk7Cj4g LQl9Cj4gLQo+IC0JLyoKPiAtCSAqIEJvdGggUExBTkVfQ1RMIGFuZCBQTEFORV9TVFJJREUgYXJl IG5vdCB1cGRhdGVkIG9uIHZibGFuayBidXQgb24KPiAtCSAqIFBMQU5FX1NVUkYgdXBkYXRlcywg dGhlIHVwZGF0ZSBpcyB0aGVuIGd1YXJhbnRlZWQgdG8gYmUgYXRvbWljLgo+IC0JICovCj4gLQlJ OTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgY3RsKTsKPiAtCUk5MTVfV1JJVEUoUExBTkVf U1RSSURFKHBpcGUsIDApLCBzdHJpZGUpOwo+IC0KPiAtCUk5MTVfV1JJVEUoUExBTkVfU1VSRihw aXBlLCAwKSwgd29yay0+Z3R0X29mZnNldCk7Cj4gLQlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihw aXBlLCAwKSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGlsa19kb19tbWlvX2ZsaXAoc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gLQkJCSAgICAgc3RydWN0IGludGVsX3VucGluX3dv cmsgKndvcmspCj4gK3N0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0 IHdvcmtfc3RydWN0ICp3KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxf Y3J0Yy0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrID0KPiArCQlj b250YWluZXJfb2Yodywgc3RydWN0IGludGVsX2ZsaXBfd29yaywgbW1pb193b3JrKTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyh3b3JrLT5jcnRjKTsKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxf ZnJhbWVidWZmZXIgKmludGVsX2ZiID0KPiAtCQl0b19pbnRlbF9mcmFtZWJ1ZmZlcihpbnRlbF9j cnRjLT5iYXNlLnByaW1hcnktPmZiKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmogPSBpbnRlbF9mYi0+b2JqOwo+IC0JaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKGludGVsX2Ny dGMtPnBsYW5lKTsKPiAtCXUzMiBkc3BjbnRyOwo+IC0KPiAtCWRzcGNudHIgPSBJOTE1X1JFQUQo cmVnKTsKPiAtCj4gLQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19OT05FKQo+ IC0JCWRzcGNudHIgfD0gRElTUFBMQU5FX1RJTEVEOwo+IC0JZWxzZQo+IC0JCWRzcGNudHIgJj0g fkRJU1BQTEFORV9USUxFRDsKPiAtCj4gLQlJOTE1X1dSSVRFKHJlZywgZHNwY250cik7Cj4gKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnByaW1hcnkgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnBy aW1hcnkpOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29i aihwcmltYXJ5LT5iYXNlLnN0YXRlLT5mYik7Cj4gIAo+IC0JSTkxNV9XUklURShEU1BTVVJGKGlu dGVsX2NydGMtPnBsYW5lKSwgd29yay0+Z3R0X29mZnNldCk7Cj4gLQlQT1NUSU5HX1JFQUQoRFNQ U1VSRihpbnRlbF9jcnRjLT5wbGFuZSkpOwo+IC19Cj4gLQo+IC0vKgo+IC0gKiBYWFg6IFRoaXMg aXMgdGhlIHRlbXBvcmFyeSB3YXkgdG8gdXBkYXRlIHRoZSBwbGFuZSByZWdpc3RlcnMgdW50aWwg d2UgZ2V0Cj4gLSAqIGFyb3VuZCB0byB1c2luZyB0aGUgdXN1YWwgcGxhbmUgdXBkYXRlIGZ1bmN0 aW9ucyBmb3IgTU1JTyBmbGlwcwo+IC0gKi8KPiAtc3RhdGljIHZvaWQgaW50ZWxfZG9fbW1pb19m bGlwKHN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgKm1taW9fZmxpcCkKPiAtewo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSBtbWlvX2ZsaXAtPmNydGM7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5waW5f d29yayAqd29yazsKPiAtCj4gLQlzcGluX2xvY2tfaXJxKCZjcnRjLT5iYXNlLmRldi0+ZXZlbnRf bG9jayk7Cj4gLQl3b3JrID0gY3J0Yy0+dW5waW5fd29yazsKPiAtCXNwaW5fdW5sb2NrX2lycSgm Y3J0Yy0+YmFzZS5kZXYtPmV2ZW50X2xvY2spOwo+IC0JaWYgKHdvcmsgPT0gTlVMTCkKPiAtCQly ZXR1cm47Cj4gLQo+IC0JaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY3J0Yyk7Cj4gLQo+IC0JaWYg KElOVEVMX0lORk8obW1pb19mbGlwLT5pOTE1KS0+Z2VuID49IDkpCj4gLQkJc2tsX2RvX21taW9f ZmxpcChjcnRjLCBtbWlvX2ZsaXAtPnJvdGF0aW9uLCB3b3JrKTsKPiAtCWVsc2UKPiAtCQkvKiB1 c2VfbW1pb19mbGlwKCkgcmV0cmljdHMgTU1JTyBmbGlwcyB0byBpbGsrICovCj4gLQkJaWxrX2Rv X21taW9fZmxpcChjcnRjLCB3b3JrKTsKPiAtCj4gLQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoY3J0 Yyk7Cj4gLQo+IC0JaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKHdvcmspOwo+IC19Cj4gLQo+ IC1zdGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiAtewo+IC0Jc3RydWN0IGludGVsX21taW9fZmxpcCAqbW1pb19mbGlwID0KPiAt CQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGludGVsX21taW9fZmxpcCwgd29yayk7Cj4gLQlz dHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0KPiAtCQl0b19pbnRlbF9mcmFtZWJ1 ZmZlcihtbWlvX2ZsaXAtPmNydGMtPmJhc2UucHJpbWFyeS0+ZmIpOwo+IC0Jc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiLT5vYmo7Cj4gLQo+IC0JaWYgKG1taW9fZmxp cC0+cmVxKSB7Cj4gLQkJV0FSTl9PTihfX2k5MTVfd2FpdF9yZXF1ZXN0KG1taW9fZmxpcC0+cmVx LAo+IC0JCQkJCSAgICBtbWlvX2ZsaXAtPmNydGMtPnJlc2V0X2NvdW50ZXIsCj4gKwlpZiAod29y ay0+ZmxpcF9xdWV1ZWRfcmVxKQo+ICsJCVdBUk5fT04oX19pOTE1X3dhaXRfcmVxdWVzdCh3b3Jr LT5mbGlwX3F1ZXVlZF9yZXEsCj4gKwkJCQkJICAgIGNydGMtPnJlc2V0X2NvdW50ZXIsCj4gIAkJ CQkJICAgIGZhbHNlLCBOVUxMLAo+IC0JCQkJCSAgICAmbW1pb19mbGlwLT5pOTE1LT5ycHMubW1p b2ZsaXBzKSk7Cj4gLQkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV9fdW5sb2NrZWQobW1p b19mbGlwLT5yZXEpOwo+IC0JfQo+ICsJCQkJCSAgICAmZGV2X3ByaXYtPnJwcy5tbWlvZmxpcHMp KTsKPiAgCj4gIAkvKiBGb3IgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGRtYWJ1Ziwgd2FpdCBmb3Ig ZmVuY2UgKi8KPiAgCWlmIChvYmotPmJhc2UuZG1hX2J1ZikKPiBAQCAtMTEzMjYsMjkgKzExMjI0 LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQo+ICAJCQkJCQkJICAgIGZhbHNlLCBmYWxzZSwKPiAgCQkJCQkJCSAgICBN QVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKPiAgCj4gLQlpbnRlbF9kb19tbWlvX2ZsaXAobW1p b19mbGlwKTsKPiAtCWtmcmVlKG1taW9fZmxpcCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgaW50 ZWxfcXVldWVfbW1pb19mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+IC0JCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Cj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgKm1taW9fZmxpcDsKPiAtCj4gLQltbWlv X2ZsaXAgPSBrbWFsbG9jKHNpemVvZigqbW1pb19mbGlwKSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAo bW1pb19mbGlwID09IE5VTEwpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+IC0JbW1pb19mbGlw LT5pOTE1ID0gdG9faTkxNShkZXYpOwo+IC0JbW1pb19mbGlwLT5yZXEgPSBpOTE1X2dlbV9yZXF1 ZXN0X3JlZmVyZW5jZShvYmotPmxhc3Rfd3JpdGVfcmVxKTsKPiAtCW1taW9fZmxpcC0+Y3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQltbWlvX2ZsaXAtPnJvdGF0aW9uID0gY3J0Yy0+cHJp bWFyeS0+c3RhdGUtPnJvdGF0aW9uOwo+IC0KPiAtCUlOSVRfV09SSygmbW1pb19mbGlwLT53b3Jr LCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKTsKPiAtCXNjaGVkdWxlX3dvcmsoJm1taW9fZmxp cC0+d29yayk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChj cnRjKTsKPiArCXByaW1hcnktPnVwZGF0ZV9wbGFuZSgmcHJpbWFyeS0+YmFzZSwKPiArCQkJICAg ICAgY3J0Yy0+Y29uZmlnLAo+ICsJCQkgICAgICB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcmltYXJ5 LT5iYXNlLnN0YXRlKSk7Cj4gKwlhdG9taWNfc2V0KCZ3b3JrLT5wZW5kaW5nLCBJTlRFTF9GTElQ X1BFTkRJTkcpOwo+ICsJaW50ZWxfcGlwZV91cGRhdGVfZW5kKGNydGMpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgaW50IGludGVsX2RlZmF1bHRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+IEBAIC0xMTM2Niw3ICsxMTI0Nyw3IEBAIHN0YXRpYyBib29sIF9faW50ZWxfcGFnZWZsaXBf c3RhbGxfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpbnRl bF91bnBpbl93b3JrICp3b3JrID0gaW50ZWxfY3J0Yy0+dW5waW5fd29yazsKPiArCXN0cnVjdCBp bnRlbF9mbGlwX3dvcmsgKndvcmsgPSBpbnRlbF9jcnRjLT5mbGlwX3dvcms7Cj4gIAl1MzIgYWRk cjsKPiAgCXUzMiBwZW5kaW5nOwo+ICAKPiBAQCAtMTEzNzQsNiArMTEyNTUsMTMgQEAgc3RhdGlj IGJvb2wgX19pbnRlbF9wYWdlZmxpcF9zdGFsbF9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJaWYgKHBlbmRpbmcgPT0gSU5URUxfRkxJUF9JTkFDVElWRSkKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gIAo+ICsJLyoKPiArCSAqIElmIHRoaXMgaXMgYSBtbWlvIGZsaXAgcmV0dXJuIHRydWUg YmVjYXVzZSBzdGF0ZQo+ICsJICogaXMgY2hhbmdlZCB0byBJTlRFTF9GTElQX1BFTkRJTkcgYWZ0 ZXIgdXBkYXRpbmcuCj4gKwkgKi8KPiArCWlmIChpc19tbWlvX3dvcmsod29yaykpCj4gKwkJcmV0 dXJuIHRydWU7Cj4gKwo+ICAJaWYgKHdvcmstPmZsaXBfcmVhZHlfdmJsYW5rID09IDApIHsKPiAg CQlpZiAod29yay0+ZmxpcF9xdWV1ZWRfcmVxICYmCj4gIAkJICAgICFpOTE1X2dlbV9yZXF1ZXN0 X2NvbXBsZXRlZCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsIHRydWUpKQo+IEBAIC0xMTQwNCw3ICsx MTI5Miw3IEBAIHZvaWQgaW50ZWxfY2hlY2tfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBwaXBlKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGRldl9wcml2LT5waXBl X3RvX2NydGNfbWFwcGluZ1twaXBlXTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3Jr Owo+ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKPiAgCj4gIAlXQVJOX09OKCFpbl9p bnRlcnJ1cHQoKSk7Cj4gIAo+IEBAIC0xMTQxMiwxNCArMTEzMDAsMTUgQEAgdm9pZCBpbnRlbF9j aGVja19wYWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCj4gIAkJcmV0 dXJuOwo+ICAKPiAgCXNwaW5fbG9jaygmZGV2LT5ldmVudF9sb2NrKTsKPiAtCXdvcmsgPSBpbnRl bF9jcnRjLT51bnBpbl93b3JrOwo+ICsJd29yayA9IGludGVsX2NydGMtPmZsaXBfd29yazsKPiAg CWlmICh3b3JrICE9IE5VTEwgJiYgX19pbnRlbF9wYWdlZmxpcF9zdGFsbF9jaGVjayhkZXYsIGNy dGMpKSB7Cj4gLQkJV0FSTl9PTkNFKDEsICJLaWNraW5nIHN0dWNrIHBhZ2UgZmxpcDogcXVldWVk IGF0ICVkLCBub3cgJWRcbiIsCj4gKwkJV0FSTl9PTkNFKCFpc19tbWlvX3dvcmsod29yayksCj4g KwkJCSAgIktpY2tpbmcgc3R1Y2sgcGFnZSBmbGlwOiBxdWV1ZWQgYXQgJWQsIG5vdyAlZFxuIiwK PiAgCQkJIHdvcmstPmZsaXBfcXVldWVkX3ZibGFuaywgZHJtX3ZibGFua19jb3VudChkZXYsIHBp cGUpKTsKPiAgCQlwYWdlX2ZsaXBfY29tcGxldGVkKGludGVsX2NydGMpOwo+ICAJCXdvcmsgPSBO VUxMOwo+ICAJfQo+IC0JaWYgKHdvcmsgIT0gTlVMTCAmJgo+ICsJaWYgKHdvcmsgIT0gTlVMTCAm JiAhaXNfbW1pb193b3JrKHdvcmspICYmCj4gIAkgICAgZHJtX3ZibGFua19jb3VudChkZXYsIHBp cGUpIC0gd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID4gMSkKPiAgCQlpbnRlbF9xdWV1ZV9ycHNf Ym9vc3RfZm9yX3JlcXVlc3QoZGV2LCB3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpOwo+ICAJc3Bpbl91 bmxvY2soJmRldi0+ZXZlbnRfbG9jayk7Cj4gQEAgLTExNDM3LDcgKzExMzI2LDcgQEAgc3RhdGlj IGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlzdHJ1 Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKPiAgCWVudW0gcGlwZSBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXN0cnVjdCBpbnRlbF91bnBpbl93b3JrICp3b3JrOwo+ ICsJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiAgCWJvb2wgbW1pb19mbGlwOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0ID0gTlVMTDsKPiBAQCAtMTE0NzQsMTkgKzExMzYzLDIwIEBAIHN0YXRp YyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJd29y ay0+ZXZlbnQgPSBldmVudDsKPiAgCXdvcmstPmNydGMgPSBjcnRjOwo+ICAJd29yay0+b2xkX2Zi ID0gb2xkX2ZiOwo+IC0JSU5JVF9XT1JLKCZ3b3JrLT53b3JrLCBpbnRlbF91bnBpbl93b3JrX2Zu KTsKPiArCUlOSVRfV09SSygmd29yay0+dW5waW5fd29yaywgaW50ZWxfdW5waW5fd29ya19mbik7 Cj4gIAo+ICAJcmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTsKPiAgCWlmIChyZXQpCj4g IAkJZ290byBmcmVlX3dvcms7Cj4gIAo+IC0JLyogV2UgYm9ycm93IHRoZSBldmVudCBzcGluIGxv Y2sgZm9yIHByb3RlY3RpbmcgdW5waW5fd29yayAqLwo+ICsJLyogV2UgYm9ycm93IHRoZSBldmVu dCBzcGluIGxvY2sgZm9yIHByb3RlY3RpbmcgZmxpcF93b3JrICovCj4gIAlzcGluX2xvY2tfaXJx KCZkZXYtPmV2ZW50X2xvY2spOwo+IC0JaWYgKGludGVsX2NydGMtPnVucGluX3dvcmspIHsKPiAr CWlmIChpbnRlbF9jcnRjLT5mbGlwX3dvcmspIHsKPiAgCQkvKiBCZWZvcmUgZGVjbGFyaW5nIHRo ZSBmbGlwIHF1ZXVlIHdlZGdlZCwgY2hlY2sgaWYKPiAgCQkgKiB0aGUgaGFyZHdhcmUgY29tcGxl dGVkIHRoZSBvcGVyYXRpb24gYmVoaW5kIG91ciBiYWNrcy4KPiAgCQkgKi8KPiAtCQlpZiAoX19p bnRlbF9wYWdlZmxpcF9zdGFsbF9jaGVjayhkZXYsIGNydGMpKSB7Cj4gKwkJaWYgKCFpc19tbWlv X3dvcmsoaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKSAmJgo+ICsJCSAgICBfX2ludGVsX3BhZ2VmbGlw X3N0YWxsX2NoZWNrKGRldiwgY3J0YykpIHsKPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiZmxpcCBx dWV1ZTogcHJldmlvdXMgZmxpcCBjb21wbGV0ZWQsIGNvbnRpbnVpbmdcbiIpOwo+ICAJCQlwYWdl X2ZsaXBfY29tcGxldGVkKGludGVsX2NydGMpOwo+ICAJCX0gZWxzZSB7Cj4gQEAgLTExNDk4LDcg KzExMzg4LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gIAkJCXJldHVybiAtRUJVU1k7Cj4gIAkJfQo+ICAJfQo+IC0JaW50ZWxfY3J0 Yy0+dW5waW5fd29yayA9IHdvcms7Cj4gKwlpbnRlbF9jcnRjLT5mbGlwX3dvcmsgPSB3b3JrOwo+ ICAJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+ICAKPiAgCWlmIChhdG9taWNf cmVhZCgmaW50ZWxfY3J0Yy0+dW5waW5fd29ya19jb3VudCkgPj0gMikKPiBAQCAtMTE1NjcsMjMg KzExNDU3LDIyIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICAJd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID0gZHJtX2NydGNfdmJsYW5r X2NvdW50KGNydGMpOwo+ICAKPiAgCWlmIChtbWlvX2ZsaXApIHsKPiAtCQlyZXQgPSBpbnRlbF9x dWV1ZV9tbWlvX2ZsaXAoZGV2LCBjcnRjLCBvYmopOwo+IC0JCWlmIChyZXQpCj4gLQkJCWdvdG8g Y2xlYW51cF91bnBpbjsKPiArCQlJTklUX1dPUksoJndvcmstPm1taW9fd29yaywgaW50ZWxfbW1p b19mbGlwX3dvcmtfZnVuYyk7Cj4gIAo+ICAJCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3b3Jr LT5mbGlwX3F1ZXVlZF9yZXEsCj4gIAkJCQkJb2JqLT5sYXN0X3dyaXRlX3JlcSk7Cj4gKwo+ICsJ CXNjaGVkdWxlX3dvcmsoJndvcmstPm1taW9fd29yayk7Cj4gIAl9IGVsc2Ugewo+ICsJCWk5MTVf Z2VtX3JlcXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsIHJlcXVlc3QpOwo+ICAJ CXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAoZGV2LCBjcnRjLCBmYiwgb2JqLCBy ZXF1ZXN0LAo+ICAJCQkJCQkgICBwYWdlX2ZsaXBfZmxhZ3MpOwo+ICAJCWlmIChyZXQpCj4gIAkJ CWdvdG8gY2xlYW51cF91bnBpbjsKPiAgCj4gLQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJndv cmstPmZsaXBfcXVldWVkX3JlcSwgcmVxdWVzdCk7Cj4gLQl9Cj4gLQo+IC0JaWYgKHJlcXVlc3Qp Cj4gKwkJaW50ZWxfbWFya19wYWdlX2ZsaXBfYWN0aXZlKHdvcmspOwo+ICAJCWk5MTVfYWRkX3Jl cXVlc3Rfbm9fZmx1c2gocmVxdWVzdCk7Cj4gKwl9Cj4gIAo+ICAJd29yay0+ZmxpcF9xdWV1ZWRf dmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNydGMpOwo+ICAKPiBAQCAtMTE2MTMsNyAr MTE1MDIsNyBAQCBjbGVhbnVwOgo+ICAJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKHdvcmst Pm9sZF9mYik7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAtCWlu dGVsX2NydGMtPnVucGluX3dvcmsgPSBOVUxMOwo+ICsJaW50ZWxfY3J0Yy0+ZmxpcF93b3JrID0g TlVMTDsKPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCj4gIAlkcm1f Y3J0Y192YmxhbmtfcHV0KGNydGMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXgg ZTI2MjkzZWFkOTRmLi5jYWMzNjgxMzg3NjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+IEBAIC01OTIsMTQgKzU5Miw2IEBAIHN0cnVjdCB2bHZfd21fc3RhdGUgewo+ICAJYm9vbCBj eHNyOwo+ICB9Owo+ICAKPiAtc3RydWN0IGludGVsX21taW9fZmxpcCB7Cj4gLQlzdHJ1Y3Qgd29y a19zdHJ1Y3Qgd29yazsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+IC0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YzsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiAtfTsKPiAtCj4gIHN0cnVjdCBpbnRlbF9j cnRjIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyBiYXNlOwo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gQEAg LTYxNCw3ICs2MDYsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7Cj4gIAl1bnNpZ25lZCBsb25nIGVu YWJsZWRfcG93ZXJfZG9tYWluczsKPiAgCWJvb2wgbG93ZnJlcV9hdmFpbDsKPiAgCXN0cnVjdCBp bnRlbF9vdmVybGF5ICpvdmVybGF5Owo+IC0Jc3RydWN0IGludGVsX3VucGluX3dvcmsgKnVucGlu X3dvcms7Cj4gKwlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICpmbGlwX3dvcms7Cj4gIAo+ICAJYXRv bWljX3QgdW5waW5fd29ya19jb3VudDsKPiAgCj4gQEAgLTkzNSw4ICs5MjcsMTAgQEAgaW50ZWxf Z2V0X2NydGNfZm9yX3BsYW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSkKPiAg CXJldHVybiBkZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW3BsYW5lXTsKPiAgfQo+ICAK PiAtc3RydWN0IGludGVsX3VucGluX3dvcmsgewo+IC0Jc3RydWN0IHdvcmtfc3RydWN0IHdvcms7 Cj4gK3N0cnVjdCBpbnRlbF9mbGlwX3dvcmsgewo+ICsJc3RydWN0IHdvcmtfc3RydWN0IHVucGlu X3dvcms7Cj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbW1pb193b3JrOwo+ICsKPiAgCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpwZW5kaW5nX2ZsaXBfb2JqOwo+IC0tIAo+IDIuMS4w Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK