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: Wed, 9 Nov 2016 12:42:42 -0800 Message-ID: <20161109204242.GV18646@jeffdesk> References: <1478717497-4485-1-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 143B86E729 for ; Wed, 9 Nov 2016 20:32:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1478717497-4485-1-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, Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org V2hlbiB1cGRhdGluZyBhIHBhdGNoIHNldCBvbiB0aGUgbWFpbGluZyBsaXN0IHdpdGggbmV3IHJl dmlzaW9ucwppdCBpcyBwcmVmZXJyZWQgdG8gc2VuZCB0aG9zZSBuZXcgcGF0Y2hlcyBhcyBhIHJl cGx5IHRvIHRoZSBwYXRjaApiZWluZyByZXZpc2VkIGFuZCBhbHNvIHRvIGluY2x1ZGUgdGhlIFYy LCBWMywgZXRjLiBpbiB0aGUgc3ViamVjdC4KCklmIHlvdSBoYXZlIG1hc3NpdmUgY2hhbmdlcyB0 aGVuIGl0IGlzIE9LIHRvIHN1Ym1pdCBhIG5ldyBzZXQgYnV0Cml0IGhlbHBzIHRvIGluY2x1ZGUg Y292ZXIgbGV0dGVyIGFuZCB2ZXJzaW9uIGl0cyBzdWJqZWN0IGFzIGFib3ZlCnRvIGhlbHAgZGlz dGlucXVpc2ggZnJvbSBwcmV2aW91cyBzZXRzLgoKTG9vayB0aHJvdWdoIHRoZSBtYWlsaW5nIGxp c3QgYW5kIHlvdSB3aWxsIHNlZSBleGFtcGxlcyBvZiBib3RoCnNjZW5hcmlvcy4KCkkgdGhpbmsg dGhlIHByb3RvY29sIGlzIGFsc28gdGhhdCBpZiB5b3UgcmV2aXNlIGEgcGF0Y2ggaGVhdmlseQp0 aGVuIHlvdSBjYW5ub3QgY2FycnkgdGhlIHItYiB0YWdzIGdpdmVuIG9uIHRoZSBlYXJsaWVyIHBh dGNoIGJ1dApyYXRoZXIgeW91IHNob3VsZCBnZXQgdGhvc2UgcGVvcGxlIHRvIHJlLXJldmlldy4K CkRhbmllbCAtIHRoZXNlIGJlc3QgcHJhY3RpY2VzIGFyZSByZWNvcmRlZCBzb21ld2hlcmUsIHJp Z2h0PwoKSmVmZgoKT24gV2VkLCBOb3YgMDksIDIwMTYgYXQgMTA6NTE6MzBBTSAtMDgwMCwgQW51 c2hhIFNyaXZhdHNhIHdyb3RlOgo+IEZyb206IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVA aW50ZWwuY29tPgo+IAo+IFJlbmFtZSBzb21lIG9mIHRoZSBHdUMgZncgbG9hZGluZyBjb2RlIHRv IG1ha2UgdGhlbSBtb3JlIGdlbmVyYWwuIFdlCj4gd2lsbCB1dGlsaXNlIHRoZW0gZm9yIEh1QyBs b2FkaW5nIGFzIHdlbGwuCj4gICAgICBzL2ludGVsX2d1Y19mdy9pbnRlbF91Y19mdy9nCj4gICAg ICBzL0dVQ19GSVJNV0FSRS9VQ19GSVJNV0FSRS9nCj4gCj4gU3RydWN0IGludGVsX2d1Y19mdyBp cyByZW5hbWVkIHRvIGludGVsX3VjX2Z3LiBQcmVmaXggb2YgdHRzIG1lbWJlcnMsCj4gc3VjaCBh cyAnZ3VjJyBvciAnZ3VjX2Z3JyBlaXRoZXIgaXMgcmVuYW1lZCB0byAndWMnIG9yIHJlbW92ZWQg Zm9yCj4gc2FtZSBwdXJwb3NlLgo+IAo+IHYyOiByZWJhc2VkIG9uIHRvcCBvZiBuaWdodGx5Lgo+ ICAgICByZWFwcGxpZWQgdGhlIHNlYXJjaC9yZXBsYWNlIGFzIHVwc3RyZWFtIGNvZGUgYXMgY2hh bmdlZC4KPiB2MzogcmViYXNlZCBhZ2FpbiBvbiBkcm0tbmlnaHRseS4KPiB2NDogcmVtb3ZlZCBH IGZyb20gbWVzc2FnZXMgaW4gc2hhcmVkIGZ3IGZldGNoIGZ1bmN0aW9uLgo+IHY1OiByZWJhc2Vk Lgo+IHY3OiByZWJhc2VkLgo+IHY4OiByZWJhc2VkLgo+IHY5OiByZWJhc2VkLgo+IHYxMDogcmVi YXNlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRz YUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+ Cj4gUmV2aWV3ZWQtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4g UmV2aWV3ZWQtYnk6IEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29tPgo+IFJldmlld2Vk LWJ5OiBDYXJsb3MgU2FudGEgPGNhcmxvcy5zYW50YUBpbnRlbC5jb20+Cj4gVGVzdGVkLWJ5OiBD YXJsb3MgU2FudGEgPGNhcmxvcy5zYW50YUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAxMiArLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAzOSArKysrLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgICAgfCAxNTYgKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMTA1IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggYjY4 MWQ0Mi4uN2UyMDZkZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAg LTIzNTMsNyArMjM1Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sbGMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQo+ICBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gLQlzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gKwlzdHJ1Y3QgaW50 ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiAgCXUzMiB0bXAsIGk7 Cj4gIAo+ICAJaWYgKCFIQVNfR1VDX1VDT0RFKGRldl9wcml2KSkKPiBAQCAtMjM2MSwxNSArMjM2 MSwxNSBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQo+ICAKPiAgCXNlcV9wcmludGYobSwgIkd1QyBmaXJtd2FyZSBz dGF0dXM6XG4iKTsKPiAgCXNlcV9wcmludGYobSwgIlx0cGF0aDogJXNcbiIsCj4gLQkJZ3VjX2Z3 LT5ndWNfZndfcGF0aCk7Cj4gKwkJZ3VjX2Z3LT51Y19md19wYXRoKTsKPiAgCXNlcV9wcmludGYo bSwgIlx0ZmV0Y2g6ICVzXG4iLAo+IC0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnct Pmd1Y19md19mZXRjaF9zdGF0dXMpKTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmZldGNoX3N0YXR1cykpOwo+ICAJc2VxX3ByaW50ZihtLCAiXHRsb2FkOiAlc1xuIiwKPiAt CQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsK PiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4gIAlz ZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2FudGVkOiAlZC4lZFxuIiwKPiAtCQlndWNfZnctPmd1 Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7Cj4gKwkJZ3Vj X2Z3LT5tYWpvcl92ZXJfd2FudGVkLCBndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwo+ICAJc2Vx X3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKPiAtCQlndWNfZnctPmd1Y19m d19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQpOwo+ICsJCWd1Y19mdy0+ bWFqb3JfdmVyX2ZvdW5kLCBndWNfZnctPm1pbm9yX3Zlcl9mb3VuZCk7Cj4gIAlzZXFfcHJpbnRm KG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCj4gIAkJZ3VjX2Z3LT5o ZWFkZXJfb2Zmc2V0LCBndWNfZnctPmhlYWRlcl9zaXplKTsKPiAgCXNlcV9wcmludGYobSwgIlx0 dUNvZGU6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCA2NjZkYWI3Li5mYjU5ZTQ0IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC0xNTcwLDcg KzE1NzAsNyBAQCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gIAl1MzIgZGF0YVszXTsKPiAgCj4g LQlpZiAoZ3VjLT5ndWNfZncuZ3VjX2Z3X2xvYWRfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUND RVNTKQo+ICsJaWYgKGd1Yy0+Z3VjX2Z3LmxvYWRfc3RhdHVzICE9IFVDX0ZJUk1XQVJFX1NVQ0NF U1MpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRl dl9wcml2KTsKPiBAQCAtMTU5OCw3ICsxNTk4LDcgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4g IAl1MzIgZGF0YVszXTsKPiAgCj4gLQlpZiAoZ3VjLT5ndWNfZncuZ3VjX2Z3X2xvYWRfc3RhdHVz ICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQo+ICsJaWYgKGd1Yy0+Z3VjX2Z3LmxvYWRfc3RhdHVz ICE9IFVDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKGk5MTUu Z3VjX2xvZ19sZXZlbCA+PSAwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gaW5kZXggMDA1 MzI1OC4uNmRjMzI4ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gQEAgLTkxLDI5 ICs5MSwyOSBAQCBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKPiAgCXVpbnQ2NF90IHN1Ym1pc3Np b25zW0k5MTVfTlVNX0VOR0lORVNdOwo+ICB9Owo+ICAKPiAtZW51bSBpbnRlbF9ndWNfZndfc3Rh dHVzIHsKPiAtCUdVQ19GSVJNV0FSRV9GQUlMID0gLTEsCj4gLQlHVUNfRklSTVdBUkVfTk9ORSA9 IDAsCj4gLQlHVUNfRklSTVdBUkVfUEVORElORywKPiAtCUdVQ19GSVJNV0FSRV9TVUNDRVNTCj4g K2VudW0gaW50ZWxfdWNfZndfc3RhdHVzIHsKPiArCVVDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKPiAr CVVDX0ZJUk1XQVJFX05PTkUgPSAwLAo+ICsJVUNfRklSTVdBUkVfUEVORElORywKPiArCVVDX0ZJ Uk1XQVJFX1NVQ0NFU1MKPiAgfTsKPiAgCj4gIC8qCj4gICAqIFRoaXMgc3RydWN0dXJlIGVuY2Fw c3VsYXRlcyBhbGwgdGhlIGRhdGEgbmVlZGVkIGR1cmluZyB0aGUgcHJvY2Vzcwo+ICAgKiBvZiBm ZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRpbmcgdGhlIGZpcm13YXJlIGltYWdlIGludG8gdGhl IEd1Qy4KPiAgICovCj4gLXN0cnVjdCBpbnRlbF9ndWNfZncgewo+IC0Jc3RydWN0IGRybV9kZXZp Y2UgKgkJZ3VjX2RldjsKPiAtCWNvbnN0IGNoYXIgKgkJCWd1Y19md19wYXRoOwo+IC0Jc2l6ZV90 CQkJCWd1Y19md19zaXplOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKglndWNfZndf b2JqOwo+IC0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19mZXRjaF9zdGF0dXM7Cj4g LQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2xvYWRfc3RhdHVzOwo+IC0KPiAtCXVp bnQxNl90CQkJZ3VjX2Z3X21ham9yX3dhbnRlZDsKPiAtCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9y X3dhbnRlZDsKPiAtCXVpbnQxNl90CQkJZ3VjX2Z3X21ham9yX2ZvdW5kOwo+IC0JdWludDE2X3QJ CQlndWNfZndfbWlub3JfZm91bmQ7Cj4gK3N0cnVjdCBpbnRlbF91Y19mdyB7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqdWNfZGV2Owo+ICsJY29uc3QgY2hhciAqdWNfZndfcGF0aDsKPiArCXNpemVf dCB1Y19md19zaXplOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnVjX2Z3X29iajsK PiArCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGZldGNoX3N0YXR1czsKPiArCWVudW0gaW50ZWxf dWNfZndfc3RhdHVzIGxvYWRfc3RhdHVzOwo+ICsKPiArCXVpbnQxNl90IG1ham9yX3Zlcl93YW50 ZWQ7Cj4gKwl1aW50MTZfdCBtaW5vcl92ZXJfd2FudGVkOwo+ICsJdWludDE2X3QgbWFqb3JfdmVy X2ZvdW5kOwo+ICsJdWludDE2X3QgbWlub3JfdmVyX2ZvdW5kOwo+ICAKPiAgCXVpbnQzMl90IGhl YWRlcl9zaXplOwo+ICAJdWludDMyX3QgaGVhZGVyX29mZnNldDsKPiBAQCAtMTQwLDcgKzE0MCw3 IEBAIHN0cnVjdCBpbnRlbF9ndWNfbG9nIHsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9ndWMg ewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Z3VjX2Z3Owo+ICAJc3RydWN0IGludGVsX2d1Y19sb2cgbG9nOwo+ICAKPiAgCS8qIEd1QzJIb3N0 IGludGVycnVwdCByZWxhdGVkIHN0YXRlICovCj4gQEAgLTE3Myw5ICsxNzMsMTAgQEAgc3RydWN0 IGludGVsX2d1YyB7Cj4gIGV4dGVybiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ICBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiAgZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4gLWV4dGVybiBjb25zdCBjaGFyICppbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZW51 bSBpbnRlbF9ndWNfZndfc3RhdHVzIHN0YXR1cyk7Cj4gK2V4dGVybiBjb25zdCBjaGFyICppbnRl bF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ICBl eHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBl eHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3Zv aWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVs X3VjX2Z3ICp1Y19mdyk7Cj4gIAo+ICAvKiBpOTE1X2d1Y19zdWJtaXNzaW9uLmMgKi8KPiAgaW50 IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBpbmRleCAxYWE4 NTIzLi42NjgzYTg4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2FkZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIu Ywo+IEBAIC04MSwxNiArODEsMTYgQEAgTU9EVUxFX0ZJUk1XQVJFKEk5MTVfQlhUX0dVQ19VQ09E RSk7Cj4gIE1PRFVMRV9GSVJNV0FSRShJOTE1X0tCTF9HVUNfVUNPREUpOwo+ICAKPiAgLyogVXNl ci1mcmllbmRseSByZXByZXNlbnRhdGlvbiBvZiBhbiBlbnVtICovCj4gLWNvbnN0IGNoYXIgKmlu dGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKQo+ ICtjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0 YXR1cyBzdGF0dXMpCj4gIHsKPiAgCXN3aXRjaCAoc3RhdHVzKSB7Cj4gLQljYXNlIEdVQ19GSVJN V0FSRV9GQUlMOgo+ICsJY2FzZSBVQ19GSVJNV0FSRV9GQUlMOgo+ICAJCXJldHVybiAiRkFJTCI7 Cj4gLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgo+ICsJY2FzZSBVQ19GSVJNV0FSRV9OT05FOgo+ ICAJCXJldHVybiAiTk9ORSI7Cj4gLQljYXNlIEdVQ19GSVJNV0FSRV9QRU5ESU5HOgo+ICsJY2Fz ZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgo+ICAJCXJldHVybiAiUEVORElORyI7Cj4gLQljYXNlIEdV Q19GSVJNV0FSRV9TVUNDRVNTOgo+ICsJY2FzZSBVQ19GSVJNV0FSRV9TVUNDRVNTOgo+ICAJCXJl dHVybiAiU1VDQ0VTUyI7Cj4gIAlkZWZhdWx0Ogo+ICAJCXJldHVybiAiVU5LTk9XTiEiOwo+IEBA IC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGd1Y191Y29kZV9yZXNwb25zZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyBpbnQgZ3VjX3Vjb2Rl X3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAg c3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19m dyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4gIAlz dHJ1Y3Qgc2dfdGFibGUgKnNnID0gdm1hLT5wYWdlczsKPiAgCXUzMiBzdGF0dXMsIHJzYVtVT1Nf UlNBX1NDUkFUQ0hfTUFYX0NPVU5UXTsKPiBAQCAtMzUwLDE3ICszNTAsMTcgQEAgc3RhdGljIHUz MiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAq Lwo+ICBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2 LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYt Pmd1Yy5ndWNfZnc7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCWludCByZXQ7Cj4gIAo+ IC0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+Z3VjX2Z3 X29iaiwgZmFsc2UpOwo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KGd1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJRFJNX0RFQlVH X0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gIAkJcmV0dXJuIHJldDsK PiAgCX0KPiAgCj4gLQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oZ3VjX2Z3LT5ndWNf Zndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKPiArCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bp bihndWNfZnctPnVjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7Cj4gIAlpZiAoSVNfRVJSKHZtYSkp IHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50KVBUUl9FUlIo dm1hKSk7Cj4gIAkJcmV0dXJuIFBUUl9FUlIodm1hKTsKPiBAQCAtNDUxLDE0ICs0NTEsMTQgQEAg c3RhdGljIGludCBndWNfaHdfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0 cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiAtCWNv bnN0IGNoYXIgKmZ3X3BhdGggPSBndWNfZnctPmd1Y19md19wYXRoOwo+ICsJc3RydWN0IGludGVs X3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gKwljb25zdCBjaGFyICpm d19wYXRoID0gZ3VjX2Z3LT51Y19md19wYXRoOwo+ICAJaW50IHJldHJpZXMsIHJldCwgZXJyOwo+ ICAKPiAgCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IHBhdGggJXMsIGZldGNoICVz LCBsb2FkICVzXG4iLAo+ICAJCWZ3X3BhdGgsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXBy KGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7Cj4gKwkJaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXBy KGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiAgCj4gIAkvKiBMb2FkaW5nIGZvcmJpZGRlbiwgb3Ig bm8gZmlybXdhcmUgdG8gbG9hZD8gKi8KPiAgCWlmICghaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcp IHsKPiBAQCAtNDc2LDEwICs0NzYsMTAgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAJfQo+ICAKPiAgCS8qIEZldGNoIGZhaWxlZCwgb3IgYWxyZWFkeSBm ZXRjaGVkIGJ1dCBmYWlsZWQgdG8gbG9hZD8gKi8KPiAtCWlmIChndWNfZnctPmd1Y19md19mZXRj aF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKPiArCWlmIChndWNfZnctPmZldGNo X3N0YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKSB7Cj4gIAkJZXJyID0gLUVJTzsKPiAgCQln b3RvIGZhaWw7Cj4gLQl9IGVsc2UgaWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdV Q19GSVJNV0FSRV9GQUlMKSB7Cj4gKwl9IGVsc2UgaWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0g VUNfRklSTVdBUkVfRkFJTCkgewo+ICAJCWVyciA9IC1FTk9FWEVDOwo+ICAJCWdvdG8gZmFpbDsK PiAgCX0KPiBAQCAtNDg3LDExICs0ODcsMTEgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7Cj4g IAlnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAgCj4gLQlndWNfZnctPmd1 Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsJZ3VjX2Z3LT5sb2Fk X3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gIAo+ICAJRFJNX0RFQlVHX0RSSVZFUigi R3VDIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4gLQkJaW50ZWxfZ3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7Cj4gKwkJaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiAgCj4gIAllcnIgPSBpOTE1X2d1Y19z dWJtaXNzaW9uX2luaXQoZGV2X3ByaXYpOwo+ICAJaWYgKGVycikKPiBAQCAtNTIzLDExICs1MjMs MTEgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkg InJldHJ5ICVkIG1vcmUgdGltZShzKVxuIiwgZXJyLCByZXRyaWVzKTsKPiAgCX0KPiAgCj4gLQln dWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICsJZ3Vj X2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gIAo+ICAJRFJNX0RFQlVH X0RSSVZFUigiR3VDIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gLQkJaW50ZWxf Z3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4gLQkJaW50 ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7Cj4gKwkJ aW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiAgCj4gIAlpZiAoaTkx NS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiAgCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49 IDApCj4gQEAgLTU0Miw4ICs1NDIsOCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGZhaWw6Cj4gLQlpZiAoZ3VjX2Z3LT5n dWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX1BFTkRJTkcpCj4gLQkJZ3VjX2Z3LT5n dWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKPiArCWlmIChndWNfZnctPmxv YWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcpCj4gKwkJZ3VjX2Z3LT5sb2FkX3N0YXR1 cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7Cj4gIAo+ICAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZf cHJpdik7Cj4gIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2X3ByaXYpOwo+IEBAIC01 ODgsNyArNTg4LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiArdm9p ZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxf dWNfZncgKnVjX2Z3KQo+ICB7Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldi0+cGRldjsK PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gQEAgLTU5NywxNyArNTk3LDE3 IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIAlzaXplX3Qgc2l6ZTsKPiAgCWludCBlcnI7Cj4g IAo+IC0JRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBm dyBmZXRjaCBzdGF0dXMgJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJl cXVlc3RpbmcgZmlybXdhcmU6IHVDIGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKPiArCQlpbnRlbF91 Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7Cj4gIAo+IC0JZXJyID0gcmVx dWVzdF9maXJtd2FyZSgmZncsIGd1Y19mdy0+Z3VjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOwo+ICsJ ZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIHVjX2Z3LT51Y19md19wYXRoLCAmcGRldi0+ZGV2 KTsKPiAgCWlmIChlcnIpCj4gIAkJZ290byBmYWlsOwo+ICAJaWYgKCFmdykKPiAgCQlnb3RvIGZh aWw7Cj4gIAo+IC0JRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2Vl ZGVkLCBmdyAlcFxuIiwKPiAtCQlndWNfZnctPmd1Y19md19wYXRoLCBmdyk7Cj4gKwlEUk1fREVC VUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCj4gKwkJ dWNfZnctPnVjX2Z3X3BhdGgsIGZ3KTsKPiAgCj4gIAkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUg YmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwo+ICAJaWYgKGZ3LT5zaXpl IDwgc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKPiBAQCAtNjE4LDM2ICs2MTgsMzYg QEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiAgCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIg Kilmdy0+ZGF0YTsKPiAgCj4gIAkvKiBGaXJtd2FyZSBiaXRzIGFsd2F5cyBzdGFydCBmcm9tIGhl YWRlciAqLwo+IC0JZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKPiAtCWd1Y19mdy0+aGVhZGVy X3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNzcy0+bW9kdWx1c19zaXplX2R3IC0KPiAr CXVjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKPiArCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3Mt PmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQo+ICAJCWNzcy0+a2V5X3Np emVfZHcgLSBjc3MtPmV4cG9uZW50X3NpemVfZHcpICogc2l6ZW9mKHUzMik7Cj4gIAo+IC0JaWYg KGd1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsK PiArCWlmICh1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRl cikpIHsKPiAgCQlEUk1fTk9URSgiQ1NTIGhlYWRlciBkZWZpbml0aW9uIG1pc21hdGNoXG4iKTsK PiAgCQlnb3RvIGZhaWw7Cj4gIAl9Cj4gIAo+ICAJLyogdGhlbiwgdUNvZGUgKi8KPiAtCWd1Y19m dy0+dWNvZGVfb2Zmc2V0ID0gZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJf c2l6ZTsKPiAtCWd1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRl cl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwo+ICsJdWNfZnctPnVjb2RlX29mZnNldCA9IHVjX2Z3 LT5oZWFkZXJfb2Zmc2V0ICsgdWNfZnctPmhlYWRlcl9zaXplOwo+ICsJdWNfZnctPnVjb2RlX3Np emUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsK PiAgCj4gIAkvKiBub3cgUlNBICovCj4gIAlpZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNB X1NDUkFUQ0hfTUFYX0NPVU5UKSB7Cj4gIAkJRFJNX05PVEUoIlJTQSBrZXkgc2l6ZSBpcyBiYWRc biIpOwo+ICAJCWdvdG8gZmFpbDsKPiAgCX0KPiAtCWd1Y19mdy0+cnNhX29mZnNldCA9IGd1Y19m dy0+dWNvZGVfb2Zmc2V0ICsgZ3VjX2Z3LT51Y29kZV9zaXplOwo+IC0JZ3VjX2Z3LT5yc2Ffc2l6 ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKPiArCXVjX2Z3LT5yc2Ffb2Zmc2V0 ID0gdWNfZnctPnVjb2RlX29mZnNldCArIHVjX2Z3LT51Y29kZV9zaXplOwo+ICsJdWNfZnctPnJz YV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOwo+ICAKPiAgCS8qIEF0IGxl YXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRo cmVlLiAqLwo+IC0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3Np emUgKyBndWNfZnctPnJzYV9zaXplOwo+ICsJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVj X2Z3LT51Y29kZV9zaXplICsgdWNfZnctPnJzYV9zaXplOwo+ICAJaWYgKGZ3LT5zaXplIDwgc2l6 ZSkgewo+ICAJCURSTV9OT1RFKCJNaXNzaW5nIGZpcm13YXJlIGNvbXBvbmVudHNcbiIpOwo+ICAJ CWdvdG8gZmFpbDsKPiAgCX0KPiAgCj4gIAkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9h ZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICovCj4gLQlzaXplID0gZ3VjX2Z3LT5oZWFk ZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKPiArCXNpemUgPSB1Y19mdy0+aGVhZGVyX3Np emUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKPiAgCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUodG9f aTkxNShkZXYpKSkgewo+ICAJCURSTV9OT1RFKCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0 IGluIFdPUENNXG4iKTsKPiAgCQlnb3RvIGZhaWw7Cj4gQEAgLTY1OSwyMSArNjU5LDIxIEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRo b3VnaCBhbGwgcG9pbnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKPiAgCSAqIGluIHRlcm1z IG9mIGJ5dGVzICh1OCkuCj4gIAkgKi8KPiAtCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0g Y3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKPiAtCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5k ID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKPiAtCj4gLQlpZiAoZ3VjX2Z3LT5ndWNf ZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Cj4gLQkgICAg Z3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQp IHsKPiAtCQlEUk1fTk9URSgiR3VDIGZpcm13YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVk LiVkXG4iLAo+IC0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndf bWlub3JfZm91bmQsCj4gLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5n dWNfZndfbWlub3Jfd2FudGVkKTsKPiArCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgPSBjc3MtPmd1 Y19zd192ZXJzaW9uID4+IDE2Owo+ICsJdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA9IGNzcy0+Z3Vj X3N3X3ZlcnNpb24gJiAweEZGRkY7Cj4gKwo+ICsJaWYgKHVjX2Z3LT5tYWpvcl92ZXJfZm91bmQg IT0gdWNfZnctPm1ham9yX3Zlcl93YW50ZWQgfHwKPiArCSAgICB1Y19mdy0+bWlub3JfdmVyX2Zv dW5kIDwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpIHsKPiArCQlEUk1fTk9URSgidUMgZmlybXdh cmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQgJWQuJWRcbiIsCj4gKwkJCXVjX2Z3LT5tYWpvcl92 ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCj4gKwkJCXVjX2Z3LT5tYWpvcl92ZXJf d2FudGVkLCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7Cj4gIAkJZXJyID0gLUVOT0VYRUM7Cj4g IAkJZ290byBmYWlsOwo+ICAJfQo+ICAKPiAgCURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZl cnNpb24gJWQuJWQgT0sgKG1pbmltdW0gJWQuJWQpXG4iLAo+IC0JCQlndWNfZnctPmd1Y19md19t YWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCj4gLQkJCWd1Y19mdy0+Z3Vj X2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKPiArCQkJdWNf ZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKPiArCQkJdWNfZnct Pm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKPiAgCj4gIAltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3Jl YXRlX2Zyb21fZGF0YShkZXYsIGZ3LT5kYXRhLCBmdy0+c2l6ZSk7Cj4gQEAgLTY4MywzMSArNjgz LDMxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIAkJZ290byBmYWlsOwo+ICAJfQo+ICAKPiAt CWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKPiAtCWd1Y19mdy0+Z3VjX2Z3X3NpemUgPSBmdy0+ c2l6ZTsKPiArCXVjX2Z3LT51Y19md19vYmogPSBvYmo7Cj4gKwl1Y19mdy0+dWNfZndfc2l6ZSA9 IGZ3LT5zaXplOwo+ICAKPiAtCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMg U1VDQ0VTUywgb2JqICVwXG4iLAo+IC0JCQlndWNfZnctPmd1Y19md19vYmopOwo+ICsJRFJNX0RF QlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3RhdHVzIFNVQ0NFU1MsIG9iaiAlcFxuIiwKPiArCQkJ dWNfZnctPnVjX2Z3X29iaik7Cj4gIAo+ICAJcmVsZWFzZV9maXJtd2FyZShmdyk7Cj4gLQlndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKPiArCXVjX2Z3 LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICAJcmV0dXJuOwo+ICAKPiAg ZmFpbDoKPiAtCURSTV9XQVJOKCJGYWlsZWQgdG8gZmV0Y2ggdmFsaWQgR3VDIGZpcm13YXJlIGZy b20gJXMgKGVycm9yICVkKVxuIiwKPiAtCQkgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZXJyKTsKPiAt CURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgRkFJTDsgZXJyICVkLCBmdyAl cCwgb2JqICVwXG4iLAo+IC0JCWVyciwgZncsIGd1Y19mdy0+Z3VjX2Z3X29iaik7Cj4gKwlEUk1f V0FSTigiRmFpbGVkIHRvIGZldGNoIHZhbGlkIHVDIGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVk KVxuIiwKPiArCQkgdWNfZnctPnVjX2Z3X3BhdGgsIGVycik7Cj4gKwlEUk1fREVCVUdfRFJJVkVS KCJ1QyBmdyBmZXRjaCBzdGF0dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAo+ICsJ CWVyciwgZncsIHVjX2Z3LT51Y19md19vYmopOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAtCW9iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKPiArCW9iaiA9IHVjX2Z3 LT51Y19md19vYmo7Cj4gIAlpZiAob2JqKQo+ICAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsK PiAtCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7Cj4gKwl1Y19mdy0+dWNfZndfb2JqID0gTlVM TDsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCXJlbGVhc2Vf ZmlybXdhcmUoZncpOwkJLyogT0sgZXZlbiBpZiBmdyBpcyBOVUxMICovCj4gLQlndWNfZnctPmd1 Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKPiArCXVjX2Z3LT5mZXRjaF9z dGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtNzIyLDcgKzcy Miw3IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCj4gIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRl dl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2 X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gIAljb25zdCBjaGFyICpmd19wYXRoOwo+ICAKPiAgCWlmICgh SEFTX0dVQyhkZXYpKSB7Cj4gQEAgLTc0MCwyNCArNzQwLDI0IEBAIHZvaWQgaW50ZWxfZ3VjX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlmd19wYXRoID0gTlVMTDsKPiAgCX0gZWxz ZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKPiAgCQlmd19wYXRoID0gSTkxNV9TS0xfR1VD X1VDT0RFOwo+IC0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IFNLTF9GV19NQUpPUjsK PiAtCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7Cj4gKwkJZ3Vj X2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tMX0ZXX01BSk9SOwo+ICsJCWd1Y19mdy0+bWlub3Jf dmVyX3dhbnRlZCA9IFNLTF9GV19NSU5PUjsKPiAgCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZf cHJpdikpIHsKPiAgCQlmd19wYXRoID0gSTkxNV9CWFRfR1VDX1VDT0RFOwo+IC0JCWd1Y19mdy0+ Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsKPiAtCQlndWNfZnctPmd1Y19md19t aW5vcl93YW50ZWQgPSBCWFRfRldfTUlOT1I7Cj4gKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVk ID0gQlhUX0ZXX01BSk9SOwo+ICsJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEJYVF9GV19N SU5PUjsKPiAgCX0gZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJZndfcGF0 aCA9IEk5MTVfS0JMX0dVQ19VQ09ERTsKPiAtCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQg PSBLQkxfRldfTUFKT1I7Cj4gLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gS0JMX0ZX X01JTk9SOwo+ICsJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKPiAr CQlndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7Cj4gIAl9IGVsc2Ugewo+ ICAJCWZ3X3BhdGggPSAiIjsJLyogdW5rbm93biBkZXZpY2UgKi8KPiAgCX0KPiAgCj4gLQlndWNf ZnctPmd1Y19kZXYgPSBkZXY7Cj4gLQlndWNfZnctPmd1Y19md19wYXRoID0gZndfcGF0aDsKPiAt CWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOwo+IC0JZ3Vj X2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKPiArCWd1Y19mdy0+ dWNfZGV2ID0gZGV2Owo+ICsJZ3VjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKPiArCWd1Y19m dy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKPiArCWd1Y19mdy0+bG9hZF9zdGF0 dXMgPSBVQ19GSVJNV0FSRV9OT05FOwo+ICAKPiAgCS8qIEVhcmx5IChhbmQgc2lsZW50KSByZXR1 cm4gaWYgR3VDIGxvYWRpbmcgaXMgZGlzYWJsZWQgKi8KPiAgCWlmICghaTkxNS5lbmFibGVfZ3Vj X2xvYWRpbmcpCj4gQEAgLTc2Nyw5ICs3NjcsOSBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAoKmZ3X3BhdGggPT0gJ1wwJykKPiAgCQlyZXR1cm47 Cj4gIAo+IC0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJ Tkc7Cj4gKwlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gIAlE Uk1fREVCVUdfRFJJVkVSKCJHdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0 aCk7Cj4gLQlndWNfZndfZmV0Y2goZGV2LCBndWNfZncpOwo+ICsJaW50ZWxfdWNfZndfZmV0Y2go ZGV2LCBndWNfZncpOwo+ICAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwgb3IgU1VDQ0VTUyAq Lwo+ICB9Cj4gIAo+IEBAIC03ODAsMTcgKzc4MCwxNyBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2 LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYt Pmd1Yy5ndWNfZnc7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJ Z3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7Cj4gIAlpOTE1X2d1Y19zdWJtaXNzaW9u X2Rpc2FibGUoZGV2X3ByaXYpOwo+ICAJaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2 KTsKPiAgCj4gLQlpZiAoZ3VjX2Z3LT5ndWNfZndfb2JqKQo+IC0JCWk5MTVfZ2VtX29iamVjdF9w dXQoZ3VjX2Z3LT5ndWNfZndfb2JqKTsKPiAtCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7Cj4g KwlpZiAoZ3VjX2Z3LT51Y19md19vYmopCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChndWNfZnct PnVjX2Z3X29iaik7Cj4gKwlndWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7Cj4gIAltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0 dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKPiArCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklS TVdBUkVfTk9ORTsKPiAgfQo+IC0tIAo+IDIuNy40Cj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=