From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v2 1/6] drm/i915/guc: Make the GuC fw loading helper functions general Date: Tue, 5 Jul 2016 15:44:09 +0100 Message-ID: <577BC7B9.4020605@intel.com> References: <1467378945-14274-1-git-send-email-peter.antoine@intel.com> <1467378945-14274-2-git-send-email-peter.antoine@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 464CB6E2C9 for ; Tue, 5 Jul 2016 14:44:12 +0000 (UTC) In-Reply-To: <1467378945-14274-2-git-send-email-peter.antoine@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Peter Antoine , intel-gfx@lists.freedesktop.org Cc: Alex Dai , rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gMDEvMDcvMTYgMTQ6MTUsIFBldGVyIEFudG9pbmUgd3JvdGU6Cj4gUmVuYW1lIHNvbWUgb2Yg dGhlIEd1QyBmdyBsb2FkaW5nIGNvZGUgdG8gbWFrZSB0aGVtIG1vcmUgZ2VuZXJhbC4gV2UKPiB3 aWxsIHV0aWxpc2UgdGhlbSBmb3IgSHVDIGxvYWRpbmcgYXMgd2VsbC4KPiAgICAgICBzL2ludGVs X2d1Y19mdy9pbnRlbF91Y19mdy9nCj4gICAgICAgcy9HVUNfRklSTVdBUkUvVUNfRklSTVdBUkUv Zwo+Cj4gU3RydWN0IGludGVsX2d1Y19mdyBpcyByZW5hbWVkIHRvIGludGVsX3VjX2Z3LiBQcmVm aXggb2YgdHRzIG1lbWJlcnMsCj4gc3VjaCBhcyAnZ3VjJyBvciAnZ3VjX2Z3JyBlaXRoZXIgaXMg cmVuYW1lZCB0byAndWMnIG9yIHJlbW92ZWQgZm9yCj4gc2FtZSBwdXJwb3NlLgo+Cj4gdjI6IHJl YmFzZWQgb24gdG9wIG9mIG5pZ2h0bHkuCj4gICAgICByZWFwcGxpZWQgdGhlIHNlYXJjaC9yZXBs YWNlIGFzIHVwc3RyZWFtIGNvZGUgYXMgY2hhbmdlZC4KPgo+IFNpZ25lZC1vZmYtYnk6IEFsZXgg RGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBl dGVyLmFudG9pbmVAaW50ZWwuY29tPgoKVGhpcyBkaWRuJ3QgYXBwbHkgY2xlYW5seSwgc28gaXQg d2lsbCBuZWVkIHJlYmFzaW5nIChhZ2FpbiksIGJ1dCBpdCdzIApvbmx5IGEgc2ltcGxlIGNvbmZs aWN0IHdpdGggcmVjZW50IHBhdGNoZXMuIEFwYXJ0IGZyb20gdGhhdCwgaXRzIE9LIG5vdywgc286 CgpSZXZpZXdlZC1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KCih3 aGljaCB5b3UgY2FuIGNhcnJ5IG92ZXIgdG8gdGhlIHJlYmFzZWQgdmVyc2lvbikuCgo+IC0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgIDEyICstLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgICA0ICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgMzkgKysrKy0t LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8IDE0MiAr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNl cnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gaW5kZXggZjY2NDg4NC4uMzg4M2RmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gQEAgLTI0ODMsNyArMjQ4Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9h ZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBtLT5wcml2YXRlOwo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGUtPm1pbm9yLT5kZXYtPmRldl9wcml2YXRlOwo+ IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4g ICAJdTMyIHRtcCwgaTsKPgo+ICAgCWlmICghSEFTX0dVQ19VQ09ERShkZXZfcHJpdikpCj4gQEAg LTI0OTEsMTUgKzI0OTEsMTUgQEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPgo+ICAgCXNlcV9wcmludGYobSwgIkd1 QyBmaXJtd2FyZSBzdGF0dXM6XG4iKTsKPiAgIAlzZXFfcHJpbnRmKG0sICJcdHBhdGg6ICVzXG4i LAo+IC0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgpOwo+ICsJCWd1Y19mdy0+dWNfZndfcGF0aCk7Cj4g ICAJc2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1 c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+ICsJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7Cj4gICAJc2VxX3ByaW50ZihtLCAiXHRs b2FkOiAlc1xuIiwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndf bG9hZF9zdGF0dXMpKTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRf c3RhdHVzKSk7Cj4gICAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIHdhbnRlZDogJWQuJWRcbiIs Cj4gLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93 YW50ZWQpOwo+ICsJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5taW5vcl92ZXJf d2FudGVkKTsKPiAgIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVkXG4iLAo+ IC0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3Vu ZCk7Cj4gKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5k KTsKPiAgIAlzZXFfcHJpbnRmKG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRc biIsCj4gICAJCWd1Y19mdy0+aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7Cj4g ICAJc2VxX3ByaW50ZihtLCAiXHR1Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDM1NWI2 NDcuLjJiZmE4NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4gQEAgLTEwMzgsNyArMTAzOCw3IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4g ICAJdTMyIGRhdGFbM107Cj4KPiAtCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMg IT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4gKwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMg IT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAljdHggPSBkZXZf cHJpdi0+a2VybmVsX2NvbnRleHQ7Cj4gQEAgLTEwNjQsNyArMTA2NCw3IEBAIGludCBpbnRlbF9n dWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eDsKPiAgIAl1MzIgZGF0YVszXTsKPgo+IC0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19m d19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKPiArCWlmIChndWMtPmd1Y19m dy5sb2FkX3N0YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKQo+ICAgCQlyZXR1cm4gMDsKPgo+ ICAgCWN0eCA9IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuaAo+IGluZGV4IDNlM2U3NDMuLjAyYWRjZmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuaAo+IEBAIC05MCwyOSArOTAsMjkgQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7Cj4gICAJ dWludDY0X3Qgc3VibWlzc2lvbnNbSTkxNV9OVU1fRU5HSU5FU107Cj4gICB9Owo+Cj4gLWVudW0g aW50ZWxfZ3VjX2Z3X3N0YXR1cyB7Cj4gLQlHVUNfRklSTVdBUkVfRkFJTCA9IC0xLAo+IC0JR1VD X0ZJUk1XQVJFX05PTkUgPSAwLAo+IC0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCj4gLQlHVUNfRklS TVdBUkVfU1VDQ0VTUwo+ICtlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7Cj4gKwlVQ19GSVJNV0FS RV9GQUlMID0gLTEsCj4gKwlVQ19GSVJNV0FSRV9OT05FID0gMCwKPiArCVVDX0ZJUk1XQVJFX1BF TkRJTkcsCj4gKwlVQ19GSVJNV0FSRV9TVUNDRVNTCj4gICB9Owo+Cj4gICAvKgo+ICAgICogVGhp cyBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVkZWQgZHVyaW5nIHRoZSBw cm9jZXNzCj4gICAgKiBvZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRpbmcgdGhlIGZpcm13 YXJlIGltYWdlIGludG8gdGhlIEd1Qy4KPiAgICAqLwo+IC1zdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICoJCWd1Y19kZXY7Cj4gLQljb25zdCBjaGFyICoJCQlndWNf ZndfcGF0aDsKPiAtCXNpemVfdAkJCQlndWNfZndfc2l6ZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKPiAtCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNf ZndfZmV0Y2hfc3RhdHVzOwo+IC0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19sb2Fk X3N0YXR1czsKPiAtCj4gLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Cj4gLQl1aW50 MTZfdAkJCWd1Y19md19taW5vcl93YW50ZWQ7Cj4gLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9m b3VuZDsKPiAtCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX2ZvdW5kOwo+ICtzdHJ1Y3QgaW50ZWxf dWNfZncgewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKnVjX2RldjsKPiArCWNvbnN0IGNoYXIgKnVj X2Z3X3BhdGg7Cj4gKwlzaXplX3QgdWNfZndfc2l6ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICp1Y19md19vYmo7Cj4gKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9zdGF0 dXM7Cj4gKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBsb2FkX3N0YXR1czsKPiArCj4gKwl1aW50 MTZfdCBtYWpvcl92ZXJfd2FudGVkOwo+ICsJdWludDE2X3QgbWlub3JfdmVyX3dhbnRlZDsKPiAr CXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKPiArCXVpbnQxNl90IG1pbm9yX3Zlcl9mb3VuZDsK Pgo+ICAgCXVpbnQzMl90IGhlYWRlcl9zaXplOwo+ICAgCXVpbnQzMl90IGhlYWRlcl9vZmZzZXQ7 Cj4gQEAgLTEyMyw3ICsxMjMsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKPiAgIH07Cj4KPiAg IHN0cnVjdCBpbnRlbF9ndWMgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7Cj4gKwlz dHJ1Y3QgaW50ZWxfdWNfZncgZ3VjX2Z3Owo+ICAgCXVpbnQzMl90IGxvZ19mbGFnczsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbG9nX29iajsKPgo+IEBAIC0xNTIsOSArMTUyLDEw IEBAIHN0cnVjdCBpbnRlbF9ndWMgewo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+IC1leHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ICtleHRlcm4gY29u c3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMg c3RhdHVzKTsKPiAgIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gICBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4KPiAgIC8qIGk5MTVfZ3VjX3N1Ym1pc3Np b24uYyAqLwo+ICAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKPiBpbmRleCA0ZjYzMTFhLi4xNDI0YzQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYwo+IEBAIC02NiwxNiArNjYsMTYgQEAgTU9EVUxFX0ZJUk1XQVJFKEk5 MTVfU0tMX0dVQ19VQ09ERSk7Cj4gICBNT0RVTEVfRklSTVdBUkUoSTkxNV9CWFRfR1VDX1VDT0RF KTsKPgo+ICAgLyogVXNlci1mcmllbmRseSByZXByZXNlbnRhdGlvbiBvZiBhbiBlbnVtICovCj4g LWNvbnN0IGNoYXIgKmludGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19z dGF0dXMgc3RhdHVzKQo+ICtjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVt IGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCj4gICB7Cj4gICAJc3dpdGNoIChzdGF0dXMpIHsK PiAtCWNhc2UgR1VDX0ZJUk1XQVJFX0ZBSUw6Cj4gKwljYXNlIFVDX0ZJUk1XQVJFX0ZBSUw6Cj4g ICAJCXJldHVybiAiRkFJTCI7Cj4gLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgo+ICsJY2FzZSBV Q19GSVJNV0FSRV9OT05FOgo+ICAgCQlyZXR1cm4gIk5PTkUiOwo+IC0JY2FzZSBHVUNfRklSTVdB UkVfUEVORElORzoKPiArCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKPiAgIAkJcmV0dXJuICJQ RU5ESU5HIjsKPiAtCWNhc2UgR1VDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gKwljYXNlIFVDX0ZJUk1X QVJFX1NVQ0NFU1M6Cj4gICAJCXJldHVybiAiU1VDQ0VTUyI7Cj4gICAJZGVmYXVsdDoKPiAgIAkJ cmV0dXJuICJVTktOT1dOISI7Cj4gQEAgLTIzNyw4ICsyMzcsOCBAQCBzdGF0aWMgaW5saW5lIGJv b2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgICAqLwo+ICAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmZ3X29iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3Vj X2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmZ3X29iaiA9IGd1Y19mdy0+dWNfZndfb2JqOwo+ICAgCXVuc2lnbmVkIGxvbmcgb2Zmc2V0 Owo+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2cgPSBmd19vYmotPnBhZ2VzOwo+ICAgCXUzMiBzdGF0 dXMsIHJzYVtVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UXTsKPiBAQCAtMzEwLDE3ICszMTAsMTcg QEAgc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICAgKi8KPiAgIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3Vj X2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNf ZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGRldl9wcml2LT5kZXY7Cj4gICAJaW50IHJldDsKPgo+IC0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgZmFsc2UpOwo+ICsJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+dWNfZndfb2JqLCBmYWxz ZSk7Cj4gICAJaWYgKHJldCkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZh aWxlZCAlZFxuIiwgcmV0KTsKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAl9Cj4KPiAtCXJldCA9IGk5 MTVfZ2VtX29ial9nZ3R0X3BpbihndWNfZnctPmd1Y19md19vYmosIDAsIDApOwo+ICsJcmV0ID0g aTkxNV9nZW1fb2JqX2dndHRfcGluKGd1Y19mdy0+dWNfZndfb2JqLCAwLCAwKTsKPiAgIAlpZiAo cmV0KSB7Cj4gICAJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4g ICAJCXJldHVybiByZXQ7Cj4gQEAgLTM3Miw3ICszNzIsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29k ZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiBXZSBrZWVw IHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4gdW5w aW4gaXQKPiAgIAkgKiBub3cgdGhhdCBETUEgaGFzIGNvbXBsZXRlZCwgc28gaXQgZG9lc24ndCBj b250aW51ZSB0byB0YWtlIHVwIHNwYWNlLgo+ICAgCSAqLwo+IC0JaTkxNV9nZW1fb2JqZWN0X2dn dHRfdW5waW4oZ3VjX2Z3LT5ndWNfZndfb2JqKTsKPiArCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3Vu cGluKGd1Y19mdy0+dWNfZndfb2JqKTsKPgo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gQEAgLTQx MSwxNCArNDExLDE0IEBAIHN0YXRpYyBpbnQgaTkxNV9yZXNldF9ndWMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2 X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNf ZndfcGF0aDsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMu Z3VjX2Z3Owo+ICsJY29uc3QgY2hhciAqZndfcGF0aCA9IGd1Y19mdy0+dWNfZndfcGF0aDsKPiAg IAlpbnQgcmV0cmllcywgcmV0LCBlcnI7Cj4KPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncg c3RhdHVzOiBwYXRoICVzLCBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAgIAkJZndfcGF0aCwKPiAt CQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwK PiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMp KTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCj4g KwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwo+Cj4gICAJ LyogTG9hZGluZyBmb3JiaWRkZW4sIG9yIG5vIGZpcm13YXJlIHRvIGxvYWQ/ICovCj4gICAJaWYg KCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewo+IEBAIC00MzYsMjEgKzQzNiwyMSBAQCBpbnQg aW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJfQo+Cj4gICAJLyog RmV0Y2ggZmFpbGVkLCBvciBhbHJlYWR5IGZldGNoZWQgYnV0IGZhaWxlZCB0byBsb2FkPyAqLwo+ IC0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VT Uykgewo+ICsJaWYgKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IFVDX0ZJUk1XQVJFX1NVQ0NFU1Mp IHsKPiAgIAkJZXJyID0gLUVJTzsKPiAgIAkJZ290byBmYWlsOwo+IC0JfSBlbHNlIGlmIChndWNf ZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfRkFJTCkgewo+ICsJfSBlbHNl IGlmIChndWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpIHsKPiAgIAkJZXJy ID0gLUVOT0VYRUM7Cj4gICAJCWdvdG8gZmFpbDsKPiAgIAl9Cj4KPiAgIAlkaXJlY3RfaW50ZXJy dXB0c190b19ob3N0KGRldl9wcml2KTsKPgo+IC0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMg PSBHVUNfRklSTVdBUkVfUEVORElORzsKPiArCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9QRU5ESU5HOwo+Cj4gICAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogZmV0 Y2ggJXMsIGxvYWQgJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7Cj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3Vj X2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ bG9hZF9zdGF0dXMpKTsKPgo+ICAgCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXZf cHJpdik7Cj4gICAJaWYgKGVycikKPiBAQCAtNDg0LDExICs0ODQsMTEgQEAgaW50IGludGVsX2d1 Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJICJyZXRyeSAlZCBtb3JlIHRp bWUocylcbiIsIGVyciwgcmV0cmllcyk7Cj4gICAJfQo+Cj4gLQlndWNfZnctPmd1Y19md19sb2Fk X3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICsJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9 IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4KPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3Rh dHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNf cmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5sb2FkX3N0YXR1cykpOwo+Cj4gICAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNz aW9uKSB7Cj4gICAJCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKGRldl9wcml2KTsK PiBAQCAtNTAwLDggKzUwMCw4IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAlyZXR1cm4gMDsKPgo+ICAgZmFpbDoKPiAtCWlmIChndWNfZnctPmd1Y19m d19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVORElORykKPiAtCQlndWNfZnctPmd1Y19m d19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOwo+ICsJaWYgKGd1Y19mdy0+bG9hZF9z dGF0dXMgPT0gVUNfRklSTVdBUkVfUEVORElORykKPiArCQlndWNfZnctPmxvYWRfc3RhdHVzID0g VUNfRklSTVdBUkVfRkFJTDsKPgo+ICAgCWRpcmVjdF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3By aXYpOwo+ICAgCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7Cj4gQEAgLTU0 Niw3ICs1NDYsNyBAQCBmYWlsOgo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4KPiAtc3RhdGljIHZv aWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNf ZncgKmd1Y19mdykKPiArdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4gICAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKPiBAQCAt NTU1LDE2ICs1NTUsMTYgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiAgIAlpbnQgZXJyOwo+Cj4g ICAJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBm ZXRjaCBzdGF0dXMgJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3 LT5mZXRjaF9zdGF0dXMpKTsKPgo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGd1Y19m dy0+Z3VjX2Z3X3BhdGgsICZkZXYtPnBkZXYtPmRldik7Cj4gKwllcnIgPSByZXF1ZXN0X2Zpcm13 YXJlKCZmdywgdWNfZnctPnVjX2Z3X3BhdGgsICZkZXYtPnBkZXYtPmRldik7Cj4gICAJaWYgKGVy cikKPiAgIAkJZ290byBmYWlsOwo+ICAgCWlmICghZncpCj4gICAJCWdvdG8gZmFpbDsKPgo+ICAg CURSTV9ERUJVR19EUklWRVIoImZldGNoIEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBc biIsCj4gLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZncpOwo+ICsJCXVjX2Z3LT51Y19md19wYXRo LCBmdyk7Cj4KPiAgIAkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWlu aW5nIGJ1ZmZlciBjb250ZW50cyAqLwo+ICAgCWlmIChmdy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3Qg Z3VjX2Nzc19oZWFkZXIpKSB7Cj4gQEAgLTU3NSwzNiArNTc1LDM2IEBAIHN0YXRpYyB2b2lkIGd1 Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpn dWNfZncpCj4gICAJY3NzID0gKHN0cnVjdCBndWNfY3NzX2hlYWRlciAqKWZ3LT5kYXRhOwo+Cj4g ICAJLyogRmlybXdhcmUgYml0cyBhbHdheXMgc3RhcnQgZnJvbSBoZWFkZXIgKi8KPiAtCWd1Y19m dy0+aGVhZGVyX29mZnNldCA9IDA7Cj4gLQlndWNfZnctPmhlYWRlcl9zaXplID0gKGNzcy0+aGVh ZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCj4gKwl1Y19mdy0+aGVhZGVyX29m ZnNldCA9IDA7Cj4gKwl1Y19mdy0+aGVhZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAt IGNzcy0+bW9kdWx1c19zaXplX2R3IC0KPiAgIAkJY3NzLT5rZXlfc2l6ZV9kdyAtIGNzcy0+ZXhw b25lbnRfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKPgo+IC0JaWYgKGd1Y19mdy0+aGVhZGVyX3Np emUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKPiArCWlmICh1Y19mdy0+aGVh ZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKPiAgIAkJRFJNX0VS Uk9SKCJDU1MgaGVhZGVyIGRlZmluaXRpb24gbWlzbWF0Y2hcbiIpOwo+ICAgCQlnb3RvIGZhaWw7 Cj4gICAJfQo+Cj4gICAJLyogdGhlbiwgdUNvZGUgKi8KPiAtCWd1Y19mdy0+dWNvZGVfb2Zmc2V0 ID0gZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKPiAtCWd1Y19m dy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNp emVvZih1MzIpOwo+ICsJdWNfZnctPnVjb2RlX29mZnNldCA9IHVjX2Z3LT5oZWFkZXJfb2Zmc2V0 ICsgdWNfZnctPmhlYWRlcl9zaXplOwo+ICsJdWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXpl X2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKPgo+ICAgCS8qIG5vdyBS U0EgKi8KPiAgIAlpZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NP VU5UKSB7Cj4gICAJCURSTV9FUlJPUigiUlNBIGtleSBzaXplIGlzIGJhZFxuIik7Cj4gICAJCWdv dG8gZmFpbDsKPiAgIAl9Cj4gLQlndWNfZnctPnJzYV9vZmZzZXQgPSBndWNfZnctPnVjb2RlX29m ZnNldCArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKPiAtCWd1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtl eV9zaXplX2R3ICogc2l6ZW9mKHUzMik7Cj4gKwl1Y19mdy0+cnNhX29mZnNldCA9IHVjX2Z3LT51 Y29kZV9vZmZzZXQgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKPiArCXVjX2Z3LT5yc2Ffc2l6ZSA9IGNz cy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKPgo+ICAgCS8qIEF0IGxlYXN0LCBpdCBzaG91 bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRocmVlLiAqLwo+IC0J c2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemUgKyBndWNfZnct PnJzYV9zaXplOwo+ICsJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9z aXplICsgdWNfZnctPnJzYV9zaXplOwo+ICAgCWlmIChmdy0+c2l6ZSA8IHNpemUpIHsKPiAgIAkJ RFJNX0VSUk9SKCJNaXNzaW5nIGZpcm13YXJlIGNvbXBvbmVudHNcbiIpOwo+ICAgCQlnb3RvIGZh aWw7Cj4gICAJfQo+Cj4gICAJLyogSGVhZGVyIGFuZCB1Q29kZSB3aWxsIGJlIGxvYWRlZCB0byBX T1BDTS4gU2l6ZSBvZiB0aGUgdHdvLiAqLwo+IC0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUg KyBndWNfZnctPnVjb2RlX3NpemU7Cj4gKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNf ZnctPnVjb2RlX3NpemU7Cj4gICAJaWYgKHNpemUgPiBndWNfd29wY21fc2l6ZShkZXYtPmRldl9w cml2YXRlKSkgewo+ICAgCQlEUk1fRVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQg aW4gV09QQ01cbiIpOwo+ICAgCQlnb3RvIGZhaWw7Cj4gQEAgLTYxNiwyMSArNjE2LDIxIEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncpCj4gICAJICogVFdPIGJ5dGVzIGVhY2ggKGkuZS4gdTE2KSwgYWx0 aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBvZmZzZXRzIGFyZSBkZWZpbmVkCj4gICAJICogaW4gdGVy bXMgb2YgYnl0ZXMgKHU4KS4KPiAgIAkgKi8KPiAtCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5k ID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKPiAtCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2Zv dW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKPiArCXVjX2Z3LT5tYWpvcl92ZXJf Zm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2Owo+ICsJdWNfZnctPm1pbm9yX3Zlcl9m b3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7Cj4KPiAtCWlmIChndWNfZnctPmd1 Y19md19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQgfHwKPiAtCSAg ICBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA8IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRl ZCkgewo+ICsJaWYgKHVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgIT0gdWNfZnctPm1ham9yX3Zlcl93 YW50ZWQgfHwKPiArCSAgICB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kIDwgdWNfZnctPm1pbm9yX3Zl cl93YW50ZWQpIHsKPiAgIAkJRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwg cmVxdWlyZWQgJWQuJWRcbiIsCj4gLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNf ZnctPmd1Y19md19taW5vcl9mb3VuZCwKPiAtCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVk LCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOwo+ICsJCQl1Y19mdy0+bWFqb3JfdmVyX2Zv dW5kLCB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kLAo+ICsJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRl ZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwo+ICAgCQllcnIgPSAtRU5PRVhFQzsKPiAgIAkJ Z290byBmYWlsOwo+ICAgCX0KPgo+ICAgCURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZlcnNp b24gJWQuJWQgT0sgKG1pbmltdW0gJWQuJWQpXG4iLAo+IC0JCQlndWNfZnctPmd1Y19md19tYWpv cl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCj4gLQkJCWd1Y19mdy0+Z3VjX2Z3 X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKPiArCQkJdWNfZnct Pm1ham9yX3Zlcl9mb3VuZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKPiArCQkJdWNfZnctPm1h am9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKPgo+ICAgCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X2Zyb21fZGF0YShkZXYsIGZ3LT5kYXRhLCBmdy0+c2l6ZSk7Cj4gQEAgLTY0MCwzMSArNjQwLDMx IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCj4gICAJCWdvdG8gZmFpbDsKPiAgIAl9Cj4KPiAtCWd1 Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKPiAtCWd1Y19mdy0+Z3VjX2Z3X3NpemUgPSBmdy0+c2l6 ZTsKPiArCXVjX2Z3LT51Y19md19vYmogPSBvYmo7Cj4gKwl1Y19mdy0+dWNfZndfc2l6ZSA9IGZ3 LT5zaXplOwo+Cj4gICAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBTVUND RVNTLCBvYmogJXBcbiIsCj4gLQkJCWd1Y19mdy0+Z3VjX2Z3X29iaik7Cj4gKwkJCXVjX2Z3LT51 Y19md19vYmopOwo+Cj4gICAJcmVsZWFzZV9maXJtd2FyZShmdyk7Cj4gLQlndWNfZnctPmd1Y19m d19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKPiArCXVjX2Z3LT5mZXRjaF9z dGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICAgCXJldHVybjsKPgo+ICAgZmFpbDoKPiAg IAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncg JXAsIG9iaiAlcFxuIiwKPiAtCQllcnIsIGZ3LCBndWNfZnctPmd1Y19md19vYmopOwo+ICsJCWVy ciwgZncsIHVjX2Z3LT51Y19md19vYmopOwo+ICAgCURSTV9FUlJPUigiRmFpbGVkIHRvIGZldGNo IEd1QyBmaXJtd2FyZSBmcm9tICVzIChlcnJvciAlZClcbiIsCj4gLQkJICBndWNfZnctPmd1Y19m d19wYXRoLCBlcnIpOwo+ICsJCSAgdWNfZnctPnVjX2Z3X3BhdGgsIGVycik7Cj4KPiAgIAltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlvYmogPSBndWNfZnctPmd1Y19md19vYmo7 Cj4gKwlvYmogPSB1Y19mdy0+dWNfZndfb2JqOwo+ICAgCWlmIChvYmopCj4gICAJCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+IC0JZ3VjX2Z3LT5ndWNfZndfb2JqID0g TlVMTDsKPiArCXVjX2Z3LT51Y19md19vYmogPSBOVUxMOwo+ICAgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+Cj4gICAJcmVsZWFzZV9maXJtd2FyZShmdyk7CQkvKiBPSyBldmVu IGlmIGZ3IGlzIE5VTEwgKi8KPiAtCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19G SVJNV0FSRV9GQUlMOwo+ICsJdWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7 Cj4gICB9Cj4KPiAgIC8qKgo+IEBAIC02NzksNyArNjc5LDcgQEAgZmFpbDoKPiAgIHZvaWQgaW50 ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGlu dGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGlu dGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gICAJY29uc3QgY2hh ciAqZndfcGF0aDsKPgo+ICAgCS8qIEEgbmVnYXRpdmUgdmFsdWUgbWVhbnMgInVzZSBwbGF0Zm9y bSBkZWZhdWx0IiAqLwo+IEBAIC02OTIsMjAgKzY5MiwyMCBAQCB2b2lkIGludGVsX2d1Y19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWZ3X3BhdGggPSBOVUxMOwo+ICAgCX0gZWxz ZSBpZiAoSVNfU0tZTEFLRShkZXYpKSB7Cj4gICAJCWZ3X3BhdGggPSBJOTE1X1NLTF9HVUNfVUNP REU7Cj4gLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gNjsKPiAtCQlndWNfZnctPmd1 Y19md19taW5vcl93YW50ZWQgPSAxOwo+ICsJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IDY7 Cj4gKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gMTsKPiAgIAl9IGVsc2UgaWYgKElTX0JS T1hUT04oZGV2KSkgewo+ICAgCQlmd19wYXRoID0gSTkxNV9CWFRfR1VDX1VDT0RFOwo+IC0JCWd1 Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IDg7Cj4gLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jf d2FudGVkID0gNzsKPiArCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSA4Owo+ICsJCWd1Y19m dy0+bWlub3JfdmVyX3dhbnRlZCA9IDc7Cj4gICAJfSBlbHNlIHsKPiAgIAkJZndfcGF0aCA9ICIi OwkvKiB1bmtub3duIGRldmljZSAqLwo+ICAgCX0KPgo+IC0JZ3VjX2Z3LT5ndWNfZGV2ID0gZGV2 Owo+IC0JZ3VjX2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Cj4gLQlndWNfZnctPmd1Y19md19m ZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKPiAtCWd1Y19mdy0+Z3VjX2Z3X2xvYWRf c3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Cj4gKwlndWNfZnctPnVjX2RldiA9IGRldjsKPiAr CWd1Y19mdy0+dWNfZndfcGF0aCA9IGZ3X3BhdGg7Cj4gKwlndWNfZnctPmZldGNoX3N0YXR1cyA9 IFVDX0ZJUk1XQVJFX05PTkU7Cj4gKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVf Tk9ORTsKPgo+ICAgCS8qIEVhcmx5IChhbmQgc2lsZW50KSByZXR1cm4gaWYgR3VDIGxvYWRpbmcg aXMgZGlzYWJsZWQgKi8KPiAgIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQo+IEBAIC03 MTUsOSArNzE1LDkgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAgCWlmICgqZndfcGF0aCA9PSAnXDAnKQo+ICAgCQlyZXR1cm47Cj4KPiAtCWd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsJZ3VjX2Z3LT5m ZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICAgCURSTV9ERUJVR19EUklWRVIo Ikd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKPiAtCWd1Y19md19m ZXRjaChkZXYsIGd1Y19mdyk7Cj4gKwlpbnRlbF91Y19md19mZXRjaChkZXYsIGd1Y19mdyk7Cj4g ICAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwgb3IgU1VDQ0VTUyAqLwo+ICAgfQo+Cj4gQEAg LTcyOCwxNyArNzI4LDE3IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3Vj X2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNf Znc7Cj4KPiAgIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJZGlyZWN0X2lu dGVycnVwdHNfdG9faG9zdChkZXZfcHJpdik7Cj4gICAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNh YmxlKGRldl9wcml2KTsKPiAgIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwo+ Cj4gLQlpZiAoZ3VjX2Z3LT5ndWNfZndfb2JqKQo+IC0JCWRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlKCZndWNfZnctPmd1Y19md19vYmotPmJhc2UpOwo+IC0JZ3VjX2Z3LT5ndWNfZndfb2JqID0g TlVMTDsKPiArCWlmIChndWNfZnctPnVjX2Z3X29iaikKPiArCQlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZSgmZ3VjX2Z3LT51Y19md19vYmotPmJhc2UpOwo+ICsJZ3VjX2Z3LT51Y19md19vYmog PSBOVUxMOwo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+Cj4gLQlndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKPiArCWd1Y19mdy0+ ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKPiAgIH0KPgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==