From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Separate cherryview from valleyview Date: Wed, 02 Dec 2015 14:30:28 +0200 Message-ID: <87mvtt2ftn.fsf@intel.com> References: <1449018700-31959-1-git-send-email-wayne.boyer@intel.com> <20151202090256.GR4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 701C76E99D for ; Wed, 2 Dec 2015 04:26:39 -0800 (PST) In-Reply-To: <20151202090256.GR4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?utf-8?B?U3lyasOkbMOk?= , Wayne Boyer Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwMiBEZWMgMjAxNSwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gT24gVHVlLCBEZWMgMDEsIDIwMTUgYXQgMDU6MTE6NDBQTSAt MDgwMCwgV2F5bmUgQm95ZXIgd3JvdGU6Cj4+IFRoZSBjaGVycnl2aWV3IGRldmljZSBzaGFyZXMg bWFueSBjaGFyYWN0ZXJpc3RpY3Mgd2l0aCB0aGUgdmFsbGV5dmlldwo+PiBkZXZpY2UuICBXaGVu IHN1cHBvcnQgd2FzIGFkZGVkIHRvIHRoZSBkcml2ZXIgZm9yIGNoZXJyeXZpZXcsIHRoZQo+PiBj b3JyZXNwb25kaW5nIGRldmljZSBpbmZvIHN0cnVjdHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5dmll dyA9IDEuCj4+IFRoaXMgaXMgbm90IGNvcnJlY3QgYW5kIGxlYWRzIHRvIHNvbWUgY29uZnVzaW9u Lgo+PiAKPj4gVGhpcyBwYXRjaCBjaGFuZ2VzIC5pc192YWxsZXl2aWV3IHRvIC5pc19jaGVycnl2 aWV3IGluIHRoZSBjaGVycnl2aWV3Cj4+IGRldmljZSBpbmZvIHN0cnVjdHVyZSBhbmQgZGVmaW5l cyB0aGUgSEFTX0dFTjdfTFBfRkVBVFVSRVMgbWFjcm8uCj4+IFRoZW4gd2hlcmUgYXBwcm9wcmlh dGUsIGluc3RhbmNlcyBvZiBJU19WQUxMRVlWSUVXIGFyZSByZXBsYWNlZCB3aXRoCj4+IEhBU19H RU43X0xQX0ZFQVRVUkVTIHRvIHRlc3QgZm9yIGVpdGhlciBhIHZhbGxleXZpZXcgb3IgYSBjaGVy cnl2aWV3Cj4+IGRldmljZS4KPgo+IEkgZG9uJ3QgbGlrZSB0aGUgbmFtZSBvZiB0aGUgbWFjcm8u IE1vc3Qgb2YgdGhlIHNoYXJlZCBiaXRzIGFyZSBkaXNwbGF5Cj4gcmVsYXRlZCwgc28gd2UgY291 bGQgaGF2ZSBzb21ldGhpbmcgbGlrZSBIQVNfVkxWX0RJU1BMQVkuIEZvciB0aGUgcmVzdCwKPiBJ IHRoaW5rIHdlIGNvdWxkIGp1c3QgdGVzdCBJU19WTFZ8fElTX0NIViBleHBsaWNpdGx5LiBVbmxl c3Mgc29tZW9uZQo+IGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgbmFtZSB0aGF0IGNvdmVycyBl dmVyeXRoaW5nPwoKRGVmaW5pdGVseSBOQUsgb24gSEFTX0dFTjdfTFBfRkVBVFVSRVMuCgpIQVNf VkxWX0RJU1BMQVkgd291bGQgYmUgYSBzdWJzZXQgb2YgSEFTX0dNQ0hfRElTUExBWSwgd2hpY2gg SSBndWVzcwp3b3VsZG4ndCBiZSB0aGF0IGJhZC4uLiB1bmxlc3Mgc29tZW9uZSBzdGFydHMgdXNp bmcgdGhhdCBmb3IgYSBWTFZ8fENIVgpzaG9ydGhhbmQgaW4gbm9uLWRpc3BsYXkgY29kZS4KCkkg dGhpbmsgSSBtaWdodCBqdXN0IGdvIGZvciB0aGUgdmVyYm9zZSAoSVNfVkFMTEVZVklFVyB8fCBJ U19DSEVSUllWSUVXKQphbGwgYXJvdW5kLiBFc3BlY2lhbGx5IHNpbmNlIHdlJ3ZlIGJlZW4gYnJh aW53YXNoZWQgd2l0aCB0aGUgb2xkIHZsdiBpcwpib3RoIHZsdiBhbmQgY2h2IGNvZGUuCgpCUiwK SmFuaS4KCj4KPj4gCj4+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ Cj4+IFNpZ25lZC1vZmYtYnk6IFdheW5lIEJveWVyIDx3YXluZS5ib3llckBpbnRlbC5jb20+Cj4+ IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgMTQgKysr Ky0tLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgICAgfCAgOCAr Ky0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgMTAgKysr LS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAxOSArKysr KysrKy0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICA0 ICstLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgIDIgKy0K Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICB8ICAyICstCj4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgfCAgNiArKy0tCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgfCAgOCArKy0tLQo+PiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgIHwgIDQgKy0tCj4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgfCAxMCArKystLS0KPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgICAgICB8ICA2ICsrLS0KPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NydC5jICAgICAgICB8ICA0ICstLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgNTQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgfCAzOCArKysr KysrKysrKy0tLS0tLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMg ICAgICAgIHwgMTMgKysrKy0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9w bGwuYyAgICB8ICA2ICsrLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAg ICAgICB8ICA0ICstLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jICAg IHwgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jICAgICAgICB8ICAy ICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgfCAgMiArLQo+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDggKystLS0KPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICB8ICA0ICstLQo+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgIHwgIDQgKy0tCj4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyAgICAgfCAgNiArKy0tCj4+ICAyNSBmaWxlcyBj aGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gaW5kZXggYmZkNTdmYi4uYTJkNTBkYSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gQEAgLTg2Miw3ICs4NjIsNyBAQCBz dGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQo+PiAgCQkJICAgSTkxNV9SRUFEKEdFTjhfUENVX0lJUikpOwo+PiAgCQlzZXFfcHJpbnRm KG0sICJQQ1UgaW50ZXJydXB0IGVuYWJsZTpcdCUwOHhcbiIsCj4+ICAJCQkgICBJOTE1X1JFQUQo R0VOOF9QQ1VfSUVSKSk7Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4g Kwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPgo+IFdlIGFscmVkeSB0 ZXN0IGZvciBDSFYgZWFybGllciwgc28gdGhpcyBzaG91bGQgcmVtYWluIGFzIGlzLgo+Cj4+ICAJ CXNlcV9wcmludGYobSwgIkRpc3BsYXkgSUVSOlx0JTA4eFxuIiwKPj4gIAkJCSAgIEk5MTVfUkVB RChWTFZfSUVSKSk7Cj4+ICAJCXNlcV9wcmludGYobSwgIkRpc3BsYXkgSUlSOlx0JTA4eFxuIiwK Pj4gQEAgLTEyODQsNyArMTI4NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPj4gIAkJc2VxX3ByaW50ZihtLAo+PiAg CQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKPj4gIAkJCSAgIGlu dGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSk7Cj4+ IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPgo+IEFuZCBmb3IgdGhpcyB5b3Ugd291bGQgYWxzbyBu ZWVkIHRvIGNoYW5nZSB0aGUgZWFybGllciBjb25kaXRpb24gaW4gdGhlCj4gcHJldmlvdXMgJ2Vs c2UgaWYnIGJyYW5jaC4gQnV0IEkgdGhpbmsgaXQgd291bGQgYmUgY2xlYXJuZXIgdG8gaG9pc3QK PiB0aGUgVkxWL0NIViBjb2RlIHRvIHNpdCBiZWZvcmUgdGhlIGdlbjYrIGNvZGUsIGFuZCB0aGVu IHRoZSBnZW42Kwo+IGNvbmRpdGlvbiBjYW4gYmUgc2ltcGxpZmllZCBzaWduaWZpY2FudGx5Lgo+ Cj4+ICAJCXUzMiBmcmVxX3N0czsKPj4gIAo+PiAgCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBz Lmh3X2xvY2spOwo+PiBAQCAtMTYwMiw3ICsxNjAyLDcgQEAgc3RhdGljIGludCBpOTE1X2RycGNf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPj4gIAlzdHJ1Y3QgZHJtX2lu Zm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG5vZGUtPm1pbm9yLT5kZXY7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiAr CWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCQlyZXR1cm4gdmx2X2RycGNfaW5m byhtKTsKPj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+PiAgCQlyZXR1 cm4gZ2VuNl9kcnBjX2luZm8obSk7Cj4+IEBAIC0xNzQzLDcgKzE3NDMsNyBAQCBzdGF0aWMgaW50 IGk5MTVfc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAgCQlz cl9lbmFibGVkID0gSTkxNV9SRUFEKElOU1RQTSkgJiBJTlNUUE1fU0VMRl9FTjsKPj4gIAllbHNl IGlmIChJU19QSU5FVklFVyhkZXYpKQo+PiAgCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKERTUEZX MykgJiBQSU5FVklFV19TRUxGX1JFRlJFU0hfRU47Cj4+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQo+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4+ICAJCXNy X2VuYWJsZWQgPSBJOTE1X1JFQUQoRldfQkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdSRFdORU47Cj4+ ICAKPj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4+IEBAIC0zOTgzLDcgKzM5 ODMsNyBAQCBzdGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwaXBlIHBpcGUsCj4+ICAJCXJldCA9IGk4eHhfcGlwZV9jcmNfY3RsX3JlZygm c291cmNlLCAmdmFsKTsKPj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpCj4+ ICAJCXJldCA9IGk5eHhfcGlwZV9jcmNfY3RsX3JlZyhkZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwp Owo+PiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwllbHNlIGlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCQlyZXQgPSB2bHZfcGlwZV9jcmNfY3RsX3JlZyhkZXYs IHBpcGUsICZzb3VyY2UsICZ2YWwpOwo+PiAgCWVsc2UgaWYgKElTX0dFTjUoZGV2KSB8fCBJU19H RU42KGRldikpCj4+ICAJCXJldCA9IGlsa19waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2YWwp Owo+PiBAQCAtNDA1Miw3ICs0MDUyLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAo+PiAgCj4+ICAJCWlmIChJ U19HNFgoZGV2KSkKPj4gIAkJCWc0eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2LCBwaXBl KTsKPj4gLQkJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCQllbHNlIGlmIChIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCQkJdmx2X3VuZG9fcGlwZV9zY3JhbWJsZV9yZXNl dChkZXYsIHBpcGUpOwo+PiAgCQllbHNlIGlmIChJU19IQVNXRUxMKGRldikgJiYgcGlwZSA9PSBQ SVBFX0EpCj4+ICAJCQloc3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2EoZGV2LCBmYWxzZSk7Cj4+ IEBAIC00NDQyLDcgKzQ0NDIsNyBAQCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0 IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKPj4gIAkJICogLSBXTTErIGxhdGVu Y3kgdmFsdWVzIGluIDAuNXVzIHVuaXRzCj4+ICAJCSAqIC0gbGF0ZW5jaWVzIGFyZSBpbiB1cyBv biBnZW45L3Zsdi9jaHYKPj4gIAkJICovCj4+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA5IHx8IElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDkgfHwgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJCWxhdGVuY3kgKj0gMTA7 Cj4+ICAJCWVsc2UgaWYgKGxldmVsID4gMCkKPj4gIAkJCWxhdGVuY3kgKj0gNTsKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jCj4+IGluZGV4IGE4MWM3NjYuLmUyNGFhNjUgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYwo+PiBAQCAtMjU2LDcgKzI1Niw3IEBAIGludGVsX3NldHVwX21jaGJh cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCXUzMiB0ZW1wOwo+PiAgCWJvb2wgZW5hYmxl ZDsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCWRldl9wcml2LT5tY2hiYXJf bmVlZF9kaXNhYmxlID0gZmFsc2U7Cj4+IEBAIC03NzksNyArNzc5LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ ICAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAyOwo+PiAgCQlpbmZvLT5udW1fc3ByaXRl c1tQSVBFX0JdID0gMjsKPj4gIAkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9DXSA9IDE7Cj4+IC0J fSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKQo+PiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+PiAg CQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+PiAgCWVsc2UKPj4gQEAgLTc5MSw3ICs3 OTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gIAkJaW5mby0+bnVtX3BpcGVzID0gMDsKPj4gIAl9IGVsc2Ug aWYgKGluZm8tPm51bV9waXBlcyA+IDAgJiYKPj4gIAkJICAgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID09IDcgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOCkgJiYKPj4gLQkJICAgIUlTX1ZBTExF WVZJRVcoZGV2KSkgewo+PiArCQkgICAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+Cj4g VGhhdCBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yICdIQVNfUENIX1NQTElUICYmIChHRU43IHx8 IEdFTjgpJywgc2luY2UKPiBpdCdzIHJlYWRpbmcgU0ZVU0VfU1RSQVAgd2hpY2ggbGl2ZXMgaW4g dGhlIFBDSC4KPgo+PiAgCQl1MzIgZnVzZV9zdHJhcCA9IEk5MTVfUkVBRChGVVNFX1NUUkFQKTsK Pj4gIAkJdTMyIHNmdXNlX3N0cmFwID0gSTkxNV9SRUFEKFNGVVNFX1NUUkFQKTsKPj4gIAo+PiBA QCAtODM2LDcgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBpbnRlbF9p bml0X2RwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgewo+PiAtCWlm ICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJF UyhkZXZfcHJpdikpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCS8qCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwo+PiBpbmRleCA1ZjhiMGZmLi5hYzU0YjY4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPj4gQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X2RldmljZV9pbmZvIGludGVsX2NoZXJyeXZpZXdfaW5mbyA9IHsKPj4gIAkuZ2VuID0gOCwgLm51 bV9waXBlcyA9IDMsCj4+ICAJLm5lZWRfZ2Z4X2h3cyA9IDEsIC5oYXNfaG90cGx1ZyA9IDEsCj4+ ICAJLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9Y X1JJTkcsCj4+IC0JLmlzX3ZhbGxleXZpZXcgPSAxLAo+PiArCS5pc19jaGVycnl2aWV3ID0gMSwK Pj4gIAkuZGlzcGxheV9tbWlvX29mZnNldCA9IFZMVl9ESVNQTEFZX0JBU0UsCj4+ICAJR0VOX0NI Vl9QSVBFT0ZGU0VUUywKPj4gIAlDVVJTT1JfT0ZGU0VUUywKPj4gQEAgLTgwMCw3ICs4MDAsNyBA QCBzdGF0aWMgaW50IGk5MTVfZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+PiAgCj4+ICAJcGNpX3NldF9tYXN0ZXIoZGV2LT5wZGV2KTsKPj4gIAo+PiAtCWlmIChJU19W QUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3By aXYpKQo+PiAgCQlyZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIGZhbHNlKTsKPj4g IAlpZiAocmV0KQo+PiAgCQlEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJlIGZhaWxlZDogJWQsIGNv bnRpbnVpbmcgYW55d2F5XG4iLAo+PiBAQCAtMTUzMCw3ICsxNTMwLDcgQEAgc3RhdGljIGludCBp bnRlbF9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCj4+ICAJCXJldCA9IGJ4 dF9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdik7Cj4+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZf cHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPj4gIAkJaHN3X2Rpc2FibGVfcGM4KGRl dl9wcml2KTsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwllbHNl IGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpCj4+ICAJCXJldCA9IHZsdl9yZXN1 bWVfcHJlcGFyZShkZXZfcHJpdiwgdHJ1ZSk7Cj4+ICAKPj4gIAkvKgo+PiBAQCAtMTU0Nyw3ICsx NTQ3LDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXZpY2UpCj4+ICAJICogcG93ZXIgd2VsbCwgc28gaHBkIGlzIHJlaW5pdGlhbGl6ZWQgZnJvbSB0 aGVyZS4gRm9yCj4+ICAJICogZXZlcnlvbmUgZWxzZSBkbyBpdCBoZXJlLgo+PiAgCSAqLwo+PiAt CWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFU VVJFUyhkZXZfcHJpdikpCj4+ICAJCWludGVsX2hwZF9pbml0KGRldl9wcml2KTsKPj4gIAo+PiAg CWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoZGV2KTsKPj4gQEAgLTE1NzIsNyArMTU3Miw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4+ICAJCXJldCA9IGJ4dF9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsK Pj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKQo+PiAgCQlyZXQgPSBoc3dfc3VzcGVuZF9jb21wbGV0ZShkZXZfcHJpdik7Cj4+IC0JZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBf RkVBVFVSRVMoZGV2X3ByaXYpKQo+PiAgCQlyZXQgPSB2bHZfc3VzcGVuZF9jb21wbGV0ZShkZXZf cHJpdik7Cj4+ICAJZWxzZQo+PiAgCQlyZXQgPSAwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4gaW5kZXggYmM4NjVlMjMuLmFjYjVlOGIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+PiBAQCAtNzYzLDYgKzc2Myw3IEBAIHN0cnVjdCBpbnRlbF9jc3Igewo+PiAgCWZ1bmMoaXNf Y3Jlc3RsaW5lKSBzZXAgXAo+PiAgCWZ1bmMoaXNfaXZ5YnJpZGdlKSBzZXAgXAo+PiAgCWZ1bmMo aXNfdmFsbGV5dmlldykgc2VwIFwKPj4gKwlmdW5jKGlzX2NoZXJyeXZpZXcpIHNlcCBcCj4+ICAJ ZnVuYyhpc19oYXN3ZWxsKSBzZXAgXAo+PiAgCWZ1bmMoaXNfc2t5bGFrZSkgc2VwIFwKPj4gIAlm dW5jKGlzX2Jyb3h0b24pIHNlcCBcCj4+IEBAIC0yNDU2LDkgKzI0NTcsOSBAQCBzdHJ1Y3QgZHJt X2k5MTVfY21kX3RhYmxlIHsKPj4gIAkJCQkgSU5URUxfREVWSUQoZGV2KSA9PSAweDAxNTIgfHwg XAo+PiAgCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1YSkKPj4gICNkZWZpbmUgSVNfVkFM TEVZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZpZXcpCj4+IC0jZGVmaW5l IElTX0NIRVJSWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc192YWxsZXl2aWV3ICYmIElT X0dFTjgoZGV2KSkKPj4gKyNkZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRl diktPmlzX2NoZXJyeXZpZXcpCj4+ICAjZGVmaW5lIElTX0hBU1dFTEwoZGV2KQkoSU5URUxfSU5G TyhkZXYpLT5pc19oYXN3ZWxsKQo+PiAtI2RlZmluZSBJU19CUk9BRFdFTEwoZGV2KQkoIUlOVEVM X0lORk8oZGV2KS0+aXNfdmFsbGV5dmlldyAmJiBJU19HRU44KGRldikpCj4+ICsjZGVmaW5lIElT X0JST0FEV0VMTChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5pc19jaGVycnl2aWV3ICYmIElTX0dF TjgoZGV2KSkKPj4gICNkZWZpbmUgSVNfU0tZTEFLRShkZXYpCShJTlRFTF9JTkZPKGRldiktPmlz X3NreWxha2UpCj4+ICAjZGVmaW5lIElTX0JST1hUT04oZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+ aXNfYnJveHRvbikKPj4gICNkZWZpbmUgSVNfS0FCWUxBS0UoZGV2KQkoSU5URUxfSU5GTyhkZXYp LT5pc19rYWJ5bGFrZSkKPj4gQEAgLTI1ODUsNyArMjU4Niw4IEBAIHN0cnVjdCBkcm1faTkxNV9j bWRfdGFibGUgewo+PiAgCQkJCSBJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkK Pj4gICNkZWZpbmUgSEFTX1JVTlRJTUVfUE0oZGV2KQkoSVNfR0VONihkZXYpIHx8IElTX0hBU1dF TEwoZGV2KSB8fCBcCj4+ICAJCQkJIElTX0JST0FEV0VMTChkZXYpIHx8IElTX1ZBTExFWVZJRVco ZGV2KSB8fCBcCj4+IC0JCQkJIElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKQo+ PiArCQkJCSBJU19DSEVSUllWSUVXKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8IFwKPj4gKwkJ CQkgSVNfS0FCWUxBS0UoZGV2KSkKPj4gICNkZWZpbmUgSEFTX1JDNihkZXYpCQkoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNikKPj4gICNkZWZpbmUgSEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8o ZGV2KS0+Z2VuID09IDYgfHwgSVNfSVZZQlJJREdFKGRldikpCj4+ICAKPj4gQEAgLTI1OTgsNyAr MjYwMCwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPj4gIAkJCQkgICAgSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gOCkKPj4gIAo+PiAgI2RlZmluZSBIQVNfQ09SRV9SSU5HX0ZSRVEo ZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBcCj4+IC0JCQkJICFJU19WQUxMRVlW SUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKPj4gKwkJCQkgIUlTX1ZBTExFWVZJRVcoZGV2 KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmIFwKPj4gKwkJCQkgIUlTX0JST1hUT04oZGV2KSkK Pj4gKwo+PiArI2RlZmluZSBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpIChJTlRFTF9JTkZPKGRl diktPmlzX3ZhbGxleXZpZXcgfHwgXAo+PiArCQkJCSAgIElOVEVMX0lORk8oZGV2KS0+aXNfY2hl cnJ5dmlldykKPj4gIAo+PiAgI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4ZmYw MAo+PiAgI2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPj4gQEAg LTI2MjAsNyArMjYyNiw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+PiAgI2RlZmlu ZSBIQVNfUENIX05PUChkZXYpIChJTlRFTF9QQ0hfVFlQRShkZXYpID09IFBDSF9OT1ApCj4+ICAj ZGVmaW5lIEhBU19QQ0hfU1BMSVQoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSAhPSBQQ0hfTk9O RSkKPj4gIAo+PiAtI2RlZmluZSBIQVNfR01DSF9ESVNQTEFZKGRldikgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgNSB8fCBJU19WQUxMRVlWSUVXKGRldikpCj4+ICsjZGVmaW5lIEhBU19HTUNIX0RJ U1BMQVkoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1IHx8IFwKPj4gKwkJCSAgICAgICBI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCj4+ICAvKiBEUEYgPT0gZHluYW1pYyBwYXJp dHkgZmVhdHVyZSAqLwo+PiAgI2RlZmluZSBIQVNfTDNfRFBGKGRldikgKElTX0lWWUJSSURHRShk ZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkKPj4gQEAgLTM1MTEsNyArMzUxOCw3IEBAIF9fcmF3X3dy aXRlKDY0LCBxKQo+PiAgCj4+ICBzdGF0aWMgaW5saW5lIGk5MTVfcmVnX3QgaTkxNV92Z2FjbnRy bF9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIHsKPj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQo+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCQlyZXR1cm4g VkxWX1ZHQUNOVFJMOwo+PiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCj4+ ICAJCXJldHVybiBDUFVfVkdBQ05UUkw7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBpbmRl eCBhNjk5N2E4Li4xNWJlOWVhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gQEAg LTQ4MzgsNyArNDgzOCw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4+ICAKPj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+ICAKPj4gLQlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpIHsKPj4gIAkJLyogVkxWQTAgKHBvdGVudGlhbCBoYWNrKSwgQklPUyBpc24ndCBhY3R1YWxs eSB3YWtpbmcgdXMgKi8KPj4gIAkJSTkxNV9XUklURShWTFZfR1RMQ19XQUtFX0NUUkwsIFZMVl9H VExDX0FMTE9XV0FLRVJFUSk7Cj4+ICAJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZMVl9HVExD X1BXX1NUQVRVUykgJgo+Cj4gV2Ugc3RpbGwgaGF2ZSB0aGF0IGNvZGU/IFNob3VsZCBwcm9iYWJs eSBqdXN0IG51a2UgaXQuCj4KPj4gQEAgLTQ5NjMsNyArNDk2Myw3IEBAIGk5MTVfZ2VtX2xvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAgCWRldl9wcml2LT5yZWxhdGl2ZV9jb25z dGFudHNfbW9kZSA9IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX0dFTkVSQUw7Cj4+ICAKPj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKQo+PiAr CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpKQo+PiAgCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPSAzMjsKPj4gIAllbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0IHx8IElTX0k5NDVHKGRldikgfHwgSVNfSTk0NUdNKGRl dikgfHwgSVNfRzMzKGRldikpCj4+ICAJCWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9IDE2Owo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+IGluZGV4IDQzNzYxYzUu LjQ3NmZlZTAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK Pj4gQEAgLTE5MCw3ICsxOTAsNyBAQCBpOTE1X2dlbV9hbGxvY19jb250ZXh0X29iaihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkKPj4gIAkgKiB3b3VsZCBtYWtlIHRoZSBvYmpl Y3Qgc25vb3BlZCB3aGljaCBtaWdodCBoYXZlIGEKPj4gIAkgKiBuZWdhdGl2ZSBwZXJmb3JtYW5j ZSBpbXBhY3QuCj4+ICAJICovCj4+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYg IUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3 ICYmICFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4KPiBJIHRoaW5rIHdlIHNob3VsZCBq dXN0IG1ha2UgdGhpcyBJU19JVllCUklER0Ugc2luY2UgbGF0ZXIgcGxhdGZvcm1zCj4gZG9uJ3Qg aGF2ZSBhbnkgTDMgY29udHJvbCBiaXRzIGluIHRoZSBQVEUgYW55d2F5Lgo+Cj4+ICAJCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0wzX0xMQyk7 Cj4+ICAJCS8qIEZhaWx1cmUgc2hvdWxkbid0IGV2ZXIgaGFwcGVuIHRoaXMgZWFybHkgKi8KPj4g IAkJaWYgKFdBUk5fT04ocmV0KSkgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ PiBpbmRleCAxZjdlNmI5Li5lZTgwZTI2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwo+PiBAQCAtMzEyNSw3ICszMTI1LDcgQEAgaW50IGk5MTVfZ2VtX2d0dF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJCQlndHQtPmJhc2UucHRlX2VuY29kZSA9IGlyaXNf cHRlX2VuY29kZTsKPj4gIAkJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpKQo+PiAgCQkJZ3R0LT5i YXNlLnB0ZV9lbmNvZGUgPSBoc3dfcHRlX2VuY29kZTsKPj4gLQkJZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQo+PiArCQllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+Cj4g Tm8gbmVlZCB0byBjaGFuZ2UuCj4KPj4gIAkJCWd0dC0+YmFzZS5wdGVfZW5jb2RlID0gYnl0X3B0 ZV9lbmNvZGU7Cj4+ICAJCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpCj4+ICAJ CQlndHQtPmJhc2UucHRlX2VuY29kZSA9IGl2Yl9wdGVfZW5jb2RlOwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKPj4gaW5kZXggMDZjYTQwOC4uZTkyYmU1ZiAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4+IEBAIC0zODMsNyArMzgzLDcgQEAg aW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9i dWYgKm0sCj4+ICAJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCj4+ICAJCQllcnJfcHJpbnRmKG0s ICJHVElFUiBndCAlZDogMHglMDh4XG4iLCBpLAo+PiAgCQkJCSAgIGVycm9yLT5ndGllcltpXSk7 Cj4+IC0JfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYp KQo+PiArCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpIHx8IEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpCj4KPiBObyBuZWVkIHRvIGNoYW5nZS4gQ0hWIHRha2VzIHRoZSBnZW4+PTggYnJh bmNoIGVhcmxpZXIuCj4KPj4gIAkJZXJyX3ByaW50ZihtLCAiR1RJRVI6IDB4JTA4eFxuIiwgZXJy b3ItPmd0aWVyWzBdKTsKPj4gIAllcnJfcHJpbnRmKG0sICJQR1RCTF9FUjogMHglMDh4XG4iLCBl cnJvci0+cGd0YmxfZXIpOwo+PiAgCWVycl9wcmludGYobSwgIkZPUkNFV0FLRTogMHglMDh4XG4i LCBlcnJvci0+Zm9yY2V3YWtlKTsKPj4gQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+PiAgCSAqLwo+PiAgCj4+ICAJLyogMTogUmVnaXN0ZXJzIHNwZWNpZmljIHRvIGEgc2luZ2xl IGdlbmVyYXRpb24gKi8KPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJZXJyb3ItPmd0aWVyWzBdID0gSTkxNV9S RUFEKEdUSUVSKTsKPj4gIAkJZXJyb3ItPmllciA9IEk5MTVfUkVBRChWTFZfSUVSKTsKPj4gIAkJ ZXJyb3ItPmZvcmNld2FrZSA9IEk5MTVfUkVBRF9GVyhGT1JDRVdBS0VfVkxWKTsKPgo+IFdlIHdh bnQgdG8gY2FwdHVyZSB0aGUgZm9yY2V3YWtlIG9uIENIViwgYnV0IG5vdCB0aGUgR1RJRVIuIEVy cm9yCj4gY2FwdHVyZSBvbiBWTFYvQ0hWIGlzIHByZXR0eSBkZWNlbnJseSBicm9rZW4gY3VycmVu dGx5LiBJIGhhdmUgYSBicmFuY2gKPiBzb21ld2hlcmUgdGhhdCB0cmllcyB0byBmaXggaXQgdXAs IEkgc3VwcG9zZSBJIHNob3VsZCBkaWcgaXQgdXAgYW5kIHBvc3QKPiBpdC4KPgo+PiBAQCAtMTI1 Nyw3ICsxMjU3LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCWVycm9yLT5ndGllclswXSA9IEk5MTVf UkVBRChHVElFUik7Cj4+ICAJfSBlbHNlIGlmIChJU19HRU4yKGRldikpIHsKPj4gIAkJZXJyb3It PmllciA9IEk5MTVfUkVBRDE2KElFUik7Cj4+IC0JfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhk ZXYpKSB7Cj4+ICsJfSBlbHNlIGlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAg CQllcnJvci0+aWVyID0gSTkxNV9SRUFEKElFUik7Cj4+ICAJfQo+PiAgCWVycm9yLT5laXIgPSBJ OTE1X1JFQUQoRUlSKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+IGluZGV4IGU4OGQ2OTIu LjkyMDFlMjUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+PiBAQCAtNTgxLDcgKzU4 MSw3IEBAIGk5MTVfZW5hYmxlX3BpcGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUsCj4+ICB7Cj4+ICAJdTMyIGVuYWJsZV9tYXNrOwo+PiAgCj4+ IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpCj4+ICsJaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKQo+PiAgCQllbmFibGVfbWFzayA9IHZsdl9nZXRfcGlw ZXN0YXRfZW5hYmxlX21hc2soZGV2X3ByaXYtPmRldiwKPj4gIAkJCQkJCQkgICBzdGF0dXNfbWFz ayk7Cj4+ICAJZWxzZQo+PiBAQCAtNTk1LDcgKzU5NSw3IEBAIGk5MTVfZGlzYWJsZV9waXBlc3Rh dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLAo+PiAg ewo+PiAgCXUzMiBlbmFibGVfbWFzazsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2LT5kZXYpKQo+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkK Pj4gIAkJZW5hYmxlX21hc2sgPSB2bHZfZ2V0X3BpcGVzdGF0X2VuYWJsZV9tYXNrKGRldl9wcml2 LT5kZXYsCj4+ICAJCQkJCQkJICAgc3RhdHVzX21hc2spOwo+PiAgCWVsc2UKPj4gQEAgLTE3MjMs NyArMTcyMyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4+ICAJICovCj4+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9UUExVR19TVEFU KTsKPj4gIAo+PiAtCWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPj4g KwlpZiAoSVNfRzRYKGRldikgfHwgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQl1 MzIgaG90cGx1Z190cmlnZ2VyID0gaG90cGx1Z19zdGF0dXMgJiBIT1RQTFVHX0lOVF9TVEFUVVNf RzRYOwo+PiAgCj4+ICAJCWlmIChob3RwbHVnX3RyaWdnZXIpIHsKPj4gQEAgLTQ0MTIsNyArNDQx Miw3IEBAIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+PiAgCUlOSVRfV09SSygmZGV2X3ByaXYtPmwzX3Bhcml0eS5lcnJvcl93b3JrLCBpdnli cmlkZ2VfcGFyaXR5X3dvcmspOwo+PiAgCj4+ICAJLyogTGV0J3MgdHJhY2sgdGhlIGVuYWJsZWQg cnBzIGV2ZW50cyAqLwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJiAhSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiAg CQkvKiBXYUdzdlJDMFJlc2lkZW5jeU1ldGhvZDp2bHYgKi8KPj4gIAkJZGV2X3ByaXYtPnBtX3Jw c19ldmVudHMgPSBHRU42X1BNX1JQX0RPV05fRUlfRVhQSVJFRCB8IEdFTjZfUE1fUlBfVVBfRUlf RVhQSVJFRDsKPj4gIAllbHNlCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N1c3BlbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+IGlu ZGV4IDJkOTE4MjEuLjk1OTIxZmMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc3VzcGVuZC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVu ZC5jCj4+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9E RUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09OX0RFTEFZUyk7Cj4+ICAJCWRldl9wcml2LT5yZWdm aWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFEKFBDSF9QUF9PRkZfREVMQVlTKTsKPj4g IAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IgPSBJOTE1X1JFQUQoUENIX1BQX0RJ VklTT1IpOwo+PiAtCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCX0gZWxz ZSBpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJZGV2X3ByaXYtPnJlZ2Zp bGUuc2F2ZVBQX0NPTlRST0wgPSBJOTE1X1JFQUQoUFBfQ09OVFJPTCk7Cj4+ICAJCWRldl9wcml2 LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT05fREVMQVlTKTsKPj4g IAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT0ZG X0RFTEFZUyk7Cj4+IEBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9k aXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJCUk5MTVfV1JJVEUoUENIX1BQX09G Rl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsKPj4gIAkJSTkx NV9XUklURShQQ0hfUFBfRElWSVNPUiwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1Ip Owo+PiAgCQlJOTE1X1dSSVRFKFBDSF9QUF9DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZl UFBfQ09OVFJPTCk7Cj4+IC0JfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJ fSBlbHNlIGlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQlJOTE1X1dSSVRF KFBQX09OX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7Cj4+ICAJ CUk5MTVfV1JJVEUoUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9E RUxBWVMpOwo+PiAgCQlJOTE1X1dSSVRFKFBQX0RJVklTT1IsIGRldl9wcml2LT5yZWdmaWxlLnNh dmVQUF9ESVZJU09SKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+PiBpbmRleCBmOTI5 YzYxLi5kZDUwNmUzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5 c2ZzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4+IEBAIC00 OSw3ICs0OSw3IEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4+ICAKPj4gIAkvKiBP biBWTFYgYW5kIENIViwgcmVzaWRlbmN5IHRpbWUgaXMgaW4gQ1ogdW5pdHMgcmF0aGVyIHRoYW4g MS4yOHVzICovCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4+ICAJCXVuaXRzID0gMTsKPj4gIAkJZGl2ID0gZGV2X3By aXYtPmN6Y2xrX2ZyZXE7Cj4+ICAKPj4gQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgc3NpemVf dCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+PiAgCWludGVsX3J1 bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPj4gIAo+PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5y cHMuaHdfbG9jayk7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpIHsKPj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikpIHsKPj4gIAkJdTMyIGZy ZXE7Cj4+ICAJCWZyZXEgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9G UkVRX1NUUyk7Cj4+ICAJCXJldCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCAoZnJlcSA+PiA4 KSAmIDB4ZmYpOwo+PiBAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCQlpZiAocmV0KQo+PiAgCQkJRFJNX0VSUk9SKCJS QzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwo+PiAgCX0KPj4gLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsK Pj4gIAkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwK Pj4gIAkJCQkJJm1lZGlhX3JjNl9hdHRyX2dyb3VwKTsKPj4gIAkJaWYgKHJldCkKPj4gQEAgLTYx OSw3ICs2MTksNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPj4gIAl9Cj4+ICAKPj4gIAlyZXQgPSAwOwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikp Cj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4+ICAJCXJldCA9IHN5c2ZzX2Ny ZWF0ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwo+PiAgCWVs c2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4+ICAJCXJldCA9IHN5c2ZzX2NyZWF0 ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKPj4gQEAgLTYz NSw3ICs2MzUsNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPj4gIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ PiAgewo+PiAgCXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2Jq LCAmZXJyb3Jfc3RhdGVfYXR0cik7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJc3lzZnNfcmVtb3ZlX2ZpbGVzKCZk ZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7Cj4+ICAJZWxzZQo+PiAgCQlzeXNm c19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgZ2VuNl9hdHRycyk7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiBpbmRleCA5YWE4M2U3Li42NzM0ZWFlIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPj4gQEAgLTM3NSw3ICszNzUsNyBA QCBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPj4gIAlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikpIHsKPj4gIAkJ YXVkX2NvbmZpZyA9IElCWF9BVURfQ0ZHKHBpcGUpOwo+PiAgCQlhdWRfY250cmxfc3QyID0gSUJY X0FVRF9DTlRMX1NUMjsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7 Cj4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpIHsKPj4gIAkJ YXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUpOwo+PiAgCQlhdWRfY250cmxfc3QyID0gVkxW X0FVRF9DTlRMX1NUMjsKPj4gIAl9IGVsc2Ugewo+PiBAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YXRp YyB2b2lkIGlsa19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPj4gIAkJYXVkX2NvbmZpZyA9IElCWF9BVURfQ0ZHKHBpcGUpOwo+PiAgCQlhdWRfY250 bF9zdCA9IElCWF9BVURfQ05UTF9TVChwaXBlKTsKPj4gIAkJYXVkX2NudHJsX3N0MiA9IElCWF9B VURfQ05UTF9TVDI7Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGNvbm5lY3Rvci0+ZGV2 KSkgewo+PiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoY29ubmVjdG9yLT5kZXYp KSB7Cj4+ICAJCWhkbWl3X2hkbWllZGlkID0gVkxWX0hETUlXX0hETUlFRElEKHBpcGUpOwo+PiAg CQlhdWRfY29uZmlnID0gVkxWX0FVRF9DRkcocGlwZSk7Cj4+ICAJCWF1ZF9jbnRsX3N0ID0gVkxW X0FVRF9DTlRMX1NUKHBpcGUpOwo+PiBAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgaW50ZWxfaW5p dF9hdWRpbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCWlmIChJU19HNFgoZGV2KSkgewo+ PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19lbmFibGUgPSBnNHhfYXVkaW9fY29k ZWNfZW5hYmxlOwo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlID0g ZzR4X2F1ZGlvX2NvZGVjX2Rpc2FibGU7Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5hYmxlID0gaWxrX2F1ZGlvX2NvZGVjX2Vu YWJsZTsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9IGlsa19h dWRpb19jb2RlY19kaXNhYmxlOwo+PiAgCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NydC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPj4g aW5kZXggMTIwMDhhZi4uOTRkMWFiMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3J0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMK Pj4gQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfZGV0ZWN0X2hvdHBs dWcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gIAlpZiAoSEFTX1BDSF9TUExJ VChkZXYpKQo+PiAgCQlyZXR1cm4gaW50ZWxfaXJvbmxha2VfY3J0X2RldGVjdF9ob3RwbHVnKGNv bm5lY3Rvcik7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWlmIChIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCQlyZXR1cm4gdmFsbGV5dmlld19jcnRfZGV0ZWN0 X2hvdHBsdWcoY29ubmVjdG9yKTsKPgo+IFRoZXJlJ3Mgbm8gY3J0IG9uIENIViwgc28gZG9lc24n dCBuZWVkIGNoYW5naW5nLgo+Cj4+ICAKPj4gIAkvKgo+PiBAQCAtNzg2LDcgKzc4Niw3IEBAIHZv aWQgaW50ZWxfY3J0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAgCWlmIChI QVNfUENIX1NQTElUKGRldikpCj4+ICAJCWFkcGFfcmVnID0gUENIX0FEUEE7Cj4+IC0JZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpCj4+ICAJCWFkcGFfcmVnID0gVkxWX0FEUEE7Cj4+ICAJZWxzZQo+PiAgCQlhZHBhX3Jl ZyA9IEFEUEE7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggYWFj MTcwMTEuLjhlNTFiODMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK Pj4gQEAgLTE4NSw3ICsxODUsNyBAQCBpbnQgaW50ZWxfaHJhd2NsayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiAgCXVpbnQzMl90IGNsa2NmZzsKPj4gIAo+PiAgCS8qIFRoZXJlIGlzIG5vIENM S0NGRyByZWcgaW4gVmFsbGV5dmlldy4gVkxWIGhyYXdjbGsgaXMgMjAwIE1IeiAqLwo+PiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp Cj4+ICAJCXJldHVybiAyMDA7Cj4+ICAKPj4gIAljbGtjZmcgPSBJOTE1X1JFQUQoQ0xLQ0ZHKTsK Pj4gQEAgLTIxMyw3ICsyMTMsNyBAQCBpbnQgaW50ZWxfaHJhd2NsayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3pjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgewo+PiAtCWlmICghSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikpCj4+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpCj4+ICAJ CXJldHVybjsKPj4gIAo+PiAgCWRldl9wcml2LT5jemNsa19mcmVxID0gdmx2X2dldF9jY2tfY2xv Y2tfaHBsbChkZXZfcHJpdiwgImN6Y2xrIiwKPj4gQEAgLTcxNCwxMSArNzE0LDExIEBAIHN0YXRp YyBib29sIGludGVsX1BMTF9pc192YWxpZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCWlm IChjbG9jay0+bTEgIDwgbGltaXQtPm0xLm1pbiAgfHwgbGltaXQtPm0xLm1heCAgPCBjbG9jay0+ bTEpCj4+ICAJCUlOVEVMUGxsSW52YWxpZCgibTEgb3V0IG9mIHJhbmdlXG4iKTsKPj4gIAo+PiAt CWlmICghSVNfUElORVZJRVcoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19CUk9Y VE9OKGRldikpCj4+ICsJaWYgKCFJU19QSU5FVklFVyhkZXYpICYmICFIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpCj4+ICAJCWlmIChjbG9jay0+bTEgPD0gY2xv Y2stPm0yKQo+PiAgCQkJSU5URUxQbGxJbnZhbGlkKCJtMSA8PSBtMlxuIik7Cj4+ICAKPj4gLQlp ZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7Cj4+ICsJaWYgKCFI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpIHsKPj4gIAkJaWYg KGNsb2NrLT5wIDwgbGltaXQtPnAubWluIHx8IGxpbWl0LT5wLm1heCA8IGNsb2NrLT5wKQo+PiAg CQkJSU5URUxQbGxJbnZhbGlkKCJwIG91dCBvZiByYW5nZVxuIik7Cj4+ICAJCWlmIChjbG9jay0+ bSA8IGxpbWl0LT5tLm1pbiB8fCBsaW1pdC0+bS5tYXggPCBjbG9jay0+bSkKPj4gQEAgLTEzMDMs NyArMTMwMyw3IEBAIHZvaWQgYXNzZXJ0X3BhbmVsX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPj4gIAkJICAgIEk5MTVfUkVBRChQQ0hfTFZEUykgJiBMVkRTX1BJ UEVCX1NFTEVDVCkKPj4gIAkJCXBhbmVsX3BpcGUgPSBQSVBFX0I7Cj4+ICAJCS8qIFhYWDogZWxz ZSBmaXggZm9yIGVEUCAqLwo+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4+ICAJCS8qIHByZXN1 bWFibHkgd3JpdGUgbG9jayBkZXBlbmRzIG9uIHBpcGUsIG5vdCBwb3J0IHNlbGVjdCAqLwo+PiAg CQlwcF9yZWcgPSBWTFZfUElQRV9QUF9DT05UUk9MKHBpcGUpOwo+PiAgCQlwYW5lbF9waXBlID0g cGlwZTsKPj4gQEAgLTE0MjEsNyArMTQyMSw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVz X2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkJCSAgICAg InBsYW5lICVkIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0 IGlzIHN0aWxsIGFjdGl2ZVxuIiwKPj4gIAkJCSAgICAgc3ByaXRlLCBwaXBlX25hbWUocGlwZSkp Owo+PiAgCQl9Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwl9IGVs c2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJZm9yX2VhY2hfc3ByaXRl KGRldl9wcml2LCBwaXBlLCBzcHJpdGUpIHsKPj4gIAkJCXUzMiB2YWwgPSBJOTE1X1JFQUQoU1BD TlRSKHBpcGUsIHNwcml0ZSkpOwo+PiAgCQkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIFNQX0VOQUJM RSwKPj4gQEAgLTE2MDUsNyArMTYwNSw3IEBAIHN0YXRpYyB2b2lkIHZsdl9lbmFibGVfcGxsKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2 LCBjcnRjLT5waXBlKTsKPj4gIAo+PiAgCS8qIE5vIHJlYWxseSwgbm90IGZvciBJTEsrICovCj4+ IC0JQlVHX09OKCFJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKTsKPj4gKwlCVUdfT04oIUhB U19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKTsKPgo+IFRoaXMgaXMgVkxWIHNwZWNp ZmljLCBzbyBubyBuZWVkIHRvIGNoYW5nZS4gQ291bGQganVzdCBraWxsIHRoZXNlCj4gQlVHX09O cyB0aG91Z2guLi4KPgo+PiAgCj4+ICAJLyogUExMIGlzIHByb3RlY3RlZCBieSBwYW5lbCwgbWFr ZSBzdXJlIHdlIGNhbiB3cml0ZSBpdCAqLwo+PiAgCWlmIChJU19NT0JJTEUoZGV2X3ByaXYtPmRl dikpCj4+IEBAIC0yMzE3LDcgKzIzMTcsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2xp bmVhcl9hbGlnbm1lbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCj4+ICAJCXJldHVybiAyNTYgKiAxMDI0 Owo+PiAgCWVsc2UgaWYgKElTX0JST0FEV0FURVIoZGV2X3ByaXYpIHx8IElTX0NSRVNUTElORShk ZXZfcHJpdikgfHwKPj4gLQkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCQkgSEFTX0dF TjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQo+PiAgCQlyZXR1cm4gMTI4ICogMTAyNDsKPj4gIAll bHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCj4+ICAJCXJldHVybiA0ICog MTAyNDsKPj4gQEAgLTU0NDgsNyArNTQ0OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9j ZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCSAqIEJTcGVjIGVycm9uZW91c2x5IGNs YWltcyB3ZSBzaG91bGQgYWltIGZvciA0TUh6LCBidXQKPj4gIAkgKiBpbiBmYWN0IDFNSHogaXMg dGhlIGNvcnJlY3QgZnJlcXVlbmN5Lgo+PiAgCSAqLwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQkvKgo+PiAg CQkgKiBQcm9ncmFtIHRoZSBnbWJ1c19mcmVxIGJhc2VkIG9uIHRoZSBjZGNsayBmcmVxdWVuY3ku Cj4+ICAJCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWltcyB3ZSBzaG91bGQgYWltIGZvciA0TUh6 LCBidXQKPj4gQEAgLTcxNjksNyArNzE2OSw3IEBAIHN0YXRpYyBpbnQgaTl4eF9nZXRfcmVmY2xr KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+PiAgCj4+ICAJV0FS Tl9PTighY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewo+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewo+PiAgCQlyZWZjbGsgPSAxMDAwMDA7Cj4+ICAJ fSBlbHNlIGlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVMX09V VFBVVF9MVkRTKSAmJgo+PiAgCSAgICBpbnRlbF9wYW5lbF91c2Vfc3NjKGRldl9wcml2KSAmJiBu dW1fY29ubmVjdG9ycyA8IDIpIHsKPj4gQEAgLTc4NjgsNyArNzg2OCw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+PiAgCQlw aXBlY29uZiB8PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPj4gIAo+PiAgCS8qIG9ubHkgZzR4IGFu ZCBsYXRlciBoYXZlIGZhbmN5IGJwYy9kaXRoZXIgY29udHJvbHMgKi8KPj4gLQlpZiAoSVNfRzRY KGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKElTX0c0WChkZXYpIHx8IEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJLyogQnNwZWMgY2xhaW1zIHRoYXQgd2Ug Y2FuJ3QgdXNlIGRpdGhlcmluZyBmb3IgMzBicHAgcGlwZXMuICovCj4+ICAJCWlmIChpbnRlbF9j cnRjLT5jb25maWctPmRpdGhlciAmJiBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfYnBwICE9IDMw KQo+PiAgCQkJcGlwZWNvbmYgfD0gUElQRUNPTkZfRElUSEVSX0VOIHwKPj4gQEAgLTc5MDgsNyAr NzkwOCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjKQo+PiAgCX0gZWxzZQo+PiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9QUk9H UkVTU0lWRTsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgaW50ZWxfY3J0Yy0+ Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPj4gIAkJ cGlwZWNvbmYgfD0gUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUOwo+PiAgCj4+ICAJSTkxNV9X UklURShQSVBFQ09ORihpbnRlbF9jcnRjLT5waXBlKSwgcGlwZWNvbmYpOwo+PiBAQCAtODE1NSw3 ICs4MTU1LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4+ICAJaWYgKCEodG1wICYgUElQRUNPTkZfRU5BQkxFKSkKPj4gIAkJcmV0 dXJuIGZhbHNlOwo+PiAgCj4+IC0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2 KSkgewo+PiArCWlmIChJU19HNFgoZGV2KSB8fCBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7 Cj4+ICAJCXN3aXRjaCAodG1wICYgUElQRUNPTkZfQlBDX01BU0spIHsKPj4gIAkJY2FzZSBQSVBF Q09ORl82QlBDOgo+PiAgCQkJcGlwZV9jb25maWctPnBpcGVfYnBwID0gMTg7Cj4+IEBAIC04MTcx LDcgKzgxNzEsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKPj4gIAkJfQo+PiAgCX0KPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCj4+ICsJaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NF TEVDVCkpCj4+ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1ZTsKPj4g IAo+PiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpCj4+IEBAIC04MTk5LDcgKzgxOTks NyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPSAxOwo+PiAgCX0KPj4g IAlwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsID0gSTkxNV9SRUFEKERQTEwoY3J0Yy0+ cGlwZSkpOwo+PiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKCFIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4+ICAJCS8qCj4+ICAJCSAqIERQTExfRFZPXzJYX01PREUg bXVzdCBiZSBlbmFibGVkIGZvciBib3RoIERQTExzCj4+ICAJCSAqIG9uIDgzMC4gRmlsdGVyIGl0 IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QKPj4gQEAgLTExNTE2LDcgKzExNTE2LDcgQEAgc3Rh dGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCj4+ICAJCXdvcmst PmZsaXBfY291bnQgPSBJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUpKSArIDE7Cj4+ ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKEhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpIHsKPj4gIAkJcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tCQ1NdOwo+PiAgCQlp ZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9vYmood29yay0+b2xkX2ZiKS0+dGlsaW5n X21vZGUpCj4+ICAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2UgdGlsaW5n ICovCj4+IEBAIC0xMTk5Nyw3ICsxMTk5Nyw3IEBAIGNvbXB1dGVfYmFzZWxpbmVfcGlwZV9icHAo c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5lY3Rvcl9zdGF0ZTsKPj4gIAlpbnQgYnBwLCBpOwo+PiAgCj4+IC0JaWYgKChJU19HNFgo ZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpKQo+PiArCWlmICgoSVNfRzRYKGRldikgfHwgSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkpCj4+ICAJCWJwcCA9IDEwKjM7Cj4+ICAJZWxzZSBpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkKPj4gIAkJYnBwID0gMTIqMzsKPj4gQEAgLTEyNjA3 LDcgKzEyNjA3LDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+PiAgCVBJUEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+PiAgCVBJ UEVfQ09ORl9DSEVDS19JKGhhc19oZG1pX3NpbmspOwo+PiAgCWlmICgoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA4ICYmICFJU19IQVNXRUxMKGRldikpIHx8Cj4+IC0JICAgIElTX1ZBTExFWVZJRVco ZGV2KSkKPj4gKwkgICAgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJUElQRV9DT05G X0NIRUNLX0kobGltaXRlZF9jb2xvcl9yYW5nZSk7Cj4+ICAJUElQRV9DT05GX0NIRUNLX0koaGFz X2luZm9mcmFtZSk7Cj4+ICAKPj4gQEAgLTE0MjU2LDcgKzE0MjU2LDcgQEAgc3RhdGljIGJvb2wg aW50ZWxfY3J0X3ByZXNlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAlpZiAoSVNfQ0hF UlJZVklFVyhkZXYpKQo+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpICYmICFkZXZfcHJpdi0+dmJ0LmludF9jcnRfc3VwcG9ydCkKPj4gKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJiAhZGV2X3ByaXYtPnZidC5pbnRfY3J0X3N1cHBvcnQp Cj4+ICAJCXJldHVybiBmYWxzZTsKPgo+IEFnYWluLCBubyBjcnQgb24gQ0hWLCBzbyBkb2Vzbid0 IG5lZWQgY2hhbmdpbmcuCj4KPj4gIAo+PiAgCXJldHVybiB0cnVlOwo+PiBAQCAtMTQzNDEsNyAr MTQzNDEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4+ICAKPj4gIAkJaWYgKEk5MTVfUkVBRChQQ0hfRFBfRCkgJiBEUF9ERVRFQ1RF RCkKPj4gIAkJCWludGVsX2RwX2luaXQoZGV2LCBQQ0hfRFBfRCwgUE9SVF9EKTsKPj4gLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBf RkVBVFVSRVMoZGV2KSkgewo+PiAgCQkvKgo+PiAgCQkgKiBUaGUgRFBfREVURUNURUQgYml0IGlz IHRoZSBsYXRjaGVkIHN0YXRlIG9mIHRoZSBEREMKPj4gIAkJICogU0RBIHBpbiBhdCBib290LiBI b3dldmVyIHNpbmNlIGVEUCBkb2Vzbid0IHJlcXVpcmUgRERDCj4+IEBAIC0xNDQ5MCw3ICsxNDQ5 MCw3IEBAIHUzMiBpbnRlbF9mYl9waXRjaF9saW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 aW50NjRfdCBmYl9tb2RpZmllciwKPj4gIAkJICogIHBpeGVscyBhbmQgMzJLIGJ5dGVzLiIKPj4g IAkJICovCj4+ICAJCSByZXR1cm4gbWluKDgxOTIqZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGl4ZWxf Zm9ybWF0LCAwKSwgMzI3NjgpOwo+PiAtCX0gZWxzZSBpZiAoZ2VuID49IDUgJiYgIUlTX1ZBTExF WVZJRVcoZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoZ2VuID49IDUgJiYgIUhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpIHsKPj4gIAkJcmV0dXJuIDMyKjEwMjQ7Cj4+ICAJfSBlbHNlIGlmIChnZW4g Pj0gNCkgewo+PiAgCQlpZiAoZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQp Cj4+IEBAIC0xNDU5NCw3ICsxNDU5NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQl9Cj4+ICAJCWJyZWFrOwo+PiAgCWNh c2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPj4gLQkJaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYg SU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7Cj4+ICsJCWlmICghSEFTX0dFTjdfTFBfRkVBVFVS RVMoZGV2KSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPj4gIAkJCURSTV9ERUJVRygi dW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPj4gIAkJCQkgIGRybV9nZXRfZm9ybWF0 X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+PiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ IEBAIC0xNDYxMCw3ICsxNDYxMCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQl9Cj4+ICAJCWJyZWFrOwo+PiAgCWNhc2Ug RFJNX0ZPUk1BVF9BQkdSMjEwMTAxMDoKPj4gLQkJaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsK Pj4gKwkJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4+ICAJCQlEUk1fREVCVUco InVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4+ICAJCQkJICBkcm1fZ2V0X2Zvcm1h dF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ PiBAQCAtMTQ3MzgsNyArMTQ3MzgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXko c3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNh YmxlID0gaXJvbmxha2VfY3J0Y19kaXNhYmxlOwo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRh dGVfcHJpbWFyeV9wbGFuZSA9Cj4+ICAJCQlpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsK Pj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlw ZV9jb25maWcgPSBpOXh4X2dldF9waXBlX2NvbmZpZzsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXku Z2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KPj4gIAkJCWk5eHhfZ2V0X2luaXRpYWxfcGxhbmVf Y29uZmlnOwo+PiBAQCAtMTQ3NzEsNyArMTQ3NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0 X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAllbHNlIGlmIChJU19IQVNXRUxM KGRldikpCj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkID0K Pj4gIAkJCWhhc3dlbGxfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7Cj4+IC0JZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkID0KPj4gIAkJ CXZhbGxleXZpZXdfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7Cj4+ICAJZWxzZSBpZiAoSVNfR0VO NShkZXYpKQo+PiBAQCAtMTQ4MzIsNyArMTQ4MzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0 X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAkJCWRldl9wcml2LT5kaXNwbGF5 Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4+ICAJCQkJYnJvYWR3ZWxsX21vZGVzZXRfY2FsY19jZGNs azsKPj4gIAkJfQo+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJfSBl bHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5kaXNw bGF5Lm1vZGVzZXRfY29tbWl0X2NkY2xrID0KPj4gIAkJCXZhbGxleXZpZXdfbW9kZXNldF9jb21t aXRfY2RjbGs7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4+ IEBAIC0xNTYwNiw3ICsxNTYwNiw3IEBAIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAkJcGxsLT5vbiA9IGZhbHNlOwo+PiAgCX0KPj4gIAo+ PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpCj4+ICAJCXZsdl93bV9nZXRfaHdfc3RhdGUoZGV2KTsKPj4gIAllbHNlIGlmIChJU19H RU45KGRldikpCj4+ICAJCXNrbF93bV9nZXRfaHdfc3RhdGUoZGV2KTsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4+IGluZGV4IGYyYmZjYTAuLmFjODRmODMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+PiBAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgdmx2X3Bvd2VyX3NlcXVlbmNl cl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4+ICAJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7Cj4+ICAKPj4gLQlpZiAoV0FSTl9PTighSVNfVkFMTEVZVklFVyhkZXYpKSkKPj4g KwlpZiAoV0FSTl9PTighSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkpCj4+ICAJCXJldHVybjsK Pj4gIAo+PiAgCS8qCj4+IEBAIC01ODIsNyArNTgyLDcgQEAgc3RhdGljIGludCBlZHBfbm90aWZ5 X2hhbmRsZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGNvZGUs Cj4+ICAKPj4gIAlwcHNfbG9jayhpbnRlbF9kcCk7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7Cj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJZW51 bSBwaXBlIHBpcGUgPSB2bHZfcG93ZXJfc2VxdWVuY2VyX3BpcGUoaW50ZWxfZHApOwo+PiAgCQlp OTE1X3JlZ190IHBwX2N0cmxfcmVnLCBwcF9kaXZfcmVnOwo+PiAgCQl1MzIgcHBfZGl2Owo+PiBA QCAtNjEwLDcgKzYxMCw3IEBAIHN0YXRpYyBib29sIGVkcF9oYXZlX3BhbmVsX3Bvd2VyKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ICAKPj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZf cHJpdi0+cHBzX211dGV4KTsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYKPj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJgo+PiAgCSAgICBpbnRlbF9kcC0+cHBz X3BpcGUgPT0gSU5WQUxJRF9QSVBFKQo+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+ICAKPj4gQEAgLTYy NCw3ICs2MjQsNyBAQCBzdGF0aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF92ZGQoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPj4gIAo+PiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5w cHNfbXV0ZXgpOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJgo+PiArCWlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmCj4+ICAJICAgIGludGVsX2RwLT5wcHNfcGlwZSA9 PSBJTlZBTElEX1BJUEUpCj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+PiBAQCAtMTcyMiw3ICsx NzIyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPj4gIAkJCXRyYW5zX2RwICY9IH5UUkFOU19EUF9FTkhfRlJBTUlORzsKPj4g IAkJSTkxNV9XUklURShUUkFOU19EUF9DVEwoY3J0Yy0+cGlwZSksIHRyYW5zX2RwKTsKPj4gIAl9 IGVsc2Ugewo+PiAtCQlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhk ZXYpICYmCj4+ICsJCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpICYmCj4+ICAJCSAgICBjcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2Up Cj4+ICAJCQlpbnRlbF9kcC0+RFAgfD0gRFBfQ09MT1JfUkFOR0VfMTZfMjM1Owo+PiAgCj4+IEBA IC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRfY29uZmlnKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgCj4+ICAJcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPj4gIAo+PiAtCWlmICghSEFTX1BDSF9TUExJVChk ZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYKPj4gKwlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2 KSAmJiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJgo+PiAgCSAgICB0bXAgJiBEUF9DT0xP Ul9SQU5HRV8xNl8yMzUpCj4+ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0g dHJ1ZTsKPj4gIAo+PiBAQCAtMjY5NCw3ICsyNjk0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5h YmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiAgCj4+ICAJcHBzX2xvY2so aW50ZWxfZHApOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJdmx2X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVu Y2VyKGludGVsX2RwKTsKPj4gIAo+PiAgCS8qCj4+IEBAIC0yNzI4LDcgKzI3MjgsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4+ ICAKPj4gIAlwcHNfdW5sb2NrKGludGVsX2RwKTsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikpIHsKPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQl1bnNp Z25lZCBpbnQgbGFuZV9tYXNrID0gMHgwOwo+PiAgCj4+ICAJCWlmIChJU19DSEVSUllWSUVXKGRl dikpCj4+IEBAIC0zMjE4LDcgKzMyMTgsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+PiAgCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nICYm IHBvcnQgPT0gUE9SVF9BKQo+PiAgCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVW RUxfMzsKPj4gIAkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKPj4gLQl9 IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpCj4+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVM XzM7Cj4+ICAJZWxzZSBpZiAoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKQo+PiAgCQly ZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yOwo+PiBAQCAtMzI1OSw3ICszMjU5 LDcgQEAgaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCB1aW50OF90IHZvbHRhZ2Vfc3dpbmcpCj4+ICAJCWRlZmF1bHQ6Cj4+ICAJCQlyZXR1cm4gRFBf VFJBSU5fUFJFX0VNUEhfTEVWRUxfMDsKPj4gIAkJfQo+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7 Cj4+ICAJCXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFT Sykgewo+PiAgCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoKPj4gIAkJCXJl dHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+PiBAQCAtNDUzOSw3ICs0NTM5LDcgQEAg Ym9vbCBpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPj4gIAkJcmV0dXJuIGNwdF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9w cml2LCBwb3J0KTsKPj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPj4gIAkJcmV0 dXJuIGJ4dF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPj4gLQllbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXZfcHJpdikpCj4+ICAJCXJldHVybiB2bHZfZGlnaXRhbF9wb3J0X2Nvbm5lY3Rl ZChkZXZfcHJpdiwgcG9ydCk7Cj4+ICAJZWxzZQo+PiAgCQlyZXR1cm4gZzR4X2RpZ2l0YWxfcG9y dF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+PiBAQCAtNDkzMyw3ICs0OTMzLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCj4+ICAJICogUmVhZCBvdXQgdGhlIGN1cnJlbnQgcG93ZXIgc2VxdWVuY2VyIGFzc2lnbm1l bnQsCj4+ICAJICogaW4gY2FzZSB0aGUgQklPUyBkaWQgc29tZXRoaW5nIHdpdGggaXQuCj4+ICAJ ICovCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZW5jb2Rlci0+ZGV2KSkKPj4gKwlpZiAoSEFTX0dF TjdfTFBfRkVBVFVSRVMoZW5jb2Rlci0+ZGV2KSkKPj4gIAkJdmx2X2luaXRpYWxfcG93ZXJfc2Vx dWVuY2VyX3NldHVwKGludGVsX2RwKTsKPj4gIAo+PiAgCWludGVsX2VkcF9wYW5lbF92ZGRfc2Fu aXRpemUoaW50ZWxfZHApOwo+PiBAQCAtNTI5Myw3ICs1MjkzLDcgQEAgaW50ZWxfZHBfaW5pdF9w YW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ ICAKPj4gIAkvKiBIYXN3ZWxsIGRvZXNuJ3QgaGF2ZSBhbnkgcG9ydCBzZWxlY3Rpb24gYml0cyBm b3IgdGhlIHBhbmVsCj4+ICAJICogcG93ZXIgc2VxdWVuY2VyIGFueSBtb3JlLiAqLwo+PiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSkgewo+PiAgCQlwb3J0X3NlbCA9IFBBTkVMX1BPUlRfU0VMRUNUX1ZMVihwb3J0KTsKPj4gIAl9 IGVsc2UgaWYgKEhBU19QQ0hfSUJYKGRldikgfHwgSEFTX1BDSF9DUFQoZGV2KSkgewo+PiAgCQlp ZiAocG9ydCA9PSBQT1JUX0EpCj4+IEBAIC01NDA1LDEyICs1NDA1LDEyIEBAIHN0YXRpYyB2b2lk IGludGVsX2RwX3NldF9kcnJzX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCByZWZy ZXNoX3JhdGUpCj4+ICAKPj4gIAkJdmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4+ICAJCWlmIChpbmRl eCA+IERSUlNfSElHSF9SUikgewo+PiAtCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwkJ CWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+PiAgCQkJCXZhbCB8PSBQSVBFQ09ORl9F RFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwo+PiAgCQkJZWxzZQo+PiAgCQkJCXZhbCB8PSBQSVBFQ09O Rl9FRFBfUlJfTU9ERV9TV0lUQ0g7Cj4+ICAJCX0gZWxzZSB7Cj4+IC0JCQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQo+PiArCQkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4+ICAJCQkJ dmFsICY9IH5QSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwo+PiAgCQkJZWxzZQo+PiAg CQkJCXZhbCAmPSB+UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOwo+PiBAQCAtNTc3Nyw3ICs1 Nzc3LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4+ICAJfQo+PiAgCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZp Zy5tdXRleCk7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJaW50ZWxfZHAtPmVkcF9ub3RpZmllci5u b3RpZmllcl9jYWxsID0gZWRwX25vdGlmeV9oYW5kbGVyOwo+PiAgCQlyZWdpc3Rlcl9yZWJvb3Rf bm90aWZpZXIoJmludGVsX2RwLT5lZHBfbm90aWZpZXIpOwo+PiAgCj4+IEBAIC01ODI1LDcgKzU4 MjUsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCwKPj4gIAkvKiBpbnRlbF9kcCB2ZnVuY3MgKi8KPj4gIAlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2 aWRlciA9IHNrbF9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4+IC0JZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQo+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4+ICAJ CWludGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSB2bHZfZ2V0X2F1eF9jbG9ja19kaXZp ZGVyOwo+PiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkK Pj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IGhzd19nZXRfYXV4X2Nsb2Nr X2RpdmlkZXI7Cj4+IEBAIC01ODYwLDcgKzU4NjAsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rv cihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gIAkJaW50ZWxf ZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9FRFA7Cj4+ICAKPj4gIAkvKiBlRFAgb25seSBv biBwb3J0IEIgYW5kL29yIEMgb24gdmx2L2NodiAqLwo+PiAtCWlmIChXQVJOX09OKElTX1ZBTExF WVZJRVcoZGV2KSAmJiBpc19lZHAoaW50ZWxfZHApICYmCj4+ICsJaWYgKFdBUk5fT04oSEFTX0dF TjdfTFBfRkVBVFVSRVMoZGV2KSAmJiBpc19lZHAoaW50ZWxfZHApICYmCj4+ICAJCSAgICBwb3J0 ICE9IFBPUlRfQiAmJiBwb3J0ICE9IFBPUlRfQykpCj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+ PiBAQCAtNTkxMiw3ICs1OTEyLDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ICAJaWYgKGlzX2VkcChpbnRlbF9k cCkpIHsKPj4gIAkJcHBzX2xvY2soaW50ZWxfZHApOwo+PiAgCQlpbnRlbF9kcF9pbml0X3BhbmVs X3Bvd2VyX3RpbWVzdGFtcHMoaW50ZWxfZHApOwo+PiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KQo+PiArCQlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJCXZsdl9pbml0aWFs X3Bvd2VyX3NlcXVlbmNlcl9zZXR1cChpbnRlbF9kcCk7Cj4+ICAJCWVsc2UKPj4gIAkJCWludGVs X2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGRldiwgaW50ZWxfZHApOwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kc2kuYwo+PiBpbmRleCAyMzA5NTdmLi45NTcwNzYxIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kc2kuYwo+PiBAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RzaV9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4+ICB7 Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+PiAgCj4+ IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSkKPj4gIAkJdmx2X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4+ICAJZWxzZSBpZiAo SVNfQlJPWFRPTihkZXYpKQo+PiAgCQlieHRfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsKPj4g QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4gIAo+PiAgCW1zbGVlcChpbnRlbF9kc2ktPnBh bmVsX29uX2RlbGF5KTsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQkvKgo+PiAgCQkgKiBEaXNhYmxl IERQT3VuaXQgY2xvY2sgZ2F0aW5nLCBjYW4gc3RhbGwgcGlwZQo+PiAgCQkgKiBhbmQgd2UgbmVl ZCBEUExMIFJFRkEgYWx3YXlzIGVuYWJsZWQKPj4gQEAgLTY4NCw4ICs2ODQsNyBAQCBzdGF0aWMg Ym9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+PiAgCQkgKiBFbmFibGUgYml0IGRvZXMgbm90IGdldCBzZXQuIFRvIGNoZWNrIHdoZXRoZXIg RFNJIFBvcnQgQwo+PiAgCQkgKiB3YXMgZW5hYmxlZCBpbiBCSU9TLCBjaGVjayB0aGUgUGlwZSBC IGVuYWJsZSBiaXQKPj4gIAkJICovCj4+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgIUlT X0NIRVJSWVZJRVcoZGV2KSAmJgo+PiAtCQkgICAgKHBvcnQgPT0gUE9SVF9DKSkKPj4gKwkJaWYg KElTX1ZBTExFWVZJRVcoZGV2KSAmJiAocG9ydCA9PSBQT1JUX0MpKQo+PiAgCQkJZHBpX2VuYWJs ZWQgPSBJOTE1X1JFQUQoUElQRUNPTkYoUElQRV9CKSkgJgo+PiAgCQkJCQkJCVBJUEVDT05GX0VO QUJMRTsKPj4gIAo+PiBAQCAtNzE2LDcgKzcxNSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgCj4+ICAJaWYgKElT X0JST1hUT04oZW5jb2Rlci0+YmFzZS5kZXYpKQo+PiAgCQlwY2xrID0gYnh0X2dldF9kc2lfcGNs ayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwo+PiAtCWVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZW5jb2Rlci0+YmFzZS5kZXYpKQo+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGVuY29kZXItPmJhc2UuZGV2KSkKPj4gIAkJcGNsayA9IHZsdl9nZXRfZHNpX3BjbGsoZW5j b2RlciwgcGlwZV9jb25maWctPnBpcGVfYnBwKTsKPj4gIAo+PiAgCWlmICghcGNsaykKPj4gQEAg LTg2OSw3ICs4NjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPj4gIAl9Cj4+ICAKPj4gIAlmb3JfZWFjaF9kc2lf cG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPj4gKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJCS8qCj4+ ICAJCQkgKiBlc2NhcGUgY2xvY2sgZGl2aWRlciwgMjBNSHosIHNoYXJlZCBmb3IgQSBhbmQgQy4K Pj4gIAkJCSAqIGRldmljZSByZWFkeSBtdXN0IGJlIG9mZiB3aGVuIGRvaW5nIHRoaXMhIHR4Y2xr ZXNjPwo+PiBAQCAtMTEyOSw3ICsxMTI4LDcgQEAgdm9pZCBpbnRlbF9kc2lfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+PiAgCWlmICghZGV2X3ByaXYtPnZidC5oYXNfbWlwaSkKPj4gIAkJ cmV0dXJuOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5taXBpX21taW9fYmFzZSA9 IFZMVl9NSVBJX0JBU0U7Cj4+ICAJfSBlbHNlIHsKPj4gIAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRl ZCBNaXBpIGRldmljZSB0byByZWcgYmFzZSIpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp X3BsbC5jCj4+IGluZGV4IGNiM2NmMzkuLmRjZTlmOTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kc2lfcGxsLmMKPj4gQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIGludGVsX2VuYWJs ZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiAgewo+PiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPj4gIAo+PiAtCWlmIChJU19W QUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4+ICAJ CXZsdl9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKPj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRl dikpCj4+ICAJCWJ4dF9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKPj4gQEAgLTU3MSw3ICs1NzEs NyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5k ZXY7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKQo+PiAgCQl2bHZfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+PiAg CWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkKPj4gIAkJYnh0X2Rpc2FibGVfZHNpX3BsbChlbmNv ZGVyKTsKPj4gQEAgLTU5OSw2ICs1OTksNiBAQCB2b2lkIGludGVsX2RzaV9yZXNldF9jbG9ja3Mo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGVudW0gcG9ydCBwb3J0KQo+PiAgCj4+ICAJ aWYgKElTX0JST1hUT04oZGV2KSkKPj4gIAkJYnh0X2RzaV9yZXNldF9jbG9ja3MoZW5jb2Rlciwg cG9ydCk7Cj4+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWVsc2UgaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4+ICAJCXZsdl9kc2lfcmVzZXRfY2xvY2tzKGVuY29k ZXIsIHBvcnQpOwo+PiAgfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+IGluZGV4IGMz OTc4YmEuLjgwYzRkOGUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkbWkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPj4gQEAg LTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1l KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPj4gIAo+PiAgCWlmIChIQVNfRERJKGRldl9w cml2KSkKPj4gIAkJcmVnID0gSFNXX1RWSURFT19ESVBfR0NQKGNydGMtPmNvbmZpZy0+Y3B1X3Ry YW5zY29kZXIpOwo+PiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCWVs c2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2KSkKPj4gIAkJcmVnID0gVkxWX1RW SURFT19ESVBfR0NQKGNydGMtPnBpcGUpOwo+PiAgCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2 X3ByaXYtPmRldikpCj4+ICAJCXJlZyA9IFRWSURFT19ESVBfR0NQKGNydGMtPnBpcGUpOwo+PiBA QCAtMjEwMCw3ICsyMTAwLDcgQEAgdm9pZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiAgCQlCVUcoKTsKPj4gIAl9 Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJaW50ZWxfaGRtaS0+d3JpdGVfaW5mb2ZyYW1lID0gdmx2 X3dyaXRlX2luZm9mcmFtZTsKPj4gIAkJaW50ZWxfaGRtaS0+c2V0X2luZm9mcmFtZXMgPSB2bHZf c2V0X2luZm9mcmFtZXM7Cj4+ICAJCWludGVsX2hkbWktPmluZm9mcmFtZV9lbmFibGVkID0gdmx2 X2luZm9mcmFtZV9lbmFibGVkOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaG90cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCj4+ IGluZGV4IGIxNzc4NTcuLmU3ZGRmMzQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o b3RwbHVnLmMKPj4gQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIGludGVsX2hwZF9pcnFfaGFuZGxl cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQkJICogaG90cGx1ZyBiaXRzIGl0c2VsZi4g U28gb25seSBXQVJOIGFib3V0IHVuZXhwZWN0ZWQKPj4gIAkJCSAqIGludGVycnVwdHMgb24gc2Fu ZXIgcGxhdGZvcm1zLgo+PiAgCQkJICovCj4+IC0JCQlXQVJOX09OQ0UoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpLAo+PiArCQkJV0FSTl9PTkNFKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldiksCj4+ICAJ CQkJICAiUmVjZWl2ZWQgSFBEIGludGVycnVwdCBvbiBwaW4gJWQgYWx0aG91Z2ggZGlzYWJsZWRc biIsIGkpOwo+Cj4gQ2FuIHJlcGxhY2Ugd2l0aCAhSEFTX0dNQ0hfRElTUExBWQo+Cj4+ICAJCQlj b250aW51ZTsKPj4gIAkJfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaTJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+PiBpbmRleCAxMTEw YzgzLi4zZTllMGU1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9p MmMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+PiBAQCAtNjI5 LDcgKzYyOSw3IEBAIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+PiAgCWlmIChIQVNfUENIX05PUChkZXYpKQo+PiAgCQlyZXR1cm4gMDsKPj4gIAo+PiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp Cj4+ICAJCWRldl9wcml2LT5ncGlvX21taW9fYmFzZSA9IFZMVl9ESVNQTEFZX0JBU0U7Cj4+ICAJ ZWxzZSBpZiAoIUhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYpKQo+PiAgCQlkZXZfcHJpdi0+Z3Bp b19tbWlvX2Jhc2UgPQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPj4gaW5kZXggYTI0 ZGYzNS4uM2I3ZTQ0NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cGFuZWwuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4+IEBA IC0xNzY3LDcgKzE3NjcsNyBAQCBpbnRlbF9wYW5lbF9pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1 Y3QgaW50ZWxfcGFuZWwgKnBhbmVsKQo+PiAgCQlwYW5lbC0+YmFja2xpZ2h0LnNldCA9IHBjaF9z ZXRfYmFja2xpZ2h0Owo+PiAgCQlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IHBjaF9nZXRfYmFja2xp Z2h0Owo+PiAgCQlwYW5lbC0+YmFja2xpZ2h0Lmh6X3RvX3B3bSA9IHBjaF9oel90b19wd207Cj4+ IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJaWYgKGRldl9wcml2LT52YnQuaGFzX21pcGkp IHsKPj4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuc2V0dXAgPSBwd21fc2V0dXBfYmFja2xpZ2h0Owo+ PiAgCQkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBwd21fZW5hYmxlX2JhY2tsaWdodDsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4+IGluZGV4IDk2ZjQ1ZDcuLjc0MWM4ODggMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+PiBAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgaW50ZWxf c2V0X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBl bmFibGUpCj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4+ICAJ dTMyIHZhbDsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQlJOTE1X1dSSVRFKEZXX0JMQ19TRUxGX1ZM ViwgZW5hYmxlID8gRldfQ1NQV1JEV05FTiA6IDApOwo+PiAgCQlQT1NUSU5HX1JFQUQoRldfQkxD X1NFTEZfVkxWKTsKPj4gIAkJZGV2X3ByaXYtPndtLnZsdi5jeHNyID0gZW5hYmxlOwo+PiBAQCAt NDM5Nyw3ICs0Mzk3LDcgQEAgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPj4gIAo+PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7Cj4+ICAJaWYgKGRldl9wcml2LT5ycHMuZW5hYmxlZCkgewo+PiAtCQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQo+PiArCQlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJCXZs dl9zZXRfcnBzX2lkbGUoZGV2X3ByaXYpOwo+PiAgCQllbHNlCj4+ICAJCQlnZW42X3NldF9ycHMo ZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+PiBAQCAtNDQ1MCw3ICs0 NDUwLDcgQEAgdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4+ICAKPj4gIHZvaWQgaW50ZWxfc2V0X3JwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1OCB2YWwpCj4+ICB7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJdmFsbGV5dmlld19zZXRfcnBzKGRldiwgdmFs KTsKPj4gIAllbHNlCj4+ICAJCWdlbjZfc2V0X3JwcyhkZXYsIHZhbCk7Cj4+IEBAIC00NDk0LDcg KzQ0OTQsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2Rpc2FibGVfcnBzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4+ICAKPj4gIHN0YXRpYyB2b2lkIGludGVsX3ByaW50X3JjNl9pbmZvKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBtb2RlKQo+PiAgewo+PiAtCWlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQlp ZiAobW9kZSAmIChHRU43X1JDX0NUTF9UT19NT0RFIHwgR0VONl9SQ19DVExfRUlfTU9ERSgxKSkp Cj4+ICAJCQltb2RlID0gR0VONl9SQ19DVExfUkM2X0VOQUJMRTsKPj4gIAkJZWxzZQo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wc3IuYwo+PiBpbmRleCBiNjYwOWU2Li5jNGU4YWQyIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+PiBAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBib29s IGludGVsX3Bzcl9tYXRjaF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ ICAJCXJldHVybiBmYWxzZTsKPj4gIAl9Cj4+ICAKPj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2 KSAmJiAoKGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluaykgfHwKPj4gKwlpZiAoIUhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldikgJiYgKChkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbmspIHx8Cj4+ ICAJCQkJICAgIChkaWdfcG9ydC0+cG9ydCAhPSBQT1JUX0EpKSkgewo+PiAgCQlEUk1fREVCVUdf S01TKCJQU1IgY29uZGl0aW9uIGZhaWxlZDogTGluayBTdGFuZGJ5IHJlcXVlc3RlZC9uZWVkZWQg YnV0IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuIik7Cj4+ICAJCXJldHVybiBmYWxz ZTsKPj4gQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBk YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJICogU2luZ2xlIGZyYW1lIHVwZGF0ZSBp cyBhbHJlYWR5IHN1cHBvcnRlZCBvbiBCRFcrIGJ1dCBpdCByZXF1aXJlcwo+PiAgCSAqIG1hbnkg Vy9BIGFuZCBpdCBpc24ndCByZWFsbHkgbmVlZGVkLgo+PiAgCSAqLwo+PiAtCWlmICghSVNfVkFM TEVZVklFVyhkZXYpKQo+PiArCWlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPj4gIAkJ cmV0dXJuOwo+PiAgCj4+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gaW5kZXggMmI5NmYzMy4uMmU3MDQzYiAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gQEAgLTk1MSw3ICs5NTEsNyBA QCBpbnQgaW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+PiAgCWlmICgoc2V0LT5mbGFncyAmIChJOTE1X1NFVF9DT0xPUktFWV9ERVNU SU5BVElPTiB8IEk5MTVfU0VUX0NPTE9SS0VZX1NPVVJDRSkpID09IChJOTE1X1NFVF9DT0xPUktF WV9ERVNUSU5BVElPTiB8IEk5MTVfU0VUX0NPTE9SS0VZX1NPVVJDRSkpCj4+ICAJCXJldHVybiAt RUlOVkFMOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJgo+PiArCWlmIChIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpICYmCj4+ICAJICAgIHNldC0+ZmxhZ3MgJiBJOTE1X1NFVF9D T0xPUktFWV9ERVNUSU5BVElPTikKPj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAKPj4gQEAgLTEw ODYsNyArMTA4Niw3IEBAIGludGVsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg ZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKPj4gIAkJCWludGVsX3BsYW5lLT5tYXhfZG93bnNj YWxlID0gMTsKPj4gIAkJfQo+PiAgCj4+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4g KwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPj4gIAkJCWludGVsX3BsYW5lLT51 cGRhdGVfcGxhbmUgPSB2bHZfdXBkYXRlX3BsYW5lOwo+PiAgCQkJaW50ZWxfcGxhbmUtPmRpc2Fi bGVfcGxhbmUgPSB2bHZfZGlzYWJsZV9wbGFuZTsKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYwo+PiBpbmRleCBjMjM1OGJhLi5lYmJiZTAwIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYwo+PiBAQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyBpbnQgX19n ZW42X2d0X3dhaXRfZm9yX2ZpZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ PiAgCj4+ICAJLyogT24gVkxWLCBGSUZPIHdpbGwgYmUgc2hhcmVkIGJ5IGJvdGggU1cgYW5kIEhX Lgo+PiAgCSAqIFNvLCB3ZSBuZWVkIHRvIHJlYWQgdGhlIEZSRUVfRU5UUklFUyBldmVyeXRpbWUg Ki8KPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPj4gKwlpZiAoSEFTX0dF TjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikpCj4+ICAJCWRldl9wcml2LT51bmNvcmUuZmlm b19jb3VudCA9IGZpZm9fZnJlZV9lbnRyaWVzKGRldl9wcml2KTsKPgo+IFRoaXMgY29kZSBpc24n dCB1c2VkIG9uIENIViwgc28gY2FuIHN0YXkgYXMgaXMuCj4KPj4gIAo+PiAgCWlmIChkZXZfcHJp di0+dW5jb3JlLmZpZm9fY291bnQgPCBHVF9GSUZPX05VTV9SRVNFUlZFRF9FTlRSSUVTKSB7Cj4+ IEBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCWQtPnZhbF9jbGVhciA9IF9NQVNLRURf QklUX0RJU0FCTEUoRk9SQ0VXQUtFX0tFUk5FTCk7Cj4+ICAJfQo+PiAgCj4+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJp dikpCj4+ICAJCWQtPnJlZ19wb3N0ID0gRk9SQ0VXQUtFX0FDS19WTFY7Cj4+ICAJZWxzZSBpZiAo SVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikgfHwgSVNfR0VOOChkZXZfcHJp dikpCj4+ICAJCWQtPnJlZ19wb3N0ID0gRUNPQlVTOwo+PiBAQCAtMTE0OCw3ICsxMTQ4LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiAgCQkJICAgICAgIEZPUkNFV0FLRV9BQ0tfQkxJVFRFUl9HRU45KTsKPj4gIAkJ ZndfZG9tYWluX2luaXQoZGV2X3ByaXYsIEZXX0RPTUFJTl9JRF9NRURJQSwKPj4gIAkJCSAgICAg ICBGT1JDRVdBS0VfTUVESUFfR0VOOSwgRk9SQ0VXQUtFX0FDS19NRURJQV9HRU45KTsKPj4gLQl9 IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoSEFTX0dFTjdf TFBfRkVBVFVSRVMoZGV2KSkgewo+PiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dh a2VfZ2V0ID0gZndfZG9tYWluc19nZXQ7Cj4+ICAJCWlmICghSVNfQ0hFUlJZVklFVyhkZXYpKQo+ PiAgCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dCA9Cj4+IC0tIAo+PiAy LjYuMwo+PiAKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK