From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: revert a few more watermark commits Date: Tue, 13 Oct 2015 14:00:04 +0200 Message-ID: <20151013120004.GS26718@phenom.ffwll.local> References: <1444422794.2974.33.camel@intel.com> <1444425763-11533-1-git-send-email-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f170.google.com (mail-wi0-f170.google.com [209.85.212.170]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9BA946E0AA for ; Tue, 13 Oct 2015 04:57:11 -0700 (PDT) Received: by wicgb1 with SMTP id gb1so86130606wic.1 for ; Tue, 13 Oct 2015 04:57:09 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1444425763-11533-1-git-send-email-paulo.r.zanoni@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMDksIDIwMTUgYXQgMDY6MjI6NDNQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IFRoaXMgaXMgYSBzcXVhc2ggb2YgdGhlIGZvbGxvd2luZyBjb21taXRzOgo+IAo+IFJl dmVydCAiZHJtL2k5MTU6IERyb3AgaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzIgo+IFRo aXMgcmV2ZXJ0cyBjb21taXQgNDdjOTk0MzhiNTJkMTJkZjUwZTE4MjU4MzYzNGE0Y2ZlZGUzYzky MC4KPiAKPiBSZXZlcnQgImRybS9pOTE1L2l2YjogTW92ZSBXYUN4U1JEaXNhYmxlZEZvclNwcml0 ZVNjYWxpbmcgdy9hIHRvIGF0b21pYyBjaGVjayIKPiBUaGlzIHJldmVydHMgY29tbWl0IDc4MDll NWFlMzViOWQ4ZDA3MTBmMDg3NGIyZTNmMTBiZTE0NGUzOGIuCj4gCj4gUmV2ZXJ0ICJkcm0vaTkx NS9za2w6IEVsaW1pbmF0ZSB1c2FnZSBvZiBwaXBlX3dtX3BhcmFtZXRlcnMgZnJvbSBTS0wtc3R5 bGUgV00gKHYzKSIKPiBUaGlzIHJldmVydHMgY29tbWl0IDNhMDVmNWUyZTc4ZWFiN2ZmZTgxNmFi YjU5YjY3NjllMzMxYTE5NTcuCj4gCj4gV2l0aCB0aGVzZSByZXZlcnRzLCBTS0wgZmluYWxseSBz dG9wcyBmYWlsaW5nIGV2ZXJ5IHNpbmdsZSBGQkMgdGVzdAo+IHdpdGggRklGTyB1bmRlcnJ1biBl cnJvciBtZXNzYWdlcy4gQWZ0ZXIgc29tZSBicmllZiB0ZXN0aW5nLCBpdCBhbHNvCj4gc2VlbXMg dGhhdCB0aGlzIGNvbW1pdCBwcmV2ZW50cyB0aGUgbWFjaGluZSBmcm9tIGNvbXBsZXRlbHkgZnJl ZXppbmcKPiB3aGVuIHdlIHJ1biBpZ3Qva21zX2ZiY19jcmMgKHNlZSBmZC5vICM5MjM1NSkuCj4g Cj4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk PTkyMzU1Cj4gQ2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gU2ln bmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CgpRdWV1 ZWQgZm9yIC1uZXh0LCB0aGFua3MgZm9yIHRoZSBwYXRjaC4KLURhbmllbAoKPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICA0ICsKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgIHwgICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgIDQ0ICstLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgIHwgICA5ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAg ICB8IDQxOSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgMTUgKysKPiAgNiBmaWxlcyBjaGFuZ2VkLCAy OTMgaW5zZXJ0aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQo+IAo+IAo+IFRoZSBmYWN0IHRoYXQg SSBuZWVkZWQgbW9yZSByZXZlcnRzIGFmdGVyIHJlYmFzaW5nIHN1Z2dlc3RzIHRoYXQgbWF5YmUg dGhlCj4gcHJvYmxlbSBpcyBoYXBwZW5pbmcgZHVlIHRvIHNvbWUgc29ydCBvZiB0aW1pbmcgcHJv YmxlbT8gTWF5YmUgd2UncmUgbWlzc2luZwo+IHNvbWUgbG9jaz8KPiAKPiBUaGUgbWFjaGluZSBm cmVlemVzIHdoaWxlIHJ1bm5pbmcgaWd0L2ttc19mYmNfY3JjL2JsdCBhcmUgYWxzbyBjdXJpb3Vz LCBidXQgSQo+IGRpZG4ndCBzcGVuZCB0b28gbXVjaCB0aW1lIGludmVzdGlnYXRpbmcgdGhlbS4K PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBiZjE0MDk2Li4yMmM4YjBhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTYyOCw2ICs2MjgsMTAgQEAgc3RydWN0IGRy bV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJCQkgIHN0cnVjdCBkcGxsICptYXRjaF9jbG9jaywK PiAgCQkJICBzdHJ1Y3QgZHBsbCAqYmVzdF9jbG9jayk7Cj4gIAl2b2lkICgqdXBkYXRlX3dtKShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICsJdm9pZCAoKnVwZGF0ZV9zcHJpdGVfd20pKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJ CSB1aW50MzJfdCBzcHJpdGVfd2lkdGgsIHVpbnQzMl90IHNwcml0ZV9oZWlnaHQsCj4gKwkJCQkg aW50IHBpeGVsX3NpemUsIGJvb2wgZW5hYmxlLCBib29sIHNjYWxlZCk7Cj4gIAlpbnQgKCptb2Rl c2V0X2NhbGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIAl2b2lk ICgqbW9kZXNldF9jb21taXRfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7 Cj4gIAkvKiBSZXR1cm5zIHRoZSBhY3RpdmUgc3RhdGUgb2YgdGhlIGNydGMsIGFuZCBpZiB0aGUg Y3J0YyBpcyBhY3RpdmUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBpbmRleCAw NWIxMjAzLi5mMTk3NWYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBA QCAtOTQsNyArOTQsNiBAQCBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKGNy dGMsICZjcnRjX3N0YXRlLT5iYXNlKTsKPiAgCj4gIAljcnRjX3N0YXRlLT51cGRhdGVfcGlwZSA9 IGZhbHNlOwo+IC0JY3J0Y19zdGF0ZS0+ZGlzYWJsZV9scF93bSA9IGZhbHNlOwo+ICAKPiAgCXJl dHVybiAmY3J0Y19zdGF0ZS0+YmFzZTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiBpbmRleCBjZGRiMGM2Li42NmEzN2Q4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IEBAIC00ODA0LDYgKzQ4MDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w b3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBpbnRl bF9jcnRjX2F0b21pY19jb21taXQgKmF0b21pYyA9ICZjcnRjLT5hdG9taWM7Cj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZSAq cGxhbmU7Cj4gIAo+ICAJaWYgKGF0b21pYy0+d2FpdF92YmxhbmspCj4gIAkJaW50ZWxfd2FpdF9m b3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7Cj4gQEAgLTQ4MjIsNiArNDgyMywxMCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgCWlmIChhdG9taWMtPnBvc3RfZW5hYmxlX3ByaW1hcnkpCj4gIAkJaW50ZWxfcG9zdF9lbmFi bGVfcHJpbWFyeSgmY3J0Yy0+YmFzZSk7Cj4gIAo+ICsJZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2so cGxhbmUsIGRldiwgYXRvbWljLT51cGRhdGVfc3ByaXRlX3dhdGVybWFya3MpCj4gKwkJaW50ZWxf dXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKHBsYW5lLCAmY3J0Yy0+YmFzZSwKPiArCQkJCQkgICAg ICAgMCwgMCwgMCwgZmFsc2UsIGZhbHNlKTsKPiArCj4gIAltZW1zZXQoYXRvbWljLCAwLCBzaXpl b2YoKmF0b21pYykpOwo+ICB9Cj4gIAo+IEBAIC0xMTU3NywzMCArMTE1ODIsMTYgQEAgcmV0cnk6 Cj4gIHN0YXRpYyBib29sIGludGVsX3dtX25lZWRfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAJCQkJIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ldyA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHN0YXRlKTsK PiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqY3VyID0gdG9faW50ZWxfcGxhbmVfc3RhdGUo cGxhbmUtPnN0YXRlKTsKPiAtCj4gLQkvKiBVcGRhdGUgd2F0ZXJtYXJrcyBvbiB0aWxpbmcgb3Ig c2l6ZSBjaGFuZ2VzLiAqLwo+ICsJLyogVXBkYXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIGNoYW5n ZXMuICovCj4gIAlpZiAoIXBsYW5lLT5zdGF0ZS0+ZmIgfHwgIXN0YXRlLT5mYiB8fAo+ICAJICAg IHBsYW5lLT5zdGF0ZS0+ZmItPm1vZGlmaWVyWzBdICE9IHN0YXRlLT5mYi0+bW9kaWZpZXJbMF0g fHwKPiAtCSAgICBwbGFuZS0+c3RhdGUtPnJvdGF0aW9uICE9IHN0YXRlLT5yb3RhdGlvbiB8fAo+ IC0JICAgIGRybV9yZWN0X3dpZHRoKCZuZXctPnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+ c3JjKSB8fAo+IC0JICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT5zcmMpICE9IGRybV9yZWN0X2hl aWdodCgmY3VyLT5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+ZHN0KSAhPSBk cm1fcmVjdF93aWR0aCgmY3VyLT5kc3QpIHx8Cj4gLQkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXct PmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPmRzdCkpCj4gKwkgICAgcGxhbmUtPnN0YXRl LT5yb3RhdGlvbiAhPSBzdGF0ZS0+cm90YXRpb24pCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IC0J cmV0dXJuIGZhbHNlOwo+IC19Cj4gLQo+IC1zdGF0aWMgYm9vbCBuZWVkc19zY2FsaW5nKHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gLXsKPiAtCWludCBzcmNfdyA9IGRybV9yZWN0 X3dpZHRoKCZzdGF0ZS0+c3JjKSA+PiAxNjsKPiAtCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdo dCgmc3RhdGUtPnNyYykgPj4gMTY7Cj4gLQlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmc3Rh dGUtPmRzdCk7Cj4gLQlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5kc3QpOwo+ ICsJaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0Y193ICE9IHN0YXRlLT5jcnRjX3cpCj4gKwkJcmV0dXJu IHRydWU7Cj4gIAo+IC0JcmV0dXJuIChzcmNfdyAhPSBkc3RfdyB8fCBzcmNfaCAhPSBkc3RfaCk7 Cj4gKwlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2Fs Y19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMTE2MTgs NiArMTE2MDksNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlib29sIG1vZGVfY2hhbmdlZCA9IG5lZWRz X21vZGVzZXQoY3J0Y19zdGF0ZSk7Cj4gIAlib29sIHdhc19jcnRjX2VuYWJsZWQgPSBjcnRjLT5z dGF0ZS0+YWN0aXZlOwo+ICAJYm9vbCBpc19jcnRjX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5hY3Rp dmU7Cj4gKwo+ICAJYm9vbCB0dXJuX29mZiwgdHVybl9vbiwgdmlzaWJsZSwgd2FzX3Zpc2libGU7 Cj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5mYjsKPiAgCj4g QEAgLTExNzM1LDIzICsxMTcyNywxMSBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hh bmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAljYXNlIERSTV9QTEFO RV9UWVBFX0NVUlNPUjoKPiAgCQlicmVhazsKPiAgCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxB WToKPiAtCQkvKgo+IC0JCSAqIFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmIKPiAt CQkgKgo+IC0JCSAqIGNzdGF0ZS0+dXBkYXRlX3dtIHdhcyBhbHJlYWR5IHNldCBhYm92ZSwgc28g dGhpcyBmbGFnIHdpbGwKPiAtCQkgKiB0YWtlIGVmZmVjdCB3aGVuIHdlIGNvbW1pdCBhbmQgcHJv Z3JhbSB3YXRlcm1hcmtzLgo+IC0JCSAqLwo+IC0JCWlmIChJU19JVllCUklER0UoZGV2KSAmJgo+ IC0JCSAgICBuZWVkc19zY2FsaW5nKHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKSkg JiYKPiAtCQkgICAgIW5lZWRzX3NjYWxpbmcob2xkX3BsYW5lX3N0YXRlKSkgewo+IC0JCQl0b19p bnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kaXNhYmxlX2xwX3dtID0gdHJ1ZTsKPiAtCQl9 IGVsc2UgaWYgKHR1cm5fb2ZmICYmICFtb2RlX2NoYW5nZWQpIHsKPiArCQlpZiAodHVybl9vZmYg JiYgIW1vZGVfY2hhbmdlZCkgewo+ICAJCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92Ymxhbmsg PSB0cnVlOwo+ICAJCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtz IHw9Cj4gIAkJCQkxIDw8IGk7Cj4gIAkJfQo+IC0KPiAtCQlicmVhazsKPiAgCX0KPiAgCXJldHVy biAwOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA5MWI2YjQwLi4wNTk4 OTMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtNDY4LDkgKzQ2OCw2IEBA IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCj4gIAkvKiB3L2EgZm9yIHdhaXRpbmcgMiB2 YmxhbmtzIGR1cmluZyBjcnRjIGVuYWJsZSAqLwo+ICAJZW51bSBwaXBlIGhzd193b3JrYXJvdW5k X3BpcGU7Cj4gLQo+IC0JLyogSVZCIHNwcml0ZSBzY2FsaW5nIHcvYSAoV2FDeFNSRGlzYWJsZWRG b3JTcHJpdGVTY2FsaW5nOml2YikgKi8KPiAtCWJvb2wgZGlzYWJsZV9scF93bTsKPiAgfTsKPiAg Cj4gIHN0cnVjdCB2bHZfd21fc3RhdGUgewo+IEBAIC0xMzk5LDYgKzEzOTYsMTIgQEAgdm9pZCBp bnRlbF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBp bnRlbF9zdXNwZW5kX2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBpbnQgaWxrX3dtX21h eF9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBpbnRlbF91cGRh dGVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICt2b2lkIGludGVsX3VwZGF0 ZV9zcHJpdGVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCSAgICBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgICAgdWludDMyX3Qgc3ByaXRlX3dpZHRoLAo+ ICsJCQkJICAgIHVpbnQzMl90IHNwcml0ZV9oZWlnaHQsCj4gKwkJCQkgICAgaW50IHBpeGVsX3Np emUsCj4gKwkJCQkgICAgYm9vbCBlbmFibGVkLCBib29sIHNjYWxlZCk7Cj4gIHZvaWQgaW50ZWxf aW5pdF9wbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBpbnRlbF9wbV9zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBpbnRlbF9ncHVfaXBzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBp bmRleCBkMDMxZDc0Li5kMTM1NTFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAg LTE3NjUsNiArMTc2NSwxMyBAQCBzdGF0aWMgdWludDMyX3QgaWxrX3dtX2ZiYyh1aW50MzJfdCBw cmlfdmFsLCB1aW50MzJfdCBob3Jpel9waXhlbHMsCj4gIAlyZXR1cm4gRElWX1JPVU5EX1VQKHBy aV92YWwgKiA2NCwgaG9yaXpfcGl4ZWxzICogYnl0ZXNfcGVyX3BpeGVsKSArIDI7Cj4gIH0KPiAg Cj4gK3N0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzIHsKPiArCWJvb2wgYWN0aXZlOwo+ICsJ dWludDMyX3QgcGlwZV9odG90YWw7Cj4gKwl1aW50MzJfdCBwaXhlbF9yYXRlOyAvKiBpbiBLSHog Ki8KPiArCXN0cnVjdCBpbnRlbF9wbGFuZV93bV9wYXJhbWV0ZXJzIHBsYW5lW0k5MTVfTUFYX1BM QU5FU107Cj4gK307Cj4gKwo+ICBzdHJ1Y3QgaWxrX3dtX21heGltdW1zIHsKPiAgCXVpbnQxNl90 IHByaTsKPiAgCXVpbnQxNl90IHNwcjsKPiBAQCAtMjgwNSw0MCArMjgxMiwxOCBAQCBzdGF0aWMg Ym9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAjZGVmaW5l IFNLTF9EREJfU0laRQkJODk2CS8qIGluIGJsb2NrcyAqLwo+ICAjZGVmaW5lIEJYVF9EREJfU0la RQkJNTEyCj4gIAo+IC0vKgo+IC0gKiBSZXR1cm4gdGhlIGluZGV4IG9mIGEgcGxhbmUgaW4gdGhl IFNLTCBEREIgYW5kIHdtIHJlc3VsdCBhcnJheXMuICBQcmltYXJ5Cj4gLSAqIHBsYW5lIGlzIGFs d2F5cyBpbiBzbG90IDAsIGN1cnNvciBpcyBhbHdheXMgaW4gc2xvdCBJOTE1X01BWF9QTEFORVMt MSwgYW5kCj4gLSAqIG90aGVyIHVuaXZlcnNhbCBwbGFuZXMgYXJlIGluIGluZGljZXMgMS4ubi4g IE5vdGUgdGhhdCB0aGlzIG1heSBsZWF2ZSB1bnVzZWQKPiAtICogaW5kaWNlcyBiZXR3ZWVuIHRo ZSB0b3AgInNwcml0ZSIgcGxhbmUgYW5kIHRoZSBjdXJzb3IuCj4gLSAqLwo+IC1zdGF0aWMgaW50 Cj4gLXNrbF93bV9wbGFuZV9pZChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQo+IC17 Cj4gLQlzd2l0Y2ggKHBsYW5lLT5iYXNlLnR5cGUpIHsKPiAtCWNhc2UgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWToKPiAtCQlyZXR1cm4gMDsKPiAtCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgo+ IC0JCXJldHVybiBQTEFORV9DVVJTT1I7Cj4gLQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6 Cj4gLQkJcmV0dXJuIHBsYW5lLT5wbGFuZSArIDE7Cj4gLQlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdf Q0FTRShwbGFuZS0+YmFzZS50eXBlKTsKPiAtCQlyZXR1cm4gcGxhbmUtPnBsYW5lOwo+IC0JfQo+ IC19Cj4gLQo+ICBzdGF0aWMgdm9pZAo+ICBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGlt aXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICsJCQkJICAgc3RydWN0IGRybV9jcnRjICpmb3JfY3J0YywK PiAgCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywKPiArCQkJCSAg IGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMsCj4gIAkJCQkgICBz dHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgLyogb3V0ICovKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJt X2NydGMgKmZvcl9jcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gIAl1bnNpZ25lZCBpbnQgcGlwZV9zaXplLCBkZGJfc2l6ZTsKPiAgCWludCBudGhf YWN0aXZlX3BpcGU7Cj4gIAo+IC0JaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4gKwlpZiAo IXBhcmFtcy0+YWN0aXZlKSB7Cj4gIAkJYWxsb2MtPnN0YXJ0ID0gMDsKPiAgCQlhbGxvYy0+ZW5k ID0gMDsKPiAgCQlyZXR1cm47Cj4gQEAgLTI5MDQsMjkgKzI4ODksMTkgQEAgdm9pZCBza2xfZGRi X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIH0KPiAg Cj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQKPiAtc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+IC0JCQkgICAgIGNvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKPiAtCQkJICAgICBpbnQgeSkKPiArc2tsX3Bs YW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1l dGVycyAqcCwgaW50IHkpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBzdGF0ZS0+ZmI7Cj4gIAo+ICAJLyogZm9yIHBsYW5hciBmb3JtYXQgKi8KPiAt CWlmIChmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewo+ICsJaWYgKHAtPnlf Ynl0ZXNfcGVyX3BpeGVsKSB7Cj4gIAkJaWYgKHkpICAvKiB5LXBsYW5lIGRhdGEgcmF0ZSAqLwo+ IC0JCQlyZXR1cm4gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193ICoKPiAtCQkJCWludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAqCj4gLQkJCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChm Yi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCQkJcmV0dXJuIHAtPmhvcml6X3BpeGVscyAqIHAtPnZl cnRfcGl4ZWxzICogcC0+eV9ieXRlc19wZXJfcGl4ZWw7Cj4gIAkJZWxzZSAgICAvKiB1di1wbGFu ZSBkYXRhIHJhdGUgKi8KPiAtCQkJcmV0dXJuIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3Jj X3cvMikgKgo+IC0JCQkJKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaC8yKSAqCj4gLQkJ CQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAxKTsKPiArCQkJcmV0dXJu IChwLT5ob3Jpel9waXhlbHMvMikgKiAocC0+dmVydF9waXhlbHMvMikgKiBwLT5ieXRlc19wZXJf cGl4ZWw7Cj4gIAl9Cj4gIAo+ICAJLyogZm9yIHBhY2tlZCBmb3JtYXRzICovCj4gLQlyZXR1cm4g aW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193ICoKPiAtCQlpbnRlbF9jcnRjLT5jb25maWct PnBpcGVfc3JjX2ggKgo+IC0JCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQs IDApOwo+ICsJcmV0dXJuIHAtPmhvcml6X3BpeGVscyAqIHAtPnZlcnRfcGl4ZWxzICogcC0+Ynl0 ZXNfcGVyX3BpeGVsOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0yOTM1LDUxICsyOTEwLDQ2IEBAIHNr bF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSwKPiAgICogICAzICogNDA5NiAqIDgxOTIgICogNCA8IDJeMzIKPiAgICovCj4gIHN0 YXRpYyB1bnNpZ25lZCBpbnQKPiAtc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiArc2tsX2dldF90b3RhbF9yZWxh dGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gKwkJCQkgY29u c3Qgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnBhcmFtcykKPiAgewo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRj KTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAt CWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4gIAl1bnNpZ25lZCBpbnQg dG90YWxfZGF0YV9yYXRlID0gMDsKPiArCWludCBwbGFuZTsKPiAgCj4gLQlmb3JfZWFjaF9pbnRl bF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiAtCQljb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSBpbnRlbF9wbGFuZS0+YmFzZS5zdGF0 ZTsKPiArCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGludGVsX251bV9wbGFuZXMoaW50ZWxfY3J0 Yyk7IHBsYW5lKyspIHsKPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVy cyAqcDsKPiAgCj4gLQkJaWYgKHBzdGF0ZS0+ZmIgPT0gTlVMTCkKPiArCQlwID0gJnBhcmFtcy0+ cGxhbmVbcGxhbmVdOwo+ICsJCWlmICghcC0+ZW5hYmxlZCkKPiAgCQkJY29udGludWU7Cj4gIAo+ IC0JCS8qIHBhY2tlZC91diAqLwo+IC0JCXRvdGFsX2RhdGFfcmF0ZSArPSBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwKPiAtCQkJCQkJCQlwc3RhdGUsCj4gLQkJCQkJCQkJMCk7 Cj4gLQo+IC0JCWlmIChwc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEy KQo+IC0JCQkvKiB5LXBsYW5lICovCj4gLQkJCXRvdGFsX2RhdGFfcmF0ZSArPSBza2xfcGxhbmVf cmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwKPiAtCQkJCQkJCQkJcHN0YXRlLAo+IC0JCQkJCQkJ CQkxKTsKPiArCQl0b3RhbF9kYXRhX3JhdGUgKz0gc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0 ZShwLCAwKTsgLyogcGFja2VkL3V2ICovCj4gKwkJaWYgKHAtPnlfYnl0ZXNfcGVyX3BpeGVsKSB7 Cj4gKwkJCXRvdGFsX2RhdGFfcmF0ZSArPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKHAs IDEpOyAvKiB5LXBsYW5lICovCj4gKwkJfQo+ICAJfQo+ICAKPiAgCXJldHVybiB0b3RhbF9kYXRh X3JhdGU7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXNrbF9hbGxvY2F0ZV9waXBlX2RkYihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICtza2xfYWxsb2NhdGVfcGlwZV9kZGIo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9j b25maWcgKmNvbmZpZywKPiArCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1l dGVycyAqcGFyYW1zLAo+ICAJCSAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAv KiBvdXQgKi8pCj4gIHsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5j cnRjOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOwo+ICAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmRkYi0+cGlwZVtwaXBl XTsKPiAgCXVpbnQxNl90IGFsbG9jX3NpemUsIHN0YXJ0LCBjdXJzb3JfYmxvY2tzOwo+ICAJdWlu dDE2X3QgbWluaW11bVtJOTE1X01BWF9QTEFORVNdOwo+ICAJdWludDE2X3QgeV9taW5pbXVtW0k5 MTVfTUFYX1BMQU5FU107Cj4gIAl1bnNpZ25lZCBpbnQgdG90YWxfZGF0YV9yYXRlOwo+ICsJaW50 IHBsYW5lOwo+ICAKPiAtCXNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoZGV2LCBj c3RhdGUsIGNvbmZpZywgYWxsb2MpOwo+ICsJc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xp bWl0cyhkZXYsIGNydGMsIGNvbmZpZywgcGFyYW1zLCBhbGxvYyk7Cj4gIAlhbGxvY19zaXplID0g c2tsX2RkYl9lbnRyeV9zaXplKGFsbG9jKTsKPiAgCWlmIChhbGxvY19zaXplID09IDApIHsKPiAg CQltZW1zZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+cGxhbmVbcGlwZV0pKTsK PiBAQCAtMjk5NiwyMCArMjk2NiwxNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCWFsbG9jLT5lbmQgLT0gY3Vyc29yX2Jsb2NrczsK PiAgCj4gIAkvKiAxLiBBbGxvY2F0ZSB0aGUgbWluaW51bSByZXF1aXJlZCBibG9ja3MgZm9yIGVh Y2ggYWN0aXZlIHBsYW5lICovCj4gLQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwg aW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiAtCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9 ICZpbnRlbF9wbGFuZS0+YmFzZTsKPiAtCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lLT5mYjsKPiAtCQlpbnQgaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOwo+ICsJ Zm9yX2VhY2hfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKSB7Cj4gKwkJY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgKnA7Cj4gIAo+IC0JCWlmIChmYiA9PSBOVUxMKQo+ IC0JCQljb250aW51ZTsKPiAtCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VS U09SKQo+ICsJCXAgPSAmcGFyYW1zLT5wbGFuZVtwbGFuZV07Cj4gKwkJaWYgKCFwLT5lbmFibGVk KQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJbWluaW11bVtpZF0gPSA4Owo+IC0JCWFsbG9jX3Np emUgLT0gbWluaW11bVtpZF07Cj4gLQkJeV9taW5pbXVtW2lkXSA9IChmYi0+cGl4ZWxfZm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMikgPyA4IDogMDsKPiAtCQlhbGxvY19zaXplIC09IHlfbWluaW11 bVtpZF07Cj4gKwkJbWluaW11bVtwbGFuZV0gPSA4Owo+ICsJCWFsbG9jX3NpemUgLT0gbWluaW11 bVtwbGFuZV07Cj4gKwkJeV9taW5pbXVtW3BsYW5lXSA9IHAtPnlfYnl0ZXNfcGVyX3BpeGVsID8g OCA6IDA7Cj4gKwkJYWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1bcGxhbmVdOwo+ICAJfQo+ICAKPiAg CS8qCj4gQEAgLTMwMTgsNTAgKzI5ODUsNDUgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAkgKgo+ICAJICogRklYTUU6IHdlIG1heSBu b3QgYWxsb2NhdGUgZXZlcnkgc2luZ2xlIGJsb2NrIGhlcmUuCj4gIAkgKi8KPiAtCXRvdGFsX2Rh dGFfcmF0ZSA9IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSk7Cj4gKwl0 b3RhbF9kYXRhX3JhdGUgPSBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShpbnRlbF9j cnRjLCBwYXJhbXMpOwo+ICAKPiAgCXN0YXJ0ID0gYWxsb2MtPnN0YXJ0Owo+IC0JZm9yX2VhY2hf aW50ZWxfcGxhbmVfb25fY3J0YyhkZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7Cj4gLQkJ c3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmaW50ZWxfcGxhbmUtPmJhc2U7Cj4gLQkJc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gaW50ZWxfcGxhbmUtPmJhc2Uuc3RhdGU7Cj4gKwlm b3IgKHBsYW5lID0gMDsgcGxhbmUgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBwbGFu ZSsrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgKnA7Cj4g IAkJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRhX3JhdGU7Cj4gIAkJdWludDE2X3QgcGxh bmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7Cj4gLQkJaW50IGlkID0gc2tsX3dtX3BsYW5l X2lkKGludGVsX3BsYW5lKTsKPiAgCj4gLQkJaWYgKHBzdGF0ZS0+ZmIgPT0gTlVMTCkKPiAtCQkJ Y29udGludWU7Cj4gLQkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikK PiArCQlwID0gJnBhcmFtcy0+cGxhbmVbcGxhbmVdOwo+ICsJCWlmICghcC0+ZW5hYmxlZCkKPiAg CQkJY29udGludWU7Cj4gIAo+IC0JCWRhdGFfcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRh X3JhdGUoY3N0YXRlLCBwc3RhdGUsIDApOwo+ICsJCWRhdGFfcmF0ZSA9IHNrbF9wbGFuZV9yZWxh dGl2ZV9kYXRhX3JhdGUocCwgMCk7Cj4gIAo+ICAJCS8qCj4gIAkJICogYWxsb2NhdGlvbiBmb3Ig KHBhY2tlZCBmb3JtYXRzKSBvciAodXYtcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9ybWF0KToKPiAg CQkgKiBwcm9tb3RlIHRoZSBleHByZXNzaW9uIHRvIDY0IGJpdHMgdG8gYXZvaWQgb3ZlcmZsb3dp bmcsIHRoZQo+ICAJCSAqIHJlc3VsdCBpcyA8IGF2YWlsYWJsZSBhcyBkYXRhX3JhdGUgLyB0b3Rh bF9kYXRhX3JhdGUgPCAxCj4gIAkJICovCj4gLQkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtpZF07 Cj4gKwkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtwbGFuZV07Cj4gIAkJcGxhbmVfYmxvY2tzICs9 IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKiBkYXRhX3JhdGUsCj4gIAkJCQkJdG90YWxf ZGF0YV9yYXRlKTsKPiAgCj4gLQkJZGRiLT5wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBzdGFydDsK PiAtCQlkZGItPnBsYW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKPiAr CQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lXS5zdGFydCA9IHN0YXJ0Owo+ICsJCWRkYi0+cGxhbmVb cGlwZV1bcGxhbmVdLmVuZCA9IHN0YXJ0ICsgcGxhbmVfYmxvY2tzOwo+ICAKPiAgCQlzdGFydCAr PSBwbGFuZV9ibG9ja3M7Cj4gIAo+ICAJCS8qCj4gIAkJICogYWxsb2NhdGlvbiBmb3IgeV9wbGFu ZSBwYXJ0IG9mIHBsYW5hciBmb3JtYXQ6Cj4gIAkJICovCj4gLQkJaWYgKHBzdGF0ZS0+ZmItPnBp eGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpIHsKPiAtCQkJeV9kYXRhX3JhdGUgPSBza2xf cGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwKPiAtCQkJCQkJCQkgICBwc3RhdGUsCj4g LQkJCQkJCQkJICAgMSk7Cj4gLQkJCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW2lkXTsKPiAr CQlpZiAocC0+eV9ieXRlc19wZXJfcGl4ZWwpIHsKPiArCQkJeV9kYXRhX3JhdGUgPSBza2xfcGxh bmVfcmVsYXRpdmVfZGF0YV9yYXRlKHAsIDEpOwo+ICsJCQl5X3BsYW5lX2Jsb2NrcyA9IHlfbWlu aW11bVtwbGFuZV07Cj4gIAkJCXlfcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFs bG9jX3NpemUgKiB5X2RhdGFfcmF0ZSwKPiAgCQkJCQkJdG90YWxfZGF0YV9yYXRlKTsKPiAgCj4g LQkJCWRkYi0+eV9wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBzdGFydDsKPiAtCQkJZGRiLT55X3Bs YW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArIHlfcGxhbmVfYmxvY2tzOwo+ICsJCQlkZGItPnlf cGxhbmVbcGlwZV1bcGxhbmVdLnN0YXJ0ID0gc3RhcnQ7Cj4gKwkJCWRkYi0+eV9wbGFuZVtwaXBl XVtwbGFuZV0uZW5kID0gc3RhcnQgKyB5X3BsYW5lX2Jsb2NrczsKPiAgCj4gIAkJCXN0YXJ0ICs9 IHlfcGxhbmVfYmxvY2tzOwo+ICAJCX0KPiBAQCAtMzE0OCwyMSArMzExMCw4NyBAQCBzdGF0aWMg dm9pZCBza2xfY29tcHV0ZV93bV9nbG9iYWxfcGFyYW1ldGVycyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAJCQkJCSAgICAgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAg Cj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlz dCwgaGVhZCkKPiAgCQljb25maWctPm51bV9waXBlc19hY3RpdmUgKz0gdG9faW50ZWxfY3J0Yyhj cnRjKS0+YWN0aXZlOwo+ICsKPiArCS8qIEZJWE1FOiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdGhv c2UgdHdvIGdsb2JhbCBwYXJhbWV0ZXJzIG9uIFNLTCAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eShwbGFuZSwgJmRldi0+bW9kZV9jb25maWcucGxhbmVfbGlzdCwgaGVhZCkgewo+ICsJCXN0cnVj dCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gKwo+ ICsJCWNvbmZpZy0+c3ByaXRlc19lbmFibGVkIHw9IGludGVsX3BsYW5lLT53bS5lbmFibGVkOwo+ ICsJCWNvbmZpZy0+c3ByaXRlc19zY2FsZWQgfD0gaW50ZWxfcGxhbmUtPndtLnNjYWxlZDsKPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfd21fcGlwZV9wYXJhbWV0ZXJz KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJCQkgICBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFy YW1ldGVycyAqcCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsK PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiArCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gKwlpbnQgaSA9IDE7 IC8qIEluZGV4IGZvciBzcHJpdGUgcGxhbmVzIHN0YXJ0ICovCj4gKwo+ICsJcC0+YWN0aXZlID0g aW50ZWxfY3J0Yy0+YWN0aXZlOwo+ICsJaWYgKHAtPmFjdGl2ZSkgewo+ICsJCXAtPnBpcGVfaHRv dGFsID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWw7 Cj4gKwkJcC0+cGl4ZWxfcmF0ZSA9IHNrbF9waXBlX3BpeGVsX3JhdGUoaW50ZWxfY3J0Yy0+Y29u ZmlnKTsKPiArCj4gKwkJZmIgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4gKwkJLyogRm9y IHBsYW5hcjogQnBwIGlzIGZvciB1diBwbGFuZSwgeV9CcHAgaXMgZm9yIHkgcGxhbmUgKi8KPiAr CQlpZiAoZmIpIHsKPiArCQkJcC0+cGxhbmVbMF0uZW5hYmxlZCA9IHRydWU7Cj4gKwkJCXAtPnBs YW5lWzBdLmJ5dGVzX3Blcl9waXhlbCA9IGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9O VjEyID8KPiArCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDEpIDoK PiArCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICsJCQlw LT5wbGFuZVswXS55X2J5dGVzX3Blcl9waXhlbCA9IGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9OVjEyID8KPiArCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQs IDApIDogMDsKPiArCQkJcC0+cGxhbmVbMF0udGlsaW5nID0gZmItPm1vZGlmaWVyWzBdOwo+ICsJ CX0gZWxzZSB7Cj4gKwkJCXAtPnBsYW5lWzBdLmVuYWJsZWQgPSBmYWxzZTsKPiArCQkJcC0+cGxh bmVbMF0uYnl0ZXNfcGVyX3BpeGVsID0gMDsKPiArCQkJcC0+cGxhbmVbMF0ueV9ieXRlc19wZXJf cGl4ZWwgPSAwOwo+ICsJCQlwLT5wbGFuZVswXS50aWxpbmcgPSBEUk1fRk9STUFUX01PRF9OT05F Owo+ICsJCX0KPiArCQlwLT5wbGFuZVswXS5ob3Jpel9waXhlbHMgPSBpbnRlbF9jcnRjLT5jb25m aWctPnBpcGVfc3JjX3c7Cj4gKwkJcC0+cGxhbmVbMF0udmVydF9waXhlbHMgPSBpbnRlbF9jcnRj LT5jb25maWctPnBpcGVfc3JjX2g7Cj4gKwkJcC0+cGxhbmVbMF0ucm90YXRpb24gPSBjcnRjLT5w cmltYXJ5LT5zdGF0ZS0+cm90YXRpb247Cj4gKwo+ICsJCWZiID0gY3J0Yy0+Y3Vyc29yLT5zdGF0 ZS0+ZmI7Cj4gKwkJcC0+cGxhbmVbUExBTkVfQ1VSU09SXS55X2J5dGVzX3Blcl9waXhlbCA9IDA7 Cj4gKwkJaWYgKGZiKSB7Cj4gKwkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0uZW5hYmxlZCA9IHRy dWU7Cj4gKwkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0uYnl0ZXNfcGVyX3BpeGVsID0gZmItPmJp dHNfcGVyX3BpeGVsIC8gODsKPiArCQkJcC0+cGxhbmVbUExBTkVfQ1VSU09SXS5ob3Jpel9waXhl bHMgPSBjcnRjLT5jdXJzb3ItPnN0YXRlLT5jcnRjX3c7Cj4gKwkJCXAtPnBsYW5lW1BMQU5FX0NV UlNPUl0udmVydF9waXhlbHMgPSBjcnRjLT5jdXJzb3ItPnN0YXRlLT5jcnRjX2g7Cj4gKwkJfSBl bHNlIHsKPiArCQkJcC0+cGxhbmVbUExBTkVfQ1VSU09SXS5lbmFibGVkID0gZmFsc2U7Cj4gKwkJ CXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0uYnl0ZXNfcGVyX3BpeGVsID0gMDsKPiArCQkJcC0+cGxh bmVbUExBTkVfQ1VSU09SXS5ob3Jpel9waXhlbHMgPSA2NDsKPiArCQkJcC0+cGxhbmVbUExBTkVf Q1VSU09SXS52ZXJ0X3BpeGVscyA9IDY0Owo+ICsJCX0KPiArCX0KPiArCj4gKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KHBsYW5lLCAmZGV2LT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0LCBoZWFkKSB7Cj4g KwkJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l KTsKPiArCj4gKwkJaWYgKGludGVsX3BsYW5lLT5waXBlID09IHBpcGUgJiYKPiArCQkJcGxhbmUt PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkKPiArCQkJcC0+cGxhbmVbaSsrXSA9IGlu dGVsX3BsYW5lLT53bTsKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgc2tsX2NvbXB1dGVf cGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkJ IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gLQkJCQkgc3RydWN0IGludGVsX3Bs YW5lICppbnRlbF9wbGFuZSwKPiArCQkJCSBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1ldGVycyAq cCwKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcF9wYXJhbXMsCj4g IAkJCQkgdWludDE2X3QgZGRiX2FsbG9jYXRpb24sCj4gIAkJCQkgaW50IGxldmVsLAo+ICAJCQkJ IHVpbnQxNl90ICpvdXRfYmxvY2tzLCAvKiBvdXQgKi8KPiAgCQkJCSB1aW50OF90ICpvdXRfbGlu ZXMgLyogb3V0ICovKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9w bGFuZS0+YmFzZTsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRl LT5mYjsKPiAgCXVpbnQzMl90IGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2 ZWxdOwo+ICAJdWludDMyX3QgbWV0aG9kMSwgbWV0aG9kMjsKPiAgCXVpbnQzMl90IHBsYW5lX2J5 dGVzX3Blcl9saW5lLCBwbGFuZV9ibG9ja3NfcGVyX2xpbmU7Cj4gQEAgLTMxNzAsMzUgKzMxOTgs MzEgQEAgc3RhdGljIGJvb2wgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJdWludDMyX3Qgc2VsZWN0ZWRfcmVzdWx0Owo+ICAJ dWludDhfdCBieXRlc19wZXJfcGl4ZWw7Cj4gIAo+IC0JaWYgKGxhdGVuY3kgPT0gMCB8fCAhY3N0 YXRlLT5iYXNlLmFjdGl2ZSB8fCAhZmIpCj4gKwlpZiAobGF0ZW5jeSA9PSAwIHx8ICFwLT5hY3Rp dmUgfHwgIXBfcGFyYW1zLT5lbmFibGVkKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlieXRl c19wZXJfcGl4ZWwgPSAoZmItPnBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpID8KPiAt CQlkcm1fZm9ybWF0X3BsYW5lX2NwcChEUk1fRk9STUFUX05WMTIsIDApIDoKPiAtCQlkcm1fZm9y bWF0X3BsYW5lX2NwcChEUk1fRk9STUFUX05WMTIsIDEpOwo+IC0JbWV0aG9kMSA9IHNrbF93bV9t ZXRob2QxKHNrbF9waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwKPiArCWJ5dGVzX3Blcl9waXhlbCA9 IHBfcGFyYW1zLT55X2J5dGVzX3Blcl9waXhlbCA/Cj4gKwkJcF9wYXJhbXMtPnlfYnl0ZXNfcGVy X3BpeGVsIDoKPiArCQlwX3BhcmFtcy0+Ynl0ZXNfcGVyX3BpeGVsOwo+ICsJbWV0aG9kMSA9IHNr bF93bV9tZXRob2QxKHAtPnBpeGVsX3JhdGUsCj4gIAkJCQkgYnl0ZXNfcGVyX3BpeGVsLAo+ICAJ CQkJIGxhdGVuY3kpOwo+IC0JbWV0aG9kMiA9IHNrbF93bV9tZXRob2QyKHNrbF9waXBlX3BpeGVs X3JhdGUoY3N0YXRlKSwKPiAtCQkJCSBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0 b3RhbCwKPiAtCQkJCSBjc3RhdGUtPnBpcGVfc3JjX3csCj4gKwltZXRob2QyID0gc2tsX3dtX21l dGhvZDIocC0+cGl4ZWxfcmF0ZSwKPiArCQkJCSBwLT5waXBlX2h0b3RhbCwKPiArCQkJCSBwX3Bh cmFtcy0+aG9yaXpfcGl4ZWxzLAo+ICAJCQkJIGJ5dGVzX3Blcl9waXhlbCwKPiAtCQkJCSBmYi0+ bW9kaWZpZXJbMF0sCj4gKwkJCQkgcF9wYXJhbXMtPnRpbGluZywKPiAgCQkJCSBsYXRlbmN5KTsK PiAgCj4gLQlwbGFuZV9ieXRlc19wZXJfbGluZSA9IGNzdGF0ZS0+cGlwZV9zcmNfdyAqIGJ5dGVz X3Blcl9waXhlbDsKPiArCXBsYW5lX2J5dGVzX3Blcl9saW5lID0gcF9wYXJhbXMtPmhvcml6X3Bp eGVscyAqIGJ5dGVzX3Blcl9waXhlbDsKPiAgCXBsYW5lX2Jsb2Nrc19wZXJfbGluZSA9IERJVl9S T1VORF9VUChwbGFuZV9ieXRlc19wZXJfbGluZSwgNTEyKTsKPiAgCj4gLQlpZiAoZmItPm1vZGlm aWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gLQkgICAgZmItPm1vZGlmaWVy WzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+ICsJaWYgKHBfcGFyYW1zLT50aWxp bmcgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiArCSAgICBwX3BhcmFtcy0+dGlsaW5n ID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+ICAJCXVpbnQzMl90IG1pbl9zY2FubGlu ZXMgPSA0Owo+ICAJCXVpbnQzMl90IHlfdGlsZV9taW5pbXVtOwo+IC0JCWlmIChpbnRlbF9yb3Rh dGlvbl85MF9vcl8yNzAocGxhbmUtPnN0YXRlLT5yb3RhdGlvbikpIHsKPiAtCQkJaW50IGJwcCA9 IChmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgPwo+IC0JCQkJZHJtX2Zvcm1h dF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMSkgOgo+IC0JCQkJZHJtX2Zvcm1hdF9wbGFu ZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gLQo+IC0JCQlzd2l0Y2ggKGJwcCkgewo+ICsJ CWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocF9wYXJhbXMtPnJvdGF0aW9uKSkgewo+ICsJ CQlzd2l0Y2ggKHBfcGFyYW1zLT5ieXRlc19wZXJfcGl4ZWwpIHsKPiAgCQkJY2FzZSAxOgo+ICAJ CQkJbWluX3NjYW5saW5lcyA9IDE2Owo+ICAJCQkJYnJlYWs7Cj4gQEAgLTMyMjIsOCArMzI0Niw4 IEBAIHN0YXRpYyBib29sIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJlc19saW5lcyA9IERJVl9ST1VORF9VUChzZWxlY3Rl ZF9yZXN1bHQsIHBsYW5lX2Jsb2Nrc19wZXJfbGluZSk7Cj4gIAo+ICAJaWYgKGxldmVsID49IDEg JiYgbGV2ZWwgPD0gNykgewo+IC0JCWlmIChmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRf TU9EX1lfVElMRUQgfHwKPiAtCQkgICAgZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01P RF9ZZl9USUxFRCkKPiArCQlpZiAocF9wYXJhbXMtPnRpbGluZyA9PSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRCB8fAo+ICsJCSAgICBwX3BhcmFtcy0+dGlsaW5nID09IEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRCkKPiAgCQkJcmVzX2xpbmVzICs9IDQ7Cj4gIAkJZWxzZQo+ICAJCQlyZXNfYmxvY2tz Kys7Cj4gQEAgLTMyNDAsODAgKzMyNjQsODQgQEAgc3RhdGljIGJvb2wgc2tsX2NvbXB1dGVfcGxh bmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgc3Rh dGljIHZvaWQgc2tsX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCQkJIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiAt CQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICsJCQkJIHN0cnVjdCBza2xf cGlwZV93bV9wYXJhbWV0ZXJzICpwLAo+ICsJCQkJIGVudW0gcGlwZSBwaXBlLAo+ICAJCQkJIGlu dCBsZXZlbCwKPiArCQkJCSBpbnQgbnVtX3BsYW5lcywKPiAgCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xl dmVsICpyZXN1bHQpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ ZGV2Owo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNz dGF0ZS0+YmFzZS5jcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4g IAl1aW50MTZfdCBkZGJfYmxvY2tzOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+IC0KPiAtCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRj LCBpbnRlbF9wbGFuZSkgewo+IC0JCWludCBpID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5l KTsKPiArCWludCBpOwo+ICAKPiArCWZvciAoaSA9IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspIHsK PiAgCQlkZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW2ld KTsKPiAgCj4gIAkJcmVzdWx0LT5wbGFuZV9lbltpXSA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRl dl9wcml2LAo+IC0JCQkJCQljc3RhdGUsCj4gLQkJCQkJCWludGVsX3BsYW5lLAo+ICsJCQkJCQlw LCAmcC0+cGxhbmVbaV0sCj4gIAkJCQkJCWRkYl9ibG9ja3MsCj4gIAkJCQkJCWxldmVsLAo+ICAJ CQkJCQkmcmVzdWx0LT5wbGFuZV9yZXNfYltpXSwKPiAgCQkJCQkJJnJlc3VsdC0+cGxhbmVfcmVz X2xbaV0pOwo+ICAJfQo+ICsKPiArCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRk Yi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSk7Cj4gKwlyZXN1bHQtPnBsYW5lX2VuW1BMQU5F X0NVUlNPUl0gPSBza2xfY29tcHV0ZV9wbGFuZV93bShkZXZfcHJpdiwgcCwKPiArCQkJCQkJICZw LT5wbGFuZVtQTEFORV9DVVJTT1JdLAo+ICsJCQkJCQkgZGRiX2Jsb2NrcywgbGV2ZWwsCj4gKwkJ CQkJCSAmcmVzdWx0LT5wbGFuZV9yZXNfYltQTEFORV9DVVJTT1JdLAo+ICsJCQkJCQkgJnJlc3Vs dC0+cGxhbmVfcmVzX2xbUExBTkVfQ1VSU09SXSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB1aW50MzJf dAo+IC1za2xfY29tcHV0ZV9saW5ldGltZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlKQo+ICtza2xfY29tcHV0ZV9saW5ldGltZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0 cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpwKQo+ICB7Cj4gLQlpZiAoIWNzdGF0ZS0+YmFz ZS5hY3RpdmUpCj4gKwlpZiAoIXRvX2ludGVsX2NydGMoY3J0YyktPmFjdGl2ZSkKPiAgCQlyZXR1 cm4gMDsKPiAgCj4gLQlpZiAoV0FSTl9PTihza2xfcGlwZV9waXhlbF9yYXRlKGNzdGF0ZSkgPT0g MCkpCj4gKwlpZiAoV0FSTl9PTihwLT5waXhlbF9yYXRlID09IDApKQo+ICAJCXJldHVybiAwOwo+ ICAKPiAtCXJldHVybiBESVZfUk9VTkRfVVAoOCAqIGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2Rl LmNydGNfaHRvdGFsICogMTAwMCwKPiAtCQkJICAgIHNrbF9waXBlX3BpeGVsX3JhdGUoY3N0YXRl KSk7Cj4gKwlyZXR1cm4gRElWX1JPVU5EX1VQKDggKiBwLT5waXBlX2h0b3RhbCAqIDEwMDAsIHAt PnBpeGVsX3JhdGUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0 aW9uX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gK3N0YXRpYyB2b2lkIHNr bF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJICAg ICAgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnBhcmFtcywKPiAgCQkJCSAgICAgIHN0 cnVjdCBza2xfd21fbGV2ZWwgKnRyYW5zX3dtIC8qIG91dCAqLykKPiAgewo+IC0Jc3RydWN0IGRy bV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lOwo+ICsJaW50IGk7Cj4gIAo+IC0JaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZl KQo+ICsJaWYgKCFwYXJhbXMtPmFjdGl2ZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyogVW50aWwg d2Uga25vdyBtb3JlLCBqdXN0IGRpc2FibGUgdHJhbnNpdGlvbiBXTXMgKi8KPiAtCWZvcl9lYWNo X2ludGVsX3BsYW5lX29uX2NydGMoY3J0Yy0+ZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkg ewo+IC0JCWludCBpID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKPiAtCj4gKwlmb3Ig KGkgPSAwOyBpIDwgaW50ZWxfbnVtX3BsYW5lcyhpbnRlbF9jcnRjKTsgaSsrKQo+ICAJCXRyYW5z X3dtLT5wbGFuZV9lbltpXSA9IGZhbHNlOwo+IC0JfQo+ICsJdHJhbnNfd20tPnBsYW5lX2VuW1BM QU5FX0NVUlNPUl0gPSBmYWxzZTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVf cGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICtzdGF0aWMgdm9pZCBz a2xfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCXN0cnVjdCBz a2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiArCQkJCXN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0 ZXJzICpwYXJhbXMsCj4gIAkJCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20pCj4gIHsKPiAt CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2Owo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlpbnQgbGV2ZWwsIG1h eF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiAgCj4gIAlmb3IgKGxldmVsID0gMDsg bGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gLQkJc2tsX2NvbXB1dGVfd21fbGV2ZWwo ZGV2X3ByaXYsIGRkYiwgY3N0YXRlLAo+IC0JCQkJICAgICBsZXZlbCwgJnBpcGVfd20tPndtW2xl dmVsXSk7Cj4gKwkJc2tsX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGRkYiwgcGFyYW1zLCBp bnRlbF9jcnRjLT5waXBlLAo+ICsJCQkJICAgICBsZXZlbCwgaW50ZWxfbnVtX3BsYW5lcyhpbnRl bF9jcnRjKSwKPiArCQkJCSAgICAgJnBpcGVfd20tPndtW2xldmVsXSk7Cj4gIAl9Cj4gLQlwaXBl X3dtLT5saW5ldGltZSA9IHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKGNzdGF0ZSk7Cj4gKwlwaXBl X3dtLT5saW5ldGltZSA9IHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKGNydGMsIHBhcmFtcyk7Cj4g IAo+IC0Jc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZwaXBlX3dtLT50cmFuc193 bSk7Cj4gKwlza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNydGMsIHBhcmFtcywgJnBpcGVfd20t PnRyYW5zX3dtKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfd21fcmVzdWx0 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJICAgc3RydWN0IHNrbF9waXBlX3dtX3Bh cmFtZXRlcnMgKnAsCj4gIAkJCQkgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBfd20sCj4gIAkJCQkg ICBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqciwKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjKQo+IEBAIC0zNTU3LDE1ICszNTg1LDE2IEBAIHN0YXRpYyB2b2lkIHNrbF9mbHVz aF93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICB9Cj4gIAo+ ICBzdGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICsJCQkgICAgICAgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnBhcmFtcywKPiAgCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywKPiAgCQkJICAgICAgIHN0cnVj dCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwgLyogb3V0ICovCj4gIAkJCSAgICAgICBzdHJ1Y3Qg c2tsX3BpcGVfd20gKnBpcGVfd20gLyogb3V0ICovKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAo+ IC0Jc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgY29uZmlnLCBkZGIpOwo+IC0Jc2tsX2Nv bXB1dGVfcGlwZV93bShjc3RhdGUsIGRkYiwgcGlwZV93bSk7Cj4gKwlza2xfY29tcHV0ZV93bV9w aXBlX3BhcmFtZXRlcnMoY3J0YywgcGFyYW1zKTsKPiArCXNrbF9hbGxvY2F0ZV9waXBlX2RkYihj cnRjLCBjb25maWcsIHBhcmFtcywgZGRiKTsKPiArCXNrbF9jb21wdXRlX3BpcGVfd20oY3J0Yywg ZGRiLCBwYXJhbXMsIHBpcGVfd20pOwo+ICAKPiAgCWlmICghbWVtY21wKCZpbnRlbF9jcnRjLT53 bS5za2xfYWN0aXZlLCBwaXBlX3dtLCBzaXplb2YoKnBpcGVfd20pKSkKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gQEAgLTM1OTgsNiArMzYyNyw3IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfb3RoZXJf cGlwZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICovCj4gIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KGludGVsX2NydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwKPiAgCQkJCWJh c2UuaGVhZCkgewo+ICsJCXN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzIHBhcmFtcyA9IHt9 Owo+ICAJCXN0cnVjdCBza2xfcGlwZV93bSBwaXBlX3dtID0ge307Cj4gIAkJYm9vbCB3bV9jaGFu Z2VkOwo+ICAKPiBAQCAtMzYwNyw3ICszNjM3LDggQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9v dGhlcl9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaWYgKCFpbnRlbF9jcnRj LT5hY3RpdmUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQl3bV9jaGFuZ2VkID0gc2tsX3VwZGF0 ZV9waXBlX3dtKCZpbnRlbF9jcnRjLT5iYXNlLCBjb25maWcsCj4gKwkJd21fY2hhbmdlZCA9IHNr bF91cGRhdGVfcGlwZV93bSgmaW50ZWxfY3J0Yy0+YmFzZSwKPiArCQkJCQkJJnBhcmFtcywgY29u ZmlnLAo+ICAJCQkJCQkmci0+ZGRiLCAmcGlwZV93bSk7Cj4gIAo+ICAJCS8qCj4gQEAgLTM2MTcs NyArMzY0OCw3IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfb3RoZXJfcGlwZV93bShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAJCSAqLwo+ICAJCVdBUk5fT04oIXdtX2NoYW5nZWQpOwo+ICAK PiAtCQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgJnBpcGVfd20sIHIsIGludGVsX2NydGMp Owo+ICsJCXNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoZGV2LCAmcGFyYW1zLCAmcGlwZV93bSwgciwg aW50ZWxfY3J0Yyk7Cj4gIAkJci0+ZGlydHlbaW50ZWxfY3J0Yy0+cGlwZV0gPSB0cnVlOwo+ICAJ fQo+ICB9Cj4gQEAgLTM2NDcsNiArMzY3OCw3IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfd20o c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gKwlzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1ldGVycyBwYXJhbXMgPSB7fTsKPiAg CXN0cnVjdCBza2xfd21fdmFsdWVzICpyZXN1bHRzID0gJmRldl9wcml2LT53bS5za2xfcmVzdWx0 czsKPiAgCXN0cnVjdCBza2xfcGlwZV93bSBwaXBlX3dtID0ge307Cj4gIAlzdHJ1Y3QgaW50ZWxf d21fY29uZmlnIGNvbmZpZyA9IHt9Owo+IEBAIC0zNjU5LDEwICszNjkxLDExIEBAIHN0YXRpYyB2 b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCXNrbF9jb21w dXRlX3dtX2dsb2JhbF9wYXJhbWV0ZXJzKGRldiwgJmNvbmZpZyk7Cj4gIAo+IC0JaWYgKCFza2xf dXBkYXRlX3BpcGVfd20oY3J0YywgJmNvbmZpZywgJnJlc3VsdHMtPmRkYiwgJnBpcGVfd20pKQo+ ICsJaWYgKCFza2xfdXBkYXRlX3BpcGVfd20oY3J0YywgJnBhcmFtcywgJmNvbmZpZywKPiArCQkJ CSZyZXN1bHRzLT5kZGIsICZwaXBlX3dtKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0Jc2tsX2NvbXB1 dGVfd21fcmVzdWx0cyhkZXYsICZwaXBlX3dtLCByZXN1bHRzLCBpbnRlbF9jcnRjKTsKPiArCXNr bF9jb21wdXRlX3dtX3Jlc3VsdHMoZGV2LCAmcGFyYW1zLCAmcGlwZV93bSwgcmVzdWx0cywgaW50 ZWxfY3J0Yyk7Cj4gIAlyZXN1bHRzLT5kaXJ0eVtpbnRlbF9jcnRjLT5waXBlXSA9IHRydWU7Cj4g IAo+ICAJc2tsX3VwZGF0ZV9vdGhlcl9waXBlX3dtKGRldiwgY3J0YywgJmNvbmZpZywgcmVzdWx0 cyk7Cj4gQEAgLTM2NzMsNiArMzcwNiwzOSBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWRldl9wcml2LT53bS5za2xfaHcgPSAqcmVzdWx0czsK PiAgfQo+ICAKPiArc3RhdGljIHZvaWQKPiArc2tsX3VwZGF0ZV9zcHJpdGVfd20oc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkgICAgIHVpbnQzMl90 IHNwcml0ZV93aWR0aCwgdWludDMyX3Qgc3ByaXRlX2hlaWdodCwKPiArCQkgICAgIGludCBwaXhl bF9zaXplLCBib29sIGVuYWJsZWQsIGJvb2wgc2NhbGVkKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+ICsKPiArCWludGVsX3BsYW5l LT53bS5lbmFibGVkID0gZW5hYmxlZDsKPiArCWludGVsX3BsYW5lLT53bS5zY2FsZWQgPSBzY2Fs ZWQ7Cj4gKwlpbnRlbF9wbGFuZS0+d20uaG9yaXpfcGl4ZWxzID0gc3ByaXRlX3dpZHRoOwo+ICsJ aW50ZWxfcGxhbmUtPndtLnZlcnRfcGl4ZWxzID0gc3ByaXRlX2hlaWdodDsKPiArCWludGVsX3Bs YW5lLT53bS50aWxpbmcgPSBEUk1fRk9STUFUX01PRF9OT05FOwo+ICsKPiArCS8qIEZvciBwbGFu YXI6IEJwcCBpcyBmb3IgVVYgcGxhbmUsIHlfQnBwIGlzIGZvciBZIHBsYW5lICovCj4gKwlpbnRl bF9wbGFuZS0+d20uYnl0ZXNfcGVyX3BpeGVsID0KPiArCQkoZmIgJiYgZmItPnBpeGVsX2Zvcm1h dCA9PSBEUk1fRk9STUFUX05WMTIpID8KPiArCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChwbGFuZS0+ c3RhdGUtPmZiLT5waXhlbF9mb3JtYXQsIDEpIDogcGl4ZWxfc2l6ZTsKPiArCWludGVsX3BsYW5l LT53bS55X2J5dGVzX3Blcl9waXhlbCA9Cj4gKwkJKGZiICYmIGZiLT5waXhlbF9mb3JtYXQgPT0g RFJNX0ZPUk1BVF9OVjEyKSA/Cj4gKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGxhbmUtPnN0YXRl LT5mYi0+cGl4ZWxfZm9ybWF0LCAwKSA6IDA7Cj4gKwo+ICsJLyoKPiArCSAqIEZyYW1lYnVmZmVy IGNhbiBiZSBOVUxMIG9uIHBsYW5lIGRpc2FibGUsIGJ1dCBpdCBkb2VzIG5vdAo+ICsJICogbWF0 dGVyIGZvciB3YXRlcm1hcmtzIGlmIHdlIGFzc3VtZSBubyB0aWxpbmcgaW4gdGhhdCBjYXNlLgo+ ICsJICovCj4gKwlpZiAoZmIpCj4gKwkJaW50ZWxfcGxhbmUtPndtLnRpbGluZyA9IGZiLT5tb2Rp ZmllclswXTsKPiArCWludGVsX3BsYW5lLT53bS5yb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+cm90 YXRpb247Cj4gKwo+ICsJc2tsX3VwZGF0ZV93bShjcnRjKTsKPiArfQo+ICsKPiAgc3RhdGljIHZv aWQgaWxrX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiBAQCAtMzY4OCwx OCArMzc1NCw2IEBAIHN0YXRpYyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAKPiAgCVdBUk5fT04oY3N0YXRlLT5iYXNlLmFjdGl2ZSAhPSBpbnRlbF9jcnRjLT5h Y3RpdmUpOwo+ICAKPiAtCS8qCj4gLQkgKiBJVkIgd29ya2Fyb3VuZDogbXVzdCBkaXNhYmxlIGxv dyBwb3dlciB3YXRlcm1hcmtzIGZvciBhdCBsZWFzdAo+IC0JICogb25lIGZyYW1lIGJlZm9yZSBl bmFibGluZyBzY2FsaW5nLiAgTFAgd2F0ZXJtYXJrcyBjYW4gYmUgcmUtZW5hYmxlZAo+IC0JICog d2hlbiBzY2FsaW5nIGlzIGRpc2FibGVkLgo+IC0JICoKPiAtCSAqIFdhQ3hTUkRpc2FibGVkRm9y U3ByaXRlU2NhbGluZzppdmIKPiAtCSAqLwo+IC0JaWYgKGNzdGF0ZS0+ZGlzYWJsZV9scF93bSkg ewo+IC0JCWlsa19kaXNhYmxlX2xwX3dtKGRldik7Cj4gLQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5r KGRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gLQl9Cj4gLQo+ICAJaW50ZWxfY29tcHV0ZV9waXBl X3dtKGNzdGF0ZSwgJnBpcGVfd20pOwo+ICAKPiAgCWlmICghbWVtY21wKCZpbnRlbF9jcnRjLT53 bS5hY3RpdmUsICZwaXBlX3dtLCBzaXplb2YocGlwZV93bSkpKQo+IEBAIC0zNzMxLDYgKzM3ODUs MjggQEAgc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g IAlpbGtfd3JpdGVfd21fdmFsdWVzKGRldl9wcml2LCAmcmVzdWx0cyk7Cj4gIH0KPiAgCj4gK3N0 YXRpYyB2b2lkCj4gK2lsa191cGRhdGVfc3ByaXRlX3dtKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+ICsJCSAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCSAgICAgdWludDMyX3Qgc3By aXRlX3dpZHRoLCB1aW50MzJfdCBzcHJpdGVfaGVpZ2h0LAo+ICsJCSAgICAgaW50IHBpeGVsX3Np emUsIGJvb2wgZW5hYmxlZCwgYm9vbCBzY2FsZWQpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICsJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiArCj4gKwkvKgo+ICsJICogSVZCIHdvcmthcm91bmQ6 IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IgYXQgbGVhc3QKPiArCSAqIG9u ZSBmcmFtZSBiZWZvcmUgZW5hYmxpbmcgc2NhbGluZy4gIExQIHdhdGVybWFya3MgY2FuIGJlIHJl LWVuYWJsZWQKPiArCSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxlZC4KPiArCSAqCj4gKwkgKiBX YUN4U1JEaXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiCj4gKwkgKi8KPiArCWlmIChJU19JVllC UklER0UoZGV2KSAmJiBzY2FsZWQgJiYgaWxrX2Rpc2FibGVfbHBfd20oZGV2KSkKPiArCQlpbnRl bF93YWl0X2Zvcl92YmxhbmsoZGV2LCBpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gKwo+ICsJaWxrX3Vw ZGF0ZV93bShjcnRjKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fYWN0aXZl X3N0YXRlKHVpbnQzMl90IHZhbCwKPiAgCQkJCSAgICAgc3RydWN0IHNrbF9waXBlX3dtICphY3Rp dmUsCj4gIAkJCQkgICAgIGJvb2wgaXNfdHJhbnN3bSwKPiBAQCAtNDEwOCw2ICs0MTg0LDIxIEBA IHZvaWQgaW50ZWxfdXBkYXRlX3dhdGVybWFya3Moc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJ CWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bShjcnRjKTsKPiAgfQo+ICAKPiArdm9pZCBpbnRl bF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3Moc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJ CQkgICAgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJICAgIHVpbnQzMl90IHNwcml0ZV93 aWR0aCwKPiArCQkJCSAgICB1aW50MzJfdCBzcHJpdGVfaGVpZ2h0LAo+ICsJCQkJICAgIGludCBw aXhlbF9zaXplLAo+ICsJCQkJICAgIGJvb2wgZW5hYmxlZCwgYm9vbCBzY2FsZWQpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHBsYW5lLT5kZXYtPmRldl9wcml2 YXRlOwo+ICsKPiArCWlmIChkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dtKQo+ICsJ CWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9zcHJpdGVfd20ocGxhbmUsIGNydGMsCj4gKwkJCQkJ CSAgIHNwcml0ZV93aWR0aCwgc3ByaXRlX2hlaWdodCwKPiArCQkJCQkJICAgcGl4ZWxfc2l6ZSwg ZW5hYmxlZCwgc2NhbGVkKTsKPiArfQo+ICsKPiAgLyoqCj4gICAqIExvY2sgcHJvdGVjdGluZyBJ UFMgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMKPiAgICovCj4gQEAgLTcwMjIsNiArNzExMyw3IEBA IHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQlkZXZfcHJp di0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9Cj4gIAkJCQlza2xfaW5pdF9jbG9ja19nYXRp bmc7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gc2tsX3VwZGF0ZV93bTsKPiAr CQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dtID0gc2tsX3VwZGF0ZV9zcHJpdGVf d207Cj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkgewo+ICAJCWlsa19zZXR1cF93 bV9sYXRlbmN5KGRldik7Cj4gIAo+IEBAIC03MDMwLDYgKzcxMjIsNyBAQCB2b2lkIGludGVsX2lu aXRfcG0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkgICAgKCFJU19HRU41KGRldikgJiYg ZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5WzBdICYmCj4gIAkJICAgICBkZXZfcHJpdi0+d20uc3By X2xhdGVuY3lbMF0gJiYgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewo+ICAJCQlkZXZf cHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpbGtfdXBkYXRlX3dtOwo+ICsJCQlkZXZfcHJpdi0+ ZGlzcGxheS51cGRhdGVfc3ByaXRlX3dtID0gaWxrX3VwZGF0ZV9zcHJpdGVfd207Cj4gIAkJfSBl bHNlIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgZGlzcGxheSBwbGFuZSBs YXRlbmN5LiAiCj4gIAkJCQkgICAgICAiRGlzYWJsZSBDeFNSXG4iKTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IGRkMmQ1NjguLmIyMjljNjcgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0xOTIsNiArMTkyLDcgQEAgc2tsX3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gIAljb25zdCBpbnQgcGxh bmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOwo+ICAJdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rp diwgc3RyaWRlOwo+ICsJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+ cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9y a2V5ICprZXkgPQo+ICAJCSZ0b19pbnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxhbmUtPnN0YXRlKS0+ Y2tleTsKPiAgCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+IEBAIC0yMTAsNiArMjExLDEwIEBA IHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAlyb3RhdGlvbiA9IGRybV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+ ICAJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfcm90YXRpb24ocm90YXRpb24pOwo+ICAKPiAr CWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhkcm1fcGxhbmUsIGNydGMsIHNyY193LCBz cmNfaCwKPiArCQkJCSAgICAgICBwaXhlbF9zaXplLCB0cnVlLAo+ICsJCQkJICAgICAgIHNyY193 ICE9IGNydGNfdyB8fCBzcmNfaCAhPSBjcnRjX2gpOwo+ICsKPiAgCXN0cmlkZV9kaXYgPSBpbnRl bF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldiwgZmItPm1vZGlmaWVyWzBdLAo+ICAJCQkJCSAgICAg ICBmYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCj4gQEAgLTI5MSw2ICsyOTYsOCBAQCBza2xfZGlzYWJs ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiAgCj4gIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpLCAwKTsKPiAgCVBPU1RJ TkdfUkVBRChQTEFORV9TVVJGKHBpcGUsIHBsYW5lKSk7Cj4gKwo+ICsJaW50ZWxfdXBkYXRlX3Nw cml0ZV93YXRlcm1hcmtzKGRwbGFuZSwgY3J0YywgMCwgMCwgMCwgZmFsc2UsIGZhbHNlKTsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAtNTMzLDYgKzU0MCwxMCBAQCBpdmJfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlp ZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+ICAJCXNwcmN0bCB8PSBT UFJJVEVfUElQRV9DU0NfRU5BQkxFOwo+ICAKPiArCWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJt YXJrcyhwbGFuZSwgY3J0Yywgc3JjX3csIHNyY19oLCBwaXhlbF9zaXplLAo+ICsJCQkJICAgICAg IHRydWUsCj4gKwkJCQkgICAgICAgc3JjX3cgIT0gY3J0Y193IHx8IHNyY19oICE9IGNydGNfaCk7 Cj4gKwo+ICAJLyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8KPiAgCXNyY193LS07Cj4gIAlzcmNfaC0t Owo+IEBAIC02NjYsNiArNjc3LDEwIEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCWlmIChJU19HRU42KGRldikpCj4g IAkJZHZzY250ciB8PSBEVlNfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7IC8qIG11c3QgZGlzYWJsZSAq Lwo+ICAKPiArCWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhwbGFuZSwgY3J0Yywgc3Jj X3csIHNyY19oLAo+ICsJCQkJICAgICAgIHBpeGVsX3NpemUsIHRydWUsCj4gKwkJCQkgICAgICAg c3JjX3cgIT0gY3J0Y193IHx8IHNyY19oICE9IGNydGNfaCk7Cj4gKwo+ICAJLyogU2l6ZXMgYXJl IDAgYmFzZWQgKi8KPiAgCXNyY193LS07Cj4gIAlzcmNfaC0tOwo+IC0tIAo+IDIuNS4zCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=