From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 35/42] drm/i915: get rid of crtc->config in intel_display.c, part 2 Date: Tue, 12 May 2015 12:17:40 +0200 Message-ID: <20150512101740.GQ15256@phenom.ffwll.local> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431354318-11995-36-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTP id 410DC6E0A9 for ; Tue, 12 May 2015 03:15:20 -0700 (PDT) Received: by wicnf17 with SMTP id nf17so8156509wic.1 for ; Tue, 12 May 2015 03:15:19 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1431354318-11995-36-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMTEsIDIwMTUgYXQgMDQ6MjU6MTFQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQ29udmVydCB0aGUgcmVzdCBvZiB0aGUgZmlsZSwgYnV0IHJlbW92ZSBjcnRj LT5jb25maWcgaW4gYSBzZXBhcmF0ZQo+IGNvbW1pdCB0byBob3BlZnVsbHkgYWxsb3cgZWFzaWVy IGJpc2VjdGluZy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgfCAzNTEgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgICA0ICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgNCArLQo+ICAzIGZpbGVzIGNo YW5nZWQsIDE4NiBpbnNlcnRpb25zKCspLCAxNzMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGZiMmVjYjY1YWFhYS4uMmM0NjdjZGE3NGE0 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC04OCwxNCArODgs MjAgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkJCQkgIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaWZiLAo+ICAJCQkJICBz dHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCj4gIAkJCQkgIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopOwo+IC1zdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yyk7Cj4gLXN0YXRpYyB2b2lkIGludGVsX3NldF9waXBl X3RpbWluZ3Moc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpOwo+ICtzdGF0aWMgdm9pZCBp OXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiArCQkJICAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiArc3RhdGljIHZvaWQg aW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAr CQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gIHN0YXRpYyB2 b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gKwkJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJCQkg c3RydWN0IGludGVsX2xpbmtfbV9uICptX24sCj4gIAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21f biAqbTJfbjIpOwo+IC1zdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYoc3RydWN0IGRy bV9jcnRjICpjcnRjKTsKPiAtc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3RydWN0 IGRybV9jcnRjICpjcnRjKTsKPiAtc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVj dCBkcm1fY3J0YyAqY3J0Yyk7Cj4gK3N0YXRpYyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZyk7Cj4gK3N0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVjb25mKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpOwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9jc2Moc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICsJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsK PiAgc3RhdGljIHZvaWQgdmx2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICAJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiAg c3RhdGljIHZvaWQgY2h2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IEBA IC0zMDIxLDcgKzMwMjcsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiAg CWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gIAl1bnNpZ25lZCBsb25nIHN1cmZfYWRkcjsKPiAt CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gaW50ZWxfY3J0Yy0+Y29uZmln Owo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRj X3N0YXRlKGNydGMtPnN0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGU7Cj4gIAlpbnQgc3JjX3ggPSAwLCBzcmNfeSA9IDAsIHNyY193ID0gMCwgc3JjX2ggPSAw Owo+ICAJaW50IGRzdF94ID0gMCwgZHN0X3kgPSAwLCBkc3RfdyA9IDAsIGRzdF9oID0gMDsKPiBA QCAtMzA1MiwyNyArMzA1OCwxNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCQkgICAgICAgZmItPnBpeGVsX2Zv cm1hdCk7Cj4gIAlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3Bs YW5lKHBsYW5lKSwgb2JqKTsKPiAgCj4gLQkvKgo+IC0JICogRklYTUU6IGludGVsX3BsYW5lX3N0 YXRlLT5zcmMsIGRzdCBhcmVuJ3Qgc2V0IHdoZW4gdHJhbnNpdGlvbmFsCj4gLQkgKiB1cGRhdGVf cGxhbmUgaGVscGVycyBhcmUgY2FsbGVkIGZyb20gbGVnYWN5IHBhdGhzLgo+IC0JICogT25jZSBm dWxsIGF0b21pYyBjcnRjIGlzIGF2YWlsYWJsZSwgYmVsb3cgY2hlY2sgY2FuIGJlIGF2b2lkZWQu Cj4gLQkgKi8KPiAtCWlmIChkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykpIHsKPiAt CQlzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwo+IC0JCXNyY194ID0gcGxhbmVf c3RhdGUtPnNyYy54MSA+PiAxNjsKPiAtCQlzcmNfeSA9IHBsYW5lX3N0YXRlLT5zcmMueTEgPj4g MTY7Cj4gLQkJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7 Cj4gLQkJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ IC0JCWRzdF94ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKPiAtCQlkc3RfeSA9IHBsYW5lX3N0YXRl LT5kc3QueTE7Cj4gLQkJZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmRzdCk7 Cj4gLQkJZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5kc3QpOwo+ICsJc2Nh bGVyX2lkID0gcGxhbmVfc3RhdGUtPnNjYWxlcl9pZDsKPiArCXNyY194ID0gcGxhbmVfc3RhdGUt PnNyYy54MSA+PiAxNjsKPiArCXNyY195ID0gcGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKPiAr CXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ICsJc3Jj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ICsJZHN0X3gg PSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwo+ICsJZHN0X3kgPSBwbGFuZV9zdGF0ZS0+ZHN0LnkxOwo+ ICsJZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmRzdCk7Cj4gKwlkc3RfaCA9 IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmRzdCk7Cj4gIAo+IC0JCVdBUk5fT04oeCAh PSBzcmNfeCB8fCB5ICE9IHNyY195KTsKPiAtCX0gZWxzZSB7Cj4gLQkJc3JjX3cgPSBpbnRlbF9j cnRjLT5jb25maWctPnBpcGVfc3JjX3c7Cj4gLQkJc3JjX2ggPSBpbnRlbF9jcnRjLT5jb25maWct PnBpcGVfc3JjX2g7Cj4gLQl9Cj4gKwlXQVJOX09OKHggIT0gc3JjX3ggfHwgeSAhPSBzcmNfeSk7 CgpUaGlzIG5lZWRzIHRvIGJlIGEgc2VwYXJhdGUgY29tbWl0IHdpdGggc29tZSBqdXN0aWZpY2F0 aW9uIGZvciB3aHkgd2Ugbm93CmFsd2F5cyBoYXZlIGFuIHVwZGF0ZWQgcmVjdCAuLi4KCj4gIAo+ ICAJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKPiAgCQkvKiBzdHJp ZGUgPSBTdXJmYWNlIGhlaWdodCBpbiB0aWxlcyAqLwo+IEBAIC00NDg5LDI3ICs0NDg1LDI5IEBA IHNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRp YyB2b2lkIHNreWxha2VfcGZpdF91cGRhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsIGludCBl bmFibGUpCj4gK3N0YXRpYyB2b2lkIHNreWxha2VfcGZpdF91cGRhdGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCgpSYW5kb20gYmlrZXNoZWQgd2hpbGUgcmVhZGluZyBjb2RlOiBGb3IgY29uc2lz dGVuY3kgdGhpcyBzaG91bGQgYmUgY2FsbGVkCnNreWxha2VfcGZpdF9lbmFibGUuCgo+ICsJCQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICsJCQkJaW50IGVuYWJsZSkK PiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWlu dCBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAq c2NhbGVyX3N0YXRlID0KPiAtCQkmY3J0Yy0+Y29uZmlnLT5zY2FsZXJfc3RhdGU7Cj4gKwkJJnBp cGVfY29uZmlnLT5zY2FsZXJfc3RhdGU7Cj4gIAo+IC0JRFJNX0RFQlVHX0tNUygiZm9yIGNydGNf c3RhdGUgPSAlcFxuIiwgY3J0Yy0+Y29uZmlnKTsKPiArCURSTV9ERUJVR19LTVMoImZvciBjcnRj X3N0YXRlID0gJXBcbiIsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAkvKiBUbyB1cGRhdGUgcGZpdCwg Zmlyc3QgdXBkYXRlIHNjYWxlciBzdGF0ZSAqLwo+IC0Jc2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMo Y3J0YywgY3J0Yy0+Y29uZmlnLCBOVUxMLCBOVUxMLCAhZW5hYmxlKTsKPiAtCWludGVsX2F0b21p Y19zZXR1cF9zY2FsZXJzKGNydGMtPmJhc2UuZGV2LCBjcnRjLCBjcnRjLT5jb25maWcpOwo+ICsJ c2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMoY3J0YywgcGlwZV9jb25maWcsIE5VTEwsIE5VTEwsICFl bmFibGUpOwo+ICsJaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcnMoY3J0Yy0+YmFzZS5kZXYsIGNy dGMsIHBpcGVfY29uZmlnKTsKPiAgCXNrbF9kZXRhY2hfc2NhbGVycyhjcnRjKTsKPiAgCWlmICgh ZW5hYmxlKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5l bmFibGVkKSB7Cj4gKwlpZiAocGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQpIHsKPiAgCQlp bnQgaWQ7Cj4gIAo+IC0JCWlmIChXQVJOX09OKGNydGMtPmNvbmZpZy0+c2NhbGVyX3N0YXRlLnNj YWxlcl9pZCA8IDApKSB7Cj4gKwkJaWYgKFdBUk5fT04ocGlwZV9jb25maWctPnNjYWxlcl9zdGF0 ZS5zY2FsZXJfaWQgPCAwKSkgewo+ICAJCQlEUk1fRVJST1IoIlJlcXVlc3RpbmcgcGZpdCB3aXRo b3V0IGdldHRpbmcgYSBzY2FsZXIgZmlyc3RcbiIpOwo+ICAJCQlyZXR1cm47Cj4gIAkJfQo+IEBA IC00NTE3LDIwICs0NTE1LDIxIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfcGZpdF91cGRhdGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsIGludCBlbmFibGUpCj4gIAkJaWQgPSBzY2FsZXJfc3RhdGUt PnNjYWxlcl9pZDsKPiAgCQlJOTE1X1dSSVRFKFNLTF9QU19DVFJMKHBpcGUsIGlkKSwgUFNfU0NB TEVSX0VOIHwKPiAgCQkJUFNfRklMVEVSX01FRElVTSB8IHNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tp ZF0ubW9kZSk7Cj4gLQkJSTkxNV9XUklURShTS0xfUFNfV0lOX1BPUyhwaXBlLCBpZCksIGNydGMt PmNvbmZpZy0+cGNoX3BmaXQucG9zKTsKPiAtCQlJOTE1X1dSSVRFKFNLTF9QU19XSU5fU1oocGlw ZSwgaWQpLCBjcnRjLT5jb25maWctPnBjaF9wZml0LnNpemUpOwo+ICsJCUk5MTVfV1JJVEUoU0tM X1BTX1dJTl9QT1MocGlwZSwgaWQpLCBwaXBlX2NvbmZpZy0+cGNoX3BmaXQucG9zKTsKPiArCQlJ OTE1X1dSSVRFKFNLTF9QU19XSU5fU1oocGlwZSwgaWQpLCBwaXBlX2NvbmZpZy0+cGNoX3BmaXQu c2l6ZSk7Cj4gIAo+IC0JCURSTV9ERUJVR19LTVMoImZvciBjcnRjX3N0YXRlID0gJXAgc2NhbGVy X2lkID0gJWRcbiIsIGNydGMtPmNvbmZpZywgaWQpOwo+ICsJCURSTV9ERUJVR19LTVMoImZvciBj cnRjX3N0YXRlID0gJXAgc2NhbGVyX2lkID0gJWRcbiIsIHBpcGVfY29uZmlnLCBpZCk7Cj4gIAl9 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICtzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAlpbnQgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy0+cGNo X3BmaXQuZW5hYmxlZCkgewo+ICsJaWYgKHBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7 Cj4gIAkJLyogRm9yY2UgdXNlIG9mIGhhcmQtY29kZWQgZmlsdGVyIGNvZWZmaWNpZW50cwo+ICAJ CSAqIGFzIHNvbWUgcHJlLXByb2dyYW1tZWQgdmFsdWVzIGFyZSBicm9rZW4sCj4gIAkJICogZS5n LiB4MjAxLgo+IEBAIC00NTQwLDggKzQ1MzksOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0 X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCQkJCQkJIFBGX1BJUEVfU0VMX0lW QihwaXBlKSk7Cj4gIAkJZWxzZQo+ICAJCQlJOTE1X1dSSVRFKFBGX0NUTChwaXBlKSwgUEZfRU5B QkxFIHwgUEZfRklMVEVSX01FRF8zeDMpOwo+IC0JCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhwaXBl KSwgY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5wb3MpOwo+IC0JCUk5MTVfV1JJVEUoUEZfV0lOX1Na KHBpcGUpLCBjcnRjLT5jb25maWctPnBjaF9wZml0LnNpemUpOwo+ICsJCUk5MTVfV1JJVEUoUEZf V0lOX1BPUyhwaXBlKSwgcGlwZV9jb25maWctPnBjaF9wZml0LnBvcyk7Cj4gKwkJSTkxNV9XUklU RShQRl9XSU5fU1oocGlwZSksIHBpcGVfY29uZmlnLT5wY2hfcGZpdC5zaXplKTsKPiAgCX0KPiAg fQo+ICAKPiBAQCAtNDU1MCw3ICs0NTQ5LDcgQEAgdm9pZCBoc3dfZW5hYmxlX2lwcyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNl LmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gIAo+IC0JaWYgKCFjcnRjLT5jb25maWctPmlwc19lbmFibGVkKQo+ICsJaWYgKCF0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpLT5pcHNfZW5hYmxlZCkKPiAgCQly ZXR1cm47Cj4gIAo+ICAJLyogV2UgY2FuIG9ubHkgZW5hYmxlIElQUyBhZnRlciB3ZSBlbmFibGUg YSBwbGFuZSBhbmQgd2FpdCBmb3IgYSB2YmxhbmsgKi8KPiBAQCAtNDU4Myw3ICs0NTgyLDcgQEAg dm9pZCBoc3dfZGlzYWJsZV9pcHMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAKPiAtCWlmICghY3J0Yy0+Y29u ZmlnLT5pcHNfZW5hYmxlZCkKPiArCWlmICghdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNl LnN0YXRlKS0+aXBzX2VuYWJsZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWFzc2VydF9wbGFuZV9l bmFibGVkKGRldl9wcml2LCBjcnRjLT5wbGFuZSk7Cj4gQEAgLTQ2MzIsNyArNDYzMSw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2NydGNfbG9hZF9sdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJ LyogV29ya2Fyb3VuZCA6IERvIG5vdCByZWFkIG9yIHdyaXRlIHRoZSBwaXBlIHBhbGV0dGUvZ2Ft bWEgZGF0YSB3aGlsZQo+ICAJICogR0FNTUFfTU9ERSBpcyBjb25maWd1cmVkIGZvciBzcGxpdCBn YW1tYSBhbmQgSVBTX0NUTCBoYXMgSVBTIGVuYWJsZWQuCj4gIAkgKi8KPiAtCWlmIChJU19IQVNX RUxMKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5pcHNfZW5hYmxlZCAmJgo+ICsJaWYgKElT X0hBU1dFTEwoZGV2KSAmJiB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+aXBzX2Vu YWJsZWQgJiYKPiAgCSAgICAoKEk5MTVfUkVBRChHQU1NQV9NT0RFKHBpcGUpKSAmIEdBTU1BX01P REVfTU9ERV9NQVNLKSA9PQo+ICAJICAgICBHQU1NQV9NT0RFX01PREVfU1BMSVQpKSB7Cj4gIAkJ aHN3X2Rpc2FibGVfaXBzKGludGVsX2NydGMpOwo+IEBAIC00NzgzLDE2ICs0NzgyLDE2IEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAg CQkJCQkgIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7Cj4gIAo+ICAJaWYgKHBpcGVfY29uZmln LT5oYXNfZHBfZW5jb2RlcikKPiAtCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04x KTsKPiArCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBNMV9OMSk7 Cj4gIAo+IC0JaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjKTsKPiArCWludGVsX3Nl dF9waXBlX3RpbWluZ3MoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ICAKPiAgCWlmIChwaXBl X2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gLQkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0 X21fbihpbnRlbF9jcnRjLAo+ICsJCWludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oaW50ZWxf Y3J0YywgcGlwZV9jb25maWcsCj4gIAkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwgTlVM TCk7Cj4gIAl9Cj4gIAo+IC0JaXJvbmxha2Vfc2V0X3BpcGVjb25mKGNydGMpOwo+ICsJaXJvbmxh a2Vfc2V0X3BpcGVjb25mKGNydGMsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAlpbnRlbF9zZXRfY3B1 X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKPiAgCWludGVs X3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwo+ IEBAIC00ODExLDcgKzQ4MTAsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJYXNzZXJ0X2ZkaV9yeF9kaXNhYmxlZChkZXZfcHJp diwgcGlwZSk7Cj4gIAl9Cj4gIAo+IC0JaXJvbmxha2VfcGZpdF9lbmFibGUoaW50ZWxfY3J0Yyk7 Cj4gKwlpcm9ubGFrZV9wZml0X2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAo+ ICAJLyoKPiAgCSAqIE9uIElMSysgTFVUIG11c3QgYmUgbG9hZGVkIGJlZm9yZSB0aGUgcGlwZSBp cyBydW5uaW5nIGJ1dCB3aXRoCj4gQEAgLTQ4MjIsNyArNDgyMSw3IEBAIHN0YXRpYyB2b2lkIGly b25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWludGVsX3VwZGF0 ZV93YXRlcm1hcmtzKGNydGMpOwo+ICAJaW50ZWxfZW5hYmxlX3BpcGUoaW50ZWxfY3J0Yyk7Cj4g IAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICsJaWYgKHBp cGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJaXJvbmxha2VfcGNoX2VuYWJsZShjcnRj LCBwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJYXNzZXJ0X3ZibGFua19kaXNhYmxlZChjcnRjKTsKPiBA QCAtNDg1Nyw5ICs0ODU2LDkgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGRldl9wcml2 LCBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+aGFz X2RwX2VuY29kZXIpCj4gLQkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9OMSk7Cj4g KwkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgTTFfTjEpOwo+ICAK PiAtCWludGVsX3NldF9waXBlX3RpbWluZ3MoaW50ZWxfY3J0Yyk7Cj4gKwlpbnRlbF9zZXRfcGlw ZV90aW1pbmdzKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAlpZiAocGlwZV9jb25m aWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfRURQKSB7Cj4gIAkJSTkxNV9XUklURShQ SVBFX01VTFQocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyKSwKPiBAQCAtNDg2NywxMyArNDg2 NiwxMyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCX0KPiAgCj4gIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+ IC0JCWludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oaW50ZWxfY3J0YywKPiArCQlpbnRlbF9j cHVfdHJhbnNjb2Rlcl9zZXRfbV9uKGludGVsX2NydGMsIHBpcGVfY29uZmlnLAo+ICAJCQkJICAg ICAmcGlwZV9jb25maWctPmZkaV9tX24sIE5VTEwpOwo+ICAJfQo+ICAKPiAtCWhhc3dlbGxfc2V0 X3BpcGVjb25mKGNydGMpOwo+ICsJaGFzd2VsbF9zZXRfcGlwZWNvbmYoY3J0YywgcGlwZV9jb25m aWcpOwo+ICAKPiAtCWludGVsX3NldF9waXBlX2NzYyhjcnRjKTsKPiArCWludGVsX3NldF9waXBl X2NzYyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVy cnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlwZSwgdHJ1ZSk7Cj4gIAlmb3JfZWFjaF9lbmNvZGVy X29uX2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKQo+IEBAIC00ODkwLDkgKzQ4ODksOSBAQCBzdGF0 aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWlu dGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhpbnRlbF9jcnRjKTsKPiAgCj4gIAlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPT0gOSkKPiAtCQlza3lsYWtlX3BmaXRfdXBkYXRlKGludGVsX2NydGMs IDEpOwo+ICsJCXNreWxha2VfcGZpdF91cGRhdGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIDEp Owo+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KQo+IC0JCWlyb25sYWtlX3Bm aXRfZW5hYmxlKGludGVsX2NydGMpOwo+ICsJCWlyb25sYWtlX3BmaXRfZW5hYmxlKGludGVsX2Ny dGMsIHBpcGVfY29uZmlnKTsKPiAgCWVsc2UKPiAgCQlNSVNTSU5HX0NBU0UoSU5URUxfSU5GTyhk ZXYpLT5nZW4pOwo+ICAKPiBAQCAtNDkwOCwxMCArNDkwNywxMCBAQCBzdGF0aWMgdm9pZCBoYXN3 ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWludGVsX3VwZGF0ZV93 YXRlcm1hcmtzKGNydGMpOwo+ICAJaW50ZWxfZW5hYmxlX3BpcGUoaW50ZWxfY3J0Yyk7Cj4gIAo+ IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICsJaWYgKHBpcGVf Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJbHB0X3BjaF9lbmFibGUoZGV2X3ByaXYsIHBp cGVfY29uZmlnKTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lz X21zdCkKPiArCWlmIChwaXBlX2NvbmZpZy0+ZHBfZW5jb2Rlcl9pc19tc3QpCj4gIAkJaW50ZWxf ZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNydGMsCj4gIAkJCQkJICAgICAgIHBpcGVfY29uZmln LT5jcHVfdHJhbnNjb2RlciwKPiAgCQkJCQkgICAgICAgdHJ1ZSk7Cj4gQEAgLTQ5MzIsNyArNDkz MSw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2Rpc2FibGUo c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gK3N0YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJCSAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IEBAIC00OTQwLDcgKzQ5NDAsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFr ZV9wZml0X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAo+ICAJLyogVG8gYXZv aWQgdXBzZXR0aW5nIHRoZSBwb3dlciB3ZWxsIG9uIGhhc3dlbGwgb25seSBkaXNhYmxlIHRoZSBw Zml0IGlmCj4gIAkgKiBpdCdzIGluIHVzZS4gVGhlIGh3IHN0YXRlIGNvZGUgd2lsbCBtYWtlIHN1 cmUgd2UgZ2V0IHRoaXMgcmlnaHQuICovCj4gLQlpZiAoY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5l bmFibGVkKSB7Cj4gKwlpZiAocGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQpIHsKPiAgCQlJ OTE1X1dSSVRFKFBGX0NUTChwaXBlKSwgMCk7Cj4gIAkJSTkxNV9XUklURShQRl9XSU5fUE9TKHBp cGUpLCAwKTsKPiAgCQlJOTE1X1dSSVRFKFBGX1dJTl9TWihwaXBlKSwgMCk7Cj4gQEAgLTQ5Njgs NyArNDk2OCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAo+ICAJaW50ZWxfZGlzYWJsZV9waXBlKGludGVsX2NydGMsIG9sZF9z dGF0ZSk7Cj4gIAo+IC0JaXJvbmxha2VfcGZpdF9kaXNhYmxlKGludGVsX2NydGMpOwo+ICsJaXJv bmxha2VfcGZpdF9kaXNhYmxlKGludGVsX2NydGMsIG9sZF9zdGF0ZSk7Cj4gIAo+ICAJZm9yX2Vh Y2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2RlcikKPiAgCQlpZiAoZW5jb2Rlci0+ cG9zdF9kaXNhYmxlKQo+IEBAIC01MDA1LDcgKzUwMDUsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxs X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXI7Cj4gLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRl bF9jcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90 cmFuc2NvZGVyID0gb2xkX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gIAlmb3JfZWFjaF9l bmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7Cj4gIAkJaW50ZWxfb3ByZWdpb25f bm90aWZ5X2VuY29kZXIoZW5jb2RlciwgZmFsc2UpOwo+IEBAIC01MDE1LDEyICs1MDE1LDEyIEBA IHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7Cj4gIAlhc3NlcnRfdmJsYW5rX2Rpc2FibGVk KGNydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikK PiArCWlmIChvbGRfc3RhdGUtPmhhc19wY2hfZW5jb2RlcikKPiAgCQlpbnRlbF9zZXRfcGNoX2Zp Zm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBUUkFOU0NPREVSX0EsCj4gIAkJCQkJCSAg ICAgIGZhbHNlKTsKPiAgCWludGVsX2Rpc2FibGVfcGlwZShpbnRlbF9jcnRjLCBvbGRfc3RhdGUp Owo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmRwX2VuY29kZXJfaXNfbXN0KQo+ICsJ aWYgKG9sZF9zdGF0ZS0+ZHBfZW5jb2Rlcl9pc19tc3QpCj4gIAkJaW50ZWxfZGRpX3NldF92Y19w YXlsb2FkX2FsbG9jKGNydGMsCj4gIAkJCQkJICAgICAgIG9sZF9zdGF0ZS0+Y3B1X3RyYW5zY29k ZXIsCj4gIAkJCQkJICAgICAgIGZhbHNlKTsKPiBAQCAtNTAyOCwxNSArNTAyOCwxNSBAQCBzdGF0 aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlp bnRlbF9kZGlfZGlzYWJsZV90cmFuc2NvZGVyX2Z1bmMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVy KTsKPiAgCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOSkKPiAtCQlza3lsYWtlX3Bm aXRfdXBkYXRlKGludGVsX2NydGMsIDApOwo+ICsJCXNreWxha2VfcGZpdF91cGRhdGUoaW50ZWxf Y3J0Yywgb2xkX3N0YXRlLCAwKTsKPiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg OSkKPiAtCQlpcm9ubGFrZV9wZml0X2Rpc2FibGUoaW50ZWxfY3J0Yyk7Cj4gKwkJaXJvbmxha2Vf cGZpdF9kaXNhYmxlKGludGVsX2NydGMsIG9sZF9zdGF0ZSk7Cj4gIAllbHNlCj4gIAkJTUlTU0lO R19DQVNFKElOVEVMX0lORk8oZGV2KS0+Z2VuKTsKPiAgCj4gIAlpbnRlbF9kZGlfZGlzYWJsZV9w aXBlX2Nsb2NrKGludGVsX2NydGMsIG9sZF9zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpOwo+ICAKPiAt CWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewo+ICsJaWYgKG9sZF9z dGF0ZS0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gIAkJbHB0X2Rpc2FibGVfcGNoX3RyYW5zY29kZXIo ZGV2X3ByaXYpOwo+ICAJCWludGVsX2RkaV9mZGlfZGlzYWJsZShjcnRjLCBvbGRfc3RhdGUpOwo+ ICAJfQo+IEBAIC01MTI2LDEzICs1MTI2LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9j cnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJdW5zaWduZWQgbG9uZyBtYXNrOwo+ICAJZW51bSB0 cmFuc2NvZGVyIHRyYW5zY29kZXI7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcgPQo+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAKPiAtCXRy YW5zY29kZXIgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+Y3B1X3RyYW5zY29k ZXI7Cj4gKwl0cmFuc2NvZGVyID0gcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOwo+ICAKPiAg CW1hc2sgPSBCSVQoUE9XRVJfRE9NQUlOX1BJUEUocGlwZSkpOwo+ICAJbWFzayB8PSBCSVQoUE9X RVJfRE9NQUlOX1RSQU5TQ09ERVIodHJhbnNjb2RlcikpOwo+IC0JaWYgKGludGVsX2NydGMtPmNv bmZpZy0+cGNoX3BmaXQuZW5hYmxlZCB8fAo+IC0JICAgIGludGVsX2NydGMtPmNvbmZpZy0+cGNo X3BmaXQuZm9yY2VfdGhydSkKPiArCWlmIChwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCB8 fAo+ICsJICAgIHBpcGVfY29uZmlnLT5wY2hfcGZpdC5mb3JjZV90aHJ1KQo+ICAJCW1hc2sgfD0g QklUKFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihwaXBlKSk7Cj4gIAo+ICAJZm9yX2Vh Y2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgaW50ZWxfZW5jb2RlcikKPiBAQCAtNTU5NSw3 ICs1NTk3LDggQEAgc3RhdGljIGludCBpbnRlbF9tb2RlX21heF9waXhjbGsoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCQkJY3J0Y19zdGF0ZSA9Cj4gIAkJCQlpbnRlbF9hdG9taWNfZ2V0X2Ny dGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+ICAJCWVsc2UKPiAtCQkJY3J0Y19zdGF0ZSA9 IGludGVsX2NydGMtPmNvbmZpZzsKPiArCQkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gKwo+ICAJCWlmIChJU19FUlIoY3J0Y19zdGF0 ZSkpCj4gIAkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICAKPiBAQCAtNTc0Myw5ICs1 NzQ2LDkgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gIAl9Cj4gIAo+ICAJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlcikK PiAtCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPiArCQlpbnRlbF9kcF9z ZXRfbV9uKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBNMV9OMSk7Cj4gIAo+IC0JaW50ZWxfc2V0 X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjKTsKPiArCWludGVsX3NldF9waXBlX3RpbWluZ3MoaW50 ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ICAKPiAgCWlmIChJU19DSEVSUllWSUVXKGRldikgJiYg cGlwZSA9PSBQSVBFX0IpIHsKPiAgCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+IEBAIC01NzU0LDcgKzU3NTcsNyBAQCBzdGF0aWMgdm9pZCB2 YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlJOTE1X1dS SVRFKENIVl9DQU5WQVMocGlwZSksIDApOwo+ICAJfQo+ICAKPiAtCWk5eHhfc2V0X3BpcGVjb25m KGludGVsX2NydGMpOwo+ICsJaTl4eF9zZXRfcGlwZWNvbmYoaW50ZWxfY3J0YywgcGlwZV9jb25m aWcpOwo+ICAKPiAgCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3By aXYsIHBpcGUsIHRydWUpOwo+ICAKPiBAQCAtNTc4NywxNSArNTc5MCw2IEBAIHN0YXRpYyB2b2lk IHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCWVuY29k ZXItPmVuYWJsZShlbmNvZGVyKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaTl4eF9zZXRfcGxs X2RpdmlkZXJzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0KPiAtCUk5MTVfV1JJVEUoRlAwKGNydGMt PnBpcGUpLCBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZnAwKTsKPiAtCUk5MTVfV1JJVEUo RlAxKGNydGMtPnBpcGUpLCBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZnAxKTsKPiAtfQo+ IC0KPiAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAgLTU4MDgs MTQgKzU4MDIsMTUgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gIAlwaXBlX2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpOwo+ICAJV0FSTl9PTighcGlwZV9jb25maWctPmJhc2UuYWN0aXZlKTsKPiAgCj4gLQlpOXh4 X3NldF9wbGxfZGl2aWRlcnMoaW50ZWxfY3J0Yyk7Cj4gKwlJOTE1X1dSSVRFKEZQMChwaXBlKSwg cGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZnAwKTsKPiArCUk5MTVfV1JJVEUoRlAxKHBpcGUp LCBwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5mcDEpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRj LT5jb25maWctPmhhc19kcF9lbmNvZGVyKQo+IC0JCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0 YywgTTFfTjEpOwo+ICsJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlcikKPiArCQlpbnRl bF9kcF9zZXRfbV9uKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBNMV9OMSk7Cj4gIAo+IC0JaW50 ZWxfc2V0X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjKTsKPiArCWludGVsX3NldF9waXBlX3RpbWlu Z3MoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ICAKPiAtCWk5eHhfc2V0X3BpcGVjb25mKGlu dGVsX2NydGMpOwo+ICsJaTl4eF9zZXRfcGlwZWNvbmYoaW50ZWxfY3J0YywgcGlwZV9jb25maWcp Owo+ICAKPiAgCWlmICghSVNfR0VOMihkZXYpKQo+ICAJCWludGVsX3NldF9jcHVfZmlmb191bmRl cnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwo+IEBAIC01ODQwLDE0ICs1ODM1 LDggQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIAkJZW5jb2Rlci0+ZW5hYmxlKGVuY29kZXIpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBp OXh4X3BmaXRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQg aTl4eF9wZml0X2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7 Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0KPiAtCWlm ICghY3J0Yy0+Y29uZmlnLT5nbWNoX3BmaXQuY29udHJvbCkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJ RFJNX0RFQlVHX0RSSVZFUigiZGlzYWJsaW5nIHBmaXQsIGN1cnJlbnQ6IDB4JTA4eFxuIiwKPiAg CQkJIEk5MTVfUkVBRChQRklUX0NPTlRST0wpKTsKPiAgCUk5MTVfV1JJVEUoUEZJVF9DT05UUk9M LCAwKTsKPiBAQCAtNTg3OCw3ICs1ODY3LDggQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2Fi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCWludGVsX2Rpc2FibGVfcGlwZShpbnRl bF9jcnRjLCBvbGRfc3RhdGUpOwo+ICAKPiAtCWk5eHhfcGZpdF9kaXNhYmxlKGludGVsX2NydGMp Owo+ICsJaWYgKG9sZF9zdGF0ZS0+Z21jaF9wZml0LmNvbnRyb2wpCj4gKwkJaTl4eF9wZml0X2Rp c2FibGUoZGV2X3ByaXYpOwo+ICAKPiAgCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNy dGMsIGVuY29kZXIpCj4gIAkJaWYgKGVuY29kZXItPnBvc3RfZGlzYWJsZSkKPiBAQCAtNjYzOCwx MyArNjYyOCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wY2hfdHJhbnNjb2Rlcl9zZXRfbV9uKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcHVf dHJhbnNjb2Rlcl9zZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCQkJCSBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJCQkJIHN0cnVjdCBpbnRlbF9s aW5rX21fbiAqbV9uLAo+ICAJCQkJCSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm0yX24yKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJaW50IHBp cGUgPSBjcnRjLT5waXBlOwo+IC0JZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBjcnRjLT5j b25maWctPmNwdV90cmFuc2NvZGVyOwo+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBw aXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDUpIHsKPiAgCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9NMSh0cmFuc2NvZGVyKSwgVFVf U0laRShtX24tPnR1KSB8IG1fbi0+Z21jaF9tKTsKPiBAQCAtNjY1Niw3ICs2NjQ3LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCQkgKiByZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5IGFjY2Vzc2VkKS4K PiAgCQkgKi8KPiAgCQlpZiAobTJfbjIgJiYgKElTX0NIRVJSWVZJRVcoZGV2KSB8fCBJTlRFTF9J TkZPKGRldiktPmdlbiA8IDgpICYmCj4gLQkJCWNydGMtPmNvbmZpZy0+aGFzX2RycnMpIHsKPiAr CQkJcGlwZV9jb25maWctPmhhc19kcnJzKSB7Cj4gIAkJCUk5MTVfV1JJVEUoUElQRV9EQVRBX00y KHRyYW5zY29kZXIpLAo+ICAJCQkJCVRVX1NJWkUobTJfbjItPnR1KSB8IG0yX24yLT5nbWNoX20p Owo+ICAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMih0cmFuc2NvZGVyKSwgbTJfbjItPmdtY2hf bik7Cj4gQEAgLTY2NzEsMjkgKzY2NjIsMzEgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5z Y29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCX0KPiAgfQo+ICAKPiAt dm9pZCBpbnRlbF9kcF9zZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBlbnVtIGxpbmtf bV9uX3NldCBtX24pCj4gK3ZvaWQgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiArCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4g KwkJICAgICAgZW51bSBsaW5rX21fbl9zZXQgbV9uKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfbGlu a19tX24gKmRwX21fbiwgKmRwX20yX24yID0gTlVMTDsKPiAgCj4gIAlpZiAobV9uID09IE0xX04x KSB7Cj4gLQkJZHBfbV9uID0gJmNydGMtPmNvbmZpZy0+ZHBfbV9uOwo+IC0JCWRwX20yX24yID0g JmNydGMtPmNvbmZpZy0+ZHBfbTJfbjI7Cj4gKwkJZHBfbV9uID0gJnBpcGVfY29uZmlnLT5kcF9t X247Cj4gKwkJZHBfbTJfbjIgPSAmcGlwZV9jb25maWctPmRwX20yX24yOwo+ICAJfSBlbHNlIGlm IChtX24gPT0gTTJfTjIpIHsKPiAgCj4gIAkJLyoKPiAgCQkgKiBNMl9OMiByZWdpc3RlcnMgYXJl IG5vdCBzdXBwb3J0ZWQuIEhlbmNlIG0yX24yIGRpdmlkZXIgdmFsdWUKPiAgCQkgKiBuZWVkcyB0 byBiZSBwcm9ncmFtbWVkIGludG8gTTFfTjEuCj4gIAkJICovCj4gLQkJZHBfbV9uID0gJmNydGMt PmNvbmZpZy0+ZHBfbTJfbjI7Cj4gKwkJZHBfbV9uID0gJnBpcGVfY29uZmlnLT5kcF9tMl9uMjsK PiAgCX0gZWxzZSB7Cj4gIAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBkaXZpZGVyIHZhbHVlXG4i KTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JaWYgKGNydGMtPmNvbmZpZy0+aGFzX3BjaF9l bmNvZGVyKQo+IC0JCWludGVsX3BjaF90cmFuc2NvZGVyX3NldF9tX24oY3J0YywgJmNydGMtPmNv bmZpZy0+ZHBfbV9uKTsKPiArCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICsJ CWludGVsX3BjaF90cmFuc2NvZGVyX3NldF9tX24oY3J0YywgJnBpcGVfY29uZmlnLT5kcF9tX24p Owo+ICAJZWxzZQo+IC0JCWludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oY3J0YywgZHBfbV9u LCBkcF9tMl9uMik7Cj4gKwkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihjcnRjLCBwaXBl X2NvbmZpZywgZHBfbV9uLCBkcF9tMl9uMik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHZsdl91 cGRhdGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IEBAIC02OTc2LDkgKzY5NjksNiBA QCB2b2lkIHZsdl9mb3JjZV9wbGxfb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlw ZSBwaXBlKQo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2LCBwaXBlKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSA9IHRvX2lu dGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAKPiAtCS8qIElzIHN0YXRlLT5jcHVfdHJh bnNjb2RlciBjb3JyZWN0IHRvIHVzZT8gKi8KPiAtCVdBUk5fT04oY3J0Yy0+c3RhdGUgIT0gJnRv X2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+YmFzZSk7Cj4gLQo+ICAJLyogTWFrZSBzdXJlIHRo ZSBwaXBlIGlzbid0IHN0aWxsIHJlbHlpbmcgb24gdXMgKi8KPiAgCWFzc2VydF9waXBlX2Rpc2Fi bGVkKGRldl9wcml2LCBzdGF0ZS0+Y3B1X3RyYW5zY29kZXIsIHBpcGUpOwo+ICAKPiBAQCAtNzEw MywxNCArNzA5MywxNSBAQCBzdGF0aWMgdm9pZCBpOHh4X3VwZGF0ZV9wbGwoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gIAljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGwgPSBkcGxsOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdz KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICsJCQkJICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g aW50ZWxfY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9 IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0KPiAtCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7Cj4gKwkJJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAl1aW50MzJf dCBjcnRjX3Z0b3RhbCwgY3J0Y192YmxhbmtfZW5kOwo+ICAJaW50IHZzeW5jc2hpZnQgPSAwOwo+ ICAKPiBAQCAtNzE2OCw4ICs3MTU5LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGlt aW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCSAqIGFsd2F5cyBiZSB0aGUg dXNlcidzIHJlcXVlc3RlZCBzaXplLgo+ICAJICovCj4gIAlJOTE1X1dSSVRFKFBJUEVTUkMocGlw ZSksCj4gLQkJICAgKChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSA8PCAxNikg fAo+IC0JCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSk7Cj4gKwkJICAg KChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpIDw8IDE2KSB8Cj4gKwkJICAgIChwaXBlX2Nv bmZpZy0+cGlwZV9zcmNfaCAtIDEpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZ2V0 X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiBAQCAtNzIzMyw3ICs3MjI0 LDggQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsCj4gIAltb2RlLT5mbGFncyB8PSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiArc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlw ZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gKwkJCSAgICAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtNzI0NSwxNyArNzIzNywxNyBAQCBz dGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKPiAgCSAgICAoaW50ZWxfY3J0Yy0+cGlwZSA9PSBQSVBFX0IgJiYgZGV2X3ByaXYtPnF1aXJr cyAmIFFVSVJLX1BJUEVCX0ZPUkNFKSkKPiAgCQlwaXBlY29uZiB8PSBJOTE1X1JFQUQoUElQRUNP TkYoaW50ZWxfY3J0Yy0+cGlwZSkpICYgUElQRUNPTkZfRU5BQkxFOwo+ICAKPiAtCWlmIChpbnRl bF9jcnRjLT5jb25maWctPmRvdWJsZV93aWRlKQo+ICsJaWYgKHBpcGVfY29uZmlnLT5kb3VibGVf d2lkZSkKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPiAgCj4gIAkvKiBv bmx5IGc0eCBhbmQgbGF0ZXIgaGF2ZSBmYW5jeSBicGMvZGl0aGVyIGNvbnRyb2xzICovCj4gIAlp ZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gIAkJLyogQnNwZWMgY2xh aW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmluZyBmb3IgMzBicHAgcGlwZXMuICovCj4gLQkJ aWYgKGludGVsX2NydGMtPmNvbmZpZy0+ZGl0aGVyICYmIGludGVsX2NydGMtPmNvbmZpZy0+cGlw ZV9icHAgIT0gMzApCj4gKwkJaWYgKHBpcGVfY29uZmlnLT5kaXRoZXIgJiYgcGlwZV9jb25maWct PnBpcGVfYnBwICE9IDMwKQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ESVRIRVJfRU4gfAo+ ICAJCQkJICAgIFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQOwo+ICAKPiAtCQlzd2l0Y2ggKGludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9icHApIHsKPiArCQlzd2l0Y2ggKHBpcGVfY29uZmlnLT5waXBl X2JwcCkgewo+ICAJCWNhc2UgMTg6Cj4gIAkJCXBpcGVjb25mIHw9IFBJUEVDT05GXzZCUEM7Cj4g IAkJCWJyZWFrOwo+IEBAIC03MjgwLDcgKzcyNzIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9w aXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCQl9Cj4gIAl9Cj4gIAo+ IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPiArCWlmIChwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPiAgCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPCA0IHx8Cj4gIAkJICAgIGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxf Y3J0YywgSU5URUxfT1VUUFVUX1NEVk8pKQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9JTlRF UkxBQ0VfV19GSUVMRF9JTkRJQ0FUSU9OOwo+IEBAIC03Mjg5LDcgKzcyODEsNyBAQCBzdGF0aWMg dm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAg CX0gZWxzZQo+ICAJCXBpcGVjb25mIHw9IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+ICAKPiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9y X3JhbmdlKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBwaXBlX2NvbmZpZy0+bGltaXRl ZF9jb2xvcl9yYW5nZSkKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxF Q1Q7Cj4gIAo+ICAJSTkxNV9XUklURShQSVBFQ09ORihpbnRlbF9jcnRjLT5waXBlKSwgcGlwZWNv bmYpOwo+IEBAIC04MDI3LDcgKzgwMTksOCBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2dldF9yZWZj bGsoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlyZXR1cm4gMTIwMDAw Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICtzdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMt PmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gQEAgLTgwMzYsNyArODAyOSw3IEBAIHN0YXRpYyB2b2lkIGly b25sYWtlX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJdmFsID0g MDsKPiAgCj4gLQlzd2l0Y2ggKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHApIHsKPiArCXN3 aXRjaCAocGlwZV9jb25maWctPnBpcGVfYnBwKSB7Cj4gIAljYXNlIDE4Ogo+ICAJCXZhbCB8PSBQ SVBFQ09ORl82QlBDOwo+ICAJCWJyZWFrOwo+IEBAIC04MDU0LDE1ICs4MDQ3LDE1IEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJ QlVHKCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ZGl0aGVyKQo+ICsJ aWYgKHBpcGVfY29uZmlnLT5kaXRoZXIpCj4gIAkJdmFsIHw9IChQSVBFQ09ORl9ESVRIRVJfRU4g fCBQSVBFQ09ORl9ESVRIRVJfVFlQRV9TUCk7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4g KwlpZiAocGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZM QUdfSU5URVJMQUNFKQo+ICAJCXZhbCB8PSBQSVBFQ09ORl9JTlRFUkxBQ0VEX0lMSzsKPiAgCWVs c2UKPiAgCQl2YWwgfD0gUElQRUNPTkZfUFJPR1JFU1NJVkU7Cj4gIAo+IC0JaWYgKGludGVsX2Ny dGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiArCWlmIChwaXBlX2NvbmZpZy0+bGlt aXRlZF9jb2xvcl9yYW5nZSkKPiAgCQl2YWwgfD0gUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNU Owo+ICAKPiAgCUk5MTVfV1JJVEUoUElQRUNPTkYocGlwZSksIHZhbCk7Cj4gQEAgLTgwNzYsNyAr ODA2OSw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gICAqIGlzIHN1cHBvcnRlZCwgYnV0IGV2ZW50dWFsbHkgdGhpcyBzaG91bGQg aGFuZGxlIHZhcmlvdXMKPiAgICogUkdCPC0+WUNiQ3Igc2NlbmFyaW9zIGFzIHdlbGwuCj4gICAq Lwo+IC1zdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9jc2Moc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9jc2Moc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICsJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtODA5MSw3ICs4 MDg1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiAgCSAqIGNvbnNpZGVyYXRpb24uCj4gIAkgKi8KPiAgCj4gLQlpZiAoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJaWYgKHBpcGVfY29uZmlnLT5saW1p dGVkX2NvbG9yX3JhbmdlKQo+ICAJCWNvZWZmID0gKCgyMzUgLSAxNikgKiAoMSA8PCAxMikgLyAy NTUpICYgMHhmZjg7IC8qIDAueHh4Li4uICovCj4gIAo+ICAJLyoKPiBAQCAtODExNSw3ICs4MTA5 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDYpIHsKPiAgCQl1aW50MTZfdCBwb3N0 b2ZmID0gMDsKPiAgCj4gLQkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9y YW5nZSkKPiArCQlpZiAocGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJCXBv c3RvZmYgPSAoMTYgKiAoMSA8PCAxMikgLyAyNTUpICYgMHgxZmZmOwo+ICAKPiAgCQlJOTE1X1dS SVRFKFBJUEVfQ1NDX1BPU1RPRkZfSEkocGlwZSksIHBvc3RvZmYpOwo+IEBAIC04MTI2LDI4ICs4 MTIwLDI5IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9waXBlX2NzYyhzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gIAl9IGVsc2Ugewo+ICAJCXVpbnQzMl90IG1vZGUgPSBDU0NfTU9ERV9ZVVZfVE9f UkdCOwo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3Jhbmdl KQo+ICsJCWlmIChwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiAgCQkJbW9kZSB8 PSBDU0NfQkxBQ0tfU0NSRUVOX09GRlNFVDsKPiAgCj4gIAkJSTkxNV9XUklURShQSVBFX0NTQ19N T0RFKHBpcGUpLCBtb2RlKTsKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaGFzd2VsbF9z ZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICtzdGF0aWMgdm9pZCBoYXN3ZWxs X3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAt CWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1 X3RyYW5zY29kZXI7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2Nv bmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gIAo+ICAJdmFsID0gMDsK PiAgCj4gLQlpZiAoSVNfSEFTV0VMTChkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+ZGl0aGVy KQo+ICsJaWYgKElTX0hBU1dFTEwoZGV2KSAmJiBwaXBlX2NvbmZpZy0+ZGl0aGVyKQo+ICAJCXZh bCB8PSAoUElQRUNPTkZfRElUSEVSX0VOIHwgUElQRUNPTkZfRElUSEVSX1RZUEVfU1ApOwo+ICAK PiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERS TV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICsJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiAgCQl2YWwgfD0gUElQRUNP TkZfSU5URVJMQUNFRF9JTEs7Cj4gIAllbHNlCj4gIAkJdmFsIHw9IFBJUEVDT05GX1BST0dSRVNT SVZFOwo+IEBAIC04MTYxLDcgKzgxNTYsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBl Y29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlpZiAoSVNfQlJPQURXRUxMKGRldikgfHwg SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICAJCXZhbCA9IDA7Cj4gIAo+IC0JCXN3aXRj aCAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCkgewo+ICsJCXN3aXRjaCAocGlwZV9jb25m aWctPnBpcGVfYnBwKSB7Cj4gIAkJY2FzZSAxODoKPiAgCQkJdmFsIHw9IFBJUEVNSVNDX0RJVEhF Ul82X0JQQzsKPiAgCQkJYnJlYWs7Cj4gQEAgLTgxNzksNyArODE3NCw3IEBAIHN0YXRpYyB2b2lk IGhhc3dlbGxfc2V0X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQkJQlVHKCk7 Cj4gIAkJfQo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRoZXIpCj4gKwkJaWYg KHBpcGVfY29uZmlnLT5kaXRoZXIpCj4gIAkJCXZhbCB8PSBQSVBFTUlTQ19ESVRIRVJfRU5BQkxF IHwgUElQRU1JU0NfRElUSEVSX1RZUEVfU1A7Cj4gIAo+ICAJCUk5MTVfV1JJVEUoUElQRU1JU0Mo cGlwZSksIHZhbCk7Cj4gQEAgLTg0MjMsMTIgKzg0MTgsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxf cGNoX3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiAtCQkJCQkgZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIsCj4gKwkJCQkJ IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJCQkgc3RydWN0IGlu dGVsX2xpbmtfbV9uICptX24sCj4gIAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbTJfbjIp Cj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwll bnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsK PiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCj4gIAlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNSkgewo+IEBAIC04NDQ0LDcgKzg0NDAsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAq IHJlZ2lzdGVycyBhcmUgbm90IHVubmVjZXNzYXJpbHkgcmVhZCkuCj4gIAkJICovCj4gIAkJaWYg KG0yX24yICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCAmJgo+IC0JCQljcnRjLT5jb25maWct Pmhhc19kcnJzKSB7Cj4gKwkJCXBpcGVfY29uZmlnLT5oYXNfZHJycykgewo+ICAJCQltMl9uMi0+ bGlua19tID0gSTkxNV9SRUFEKFBJUEVfTElOS19NMih0cmFuc2NvZGVyKSk7Cj4gIAkJCW0yX24y LT5saW5rX24gPQlJOTE1X1JFQUQoUElQRV9MSU5LX04yKHRyYW5zY29kZXIpKTsKPiAgCQkJbTJf bjItPmdtY2hfbSA9CUk5MTVfUkVBRChQSVBFX0RBVEFfTTIodHJhbnNjb2RlcikpCj4gQEAgLTg0 NzAsNyArODQ2Niw3IEBAIHZvaWQgaW50ZWxfZHBfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICAJCWludGVsX3Bj aF90cmFuc2NvZGVyX2dldF9tX24oY3J0YywgJnBpcGVfY29uZmlnLT5kcF9tX24pOwo+ICAJZWxz ZQo+IC0JCWludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oY3J0YywgcGlwZV9jb25maWctPmNw dV90cmFuc2NvZGVyLAo+ICsJCWludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oY3J0YywgcGlw ZV9jb25maWcsCj4gIAkJCQkJICAgICAmcGlwZV9jb25maWctPmRwX21fbiwKPiAgCQkJCQkgICAg ICZwaXBlX2NvbmZpZy0+ZHBfbTJfbjIpOwo+ICB9Cj4gQEAgLTg0NzgsNyArODQ3NCw3IEBAIHZv aWQgaW50ZWxfZHBfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgc3RhdGljIHZv aWQgaXJvbmxha2VfZ2V0X2ZkaV9tX25fY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICAJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+IC0JaW50 ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihjcnRjLCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29k ZXIsCj4gKwlpbnRlbF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKGNydGMsIHBpcGVfY29uZmlnLAo+ ICAJCQkJICAgICAmcGlwZV9jb25maWctPmZkaV9tX24sIE5VTEwpOwo+ICB9Cj4gIAo+IEBAIC05 MzMxLDYgKzkzMjcsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRl djsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCXRvX2lu dGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwo+ICAJaW50IHggPSBjcnRjLT5jdXJzb3JfeDsKPiAgCWludCB5ID0gY3J0Yy0+Y3Vyc29y X3k7Cj4gQEAgLTkzMzksMTAgKzkzMzcsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y191cGRh dGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCWlmIChvbikKPiAgCQliYXNlID0g aW50ZWxfY3J0Yy0+Y3Vyc29yX2FkZHI7Cj4gIAo+IC0JaWYgKHggPj0gaW50ZWxfY3J0Yy0+Y29u ZmlnLT5waXBlX3NyY193KQo+ICsJaWYgKHggPj0gcGlwZV9jb25maWctPnBpcGVfc3JjX3cpCj4g IAkJYmFzZSA9IDA7Cj4gIAo+IC0JaWYgKHkgPj0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3Ny Y19oKQo+ICsJaWYgKHkgPj0gcGlwZV9jb25maWctPnBpcGVfc3JjX2gpCj4gIAkJYmFzZSA9IDA7 CgpKdXN0IGN1cmlvc2l0eTogU2hvdWxkbid0IG91ciBjbGFtcGluZyBhbmQgdmlzaWJpbGl0eSBj b21wdXRhdGlvbiBjYXRjaAp0aGlzIGFscmVhZHk/Cgo+ICAKPiAgCWlmICh4IDwgMCkgewo+IEBA IC05OTY2LDkgKzk5NjQsMTEgQEAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmludGVsX2NydGNf bW9kZV9nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWVudW0gdHJhbnNjb2Rl ciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCXRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVy ID0gcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSBwaXBlX2NvbmZpZzsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlIGZha2VfY29uZmlnOwo+ICAJaW50IGh0b3QgPSBJOTE1X1JF QUQoSFRPVEFMKGNwdV90cmFuc2NvZGVyKSk7Cj4gIAlpbnQgaHN5bmMgPSBJOTE1X1JFQUQoSFNZ TkMoY3B1X3RyYW5zY29kZXIpKTsKPiAgCWludCB2dG90ID0gSTkxNV9SRUFEKFZUT1RBTChjcHVf dHJhbnNjb2RlcikpOwo+IEBAIC05OTg2LDE0ICs5OTg2LDE0IEBAIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICppbnRlbF9jcnRjX21vZGVfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkg KiBOb3RlLCBpZiBMVkRTIGV2ZXIgdXNlcyBhIG5vbi0xIHBpeGVsIG11bHRpcGxpZXIsIHdlJ2xs IG5lZWQKPiAgCSAqIHRvIHVzZSBhIHJlYWwgdmFsdWUgaGVyZSBpbnN0ZWFkLgo+ICAJICovCj4g LQlwaXBlX2NvbmZpZy5jcHVfdHJhbnNjb2RlciA9IChlbnVtIHRyYW5zY29kZXIpIHBpcGU7Cj4g LQlwaXBlX2NvbmZpZy5waXhlbF9tdWx0aXBsaWVyID0gMTsKPiAtCXBpcGVfY29uZmlnLmRwbGxf aHdfc3RhdGUuZHBsbCA9IEk5MTVfUkVBRChEUExMKHBpcGUpKTsKPiAtCXBpcGVfY29uZmlnLmRw bGxfaHdfc3RhdGUuZnAwID0gSTkxNV9SRUFEKEZQMChwaXBlKSk7Cj4gLQlwaXBlX2NvbmZpZy5k cGxsX2h3X3N0YXRlLmZwMSA9IEk5MTVfUkVBRChGUDEocGlwZSkpOwo+IC0JaTl4eF9jcnRjX2Ns b2NrX2dldChpbnRlbF9jcnRjLCAmcGlwZV9jb25maWcpOwo+IC0KPiAtCW1vZGUtPmNsb2NrID0g cGlwZV9jb25maWcucG9ydF9jbG9jayAvIHBpcGVfY29uZmlnLnBpeGVsX211bHRpcGxpZXI7Cj4g KwlmYWtlX2NvbmZpZy5jcHVfdHJhbnNjb2RlciA9IChlbnVtIHRyYW5zY29kZXIpIHBpcGU7Cj4g KwlmYWtlX2NvbmZpZy5waXhlbF9tdWx0aXBsaWVyID0gMTsKPiArCWZha2VfY29uZmlnLmRwbGxf aHdfc3RhdGUuZHBsbCA9IEk5MTVfUkVBRChEUExMKHBpcGUpKTsKPiArCWZha2VfY29uZmlnLmRw bGxfaHdfc3RhdGUuZnAwID0gSTkxNV9SRUFEKEZQMChwaXBlKSk7Cj4gKwlmYWtlX2NvbmZpZy5k cGxsX2h3X3N0YXRlLmZwMSA9IEk5MTVfUkVBRChGUDEocGlwZSkpOwo+ICsJaTl4eF9jcnRjX2Ns b2NrX2dldChpbnRlbF9jcnRjLCAmZmFrZV9jb25maWcpOwo+ICsKPiArCW1vZGUtPmNsb2NrID0g ZmFrZV9jb25maWcucG9ydF9jbG9jayAvIGZha2VfY29uZmlnLnBpeGVsX211bHRpcGxpZXI7Cj4g IAltb2RlLT5oZGlzcGxheSA9IChodG90ICYgMHhmZmZmKSArIDE7Cj4gIAltb2RlLT5odG90YWwg PSAoKGh0b3QgJiAweGZmZmYwMDAwKSA+PiAxNikgKyAxOwo+ICAJbW9kZS0+aHN5bmNfc3RhcnQg PSAoaHN5bmMgJiAweGZmZmYpICsgMTsKCnMvcGlwZV9jb25maWcvZmFrZV9jb25maWcgaXMgbmlj ZSBidXQgc2hvdWxkIGJlIHNwbGl0IG91dCBpbW8uCgo+IEBAIC0xMTgzOSwxMiArMTE4MzksMTMg QEAgY2hlY2tfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSBwaXBlX2NvbmZpZzsKPiArCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlIHBpcGVfY29uZmlnLCAqc3dfY29uZmlnOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVsX2Ny dGMoZGV2LCBjcnRjKSB7Cj4gIAkJYm9vbCBlbmFibGVkID0gZmFsc2U7Cj4gIAkJYm9vbCBhY3Rp dmUgPSBmYWxzZTsKPiAgCj4gKwkJc3dfY29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5iYXNlLnN0YXRlKTsKPiAgCQltZW1zZXQoJnBpcGVfY29uZmlnLCAwLCBzaXplb2YocGlwZV9j b25maWcpKTsKPiAgCj4gIAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdXG4iLAo+IEBAIC0xMTg4 NywxMSArMTE4ODgsMTEgQEAgY2hlY2tfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBjcnRjLT5iYXNlLnN0YXRl LT5hY3RpdmUsIGFjdGl2ZSk7Cj4gIAo+ICAJCWlmIChhY3RpdmUgJiYKPiAtCQkgICAgIWludGVs X3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBjcnRjLT5jb25maWcsICZwaXBlX2NvbmZpZykpIHsK PiArCQkgICAgIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBzd19jb25maWcsICZwaXBl X2NvbmZpZykpIHsKPiAgCQkJSTkxNV9TVEFURV9XQVJOKDEsICJwaXBlIHN0YXRlIGRvZXNuJ3Qg bWF0Y2ghXG4iKTsKPiAgCQkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjcnRjLCAmcGlwZV9jb25m aWcsCj4gIAkJCQkJICAgICAgICJbaHcgc3RhdGVdIik7Cj4gLQkJCWludGVsX2R1bXBfcGlwZV9j b25maWcoY3J0YywgY3J0Yy0+Y29uZmlnLAo+ICsJCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNy dGMsIHN3X2NvbmZpZywKPiAgCQkJCQkgICAgICAgIltzdyBzdGF0ZV0iKTsKPiAgCQl9Cj4gIAl9 Cj4gQEAgLTExOTkwLDcgKzExOTkxLDggQEAgc3RhdGljIHZvaWQgdXBkYXRlX3NjYW5saW5lX29m ZnNldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCSAqIG9uZSB0byB0aGUgdmFsdWUuCj4g IAkgKi8KPiAgCWlmIChJU19HRU4yKGRldikpIHsKPiAtCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9Cj4gKwkJCSZjcnRjLT5iYXNlLnN0 YXRlLT5hZGp1c3RlZF9tb2RlOwo+ICAJCWludCB2dG90YWw7Cj4gIAo+ICAJCXZ0b3RhbCA9IG1v ZGUtPmNydGNfdnRvdGFsOwo+IEBAIC0xMzUzMiw2ICsxMzUzNCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKPiAgCWNydGNf c3RhdGUgPSBremFsbG9jKHNpemVvZigqY3J0Y19zdGF0ZSksIEdGUF9LRVJORUwpOwo+ICAJaWYg KCFjcnRjX3N0YXRlKQo+ICAJCWdvdG8gZmFpbDsKPiArCj4gIAlpbnRlbF9jcnRjLT5jb25maWcg PSBjcnRjX3N0YXRlOwo+ICAJaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSA9ICZjcnRjX3N0YXRlLT5i YXNlOwo+ICAJY3J0Y19zdGF0ZS0+YmFzZS5jcnRjID0gJmludGVsX2NydGMtPmJhc2U7Cj4gQEAg LTE0NTc0LDE5ICsxNDU3NywyMCBAQCBpbnRlbF9jaGVja19wbGFuZV9tYXBwaW5nKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKQo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk IGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gK3N0YXRpYyB2 b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAl1MzIgcmVnOwo+ICAKPiAgCS8qIENs ZWFyIGFueSBmcmFtZSBzdGFydCBkZWxheXMgdXNlZCBmb3IgZGVidWdnaW5nIGxlZnQgYnkgdGhl IEJJT1MgKi8KPiAtCXJlZyA9IFBJUEVDT05GKGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIp Owo+ICsJcmVnID0gUElQRUNPTkYocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPiAgCUk5 MTVfV1JJVEUocmVnLCBJOTE1X1JFQUQocmVnKSAmIH5QSVBFQ09ORl9GUkFNRV9TVEFSVF9ERUxB WV9NQVNLKTsKPiAgCj4gIAkvKiByZXN0b3JlIHZibGFuayBpbnRlcnJ1cHRzIHRvIGNvcnJlY3Qg c3RhdGUgKi8KPiAgCWRybV9jcnRjX3ZibGFua19yZXNldCgmY3J0Yy0+YmFzZSk7Cj4gLQlpZiAo Y3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Cj4gKwlpZiAocGlwZV9jb25maWctPmJhc2UuYWN0 aXZlKSB7Cj4gIAkJdXBkYXRlX3NjYW5saW5lX29mZnNldChjcnRjKTsKPiAgCQlkcm1fY3J0Y192 Ymxhbmtfb24oJmNydGMtPmJhc2UpOwo+ICAJfQo+IEBAIC0xNDYyNiwxNCArMTQ2MzAsMTQgQEAg c3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgCQkJCWNvbm5lY3Rvci0+ZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUgPSBmYWxzZTsKPiAg CQkJfQo+ICAKPiAtCQlXQVJOX09OKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSk7Cj4gLQkJY3J0 Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlID0gZmFsc2U7Cj4gLQkJY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0 aXZlID0gZmFsc2U7Cj4gKwkJV0FSTl9PTihwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpOwo+ICsJ CXBpcGVfY29uZmlnLT5iYXNlLmVuYWJsZSA9IGZhbHNlOwo+ICsJCXBpcGVfY29uZmlnLT5iYXNl LmFjdGl2ZSA9IGZhbHNlOwo+ICAJCWNydGMtPmJhc2UuZW5hYmxlZCA9IGZhbHNlOwo+ICAJfQo+ ICAKPiAgCWlmIChkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UgJiYKPiAtCSAg ICBjcnRjLT5waXBlID09IFBJUEVfQSAmJiAhY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Cj4g KwkgICAgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgIXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSkg ewo+ICAJCS8qIEJJT1MgZm9yZ290IHRvIGVuYWJsZSBwaXBlIEEsIHRoaXMgbW9zdGx5IGhhcHBl bnMgYWZ0ZXIKPiAgCQkgKiByZXN1bWUuIEZvcmNlLWVuYWJsZSB0aGUgcGlwZSB0byBmaXggdGhp cywgdGhlIHVwZGF0ZV9kcG1zCj4gIAkJICogY2FsbCBiZWxvdyB3ZSByZXN0b3JlIHRoZSBwaXBl IHRvIHRoZSByaWdodCBzdGF0ZSwgYnV0IGxlYXZlCj4gQEAgLTE0NjQ1LDcgKzE0NjQ5LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgCSAqIGhhdmUgYWN0aXZlIGNvbm5lY3RvcnMvZW5jb2RlcnMuICovCj4gIAlpbnRlbF9jcnRj X3VwZGF0ZV9kcG1zKCZjcnRjLT5iYXNlKTsKPiAgCj4gLQlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+ YWN0aXZlIHx8IEhBU19HTUNIX0RJU1BMQVkoZGV2KSkgewo+ICsJaWYgKHBpcGVfY29uZmlnLT5i YXNlLmFjdGl2ZSB8fCBIQVNfR01DSF9ESVNQTEFZKGRldikpIHsKPiAgCQkvKgo+ICAJCSAqIFdl IHN0YXJ0IG91dCB3aXRoIHVuZGVycnVuIHJlcG9ydGluZyBkaXNhYmxlZCB0byBhdm9pZCByYWNl cy4KPiAgCQkgKiBGb3IgY29ycmVjdCBib29ra2VlcGluZyBtYXJrIHRoaXMgb24gYWN0aXZlIGNy dGNzLgo+IEBAIC0xNDc2MywxNyArMTQ3NjcsMTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNl dF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlmb3JfZWFjaF9p bnRlbF9jcnRjKGRldiwgY3J0Yykgewo+ICAJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBj cnRjLT5iYXNlLnByaW1hcnk7Cj4gIAkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZTsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ICAKPiAtCQltZW1zZXQoY3J0 Yy0+Y29uZmlnLCAwLCBzaXplb2YoKmNydGMtPmNvbmZpZykpOwo+ICsJCW1lbXNldChwaXBlX2Nv bmZpZywgMCwgc2l6ZW9mKCpwaXBlX2NvbmZpZykpOwo+ICAKPiAtCQljcnRjLT5jb25maWctPnF1 aXJrcyB8PSBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERTsKPiArCQlwaXBlX2NvbmZp Zy0+cXVpcmtzIHw9IFBJUEVfQ09ORklHX1FVSVJLX0lOSEVSSVRFRF9NT0RFOwo+ICAKPiAgCQlp ZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+ICAJCQkqY3J0Y19tYXNrIHw9IGRybV9jcnRj X2luZGV4KCZjcnRjLT5iYXNlKTsKPiAgCj4gLQkJY3J0Yy0+YmFzZS5lbmFibGVkID0gY3J0Yy0+ YmFzZS5zdGF0ZS0+ZW5hYmxlID0KPiAtCQljcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgPQo+IC0J CQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoY3J0YywgY3J0Yy0+Y29uZmlnKTsK PiArCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBwaXBlX2NvbmZpZy0+YmFzZS5lbmFibGUgPQo+ICsJ CXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSA9Cj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9w aXBlX2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJCXBsYW5lX3N0YXRlID0gdG9f aW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpOwo+ICAJCXBsYW5lX3N0YXRlLT5od19l bmFibGVkID0gcGxhbmVfc3RhdGUtPnZpc2libGUgPQo+IEBAIC0xNDgxOCw3ICsxNDgyNCw4IEBA IHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJCWlmIChlbmNvZGVyLT5nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUp KSB7Cj4gIAkJCWNydGMgPSB0b19pbnRlbF9jcnRjKGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFw cGluZ1twaXBlXSk7Cj4gIAkJCWVuY29kZXItPmJhc2UuY3J0YyA9ICZjcnRjLT5iYXNlOwo+IC0J CQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGMtPmNvbmZpZyk7Cj4gKwkJCWVuY29k ZXItPmdldF9jb25maWcoZW5jb2RlciwKPiArCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+ YmFzZS5zdGF0ZSkpOwo+ICAJCX0gZWxzZSB7Cj4gIAkJCWVuY29kZXItPmJhc2UuY3J0YyA9IE5V TEw7Cj4gIAkJfQo+IEBAIC0xNDg4Myw5ICsxNDg5MCwxMyBAQCB2b2lkIGludGVsX21vZGVzZXRf c2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCX0KPiAgCj4gIAlmb3Jf ZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7Cj4gKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnOwo+ICsKPiAgCQljcnRjID0gdG9faW50ZWxfY3J0YyhkZXZfcHJpdi0+cGlw ZV90b19jcnRjX21hcHBpbmdbcGlwZV0pOwo+IC0JCWludGVsX3Nhbml0aXplX2NydGMoY3J0Yyk7 Cj4gLQkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjcnRjLCBjcnRjLT5jb25maWcsCj4gKwkJcGlw ZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ICsKPiAr CQlpbnRlbF9zYW5pdGl6ZV9jcnRjKGNydGMsIHBpcGVfY29uZmlnKTsKCkFub3RoZXIgZXhhbXBs ZSB3aGVyZSB0aGVyZSdzIGltbyBubyBuZWVkIHRvIHBhc3MgYXJvdW5kIHBpcGVfY29uZmlnCmV4 cGxpY3RseS4gQXMgSSBzYWlkIEkgZGlkbid0IGhpZ2hsaWdodCBhbGwgb2YgdGhlbS4KCj4gKwkJ aW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZywKPiAgCQkJCSAgICAgICAi W3NldHVwX2h3X3N0YXRlXSIpOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBp bmRleCBlNjg3NmZhY2E3ZjAuLmFiZjgwODJiZTQwYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+IEBAIC01MzA5LDEwICs1MzA5LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3NldF9k cnJzX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCByZWZyZXNoX3JhdGUpCj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4g IAkJc3dpdGNoIChpbmRleCkgewo+ICAJCWNhc2UgRFJSU19ISUdIX1JSOgo+IC0JCQlpbnRlbF9k cF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPiArCQkJaW50ZWxfZHBfc2V0X21fbihpbnRl bF9jcnRjLCBwaXBlX2NvbmZpZywgTTFfTjEpOwo+ICAJCQlicmVhazsKPiAgCQljYXNlIERSUlNf TE9XX1JSOgo+IC0JCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0yX04yKTsKPiArCQkJ aW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgTTJfTjIpOwoKU2hvdWxk IGJlIHBhcnQgb2YgdGhlIGRycnMgcGF0Y2guCgo+ICAJCQlicmVhazsKPiAgCQljYXNlIERSUlNf TUFYX1JSOgo+ICAJCWRlZmF1bHQ6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA3 OTc5YTJmNjgzOGMuLjY3NjdlZDkxZmFhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gQEAgLTExMDIsNyArMTEwMiw5IEBAIHZvaWQgYnh0X2VuYWJsZV9kYzkoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBieHRfZGlzYWJsZV9kYzkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpbnRlbF9kcF9nZXRfbV9uKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZyk7Cj4gLXZvaWQgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywgZW51bSBsaW5rX21fbl9zZXQgbV9uKTsKPiArdm9pZCBpbnRlbF9kcF9zZXRfbV9uKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKPiArCQkgICAgICBlbnVtIGxpbmtfbV9uX3NldCBtX24pOwoKTWlzcGxh Y2UgaHVuayA7LSkKLURhbmllbAoKPiAgaW50IGludGVsX2RvdGNsb2NrX2NhbGN1bGF0ZShpbnQg bGlua19mcmVxLCBjb25zdCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbik7Cj4gIHZvaWQKPiAg aXJvbmxha2VfY2hlY2tfZW5jb2Rlcl9kb3RjbG9jayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcsCj4gLS0gCj4gMi4xLjAKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==