From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff McGee Subject: Re: [PATCH 1/8] drm/i915/guc: Make the GuC fw loading helper functions general Date: Thu, 13 Oct 2016 08:04:43 -0700 Message-ID: <20161013150443.GC18646@jeffdesk> References: <1475520182-9224-1-git-send-email-anusha.srivatsa@intel.com> <1475520182-9224-2-git-send-email-anusha.srivatsa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D8616EAC5 for ; Thu, 13 Oct 2016 14:56:12 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1475520182-9224-2-git-send-email-anusha.srivatsa@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Anusha Srivatsa Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQtYnk6IEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29tPgoKT24gTW9uLCBP Y3QgMDMsIDIwMTYgYXQgMTE6NDI6NTVBTSAtMDcwMCwgQW51c2hhIFNyaXZhdHNhIHdyb3RlOgo+ IEZyb206IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+IAo+IFJlbmFt ZSBzb21lIG9mIHRoZSBHdUMgZncgbG9hZGluZyBjb2RlIHRvIG1ha2UgdGhlbSBtb3JlIGdlbmVy YWwuIFdlCj4gd2lsbCB1dGlsaXNlIHRoZW0gZm9yIEh1QyBsb2FkaW5nIGFzIHdlbGwuCj4gICAg ICBzL2ludGVsX2d1Y19mdy9pbnRlbF91Y19mdy9nCj4gICAgICBzL0dVQ19GSVJNV0FSRS9VQ19G SVJNV0FSRS9nCj4gCj4gU3RydWN0IGludGVsX2d1Y19mdyBpcyByZW5hbWVkIHRvIGludGVsX3Vj X2Z3LiBQcmVmaXggb2YgdHRzIG1lbWJlcnMsCj4gc3VjaCBhcyAnZ3VjJyBvciAnZ3VjX2Z3JyBl aXRoZXIgaXMgcmVuYW1lZCB0byAndWMnIG9yIHJlbW92ZWQgZm9yCj4gc2FtZSBwdXJwb3NlLgo+ IAo+IHYyOiByZWJhc2VkIG9uIHRvcCBvZiBuaWdodGx5Lgo+ICAgICByZWFwcGxpZWQgdGhlIHNl YXJjaC9yZXBsYWNlIGFzIHVwc3RyZWFtIGNvZGUgYXMgY2hhbmdlZC4KPiB2MzogcmViYXNlZCBh Z2FpbiBvbiBkcm0tbmlnaHRseS4KPiB2NDogcmVtb3ZlZCBHIGZyb20gbWVzc2FnZXMgaW4gc2hh cmVkIGZ3IGZldGNoIGZ1bmN0aW9uLgo+IHY1OiByZWJhc2VkLgo+IHY3OiByZWJhc2VkLgo+IHY4 OiByZWJhc2VkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNy aXZhdHNhQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVs LmNvbT4KPiBSZXZpZXdlZC1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwg IDEyICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAg IDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgICAgIHwgIDM5 ICsrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8 IDE1NiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDEw NiBpbnNlcnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiBpbmRleCA0ZmI5ZDgyLi40NDI1OGE4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjQxNiw3ICsyNDE2LDcgQEAgc3RhdGljIGludCBpOTE1 X2xsYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHN0YXRpYyBpbnQgaTkxNV9n dWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5w cml2YXRlKTsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3Vj Lmd1Y19mdzsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMu Z3VjX2Z3Owo+ICAJdTMyIHRtcCwgaTsKPiAgCj4gIAlpZiAoIUhBU19HVUNfVUNPREUoZGV2X3By aXYpKQo+IEBAIC0yNDI0LDE1ICsyNDI0LDE1IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9z dGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAo+ICAJc2VxX3By aW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpcbiIpOwo+ICAJc2VxX3ByaW50ZihtLCAiXHRw YXRoOiAlc1xuIiwKPiAtCQlndWNfZnctPmd1Y19md19wYXRoKTsKPiArCQlndWNfZnctPnVjX2Z3 X3BhdGgpOwo+ICAJc2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNcbiIsCj4gLQkJaW50ZWxfZ3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+ICsJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7Cj4gIAlzZXFfcHJpbnRm KG0sICJcdGxvYWQ6ICVzXG4iLAo+IC0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnct Pmd1Y19md19sb2FkX3N0YXR1cykpOwo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+bG9hZF9zdGF0dXMpKTsKPiAgCXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiB3YW50ZWQ6ICVk LiVkXG4iLAo+IC0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndf bWlub3Jfd2FudGVkKTsKPiArCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+bWlu b3JfdmVyX3dhbnRlZCk7Cj4gIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVk XG4iLAo+IC0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5v cl9mb3VuZCk7Cj4gKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVy X2ZvdW5kKTsKPiAgCXNlcV9wcmludGYobSwgIlx0aGVhZGVyOiBvZmZzZXQgaXMgJWQ7IHNpemUg PSAlZFxuIiwKPiAgCQlndWNfZnctPmhlYWRlcl9vZmZzZXQsIGd1Y19mdy0+aGVhZGVyX3NpemUp Owo+ICAJc2VxX3ByaW50ZihtLCAiXHR1Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDQz MzU4ZTEuLjRiOTI5NDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jCj4gQEAgLTEwNzIsNyArMTA3Miw3IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsK PiAgCXUzMiBkYXRhWzNdOwo+ICAKPiAtCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0 dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4gKwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0 dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAljdHggPSBk ZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7Cj4gQEAgLTEwOTgsNyArMTA5OCw3IEBAIGludCBpbnRl bF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4Owo+ICAJdTMyIGRhdGFbM107Cj4gIAo+IC0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1 Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKPiArCWlmIChndWMtPmd1 Y19mdy5sb2FkX3N0YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKQo+ICAJCXJldHVybiAwOwo+ ICAKPiAgCWN0eCA9IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAo+IGluZGV4IGIxYmE4NjkuLmIxMzRhNDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAo+IEBAIC05MSwyOSArOTEsMjkgQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7Cj4g IAl1aW50NjRfdCBzdWJtaXNzaW9uc1tJOTE1X05VTV9FTkdJTkVTXTsKPiAgfTsKPiAgCj4gLWVu dW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyB7Cj4gLQlHVUNfRklSTVdBUkVfRkFJTCA9IC0xLAo+IC0J R1VDX0ZJUk1XQVJFX05PTkUgPSAwLAo+IC0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCj4gLQlHVUNf RklSTVdBUkVfU1VDQ0VTUwo+ICtlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7Cj4gKwlVQ19GSVJN V0FSRV9GQUlMID0gLTEsCj4gKwlVQ19GSVJNV0FSRV9OT05FID0gMCwKPiArCVVDX0ZJUk1XQVJF X1BFTkRJTkcsCj4gKwlVQ19GSVJNV0FSRV9TVUNDRVNTCj4gIH07Cj4gIAo+ICAvKgo+ICAgKiBU aGlzIHN0cnVjdHVyZSBlbmNhcHN1bGF0ZXMgYWxsIHRoZSBkYXRhIG5lZWRlZCBkdXJpbmcgdGhl IHByb2Nlc3MKPiAgICogb2YgZmV0Y2hpbmcsIGNhY2hpbmcsIGFuZCBsb2FkaW5nIHRoZSBmaXJt d2FyZSBpbWFnZSBpbnRvIHRoZSBHdUMuCj4gICAqLwo+IC1zdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICoJCWd1Y19kZXY7Cj4gLQljb25zdCBjaGFyICoJCQlndWNf ZndfcGF0aDsKPiAtCXNpemVfdAkJCQlndWNfZndfc2l6ZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKPiAtCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNf ZndfZmV0Y2hfc3RhdHVzOwo+IC0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19sb2Fk X3N0YXR1czsKPiAtCj4gLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Cj4gLQl1aW50 MTZfdAkJCWd1Y19md19taW5vcl93YW50ZWQ7Cj4gLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9m b3VuZDsKPiAtCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX2ZvdW5kOwo+ICtzdHJ1Y3QgaW50ZWxf dWNfZncgewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKnVjX2RldjsKPiArCWNvbnN0IGNoYXIgKnVj X2Z3X3BhdGg7Cj4gKwlzaXplX3QgdWNfZndfc2l6ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICp1Y19md19vYmo7Cj4gKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9zdGF0 dXM7Cj4gKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBsb2FkX3N0YXR1czsKPiArCj4gKwl1aW50 MTZfdCBtYWpvcl92ZXJfd2FudGVkOwo+ICsJdWludDE2X3QgbWlub3JfdmVyX3dhbnRlZDsKPiAr CXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKPiArCXVpbnQxNl90IG1pbm9yX3Zlcl9mb3VuZDsK PiAgCj4gIAl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKPiAgCXVpbnQzMl90IGhlYWRlcl9vZmZzZXQ7 Cj4gQEAgLTEyNCw3ICsxMjQsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKPiAgfTsKPiAgCj4g IHN0cnVjdCBpbnRlbF9ndWMgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7Cj4gKwlz dHJ1Y3QgaW50ZWxfdWNfZncgZ3VjX2Z3Owo+ICAJdWludDMyX3QgbG9nX2ZsYWdzOwo+ICAJc3Ry dWN0IGk5MTVfdm1hICpsb2dfdm1hOwo+ICAKPiBAQCAtMTUyLDkgKzE1MiwxMCBAQCBzdHJ1Y3Qg aW50ZWxfZ3VjIHsKPiAgZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiAtZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVt IGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKTsKPiArZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVs X3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7Cj4gIGV4 dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGV4 dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArdm9p ZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxf dWNfZncgKnVjX2Z3KTsKPiAgCj4gIC8qIGk5MTVfZ3VjX3N1Ym1pc3Npb24uYyAqLwo+ICBpbnQg aTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+IGluZGV4IDdhY2U5 NmIuLjQ5MzI5NWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j Cj4gQEAgLTgxLDE2ICs4MSwxNiBAQCBNT0RVTEVfRklSTVdBUkUoSTkxNV9CWFRfR1VDX1VDT0RF KTsKPiAgTU9EVUxFX0ZJUk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09ERSk7Cj4gIAo+ICAvKiBVc2Vy LWZyaWVuZGx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGVudW0gKi8KPiAtY29uc3QgY2hhciAqaW50 ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpCj4g K2NvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3Rh dHVzIHN0YXR1cykKPiAgewo+ICAJc3dpdGNoIChzdGF0dXMpIHsKPiAtCWNhc2UgR1VDX0ZJUk1X QVJFX0ZBSUw6Cj4gKwljYXNlIFVDX0ZJUk1XQVJFX0ZBSUw6Cj4gIAkJcmV0dXJuICJGQUlMIjsK PiAtCWNhc2UgR1VDX0ZJUk1XQVJFX05PTkU6Cj4gKwljYXNlIFVDX0ZJUk1XQVJFX05PTkU6Cj4g IAkJcmV0dXJuICJOT05FIjsKPiAtCWNhc2UgR1VDX0ZJUk1XQVJFX1BFTkRJTkc6Cj4gKwljYXNl IFVDX0ZJUk1XQVJFX1BFTkRJTkc6Cj4gIAkJcmV0dXJuICJQRU5ESU5HIjsKPiAtCWNhc2UgR1VD X0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gKwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gIAkJcmV0 dXJuICJTVUNDRVNTIjsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuICJVTktOT1dOISI7Cj4gQEAg LTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIGludCBndWNfdWNvZGVf eGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgICBz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncg PSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gIAl1bnNpZ25lZCBsb25nIG9mZnNldDsKPiAgCXN0 cnVjdCBzZ190YWJsZSAqc2cgPSB2bWEtPnBhZ2VzOwo+ICAJdTMyIHN0YXR1cywgcnNhW1VPU19S U0FfU0NSQVRDSF9NQVhfQ09VTlRdOwo+IEBAIC0zNDYsMTggKzM0NiwxOCBAQCBzdGF0aWMgdTMy IGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgICov Cj4gIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYt Pmd1Yy5ndWNfZnc7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+ Z3VjLmd1Y19mdzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsK PiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJaW50IHJldDsKPiAgCj4gLQlyZXQgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT5ndWNfZndfb2JqLCBmYWxzZSk7 Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT51Y19m d19vYmosIGZhbHNlKTsKPiAgCWlmIChyZXQpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQt ZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKPiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiAt CXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihndWNfZnctPmd1Y19md19vYmosIE5VTEws IDAsIDAsIDApOwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGd1Y19mdy0+dWNf Zndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKPiAgCWlmIChJU19FUlIodm1hKSkgewo+ICAJCURSTV9E RUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKPiAgCQly ZXR1cm4gUFRSX0VSUih2bWEpOwo+IEBAIC00NDgsMTQgKzQ0OCwxNCBAQCBzdGF0aWMgaW50IGd1 Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIGludCBpbnRl bF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2d1 Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+IC0JY29uc3QgY2hhciAqZndf cGF0aCA9IGd1Y19mdy0+Z3VjX2Z3X3BhdGg7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19m dyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiArCWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBndWNf ZnctPnVjX2Z3X3BhdGg7Cj4gIAlpbnQgcmV0cmllcywgcmV0LCBlcnI7Cj4gIAo+ICAJRFJNX0RF QlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogcGF0aCAlcywgZmV0Y2ggJXMsIGxvYWQgJXNcbiIs Cj4gIAkJZndfcGF0aCwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNf ZndfZmV0Y2hfc3RhdHVzKSwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5n dWNfZndfbG9hZF9zdGF0dXMpKTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnct PmZldGNoX3N0YXR1cyksCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2Fk X3N0YXR1cykpOwo+ICAKPiAgCS8qIExvYWRpbmcgZm9yYmlkZGVuLCBvciBubyBmaXJtd2FyZSB0 byBsb2FkPyAqLwo+ICAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewo+IEBAIC00NzMs MjEgKzQ3MywyMSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAl9Cj4gIAo+ICAJLyogRmV0Y2ggZmFpbGVkLCBvciBhbHJlYWR5IGZldGNoZWQgYnV0IGZh aWxlZCB0byBsb2FkPyAqLwo+IC0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAhPSBH VUNfRklSTVdBUkVfU1VDQ0VTUykgewo+ICsJaWYgKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IFVD X0ZJUk1XQVJFX1NVQ0NFU1MpIHsKPiAgCQllcnIgPSAtRUlPOwo+ICAJCWdvdG8gZmFpbDsKPiAt CX0gZWxzZSBpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX0ZB SUwpIHsKPiArCX0gZWxzZSBpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9G QUlMKSB7Cj4gIAkJZXJyID0gLUVOT0VYRUM7Cj4gIAkJZ290byBmYWlsOwo+ICAJfQo+ICAKPiAg CWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwo+ICAKPiAtCWd1Y19mdy0+Z3VjX2Z3 X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gKwlndWNfZnctPmxvYWRfc3Rh dHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKPiAgCj4gIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMg Zncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKPiAtCQlpbnRlbF9ndWNfZndfc3Rh dHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKPiArCQlpbnRlbF91Y19md19z dGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwo+ICAKPiAgCWVyciA9IGk5MTVfZ3VjX3N1Ym1p c3Npb25faW5pdChkZXZfcHJpdik7Cj4gIAlpZiAoZXJyKQo+IEBAIC01MTksMTEgKzUxOSwxMSBA QCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCSAicmV0 cnkgJWQgbW9yZSB0aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwo+ICAJfQo+ICAKPiAtCWd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gKwlndWNfZnct PmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKPiAgCj4gIAlEUk1fREVCVUdfRFJJ VkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAtCQlpbnRlbF9ndWNf Zndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKPiAtCQlpbnRlbF9n dWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKPiArCQlpbnRl bF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCj4gKwkJaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwo+ICAKPiAgCWlmIChpOTE1LmVu YWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICAJCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5h YmxlKGRldl9wcml2KTsKPiBAQCAtNTM1LDggKzUzNSw4IEBAIGludCBpbnRlbF9ndWNfc2V0dXAo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJldHVybiAwOwo+ICAKPiAgZmFpbDoKPiAtCWlm IChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVORElORykKPiAt CQlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOwo+ICsJaWYg KGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfUEVORElORykKPiArCQlndWNfZnct PmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKPiAgCj4gIAlndWNfaW50ZXJydXB0c19y ZWxlYXNlKGRldl9wcml2KTsKPiAgCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJp dik7Cj4gQEAgLTU4MSw3ICs1ODEsNyBAQCBmYWlsOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiArdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICB7Cj4gIAlzdHJ1 Y3QgcGNpX2RldiAqcGRldiA9IGRldi0+cGRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7Cj4gQEAgLTU5MCwxNyArNTkwLDE3IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRj aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCj4g IAlzaXplX3Qgc2l6ZTsKPiAgCWludCBlcnI7Cj4gIAo+IC0JRFJNX0RFQlVHX0RSSVZFUigiYmVm b3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCj4gLQkJ aW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+ ICsJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IHVDIGZ3IGZl dGNoIHN0YXR1cyAlc1xuIiwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0 Y2hfc3RhdHVzKSk7Cj4gIAo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGd1Y19mdy0+ Z3VjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOwo+ICsJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncs IHVjX2Z3LT51Y19md19wYXRoLCAmcGRldi0+ZGV2KTsKPiAgCWlmIChlcnIpCj4gIAkJZ290byBm YWlsOwo+ICAJaWYgKCFmdykKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+IC0JRFJNX0RFQlVHX0RSSVZF UigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKPiAtCQlndWNfZnct Pmd1Y19md19wYXRoLCBmdyk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9t ICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCj4gKwkJdWNfZnctPnVjX2Z3X3BhdGgsIGZ3KTsKPiAg Cj4gIAkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZl ciBjb250ZW50cyAqLwo+ICAJaWYgKGZ3LT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hl YWRlcikpIHsKPiBAQCAtNjExLDM2ICs2MTEsMzYgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiAg CWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsKPiAgCj4gIAkvKiBGaXJt d2FyZSBiaXRzIGFsd2F5cyBzdGFydCBmcm9tIGhlYWRlciAqLwo+IC0JZ3VjX2Z3LT5oZWFkZXJf b2Zmc2V0ID0gMDsKPiAtCWd1Y19mdy0+aGVhZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9k dyAtIGNzcy0+bW9kdWx1c19zaXplX2R3IC0KPiArCXVjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsK PiArCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1 bHVzX3NpemVfZHcgLQo+ICAJCWNzcy0+a2V5X3NpemVfZHcgLSBjc3MtPmV4cG9uZW50X3NpemVf ZHcpICogc2l6ZW9mKHUzMik7Cj4gIAo+IC0JaWYgKGd1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6 ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKPiArCWlmICh1Y19mdy0+aGVhZGVyX3NpemUg IT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKPiAgCQlEUk1fTk9URSgiQ1NTIGhl YWRlciBkZWZpbml0aW9uIG1pc21hdGNoXG4iKTsKPiAgCQlnb3RvIGZhaWw7Cj4gIAl9Cj4gIAo+ ICAJLyogdGhlbiwgdUNvZGUgKi8KPiAtCWd1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gZ3VjX2Z3LT5o ZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKPiAtCWd1Y19mdy0+dWNvZGVfc2l6 ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwo+ ICsJdWNfZnctPnVjb2RlX29mZnNldCA9IHVjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgdWNfZnctPmhl YWRlcl9zaXplOwo+ICsJdWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5o ZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKPiAgCj4gIAkvKiBub3cgUlNBICovCj4gIAlp ZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UKSB7Cj4gIAkJ RFJNX05PVEUoIlJTQSBrZXkgc2l6ZSBpcyBiYWRcbiIpOwo+ICAJCWdvdG8gZmFpbDsKPiAgCX0K PiAtCWd1Y19mdy0+cnNhX29mZnNldCA9IGd1Y19mdy0+dWNvZGVfb2Zmc2V0ICsgZ3VjX2Z3LT51 Y29kZV9zaXplOwo+IC0JZ3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXpl b2YodTMyKTsKPiArCXVjX2Z3LT5yc2Ffb2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCArIHVj X2Z3LT51Y29kZV9zaXplOwo+ICsJdWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAq IHNpemVvZih1MzIpOwo+ICAKPiAgCS8qIEF0IGxlYXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIs IHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRocmVlLiAqLwo+IC0Jc2l6ZSA9IGd1Y19mdy0+ aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemUgKyBndWNfZnctPnJzYV9zaXplOwo+ICsJ c2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplICsgdWNfZnctPnJz YV9zaXplOwo+ICAJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewo+ICAJCURSTV9OT1RFKCJNaXNzaW5n IGZpcm13YXJlIGNvbXBvbmVudHNcbiIpOwo+ICAJCWdvdG8gZmFpbDsKPiAgCX0KPiAgCj4gIAkv KiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0 d28uICovCj4gLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6 ZTsKPiArCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKPiAg CWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUodG9faTkxNShkZXYpKSkgewo+ICAJCURSTV9OT1RF KCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdPUENNXG4iKTsKPiAgCQlnb3RvIGZh aWw7Cj4gQEAgLTY1MiwyMSArNjUyLDIxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIAkgKiBU V08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9pbnRlcnMgYW5kIG9mZnNl dHMgYXJlIGRlZmluZWQKPiAgCSAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCj4gIAkgKi8KPiAt CWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsK PiAtCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4 RkZGRjsKPiAtCj4gLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5n dWNfZndfbWFqb3Jfd2FudGVkIHx8Cj4gLQkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQg PCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpIHsKPiAtCQlEUk1fTk9URSgiR3VDIGZpcm13 YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAo+IC0JCQlndWNfZnctPmd1Y19m d19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCj4gLQkJCWd1Y19mdy0+ Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKPiArCXVj X2Z3LT5tYWpvcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2Owo+ICsJdWNf ZnctPm1pbm9yX3Zlcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7Cj4gKwo+ ICsJaWYgKHVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgIT0gdWNfZnctPm1ham9yX3Zlcl93YW50ZWQg fHwKPiArCSAgICB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kIDwgdWNfZnctPm1pbm9yX3Zlcl93YW50 ZWQpIHsKPiArCQlEUk1fTk9URSgidUMgZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQg JWQuJWRcbiIsCj4gKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJf Zm91bmQsCj4gKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCB1Y19mdy0+bWlub3JfdmVyX3dh bnRlZCk7Cj4gIAkJZXJyID0gLUVOT0VYRUM7Cj4gIAkJZ290byBmYWlsOwo+ICAJfQo+ICAKPiAg CURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZlcnNpb24gJWQuJWQgT0sgKG1pbmltdW0gJWQu JWQpXG4iLAo+IC0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndf bWlub3JfZm91bmQsCj4gLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5n dWNfZndfbWlub3Jfd2FudGVkKTsKPiArCQkJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNfZnct Pm1pbm9yX3Zlcl9mb3VuZCwKPiArCQkJdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5t aW5vcl92ZXJfd2FudGVkKTsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2Zyb21fZGF0YShkZXYsIGZ3LT5kYXRh LCBmdy0+c2l6ZSk7Cj4gQEAgLTY3NiwzMSArNjc2LDMxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19m ZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncp Cj4gIAkJZ290byBmYWlsOwo+ICAJfQo+ICAKPiAtCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsK PiAtCWd1Y19mdy0+Z3VjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKPiArCXVjX2Z3LT51Y19md19vYmog PSBvYmo7Cj4gKwl1Y19mdy0+dWNfZndfc2l6ZSA9IGZ3LT5zaXplOwo+ICAKPiAtCURSTV9ERUJV R19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4iLAo+IC0JCQln dWNfZnctPmd1Y19md19vYmopOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3Rh dHVzIFNVQ0NFU1MsIG9iaiAlcFxuIiwKPiArCQkJdWNfZnctPnVjX2Z3X29iaik7Cj4gIAo+ICAJ cmVsZWFzZV9maXJtd2FyZShmdyk7Cj4gLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBH VUNfRklSTVdBUkVfU1VDQ0VTUzsKPiArCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FS RV9TVUNDRVNTOwo+ICAJcmV0dXJuOwo+ICAKPiAgZmFpbDoKPiAtCURSTV9XQVJOKCJGYWlsZWQg dG8gZmV0Y2ggdmFsaWQgR3VDIGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVkKVxuIiwKPiAtCQkg Z3VjX2Z3LT5ndWNfZndfcGF0aCwgZXJyKTsKPiAtCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBm ZXRjaCBzdGF0dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAo+IC0JCWVyciwgZncs IGd1Y19mdy0+Z3VjX2Z3X29iaik7Cj4gKwlEUk1fV0FSTigiRmFpbGVkIHRvIGZldGNoIHZhbGlk IHVDIGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVkKVxuIiwKPiArCQkgdWNfZnctPnVjX2Z3X3Bh dGgsIGVycik7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJ1QyBmdyBmZXRjaCBzdGF0dXMgRkFJTDsg ZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAo+ICsJCWVyciwgZncsIHVjX2Z3LT51Y19md19vYmop Owo+ICAKPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCW9iaiA9IGd1Y19m dy0+Z3VjX2Z3X29iajsKPiArCW9iaiA9IHVjX2Z3LT51Y19md19vYmo7Cj4gIAlpZiAob2JqKQo+ ICAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAtCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5V TEw7Cj4gKwl1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCXJlbGVhc2VfZmlybXdhcmUoZncpOwkJLyogT0sgZXZlbiBp ZiBmdyBpcyBOVUxMICovCj4gLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklS TVdBUkVfRkFJTDsKPiArCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+ ICB9Cj4gIAo+ICAvKioKPiBAQCAtNzE1LDcgKzcxNSw3IEBAIGZhaWw6Cj4gIHZvaWQgaW50ZWxf Z3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2d1Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3 ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gIAljb25zdCBjaGFyICpmd19wYXRo Owo+ICAKPiAgCS8qIEEgbmVnYXRpdmUgdmFsdWUgbWVhbnMgInVzZSBwbGF0Zm9ybSBkZWZhdWx0 IiAqLwo+IEBAIC03MjgsMjQgKzcyOCwyNCBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAkJZndfcGF0aCA9IE5VTEw7Cj4gIAl9IGVsc2UgaWYgKElTX1NL WUxBS0UoZGV2KSkgewo+ICAJCWZ3X3BhdGggPSBJOTE1X1NLTF9HVUNfVUNPREU7Cj4gLQkJZ3Vj X2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwo+IC0JCWd1Y19mdy0+Z3Vj X2Z3X21pbm9yX3dhbnRlZCA9IFNLTF9GV19NSU5PUjsKPiArCQlndWNfZnctPm1ham9yX3Zlcl93 YW50ZWQgPSBTS0xfRldfTUFKT1I7Cj4gKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tM X0ZXX01JTk9SOwo+ICAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldikpIHsKPiAgCQlmd19wYXRo ID0gSTkxNV9CWFRfR1VDX1VDT0RFOwo+IC0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9 IEJYVF9GV19NQUpPUjsKPiAtCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBCWFRfRldf TUlOT1I7Cj4gKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gQlhUX0ZXX01BSk9SOwo+ICsJ CWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKPiAgCX0gZWxzZSBpZiAo SVNfS0FCWUxBS0UoZGV2KSkgewo+ICAJCWZ3X3BhdGggPSBJOTE1X0tCTF9HVUNfVUNPREU7Cj4g LQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gS0JMX0ZXX01BSk9SOwo+IC0JCWd1Y19m dy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IEtCTF9GV19NSU5PUjsKPiArCQlndWNfZnctPm1ham9y X3Zlcl93YW50ZWQgPSBLQkxfRldfTUFKT1I7Cj4gKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVk ID0gS0JMX0ZXX01JTk9SOwo+ICAJfSBlbHNlIHsKPiAgCQlmd19wYXRoID0gIiI7CS8qIHVua25v d24gZGV2aWNlICovCj4gIAl9Cj4gIAo+IC0JZ3VjX2Z3LT5ndWNfZGV2ID0gZGV2Owo+IC0JZ3Vj X2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Cj4gLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0 dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKPiAtCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0g R1VDX0ZJUk1XQVJFX05PTkU7Cj4gKwlndWNfZnctPnVjX2RldiA9IGRldjsKPiArCWd1Y19mdy0+ dWNfZndfcGF0aCA9IGZ3X3BhdGg7Cj4gKwlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1X QVJFX05PTkU7Cj4gKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKPiAg Cj4gIAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRpc2Fi bGVkICovCj4gIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQo+IEBAIC03NTUsOSArNzU1 LDkgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaWYg KCpmd19wYXRoID09ICdcMCcpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWd1Y19mdy0+Z3VjX2Z3X2Zl dGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsJZ3VjX2Z3LT5mZXRjaF9zdGF0 dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZpcm13 YXJlIHBlbmRpbmcsIHBhdGggJXNcbiIsIGZ3X3BhdGgpOwo+IC0JZ3VjX2Z3X2ZldGNoKGRldiwg Z3VjX2Z3KTsKPiArCWludGVsX3VjX2Z3X2ZldGNoKGRldiwgZ3VjX2Z3KTsKPiAgCS8qIHN0YXR1 cyBtdXN0IG5vdyBiZSBGQUlMIG9yIFNVQ0NFU1MgKi8KPiAgfQo+ICAKPiBAQCAtNzY4LDE3ICs3 NjgsMTcgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB2 b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0cnVjdCBp bnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiArCXN0cnVjdCBp bnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICAKPiAgCW11dGV4 X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2 X3ByaXYpOwo+ICAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKPiAgCWk5 MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKGd1Y19mdy0+Z3Vj X2Z3X29iaikKPiAtCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+Z3VjX2Z3X29iaik7Cj4g LQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOwo+ICsJaWYgKGd1Y19mdy0+dWNfZndfb2JqKQo+ ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT51Y19md19vYmopOwo+ICsJZ3VjX2Z3LT51 Y19md19vYmogPSBOVUxMOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g IAo+IC0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Cj4g KwlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gIH0KPiAtLSAKPiAy LjcuNAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK