From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Vivi, Rodrigo" Subject: Re: [PATCH] drm/i915: Separate cherryview from valleyview Date: Fri, 4 Dec 2015 16:15:27 +0000 Message-ID: <1449245746.1387.208.camel@intel.com> References: <1449018700-31959-1-git-send-email-wayne.boyer@intel.com> <20151202090256.GR4437@intel.com> <87mvtt2ftn.fsf@intel.com> <20151204150554.GT10243@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 227B56E0AB for ; Fri, 4 Dec 2015 08:15:30 -0800 (PST) In-Reply-To: <20151204150554.GT10243@phenom.ffwll.local> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "daniel@ffwll.ch" , "jani.nikula@linux.intel.com" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE1LTEyLTA0IGF0IDE2OjA1ICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBXZWQsIERlYyAwMiwgMjAxNSBhdCAwMjozMDoyOFBNICswMjAwLCBKYW5pIE5pa3VsYSB3 cm90ZToNCj4gPiBPbiBXZWQsIDAyIERlYyAyMDE1LCBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPiANCj4gPiB3cm90ZToNCj4gPiA+IE9uIFR1ZSwgRGVjIDAx LCAyMDE1IGF0IDA1OjExOjQwUE0gLTA4MDAsIFdheW5lIEJveWVyIHdyb3RlOg0KPiA+ID4gPiBU aGUgY2hlcnJ5dmlldyBkZXZpY2Ugc2hhcmVzIG1hbnkgY2hhcmFjdGVyaXN0aWNzIHdpdGggdGhl IA0KPiA+ID4gPiB2YWxsZXl2aWV3DQo+ID4gPiA+IGRldmljZS4gIFdoZW4gc3VwcG9ydCB3YXMg YWRkZWQgdG8gdGhlIGRyaXZlciBmb3IgY2hlcnJ5dmlldywgDQo+ID4gPiA+IHRoZQ0KPiA+ID4g PiBjb3JyZXNwb25kaW5nIGRldmljZSBpbmZvIHN0cnVjdHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5 dmlldyA9IA0KPiA+ID4gPiAxLg0KPiA+ID4gPiBUaGlzIGlzIG5vdCBjb3JyZWN0IGFuZCBsZWFk cyB0byBzb21lIGNvbmZ1c2lvbi4NCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMgcGF0Y2ggY2hhbmdl cyAuaXNfdmFsbGV5dmlldyB0byAuaXNfY2hlcnJ5dmlldyBpbiB0aGUgDQo+ID4gPiA+IGNoZXJy eXZpZXcNCj4gPiA+ID4gZGV2aWNlIGluZm8gc3RydWN0dXJlIGFuZCBkZWZpbmVzIHRoZSBIQVNf R0VON19MUF9GRUFUVVJFUyANCj4gPiA+ID4gbWFjcm8uDQo+ID4gPiA+IFRoZW4gd2hlcmUgYXBw cm9wcmlhdGUsIGluc3RhbmNlcyBvZiBJU19WQUxMRVlWSUVXIGFyZSByZXBsYWNlZCANCj4gPiA+ ID4gd2l0aA0KPiA+ID4gPiBIQVNfR0VON19MUF9GRUFUVVJFUyB0byB0ZXN0IGZvciBlaXRoZXIg YSB2YWxsZXl2aWV3IG9yIGEgDQo+ID4gPiA+IGNoZXJyeXZpZXcNCj4gPiA+ID4gZGV2aWNlLg0K PiA+ID4gDQo+ID4gPiBJIGRvbid0IGxpa2UgdGhlIG5hbWUgb2YgdGhlIG1hY3JvLiBNb3N0IG9m IHRoZSBzaGFyZWQgYml0cyBhcmUgDQo+ID4gPiBkaXNwbGF5DQo+ID4gPiByZWxhdGVkLCBzbyB3 ZSBjb3VsZCBoYXZlIHNvbWV0aGluZyBsaWtlIEhBU19WTFZfRElTUExBWS4gRm9yIHRoZSANCj4g PiA+IHJlc3QsDQo+ID4gPiBJIHRoaW5rIHdlIGNvdWxkIGp1c3QgdGVzdCBJU19WTFZ8fElTX0NI ViBleHBsaWNpdGx5LiBVbmxlc3MgDQo+ID4gPiBzb21lb25lDQo+ID4gPiBjYW4gY29tZSB1cCB3 aXRoIGEgYmV0dGVyIG5hbWUgdGhhdCBjb3ZlcnMgZXZlcnl0aGluZz8NCj4gPiANCj4gPiBEZWZp bml0ZWx5IE5BSyBvbiBIQVNfR0VON19MUF9GRUFUVVJFUy4NCj4gPiANCj4gPiBIQVNfVkxWX0RJ U1BMQVkgd291bGQgYmUgYSBzdWJzZXQgb2YgSEFTX0dNQ0hfRElTUExBWSwgd2hpY2ggSSANCj4g PiBndWVzcw0KPiA+IHdvdWxkbid0IGJlIHRoYXQgYmFkLi4uIHVubGVzcyBzb21lb25lIHN0YXJ0 cyB1c2luZyB0aGF0IGZvciBhIA0KPiA+IFZMVnx8Q0hWDQo+ID4gc2hvcnRoYW5kIGluIG5vbi1k aXNwbGF5IGNvZGUuDQo+ID4gDQo+ID4gSSB0aGluayBJIG1pZ2h0IGp1c3QgZ28gZm9yIHRoZSB2 ZXJib3NlIChJU19WQUxMRVlWSUVXIHx8IA0KPiA+IElTX0NIRVJSWVZJRVcpDQo+ID4gYWxsIGFy b3VuZC4gRXNwZWNpYWxseSBzaW5jZSB3ZSd2ZSBiZWVuIGJyYWlud2FzaGVkIHdpdGggdGhlIG9s ZCANCj4gPiB2bHYgaXMNCj4gPiBib3RoIHZsdiBhbmQgY2h2IGNvZGUuDQo+IA0KPiBIQVNfR01D SF9ESVNQTEFZIGlzIHdoYXQgSSd2ZSBnZW5lcmFsbHkgdXNlZCwgc2luY2UgdXN1YWxseSB5b3Ug aGF2ZSANCj4gYQ0KPiBJTlRFTF9JTkZPKCktPmdlbiA+PSA1IHRlc3QgYWxyZWFkeSBzb21ld2hl cmUuIElmIHdlIHdhbnQgdG8gbWFrZSANCj4gdGhpcw0KPiBtb3JlIGV4cGxpY2l0IHRoZSBwcm9w ZXIgbmFtZSBmb3Igdmx2IGlzIEJBWVRSQUlMLCBhbmQgZm9yIHRydWVseSBieXQNCj4gc3BlY2lm aWMgc3R1ZmYgd2UndmUgbmFtZWQgdGhpbmdzIGJ5dF8uIFNvIHdoYXQgYWJvdXQgRGVmaW5pbmcg YW4NCj4gSVNfQkFZVFJBSUwgaW5zdGVhZCBmb3IgdGhlIGNhc2VzIHdoZXJlIGl0J3Mgbm90IHZs diB8fCBjaHYuDQoNCkJheXRyYWlsIGlzIHRoZSBwbGF0Zm9ybSBuYW1lIHdpdGggdGhlIFZhbGxl eXZpZXcgZ3JhcGhpY3MuIFRoYW4gd2UNCndvdWxkIGhhdmUgQ2hlcnJ5IFRyYWlsIGFuZC9vciBC cmFzd2VsbCBmb3IgQ2hlcnJ5dmlldyBncmFwaGljcyBhbmQNCkFwb2xsbyBMYWtlIGZvciBCcm94 dG9uLiBTbyBJIHdvdWxkIHZvdGUgdG8gc3RheSB3aXRoIFZhbGxleXZpZXcsDQpDaGVycnl2aWV3 IGFuZCBCcm94dG9uIG9ubHkuDQoNCj4gDQo+IEFuZCB3aGF0J3MgdGhlIGJlbmVmaXQgb2YgYWxs IHRoaXMgY2h1cm4/DQoNCk9yZ2FuaXplIGFuZCBwcmVwYXJlIHRoZSBjb2RlIGZvciBmdXR1cmUg cGxhdGZvcm1zLiANCkF2b2lkIG1vcmUgY29uZnVzaW9uIGxpa2Ugd2UgaGFkIG9uIElTX1NLWUxB S0UgeCBJU19LQUJZTEFLRS4NCk1ha2UgdGhpbmdzIG1vcmUgZWFzeSBhbmQgY2xlYXIgaWYgd2Ug ZGVjaWRlIHRvIGFkZCAuaXNfYXRvbV9scCBvbg0KdGhlc2UgcGxhdGZvcm1zIGRlZmluaXRpb24u DQoNCj4gLURhbmllbA0KPiANCj4gPiANCj4gPiBCUiwNCj4gPiBKYW5pLg0KPiA+IA0KPiA+ID4g DQo+ID4gPiA+IA0KPiA+ID4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwu Y29tPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBXYXluZSBCb3llciA8d2F5bmUuYm95ZXJAaW50 ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgICB8IDE0ICsrKystLS0tLQ0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYyAgICAgICAgIHwgIDggKystLS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8IDEwICsrKy0tLQ0KPiA+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgMTkgKysrKysrKystLS0tDQo+ID4gPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAgNCArLS0NCj4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAyICstDQo+ID4g PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgfCAgMiArLQ0KPiA+ ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgIHwgIDYgKystLQ0K PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgIHwgIDggKyst LS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jICAgICB8ICA0 ICstLQ0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAgIHwg MTAgKysrLS0tDQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAg ICAgfCAgNiArKy0tDQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAg ICAgICAgfCAgNCArLS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyAgICB8IDU0ICsrKysrKysrKysrKysrKystDQo+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0N Cj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICB8IDM4ICsr KysrKysrKysrLS0tLS0tDQo+ID4gPiA+IC0tLS0tLQ0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpLmMgICAgICAgIHwgMTMgKysrKy0tLS0NCj4gPiA+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyAgICB8ICA2ICsrLS0NCj4gPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgICAgICB8ICA0ICstLQ0KPiA+ID4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jICAgIHwgIDIgKy0NCj4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jICAgICAgICB8ICAyICstDQo+ID4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgfCAgMiArLQ0KPiA+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDggKystLS0NCj4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICB8ICA0ICstLQ0KPiA+ ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgIHwgIDQgKy0tDQo+ ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyAgICAgfCAgNiArKy0t DQo+ID4gPiA+ICAyNSBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0 aW9ucygtKQ0KPiA+ID4gPiANCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jDQo+ID4gPiA+IGluZGV4IGJmZDU3ZmIuLmEyZDUwZGEgMTAwNjQ0DQo+ID4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jDQo+ID4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jDQo+ID4gPiA+IEBAIC04NjIsNyAr ODYyLDcgQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVjdCANCj4gPiA+ID4g c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpDQo+ID4gPiA+ICAJCQkgICBJOTE1X1JFQUQoR0VOOF9Q Q1VfSUlSKSk7DQo+ID4gPiA+ICAJCXNlcV9wcmludGYobSwgIlBDVSBpbnRlcnJ1cHQgZW5hYmxl Olx0JTA4eFxuIiwNCj4gPiA+ID4gIAkJCSAgIEk5MTVfUkVBRChHRU44X1BDVV9JRVIpKTsNCj4g PiA+ID4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgew0KPiA+ID4gPiArCX0gZWxz ZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgew0KPiA+ID4gDQo+ID4gPiBXZSBhbHJl ZHkgdGVzdCBmb3IgQ0hWIGVhcmxpZXIsIHNvIHRoaXMgc2hvdWxkIHJlbWFpbiBhcyBpcy4NCj4g PiA+IA0KPiA+ID4gPiAgCQlzZXFfcHJpbnRmKG0sICJEaXNwbGF5IElFUjpcdCUwOHhcbiIsDQo+ ID4gPiA+ICAJCQkgICBJOTE1X1JFQUQoVkxWX0lFUikpOw0KPiA+ID4gPiAgCQlzZXFfcHJpbnRm KG0sICJEaXNwbGF5IElJUjpcdCUwOHhcbiIsDQo+ID4gPiA+IEBAIC0xMjg0LDcgKzEyODQsNyBA QCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IA0KPiA+ID4gPiBzZXFfZmls ZSAqbSwgdm9pZCAqdW51c2VkKQ0KPiA+ID4gPiAgCQlzZXFfcHJpbnRmKG0sDQo+ID4gPiA+ICAJ CQkgICAiZWZmaWNpZW50IChSUGUpIGZyZXF1ZW5jeTogJWQgDQo+ID4gPiA+IE1IelxuIiwNCj4g PiA+ID4gIAkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdg0KPiA+ID4gPiAt PnJwcy5lZmZpY2llbnRfZnJlcSkpOw0KPiA+ID4gPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7DQo+ID4gPiA+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYp KSB7DQo+ID4gPiANCj4gPiA+IEFuZCBmb3IgdGhpcyB5b3Ugd291bGQgYWxzbyBuZWVkIHRvIGNo YW5nZSB0aGUgZWFybGllciBjb25kaXRpb24gDQo+ID4gPiBpbiB0aGUNCj4gPiA+IHByZXZpb3Vz ICdlbHNlIGlmJyBicmFuY2guIEJ1dCBJIHRoaW5rIGl0IHdvdWxkIGJlIGNsZWFybmVyIHRvIA0K PiA+ID4gaG9pc3QNCj4gPiA+IHRoZSBWTFYvQ0hWIGNvZGUgdG8gc2l0IGJlZm9yZSB0aGUgZ2Vu NisgY29kZSwgYW5kIHRoZW4gdGhlIGdlbjYrDQo+ID4gPiBjb25kaXRpb24gY2FuIGJlIHNpbXBs aWZpZWQgc2lnbmlmaWNhbnRseS4NCj4gPiA+IA0KPiA+ID4gPiAgCQl1MzIgZnJlcV9zdHM7DQo+ ID4gPiA+ICANCj4gPiA+ID4gIAkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsN Cj4gPiA+ID4gQEAgLTE2MDIsNyArMTYwMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnBjX2luZm8o c3RydWN0IHNlcV9maWxlIA0KPiA+ID4gPiAqbSwgdm9pZCAqdW51c2VkKQ0KPiA+ID4gPiAgCXN0 cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsNCj4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsNCj4gPiA+ID4gIA0KPiA+ID4gPiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpDQo+ID4gPiA+ICAJCXJldHVybiB2bHZfZHJwY19pbmZvKG0pOw0KPiA+ID4gPiAg CWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpDQo+ID4gPiA+ICAJCXJldHVybiBn ZW42X2RycGNfaW5mbyhtKTsNCj4gPiA+ID4gQEAgLTE3NDMsNyArMTc0Myw3IEBAIHN0YXRpYyBp bnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlIA0KPiA+ID4gPiAqbSwgdm9pZCAqdW51 c2VkKQ0KPiA+ID4gPiAgCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKElOU1RQTSkgJiANCj4gPiA+ ID4gSU5TVFBNX1NFTEZfRU47DQo+ID4gPiA+ICAJZWxzZSBpZiAoSVNfUElORVZJRVcoZGV2KSkN Cj4gPiA+ID4gIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVBRChEU1BGVzMpICYgDQo+ID4gPiA+IFBJ TkVWSUVXX1NFTEZfUkVGUkVTSF9FTjsNCj4gPiA+ID4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldikpDQo+ID4gPiA+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4g PiA+ID4gIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVBRChGV19CTENfU0VMRl9WTFYpICYgDQo+ID4g PiA+IEZXX0NTUFdSRFdORU47DQo+ID4gPiA+ICANCj4gPiA+ID4gIAlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdik7DQo+ID4gPiA+IEBAIC0zOTgzLDcgKzM5ODMsNyBAQCBzdGF0aWMgaW50 IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0IA0KPiA+ID4gPiBkcm1fZGV2aWNlICpkZXYsIGVu dW0gcGlwZSBwaXBlLA0KPiA+ID4gPiAgCQlyZXQgPSBpOHh4X3BpcGVfY3JjX2N0bF9yZWcoJnNv dXJjZSwgJnZhbCk7DQo+ID4gPiA+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1 KQ0KPiA+ID4gPiAgCQlyZXQgPSBpOXh4X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBwaXBlLCANCj4g PiA+ID4gJnNvdXJjZSwgJnZhbCk7DQo+ID4gPiA+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKQ0KPiA+ID4gPiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ID4g PiA+ICAJCXJldCA9IHZsdl9waXBlX2NyY19jdGxfcmVnKGRldiwgcGlwZSwgJnNvdXJjZSwgDQo+ ID4gPiA+ICZ2YWwpOw0KPiA+ID4gPiAgCWVsc2UgaWYgKElTX0dFTjUoZGV2KSB8fCBJU19HRU42 KGRldikpDQo+ID4gPiA+ICAJCXJldCA9IGlsa19waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2 YWwpOw0KPiA+ID4gPiBAQCAtNDA1Miw3ICs0MDUyLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19z ZXRfc291cmNlKHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlw ZSwNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCQlpZiAoSVNfRzRYKGRldikpDQo+ID4gPiA+ICAJCQln NHhfdW5kb19waXBlX3NjcmFtYmxlX3Jlc2V0KGRldiwgDQo+ID4gPiA+IHBpcGUpOw0KPiA+ID4g PiAtCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJCWVsc2UgaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ID4gPiA+ICAJCQl2bHZfdW5kb19waXBlX3NjcmFt YmxlX3Jlc2V0KGRldiwgDQo+ID4gPiA+IHBpcGUpOw0KPiA+ID4gPiAgCQllbHNlIGlmIChJU19I QVNXRUxMKGRldikgJiYgcGlwZSA9PSBQSVBFX0EpDQo+ID4gPiA+ICAJCQloc3dfdHJhbnNfZWRw X3BpcGVfQV9jcmNfd2EoZGV2LCANCj4gPiA+ID4gZmFsc2UpOw0KPiA+ID4gPiBAQCAtNDQ0Miw3 ICs0NDQyLDcgQEAgc3RhdGljIHZvaWQgd21fbGF0ZW5jeV9zaG93KHN0cnVjdCANCj4gPiA+ID4g c2VxX2ZpbGUgKm0sIGNvbnN0IHVpbnQxNl90IHdtWzhdKQ0KPiA+ID4gPiAgCQkgKiAtIFdNMSsg bGF0ZW5jeSB2YWx1ZXMgaW4gMC41dXMgdW5pdHMNCj4gPiA+ID4gIAkJICogLSBsYXRlbmNpZXMg YXJlIGluIHVzIG9uIGdlbjkvdmx2L2Nodg0KPiA+ID4gPiAgCQkgKi8NCj4gPiA+ID4gLQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgfHwgDQo+ID4gPiA+IElTX1ZBTExFWVZJRVcoZGV2 KSkNCj4gPiA+ID4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgfHwgDQo+ID4gPiA+ IEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ID4gPiA+ICAJCQlsYXRlbmN5ICo9IDEwOw0K PiA+ID4gPiAgCQllbHNlIGlmIChsZXZlbCA+IDApDQo+ID4gPiA+ICAJCQlsYXRlbmN5ICo9IDU7 DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIA0K PiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMNCj4gPiA+ID4gaW5kZXgg YTgxYzc2Ni4uZTI0YWE2NSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rt YS5jDQo+ID4gPiA+IEBAIC0yNTYsNyArMjU2LDcgQEAgaW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICAJdTMyIHRlbXA7DQo+ID4gPiA+ICAJYm9vbCBl bmFibGVkOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkNCj4g PiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJcmV0dXJu Ow0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJZGV2X3ByaXYtPm1jaGJhcl9uZWVkX2Rpc2FibGUgPSBm YWxzZTsNCj4gPiA+ID4gQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgdm9pZCANCj4gPiA+ID4g aW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ ID4gPiA+ICAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAyOw0KPiA+ID4gPiAgCQlpbmZv LT5udW1fc3ByaXRlc1tQSVBFX0JdID0gMjsNCj4gPiA+ID4gIAkJaW5mby0+bnVtX3Nwcml0ZXNb UElQRV9DXSA9IDE7DQo+ID4gPiA+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ ID4gPiA+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAg CQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQ0KPiA+ID4gPiAgCQkJaW5mby0+bnVtX3Nw cml0ZXNbcGlwZV0gPSAyOw0KPiA+ID4gPiAgCWVsc2UNCj4gPiA+ID4gQEAgLTc5MSw3ICs3OTEs NyBAQCBzdGF0aWMgdm9pZCANCj4gPiA+ID4gaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICAJCWluZm8tPm51bV9waXBlcyA9IDA7 DQo+ID4gPiA+ICAJfSBlbHNlIGlmIChpbmZvLT5udW1fcGlwZXMgPiAwICYmDQo+ID4gPiA+ICAJ CSAgIChJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA3IHx8IA0KPiA+ID4gPiBJTlRFTF9JTkZPKGRl diktPmdlbiA9PSA4KSAmJg0KPiA+ID4gPiAtCQkgICAhSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ ID4gPiA+ICsJCSAgICFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiANCj4gPiA+ IFRoYXQgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGZvciAnSEFTX1BDSF9TUExJVCAmJiAoR0VONyB8 fCBHRU44KScsIA0KPiA+ID4gc2luY2UNCj4gPiA+IGl0J3MgcmVhZGluZyBTRlVTRV9TVFJBUCB3 aGljaCBsaXZlcyBpbiB0aGUgUENILg0KPiA+ID4gDQo+ID4gPiA+ICAJCXUzMiBmdXNlX3N0cmFw ID0gSTkxNV9SRUFEKEZVU0VfU1RSQVApOw0KPiA+ID4gPiAgCQl1MzIgc2Z1c2Vfc3RyYXAgPSBJ OTE1X1JFQUQoU0ZVU0VfU1RSQVApOw0KPiA+ID4gPiAgDQo+ID4gPiA+IEBAIC04MzYsNyArODM2 LDcgQEAgc3RhdGljIHZvaWQgDQo+ID4gPiA+IGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICBzdGF0aWMgdm9p ZCBpbnRlbF9pbml0X2RwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ ID4gPiAgew0KPiA+ID4gPiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpDQo+ID4gPiA+ ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpDQo+ID4gPiA+ICAJCXJldHVy bjsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCS8qDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMNCj4gPiA+ID4gaW5kZXggNWY4YjBmZi4uYWM1NGI2OCAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYw0KPiA+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jDQo+ID4gPiA+IEBAIC0zMTEsNyArMzExLDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyANCj4gPiA+ID4gaW50ZWxf Y2hlcnJ5dmlld19pbmZvID0gew0KPiA+ID4gPiAgCS5nZW4gPSA4LCAubnVtX3BpcGVzID0gMywN Cj4gPiA+ID4gIAkubmVlZF9nZnhfaHdzID0gMSwgLmhhc19ob3RwbHVnID0gMSwNCj4gPiA+ID4g IAkucmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgDQo+ID4g PiA+IFZFQk9YX1JJTkcsDQo+ID4gPiA+IC0JLmlzX3ZhbGxleXZpZXcgPSAxLA0KPiA+ID4gPiAr CS5pc19jaGVycnl2aWV3ID0gMSwNCj4gPiA+ID4gIAkuZGlzcGxheV9tbWlvX29mZnNldCA9IFZM Vl9ESVNQTEFZX0JBU0UsDQo+ID4gPiA+ICAJR0VOX0NIVl9QSVBFT0ZGU0VUUywNCj4gPiA+ID4g IAlDVVJTT1JfT0ZGU0VUUywNCj4gPiA+ID4gQEAgLTgwMCw3ICs4MDAsNyBAQCBzdGF0aWMgaW50 IGk5MTVfZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgDQo+ID4gPiA+IGRybV9kZXZpY2UgKmRldikN Cj4gPiA+ID4gIA0KPiA+ID4gPiAgCXBjaV9zZXRfbWFzdGVyKGRldi0+cGRldik7DQo+ID4gPiA+ ICANCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpDQo+ID4gPiA+ICsJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2KSkNCj4gPiA+ID4gIAkJcmV0ID0gdmx2X3Jl c3VtZV9wcmVwYXJlKGRldl9wcml2LCBmYWxzZSk7DQo+ID4gPiA+ICAJaWYgKHJldCkNCj4gPiA+ ID4gIAkJRFJNX0VSUk9SKCJSZXN1bWUgcHJlcGFyZSBmYWlsZWQ6ICVkLCANCj4gPiA+ID4gY29u dGludWluZyBhbnl3YXlcbiIsDQo+ID4gPiA+IEBAIC0xNTMwLDcgKzE1MzAsNyBAQCBzdGF0aWMg aW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCANCj4gPiA+ID4gZGV2aWNlICpkZXZpY2Up DQo+ID4gPiA+ICAJCXJldCA9IGJ4dF9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdik7DQo+ID4gPiA+ ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgDQo+ID4gPiA+IElTX0JST0FEV0VM TChkZXZfcHJpdikpDQo+ID4gPiA+ICAJCWhzd19kaXNhYmxlX3BjOChkZXZfcHJpdik7DQo+ID4g PiA+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpDQo+ID4gPiA+ICsJZWxzZSBp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQ0KPiA+ID4gPiAgCQlyZXQgPSB2bHZf cmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIHRydWUpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyoN Cj4gPiA+ID4gQEAgLTE1NDcsNyArMTU0Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9y ZXN1bWUoc3RydWN0IA0KPiA+ID4gPiBkZXZpY2UgKmRldmljZSkNCj4gPiA+ID4gIAkgKiBwb3dl ciB3ZWxsLCBzbyBocGQgaXMgcmVpbml0aWFsaXplZCBmcm9tIHRoZXJlLiBGb3INCj4gPiA+ID4g IAkgKiBldmVyeW9uZSBlbHNlIGRvIGl0IGhlcmUuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+IC0J aWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkNCj4gPiA+ID4gKwlpZiAoIUhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldl9wcml2KSkNCj4gPiA+ID4gIAkJaW50ZWxfaHBkX2luaXQoZGV2X3ByaXYp Ow0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXYpOw0K PiA+ID4gPiBAQCAtMTU3Miw3ICsxNTcyLDcgQEAgc3RhdGljIGludCBpbnRlbF9zdXNwZW5kX2Nv bXBsZXRlKHN0cnVjdCANCj4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4g PiA+ICAJCXJldCA9IGJ4dF9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsNCj4gPiA+ID4gIAll bHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCANCj4gPiA+ID4gSVNfQlJPQURXRUxMKGRl dl9wcml2KSkNCj4gPiA+ID4gIAkJcmV0ID0gaHN3X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYp Ow0KPiA+ID4gPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQ0KPiA+ID4gPiAr CWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2KSkNCj4gPiA+ID4gIAkJcmV0 ID0gdmx2X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOw0KPiA+ID4gPiAgCWVsc2UNCj4gPiA+ ID4gIAkJcmV0ID0gMDsNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0K PiA+ID4gPiBpbmRleCBiYzg2NWUyMy4uYWNiNWU4YiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+IEBAIC03NjMsNiArNzYzLDcgQEAgc3RydWN0IGlu dGVsX2NzciB7DQo+ID4gPiA+ICAJZnVuYyhpc19jcmVzdGxpbmUpIHNlcCBcDQo+ID4gPiA+ICAJ ZnVuYyhpc19pdnlicmlkZ2UpIHNlcCBcDQo+ID4gPiA+ICAJZnVuYyhpc192YWxsZXl2aWV3KSBz ZXAgXA0KPiA+ID4gPiArCWZ1bmMoaXNfY2hlcnJ5dmlldykgc2VwIFwNCj4gPiA+ID4gIAlmdW5j KGlzX2hhc3dlbGwpIHNlcCBcDQo+ID4gPiA+ICAJZnVuYyhpc19za3lsYWtlKSBzZXAgXA0KPiA+ ID4gPiAgCWZ1bmMoaXNfYnJveHRvbikgc2VwIFwNCj4gPiA+ID4gQEAgLTI0NTYsOSArMjQ1Nyw5 IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgew0KPiA+ID4gPiAgCQkJCSBJTlRFTF9ERVZJ RChkZXYpID09IDB4MDE1MiB8fCANCj4gPiA+ID4gXA0KPiA+ID4gPiAgCQkJCSBJTlRFTF9ERVZJ RChkZXYpID09IDB4MDE1YSkNCj4gPiA+ID4gICNkZWZpbmUgSVNfVkFMTEVZVklFVyhkZXYpCShJ TlRFTF9JTkZPKGRldikNCj4gPiA+ID4gLT5pc192YWxsZXl2aWV3KQ0KPiA+ID4gPiAtI2RlZmlu ZSBJU19DSEVSUllWSUVXKGRldikJKElOVEVMX0lORk8oZGV2KQ0KPiA+ID4gPiAtPmlzX3ZhbGxl eXZpZXcgJiYgSVNfR0VOOChkZXYpKQ0KPiA+ID4gPiArI2RlZmluZSBJU19DSEVSUllWSUVXKGRl dikJKElOVEVMX0lORk8oZGV2KQ0KPiA+ID4gPiAtPmlzX2NoZXJyeXZpZXcpDQo+ID4gPiA+ICAj ZGVmaW5lIElTX0hBU1dFTEwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19oYXN3ZWxsKQ0KPiA+ ID4gPiAtI2RlZmluZSBJU19CUk9BRFdFTEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2KQ0KPiA+ID4g PiAtPmlzX3ZhbGxleXZpZXcgJiYgSVNfR0VOOChkZXYpKQ0KPiA+ID4gPiArI2RlZmluZSBJU19C Uk9BRFdFTEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2KQ0KPiA+ID4gPiAtPmlzX2NoZXJyeXZpZXcg JiYgSVNfR0VOOChkZXYpKQ0KPiA+ID4gPiAgI2RlZmluZSBJU19TS1lMQUtFKGRldikJKElOVEVM X0lORk8oZGV2KS0+aXNfc2t5bGFrZSkNCj4gPiA+ID4gICNkZWZpbmUgSVNfQlJPWFRPTihkZXYp CQkoSU5URUxfSU5GTyhkZXYpDQo+ID4gPiA+IC0+aXNfYnJveHRvbikNCj4gPiA+ID4gICNkZWZp bmUgSVNfS0FCWUxBS0UoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19rYWJ5bGFrZSkNCj4gPiA+ ID4gQEAgLTI1ODUsNyArMjU4Niw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgew0KPiA+ ID4gPiAgCQkJCSBJU19TS1lMQUtFKGRldikgfHwgDQo+ID4gPiA+IElTX0tBQllMQUtFKGRldikp DQo+ID4gPiA+ICAjZGVmaW5lIEhBU19SVU5USU1FX1BNKGRldikJKElTX0dFTjYoZGV2KSB8fCAN Cj4gPiA+ID4gSVNfSEFTV0VMTChkZXYpIHx8IFwNCj4gPiA+ID4gIAkJCQkgSVNfQlJPQURXRUxM KGRldikgfHwgDQo+ID4gPiA+IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBcDQo+ID4gPiA+IC0JCQkJ IElTX1NLWUxBS0UoZGV2KSB8fCANCj4gPiA+ID4gSVNfS0FCWUxBS0UoZGV2KSkNCj4gPiA+ID4g KwkJCQkgSVNfQ0hFUlJZVklFVyhkZXYpIHx8IA0KPiA+ID4gPiBJU19TS1lMQUtFKGRldikgfHwg XA0KPiA+ID4gPiArCQkJCSBJU19LQUJZTEFLRShkZXYpKQ0KPiA+ID4gPiAgI2RlZmluZSBIQVNf UkM2KGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA+PSANCj4gPiA+ID4gNikNCj4gPiA+ID4g ICNkZWZpbmUgSEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IA0KPiA+ID4g PiA2IHx8IElTX0lWWUJSSURHRShkZXYpKQ0KPiA+ID4gPiAgDQo+ID4gPiA+IEBAIC0yNTk4LDcg KzI2MDAsMTEgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7DQo+ID4gPiA+ICAJCQkJICAg IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpDQo+ID4gPiA+ICANCj4gPiA+ID4gICNkZWZpbmUg SEFTX0NPUkVfUklOR19GUkVRKGRldikJKElOVEVMX0lORk8oZGV2KS0+Z2VuIA0KPiA+ID4gPiA+ PSA2ICYmIFwNCj4gPiA+ID4gLQkJCQkgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiANCj4gPiA+ID4g IUlTX0JST1hUT04oZGV2KSkNCj4gPiA+ID4gKwkJCQkgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAN Cj4gPiA+ID4gIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiBcDQo+ID4gPiA+ICsJCQkJICFJU19CUk9Y VE9OKGRldikpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgSEFTX0dFTjdfTFBfRkVBVFVS RVMoZGV2KSAoSU5URUxfSU5GTyhkZXYpDQo+ID4gPiA+IC0+aXNfdmFsbGV5dmlldyB8fCBcDQo+ ID4gPiA+ICsJCQkJICAgSU5URUxfSU5GTyhkZXYpDQo+ID4gPiA+IC0+aXNfY2hlcnJ5dmlldykN Cj4gPiA+ID4gIA0KPiA+ID4gPiAgI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4 ZmYwMA0KPiA+ID4gPiAgI2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNi MDANCj4gPiA+ID4gQEAgLTI2MjAsNyArMjYyNiw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFi bGUgew0KPiA+ID4gPiAgI2RlZmluZSBIQVNfUENIX05PUChkZXYpIChJTlRFTF9QQ0hfVFlQRShk ZXYpID09IFBDSF9OT1ApDQo+ID4gPiA+ICAjZGVmaW5lIEhBU19QQ0hfU1BMSVQoZGV2KSAoSU5U RUxfUENIX1RZUEUoZGV2KSAhPSBQQ0hfTk9ORSkNCj4gPiA+ID4gIA0KPiA+ID4gPiAtI2RlZmlu ZSBIQVNfR01DSF9ESVNQTEFZKGRldikgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSB8fCANCj4g PiA+ID4gSVNfVkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiArI2RlZmluZSBIQVNfR01DSF9ESVNQ TEFZKGRldikgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSB8fCBcDQo+ID4gPiA+ICsJCQkgICAg ICAgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIA0KPiA+ID4gPiAgLyogRFBG ID09IGR5bmFtaWMgcGFyaXR5IGZlYXR1cmUgKi8NCj4gPiA+ID4gICNkZWZpbmUgSEFTX0wzX0RQ RihkZXYpIChJU19JVllCUklER0UoZGV2KSB8fCBJU19IQVNXRUxMKGRldikpDQo+ID4gPiA+IEBA IC0zNTExLDcgKzM1MTgsNyBAQCBfX3Jhd193cml0ZSg2NCwgcSkNCj4gPiA+ID4gIA0KPiA+ID4g PiAgc3RhdGljIGlubGluZSBpOTE1X3JlZ190IGk5MTVfdmdhY250cmxfcmVnKHN0cnVjdCBkcm1f ZGV2aWNlIA0KPiA+ID4gPiAqZGV2KQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAtCWlmIChJU19WQUxM RVlWSUVXKGRldikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ ID4gPiA+ICAJCXJldHVybiBWTFZfVkdBQ05UUkw7DQo+ID4gPiA+ICAJZWxzZSBpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNSkNCj4gPiA+ID4gIAkJcmV0dXJuIENQVV9WR0FDTlRSTDsNCj4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgDQo+ID4g PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYw0KPiA+ID4gPiBpbmRleCBhNjk5 N2E4Li4xNWJlOWVhIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMN Cj4gPiA+ID4gQEAgLTQ4MzgsNyArNDgzOCw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICANCj4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KSB7DQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4g IAkJLyogVkxWQTAgKHBvdGVudGlhbCBoYWNrKSwgQklPUyBpc24ndCBhY3R1YWxseSANCj4gPiA+ ID4gd2FraW5nIHVzICovDQo+ID4gPiA+ICAJCUk5MTVfV1JJVEUoVkxWX0dUTENfV0FLRV9DVFJM LCANCj4gPiA+ID4gVkxWX0dUTENfQUxMT1dXQUtFUkVRKTsNCj4gPiA+ID4gIAkJaWYgKHdhaXRf Zm9yKChJOTE1X1JFQUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmDQo+ID4gPiANCj4gPiA+IFdlIHN0 aWxsIGhhdmUgdGhhdCBjb2RlPyBTaG91bGQgcHJvYmFibHkganVzdCBudWtlIGl0Lg0KPiA+ID4g DQo+ID4gPiA+IEBAIC00OTYzLDcgKzQ5NjMsNyBAQCBpOTE1X2dlbV9sb2FkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpDQo+ID4gPiA+ICANCj4gPiA+ID4gIAlkZXZfcHJpdi0+cmVsYXRpdmVfY29u c3RhbnRzX21vZGUgPSANCj4gPiA+ID4gSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfR0VORVJBTDsN Cj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFJ U19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDcgJiYgDQo+ID4gPiA+ICFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQlk ZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPSAzMjsNCj4gPiA+ID4gIAllbHNlIGlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA0IHx8IElTX0k5NDVHKGRldikgfHwgDQo+ID4gPiA+IElTX0k5NDVH TShkZXYpIHx8IElTX0czMyhkZXYpKQ0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3Jl Z3MgPSAxNjsNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyANCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMNCj4gPiA+ID4gaW5kZXggNDM3NjFjNS4uNDc2ZmVlMCAxMDA2NDQNCj4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jDQo+ID4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYw0KPiA+ID4gPiBAQCAt MTkwLDcgKzE5MCw3IEBAIGk5MTVfZ2VtX2FsbG9jX2NvbnRleHRfb2JqKHN0cnVjdCANCj4gPiA+ ID4gZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkNCj4gPiA+ID4gIAkgKiB3b3VsZCBtYWtl IHRoZSBvYmplY3Qgc25vb3BlZCB3aGljaCBtaWdodCBoYXZlIGENCj4gPiA+ID4gIAkgKiBuZWdh dGl2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSkgDQo+ID4gPiA+ IHsNCj4gPiA+ID4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiANCj4gPiA+ID4g IUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+IA0KPiA+ID4gSSB0aGluayB3ZSBz aG91bGQganVzdCBtYWtlIHRoaXMgSVNfSVZZQlJJREdFIHNpbmNlIGxhdGVyIA0KPiA+ID4gcGxh dGZvcm1zDQo+ID4gPiBkb24ndCBoYXZlIGFueSBMMyBjb250cm9sIGJpdHMgaW4gdGhlIFBURSBh bnl3YXkuDQo+ID4gPiANCj4gPiA+ID4gIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNo ZV9sZXZlbChvYmosIA0KPiA+ID4gPiBJOTE1X0NBQ0hFX0wzX0xMQyk7DQo+ID4gPiA+ICAJCS8q IEZhaWx1cmUgc2hvdWxkbid0IGV2ZXIgaGFwcGVuIHRoaXMgZWFybHkgKi8NCj4gPiA+ID4gIAkJ aWYgKFdBUk5fT04ocmV0KSkgew0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMNCj4gPiA+ID4gaW5kZXggMWY3ZTZiOS4uZWU4MGUyNiAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMNCj4gPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMNCj4gPiA+ID4gQEAgLTMxMjUs NyArMzEyNSw3IEBAIGludCBpOTE1X2dlbV9ndHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSANCj4g PiA+ID4gKmRldikNCj4gPiA+ID4gIAkJCWd0dC0+YmFzZS5wdGVfZW5jb2RlID0gDQo+ID4gPiA+ IGlyaXNfcHRlX2VuY29kZTsNCj4gPiA+ID4gIAkJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpKQ0K PiA+ID4gPiAgCQkJZ3R0LT5iYXNlLnB0ZV9lbmNvZGUgPSBoc3dfcHRlX2VuY29kZTsNCj4gPiA+ ID4gLQkJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiArCQllbHNlIGlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gDQo+ID4gPiBObyBuZWVkIHRvIGNoYW5n ZS4NCj4gPiA+IA0KPiA+ID4gPiAgCQkJZ3R0LT5iYXNlLnB0ZV9lbmNvZGUgPSBieXRfcHRlX2Vu Y29kZTsNCj4gPiA+ID4gIAkJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykNCj4g PiA+ID4gIAkJCWd0dC0+YmFzZS5wdGVfZW5jb2RlID0gaXZiX3B0ZV9lbmNvZGU7DQo+ID4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIA0KPiA+ ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMNCj4gPiA+ID4gaW5k ZXggMDZjYTQwOC4uZTkyYmU1ZiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jDQo+ID4gPiA+IEBAIC0zODMsNyArMzgzLDcgQEAgaW50IGk5MTVf ZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCANCj4gPiA+ID4gZHJtX2k5MTVfZXJyb3Jfc3RhdGVf YnVmICptLA0KPiA+ID4gPiAgCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQ0KPiA+ID4gPiAgCQkJ ZXJyX3ByaW50ZihtLCAiR1RJRVIgZ3QgJWQ6IDB4JTA4eFxuIiwgDQo+ID4gPiA+IGksDQo+ID4g PiA+ICAJCQkJICAgZXJyb3ItPmd0aWVyW2ldKTsNCj4gPiA+ID4gLQl9IGVsc2UgaWYgKEhBU19Q Q0hfU1BMSVQoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJfSBlbHNlIGlm IChIQVNfUENIX1NQTElUKGRldikgfHwgDQo+ID4gPiA+IEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpDQo+ID4gPiANCj4gPiA+IE5vIG5lZWQgdG8gY2hhbmdlLiBDSFYgdGFrZXMgdGhlIGdlbj49 OCBicmFuY2ggZWFybGllci4NCj4gPiA+IA0KPiA+ID4gPiAgCQllcnJfcHJpbnRmKG0sICJHVElF UjogMHglMDh4XG4iLCBlcnJvcg0KPiA+ID4gPiAtPmd0aWVyWzBdKTsNCj4gPiA+ID4gIAllcnJf cHJpbnRmKG0sICJQR1RCTF9FUjogMHglMDh4XG4iLCBlcnJvci0+cGd0YmxfZXIpOw0KPiA+ID4g PiAgCWVycl9wcmludGYobSwgIkZPUkNFV0FLRTogMHglMDh4XG4iLCBlcnJvcg0KPiA+ID4gPiAt PmZvcmNld2FrZSk7DQo+ID4gPiA+IEBAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCANCj4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+ICANCj4gPiA+ID4gIAkvKiAxOiBSZWdp c3RlcnMgc3BlY2lmaWMgdG8gYSBzaW5nbGUgZ2VuZXJhdGlvbiAqLw0KPiA+ID4gPiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSkgew0KPiA+ID4gPiAgCQllcnJvci0+Z3RpZXJbMF0gPSBJOTE1X1JFQUQoR1RJRVIpOw0K PiA+ID4gPiAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKFZMVl9JRVIpOw0KPiA+ID4gPiAgCQll cnJvci0+Zm9yY2V3YWtlID0gDQo+ID4gPiA+IEk5MTVfUkVBRF9GVyhGT1JDRVdBS0VfVkxWKTsN Cj4gPiA+IA0KPiA+ID4gV2Ugd2FudCB0byBjYXB0dXJlIHRoZSBmb3JjZXdha2Ugb24gQ0hWLCBi dXQgbm90IHRoZSBHVElFUi4gRXJyb3INCj4gPiA+IGNhcHR1cmUgb24gVkxWL0NIViBpcyBwcmV0 dHkgZGVjZW5ybHkgYnJva2VuIGN1cnJlbnRseS4gSSBoYXZlIGEgDQo+ID4gPiBicmFuY2gNCj4g PiA+IHNvbWV3aGVyZSB0aGF0IHRyaWVzIHRvIGZpeCBpdCB1cCwgSSBzdXBwb3NlIEkgc2hvdWxk IGRpZyBpdCB1cCANCj4gPiA+IGFuZCBwb3N0DQo+ID4gPiBpdC4NCj4gPiA+IA0KPiA+ID4gPiBA QCAtMTI1Nyw3ICsxMjU3LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShz dHJ1Y3QgDQo+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4gPiAgCQll cnJvci0+Z3RpZXJbMF0gPSBJOTE1X1JFQUQoR1RJRVIpOw0KPiA+ID4gPiAgCX0gZWxzZSBpZiAo SVNfR0VOMihkZXYpKSB7DQo+ID4gPiA+ICAJCWVycm9yLT5pZXIgPSBJOTE1X1JFQUQxNihJRVIp Ow0KPiA+ID4gPiAtCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgew0KPiA+ID4gPiAr CX0gZWxzZSBpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJZXJy b3ItPmllciA9IEk5MTVfUkVBRChJRVIpOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gIAllcnJvci0+ ZWlyID0gSTkxNV9SRUFEKEVJUik7DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jIA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMNCj4gPiA+ID4gaW5kZXggZTg4ZDY5Mi4uOTIwMWUyNSAxMDA2NDQNCj4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jDQo+ID4gPiA+IEBAIC01ODEsNyArNTgxLDcgQEAgaTkx NV9lbmFibGVfcGlwZXN0YXQoc3RydWN0IA0KPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUsDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJdTMyIGVuYWJsZV9t YXNrOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRl dikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKQ0K PiA+ID4gPiAgCQllbmFibGVfbWFzayA9IA0KPiA+ID4gPiB2bHZfZ2V0X3BpcGVzdGF0X2VuYWJs ZV9tYXNrKGRldl9wcml2LT5kZXYsDQo+ID4gPiA+ICAJCQkJCQkJICANCj4gPiA+ID4gIHN0YXR1 c19tYXNrKTsNCj4gPiA+ID4gIAllbHNlDQo+ID4gPiA+IEBAIC01OTUsNyArNTk1LDcgQEAgaTkx NV9kaXNhYmxlX3BpcGVzdGF0KHN0cnVjdCANCj4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGVudW0gcGlwZSBwaXBlLA0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXUzMiBlbmFibGVf bWFzazsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5k ZXYpKQ0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkN Cj4gPiA+ID4gIAkJZW5hYmxlX21hc2sgPSANCj4gPiA+ID4gdmx2X2dldF9waXBlc3RhdF9lbmFi bGVfbWFzayhkZXZfcHJpdi0+ZGV2LA0KPiA+ID4gPiAgCQkJCQkJCSAgDQo+ID4gPiA+ICBzdGF0 dXNfbWFzayk7DQo+ID4gPiA+ICAJZWxzZQ0KPiA+ID4gPiBAQCAtMTcyMyw3ICsxNzIzLDcgQEAg c3RhdGljIHZvaWQgaTl4eF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IA0KPiA+ID4gPiBkcm1fZGV2 aWNlICpkZXYpDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9U UExVR19TVEFUKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJU19HNFgoZGV2KSB8fCBJU19W QUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwlpZiAoSVNfRzRYKGRldikgfHwgSEFTX0dFTjdf TFBfRkVBVFVSRVMoZGV2KSkgew0KPiA+ID4gPiAgCQl1MzIgaG90cGx1Z190cmlnZ2VyID0gaG90 cGx1Z19zdGF0dXMgJiANCj4gPiA+ID4gSE9UUExVR19JTlRfU1RBVFVTX0c0WDsNCj4gPiA+ID4g IA0KPiA+ID4gPiAgCQlpZiAoaG90cGx1Z190cmlnZ2VyKSB7DQo+ID4gPiA+IEBAIC00NDEyLDcg KzQ0MTIsNyBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCANCj4gPiA+ID4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiA+ICAJSU5JVF9XT1JLKCZkZXZfcHJpdi0+bDNfcGFy aXR5LmVycm9yX3dvcmssIA0KPiA+ID4gPiBpdnlicmlkZ2VfcGFyaXR5X3dvcmspOw0KPiA+ID4g PiAgDQo+ID4gPiA+ICAJLyogTGV0J3MgdHJhY2sgdGhlIGVuYWJsZWQgcnBzIGV2ZW50cyAqLw0K PiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJiANCj4gPiA+ID4gIUlTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKQ0KPiA+ID4gPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSkNCj4gPiA+ID4gIAkJLyogV2FHc3ZSQzBSZXNpZGVuY3lNZXRob2Q6dmx2ICovDQo+ID4gPiA+ ICAJCWRldl9wcml2LT5wbV9ycHNfZXZlbnRzID0gDQo+ID4gPiA+IEdFTjZfUE1fUlBfRE9XTl9F SV9FWFBJUkVEIHwgR0VONl9QTV9SUF9VUF9FSV9FWFBJUkVEOw0KPiA+ID4gPiAgCWVsc2UNCj4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIA0K PiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jDQo+ID4gPiA+IGlu ZGV4IDJkOTE4MjEuLjk1OTIxZmMgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3VzcGVuZC5jDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc3VzcGVuZC5jDQo+ID4gPiA+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGk5 MTVfc2F2ZV9kaXNwbGF5KHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2KQ0KPiA+ID4g PiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT05fREVMQVlTID0gDQo+ID4gPiA+IEk5MTVf UkVBRChQQ0hfUFBfT05fREVMQVlTKTsNCj4gPiA+ID4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2 ZVBQX09GRl9ERUxBWVMgPSANCj4gPiA+ID4gSTkxNV9SRUFEKFBDSF9QUF9PRkZfREVMQVlTKTsN Cj4gPiA+ID4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IgPSANCj4gPiA+ID4g STkxNV9SRUFEKFBDSF9QUF9ESVZJU09SKTsNCj4gPiA+ID4gLQl9IGVsc2UgaWYgKCFJU19WQUxM RVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVsc2UgaWYgKCFIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKSB7DQo+ID4gPiA+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MID0g DQo+ID4gPiA+IEk5MTVfUkVBRChQUF9DT05UUk9MKTsNCj4gPiA+ID4gIAkJZGV2X3ByaXYtPnJl Z2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyA9IA0KPiA+ID4gPiBJOTE1X1JFQUQoUFBfT05fREVMQVlT KTsNCj4gPiA+ID4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSANCj4g PiA+ID4gSTkxNV9SRUFEKFBQX09GRl9ERUxBWVMpOw0KPiA+ID4gPiBAQCAtODQsNyArODQsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1Y3QgDQo+ID4gPiA+IGRybV9k ZXZpY2UgKmRldikNCj4gPiA+ID4gIAkJSTkxNV9XUklURShQQ0hfUFBfT0ZGX0RFTEFZUywgZGV2 X3ByaXYNCj4gPiA+ID4gLT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsNCj4gPiA+ID4gIAkJ STkxNV9XUklURShQQ0hfUFBfRElWSVNPUiwgZGV2X3ByaXYNCj4gPiA+ID4gLT5yZWdmaWxlLnNh dmVQUF9ESVZJU09SKTsNCj4gPiA+ID4gIAkJSTkxNV9XUklURShQQ0hfUFBfQ09OVFJPTCwgZGV2 X3ByaXYNCj4gPiA+ID4gLT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MKTsNCj4gPiA+ID4gLQl9IGVs c2UgaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVsc2UgaWYgKCFIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCUk5MTVfV1JJVEUoUFBfT05fREVM QVlTLCBkZXZfcHJpdg0KPiA+ID4gPiAtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7DQo+ID4g PiA+ICAJCUk5MTVfV1JJVEUoUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYNCj4gPiA+ID4gLT5yZWdm aWxlLnNhdmVQUF9PRkZfREVMQVlTKTsNCj4gPiA+ID4gIAkJSTkxNV9XUklURShQUF9ESVZJU09S LCBkZXZfcHJpdg0KPiA+ID4gPiAtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IpOw0KPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIA0KPiA+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYw0KPiA+ID4gPiBpbmRleCBmOTI5YzYx Li5kZDUwNmUzIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5j DQo+ID4gPiA+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3Ry dWN0IGRybV9kZXZpY2UgDQo+ID4gPiA+ICpkZXYsDQo+ID4gPiA+ICAJaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyogT24gVkxWIGFuZCBDSFYs IHJlc2lkZW5jeSB0aW1lIGlzIGluIENaIHVuaXRzIA0KPiA+ID4gPiByYXRoZXIgdGhhbiAxLjI4 dXMgKi8NCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJdW5pdHMgPSAxOw0KPiA+ ID4gPiAgCQlkaXYgPSBkZXZfcHJpdi0+Y3pjbGtfZnJlcTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBA QCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0 cnVjdCANCj4gPiA+ID4gZGV2aWNlICprZGV2LA0KPiA+ID4gPiAgCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7DQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRl dikpIHsNCj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikp IHsNCj4gPiA+ID4gIAkJdTMyIGZyZXE7DQo+ID4gPiA+ICAJCWZyZXEgPSB2bHZfcHVuaXRfcmVh ZChkZXZfcHJpdiwgDQo+ID4gPiA+IFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOw0KPiA+ID4gPiAg CQlyZXQgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgKGZyZXEgPj4gOCkgJiANCj4gPiA+ID4g MHhmZik7DQo+ID4gPiA+IEBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2Zz KHN0cnVjdCBkcm1fZGV2aWNlIA0KPiA+ID4gPiAqZGV2KQ0KPiA+ID4gPiAgCQlpZiAocmV0KQ0K PiA+ID4gPiAgCQkJRFJNX0VSUk9SKCJSQzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1cCANCj4gPiA+ ID4gZmFpbGVkXG4iKTsNCj4gPiA+ID4gIAl9DQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgew0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4g PiA+ICAJCXJldCA9IHN5c2ZzX21lcmdlX2dyb3VwKCZkZXYtPnByaW1hcnktPmtkZXYNCj4gPiA+ ID4gLT5rb2JqLA0KPiA+ID4gPiAgCQkJCQkmbWVkaWFfcmM2X2F0dHJfZ3JvdXApDQo+ID4gPiA+ IDsNCj4gPiA+ID4gIAkJaWYgKHJldCkNCj4gPiA+ID4gQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lk IGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgDQo+ID4gPiA+ICpkZXYpDQo+ID4g PiA+ICAJfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJcmV0ID0gMDsNCj4gPiA+ID4gLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYp KQ0KPiA+ID4gPiAgCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rl dg0KPiA+ID4gPiAtPmtvYmosIHZsdl9hdHRycyk7DQo+ID4gPiA+ICAJZWxzZSBpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNikNCj4gPiA+ID4gIAkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVz KCZkZXYtPnByaW1hcnktPmtkZXYNCj4gPiA+ID4gLT5rb2JqLCBnZW42X2F0dHJzKTsNCj4gPiA+ ID4gQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9k ZXZpY2UgDQo+ID4gPiA+ICpkZXYpDQo+ID4gPiA+ICB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMo c3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzeXNmc19yZW1v dmVfYmluX2ZpbGUoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgDQo+ID4gPiA+ICZlcnJvcl9z dGF0ZV9hdHRyKTsNCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiAr CWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQlzeXNmc19yZW1vdmVf ZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgDQo+ID4gPiA+IHZsdl9hdHRycyk7DQo+ ID4gPiA+ICAJZWxzZQ0KPiA+ID4gPiAgCQlzeXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFy eS0+a2Rldi0+a29iaiwgDQo+ID4gPiA+IGdlbjZfYXR0cnMpOw0KPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyANCj4gPiA+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jDQo+ID4gPiA+IGluZGV4IDlhYTgzZTcuLjY3MzRl YWUgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlv LmMNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ ID4gPiBAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19kaXNh YmxlKHN0cnVjdCANCj4gPiA+ID4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gPiA+ID4gIAlp ZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikpIHsNCj4gPiA+ID4gIAkJYXVkX2NvbmZpZyA9 IElCWF9BVURfQ0ZHKHBpcGUpOw0KPiA+ID4gPiAgCQlhdWRfY250cmxfc3QyID0gSUJYX0FVRF9D TlRMX1NUMjsNCj4gPiA+ID4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7 DQo+ID4gPiA+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpIHsN Cj4gPiA+ID4gIAkJYXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUpOw0KPiA+ID4gPiAgCQlh dWRfY250cmxfc3QyID0gVkxWX0FVRF9DTlRMX1NUMjsNCj4gPiA+ID4gIAl9IGVsc2Ugew0KPiA+ ID4gPiBAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19lbmFi bGUoc3RydWN0IA0KPiA+ID4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQo+ID4gPiA+ICAJ CWF1ZF9jb25maWcgPSBJQlhfQVVEX0NGRyhwaXBlKTsNCj4gPiA+ID4gIAkJYXVkX2NudGxfc3Qg PSBJQlhfQVVEX0NOVExfU1QocGlwZSk7DQo+ID4gPiA+ICAJCWF1ZF9jbnRybF9zdDIgPSBJQlhf QVVEX0NOVExfU1QyOw0KPiA+ID4gPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhjb25uZWN0 b3ItPmRldikpIHsNCj4gPiA+ID4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGNv bm5lY3Rvci0+ZGV2KSkgew0KPiA+ID4gPiAgCQloZG1pd19oZG1pZWRpZCA9IFZMVl9IRE1JV19I RE1JRURJRChwaXBlKTsNCj4gPiA+ID4gIAkJYXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUp Ow0KPiA+ID4gPiAgCQlhdWRfY250bF9zdCA9IFZMVl9BVURfQ05UTF9TVChwaXBlKTsNCj4gPiA+ ID4gQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIGludGVsX2luaXRfYXVkaW8oc3RydWN0IGRybV9k ZXZpY2UgDQo+ID4gPiA+ICpkZXYpDQo+ID4gPiA+ICAJaWYgKElTX0c0WChkZXYpKSB7DQo+ID4g PiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IA0KPiA+ID4gPiBn NHhfYXVkaW9fY29kZWNfZW5hYmxlOw0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRp b19jb2RlY19kaXNhYmxlID0gDQo+ID4gPiA+IGc0eF9hdWRpb19jb2RlY19kaXNhYmxlOw0KPiA+ ID4gPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJfSBlbHNl IGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCWRldl9wcml2LT5k aXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IA0KPiA+ID4gPiBpbGtfYXVkaW9fY29kZWNfZW5h YmxlOw0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlID0g DQo+ID4gPiA+IGlsa19hdWRpb19jb2RlY19kaXNhYmxlOw0KPiA+ID4gPiAgCX0gZWxzZSBpZiAo SVNfSEFTV0VMTChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IA0KPiA+ID4gPiA4KSB7 DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAN Cj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYw0KPiA+ID4gPiBpbmRl eCAxMjAwOGFmLi45NGQxYWIyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jcnQuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jcnQuYw0KPiA+ID4gPiBAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBib29sIGludGVsX2Ny dF9kZXRlY3RfaG90cGx1ZyhzdHJ1Y3QgDQo+ID4gPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikNCj4gPiA+ID4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXYpKQ0KPiA+ID4gPiAgCQlyZXR1cm4g DQo+ID4gPiA+IGludGVsX2lyb25sYWtlX2NydF9kZXRlY3RfaG90cGx1Zyhjb25uZWN0b3IpOw0K PiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkNCj4gPiA+ID4gKwlp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJcmV0dXJuIA0KPiA+ID4g PiB2YWxsZXl2aWV3X2NydF9kZXRlY3RfaG90cGx1Zyhjb25uZWN0b3IpOw0KPiA+ID4gDQo+ID4g PiBUaGVyZSdzIG5vIGNydCBvbiBDSFYsIHNvIGRvZXNuJ3QgbmVlZCBjaGFuZ2luZy4NCj4gPiA+ IA0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyoNCj4gPiA+ID4gQEAgLTc4Niw3ICs3ODYsNyBAQCB2 b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICANCj4g PiA+ID4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXYpKQ0KPiA+ID4gPiAgCQlhZHBhX3JlZyA9IFBD SF9BRFBBOw0KPiA+ID4gPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkNCj4gPiA+ID4g KwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQlhZHBhX3Jl ZyA9IFZMVl9BRFBBOw0KPiA+ID4gPiAgCWVsc2UNCj4gPiA+ID4gIAkJYWRwYV9yZWcgPSBBRFBB Ow0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiA+ ID4gPiBpbmRleCBhYWMxNzAxMS4uOGU1MWI4MyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiA+ID4gPiBAQCAtMTg1LDcgKzE4NSw3IEBAIGlu dCBpbnRlbF9ocmF3Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICAJdWludDMy X3QgY2xrY2ZnOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyogVGhlcmUgaXMgbm8gQ0xLQ0ZHIHJl ZyBpbiBWYWxsZXl2aWV3LiBWTFYgaHJhd2NsayANCj4gPiA+ID4gaXMgMjAwIE1IeiAqLw0KPiA+ ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpDQo+ID4gPiA+ICAJCXJldHVybiAyMDA7DQo+ID4gPiA+ICANCj4gPiA+ ID4gIAljbGtjZmcgPSBJOTE1X1JFQUQoQ0xLQ0ZHKTsNCj4gPiA+ID4gQEAgLTIxMyw3ICsyMTMs NyBAQCBpbnQgaW50ZWxfaHJhd2NsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiA+ID4gPiAg DQo+ID4gPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3pjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgDQo+ID4gPiA+ICpkZXZfcHJpdikNCj4gPiA+ID4gIHsNCj4gPiA+ID4gLQlpZiAo IUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQ0KPiA+ID4gPiArCWlmICghSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2X3ByaXYpKQ0KPiA+ID4gPiAgCQlyZXR1cm47DQo+ID4gPiA+ICANCj4gPiA+ID4g IAlkZXZfcHJpdi0+Y3pjbGtfZnJlcSA9IA0KPiA+ID4gPiB2bHZfZ2V0X2Nja19jbG9ja19ocGxs KGRldl9wcml2LCAiY3pjbGsiLA0KPiA+ID4gPiBAQCAtNzE0LDExICs3MTQsMTEgQEAgc3RhdGlj IGJvb2wgaW50ZWxfUExMX2lzX3ZhbGlkKHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2 LA0KPiA+ID4gPiAgCWlmIChjbG9jay0+bTEgIDwgbGltaXQtPm0xLm1pbiAgfHwgbGltaXQtPm0x Lm1heCAgPCANCj4gPiA+ID4gY2xvY2stPm0xKQ0KPiA+ID4gPiAgCQlJTlRFTFBsbEludmFsaWQo Im0xIG91dCBvZiByYW5nZVxuIik7DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlpZiAoIUlTX1BJTkVW SUVXKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiANCj4gPiA+ID4gIUlTX0JST1hUT04o ZGV2KSkNCj4gPiA+ID4gKwlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikgJiYgDQo+ID4gPiA+ICFJU19CUk9YVE9OKGRldikpDQo+ID4gPiA+ICAJCWlm IChjbG9jay0+bTEgPD0gY2xvY2stPm0yKQ0KPiA+ID4gPiAgCQkJSU5URUxQbGxJbnZhbGlkKCJt MSA8PSBtMlxuIik7DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2 KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7DQo+ID4gPiA+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpIHsNCj4gPiA+ID4gIAkJaWYgKGNsb2NrLT5w IDwgbGltaXQtPnAubWluIHx8IGxpbWl0LT5wLm1heCA8IA0KPiA+ID4gPiBjbG9jay0+cCkNCj4g PiA+ID4gIAkJCUlOVEVMUGxsSW52YWxpZCgicCBvdXQgb2YgcmFuZ2VcbiIpOw0KPiA+ID4gPiAg CQlpZiAoY2xvY2stPm0gPCBsaW1pdC0+bS5taW4gfHwgbGltaXQtPm0ubWF4IDwgDQo+ID4gPiA+ IGNsb2NrLT5tKQ0KPiA+ID4gPiBAQCAtMTMwMyw3ICsxMzAzLDcgQEAgdm9pZCBhc3NlcnRfcGFu ZWxfdW5sb2NrZWQoc3RydWN0IA0KPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwN Cj4gPiA+ID4gIAkJICAgIEk5MTVfUkVBRChQQ0hfTFZEUykgJiBMVkRTX1BJUEVCX1NFTEVDVCkN Cj4gPiA+ID4gIAkJCXBhbmVsX3BpcGUgPSBQSVBFX0I7DQo+ID4gPiA+ICAJCS8qIFhYWDogZWxz ZSBmaXggZm9yIGVEUCAqLw0KPiA+ID4gPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYp KSB7DQo+ID4gPiA+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ ID4gPiA+ICAJCS8qIHByZXN1bWFibHkgd3JpdGUgbG9jayBkZXBlbmRzIG9uIHBpcGUsIG5vdCAN Cj4gPiA+ID4gcG9ydCBzZWxlY3QgKi8NCj4gPiA+ID4gIAkJcHBfcmVnID0gVkxWX1BJUEVfUFBf Q09OVFJPTChwaXBlKTsNCj4gPiA+ID4gIAkJcGFuZWxfcGlwZSA9IHBpcGU7DQo+ID4gPiA+IEBA IC0xNDIxLDcgKzE0MjEsNyBAQCBzdGF0aWMgdm9pZCANCj4gPiA+ID4gYXNzZXJ0X3Nwcml0ZXNf ZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4gPiAgCQkJ ICAgICAicGxhbmUgJWQgYXNzZXJ0aW9uIGZhaWx1cmUsIA0KPiA+ID4gPiBzaG91bGQgYmUgb2Zm IG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwNCj4gPiA+ID4gIAkJCSAgICAgc3By aXRlLCBwaXBlX25hbWUocGlwZSkpOw0KPiA+ID4gPiAgCQl9DQo+ID4gPiA+IC0JfSBlbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJZm9yX2VhY2hfc3ByaXRlKGRldl9wcml2LCBw aXBlLCBzcHJpdGUpIHsNCj4gPiA+ID4gIAkJCXUzMiB2YWwgPSBJOTE1X1JFQUQoU1BDTlRSKHBp cGUsIA0KPiA+ID4gPiBzcHJpdGUpKTsNCj4gPiA+ID4gIAkJCUk5MTVfU1RBVEVfV0FSTih2YWwg JiBTUF9FTkFCTEUsDQo+ID4gPiA+IEBAIC0xNjA1LDcgKzE2MDUsNyBAQCBzdGF0aWMgdm9pZCB2 bHZfZW5hYmxlX3BsbChzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2NydGMgKmNydGMsDQo+ID4gPiA+ ICAJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOw0KPiA+ID4gPiAg DQo+ID4gPiA+ICAJLyogTm8gcmVhbGx5LCBub3QgZm9yIElMSysgKi8NCj4gPiA+ID4gLQlCVUdf T04oIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpOw0KPiA+ID4gPiArCUJVR19PTighSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikpOw0KPiA+ID4gDQo+ID4gPiBUaGlzIGlz IFZMViBzcGVjaWZpYywgc28gbm8gbmVlZCB0byBjaGFuZ2UuIENvdWxkIGp1c3Qga2lsbCB0aGVz ZQ0KPiA+ID4gQlVHX09OcyB0aG91Z2guLi4NCj4gPiA+IA0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJ LyogUExMIGlzIHByb3RlY3RlZCBieSBwYW5lbCwgbWFrZSBzdXJlIHdlIGNhbiB3cml0ZSANCj4g PiA+ID4gaXQgKi8NCj4gPiA+ID4gIAlpZiAoSVNfTU9CSUxFKGRldl9wcml2LT5kZXYpKQ0KPiA+ ID4gPiBAQCAtMjMxNyw3ICsyMzE3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCANCj4gPiA+ID4g aW50ZWxfbGluZWFyX2FsaWdubWVudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp DQo+ID4gPiA+ICAJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkNCj4gPiA+ID4g IAkJcmV0dXJuIDI1NiAqIDEwMjQ7DQo+ID4gPiA+ICAJZWxzZSBpZiAoSVNfQlJPQURXQVRFUihk ZXZfcHJpdikgfHwgDQo+ID4gPiA+IElTX0NSRVNUTElORShkZXZfcHJpdikgfHwNCj4gPiA+ID4g LQkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQ0KPiA+ID4gPiArCQkgSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2X3ByaXYpKQ0KPiA+ID4gPiAgCQlyZXR1cm4gMTI4ICogMTAyNDsNCj4gPiA+ID4g IAllbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpDQo+ID4gPiA+ICAJCXJl dHVybiA0ICogMTAyNDsNCj4gPiA+ID4gQEAgLTU0NDgsNyArNTQ0OCw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3VwZGF0ZV9jZGNsayhzdHJ1Y3QgDQo+ID4gPiA+IGRybV9kZXZpY2UgKmRldikNCj4g PiA+ID4gIAkgKiBCU3BlYyBlcnJvbmVvdXNseSBjbGFpbXMgd2Ugc2hvdWxkIGFpbSBmb3IgNE1I eiwgDQo+ID4gPiA+IGJ1dA0KPiA+ID4gPiAgCSAqIGluIGZhY3QgMU1IeiBpcyB0aGUgY29ycmVj dCBmcmVxdWVuY3kuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgew0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4g PiA+ICAJCS8qDQo+ID4gPiA+ICAJCSAqIFByb2dyYW0gdGhlIGdtYnVzX2ZyZXEgYmFzZWQgb24g dGhlIGNkY2xrIA0KPiA+ID4gPiBmcmVxdWVuY3kuDQo+ID4gPiA+ICAJCSAqIEJTcGVjIGVycm9u ZW91c2x5IGNsYWltcyB3ZSBzaG91bGQgYWltIGZvciANCj4gPiA+ID4gNE1IeiwgYnV0DQo+ID4g PiA+IEBAIC03MTY5LDcgKzcxNjksNyBAQCBzdGF0aWMgaW50IGk5eHhfZ2V0X3JlZmNsayhjb25z dCBzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gPiA+ ICANCj4gPiA+ID4gIAlXQVJOX09OKCFjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsNCj4gPiA+ID4g IA0KPiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQlJPWFRPTihkZXYpKSB7 DQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgfHwgSVNfQlJPWFRPTihk ZXYpKSB7DQo+ID4gPiA+ICAJCXJlZmNsayA9IDEwMDAwMDsNCj4gPiA+ID4gIAl9IGVsc2UgaWYg KGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgDQo+ID4gPiA+IElOVEVMX09V VFBVVF9MVkRTKSAmJg0KPiA+ID4gPiAgCSAgICBpbnRlbF9wYW5lbF91c2Vfc3NjKGRldl9wcml2 KSAmJiBudW1fY29ubmVjdG9ycyA8IA0KPiA+ID4gPiAyKSB7DQo+ID4gPiA+IEBAIC03ODY4LDcg Kzc4NjgsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgDQo+ID4gPiA+ IGludGVsX2NydGMgKmludGVsX2NydGMpDQo+ID4gPiA+ICAJCXBpcGVjb25mIHw9IFBJUEVDT05G X0RPVUJMRV9XSURFOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyogb25seSBnNHggYW5kIGxhdGVy IGhhdmUgZmFuY3kgYnBjL2RpdGhlciBjb250cm9scyANCj4gPiA+ID4gKi8NCj4gPiA+ID4gLQlp ZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJaWYgKElT X0c0WChkZXYpIHx8IEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJLyog QnNwZWMgY2xhaW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmluZyANCj4gPiA+ID4gZm9yIDMw YnBwIHBpcGVzLiAqLw0KPiA+ID4gPiAgCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRoZXIg JiYgaW50ZWxfY3J0Yw0KPiA+ID4gPiAtPmNvbmZpZy0+cGlwZV9icHAgIT0gMzApDQo+ID4gPiA+ ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ESVRIRVJfRU4gfA0KPiA+ID4gPiBAQCAtNzkwOCw3 ICs3OTA4LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IA0KPiA+ID4g PiBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQ0KPiA+ID4gPiAgCX0gZWxzZQ0KPiA+ID4gPiAgCQlw aXBlY29uZiB8PSBQSVBFQ09ORl9QUk9HUkVTU0lWRTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnDQo+ID4gPiA+IC0+bGlt aXRlZF9jb2xvcl9yYW5nZSkNCj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSAmJiBpbnRlbF9jcnRjLT5jb25maWcNCj4gPiA+ID4gLT5saW1pdGVkX2NvbG9yX3JhbmdlKQ0K PiA+ID4gPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1Q7DQo+ID4g PiA+ICANCj4gPiA+ID4gIAlJOTE1X1dSSVRFKFBJUEVDT05GKGludGVsX2NydGMtPnBpcGUpLCBw aXBlY29uZik7DQo+ID4gPiA+IEBAIC04MTU1LDcgKzgxNTUsNyBAQCBzdGF0aWMgYm9vbCBpOXh4 X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2NydGMgKmNydGMsDQo+ID4g PiA+ICAJaWYgKCEodG1wICYgUElQRUNPTkZfRU5BQkxFKSkNCj4gPiA+ID4gIAkJcmV0dXJuIGZh bHNlOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJ RVcoZGV2KSkgew0KPiA+ID4gPiArCWlmIChJU19HNFgoZGV2KSB8fCBIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCXN3aXRjaCAodG1wICYgUElQRUNPTkZfQlBDX01BU0sp IHsNCj4gPiA+ID4gIAkJY2FzZSBQSVBFQ09ORl82QlBDOg0KPiA+ID4gPiAgCQkJcGlwZV9jb25m aWctPnBpcGVfYnBwID0gMTg7DQo+ID4gPiA+IEBAIC04MTcxLDcgKzgxNzEsNyBAQCBzdGF0aWMg Ym9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2NydGMgKmNy dGMsDQo+ID4gPiA+ICAJCX0NCj4gPiA+ID4gIAl9DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpICYmICh0bXAgJiANCj4gPiA+ID4gUElQRUNPTkZfQ09MT1JfUkFO R0VfU0VMRUNUKSkNCj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJiAo dG1wICYgDQo+ID4gPiA+IFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpDQo+ID4gPiA+ICAJ CXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1ZTsNCj4gPiA+ID4gIA0KPiA+ ID4gPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpDQo+ID4gPiA+IEBAIC04MTk5LDcg KzgxOTksNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgDQo+ID4g PiA+IGludGVsX2NydGMgKmNydGMsDQo+ID4gPiA+ICAJCXBpcGVfY29uZmlnLT5waXhlbF9tdWx0 aXBsaWVyID0gMTsNCj4gPiA+ID4gIAl9DQo+ID4gPiA+ICAJcGlwZV9jb25maWctPmRwbGxfaHdf c3RhdGUuZHBsbCA9IEk5MTVfUkVBRChEUExMKGNydGMNCj4gPiA+ID4gLT5waXBlKSk7DQo+ID4g PiA+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwlpZiAoIUhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJLyoNCj4gPiA+ID4gIAkJICogRFBMTF9E Vk9fMlhfTU9ERSBtdXN0IGJlIGVuYWJsZWQgZm9yIGJvdGggDQo+ID4gPiA+IERQTExzDQo+ID4g PiA+ICAJCSAqIG9uIDgzMC4gRmlsdGVyIGl0IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QNCj4g PiA+ID4gQEAgLTExNTE2LDcgKzExNTE2LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2Vf ZmxpcChzdHJ1Y3QgDQo+ID4gPiA+IGRybV9jcnRjICpjcnRjLA0KPiA+ID4gPiAgCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQ0KPiA+ID4gPiAgCQl3b3JrLT5m bGlwX2NvdW50ID0gDQo+ID4gPiA+IEk5MTVfUkVBRChQSVBFX0ZMSVBDT1VOVF9HNFgocGlwZSkp ICsgMTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsNCj4g PiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgew0KPiA+ID4gPiAgCQlyaW5n ID0gJmRldl9wcml2LT5yaW5nW0JDU107DQo+ID4gPiA+ICAJCWlmIChvYmotPnRpbGluZ19tb2Rl ICE9IGludGVsX2ZiX29iaih3b3JrDQo+ID4gPiA+IC0+b2xkX2ZiKS0+dGlsaW5nX21vZGUpDQo+ ID4gPiA+ICAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2UgDQo+ID4gPiA+ IHRpbGluZyAqLw0KPiA+ID4gPiBAQCAtMTE5OTcsNyArMTE5OTcsNyBAQCBjb21wdXRlX2Jhc2Vs aW5lX3BpcGVfYnBwKHN0cnVjdCANCj4gPiA+ID4gaW50ZWxfY3J0YyAqY3J0YywNCj4gPiA+ID4g IAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOw0KPiA+ID4gPiAg CWludCBicHAsIGk7DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlpZiAoKElTX0c0WChkZXYpIHx8IElT X1ZBTExFWVZJRVcoZGV2KSkpDQo+ID4gPiA+ICsJaWYgKChJU19HNFgoZGV2KSB8fCBIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKSkNCj4gPiA+ID4gIAkJYnBwID0gMTAqMzsNCj4gPiA+ID4gIAll bHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KQ0KPiA+ID4gPiAgCQlicHAgPSAxMioz Ow0KPiA+ID4gPiBAQCAtMTI2MDcsNyArMTI2MDcsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21w YXJlKHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2LA0KPiA+ID4gPiAgCVBJUEVfQ09O Rl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOw0KPiA+ID4gPiAgCVBJUEVfQ09ORl9DSEVDS19J KGhhc19oZG1pX3NpbmspOw0KPiA+ID4gPiAgCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4 ICYmICFJU19IQVNXRUxMKGRldikpIHx8DQo+ID4gPiA+IC0JICAgIElTX1ZBTExFWVZJRVcoZGV2 KSkNCj4gPiA+ID4gKwkgICAgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJ UElQRV9DT05GX0NIRUNLX0kobGltaXRlZF9jb2xvcl9yYW5nZSk7DQo+ID4gPiA+ICAJUElQRV9D T05GX0NIRUNLX0koaGFzX2luZm9mcmFtZSk7DQo+ID4gPiA+ICANCj4gPiA+ID4gQEAgLTE0MjU2 LDcgKzE0MjU2LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQoc3RydWN0IA0KPiA+ ID4gPiBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkN Cj4gPiA+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2KSAmJiAhZGV2X3ByaXYNCj4gPiA+ID4gLT52YnQuaW50X2NydF9zdXBwb3J0 KQ0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmICFkZXZfcHJpdg0K PiA+ID4gPiAtPnZidC5pbnRfY3J0X3N1cHBvcnQpDQo+ID4gPiA+ICAJCXJldHVybiBmYWxzZTsN Cj4gPiA+IA0KPiA+ID4gQWdhaW4sIG5vIGNydCBvbiBDSFYsIHNvIGRvZXNuJ3QgbmVlZCBjaGFu Z2luZy4NCj4gPiA+IA0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJcmV0dXJuIHRydWU7DQo+ID4gPiA+ IEBAIC0xNDM0MSw3ICsxNDM0MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291dHB1dHMo c3RydWN0IA0KPiA+ID4gPiBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICANCj4gPiA+ID4gIAkJ aWYgKEk5MTVfUkVBRChQQ0hfRFBfRCkgJiBEUF9ERVRFQ1RFRCkNCj4gPiA+ID4gIAkJCWludGVs X2RwX2luaXQoZGV2LCBQQ0hfRFBfRCwgUE9SVF9EKTsNCj4gPiA+ID4gLQl9IGVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkgew0KPiA+ID4gPiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkgew0KPiA+ID4gPiAgCQkvKg0KPiA+ID4gPiAgCQkgKiBUaGUgRFBfREVURUNU RUQgYml0IGlzIHRoZSBsYXRjaGVkIHN0YXRlIG9mIA0KPiA+ID4gPiB0aGUgRERDDQo+ID4gPiA+ ICAJCSAqIFNEQSBwaW4gYXQgYm9vdC4gSG93ZXZlciBzaW5jZSBlRFAgZG9lc24ndCANCj4gPiA+ ID4gcmVxdWlyZSBEREMNCj4gPiA+ID4gQEAgLTE0NDkwLDcgKzE0NDkwLDcgQEAgdTMyIGludGVs X2ZiX3BpdGNoX2xpbWl0KHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2LCB1aW50NjRf dCBmYl9tb2RpZmllciwNCj4gPiA+ID4gIAkJICogIHBpeGVscyBhbmQgMzJLIGJ5dGVzLiINCj4g PiA+ID4gIAkJICovDQo+ID4gPiA+ICAJCSByZXR1cm4gDQo+ID4gPiA+IG1pbig4MTkyKmRybV9m b3JtYXRfcGxhbmVfY3BwKHBpeGVsX2Zvcm1hdCwgMCksIDMyNzY4KTsNCj4gPiA+ID4gLQl9IGVs c2UgaWYgKGdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVs c2UgaWYgKGdlbiA+PSA1ICYmICFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ ICAJCXJldHVybiAzMioxMDI0Ow0KPiA+ID4gPiAgCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsNCj4g PiA+ID4gIAkJaWYgKGZiX21vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQ0KPiA+ ID4gPiBAQCAtMTQ1OTQsNyArMTQ1OTQsNyBAQCBzdGF0aWMgaW50IA0KPiA+ID4gPiBpbnRlbF9m cmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+ID4gPiA+ICAJCX0NCj4g PiA+ID4gIAkJYnJlYWs7DQo+ID4gPiA+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiA+ ID4gPiAtCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiBJTlRFTF9JTkZPKGRldikNCj4gPiA+ ID4gLT5nZW4gPCA5KSB7DQo+ID4gPiA+ICsJCWlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSAmJiANCj4gPiA+ID4gSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7DQo+ID4gPiA+ICAJCQlE Uk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogDQo+ID4gPiA+ICVzXG4iLA0KPiA+ ID4gPiAgCQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZA0KPiA+ID4gPiAtPnBpeGVs X2Zvcm1hdCkpOw0KPiA+ID4gPiAgCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+IEBAIC0xNDYx MCw3ICsxNDYxMCw3IEBAIHN0YXRpYyBpbnQgDQo+ID4gPiA+IGludGVsX2ZyYW1lYnVmZmVyX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gPiA+ID4gIAkJfQ0KPiA+ID4gPiAgCQlicmVh azsNCj4gPiA+ID4gIAljYXNlIERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6DQo+ID4gPiA+IC0JCWlm ICghSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJCWlmICghSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkgew0KPiA+ID4gPiAgCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBm b3JtYXQ6IA0KPiA+ID4gPiAlc1xuIiwNCj4gPiA+ID4gIAkJCQkgIGRybV9nZXRfZm9ybWF0X25h bWUobW9kZV9jbWQNCj4gPiA+ID4gLT5waXhlbF9mb3JtYXQpKTsNCj4gPiA+ID4gIAkJCXJldHVy biAtRUlOVkFMOw0KPiA+ID4gPiBAQCAtMTQ3MzgsNyArMTQ3MzgsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IA0KPiA+ID4gPiBkcm1fZGV2aWNlICpkZXYpDQo+ID4g PiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZSA9IA0KPiA+ID4gPiBpcm9ubGFr ZV9jcnRjX2Rpc2FibGU7DQo+ID4gPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmlt YXJ5X3BsYW5lID0NCj4gPiA+ID4gIAkJCWlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lOw0K PiA+ID4gPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJfSBl bHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCWRldl9wcml2 LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyA9IA0KPiA+ID4gPiBpOXh4X2dldF9waXBlX2NvbmZp ZzsNCj4gPiA+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmln ID0NCj4gPiA+ID4gIAkJCWk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnOw0KPiA+ID4gPiBA QCAtMTQ3NzEsNyArMTQ3NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3Ry dWN0IA0KPiA+ID4gPiBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICAJZWxzZSBpZiAoSVNfSEFT V0VMTChkZXYpKQ0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9j a19zcGVlZCA9DQo+ID4gPiA+ICAJCQloYXN3ZWxsX2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVkOw0K PiA+ID4gPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkNCj4gPiA+ID4gKwllbHNlIGlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxh eS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZCA9DQo+ID4gPiA+ICAJCQl2YWxsZXl2aWV3X2dldF9k aXNwbGF5X2Nsb2NrX3NwZWVkOw0KPiA+ID4gPiAgCWVsc2UgaWYgKElTX0dFTjUoZGV2KSkNCj4g PiA+ID4gQEAgLTE0ODMyLDcgKzE0ODMyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNw bGF5KHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2KQ0KPiA+ID4gPiAgCQkJZGV2X3By aXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0NCj4gPiA+ID4gIAkJCQlicm9hZHdlbGxf bW9kZXNldF9jYWxjX2NkY2xrOw0KPiA+ID4gPiAgCQl9DQo+ID4gPiA+IC0JfSBlbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21t aXRfY2RjbGsgPQ0KPiA+ID4gPiAgCQkJdmFsbGV5dmlld19tb2Rlc2V0X2NvbW1pdF9jZGNsazsN Cj4gPiA+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0NCj4gPiA+ ID4gQEAgLTE1NjA2LDcgKzE1NjA2LDcgQEAgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShz dHJ1Y3QgDQo+ID4gPiA+IGRybV9kZXZpY2UgKmRldikNCj4gPiA+ID4gIAkJcGxsLT5vbiA9IGZh bHNlOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ID4gPiA+ ICAJCXZsdl93bV9nZXRfaHdfc3RhdGUoZGV2KTsNCj4gPiA+ID4gIAllbHNlIGlmIChJU19HRU45 KGRldikpDQo+ID4gPiA+ICAJCXNrbF93bV9nZXRfaHdfc3RhdGUoZGV2KTsNCj4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgDQo+ID4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0KPiA+ID4gPiBpbmRleCBmMmJmY2EwLi5hYzg0 ZjgzIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j DQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4gPiA+ID4g QEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIHZsdl9wb3dlcl9zZXF1ZW5jZXJfcmVzZXQoc3RydWN0 IA0KPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsNCj4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcjsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChXQVJOX09OKCFJU19W QUxMRVlWSUVXKGRldikpKQ0KPiA+ID4gPiArCWlmIChXQVJOX09OKCFIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpKSkNCj4gPiA+ID4gIAkJcmV0dXJuOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyoN Cj4gPiA+ID4gQEAgLTU4Miw3ICs1ODIsNyBAQCBzdGF0aWMgaW50IGVkcF9ub3RpZnlfaGFuZGxl cihzdHJ1Y3QgDQo+ID4gPiA+IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGNv ZGUsDQo+ID4gPiA+ICANCj4gPiA+ID4gIAlwcHNfbG9jayhpbnRlbF9kcCk7DQo+ID4gPiA+ICAN Cj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJZW51bSBwaXBlIHBpcGUgPSANCj4g PiA+ID4gdmx2X3Bvd2VyX3NlcXVlbmNlcl9waXBlKGludGVsX2RwKTsNCj4gPiA+ID4gIAkJaTkx NV9yZWdfdCBwcF9jdHJsX3JlZywgcHBfZGl2X3JlZzsNCj4gPiA+ID4gIAkJdTMyIHBwX2RpdjsN Cj4gPiA+ID4gQEAgLTYxMCw3ICs2MTAsNyBAQCBzdGF0aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF9w b3dlcihzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ID4gIA0KPiA+ ID4gPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wcHNfbXV0ZXgpOw0KPiA+ID4g PiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJg0KPiA+ID4gPiArCWlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmDQo+ID4gPiA+ICAJICAgIGludGVsX2RwLT5wcHNf cGlwZSA9PSBJTlZBTElEX1BJUEUpDQo+ID4gPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiA+ID4g IA0KPiA+ID4gPiBAQCAtNjI0LDcgKzYyNCw3IEBAIHN0YXRpYyBib29sIGVkcF9oYXZlX3BhbmVs X3ZkZChzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiA+ID4gIA0KPiA+ ID4gPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wcHNfbXV0ZXgpOw0KPiA+ID4g PiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJg0KPiA+ID4gPiArCWlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmDQo+ID4gPiA+ICAJICAgIGludGVsX2RwLT5wcHNf cGlwZSA9PSBJTlZBTElEX1BJUEUpDQo+ID4gPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiA+ID4g IA0KPiA+ID4gPiBAQCAtMTcyMiw3ICsxNzIyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfcHJl cGFyZShzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ID4gPiA+ICAJ CQl0cmFuc19kcCAmPSB+VFJBTlNfRFBfRU5IX0ZSQU1JTkc7DQo+ID4gPiA+ICAJCUk5MTVfV1JJ VEUoVFJBTlNfRFBfQ1RMKGNydGMtPnBpcGUpLCANCj4gPiA+ID4gdHJhbnNfZHApOw0KPiA+ID4g PiAgCX0gZWxzZSB7DQo+ID4gPiA+IC0JCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFJU19W QUxMRVlWSUVXKGRldikgDQo+ID4gPiA+ICYmDQo+ID4gPiA+ICsJCWlmICghSEFTX1BDSF9TUExJ VChkZXYpICYmIA0KPiA+ID4gPiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJg0KPiA+ID4g PiAgCQkgICAgY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQ0KPiA+ID4gPiAgCQkJ aW50ZWxfZHAtPkRQIHw9IERQX0NPTE9SX1JBTkdFXzE2XzIzNTsNCj4gPiA+ID4gIA0KPiA+ID4g PiBAQCAtMjQxNyw3ICsyNDE3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhz dHJ1Y3QgDQo+ID4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ID4gPiA+ICANCj4gPiA+ ID4gIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOw0KPiA+ ID4gPiAgDQo+ID4gPiA+IC0JaWYgKCFIQVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJ RVcoZGV2KSAmJg0KPiA+ID4gPiArCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpIA0KPiA+ID4gPiAmJg0KPiA+ID4gPiAgCSAgICB0bXAgJiBEUF9D T0xPUl9SQU5HRV8xNl8yMzUpDQo+ID4gPiA+ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9y X3JhbmdlID0gdHJ1ZTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBAQCAtMjY5NCw3ICsyNjk0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCANCj4gPiA+ID4gaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCXBwc19sb2NrKGludGVsX2RwKTsNCj4g PiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ID4gPiA+ICAJCXZsdl9pbml0X3BhbmVsX3Bv d2VyX3NlcXVlbmNlcihpbnRlbF9kcCk7DQo+ID4gPiA+ICANCj4gPiA+ID4gIAkvKg0KPiA+ID4g PiBAQCAtMjcyOCw3ICsyNzI4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVj dCANCj4gPiA+ID4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gPiA+ID4gIA0KPiA+ID4gPiAg CXBwc191bmxvY2soaW50ZWxfZHApOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkgew0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7 DQo+ID4gPiA+ICAJCXVuc2lnbmVkIGludCBsYW5lX21hc2sgPSAweDA7DQo+ID4gPiA+ICANCj4g PiA+ID4gIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkNCj4gPiA+ID4gQEAgLTMyMTgsNyArMzIx OCw3IEBAIGludGVsX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9kcCANCj4gPiA+ID4gKmlu dGVsX2RwKQ0KPiA+ID4gPiAgCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nICYmIHBvcnQg PT0gDQo+ID4gPiA+IFBPUlRfQSkNCj4gPiA+ID4gIAkJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdF X1NXSU5HX0xFVkVMXzM7DQo+ID4gPiA+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H X0xFVkVMXzI7DQo+ID4gPiA+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4g PiA+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQly ZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOw0KPiA+ID4gPiAgCWVsc2UgaWYg KElTX0dFTjcoZGV2KSAmJiBwb3J0ID09IFBPUlRfQSkNCj4gPiA+ID4gIAkJcmV0dXJuIERQX1RS QUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsNCj4gPiA+ID4gQEAgLTMyNTksNyArMzI1OSw3IEBA IGludGVsX2RwX3ByZV9lbXBoYXNpc19tYXgoc3RydWN0IGludGVsX2RwIA0KPiA+ID4gPiAqaW50 ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2luZykNCj4gPiA+ID4gIAkJZGVmYXVsdDoNCj4gPiA+ ID4gIAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wOw0KPiA+ID4gPiAgCQl9DQo+ ID4gPiA+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVs c2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJc3dpdGNoICh2 b2x0YWdlX3N3aW5nICYgDQo+ID4gPiA+IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgew0K PiA+ID4gPiAgCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoNCj4gPiA+ID4g IAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOw0KPiA+ID4gPiBAQCAtNDUzOSw3 ICs0NTM5LDcgQEAgYm9vbCBpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCANCj4g PiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gPiA+ICAJCXJldHVybiBjcHRf ZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgDQo+ID4gPiA+IHBvcnQpOw0KPiA+ID4g PiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiA+ID4gPiAgCQlyZXR1cm4gYnh0 X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIA0KPiA+ID4gPiBwb3J0KTsNCj4gPiA+ ID4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkNCj4gPiA+ID4gKwllbHNlIGlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpDQo+ID4gPiA+ICAJCXJldHVybiB2bHZf ZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgDQo+ID4gPiA+IHBvcnQpOw0KPiA+ID4g PiAgCWVsc2UNCj4gPiA+ID4gIAkJcmV0dXJuIGc0eF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRl dl9wcml2LCANCj4gPiA+ID4gcG9ydCk7DQo+ID4gPiA+IEBAIC00OTMzLDcgKzQ5MzMsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVjdCANCj4gPiA+ID4gZHJtX2Vu Y29kZXIgKmVuY29kZXIpDQo+ID4gPiA+ICAJICogUmVhZCBvdXQgdGhlIGN1cnJlbnQgcG93ZXIg c2VxdWVuY2VyIGFzc2lnbm1lbnQsDQo+ID4gPiA+ICAJICogaW4gY2FzZSB0aGUgQklPUyBkaWQg c29tZXRoaW5nIHdpdGggaXQuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExF WVZJRVcoZW5jb2Rlci0+ZGV2KSkNCj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZW5jb2Rlci0+ZGV2KSkNCj4gPiA+ID4gIAkJdmx2X2luaXRpYWxfcG93ZXJfc2VxdWVuY2VyX3Nl dHVwKGludGVsX2RwKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCWludGVsX2VkcF9wYW5lbF92ZGRf c2FuaXRpemUoaW50ZWxfZHApOw0KPiA+ID4gPiBAQCAtNTI5Myw3ICs1MjkzLDcgQEAgDQo+ID4g PiA+IGludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyX3JlZ2lzdGVycyhzdHJ1Y3Qg ZHJtX2RldmljZSANCj4gPiA+ID4gKmRldiwNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCS8qIEhhc3dl bGwgZG9lc24ndCBoYXZlIGFueSBwb3J0IHNlbGVjdGlvbiBiaXRzIGZvciANCj4gPiA+ID4gdGhl IHBhbmVsDQo+ID4gPiA+ICAJICogcG93ZXIgc2VxdWVuY2VyIGFueSBtb3JlLiAqLw0KPiA+ID4g PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBf RkVBVFVSRVMoZGV2KSkgew0KPiA+ID4gPiAgCQlwb3J0X3NlbCA9IFBBTkVMX1BPUlRfU0VMRUNU X1ZMVihwb3J0KTsNCj4gPiA+ID4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfSUJYKGRldikgfHwgSEFT X1BDSF9DUFQoZGV2KSkgew0KPiA+ID4gPiAgCQlpZiAocG9ydCA9PSBQT1JUX0EpDQo+ID4gPiA+ IEBAIC01NDA1LDEyICs1NDA1LDEyIEBAIHN0YXRpYyB2b2lkIA0KPiA+ID4gPiBpbnRlbF9kcF9z ZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgDQo+ID4gPiA+IHJlZnJl c2hfcmF0ZSkNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsNCj4g PiA+ID4gIAkJaWYgKGluZGV4ID4gRFJSU19ISUdIX1JSKSB7DQo+ID4gPiA+IC0JCQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiArCQkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpDQo+ID4gPiA+ICAJCQkJdmFsIHw9IA0KPiA+ID4gPiBQSVBFQ09ORl9FRFBfUlJfTU9ERV9T V0lUQ0hfVkxWOw0KPiA+ID4gPiAgCQkJZWxzZQ0KPiA+ID4gPiAgCQkJCXZhbCB8PSANCj4gPiA+ ID4gUElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOw0KPiA+ID4gPiAgCQl9IGVsc2Ugew0KPiA+ ID4gPiAtCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkNCj4gPiA+ID4gKwkJCWlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQkJCXZhbCAmPSANCj4gPiA+ID4gflBJUEVD T05GX0VEUF9SUl9NT0RFX1NXSVRDSF9WTFY7DQo+ID4gPiA+ICAJCQllbHNlDQo+ID4gPiA+ICAJ CQkJdmFsICY9IA0KPiA+ID4gPiB+UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOw0KPiA+ID4g PiBAQCAtNTc3Nyw3ICs1Nzc3LDcgQEAgc3RhdGljIGJvb2wgDQo+ID4gPiA+IGludGVsX2VkcF9p bml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+ID4gPiAgCX0NCj4g PiA+ID4gIAltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOw0KPiA+ID4gPiAg DQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgew0KPiA+ID4gPiArCWlmIChIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCWludGVsX2RwLT5lZHBfbm90aWZp ZXIubm90aWZpZXJfY2FsbCA9IA0KPiA+ID4gPiBlZHBfbm90aWZ5X2hhbmRsZXI7DQo+ID4gPiA+ ICAJCXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmllcigmaW50ZWxfZHANCj4gPiA+ID4gLT5lZHBfbm90 aWZpZXIpOw0KPiA+ID4gPiAgDQo+ID4gPiA+IEBAIC01ODI1LDcgKzU4MjUsNyBAQCBpbnRlbF9k cF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsDQo+ID4gPiA+ICAJLyogaW50ZWxfZHAgdmZ1bmNzICovDQo+ID4gPiA+ICAJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpDQo+ID4gPiA+ICAJCWludGVsX2RwLT5nZXRf YXV4X2Nsb2NrX2RpdmlkZXIgPSANCj4gPiA+ID4gc2tsX2dldF9hdXhfY2xvY2tfZGl2aWRlcjsN Cj4gPiA+ID4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJZWxzZSBp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJaW50ZWxfZHAtPmdldF9h dXhfY2xvY2tfZGl2aWRlciA9IA0KPiA+ID4gPiB2bHZfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOw0K PiA+ID4gPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkN Cj4gPiA+ID4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IA0KPiA+ID4gPiBo c3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOw0KPiA+ID4gPiBAQCAtNTg2MCw3ICs1ODYwLDcgQEAg aW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IA0KPiA+ID4gPiBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0LA0KPiA+ID4gPiAgCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5U RUxfT1VUUFVUX0VEUDsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCS8qIGVEUCBvbmx5IG9uIHBvcnQg QiBhbmQvb3IgQyBvbiB2bHYvY2h2ICovDQo+ID4gPiA+IC0JaWYgKFdBUk5fT04oSVNfVkFMTEVZ VklFVyhkZXYpICYmIGlzX2VkcChpbnRlbF9kcCkgJiYNCj4gPiA+ID4gKwlpZiAoV0FSTl9PTihI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmIA0KPiA+ID4gPiBpc19lZHAoaW50ZWxfZHApICYm DQo+ID4gPiA+ICAJCSAgICBwb3J0ICE9IFBPUlRfQiAmJiBwb3J0ICE9IFBPUlRfQykpDQo+ID4g PiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBAQCAtNTkxMiw3ICs1OTEy LDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IA0KPiA+ID4gPiBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LA0KPiA+ID4gPiAgCWlmIChpc19lZHAoaW50ZWxfZHAp KSB7DQo+ID4gPiA+ICAJCXBwc19sb2NrKGludGVsX2RwKTsNCj4gPiA+ID4gIAkJaW50ZWxfZHBf aW5pdF9wYW5lbF9wb3dlcl90aW1lc3RhbXBzKGludGVsX2RwKQ0KPiA+ID4gPiA7DQo+ID4gPiA+ IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ICsJCWlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQkJdmx2X2luaXRpYWxfcG93ZXJfc2VxdWVuY2VyX3Nl dHVwKGludGUNCj4gPiA+ID4gbF9kcCk7DQo+ID4gPiA+ICAJCWVsc2UNCj4gPiA+ID4gIAkJCWlu dGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGRlDQo+ID4gPiA+IHYsIGludGVsX2Rw KTsNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5j IA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jDQo+ID4gPiA+IGlu ZGV4IDIzMDk1N2YuLjk1NzA3NjEgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaS5jDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RzaS5jDQo+ID4gPiA+IEBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgDQo+ID4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIp DQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXIt PmJhc2UuZGV2Ow0KPiA+ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkN Cj4gPiA+ID4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJdmx2 X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7DQo+ID4gPiA+ICAJZWxzZSBpZiAoSVNfQlJPWFRP TihkZXYpKQ0KPiA+ID4gPiAgCQlieHRfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsNCj4gPiA+ ID4gQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2VuYWJsZShz dHJ1Y3QgDQo+ID4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ID4gPiA+ICANCj4gPiA+ ID4gIAltc2xlZXAoaW50ZWxfZHNpLT5wYW5lbF9vbl9kZWxheSk7DQo+ID4gPiA+ICANCj4gPiA+ ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJLyoNCj4gPiA+ID4gIAkJICogRGlzYWJsZSBE UE91bml0IGNsb2NrIGdhdGluZywgY2FuIHN0YWxsIA0KPiA+ID4gPiBwaXBlDQo+ID4gPiA+ICAJ CSAqIGFuZCB3ZSBuZWVkIERQTEwgUkVGQSBhbHdheXMgZW5hYmxlZA0KPiA+ID4gPiBAQCAtNjg0 LDggKzY4NCw3IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IA0K PiA+ID4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiA+ID4gPiAgCQkgKiBFbmFibGUgYml0 IGRvZXMgbm90IGdldCBzZXQuIFRvIGNoZWNrIA0KPiA+ID4gPiB3aGV0aGVyIERTSSBQb3J0IEMN Cj4gPiA+ID4gIAkJICogd2FzIGVuYWJsZWQgaW4gQklPUywgY2hlY2sgdGhlIFBpcGUgQiANCj4g PiA+ID4gZW5hYmxlIGJpdA0KPiA+ID4gPiAgCQkgKi8NCj4gPiA+ID4gLQkJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpIA0KPiA+ID4gPiAmJg0KPiA+ID4gPiAt CQkgICAgKHBvcnQgPT0gUE9SVF9DKSkNCj4gPiA+ID4gKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSAmJiAocG9ydCA9PSBQT1JUX0MpKQ0KPiA+ID4gPiAgCQkJZHBpX2VuYWJsZWQgPSANCj4gPiA+ ID4gSTkxNV9SRUFEKFBJUEVDT05GKFBJUEVfQikpICYNCj4gPiA+ID4gIAkJCQkJCQlQSVBFQ08N Cj4gPiA+ID4gTkZfRU5BQkxFOw0KPiA+ID4gPiAgDQo+ID4gPiA+IEBAIC03MTYsNyArNzE1LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2dldF9jb25maWcoc3RydWN0IA0KPiA+ID4gPiBpbnRl bF9lbmNvZGVyICplbmNvZGVyLA0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJaWYgKElTX0JST1hUT04o ZW5jb2Rlci0+YmFzZS5kZXYpKQ0KPiA+ID4gPiAgCQlwY2xrID0gYnh0X2dldF9kc2lfcGNsayhl bmNvZGVyLCBwaXBlX2NvbmZpZw0KPiA+ID4gPiAtPnBpcGVfYnBwKTsNCj4gPiA+ID4gLQllbHNl IGlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmJhc2UuZGV2KSkNCj4gPiA+ID4gKwllbHNlIGlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhlbmNvZGVyLT5iYXNlLmRldikpDQo+ID4gPiA+ICAJCXBj bGsgPSB2bHZfZ2V0X2RzaV9wY2xrKGVuY29kZXIsIHBpcGVfY29uZmlnDQo+ID4gPiA+IC0+cGlw ZV9icHApOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJaWYgKCFwY2xrKQ0KPiA+ID4gPiBAQCAtODY5 LDcgKzg2OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCANCj4gPiA+ ID4gaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikNCj4gPiA+ID4gIAl9DQo+ID4gPiA+ICAN Cj4gPiA+ID4gIAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7DQo+ ID4gPiA+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwkJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJCS8qDQo+ID4gPiA+ICAJCQkgKiBl c2NhcGUgY2xvY2sgZGl2aWRlciwgMjBNSHosIHNoYXJlZCANCj4gPiA+ID4gZm9yIEEgYW5kIEMu DQo+ID4gPiA+ICAJCQkgKiBkZXZpY2UgcmVhZHkgbXVzdCBiZSBvZmYgd2hlbiBkb2luZyANCj4g PiA+ID4gdGhpcyEgdHhjbGtlc2M/DQo+ID4gPiA+IEBAIC0xMTI5LDcgKzExMjgsNyBAQCB2b2lk IGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlIA0KPiA+ID4gPiAqZGV2KQ0KPiA+ID4g PiAgCWlmICghZGV2X3ByaXYtPnZidC5oYXNfbWlwaSkNCj4gPiA+ID4gIAkJcmV0dXJuOw0KPiA+ ID4gPiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgew0KPiA+ID4gPiArCWlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCWRldl9wcml2LT5taXBp X21taW9fYmFzZSA9IFZMVl9NSVBJX0JBU0U7DQo+ID4gPiA+ICAJfSBlbHNlIHsNCj4gPiA+ID4g IAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBNaXBpIGRldmljZSB0byByZWcgDQo+ID4gPiA+IGJh c2UiKTsNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rz aV9wbGwuYyANCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMN Cj4gPiA+ID4gaW5kZXggY2IzY2YzOS4uZGNlOWY5MyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYw0KPiA+ID4gPiBAQCAtNTYxLDcgKzU2MSw3IEBA IHZvaWQgaW50ZWxfZW5hYmxlX2RzaV9wbGwoc3RydWN0IA0KPiA+ID4gPiBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmNvZGVyLT5iYXNlLmRldjsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCWlmIChJU19WQUxMRVlW SUVXKGRldikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpDQo+ID4g PiA+ICAJCXZsdl9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsNCj4gPiA+ID4gIAllbHNlIGlmIChJ U19CUk9YVE9OKGRldikpDQo+ID4gPiA+ICAJCWJ4dF9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsN Cj4gPiA+ID4gQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZHNpX3BsbChz dHJ1Y3QgDQo+ID4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ID4gPiA+ICB7DQo+ID4g PiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Ow0KPiA+ID4g PiAgDQo+ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkNCj4gPiA+ID4gKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJdmx2X2Rpc2FibGVfZHNpX3BsbChl bmNvZGVyKTsNCj4gPiA+ID4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldikpDQo+ID4gPiA+ICAJ CWJ4dF9kaXNhYmxlX2RzaV9wbGwoZW5jb2Rlcik7DQo+ID4gPiA+IEBAIC01OTksNiArNTk5LDYg QEAgdm9pZCBpbnRlbF9kc2lfcmVzZXRfY2xvY2tzKHN0cnVjdCANCj4gPiA+ID4gaW50ZWxfZW5j b2RlciAqZW5jb2RlciwgZW51bSBwb3J0IHBvcnQpDQo+ID4gPiA+ICANCj4gPiA+ID4gIAlpZiAo SVNfQlJPWFRPTihkZXYpKQ0KPiA+ID4gPiAgCQlieHRfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNvZGVy LCBwb3J0KTsNCj4gPiA+ID4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpDQo+ID4gPiA+ ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkNCj4gPiA+ID4gIAkJdmx2X2Rz aV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7DQo+ID4gPiA+ICB9DQo+ID4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgDQo+ID4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jDQo+ID4gPiA+IGluZGV4IGMzOTc4YmEuLjgw YzRkOGUgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk bWkuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMNCj4g PiA+ID4gQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgYm9vbCANCj4gPiA+ID4gaW50ZWxfaGRt aV9zZXRfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpDQo+ID4gPiA+ ICANCj4gPiA+ID4gIAlpZiAoSEFTX0RESShkZXZfcHJpdikpDQo+ID4gPiA+ICAJCXJlZyA9IEhT V19UVklERU9fRElQX0dDUChjcnRjLT5jb25maWcNCj4gPiA+ID4gLT5jcHVfdHJhbnNjb2Rlcik7 DQo+ID4gPiA+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpDQo+ID4gPiA+ICsJ ZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQ0KPiA+ID4gPiAgCQlyZWcg PSBWTFZfVFZJREVPX0RJUF9HQ1AoY3J0Yy0+cGlwZSk7DQo+ID4gPiA+ICAJZWxzZSBpZiAoSEFT X1BDSF9TUExJVChkZXZfcHJpdi0+ZGV2KSkNCj4gPiA+ID4gIAkJcmVnID0gVFZJREVPX0RJUF9H Q1AoY3J0Yy0+cGlwZSk7DQo+ID4gPiA+IEBAIC0yMTAwLDcgKzIxMDAsNyBAQCB2b2lkIGludGVs X2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IA0KPiA+ID4gPiBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0LA0KPiA+ID4gPiAgCQlCVUcoKTsNCj4gPiA+ID4gIAl9DQo+ID4gPiA+ ICANCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJaW50ZWxfaGRtaS0+d3JpdGVf aW5mb2ZyYW1lID0gDQo+ID4gPiA+IHZsdl93cml0ZV9pbmZvZnJhbWU7DQo+ID4gPiA+ICAJCWlu dGVsX2hkbWktPnNldF9pbmZvZnJhbWVzID0gDQo+ID4gPiA+IHZsdl9zZXRfaW5mb2ZyYW1lczsN Cj4gPiA+ID4gIAkJaW50ZWxfaGRtaS0+aW5mb2ZyYW1lX2VuYWJsZWQgPSANCj4gPiA+ID4gdmx2 X2luZm9mcmFtZV9lbmFibGVkOw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaG90cGx1Zy5jIA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hvdHBsdWcuYw0KPiA+ID4gPiBpbmRleCBiMTc3ODU3Li5lN2RkZjM0IDEwMDY0NA0KPiA+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMNCj4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jDQo+ID4gPiA+IEBAIC00 MDcsNyArNDA3LDcgQEAgdm9pZCBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IA0KPiA+ID4g PiBkcm1fZGV2aWNlICpkZXYsDQo+ID4gPiA+ICAJCQkgKiBob3RwbHVnIGJpdHMgaXRzZWxmLiBT byBvbmx5IFdBUk4gDQo+ID4gPiA+IGFib3V0IHVuZXhwZWN0ZWQNCj4gPiA+ID4gIAkJCSAqIGlu dGVycnVwdHMgb24gc2FuZXIgcGxhdGZvcm1zLg0KPiA+ID4gPiAgCQkJICovDQo+ID4gPiA+IC0J CQlXQVJOX09OQ0UoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSAmJiANCj4gPiA+ID4gIUlTX1ZB TExFWVZJRVcoZGV2KSwNCj4gPiA+ID4gKwkJCVdBUk5fT05DRShJTlRFTF9JTkZPKGRldiktPmdl biA+PSA1ICYmIA0KPiA+ID4gPiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSwNCj4gPiA+ID4g IAkJCQkgICJSZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIA0KPiA+ID4gPiBwaW4gJWQgYWx0aG91 Z2ggZGlzYWJsZWRcbiIsIGkpOw0KPiA+ID4gDQo+ID4gPiBDYW4gcmVwbGFjZSB3aXRoICFIQVNf R01DSF9ESVNQTEFZDQo+ID4gPiANCj4gPiA+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ID4gPiAgCQl9 DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyAN Cj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYw0KPiA+ID4gPiBpbmRl eCAxMTEwYzgzLi4zZTllMGU1IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9pMmMuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9pMmMuYw0KPiA+ID4gPiBAQCAtNjI5LDcgKzYyOSw3IEBAIGludCBpbnRlbF9zZXR1cF9nbWJ1 cyhzdHJ1Y3QgZHJtX2RldmljZSANCj4gPiA+ID4gKmRldikNCj4gPiA+ID4gIAlpZiAoSEFTX1BD SF9OT1AoZGV2KSkNCj4gPiA+ID4gIAkJcmV0dXJuIDA7DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKQ0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+Z3Bpb19tbWlvX2Jhc2UgPSBWTFZfRElTUExB WV9CQVNFOw0KPiA+ID4gPiAgCWVsc2UgaWYgKCFIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkN Cj4gPiA+ID4gIAkJZGV2X3ByaXYtPmdwaW9fbW1pb19iYXNlID0NCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgDQo+ID4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYw0KPiA+ID4gPiBpbmRleCBhMjRkZjM1Li4zYjdl NDQ3IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5l bC5jDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMNCj4g PiA+ID4gQEAgLTE3NjcsNyArMTc2Nyw3IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1 bmNzKHN0cnVjdCANCj4gPiA+ID4gaW50ZWxfcGFuZWwgKnBhbmVsKQ0KPiA+ID4gPiAgCQlwYW5l bC0+YmFja2xpZ2h0LnNldCA9IHBjaF9zZXRfYmFja2xpZ2h0Ow0KPiA+ID4gPiAgCQlwYW5lbC0+ YmFja2xpZ2h0LmdldCA9IHBjaF9nZXRfYmFja2xpZ2h0Ow0KPiA+ID4gPiAgCQlwYW5lbC0+YmFj a2xpZ2h0Lmh6X3RvX3B3bSA9IHBjaF9oel90b19wd207DQo+ID4gPiA+IC0JfSBlbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsNCj4gPiA+ID4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJaWYgKGRldl9wcml2LT52YnQuaGFzX21pcGkpIHsN Cj4gPiA+ID4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuc2V0dXAgPSANCj4gPiA+ID4gcHdtX3NldHVw X2JhY2tsaWdodDsNCj4gPiA+ID4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0gDQo+ID4g PiA+IHB3bV9lbmFibGVfYmFja2xpZ2h0Ow0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyANCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jDQo+ID4gPiA+IGluZGV4IDk2ZjQ1ZDcuLjc0MWM4ODggMTAwNjQ0DQo+ID4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMNCj4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiA+ID4gPiBAQCAtMjgzLDcgKzI4Myw3IEBA IHZvaWQgaW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0cnVjdCANCj4gPiA+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQ0KPiA+ID4gPiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBkZXZfcHJpdi0+ZGV2Ow0KPiA+ID4gPiAgCXUzMiB2YWw7DQo+ID4gPiA+ICANCj4g PiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4gPiA+ICsJaWYgKEhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJSTkxNV9XUklURShGV19CTENfU0VMRl9W TFYsIGVuYWJsZSA/IA0KPiA+ID4gPiBGV19DU1BXUkRXTkVOIDogMCk7DQo+ID4gPiA+ICAJCVBP U1RJTkdfUkVBRChGV19CTENfU0VMRl9WTFYpOw0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+d20udmx2 LmN4c3IgPSBlbmFibGU7DQo+ID4gPiA+IEBAIC00Mzk3LDcgKzQzOTcsNyBAQCB2b2lkIGdlbjZf cnBzX2lkbGUoc3RydWN0IA0KPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4g PiA+ID4gIA0KPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7DQo+ ID4gPiA+ICAJaWYgKGRldl9wcml2LT5ycHMuZW5hYmxlZCkgew0KPiA+ID4gPiAtCQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQ0KPiA+ID4gPiArCQlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSkNCj4gPiA+ID4gIAkJCXZsdl9zZXRfcnBzX2lkbGUoZGV2X3ByaXYpOw0KPiA+ID4gPiAgCQll bHNlDQo+ID4gPiA+ICAJCQlnZW42X3NldF9ycHMoZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYNCj4g PiA+ID4gLT5ycHMuaWRsZV9mcmVxKTsNCj4gPiA+ID4gQEAgLTQ0NTAsNyArNDQ1MCw3IEBAIHZv aWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IA0KPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwNCj4gPiA+ID4gIA0KPiA+ID4gPiAgdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHU4IHZhbCkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQ0KPiA+ID4gPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ ID4gPiAgCQl2YWxsZXl2aWV3X3NldF9ycHMoZGV2LCB2YWwpOw0KPiA+ID4gPiAgCWVsc2UNCj4g PiA+ID4gIAkJZ2VuNl9zZXRfcnBzKGRldiwgdmFsKTsNCj4gPiA+ID4gQEAgLTQ0OTQsNyArNDQ5 NCw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfZGlzYWJsZV9ycHMoc3RydWN0IA0KPiA+ID4g PiBkcm1fZGV2aWNlICpkZXYpDQo+ID4gPiA+ICANCj4gPiA+ID4gIHN0YXRpYyB2b2lkIGludGVs X3ByaW50X3JjNl9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiANCj4gPiA+ID4gbW9k ZSkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4g PiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsNCj4gPiA+ID4gIAkJaWYgKG1v ZGUgJiAoR0VON19SQ19DVExfVE9fTU9ERSB8IA0KPiA+ID4gPiBHRU42X1JDX0NUTF9FSV9NT0RF KDEpKSkNCj4gPiA+ID4gIAkJCW1vZGUgPSBHRU42X1JDX0NUTF9SQzZfRU5BQkxFOw0KPiA+ID4g PiAgCQllbHNlDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYyANCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYw0KPiA+ ID4gPiBpbmRleCBiNjYwOWU2Li5jNGU4YWQyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wc3IuYw0KPiA+ID4gPiBAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBib29s IA0KPiA+ID4gPiBpbnRlbF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQ0KPiA+ID4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPiAg DQo+ID4gPiA+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgKChkZXZfcHJpdg0KPiA+ID4g PiAtPnZidC5wc3IuZnVsbF9saW5rKSB8fA0KPiA+ID4gPiArCWlmICghSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSAmJiAoKGRldl9wcml2DQo+ID4gPiA+IC0+dmJ0LnBzci5mdWxsX2xpbmspIHx8 DQo+ID4gPiA+ICAJCQkJICAgIChkaWdfcG9ydC0+cG9ydCAhPSANCj4gPiA+ID4gUE9SVF9BKSkp IHsNCj4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IExpbmsg DQo+ID4gPiA+IFN0YW5kYnkgcmVxdWVzdGVkL25lZWRlZCBidXQgbm90IHN1cHBvcnRlZCBvbiB0 aGlzIA0KPiA+ID4gPiBwbGF0Zm9ybVxuIik7DQo+ID4gPiA+ICAJCXJldHVybiBmYWxzZTsNCj4g PiA+ID4gQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBk YXRlKHN0cnVjdCANCj4gPiA+ID4gZHJtX2RldmljZSAqZGV2LA0KPiA+ID4gPiAgCSAqIFNpbmds ZSBmcmFtZSB1cGRhdGUgaXMgYWxyZWFkeSBzdXBwb3J0ZWQgb24gQkRXKyANCj4gPiA+ID4gYnV0 IGl0IHJlcXVpcmVzDQo+ID4gPiA+ICAJICogbWFueSBXL0EgYW5kIGl0IGlzbid0IHJlYWxseSBu ZWVkZWQuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikp DQo+ID4gPiA+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQ0KPiA+ID4gPiAgCQly ZXR1cm47DQo+ID4gPiA+ICANCj4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMgDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMNCj4g PiA+ID4gaW5kZXggMmI5NmYzMy4uMmU3MDQzYiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMNCj4gPiA+ID4gQEAgLTk1MSw3ICs5NTEsNyBAQCBpbnQg aW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3QgDQo+ID4gPiA+IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwNCj4gPiA+ID4gIAlpZiAoKHNldC0+ZmxhZ3MgJiAoSTkxNV9TRVRfQ09M T1JLRVlfREVTVElOQVRJT04gfCANCj4gPiA+ID4gSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkg PT0gKEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgDQo+ID4gPiA+IEk5MTVfU0VUX0NP TE9SS0VZX1NPVVJDRSkpDQo+ID4gPiA+ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiAgDQo+ ID4gPiA+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJg0KPiA+ID4gPiArCWlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpICYmDQo+ID4gPiA+ICAJICAgIHNldC0+ZmxhZ3MgJiBJOTE1X1NF VF9DT0xPUktFWV9ERVNUSU5BVElPTikNCj4gPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g PiA+ICANCj4gPiA+ID4gQEAgLTEwODYsNyArMTA4Niw3IEBAIGludGVsX3BsYW5lX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgDQo+ID4gPiA+IGVudW0gcGlwZSBwaXBlLCBpbnQgcGxhbmUp DQo+ID4gPiA+ICAJCQlpbnRlbF9wbGFuZS0+bWF4X2Rvd25zY2FsZSA9IDE7DQo+ID4gPiA+ICAJ CX0NCj4gPiA+ID4gIA0KPiA+ID4gPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7DQo+ID4g PiA+ICsJCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4gPiA+ICAJCQlpbnRl bF9wbGFuZS0+dXBkYXRlX3BsYW5lID0gDQo+ID4gPiA+IHZsdl91cGRhdGVfcGxhbmU7DQo+ID4g PiA+ICAJCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZSA9IA0KPiA+ID4gPiB2bHZfZGlzYWJs ZV9wbGFuZTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdW5jb3JlLmMgDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMNCj4gPiA+ID4gaW5kZXggYzIzNThiYS4uZWJiYmUwMCAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMNCj4gPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMNCj4gPiA+ID4gQEAgLTIxMSw3 ICsyMTEsNyBAQCBzdGF0aWMgaW50IF9fZ2VuNl9ndF93YWl0X2Zvcl9maWZvKHN0cnVjdCANCj4g PiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiA+ICANCj4gPiA+ID4gIAkv KiBPbiBWTFYsIEZJRk8gd2lsbCBiZSBzaGFyZWQgYnkgYm90aCBTVyBhbmQgSFcuDQo+ID4gPiA+ ICAJICogU28sIHdlIG5lZWQgdG8gcmVhZCB0aGUgRlJFRV9FTlRSSUVTIGV2ZXJ5dGltZSAqLw0K PiA+ID4gPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKQ0KPiA+ID4gPiArCWlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkNCj4gPiA+ID4gIAkJZGV2X3By aXYtPnVuY29yZS5maWZvX2NvdW50ID0gDQo+ID4gPiA+IGZpZm9fZnJlZV9lbnRyaWVzKGRldl9w cml2KTsNCj4gPiA+IA0KPiA+ID4gVGhpcyBjb2RlIGlzbid0IHVzZWQgb24gQ0hWLCBzbyBjYW4g c3RheSBhcyBpcy4NCj4gPiA+IA0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJaWYgKGRldl9wcml2LT51 bmNvcmUuZmlmb19jb3VudCA8IA0KPiA+ID4gPiBHVF9GSUZPX05VTV9SRVNFUlZFRF9FTlRSSUVT KSB7DQo+ID4gPiA+IEBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5f aW5pdChzdHJ1Y3QgDQo+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ID4g PiAgCQlkLT52YWxfY2xlYXIgPSANCj4gPiA+ID4gX01BU0tFRF9CSVRfRElTQUJMRShGT1JDRVdB S0VfS0VSTkVMKTsNCj4gPiA+ID4gIAl9DQo+ID4gPiA+ICANCj4gPiA+ID4gLQlpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikpDQo+ID4gPiA+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dl9wcml2KSkNCj4gPiA+ID4gIAkJZC0+cmVnX3Bvc3QgPSBGT1JDRVdBS0VfQUNLX1ZMVjsNCj4g PiA+ID4gIAllbHNlIGlmIChJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSB8 fCANCj4gPiA+ID4gSVNfR0VOOChkZXZfcHJpdikpDQo+ID4gPiA+ICAJCWQtPnJlZ19wb3N0ID0g RUNPQlVTOw0KPiA+ID4gPiBAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgc3RhdGljIHZvaWQgDQo+ID4g PiA+IGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikN Cj4gPiA+ID4gIAkJCSAgICAgICBGT1JDRVdBS0VfQUNLX0JMSVRURVJfR0VOOSk7DQo+ID4gPiA+ ICAJCWZ3X2RvbWFpbl9pbml0KGRldl9wcml2LCBGV19ET01BSU5fSURfTUVESUEsDQo+ID4gPiA+ ICAJCQkgICAgICAgRk9SQ0VXQUtFX01FRElBX0dFTjksIA0KPiA+ID4gPiBGT1JDRVdBS0VfQUNL X01FRElBX0dFTjkpOw0KPiA+ID4gPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7 DQo+ID4gPiA+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7DQo+ID4g PiA+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPSANCj4gPiA+ID4g ZndfZG9tYWluc19nZXQ7DQo+ID4gPiA+ICAJCWlmICghSVNfQ0hFUlJZVklFVyhkZXYpKQ0KPiA+ ID4gPiAgCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dCANCj4gPiA+ID4g PQ0KPiA+ID4gPiAtLSANCj4gPiA+ID4gMi42LjMNCj4gPiA+ID4gDQo+ID4gPiA+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gPiA+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QNCj4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0K PiA+ID4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4DQo+ID4gDQo+ID4gLS0gDQo+ID4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNl IFRlY2hub2xvZ3kgQ2VudGVyDQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngNCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==