From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Resign firmware loading for dmc Date: Tue, 7 Jul 2015 15:18:23 +0200 Message-ID: <20150707131823.GT7568@phenom.ffwll.local> References: <1436272812-14934-1-git-send-email-animesh.manna@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f41.google.com (mail-wg0-f41.google.com [74.125.82.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 852576E560 for ; Tue, 7 Jul 2015 06:15:38 -0700 (PDT) Received: by wgjx7 with SMTP id x7so167604033wgj.2 for ; Tue, 07 Jul 2015 06:15:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436272812-14934-1-git-send-email-animesh.manna@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Animesh Manna Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMDcsIDIwMTUgYXQgMDY6MTA6MTJQTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3 cm90ZToKPiB2MTogQmFzZWQgb24gcmV2aWV3IGNvbW1lbnRzIGZyb20gRGFuaWVsIGZvbGxvd2lu ZyBjaGFuZ2VzIGFyZSBkb25lLgo+IC0gTW9yZSBmb2N1cyBpcyBnaXZlbiBmb3IgYmV0dGVyIHN5 bmNocm9uaXphdGlvbi4KPiAtIFJlcGxhY2VkIGFzeW5jIGZpcm13YXJlIGxvYWRpbmcgYnkgdXNp bmcgcmVxdWVzdF9maXJtYXdyZSgpIGNhbGwuCj4gLSBQcmV2ZW50ZWQgZW50ZXJpbmcgaW4gZGM1 L2RjNiB3aGlsZSBmaXJtd2FyZSBsb2FkaW5nIGluIHByb2Nlc3MuCj4gTm93IHJlZ2lzdGVyIHBy b2dyYW1taW5nIGZvciBkYzUvZGM2IGFsd2F5cyB3aWxsIGhhcHBlbiBmb2xsb3dlZAo+IGJ5IGZp cm13YXJlIGxvYWRpbmcuCj4gLSBSZW1vdmVkIHRoZSBjc3ItbG9jayBhbmQgY3NyLXN0YXRlIHdo aWNoIHdhcyB1c2VkIGJlZm9yZS4KPiAtIEFkZGVkIGEgYXN5bmMgd29yayB3aGljaCBpcyByZXNw b25zaWJsZSBmb3IgYm90aCBsb2FkaW5nIHRoZQo+IGZpcm13YXJlIGFuZCByZWdpc3RlciBwcm9n cmFtbWluZyBmb3IgZGM1L2RjNi4KPiAtIEFkZGVkIGZsdXNoX3dvcmsoKSB0byBleHBsaWNpdGx5 IHN5bmNocm9uaXplIHRoZSBhc3luYyB3b3JrCj4gZHVyaW5nIHN1c3BlbmQgYW5kIGRyaXZlciB1 bmxvYWRpbmcuCgpUaGlzIHNob3VsZCBhbGwgYmUgc2VwYXJhdGUgcGF0Y2hlcy4gUGxlYXNlIHNw bGl0IHRoZW0gdXAuCgpUaGFua3MsIERhbmllbAoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmltZXNo IE1hbm5hIDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYyAgICAgICAgIHwgICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyAgICAgICAgIHwgIDEwICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgfCAgMTMgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nz ci5jICAgICAgICB8IDE0MSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgfCAgIDUgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgIDYzICsrKysrKystLS0tLS0tCj4gIDYg ZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgMTQxIGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kbWEuYwo+IGluZGV4IGM1MzQ5ZmEuLjFlYmYwZTEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZG1hLmMKPiBAQCAtODIwLDcgKzgyMCw2IEBAIGludCBpOTE1X2RyaXZlcl9s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gIAlzcGlu X2xvY2tfaW5pdCgmZGV2X3ByaXYtPm1taW9fZmxpcF9sb2NrKTsKPiAgCW11dGV4X2luaXQoJmRl dl9wcml2LT5zYl9sb2NrKTsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5tb2Rlc2V0X3Jlc3Rv cmVfbG9jayk7Cj4gLQltdXRleF9pbml0KCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+ICAKPiAgCWlu dGVsX3BtX3NldHVwKGRldik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IGU0 NGRjMGQuLjYwNDljZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMTAxOSwx MSArMTAxOSw4IEBAIHN0YXRpYyBpbnQgc2tsX3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAkvKiBFbmFibGluZyBEQzYgaXMgbm90IGEg aGFyZCByZXF1aXJlbWVudCB0byBlbnRlciBydW50aW1lIEQzICovCj4gIAo+IC0JLyoKPiAtCSAq IFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgQ1NSIGlzbid0IGlkZW50aWZpZWQgYXMgbG9hZGVkIGJl Zm9yZQo+IC0JICogQ1NSLWxvYWRpbmcgcHJvZ3JhbSBpcyBjYWxsZWQgZHVyaW5nIHJ1bnRpbWUt cmVzdW1lLgo+IC0JICovCj4gLQlpbnRlbF9jc3JfbG9hZF9zdGF0dXNfc2V0KGRldl9wcml2LCBG V19VTklOSVRJQUxJWkVEKTsKPiArCWRldl9wcml2LT5jc3IuZG1jX3ByZXNlbnQgPSBmYWxzZTsK PiArCWZsdXNoX3dvcmsoJmRldl9wcml2LT5jc3IuY3NyX3dvcmspOwo+ICAKPiAgCXNrbF91bmlu aXRfY2RjbGsoZGV2X3ByaXYpOwo+ICAKPiBAQCAtMTA3MSwxMCArMTA2OCw3IEBAIHN0YXRpYyBp bnQgYnh0X3Jlc3VtZV9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCj4gIHN0YXRpYyBpbnQgc2tsX3Jlc3VtZV9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2 LT5kZXY7Cj4gLQo+ICAJc2tsX2luaXRfY2RjbGsoZGV2X3ByaXYpOwo+IC0JaW50ZWxfY3NyX2xv YWRfcHJvZ3JhbShkZXYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gaW5kZXggMWRiZDk1Ny4uNzM1MDlmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC03MzcsMjAgKzczNywxNiBAQCBzdHJ1Y3QgaW50ZWxfdW5jb3JlIHsKPiAgI2Rl ZmluZSBmb3JfZWFjaF9md19kb21haW4oZG9tYWluX18sIGRldl9wcml2X18sIGlfXykgXAo+ICAJ Zm9yX2VhY2hfZndfZG9tYWluX21hc2soZG9tYWluX18sIEZPUkNFV0FLRV9BTEwsIGRldl9wcml2 X18sIGlfXykKPiAgCj4gLWVudW0gY3NyX3N0YXRlIHsKPiAtCUZXX1VOSU5JVElBTElaRUQgPSAw LAo+IC0JRldfTE9BREVELAo+IC0JRldfRkFJTEVECj4gLX07Cj4gLQo+ICBzdHJ1Y3QgaW50ZWxf Y3NyIHsKPiArCWJvb2wgZGNfc3RhdGVfcmVxOwo+ICsJc3RydWN0IHdvcmtfc3RydWN0IGNzcl93 b3JrOwo+ICAJY29uc3QgY2hhciAqZndfcGF0aDsKPiAgCV9fYmUzMiAqZG1jX3BheWxvYWQ7Cj4g IAl1aW50MzJfdCBkbWNfZndfc2l6ZTsKPiAgCXVpbnQzMl90IG1taW9fY291bnQ7Cj4gIAl1aW50 MzJfdCBtbWlvYWRkcls4XTsKPiAgCXVpbnQzMl90IG1taW9kYXRhWzhdOwo+IC0JZW51bSBjc3Jf c3RhdGUgc3RhdGU7Cj4gKwlib29sIGRtY19wcmVzZW50Owo+ICB9Owo+ICAKPiAgI2RlZmluZSBE RVZfSU5GT19GT1JfRUFDSF9GTEFHKGZ1bmMsIHNlcCkgXAo+IEBAIC0yNjMxLDYgKzI2MjcsOSBA QCBleHRlcm4gdm9pZCBpOTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gIGludCB2bHZfZm9yY2VfZ2Z4X2Nsb2NrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgYm9vbCBvbik7Cj4gIHZvaWQgaTkxNV9maXJtd2FyZV9sb2FkX2Vy cm9yX3ByaW50KGNvbnN0IGNoYXIgKmZ3X3BhdGgsIGludCBlcnIpOwo+ICAKPiArLyogaW50ZWxf Y3NyLmMgKi8KPiArdm9pZCBpbnRlbF9jc3Jfc2V0ZGNfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKl9fd29yayk7Cj4gKwo+ICAvKiBpbnRlbF9ob3RwbHVnLmMgKi8KPiAgdm9pZCBpbnRlbF9o cGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHBpbl9tYXNrLCB1MzIg bG9uZ19tYXNrKTsKPiAgdm9pZCBpbnRlbF9ocGRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j c3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gaW5kZXggNmQ4YTdiZi4u NDRmMDVhOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gQEAgLTMyLDEzICszMiw2 IEBACj4gICAqIG9ud2FyZHMgdG8gZHJpdmUgbmV3bHkgYWRkZWQgRE1DIChEaXNwbGF5IG1pY3Jv Y29udHJvbGxlcikgaW4gZGlzcGxheQo+ICAgKiBlbmdpbmUgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0 aGUgc3RhdGUgb2YgZGlzcGxheSBlbmdpbmUgd2hlbiBpdCBlbnRlciBpbnRvCj4gICAqIGxvdy1w b3dlciBzdGF0ZSBhbmQgY29tZXMgYmFjayB0byBub3JtYWwuCj4gLSAqCj4gLSAqIEZpcm13YXJl IGxvYWRpbmcgc3RhdHVzIHdpbGwgYmUgb25lIG9mIHRoZSBiZWxvdyBzdGF0ZXM6IEZXX1VOSU5J VElBTElaRUQsCj4gLSAqIEZXX0xPQURFRCwgRldfRkFJTEVELgo+IC0gKgo+IC0gKiBPbmNlIHRo ZSBmaXJtd2FyZSBpcyB3cml0dGVuIGludG8gdGhlIHJlZ2lzdGVycyBzdGF0dXMgd2lsbCBiZSBt b3ZlZCBmcm9tCj4gLSAqIEZXX1VOSU5JVElBTElaRUQgdG8gRldfTE9BREVEIGFuZCBmb3IgYW55 IGVycm9uZW91cyBjb25kaXRpb24gc3RhdHVzIHdpbGwKPiAtICogYmUgbW92ZWQgdG8gRldfRkFJ TEVELgo+ICAgKi8KPiAgCj4gICNkZWZpbmUgSTkxNV9DU1JfU0tMICJpOTE1L3NrbF9kbWNfdmVy MS5iaW4iCj4gQEAgLTE5OSw0OCArMTkyLDYgQEAgc3RhdGljIGNoYXIgaW50ZWxfZ2V0X3N1YnN0 ZXBwaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuIC1FTk9EQVRBOwo+ICB9 Cj4gIAo+IC0vKioKPiAtICogaW50ZWxfY3NyX2xvYWRfc3RhdHVzX2dldCgpIC0gdG8gZ2V0IGZp cm13YXJlIGxvYWRpbmcgc3RhdHVzLgo+IC0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlLgo+IC0g Kgo+IC0gKiBUaGlzIGZ1bmN0aW9uIGhlbHBzIHRvIGdldCB0aGUgZmlybXdhcmUgbG9hZGluZyBz dGF0dXMuCj4gLSAqCj4gLSAqIFJldHVybjogRmlybXdhcmUgbG9hZGluZyBzdGF0dXMuCj4gLSAq Lwo+IC1lbnVtIGNzcl9zdGF0ZSBpbnRlbF9jc3JfbG9hZF9zdGF0dXNfZ2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0JZW51bSBjc3Jfc3RhdGUgc3RhdGU7Cj4g LQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmNzcl9sb2NrKTsKPiAtCXN0YXRlID0gZGV2X3By aXYtPmNzci5zdGF0ZTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmNzcl9sb2NrKTsKPiAt Cj4gLQlyZXR1cm4gc3RhdGU7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpbnRlbF9jc3JfbG9hZF9z dGF0dXNfc2V0KCkgLSBoZWxwIHRvIHNldCBmaXJtd2FyZSBsb2FkaW5nIHN0YXR1cy4KPiAtICog QGRldl9wcml2OiBpOTE1IGRldmljZS4KPiAtICogQHN0YXRlOiBlbnVtZXJhdGlvbiBvZiBmaXJt d2FyZSBsb2FkaW5nIHN0YXR1cy4KPiAtICoKPiAtICogU2V0IHRoZSBmaXJtd2FyZSBsb2FkaW5n IHN0YXR1cy4KPiAtICovCj4gLXZvaWQgaW50ZWxfY3NyX2xvYWRfc3RhdHVzX3NldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCWVudW0gY3NyX3N0YXRlIHN0YXRlKQo+ IC17Cj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+IC0JZGV2X3ByaXYtPmNz ci5zdGF0ZSA9IHN0YXRlOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+ IC19Cj4gLQo+IC0vKioKPiAtICogaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpIC0gd3JpdGUgdGhl IGZpcm13YXJlIGZyb20gbWVtb3J5IHRvIHJlZ2lzdGVyLgo+IC0gKiBAZGV2OiBkcm0gZGV2aWNl Lgo+IC0gKgo+IC0gKiBDU1IgZmlybXdhcmUgaXMgcmVhZCBmcm9tIGEgLmJpbiBmaWxlIGFuZCBr ZXB0IGluIGludGVybmFsIG1lbW9yeSBvbmUgdGltZS4KPiAtICogRXZlcnl0aW1lIGRpc3BsYXkg Y29tZXMgYmFjayBmcm9tIGxvdyBwb3dlciBzdGF0ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0 bwo+IC0gKiBjb3B5IHRoZSBmaXJtd2FyZSBmcm9tIGludGVybmFsIG1lbW9yeSB0byByZWdpc3Rl cnMuCj4gLSAqLwo+ICB2b2lkIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMjUyLDcgKzIwMyw2IEBAIHZvaWQgaW50ZWxfY3NyX2xvYWRf cHJvZ3JhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4g LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+ICAJZndfc2l6ZSA9IGRldl9wcml2 LT5jc3IuZG1jX2Z3X3NpemU7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgZndfc2l6ZTsgaSsrKQo+ICAJ CUk5MTVfV1JJVEUoQ1NSX1BST0dSQU1fQkFTRSArIGkgKiA0LAo+IEBAIC0yNjIsMTQgKzIxMiwx MSBAQCB2b2lkIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCQlJOTE1X1dSSVRFKGRldl9wcml2LT5jc3IubW1pb2FkZHJbaV0sCj4gIAkJCWRldl9wcml2 LT5jc3IubW1pb2RhdGFbaV0pOwo+ICAJfQo+IC0KPiAtCWRldl9wcml2LT5jc3Iuc3RhdGUgPSBG V19MT0FERUQ7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5jc3JfbG9jayk7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIGZpbmlzaF9jc3JfbG9hZChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3 LCB2b2lkICpjb250ZXh0KQo+ICtzdGF0aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3Ry dWN0IGZpcm13YXJlICpmdywKPiArCQkJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29udGV4dDsK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICAJc3RydWN0IGlu dGVsX2Nzc19oZWFkZXIgKmNzc19oZWFkZXI7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFk ZXIgKnBhY2thZ2VfaGVhZGVyOwo+IEBAIC0yODAsMTYgKzIyNywxNSBAQCBzdGF0aWMgdm9pZCBm aW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dCkK PiAgCXVpbnQzMl90IGRtY19vZmZzZXQgPSBDU1JfREVGQVVMVF9GV19PRkZTRVQsIHJlYWRjb3Vu dCA9IDAsIG5ieXRlczsKPiAgCXVpbnQzMl90IGk7Cj4gIAlfX2JlMzIgKmRtY19wYXlsb2FkOwo+ IC0JYm9vbCBmd19sb2FkZWQgPSBmYWxzZTsKPiAgCj4gIAlpZiAoIWZ3KSB7Cj4gIAkJaTkxNV9m aXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50KGNzci0+ZndfcGF0aCwgMCk7Cj4gLQkJZ290byBvdXQ7 Cj4gKwkJcmV0dXJuOwo+ICAJfQo+ICAKPiAgCWlmICgoc3RlcHBpbmcgPT0gLUVOT0RBVEEpIHx8 IChzdWJzdGVwcGluZyA9PSAtRU5PREFUQSkpIHsKPiAgCQlEUk1fRVJST1IoIlVua25vd24gc3Rl cHBpbmcgaW5mbywgZmlybXdhcmUgbG9hZGluZyBmYWlsZWRcbiIpOwo+IC0JCWdvdG8gb3V0Owo+ ICsJCXJldHVybjsKPiAgCX0KPiAgCj4gIAkvKiBFeHRyYWN0IENTUyBIZWFkZXIgaW5mb3JtYXRp b24qLwo+IEBAIC0yOTgsNyArMjQ0LDcgQEAgc3RhdGljIHZvaWQgZmluaXNoX2Nzcl9sb2FkKGNv bnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpCj4gIAkJKGNzc19oZWFkZXIt PmhlYWRlcl9sZW4gKiA0KSkgewo+ICAJCURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdyb25nIENT UyBoZWFkZXIgbGVuZ3RoICV1IGJ5dGVzXG4iLAo+ICAJCQkoY3NzX2hlYWRlci0+aGVhZGVyX2xl biAqIDQpKTsKPiAtCQlnb3RvIG91dDsKPiArCQlyZXR1cm47Cj4gIAl9Cj4gIAlyZWFkY291bnQg Kz0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyKTsKPiAgCj4gQEAgLTMwOSw3ICsyNTUs NyBAQCBzdGF0aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpm dywgdm9pZCAqY29udGV4dCkKPiAgCQkocGFja2FnZV9oZWFkZXItPmhlYWRlcl9sZW4gKiA0KSkg ewo+ICAJCURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdyb25nIHBhY2thZ2UgaGVhZGVyIGxlbmd0 aCAldSBieXRlc1xuIiwKPiAgCQkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpOwo+ IC0JCWdvdG8gb3V0Owo+ICsJCXJldHVybjsKPiAgCX0KPiAgCXJlYWRjb3VudCArPSBzaXplb2Yo c3RydWN0IGludGVsX3BhY2thZ2VfaGVhZGVyKTsKPiAgCj4gQEAgLTMyOSw3ICsyNzUsNyBAQCBz dGF0aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9p ZCAqY29udGV4dCkKPiAgCX0KPiAgCWlmIChkbWNfb2Zmc2V0ID09IENTUl9ERUZBVUxUX0ZXX09G RlNFVCkgewo+ICAJCURSTV9FUlJPUigiRmlybXdhcmUgbm90IHN1cHBvcnRlZCBmb3IgJWMgc3Rl cHBpbmdcbiIsIHN0ZXBwaW5nKTsKPiAtCQlnb3RvIG91dDsKPiArCQlyZXR1cm47Cj4gIAl9Cj4g IAlyZWFkY291bnQgKz0gZG1jX29mZnNldDsKPiAgCj4gQEAgLTMzOCw3ICsyODQsNyBAQCBzdGF0 aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAq Y29udGV4dCkKPiAgCWlmIChzaXplb2Yoc3RydWN0IGludGVsX2RtY19oZWFkZXIpICE9IChkbWNf aGVhZGVyLT5oZWFkZXJfbGVuKSkgewo+ICAJCURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdyb25n IGRtYyBoZWFkZXIgbGVuZ3RoICV1IGJ5dGVzXG4iLAo+ICAJCQkJKGRtY19oZWFkZXItPmhlYWRl cl9sZW4pKTsKPiAtCQlnb3RvIG91dDsKPiArCQlyZXR1cm47Cj4gIAl9Cj4gIAlyZWFkY291bnQg Kz0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9kbWNfaGVhZGVyKTsKPiAgCj4gQEAgLTM0Niw3ICsyOTIs NyBAQCBzdGF0aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpm dywgdm9pZCAqY29udGV4dCkKPiAgCWlmIChkbWNfaGVhZGVyLT5tbWlvX2NvdW50ID4gQVJSQVlf U0laRShjc3ItPm1taW9hZGRyKSkgewo+ICAJCURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdyb25n IG1taW8gY291bnQgJXVcbiIsCj4gIAkJCQkJCWRtY19oZWFkZXItPm1taW9fY291bnQpOwo+IC0J CWdvdG8gb3V0Owo+ICsJCXJldHVybjsKPiAgCX0KPiAgCWNzci0+bW1pb19jb3VudCA9IGRtY19o ZWFkZXItPm1taW9fY291bnQ7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgZG1jX2hlYWRlci0+bW1pb19j b3VudDsgaSsrKSB7Cj4gQEAgLTM1NCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBmaW5pc2hfY3Ny X2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dCkKPiAgCQkJZG1j X2hlYWRlci0+bW1pb2FkZHJbaV0gPiBDU1JfTU1JT19FTkRfUkFOR0UpIHsKPiAgCQkJRFJNX0VS Uk9SKCIgRmlybXdhcmUgaGFzIHdyb25nIG1taW8gYWRkcmVzcyAweCV4XG4iLAo+ICAJCQkJCQlk bWNfaGVhZGVyLT5tbWlvYWRkcltpXSk7Cj4gLQkJCWdvdG8gb3V0Owo+ICsJCQlyZXR1cm47Cj4g IAkJfQo+ICAJCWNzci0+bW1pb2FkZHJbaV0gPSBkbWNfaGVhZGVyLT5tbWlvYWRkcltpXTsKPiAg CQljc3ItPm1taW9kYXRhW2ldID0gZG1jX2hlYWRlci0+bW1pb2RhdGFbaV07Cj4gQEAgLTM2NCwx NCArMzEwLDE0IEBAIHN0YXRpYyB2b2lkIGZpbmlzaF9jc3JfbG9hZChjb25zdCBzdHJ1Y3QgZmly bXdhcmUgKmZ3LCB2b2lkICpjb250ZXh0KQo+ICAJbmJ5dGVzID0gZG1jX2hlYWRlci0+Zndfc2l6 ZSAqIDQ7Cj4gIAlpZiAobmJ5dGVzID4gQ1NSX01BWF9GV19TSVpFKSB7Cj4gIAkJRFJNX0VSUk9S KCJDU1IgZmlybXdhcmUgdG9vIGJpZyAoJXUpIGJ5dGVzXG4iLCBuYnl0ZXMpOwo+IC0JCWdvdG8g b3V0Owo+ICsJCXJldHVybjsKPiAgCX0KPiAgCWNzci0+ZG1jX2Z3X3NpemUgPSBkbWNfaGVhZGVy LT5md19zaXplOwo+ICAKPiAgCWNzci0+ZG1jX3BheWxvYWQgPSBrbWFsbG9jKG5ieXRlcywgR0ZQ X0tFUk5FTCk7Cj4gIAlpZiAoIWNzci0+ZG1jX3BheWxvYWQpIHsKPiAgCQlEUk1fRVJST1IoIk1l bW9yeSBhbGxvY2F0aW9uIGZhaWxlZCBmb3IgZG1jIHBheWxvYWRcbiIpOwo+IC0JCWdvdG8gb3V0 Owo+ICsJCXJldHVybjsKPiAgCX0KPiAgCj4gIAlkbWNfcGF5bG9hZCA9IGNzci0+ZG1jX3BheWxv YWQ7Cj4gQEAgLTM4NywxNiArMzMzLDQyIEBAIHN0YXRpYyB2b2lkIGZpbmlzaF9jc3JfbG9hZChj b25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LCB2b2lkICpjb250ZXh0KQo+ICAKPiAgCS8qIGxvYWQg Y3NyIHByb2dyYW0gZHVyaW5nIHN5c3RlbSBib290LCBhcyBuZWVkZWQgZm9yIERDIHN0YXRlcyAq Lwo+ICAJaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShkZXYpOwo+IC0JZndfbG9hZGVkID0gdHJ1ZTsK PiArCWRldl9wcml2LT5jc3IuZG1jX3ByZXNlbnQgPSB0cnVlOwo+ICAKPiAgCURSTV9ERUJVR19L TVMoIkZpbmlzaGVkIGxvYWRpbmcgJXNcbiIsIGRldl9wcml2LT5jc3IuZndfcGF0aCk7Cj4gLW91 dDoKPiAtCWlmIChmd19sb2FkZWQpCj4gLQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYp Owo+IC0JZWxzZQo+IC0JCWludGVsX2Nzcl9sb2FkX3N0YXR1c19zZXQoZGV2X3ByaXYsIEZXX0ZB SUxFRCk7Cj4gK30KPiAgCj4gLQlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKPiArLyoqCj4gKyAqIGlu dGVsX2Rpc3BsYXlfbG9hZF9jc3IoKSAtIHdyaXRlIHRoZSBmaXJtd2FyZSBmcm9tIG1lbW9yeSB0 byByZWdpc3Rlci4KPiArICogQGRldjogZHJtIGRldmljZS4KPiArICoKPiArICogQ1NSIGZpcm13 YXJlIGlzIHJlYWQgZnJvbSBhIC5iaW4gZmlsZSBhbmQga2VwdCBpbiBpbnRlcm5hbCBtZW1vcnkg b25lIHRpbWUuCj4gKyAqIEV2ZXJ5dGltZSBkaXNwbGF5IGNvbWVzIGJhY2sgZnJvbSBsb3cgcG93 ZXIgc3RhdGUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8KPiArICogY29weSB0aGUgZmlybXdh cmUgdG8gcmVnaXN0ZXJzLgo+ICsgKi8KPiArCj4gK3ZvaWQgaW50ZWxfZGlzcGxheV9sb2FkX2Nz cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRl bF9jc3IgKmNzciA9ICZkZXZfcHJpdi0+Y3NyOwo+ICsJY29uc3Qgc3RydWN0IGZpcm13YXJlICpm dzsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKGRldl9wcml2LT5jc3IuZG1jX3ByZXNlbnQpCj4g KwkJaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShkZXZfcHJpdi0+ZGV2KTsKPiArCWVsc2Ugewo+ICsJ CS8qIENTUiBzdXBwb3J0ZWQgZm9yIHBsYXRmb3JtLCBsb2FkIGZpcm13YXJlICovCj4gKwkJcmV0 ID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGNzci0+ZndfcGF0aCwKPiArCQkJCSZkZXZfcHJpdi0+ ZGV2LT5wZGV2LT5kZXYpOwo+ICsKPiArCQlEUk1fREVCVUdfS01TKCJMb2FkaW5nICVkXG4iLCBy ZXQpOwo+ICsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCWk5MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9w cmludChjc3ItPmZ3X3BhdGgsIHJldCk7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwkJZmluaXNo X2Nzcl9sb2FkKGZ3LCBkZXZfcHJpdik7Cj4gKwkJcmVsZWFzZV9maXJtd2FyZShmdyk7Cj4gKwl9 Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC00MTAsNyArMzgyLDYgQEAgdm9pZCBpbnRlbF9jc3JfdWNv ZGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2Nz ciAqY3NyID0gJmRldl9wcml2LT5jc3I7Cj4gLQlpbnQgcmV0Owo+ICAKPiAgCWlmICghSEFTX0NT UihkZXYpKQo+ICAJCXJldHVybjsKPiBAQCAtNDE5LDI3ICszOTAsMTIgQEAgdm9pZCBpbnRlbF9j c3JfdWNvZGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCWNzci0+ZndfcGF0aCA9 IEk5MTVfQ1NSX1NLTDsKPiAgCWVsc2Ugewo+ICAJCURSTV9FUlJPUigiVW5leHBlY3RlZDogbm8g a25vd24gQ1NSIGZpcm13YXJlIGZvciBwbGF0Zm9ybVxuIik7Cj4gLQkJaW50ZWxfY3NyX2xvYWRf c3RhdHVzX3NldChkZXZfcHJpdiwgRldfRkFJTEVEKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+ ICAJRFJNX0RFQlVHX0tNUygiTG9hZGluZyAlc1xuIiwgY3NyLT5md19wYXRoKTsKPiAgCj4gLQkv Kgo+IC0JICogT2J0YWluIGEgcnVudGltZSBwbSByZWZlcmVuY2UsIHVudGlsIENTUiBpcyBsb2Fk ZWQsCj4gLQkgKiB0byBhdm9pZCBlbnRlcmluZyBydW50aW1lLXN1c3BlbmQuCj4gLQkgKi8KPiAt CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCj4gLQkvKiBDU1Igc3VwcG9ydGVk IGZvciBwbGF0Zm9ybSwgbG9hZCBmaXJtd2FyZSAqLwo+IC0JcmV0ID0gcmVxdWVzdF9maXJtd2Fy ZV9ub3dhaXQoVEhJU19NT0RVTEUsIHRydWUsIGNzci0+ZndfcGF0aCwKPiAtCQkJCSZkZXZfcHJp di0+ZGV2LT5wZGV2LT5kZXYsCj4gLQkJCQlHRlBfS0VSTkVMLCBkZXZfcHJpdiwKPiAtCQkJCWZp bmlzaF9jc3JfbG9hZCk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJaTkxNV9maXJtd2FyZV9sb2FkX2Vy cm9yX3ByaW50KGNzci0+ZndfcGF0aCwgcmV0KTsKPiAtCQlpbnRlbF9jc3JfbG9hZF9zdGF0dXNf c2V0KGRldl9wcml2LCBGV19GQUlMRUQpOwo+IC0JfQo+ICsJSU5JVF9XT1JLKCZjc3ItPmNzcl93 b3JrLCBpbnRlbF9jc3Jfc2V0ZGNfd29ya19mbik7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC00NTYs MTQgKzQxMiwxMyBAQCB2b2lkIGludGVsX2Nzcl91Y29kZV9maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAlpZiAoIUhBU19DU1IoZGV2KSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaW50ZWxf Y3NyX2xvYWRfc3RhdHVzX3NldChkZXZfcHJpdiwgRldfRkFJTEVEKTsKPiArCWZsdXNoX3dvcmso JmRldl9wcml2LT5jc3IuY3NyX3dvcmspOwo+ICsKPiAgCWtmcmVlKGRldl9wcml2LT5jc3IuZG1j X3BheWxvYWQpOwo+ICB9Cj4gIAo+ICB2b2lkIGFzc2VydF9jc3JfbG9hZGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JV0FSTihpbnRlbF9jc3JfbG9hZF9zdGF0 dXNfZ2V0KGRldl9wcml2KSAhPSBGV19MT0FERUQsCj4gLQkgICAgICJDU1IgaXMgbm90IGxvYWRl ZC5cbiIpOwo+ICAJV0FSTighSTkxNV9SRUFEKENTUl9QUk9HUkFNX0JBU0UpLAo+ICAJCQkJIkNT UiBwcm9ncmFtIHN0b3JhZ2Ugc3RhcnQgaXMgTlVMTFxuIik7Cj4gIAlXQVJOKCFJOTE1X1JFQUQo Q1NSX1NTUF9CQVNFKSwgIkNTUiBTU1AgQmFzZSBOb3QgZmluZVxuIik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBpbmRleCAzZjBhODkwLi5iNDI3NDA3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBAQCAtMTE2MywxMCArMTE2Myw3IEBAIHUzMiBza2xfcGxhbmVfY3RsX3Jv dGF0aW9uKHVuc2lnbmVkIGludCByb3RhdGlvbik7Cj4gIAo+ICAvKiBpbnRlbF9jc3IuYyAqLwo+ ICB2b2lkIGludGVsX2Nzcl91Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC1l bnVtIGNzcl9zdGF0ZSBpbnRlbF9jc3JfbG9hZF9zdGF0dXNfZ2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaW50ZWxfY3NyX2xvYWRfc3RhdHVzX3NldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJZW51bSBjc3Jfc3RhdGUgc3Rh dGUpOwo+IC12b2lkIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gK3ZvaWQgaW50ZWxfZGlzcGxheV9sb2FkX2NzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGludGVsX2Nzcl91Y29kZV9maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ICB2b2lkIGFzc2VydF9jc3JfbG9hZGVkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3Bt LmMKPiBpbmRleCAxYTQ1Mzg1Li42MWMwMThkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYwo+IEBAIC01MjcsNyArNTI3LDYgQEAgc3RhdGljIHZvaWQgYXNzZXJ0 X2Nhbl9kaXNhYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlp ZiAoZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnMuaW5pdGlhbGl6aW5nKQo+ICAJCXJldHVybjsKPiAg Cj4gLQlhc3NlcnRfY3NyX2xvYWRlZChkZXZfcHJpdik7Cj4gIAlXQVJOKCEoSTkxNV9SRUFEKERD X1NUQVRFX0VOKSAmIERDX1NUQVRFX0VOX1VQVE9fREM2KSwKPiAgCQkiREM2IGFscmVhZHkgcHJv Z3JhbW1lZCB0byBiZSBkaXNhYmxlZC5cbiIpOwo+ICB9Cj4gQEAgLTU2Myw2ICs1NjIsMzcgQEAg c3RhdGljIHZvaWQgc2tsX2Rpc2FibGVfZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCVBPU1RJTkdfUkVBRChEQ19TVEFURV9FTik7Cj4gIH0KPiAgCj4gK3ZvaWQgaW50 ZWxfY3NyX3NldGRjX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gKwkJY29udGFpbmVyX29mKF9f d29yaywgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIGNzci5jc3Jfd29yayk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3NyICpjc3IgPSAmZGV2X3ByaXYtPmNzcjsKPiArCj4gKwlpZiAoY3NyLT5kY19zdGF0 ZV9yZXEpIHsKPiArCQlpbnRlbF9kaXNwbGF5X2xvYWRfY3NyKGRldl9wcml2KTsKPiArCj4gKwkJ aWYgKElTX1NLWUxBS0UoZGV2X3ByaXYtPmRldikpCj4gKwkJCXNrbF9lbmFibGVfZGM2KGRldl9w cml2KTsKPiArCQllbHNlCj4gKwkJCWdlbjlfZW5hYmxlX2RjNShkZXZfcHJpdik7Cj4gKwl9IGVs c2Ugewo+ICsJCWlmIChJU19TS1lMQUtFKGRldl9wcml2LT5kZXYpKSB7Cj4gKwkJCXNrbF9kaXNh YmxlX2RjNihkZXZfcHJpdik7Cj4gKwkJCS8qCj4gKwkJCSAqIERESSBidWZmZXIgcHJvZ3JhbW1p bmcgdW5uZWNlc3NhcnkgZHVyaW5nCj4gKwkJCSAqIGRyaXZlci1sb2FkL3Jlc3VtZSBhcyBpdCdz IGFscmVhZHkgZG9uZSBkdXJpbmcKPiArCQkJICogbW9kZXNldCBpbml0aWFsaXphdGlvbiB0aGVu LiBJdCdzIGFsc28gaW52YWxpZAo+ICsJCQkgKiBoZXJlIGFzIGVuY29kZXIgbGlzdCBpcyBzdGls bCB1bmluaXRpYWxpemVkLgo+ICsJCQkgKi8KPiArCQkJaWYgKCFkZXZfcHJpdi0+cG93ZXJfZG9t YWlucy5pbml0aWFsaXppbmcpCj4gKwkJCQlpbnRlbF9wcmVwYXJlX2RkaShkZXZfcHJpdi0+ZGV2 KTsKPiArCQl9IGVsc2Ugewo+ICsJCQkJZ2VuOV9kaXNhYmxlX2RjNShkZXZfcHJpdik7Cj4gKwkJ fQo+ICsJfQo+ICt9Cj4gKwo+ICsKPiAgc3RhdGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJc3RydWN0IGk5MTVfcG93ZXJf d2VsbCAqcG93ZXJfd2VsbCwgYm9vbCBlbmFibGUpCj4gIHsKPiBAQCAtNjEyLDE4ICs2NDIsOCBA QCBzdGF0aWMgdm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJCQkJd2hlbiByZXF1ZXN0IGlzIHRvIGRpc2FibGUhXG4iKTsKPiAgCQkJ aWYgKChHRU45X0VOQUJMRV9EQzUoZGV2KSB8fCBTS0xfRU5BQkxFX0RDNihkZXYpKSAmJgo+ICAJ CQkJcG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7Cj4gLQkJCQlpZiAoU0tMX0VO QUJMRV9EQzYoZGV2KSkgewo+IC0JCQkJCXNrbF9kaXNhYmxlX2RjNihkZXZfcHJpdik7Cj4gLQkJ CQkJLyoKPiAtCQkJCQkgKiBEREkgYnVmZmVyIHByb2dyYW1taW5nIHVubmVjZXNzYXJ5IGR1cmlu ZyBkcml2ZXItbG9hZC9yZXN1bWUKPiAtCQkJCQkgKiBhcyBpdCdzIGFscmVhZHkgZG9uZSBkdXJp bmcgbW9kZXNldCBpbml0aWFsaXphdGlvbiB0aGVuLgo+IC0JCQkJCSAqIEl0J3MgYWxzbyBpbnZh bGlkIGhlcmUgYXMgZW5jb2RlciBsaXN0IGlzIHN0aWxsIHVuaW5pdGlhbGl6ZWQuCj4gLQkJCQkJ ICovCj4gLQkJCQkJaWYgKCFkZXZfcHJpdi0+cG93ZXJfZG9tYWlucy5pbml0aWFsaXppbmcpCj4g LQkJCQkJCWludGVsX3ByZXBhcmVfZGRpKGRldik7Cj4gLQkJCQl9IGVsc2Ugewo+IC0JCQkJCWdl bjlfZGlzYWJsZV9kYzUoZGV2X3ByaXYpOwo+IC0JCQkJfQo+ICsJCQkJZGV2X3ByaXYtPmNzci5k Y19zdGF0ZV9yZXEgPSBmYWxzZTsKPiArCQkJCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5jc3Iu Y3NyX3dvcmspOwo+ICAJCQl9Cj4gIAkJCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0RSSVZFUiwg dG1wIHwgcmVxX21hc2spOwo+ICAJCX0KPiBAQCAtNjQ0LDIxICs2NjQsOCBAQCBzdGF0aWMgdm9p ZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAKPiAgCQkJaWYgKChHRU45X0VOQUJMRV9EQzUoZGV2KSB8fCBTS0xfRU5BQkxFX0RDNihkZXYp KSAmJgo+ICAJCQkJcG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7Cj4gLQkJCQll bnVtIGNzcl9zdGF0ZSBzdGF0ZTsKPiAtCQkJCS8qIFRPRE86IHdhaXQgZm9yIGEgY29tcGxldGlv biBldmVudCBvcgo+IC0JCQkJICogc2ltaWxhciBoZXJlIGluc3RlYWQgb2YgYnVzeQo+IC0JCQkJ ICogd2FpdGluZyB1c2luZyB3YWl0X2ZvciBmdW5jdGlvbi4KPiAtCQkJCSAqLwo+IC0JCQkJd2Fp dF9mb3IoKHN0YXRlID0gaW50ZWxfY3NyX2xvYWRfc3RhdHVzX2dldChkZXZfcHJpdikpICE9Cj4g LQkJCQkJCUZXX1VOSU5JVElBTElaRUQsIDEwMDApOwo+IC0JCQkJaWYgKHN0YXRlICE9IEZXX0xP QURFRCkKPiAtCQkJCQlEUk1fRVJST1IoIkNTUiBmaXJtd2FyZSBub3QgcmVhZHkgKCVkKVxuIiwK PiAtCQkJCQkJCXN0YXRlKTsKPiAtCQkJCWVsc2UKPiAtCQkJCQlpZiAoU0tMX0VOQUJMRV9EQzYo ZGV2KSkKPiAtCQkJCQkJc2tsX2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+IC0JCQkJCWVsc2UKPiAt CQkJCQkJZ2VuOV9lbmFibGVfZGM1KGRldl9wcml2KTsKPiArCQkJCWRldl9wcml2LT5jc3IuZGNf c3RhdGVfcmVxID0gdHJ1ZTsKPiArCQkJCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5jc3IuY3Ny X3dvcmspOwo+ICAJCQl9Cj4gIAkJfQo+ICAJfQo+IC0tIAo+IDIuMC4yCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0 dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZnds bC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=