From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Separate cherryview from valleyview Date: Wed, 2 Dec 2015 11:02:56 +0200 Message-ID: <20151202090256.GR4437@intel.com> References: <1449018700-31959-1-git-send-email-wayne.boyer@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 795836E627 for ; Wed, 2 Dec 2015 01:03:00 -0800 (PST) Content-Disposition: inline In-Reply-To: <1449018700-31959-1-git-send-email-wayne.boyer@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Wayne Boyer Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMDEsIDIwMTUgYXQgMDU6MTE6NDBQTSAtMDgwMCwgV2F5bmUgQm95ZXIgd3Jv dGU6Cj4gVGhlIGNoZXJyeXZpZXcgZGV2aWNlIHNoYXJlcyBtYW55IGNoYXJhY3RlcmlzdGljcyB3 aXRoIHRoZSB2YWxsZXl2aWV3Cj4gZGV2aWNlLiAgV2hlbiBzdXBwb3J0IHdhcyBhZGRlZCB0byB0 aGUgZHJpdmVyIGZvciBjaGVycnl2aWV3LCB0aGUKPiBjb3JyZXNwb25kaW5nIGRldmljZSBpbmZv IHN0cnVjdHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5dmlldyA9IDEuCj4gVGhpcyBpcyBub3QgY29y cmVjdCBhbmQgbGVhZHMgdG8gc29tZSBjb25mdXNpb24uCj4gCj4gVGhpcyBwYXRjaCBjaGFuZ2Vz IC5pc192YWxsZXl2aWV3IHRvIC5pc19jaGVycnl2aWV3IGluIHRoZSBjaGVycnl2aWV3Cj4gZGV2 aWNlIGluZm8gc3RydWN0dXJlIGFuZCBkZWZpbmVzIHRoZSBIQVNfR0VON19MUF9GRUFUVVJFUyBt YWNyby4KPiBUaGVuIHdoZXJlIGFwcHJvcHJpYXRlLCBpbnN0YW5jZXMgb2YgSVNfVkFMTEVZVklF VyBhcmUgcmVwbGFjZWQgd2l0aAo+IEhBU19HRU43X0xQX0ZFQVRVUkVTIHRvIHRlc3QgZm9yIGVp dGhlciBhIHZhbGxleXZpZXcgb3IgYSBjaGVycnl2aWV3Cj4gZGV2aWNlLgoKSSBkb24ndCBsaWtl IHRoZSBuYW1lIG9mIHRoZSBtYWNyby4gTW9zdCBvZiB0aGUgc2hhcmVkIGJpdHMgYXJlIGRpc3Bs YXkKcmVsYXRlZCwgc28gd2UgY291bGQgaGF2ZSBzb21ldGhpbmcgbGlrZSBIQVNfVkxWX0RJU1BM QVkuIEZvciB0aGUgcmVzdCwKSSB0aGluayB3ZSBjb3VsZCBqdXN0IHRlc3QgSVNfVkxWfHxJU19D SFYgZXhwbGljaXRseS4gVW5sZXNzIHNvbWVvbmUKY2FuIGNvbWUgdXAgd2l0aCBhIGJldHRlciBu YW1lIHRoYXQgY292ZXJzIGV2ZXJ5dGhpbmc/Cgo+IAo+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJp Z28udml2aUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogV2F5bmUgQm95ZXIgPHdheW5lLmJv eWVyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgICAgIHwgMTQgKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMg ICAgICAgICB8ICA4ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAg ICAgICB8IDEwICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg ICAgfCAxOSArKysrKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAg ICAgICAgIHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICB8ICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICB8ICA2ICsrLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgIHwgIDggKystLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgIHwgIDQgKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICB8IDEwICsrKy0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAgICAgfCAgNiArKy0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jICAgICAgICB8ICA0ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCA1NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgIHwgMzggKysr KysrKysrKystLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMg ICAgICAgIHwgMTMgKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3Bs bC5jICAgIHwgIDYgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAg ICAgfCAgNCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jICAgIHwg IDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgICAgICAgIHwgIDIgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICAgIHwgIDIgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDggKystLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgICAgICAgIHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICB8ICA0ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYyAgICAgfCAgNiArKy0tCj4gIDI1IGZpbGVzIGNoYW5nZWQsIDEy MyBpbnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiBpbmRleCBiZmQ1N2ZiLi5hMmQ1MGRhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtODYyLDcgKzg2Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9p bnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkJCSAgIEk5 MTVfUkVBRChHRU44X1BDVV9JSVIpKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJQQ1UgaW50ZXJydXB0 IGVuYWJsZTpcdCUwOHhcbiIsCj4gIAkJCSAgIEk5MTVfUkVBRChHRU44X1BDVV9JRVIpKTsKPiAt CX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldikpIHsKCldlIGFscmVkeSB0ZXN0IGZvciBDSFYgZWFybGllciwgc28g dGhpcyBzaG91bGQgcmVtYWluIGFzIGlzLgoKPiAgCQlzZXFfcHJpbnRmKG0sICJEaXNwbGF5IElF UjpcdCUwOHhcbiIsCj4gIAkJCSAgIEk5MTVfUkVBRChWTFZfSUVSKSk7Cj4gIAkJc2VxX3ByaW50 ZihtLCAiRGlzcGxheSBJSVI6XHQlMDh4XG4iLAo+IEBAIC0xMjg0LDcgKzEyODQsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCj4gIAkJc2VxX3ByaW50ZihtLAo+ICAJCQkgICAiZWZmaWNpZW50IChSUGUpIGZyZXF1ZW5j eTogJWQgTUh6XG4iLAo+ICAJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYt PnJwcy5lZmZpY2llbnRfZnJlcSkpOwo+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikp IHsKPiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewoKQW5kIGZvciB0 aGlzIHlvdSB3b3VsZCBhbHNvIG5lZWQgdG8gY2hhbmdlIHRoZSBlYXJsaWVyIGNvbmRpdGlvbiBp biB0aGUKcHJldmlvdXMgJ2Vsc2UgaWYnIGJyYW5jaC4gQnV0IEkgdGhpbmsgaXQgd291bGQgYmUg Y2xlYXJuZXIgdG8gaG9pc3QKdGhlIFZMVi9DSFYgY29kZSB0byBzaXQgYmVmb3JlIHRoZSBnZW42 KyBjb2RlLCBhbmQgdGhlbiB0aGUgZ2VuNisKY29uZGl0aW9uIGNhbiBiZSBzaW1wbGlmaWVkIHNp Z25pZmljYW50bHkuCgo+ICAJCXUzMiBmcmVxX3N0czsKPiAgCj4gIAkJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnJwcy5od19sb2NrKTsKPiBAQCAtMTYwMiw3ICsxNjAyLDcgQEAgc3RhdGljIGludCBp OTE1X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXN0cnVj dCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBub2RlLT5taW5vci0+ZGV2Owo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikp Cj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQlyZXR1cm4gdmx2X2RycGNf aW5mbyhtKTsKPiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gIAkJcmV0 dXJuIGdlbjZfZHJwY19pbmZvKG0pOwo+IEBAIC0xNzQzLDcgKzE3NDMsNyBAQCBzdGF0aWMgaW50 IGk5MTVfc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCXNy X2VuYWJsZWQgPSBJOTE1X1JFQUQoSU5TVFBNKSAmIElOU1RQTV9TRUxGX0VOOwo+ICAJZWxzZSBp ZiAoSVNfUElORVZJRVcoZGV2KSkKPiAgCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKERTUEZXMykg JiBQSU5FVklFV19TRUxGX1JFRlJFU0hfRU47Cj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikpCj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ICAJCXNyX2VuYWJs ZWQgPSBJOTE1X1JFQUQoRldfQkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdSRFdORU47Cj4gIAo+ICAJ aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+IEBAIC0zOTgzLDcgKzM5ODMsNyBAQCBz dGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51 bSBwaXBlIHBpcGUsCj4gIAkJcmV0ID0gaTh4eF9waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2 YWwpOwo+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICAJCXJldCA9IGk5 eHhfcGlwZV9jcmNfY3RsX3JlZyhkZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwpOwo+IC0JZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSkKPiAgCQlyZXQgPSB2bHZfcGlwZV9jcmNfY3RsX3JlZyhkZXYsIHBpcGUsICZzb3VyY2Us ICZ2YWwpOwo+ICAJZWxzZSBpZiAoSVNfR0VONShkZXYpIHx8IElTX0dFTjYoZGV2KSkKPiAgCQly ZXQgPSBpbGtfcGlwZV9jcmNfY3RsX3JlZygmc291cmNlLCAmdmFsKTsKPiBAQCAtNDA1Miw3ICs0 MDUyLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGVudW0gcGlwZSBwaXBlLAo+ICAKPiAgCQlpZiAoSVNfRzRYKGRldikpCj4gIAkJCWc0 eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2LCBwaXBlKTsKPiAtCQllbHNlIGlmIChJU19W QUxMRVlWSUVXKGRldikpCj4gKwkJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkK PiAgCQkJdmx2X3VuZG9fcGlwZV9zY3JhbWJsZV9yZXNldChkZXYsIHBpcGUpOwo+ICAJCWVsc2Ug aWYgKElTX0hBU1dFTEwoZGV2KSAmJiBwaXBlID09IFBJUEVfQSkKPiAgCQkJaHN3X3RyYW5zX2Vk cF9waXBlX0FfY3JjX3dhKGRldiwgZmFsc2UpOwo+IEBAIC00NDQyLDcgKzQ0NDIsNyBAQCBzdGF0 aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZf dCB3bVs4XSkKPiAgCQkgKiAtIFdNMSsgbGF0ZW5jeSB2YWx1ZXMgaW4gMC41dXMgdW5pdHMKPiAg CQkgKiAtIGxhdGVuY2llcyBhcmUgaW4gdXMgb24gZ2VuOS92bHYvY2h2Cj4gIAkJICovCj4gLQkJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgfHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJ CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5IHx8IEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpCj4gIAkJCWxhdGVuY3kgKj0gMTA7Cj4gIAkJZWxzZSBpZiAobGV2ZWwgPiAwKQo+ICAJCQls YXRlbmN5ICo9IDU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggYTgxYzc2Ni4uZTI0 YWE2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0yNTYsNyArMjU2LDcgQEAg aW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl1MzIgdGVtcDsK PiAgCWJvb2wgZW5hYmxlZDsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWRldl9wcml2 LT5tY2hiYXJfbmVlZF9kaXNhYmxlID0gZmFsc2U7Cj4gQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0FdID0gMjsKPiAgCQlpbmZvLT5udW1f c3ByaXRlc1tQSVBFX0JdID0gMjsKPiAgCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0NdID0gMTsK PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJfSBlbHNlIGlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKQo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4g IAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMjsKPiAgCWVsc2UKPiBAQCAtNzkxLDcgKzc5 MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJCWluZm8tPm51bV9waXBlcyA9IDA7Cj4gIAl9IGVsc2UgaWYg KGluZm8tPm51bV9waXBlcyA+IDAgJiYKPiAgCQkgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0g NyB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA4KSAmJgo+IC0JCSAgICFJU19WQUxMRVlWSUVX KGRldikpIHsKPiArCQkgICAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewoKVGhhdCBzaG91 bGQgcHJvYmFibHkgY2hlY2sgZm9yICdIQVNfUENIX1NQTElUICYmIChHRU43IHx8IEdFTjgpJywg c2luY2UKaXQncyByZWFkaW5nIFNGVVNFX1NUUkFQIHdoaWNoIGxpdmVzIGluIHRoZSBQQ0guCgo+ ICAJCXUzMiBmdXNlX3N0cmFwID0gSTkxNV9SRUFEKEZVU0VfU1RSQVApOwo+ICAJCXUzMiBzZnVz ZV9zdHJhcCA9IEk5MTVfUkVBRChTRlVTRV9TVFJBUCk7Cj4gIAo+IEBAIC04MzYsNyArODM2LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2RwaW8oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKQo+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpCj4gIAkJcmV0 dXJuOwo+ICAKPiAgCS8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggNWY4YjBmZi4u YWM1NGI2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0zMTEsNyArMzExLDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jaGVycnl2aWV3 X2luZm8gPSB7Cj4gIAkuZ2VuID0gOCwgLm51bV9waXBlcyA9IDMsCj4gIAkubmVlZF9nZnhfaHdz ID0gMSwgLmhhc19ob3RwbHVnID0gMSwKPiAgCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJT RF9SSU5HIHwgQkxUX1JJTkcgfCBWRUJPWF9SSU5HLAo+IC0JLmlzX3ZhbGxleXZpZXcgPSAxLAo+ ICsJLmlzX2NoZXJyeXZpZXcgPSAxLAo+ICAJLmRpc3BsYXlfbW1pb19vZmZzZXQgPSBWTFZfRElT UExBWV9CQVNFLAo+ICAJR0VOX0NIVl9QSVBFT0ZGU0VUUywKPiAgCUNVUlNPUl9PRkZTRVRTLAo+ IEBAIC04MDAsNyArODAwLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlwY2lfc2V0X21hc3RlcihkZXYtPnBkZXYpOwo+ ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiArCWlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXZfcHJpdikpCj4gIAkJcmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2 LCBmYWxzZSk7Cj4gIAlpZiAocmV0KQo+ICAJCURSTV9FUlJPUigiUmVzdW1lIHByZXBhcmUgZmFp bGVkOiAlZCwgY29udGludWluZyBhbnl3YXlcbiIsCj4gQEAgLTE1MzAsNyArMTUzMCw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+ICAJ CXJldCA9IGJ4dF9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19IQVNX RUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCWhzd19kaXNhYmxl X3BjOChkZXZfcHJpdik7Cj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiAr CWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2KSkKPiAgCQlyZXQgPSB2bHZf cmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIHRydWUpOwo+ICAKPiAgCS8qCj4gQEAgLTE1NDcsNyAr MTU0Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAq ZGV2aWNlKQo+ICAJICogcG93ZXIgd2VsbCwgc28gaHBkIGlzIHJlaW5pdGlhbGl6ZWQgZnJvbSB0 aGVyZS4gRm9yCj4gIAkgKiBldmVyeW9uZSBlbHNlIGRvIGl0IGhlcmUuCj4gIAkgKi8KPiAtCWlm ICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVT KGRldl9wcml2KSkKPiAgCQlpbnRlbF9ocGRfaW5pdChkZXZfcHJpdik7Cj4gIAo+ICAJaW50ZWxf ZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXYpOwo+IEBAIC0xNTcyLDcgKzE1NzIsNyBAQCBzdGF0aWMg aW50IGludGVsX3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJCXJldCA9IGJ4dF9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKPiAgCWVsc2Ug aWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJ cmV0ID0gaHN3X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikpCj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZf cHJpdikpCj4gIAkJcmV0ID0gdmx2X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+ICAJZWxz ZQo+ICAJCXJldCA9IDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYmM4NjVlMjMu LmFjYjVlOGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNzYzLDYgKzc2Myw3 IEBAIHN0cnVjdCBpbnRlbF9jc3Igewo+ICAJZnVuYyhpc19jcmVzdGxpbmUpIHNlcCBcCj4gIAlm dW5jKGlzX2l2eWJyaWRnZSkgc2VwIFwKPiAgCWZ1bmMoaXNfdmFsbGV5dmlldykgc2VwIFwKPiAr CWZ1bmMoaXNfY2hlcnJ5dmlldykgc2VwIFwKPiAgCWZ1bmMoaXNfaGFzd2VsbCkgc2VwIFwKPiAg CWZ1bmMoaXNfc2t5bGFrZSkgc2VwIFwKPiAgCWZ1bmMoaXNfYnJveHRvbikgc2VwIFwKPiBAQCAt MjQ1Niw5ICsyNDU3LDkgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gIAkJCQkgSU5U RUxfREVWSUQoZGV2KSA9PSAweDAxNTIgfHwgXAo+ICAJCQkJIElOVEVMX0RFVklEKGRldikgPT0g MHgwMTVhKQo+ICAjZGVmaW5lIElTX1ZBTExFWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5p c192YWxsZXl2aWV3KQo+IC0jZGVmaW5lIElTX0NIRVJSWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhk ZXYpLT5pc192YWxsZXl2aWV3ICYmIElTX0dFTjgoZGV2KSkKPiArI2RlZmluZSBJU19DSEVSUllW SUVXKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfY2hlcnJ5dmlldykKPiAgI2RlZmluZSBJU19I QVNXRUxMKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfaGFzd2VsbCkKPiAtI2RlZmluZSBJU19C Uk9BRFdFTEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2KS0+aXNfdmFsbGV5dmlldyAmJiBJU19HRU44 KGRldikpCj4gKyNkZWZpbmUgSVNfQlJPQURXRUxMKGRldikJKCFJTlRFTF9JTkZPKGRldiktPmlz X2NoZXJyeXZpZXcgJiYgSVNfR0VOOChkZXYpKQo+ICAjZGVmaW5lIElTX1NLWUxBS0UoZGV2KQko SU5URUxfSU5GTyhkZXYpLT5pc19za3lsYWtlKQo+ICAjZGVmaW5lIElTX0JST1hUT04oZGV2KQkJ KElOVEVMX0lORk8oZGV2KS0+aXNfYnJveHRvbikKPiAgI2RlZmluZSBJU19LQUJZTEFLRShkZXYp CShJTlRFTF9JTkZPKGRldiktPmlzX2thYnlsYWtlKQo+IEBAIC0yNTg1LDcgKzI1ODYsOCBAQCBz dHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgCQkJCSBJU19TS1lMQUtFKGRldikgfHwgSVNf S0FCWUxBS0UoZGV2KSkKPiAgI2RlZmluZSBIQVNfUlVOVElNRV9QTShkZXYpCShJU19HRU42KGRl dikgfHwgSVNfSEFTV0VMTChkZXYpIHx8IFwKPiAgCQkJCSBJU19CUk9BRFdFTEwoZGV2KSB8fCBJ U19WQUxMRVlWSUVXKGRldikgfHwgXAo+IC0JCQkJIElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZ TEFLRShkZXYpKQo+ICsJCQkJIElTX0NIRVJSWVZJRVcoZGV2KSB8fCBJU19TS1lMQUtFKGRldikg fHwgXAo+ICsJCQkJIElTX0tBQllMQUtFKGRldikpCj4gICNkZWZpbmUgSEFTX1JDNihkZXYpCQko SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiAgI2RlZmluZSBIQVNfUkM2cChkZXYpCQkoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPT0gNiB8fCBJU19JVllCUklER0UoZGV2KSkKPiAgCj4gQEAgLTI1 OTgsNyArMjYwMCwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgCQkJCSAgICBJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQo+ICAKPiAgI2RlZmluZSBIQVNfQ09SRV9SSU5HX0ZS RVEoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBcCj4gLQkJCQkgIUlTX1ZBTExF WVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKQo+ICsJCQkJICFJU19WQUxMRVlWSUVXKGRl dikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiBcCj4gKwkJCQkgIUlTX0JST1hUT04oZGV2KSkK PiArCj4gKyNkZWZpbmUgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAoSU5URUxfSU5GTyhkZXYp LT5pc192YWxsZXl2aWV3IHx8IFwKPiArCQkJCSAgIElOVEVMX0lORk8oZGV2KS0+aXNfY2hlcnJ5 dmlldykKPiAgCj4gICNkZWZpbmUgSU5URUxfUENIX0RFVklDRV9JRF9NQVNLCQkweGZmMDAKPiAg I2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPiBAQCAtMjYyMCw3 ICsyNjI2LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gICNkZWZpbmUgSEFTX1BD SF9OT1AoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSA9PSBQQ0hfTk9QKQo+ICAjZGVmaW5lIEhB U19QQ0hfU1BMSVQoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSAhPSBQQ0hfTk9ORSkKPiAgCj4g LSNkZWZpbmUgSEFTX0dNQ0hfRElTUExBWShkZXYpIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUg fHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsjZGVmaW5lIEhBU19HTUNIX0RJU1BMQVkoZGV2KSAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1IHx8IFwKPiArCQkJICAgICAgIEhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpCj4gIAo+ICAvKiBEUEYgPT0gZHluYW1pYyBwYXJpdHkgZmVhdHVyZSAqLwo+ ICAjZGVmaW5lIEhBU19MM19EUEYoZGV2KSAoSVNfSVZZQlJJREdFKGRldikgfHwgSVNfSEFTV0VM TChkZXYpKQo+IEBAIC0zNTExLDcgKzM1MTgsNyBAQCBfX3Jhd193cml0ZSg2NCwgcSkKPiAgCj4g IHN0YXRpYyBpbmxpbmUgaTkxNV9yZWdfdCBpOTE1X3ZnYWNudHJsX3JlZyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICB7Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpCj4gIAkJcmV0dXJuIFZMVl9WR0FDTlRSTDsKPiAgCWVsc2Ug aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCj4gIAkJcmV0dXJuIENQVV9WR0FDTlRSTDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBhNjk5N2E4Li4xNWJlOWVhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQ4MzgsNyArNDgzOCw3IEBAIGludCBpOTE1X2dl bV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJLyogVkxWQTAgKHBvdGVudGlhbCBoYWNr KSwgQklPUyBpc24ndCBhY3R1YWxseSB3YWtpbmcgdXMgKi8KPiAgCQlJOTE1X1dSSVRFKFZMVl9H VExDX1dBS0VfQ1RSTCwgVkxWX0dUTENfQUxMT1dXQUtFUkVRKTsKPiAgCQlpZiAod2FpdF9mb3Io KEk5MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpICYKCldlIHN0aWxsIGhhdmUgdGhhdCBjb2Rl PyBTaG91bGQgcHJvYmFibHkganVzdCBudWtlIGl0LgoKPiBAQCAtNDk2Myw3ICs0OTYzLDcgQEAg aTkxNV9nZW1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWRldl9wcml2LT5y ZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX0dFTkVSQUw7 Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlTX1ZBTExFWVZJRVco ZGV2KSkKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpKQo+ICAJCWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9IDMyOwo+ICAJZWxz ZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCB8fCBJU19JOTQ1RyhkZXYpIHx8IElTX0k5 NDVHTShkZXYpIHx8IElTX0czMyhkZXYpKQo+ICAJCWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9 IDE2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA0Mzc2 MWM1Li40NzZmZWUwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu Ywo+IEBAIC0xOTAsNyArMTkwLDcgQEAgaTkxNV9nZW1fYWxsb2NfY29udGV4dF9vYmooc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpCj4gIAkgKiB3b3VsZCBtYWtlIHRoZSBvYmpl Y3Qgc25vb3BlZCB3aGljaCBtaWdodCBoYXZlIGEKPiAgCSAqIG5lZ2F0aXZlIHBlcmZvcm1hbmNl IGltcGFjdC4KPiAgCSAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlT X1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYg IUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKCkkgdGhpbmsgd2Ugc2hvdWxkIGp1c3QgbWFr ZSB0aGlzIElTX0lWWUJSSURHRSBzaW5jZSBsYXRlciBwbGF0Zm9ybXMKZG9uJ3QgaGF2ZSBhbnkg TDMgY29udHJvbCBiaXRzIGluIHRoZSBQVEUgYW55d2F5LgoKPiAgCQlyZXQgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkxNV9DQUNIRV9MM19MTEMpOwo+ICAJCS8qIEZh aWx1cmUgc2hvdWxkbid0IGV2ZXIgaGFwcGVuIHRoaXMgZWFybHkgKi8KPiAgCQlpZiAoV0FSTl9P TihyZXQpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCAxZjdlNmI5 Li5lZTgwZTI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMzEy NSw3ICszMTI1LDcgQEAgaW50IGk5MTVfZ2VtX2d0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkJCWd0dC0+YmFzZS5wdGVfZW5jb2RlID0gaXJpc19wdGVfZW5jb2RlOwo+ICAJCWVs c2UgaWYgKElTX0hBU1dFTEwoZGV2KSkKPiAgCQkJZ3R0LT5iYXNlLnB0ZV9lbmNvZGUgPSBoc3df cHRlX2VuY29kZTsKPiAtCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwkJZWxzZSBp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKCk5vIG5lZWQgdG8gY2hhbmdlLgoKPiAgCQkJ Z3R0LT5iYXNlLnB0ZV9lbmNvZGUgPSBieXRfcHRlX2VuY29kZTsKPiAgCQllbHNlIGlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA3KQo+ICAJCQlndHQtPmJhc2UucHRlX2VuY29kZSA9IGl2Yl9w dGVfZW5jb2RlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IDA2 Y2E0MDguLmU5MmJlNWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMK PiBAQCAtMzgzLDcgKzM4Myw3IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3Qg ZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAJCWZvciAoaSA9IDA7IGkgPCA0OyBpKysp Cj4gIAkJCWVycl9wcmludGYobSwgIkdUSUVSIGd0ICVkOiAweCUwOHhcbiIsIGksCj4gIAkJCQkg ICBlcnJvci0+Z3RpZXJbaV0pOwo+IC0JfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikgfHwg SVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikgfHwg SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKCk5vIG5lZWQgdG8gY2hhbmdlLiBDSFYgdGFrZXMg dGhlIGdlbj49OCBicmFuY2ggZWFybGllci4KCj4gIAkJZXJyX3ByaW50ZihtLCAiR1RJRVI6IDB4 JTA4eFxuIiwgZXJyb3ItPmd0aWVyWzBdKTsKPiAgCWVycl9wcmludGYobSwgIlBHVEJMX0VSOiAw eCUwOHhcbiIsIGVycm9yLT5wZ3RibF9lcik7Cj4gIAllcnJfcHJpbnRmKG0sICJGT1JDRVdBS0U6 IDB4JTA4eFxuIiwgZXJyb3ItPmZvcmNld2FrZSk7Cj4gQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJICovCj4gIAo+ICAJLyogMTogUmVnaXN0ZXJzIHNwZWNpZmljIHRvIGEg c2luZ2xlIGdlbmVyYXRpb24gKi8KPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJZXJyb3ItPmd0aWVyWzBdID0gSTkx NV9SRUFEKEdUSUVSKTsKPiAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKFZMVl9JRVIpOwo+ICAJ CWVycm9yLT5mb3JjZXdha2UgPSBJOTE1X1JFQURfRlcoRk9SQ0VXQUtFX1ZMVik7CgpXZSB3YW50 IHRvIGNhcHR1cmUgdGhlIGZvcmNld2FrZSBvbiBDSFYsIGJ1dCBub3QgdGhlIEdUSUVSLiBFcnJv cgpjYXB0dXJlIG9uIFZMVi9DSFYgaXMgcHJldHR5IGRlY2Vucmx5IGJyb2tlbiBjdXJyZW50bHku IEkgaGF2ZSBhIGJyYW5jaApzb21ld2hlcmUgdGhhdCB0cmllcyB0byBmaXggaXQgdXAsIEkgc3Vw cG9zZSBJIHNob3VsZCBkaWcgaXQgdXAgYW5kIHBvc3QKaXQuCgo+IEBAIC0xMjU3LDcgKzEyNTcs NyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQllcnJvci0+Z3RpZXJbMF0gPSBJOTE1X1JFQUQoR1RJRVIp Owo+ICAJfSBlbHNlIGlmIChJU19HRU4yKGRldikpIHsKPiAgCQllcnJvci0+aWVyID0gSTkxNV9S RUFEMTYoSUVSKTsKPiAtCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBl bHNlIGlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ICAJCWVycm9yLT5pZXIgPSBJ OTE1X1JFQUQoSUVSKTsKPiAgCX0KPiAgCWVycm9yLT5laXIgPSBJOTE1X1JFQUQoRUlSKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCBlODhkNjkyLi45MjAxZTI1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTU4MSw3ICs1ODEsNyBAQCBpOTE1X2VuYWJsZV9waXBl c3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLAo+ ICB7Cj4gIAl1MzIgZW5hYmxlX21hc2s7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYtPmRldikpCj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikpCj4g IAkJZW5hYmxlX21hc2sgPSB2bHZfZ2V0X3BpcGVzdGF0X2VuYWJsZV9tYXNrKGRldl9wcml2LT5k ZXYsCj4gIAkJCQkJCQkgICBzdGF0dXNfbWFzayk7Cj4gIAllbHNlCj4gQEAgLTU5NSw3ICs1OTUs NyBAQCBpOTE1X2Rpc2FibGVfcGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBpcGUgcGlwZSwKPiAgewo+ICAJdTMyIGVuYWJsZV9tYXNrOwo+ICAKPiAtCWlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKQo+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldl9wcml2LT5kZXYpKQo+ICAJCWVuYWJsZV9tYXNrID0gdmx2X2dldF9waXBlc3RhdF9l bmFibGVfbWFzayhkZXZfcHJpdi0+ZGV2LAo+ICAJCQkJCQkJICAgc3RhdHVzX21hc2spOwo+ICAJ ZWxzZQo+IEBAIC0xNzIzLDcgKzE3MjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2hwZF9pcnFfaGFu ZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJICovCj4gIAlQT1NUSU5HX1JFQUQoUE9S VF9IT1RQTFVHX1NUQVQpOwo+ICAKPiAtCWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVX KGRldikpIHsKPiArCWlmIChJU19HNFgoZGV2KSB8fCBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYp KSB7Cj4gIAkJdTMyIGhvdHBsdWdfdHJpZ2dlciA9IGhvdHBsdWdfc3RhdHVzICYgSE9UUExVR19J TlRfU1RBVFVTX0c0WDsKPiAgCj4gIAkJaWYgKGhvdHBsdWdfdHJpZ2dlcikgewo+IEBAIC00NDEy LDcgKzQ0MTIsNyBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCUlOSVRfV09SSygmZGV2X3ByaXYtPmwzX3Bhcml0eS5lcnJvcl93b3Jr LCBpdnlicmlkZ2VfcGFyaXR5X3dvcmspOwo+ICAKPiAgCS8qIExldCdzIHRyYWNrIHRoZSBlbmFi bGVkIHJwcyBldmVudHMgKi8KPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJiAhSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4g IAkJLyogV2FHc3ZSQzBSZXNpZGVuY3lNZXRob2Q6dmx2ICovCj4gIAkJZGV2X3ByaXYtPnBtX3Jw c19ldmVudHMgPSBHRU42X1BNX1JQX0RPV05fRUlfRVhQSVJFRCB8IEdFTjZfUE1fUlBfVVBfRUlf RVhQSVJFRDsKPiAgCWVsc2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zdXNwZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+IGluZGV4 IDJkOTE4MjEuLjk1OTIxZmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zdXNwZW5kLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+ IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyA9 IEk5MTVfUkVBRChQQ0hfUFBfT05fREVMQVlTKTsKPiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZl UFBfT0ZGX0RFTEFZUyA9IEk5MTVfUkVBRChQQ0hfUFBfT0ZGX0RFTEFZUyk7Cj4gIAkJZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IgPSBJOTE1X1JFQUQoUENIX1BQX0RJVklTT1IpOwo+ IC0JfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKCFIQVNf R0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0NP TlRST0wgPSBJOTE1X1JFQUQoUFBfQ09OVFJPTCk7Cj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2 ZVBQX09OX0RFTEFZUyA9IEk5MTVfUkVBRChQUF9PTl9ERUxBWVMpOwo+ICAJCWRldl9wcml2LT5y ZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFEKFBQX09GRl9ERUxBWVMpOwo+IEBA IC04NCw3ICs4NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAkJSTkxNV9XUklURShQQ0hfUFBfT0ZGX0RFTEFZUywgZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+ICAJCUk5MTVfV1JJVEUoUENIX1BQX0RJ VklTT1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SKTsKPiAgCQlJOTE1X1dSSVRF KFBDSF9QUF9DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09OVFJPTCk7Cj4gLQl9 IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoIUhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQlJOTE1X1dSSVRFKFBQX09OX0RFTEFZUywgZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7Cj4gIAkJSTkxNV9XUklURShQUF9PRkZfREVM QVlTLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT0ZGX0RFTEFZUyk7Cj4gIAkJSTkxNV9XUklU RShQUF9ESVZJU09SLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3lzZnMuYwo+IGluZGV4IGY5MjljNjEuLmRkNTA2ZTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHUzMiBjYWxj X3Jlc2lkZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIE9uIFZMViBhbmQgQ0hWLCByZXNpZGVuY3kgdGltZSBp cyBpbiBDWiB1bml0cyByYXRoZXIgdGhhbiAxLjI4dXMgKi8KPiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikpIHsKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJdW5pdHMg PSAxOwo+ICAJCWRpdiA9IGRldl9wcml2LT5jemNsa19mcmVxOwo+ICAKPiBAQCAtMjg0LDcgKzI4 NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2Ug KmtkZXYsCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2LT5kZXYpKSB7Cj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikp IHsKPiAgCQl1MzIgZnJlcTsKPiAgCQlmcmVxID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBV TklUX1JFR19HUFVfRlJFUV9TVFMpOwo+ICAJCXJldCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2 LCAoZnJlcSA+PiA4KSAmIDB4ZmYpOwo+IEBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBpOTE1X3Nl dHVwX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJaWYgKHJldCkKPiAgCQkJRFJN X0VSUk9SKCJSQzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwo+ICAJfQo+IC0J aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpIHsKPiAgCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgmZGV2LT5wcmltYXJ5LT5rZGV2LT5r b2JqLAo+ICAJCQkJCSZtZWRpYV9yYzZfYXR0cl9ncm91cCk7Cj4gIAkJaWYgKHJldCkKPiBAQCAt NjE5LDcgKzYxOSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAJfQo+ICAKPiAgCXJldCA9IDA7Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gIAkJcmV0ID0gc3lzZnNfY3JlYXRl X2ZpbGVzKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7Cj4gIAllbHNlIGlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+ICAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxl cygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKPiBAQCAtNjM1LDcgKzYz NSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB2 b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJ c3lzZnNfcmVtb3ZlX2Jpbl9maWxlKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosICZlcnJvcl9z dGF0ZV9hdHRyKTsKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSEFTX0dFTjdf TFBfRkVBVFVSRVMoZGV2KSkKPiAgCQlzeXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+ a2Rldi0+a29iaiwgdmx2X2F0dHJzKTsKPiAgCWVsc2UKPiAgCQlzeXNmc19yZW1vdmVfZmlsZXMo JmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgZ2VuNl9hdHRycyk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jCj4gaW5kZXggOWFhODNlNy4uNjczNGVhZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXVkaW8uYwo+IEBAIC0zNzUsNyArMzc1LDcgQEAgc3RhdGljIHZvaWQgaWxrX2F1 ZGlvX2NvZGVjX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlpZiAo SEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikpIHsKPiAgCQlhdWRfY29uZmlnID0gSUJYX0FVRF9D RkcocGlwZSk7Cj4gIAkJYXVkX2NudHJsX3N0MiA9IElCWF9BVURfQ05UTF9TVDI7Cj4gLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldl9wcml2KSkgewo+ICAJCWF1ZF9jb25maWcgPSBWTFZfQVVEX0NGRyhw aXBlKTsKPiAgCQlhdWRfY250cmxfc3QyID0gVkxWX0FVRF9DTlRMX1NUMjsKPiAgCX0gZWxzZSB7 Cj4gQEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZW5hYmxl KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJYXVkX2NvbmZpZyA9IElCWF9B VURfQ0ZHKHBpcGUpOwo+ICAJCWF1ZF9jbnRsX3N0ID0gSUJYX0FVRF9DTlRMX1NUKHBpcGUpOwo+ ICAJCWF1ZF9jbnRybF9zdDIgPSBJQlhfQVVEX0NOVExfU1QyOwo+IC0JfSBlbHNlIGlmIChJU19W QUxMRVlWSUVXKGNvbm5lY3Rvci0+ZGV2KSkgewo+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhjb25uZWN0b3ItPmRldikpIHsKPiAgCQloZG1pd19oZG1pZWRpZCA9IFZMVl9IRE1J V19IRE1JRURJRChwaXBlKTsKPiAgCQlhdWRfY29uZmlnID0gVkxWX0FVRF9DRkcocGlwZSk7Cj4g IAkJYXVkX2NudGxfc3QgPSBWTFZfQVVEX0NOVExfU1QocGlwZSk7Cj4gQEAgLTU1OSw3ICs1NTks NyBAQCB2b2lkIGludGVsX2luaXRfYXVkaW8oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWlm IChJU19HNFgoZGV2KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJs ZSA9IGc0eF9hdWRpb19jb2RlY19lbmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9f Y29kZWNfZGlzYWJsZSA9IGc0eF9hdWRpb19jb2RlY19kaXNhYmxlOwo+IC0JfSBlbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IGlsa19h dWRpb19jb2RlY19lbmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlz YWJsZSA9IGlsa19hdWRpb19jb2RlY19kaXNhYmxlOwo+ICAJfSBlbHNlIGlmIChJU19IQVNXRUxM KGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NydC5jCj4gaW5kZXggMTIwMDhhZi4uOTRkMWFiMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NydC5jCj4gQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfZGV0ZWN0 X2hvdHBsdWcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCWlmIChIQVNfUENI X1NQTElUKGRldikpCj4gIAkJcmV0dXJuIGludGVsX2lyb25sYWtlX2NydF9kZXRlY3RfaG90cGx1 Zyhjb25uZWN0b3IpOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQlyZXR1cm4gdmFsbGV5dmlld19jcnRfZGV0ZWN0 X2hvdHBsdWcoY29ubmVjdG9yKTsKClRoZXJlJ3Mgbm8gY3J0IG9uIENIViwgc28gZG9lc24ndCBu ZWVkIGNoYW5naW5nLgoKPiAgCj4gIAkvKgo+IEBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBpbnRl bF9jcnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWlmIChIQVNfUENIX1NQ TElUKGRldikpCj4gIAkJYWRwYV9yZWcgPSBQQ0hfQURQQTsKPiAtCWVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKPiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gIAkJ YWRwYV9yZWcgPSBWTFZfQURQQTsKPiAgCWVsc2UKPiAgCQlhZHBhX3JlZyA9IEFEUEE7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGFhYzE3MDExLi44ZTUxYjgzIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xODUsNyArMTg1LDcg QEAgaW50IGludGVsX2hyYXdjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXVpbnQzMl90 IGNsa2NmZzsKPiAgCj4gIAkvKiBUaGVyZSBpcyBubyBDTEtDRkcgcmVnIGluIFZhbGxleXZpZXcu IFZMViBocmF3Y2xrIGlzIDIwMCBNSHogKi8KPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQlyZXR1cm4gMjAwOwo+ICAKPiAg CWNsa2NmZyA9IEk5MTVfUkVBRChDTEtDRkcpOwo+IEBAIC0yMTMsNyArMjEzLDcgQEAgaW50IGlu dGVsX2hyYXdjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIHN0YXRpYyB2b2lkIGlu dGVsX3VwZGF0ZV9jemNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsK PiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwlpZiAoIUhBU19HRU43X0xQX0ZF QVRVUkVTKGRldl9wcml2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZGV2X3ByaXYtPmN6Y2xrX2Zy ZXEgPSB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKGRldl9wcml2LCAiY3pjbGsiLAo+IEBAIC03MTQs MTEgKzcxNCwxMSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9QTExfaXNfdmFsaWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCWlmIChjbG9jay0+bTEgIDwgbGltaXQtPm0xLm1pbiAgfHwgbGltaXQt Pm0xLm1heCAgPCBjbG9jay0+bTEpCj4gIAkJSU5URUxQbGxJbnZhbGlkKCJtMSBvdXQgb2YgcmFu Z2VcbiIpOwo+ICAKPiAtCWlmICghSVNfUElORVZJRVcoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhk ZXYpICYmICFJU19CUk9YVE9OKGRldikpCj4gKwlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKPiAgCQlpZiAoY2xv Y2stPm0xIDw9IGNsb2NrLT5tMikKPiAgCQkJSU5URUxQbGxJbnZhbGlkKCJtMSA8PSBtMlxuIik7 Cj4gIAo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkgewo+ ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpIHsK PiAgCQlpZiAoY2xvY2stPnAgPCBsaW1pdC0+cC5taW4gfHwgbGltaXQtPnAubWF4IDwgY2xvY2st PnApCj4gIAkJCUlOVEVMUGxsSW52YWxpZCgicCBvdXQgb2YgcmFuZ2VcbiIpOwo+ICAJCWlmIChj bG9jay0+bSA8IGxpbWl0LT5tLm1pbiB8fCBsaW1pdC0+bS5tYXggPCBjbG9jay0+bSkKPiBAQCAt MTMwMyw3ICsxMzAzLDcgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSAgICBJOTE1X1JFQUQoUENIX0xWRFMpICYgTFZE U19QSVBFQl9TRUxFQ1QpCj4gIAkJCXBhbmVsX3BpcGUgPSBQSVBFX0I7Cj4gIAkJLyogWFhYOiBl bHNlIGZpeCBmb3IgZURQICovCj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJLyogcHJlc3Vt YWJseSB3cml0ZSBsb2NrIGRlcGVuZHMgb24gcGlwZSwgbm90IHBvcnQgc2VsZWN0ICovCj4gIAkJ cHBfcmVnID0gVkxWX1BJUEVfUFBfQ09OVFJPTChwaXBlKTsKPiAgCQlwYW5lbF9waXBlID0gcGlw ZTsKPiBAQCAtMTQyMSw3ICsxNDIxLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlz YWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgICJwbGFu ZSAlZCBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcyBz dGlsbCBhY3RpdmVcbiIsCj4gIAkJCSAgICAgc3ByaXRlLCBwaXBlX25hbWUocGlwZSkpOwo+ICAJ CX0KPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQlmb3JfZWFjaF9zcHJpdGUoZGV2X3ByaXYs IHBpcGUsIHNwcml0ZSkgewo+ICAJCQl1MzIgdmFsID0gSTkxNV9SRUFEKFNQQ05UUihwaXBlLCBz cHJpdGUpKTsKPiAgCQkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIFNQX0VOQUJMRSwKPiBAQCAtMTYw NSw3ICsxNjA1LDcgQEAgc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7 Cj4gIAo+ICAJLyogTm8gcmVhbGx5LCBub3QgZm9yIElMSysgKi8KPiAtCUJVR19PTighSVNfVkFM TEVZVklFVyhkZXZfcHJpdi0+ZGV2KSk7Cj4gKwlCVUdfT04oIUhBU19HRU43X0xQX0ZFQVRVUkVT KGRldl9wcml2LT5kZXYpKTsKClRoaXMgaXMgVkxWIHNwZWNpZmljLCBzbyBubyBuZWVkIHRvIGNo YW5nZS4gQ291bGQganVzdCBraWxsIHRoZXNlCkJVR19PTnMgdGhvdWdoLi4uCgo+ICAKPiAgCS8q IFBMTCBpcyBwcm90ZWN0ZWQgYnkgcGFuZWwsIG1ha2Ugc3VyZSB3ZSBjYW4gd3JpdGUgaXQgKi8K PiAgCWlmIChJU19NT0JJTEUoZGV2X3ByaXYtPmRldikpCj4gQEAgLTIzMTcsNyArMjMxNyw3IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfbGluZWFyX2FsaWdubWVudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+ PSA5KQo+ICAJCXJldHVybiAyNTYgKiAxMDI0Owo+ICAJZWxzZSBpZiAoSVNfQlJPQURXQVRFUihk ZXZfcHJpdikgfHwgSVNfQ1JFU1RMSU5FKGRldl9wcml2KSB8fAo+IC0JCSBJU19WQUxMRVlWSUVX KGRldl9wcml2KSkKPiArCQkgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQo+ICAJCXJl dHVybiAxMjggKiAxMDI0Owo+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+ PSA0KQo+ICAJCXJldHVybiA0ICogMTAyNDsKPiBAQCAtNTQ0OCw3ICs1NDQ4LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfdXBkYXRlX2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkgKiBC U3BlYyBlcnJvbmVvdXNseSBjbGFpbXMgd2Ugc2hvdWxkIGFpbSBmb3IgNE1IeiwgYnV0Cj4gIAkg KiBpbiBmYWN0IDFNSHogaXMgdGhlIGNvcnJlY3QgZnJlcXVlbmN5Lgo+ICAJICovCj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkg ewo+ICAJCS8qCj4gIAkJICogUHJvZ3JhbSB0aGUgZ21idXNfZnJlcSBiYXNlZCBvbiB0aGUgY2Rj bGsgZnJlcXVlbmN5Lgo+ICAJCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWltcyB3ZSBzaG91bGQg YWltIGZvciA0TUh6LCBidXQKPiBAQCAtNzE2OSw3ICs3MTY5LDcgQEAgc3RhdGljIGludCBpOXh4 X2dldF9yZWZjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAo+ICAJV0FSTl9PTighY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpIHsKPiArCWlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewo+ICAJCXJlZmNsayA9IDEwMDAwMDsK PiAgCX0gZWxzZSBpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfTFZEUykgJiYKPiAgCSAgICBpbnRlbF9wYW5lbF91c2Vfc3NjKGRldl9wcml2KSAm JiBudW1fY29ubmVjdG9ycyA8IDIpIHsKPiBAQCAtNzg2OCw3ICs3ODY4LDcgQEAgc3RhdGljIHZv aWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAkJ cGlwZWNvbmYgfD0gUElQRUNPTkZfRE9VQkxFX1dJREU7Cj4gIAo+ICAJLyogb25seSBnNHggYW5k IGxhdGVyIGhhdmUgZmFuY3kgYnBjL2RpdGhlciBjb250cm9scyAqLwo+IC0JaWYgKElTX0c0WChk ZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX0c0WChkZXYpIHx8IEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQkvKiBCc3BlYyBjbGFpbXMgdGhhdCB3ZSBjYW4n dCB1c2UgZGl0aGVyaW5nIGZvciAzMGJwcCBwaXBlcy4gKi8KPiAgCQlpZiAoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5kaXRoZXIgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCAhPSAzMCkKPiAg CQkJcGlwZWNvbmYgfD0gUElQRUNPTkZfRElUSEVSX0VOIHwKPiBAQCAtNzkwOCw3ICs3OTA4LDcg QEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMpCj4gIAl9IGVsc2UKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9QUk9HUkVTU0lWRTsK PiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGlt aXRlZF9jb2xvcl9yYW5nZSkKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmIGlu dGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiAgCQlwaXBlY29uZiB8PSBQ SVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1Q7Cj4gIAo+ICAJSTkxNV9XUklURShQSVBFQ09ORihp bnRlbF9jcnRjLT5waXBlKSwgcGlwZWNvbmYpOwo+IEBAIC04MTU1LDcgKzgxNTUsNyBAQCBzdGF0 aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CWlmICghKHRtcCAmIFBJUEVDT05GX0VOQUJMRSkpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAt CWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19HNFgo ZGV2KSB8fCBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJc3dpdGNoICh0bXAgJiBQ SVBFQ09ORl9CUENfTUFTSykgewo+ICAJCWNhc2UgUElQRUNPTkZfNkJQQzoKPiAgCQkJcGlwZV9j b25maWctPnBpcGVfYnBwID0gMTg7Cj4gQEAgLTgxNzEsNyArODE3MSw3IEBAIHN0YXRpYyBib29s IGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCX0KPiAg CX0KPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmICh0bXAgJiBQSVBFQ09ORl9DT0xP Ul9SQU5HRV9TRUxFQ1QpKQo+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYgKHRt cCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCj4gIAkJcGlwZV9jb25maWctPmxpbWl0 ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+ICAKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDQpCj4gQEAgLTgxOTksNyArODE5OSw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCXBpcGVfY29uZmlnLT5waXhlbF9tdWx0 aXBsaWVyID0gMTsKPiAgCX0KPiAgCXBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGwgPSBJ OTE1X1JFQUQoRFBMTChjcnRjLT5waXBlKSk7Cj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkg ewo+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBE UExMX0RWT18yWF9NT0RFIG11c3QgYmUgZW5hYmxlZCBmb3IgYm90aCBEUExMcwo+ICAJCSAqIG9u IDgzMC4gRmlsdGVyIGl0IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QKPiBAQCAtMTE1MTYsNyAr MTE1MTYsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElTX0c0WChkZXYp KQo+ICAJCXdvcmstPmZsaXBfY291bnQgPSBJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBp cGUpKSArIDE7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQlyaW5nID0gJmRldl9wcml2LT5yaW5nW0JDU107 Cj4gIAkJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gaW50ZWxfZmJfb2JqKHdvcmstPm9sZF9mYikt PnRpbGluZ19tb2RlKQo+ICAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2Ug dGlsaW5nICovCj4gQEAgLTExOTk3LDcgKzExOTk3LDcgQEAgY29tcHV0ZV9iYXNlbGluZV9waXBl X2JwcChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gIAlpbnQgYnBwLCBpOwo+ICAKPiAtCWlmICgoSVNfRzRY KGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSkKPiArCWlmICgoSVNfRzRYKGRldikgfHwgSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkpCj4gIAkJYnBwID0gMTAqMzsKPiAgCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCj4gIAkJYnBwID0gMTIqMzsKPiBAQCAtMTI2MDcsNyAr MTI2MDcsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShwaXhlbF9tdWx0aXBsaWVyKTsKPiAgCVBJUEVfQ09O Rl9DSEVDS19JKGhhc19oZG1pX3NpbmspOwo+ICAJaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDggJiYgIUlTX0hBU1dFTEwoZGV2KSkgfHwKPiAtCSAgICBJU19WQUxMRVlWSUVXKGRldikpCj4g KwkgICAgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQlQSVBFX0NPTkZfQ0hFQ0tfSShs aW1pdGVkX2NvbG9yX3JhbmdlKTsKPiAgCVBJUEVfQ09ORl9DSEVDS19JKGhhc19pbmZvZnJhbWUp Owo+ICAKPiBAQCAtMTQyNTYsNyArMTQyNTYsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfcHJl c2VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkK PiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiAhZGV2 X3ByaXYtPnZidC5pbnRfY3J0X3N1cHBvcnQpCj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSAmJiAhZGV2X3ByaXYtPnZidC5pbnRfY3J0X3N1cHBvcnQpCj4gIAkJcmV0dXJuIGZhbHNl OwoKQWdhaW4sIG5vIGNydCBvbiBDSFYsIHNvIGRvZXNuJ3QgbmVlZCBjaGFuZ2luZy4KCj4gIAo+ ICAJcmV0dXJuIHRydWU7Cj4gQEAgLTE0MzQxLDcgKzE0MzQxLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCQlpZiAoSTkx NV9SRUFEKFBDSF9EUF9EKSAmIERQX0RFVEVDVEVEKQo+ICAJCQlpbnRlbF9kcF9pbml0KGRldiwg UENIX0RQX0QsIFBPUlRfRCk7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJLyoKPiAgCQkg KiBUaGUgRFBfREVURUNURUQgYml0IGlzIHRoZSBsYXRjaGVkIHN0YXRlIG9mIHRoZSBEREMKPiAg CQkgKiBTREEgcGluIGF0IGJvb3QuIEhvd2V2ZXIgc2luY2UgZURQIGRvZXNuJ3QgcmVxdWlyZSBE REMKPiBAQCAtMTQ0OTAsNyArMTQ0OTAsNyBAQCB1MzIgaW50ZWxfZmJfcGl0Y2hfbGltaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdWludDY0X3QgZmJfbW9kaWZpZXIsCj4gIAkJICogIHBpeGVs cyBhbmQgMzJLIGJ5dGVzLiIKPiAgCQkgKi8KPiAgCQkgcmV0dXJuIG1pbig4MTkyKmRybV9mb3Jt YXRfcGxhbmVfY3BwKHBpeGVsX2Zvcm1hdCwgMCksIDMyNzY4KTsKPiAtCX0gZWxzZSBpZiAoZ2Vu ID49IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChnZW4gPj0gNSAm JiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ICAJCXJldHVybiAzMioxMDI0Owo+ICAJ fSBlbHNlIGlmIChnZW4gPj0gNCkgewo+ICAJCWlmIChmYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWF9USUxFRCkKPiBAQCAtMTQ1OTQsNyArMTQ1OTQsNyBAQCBzdGF0aWMgaW50IGludGVs X2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl9Cj4gIAkJYnJl YWs7Cj4gIAljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Cj4gLQkJaWYgKCFJU19WQUxMRVlWSUVX KGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7Cj4gKwkJaWYgKCFIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkgewo+ICAJCQlEUk1f REVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gIAkJCQkgIGRybV9nZXRf Zm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+ICAJCQlyZXR1cm4gLUVJTlZB TDsKPiBAQCAtMTQ2MTAsNyArMTQ2MTAsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVy X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAljYXNl IERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6Cj4gLQkJaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsK PiArCQlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQkJRFJNX0RFQlVHKCJ1 bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICAJCQkJICBkcm1fZ2V0X2Zvcm1hdF9u YW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAg LTE0NzM4LDcgKzE0NzM4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0g aXJvbmxha2VfY3J0Y19kaXNhYmxlOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmlt YXJ5X3BsYW5lID0KPiAgCQkJaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4gLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0g aTl4eF9nZXRfcGlwZV9jb25maWc7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxf cGxhbmVfY29uZmlnID0KPiAgCQkJaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWc7Cj4gQEAg LTE0NzcxLDcgKzE0NzcxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldikpCj4gIAkJZGV2 X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQgPQo+ICAJCQloYXN3ZWxsX2dl dF9kaXNwbGF5X2Nsb2NrX3NwZWVkOwo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQlkZXZfcHJpdi0+ZGlz cGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZCA9Cj4gIAkJCXZhbGxleXZpZXdfZ2V0X2Rpc3Bs YXlfY2xvY2tfc3BlZWQ7Cj4gIAllbHNlIGlmIChJU19HRU41KGRldikpCj4gQEAgLTE0ODMyLDcg KzE0ODMyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4g IAkJCQlicm9hZHdlbGxfbW9kZXNldF9jYWxjX2NkY2xrOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayA9Cj4g IAkJCXZhbGxleXZpZXdfbW9kZXNldF9jb21taXRfY2RjbGs7Cj4gIAkJZGV2X3ByaXYtPmRpc3Bs YXkubW9kZXNldF9jYWxjX2NkY2xrID0KPiBAQCAtMTU2MDYsNyArMTU2MDYsNyBAQCBpbnRlbF9t b2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcGxsLT5v biA9IGZhbHNlOwo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAo SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQl2bHZfd21fZ2V0X2h3X3N0YXRlKGRldik7 Cj4gIAllbHNlIGlmIChJU19HRU45KGRldikpCj4gIAkJc2tsX3dtX2dldF9od19zdGF0ZShkZXYp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IGYyYmZjYTAuLmFjODRmODMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgdmx2X3Bv d2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwo+ICAKPiAtCWlmIChXQVJOX09OKCFJU19WQUxMRVlWSUVXKGRl dikpKQo+ICsJaWYgKFdBUk5fT04oIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpKQo+ICAJCXJl dHVybjsKPiAgCj4gIAkvKgo+IEBAIC01ODIsNyArNTgyLDcgQEAgc3RhdGljIGludCBlZHBfbm90 aWZ5X2hhbmRsZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGNv ZGUsCj4gIAo+ICAJcHBzX2xvY2soaW50ZWxfZHApOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikpIHsKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJZW51bSBw aXBlIHBpcGUgPSB2bHZfcG93ZXJfc2VxdWVuY2VyX3BpcGUoaW50ZWxfZHApOwo+ICAJCWk5MTVf cmVnX3QgcHBfY3RybF9yZWcsIHBwX2Rpdl9yZWc7Cj4gIAkJdTMyIHBwX2RpdjsKPiBAQCAtNjEw LDcgKzYxMCw3IEBAIHN0YXRpYyBib29sIGVkcF9oYXZlX3BhbmVsX3Bvd2VyKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gIAo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBw c19tdXRleCk7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJgo+ICsJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikgJiYKPiAgCSAgICBpbnRlbF9kcC0+cHBzX3BpcGUgPT0gSU5W QUxJRF9QSVBFKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gQEAgLTYyNCw3ICs2MjQsNyBAQCBz dGF0aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF92ZGQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiAgCj4g LQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmCj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSAmJgo+ICAJICAgIGludGVsX2RwLT5wcHNfcGlwZSA9PSBJTlZBTElEX1BJUEUpCj4gIAkJ cmV0dXJuIGZhbHNlOwo+ICAKPiBAQCAtMTcyMiw3ICsxNzIyLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZHBfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQkJdHJhbnNf ZHAgJj0gflRSQU5TX0RQX0VOSF9GUkFNSU5HOwo+ICAJCUk5MTVfV1JJVEUoVFJBTlNfRFBfQ1RM KGNydGMtPnBpcGUpLCB0cmFuc19kcCk7Cj4gIAl9IGVsc2Ugewo+IC0JCWlmICghSEFTX1BDSF9T UExJVChkZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYKPiArCQlpZiAoIUhBU19QQ0hfU1BM SVQoZGV2KSAmJiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJgo+ICAJCSAgICBjcnRjLT5j b25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJCWludGVsX2RwLT5EUCB8PSBEUF9DT0xP Ul9SQU5HRV8xNl8yMzU7Cj4gIAo+IEBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kcF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAg CXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gIAo+IC0J aWYgKCFIQVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgo+ICsJaWYg KCFIQVNfUENIX1NQTElUKGRldikgJiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYKPiAg CSAgICB0bXAgJiBEUF9DT0xPUl9SQU5HRV8xNl8yMzUpCj4gIAkJcGlwZV9jb25maWctPmxpbWl0 ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+ICAKPiBAQCAtMjY5NCw3ICsyNjk0LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAK PiAgCXBwc19sb2NrKGludGVsX2RwKTsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gIAkJdmx2X2luaXRfcGFuZWxfcG93 ZXJfc2VxdWVuY2VyKGludGVsX2RwKTsKPiAgCj4gIAkvKgo+IEBAIC0yNzI4LDcgKzI3MjgsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gIAo+ICAJcHBzX3VubG9jayhpbnRlbF9kcCk7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkgewo+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQl1bnNp Z25lZCBpbnQgbGFuZV9tYXNrID0gMHgwOwo+ICAKPiAgCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYp KQo+IEBAIC0zMjE4LDcgKzMyMTgsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ICAJCWlmIChkZXZfcHJpdi0+ZWRwX2xvd192c3dpbmcgJiYgcG9y dCA9PSBQT1JUX0EpCj4gIAkJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7 Cj4gIAkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKPiAtCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKQo+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4gIAll bHNlIGlmIChJU19HRU43KGRldikgJiYgcG9ydCA9PSBQT1JUX0EpCj4gIAkJcmV0dXJuIERQX1RS QUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKPiBAQCAtMzI1OSw3ICszMjU5LDcgQEAgaW50ZWxf ZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IHZv bHRhZ2Vfc3dpbmcpCj4gIAkJZGVmYXVsdDoKPiAgCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9FTVBI X0xFVkVMXzA7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiAr CX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ICAJCXN3aXRjaCAodm9s dGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgewo+ICAJCWNhc2UgRFBf VFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wOgo+ICAJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VN UEhfTEVWRUxfMzsKPiBAQCAtNDUzOSw3ICs0NTM5LDcgQEAgYm9vbCBpbnRlbF9kaWdpdGFsX3Bv cnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlyZXR1 cm4gY3B0X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+ICAJZWxzZSBp ZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gIAkJcmV0dXJuIGJ4dF9kaWdpdGFsX3BvcnRfY29u bmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpKQo+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQo+ICAJCXJl dHVybiB2bHZfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gIAllbHNl Cj4gIAkJcmV0dXJuIGc0eF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsK PiBAQCAtNDkzMyw3ICs0OTMzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNl dChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAkgKiBSZWFkIG91dCB0aGUgY3VycmVu dCBwb3dlciBzZXF1ZW5jZXIgYXNzaWdubWVudCwKPiAgCSAqIGluIGNhc2UgdGhlIEJJT1MgZGlk IHNvbWV0aGluZyB3aXRoIGl0Lgo+ICAJICovCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVy LT5kZXYpKQo+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGVuY29kZXItPmRldikpCj4gIAkJ dmx2X2luaXRpYWxfcG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2RwKTsKPiAgCj4gIAlpbnRl bF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKGludGVsX2RwKTsKPiBAQCAtNTI5Myw3ICs1MjkzLDcg QEAgaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJLyogSGFzd2VsbCBkb2Vzbid0IGhhdmUgYW55IHBvcnQg c2VsZWN0aW9uIGJpdHMgZm9yIHRoZSBwYW5lbAo+ICAJICogcG93ZXIgc2VxdWVuY2VyIGFueSBt b3JlLiAqLwo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpIHsKPiAgCQlwb3J0X3NlbCA9IFBBTkVMX1BPUlRfU0VMRUNUX1ZMVihw b3J0KTsKPiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2KSB8fCBIQVNfUENIX0NQVChkZXYp KSB7Cj4gIAkJaWYgKHBvcnQgPT0gUE9SVF9BKQo+IEBAIC01NDA1LDEyICs1NDA1LDEyIEBAIHN0 YXRpYyB2b2lkIGludGVsX2RwX3NldF9kcnJzX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCByZWZyZXNoX3JhdGUpCj4gIAo+ICAJCXZhbCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJCWlm IChpbmRleCA+IERSUlNfSElHSF9SUikgewo+IC0JCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJCQlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiAgCQkJCXZhbCB8PSBQSVBFQ09O Rl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwo+ICAJCQllbHNlCj4gIAkJCQl2YWwgfD0gUElQRUNP TkZfRURQX1JSX01PREVfU1dJVENIOwo+ICAJCX0gZWxzZSB7Cj4gLQkJCWlmIChJU19WQUxMRVlW SUVXKGRldikpCj4gKwkJCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ICAJCQkJdmFs ICY9IH5QSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwo+ICAJCQllbHNlCj4gIAkJCQl2 YWwgJj0gflBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSDsKPiBAQCAtNTc3Nyw3ICs1Nzc3LDcg QEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAl9Cj4gIAltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgp Owo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpKSB7Cj4gIAkJaW50ZWxfZHAtPmVkcF9ub3RpZmllci5ub3RpZmllcl9jYWxs ID0gZWRwX25vdGlmeV9oYW5kbGVyOwo+ICAJCXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmllcigmaW50 ZWxfZHAtPmVkcF9ub3RpZmllcik7Cj4gIAo+IEBAIC01ODI1LDcgKzU4MjUsNyBAQCBpbnRlbF9k cF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPiAgCS8qIGludGVsX2RwIHZmdW5jcyAqLwo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDkpCj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IHNrbF9nZXRfYXV4 X2Nsb2NrX2RpdmlkZXI7Cj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwllbHNl IGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ICAJCWludGVsX2RwLT5nZXRfYXV4X2Ns b2NrX2RpdmlkZXIgPSB2bHZfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+ICAJZWxzZSBpZiAoSVNf SEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+ICAJCWludGVsX2RwLT5nZXRfYXV4 X2Nsb2NrX2RpdmlkZXIgPSBoc3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+IEBAIC01ODYwLDcg KzU4NjAsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VU UFVUX0VEUDsKPiAgCj4gIAkvKiBlRFAgb25seSBvbiBwb3J0IEIgYW5kL29yIEMgb24gdmx2L2No diAqLwo+IC0JaWYgKFdBUk5fT04oSVNfVkFMTEVZVklFVyhkZXYpICYmIGlzX2VkcChpbnRlbF9k cCkgJiYKPiArCWlmIChXQVJOX09OKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYgaXNfZWRw KGludGVsX2RwKSAmJgo+ICAJCSAgICBwb3J0ICE9IFBPUlRfQiAmJiBwb3J0ICE9IFBPUlRfQykp Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiBAQCAtNTkxMiw3ICs1OTEyLDcgQEAgaW50ZWxfZHBf aW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs Cj4gIAlpZiAoaXNfZWRwKGludGVsX2RwKSkgewo+ICAJCXBwc19sb2NrKGludGVsX2RwKTsKPiAg CQlpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3RpbWVzdGFtcHMoaW50ZWxfZHApOwo+IC0JCWlm IChJU19WQUxMRVlWSUVXKGRldikpCj4gKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp Cj4gIAkJCXZsdl9pbml0aWFsX3Bvd2VyX3NlcXVlbmNlcl9zZXR1cChpbnRlbF9kcCk7Cj4gIAkJ ZWxzZQo+ICAJCQlpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcihkZXYsIGludGVs X2RwKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+IGluZGV4IDIzMDk1N2YuLjk1NzA3NjEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+IEBAIC0zNjksNyArMzY5LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2 Owo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkKPiAgCQl2bHZfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsKPiAgCWVsc2Ug aWYgKElTX0JST1hUT04oZGV2KSkKPiAgCQlieHRfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsK PiBAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCW1zbGVlcChpbnRlbF9kc2ktPnBh bmVsX29uX2RlbGF5KTsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAo SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ICAJCS8qCj4gIAkJICogRGlzYWJsZSBEUE91 bml0IGNsb2NrIGdhdGluZywgY2FuIHN0YWxsIHBpcGUKPiAgCQkgKiBhbmQgd2UgbmVlZCBEUExM IFJFRkEgYWx3YXlzIGVuYWJsZWQKPiBAQCAtNjg0LDggKzY4NCw3IEBAIHN0YXRpYyBib29sIGlu dGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJ ICogRW5hYmxlIGJpdCBkb2VzIG5vdCBnZXQgc2V0LiBUbyBjaGVjayB3aGV0aGVyIERTSSBQb3J0 IEMKPiAgCQkgKiB3YXMgZW5hYmxlZCBpbiBCSU9TLCBjaGVjayB0aGUgUGlwZSBCIGVuYWJsZSBi aXQKPiAgCQkgKi8KPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVX KGRldikgJiYKPiAtCQkgICAgKHBvcnQgPT0gUE9SVF9DKSkKPiArCQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpICYmIChwb3J0ID09IFBPUlRfQykpCj4gIAkJCWRwaV9lbmFibGVkID0gSTkxNV9SRUFE KFBJUEVDT05GKFBJUEVfQikpICYKPiAgCQkJCQkJCVBJUEVDT05GX0VOQUJMRTsKPiAgCj4gQEAg LTcxNiw3ICs3MTUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAlpZiAoSVNfQlJPWFRPTihlbmNvZGVyLT5i YXNlLmRldikpCj4gIAkJcGNsayA9IGJ4dF9nZXRfZHNpX3BjbGsoZW5jb2RlciwgcGlwZV9jb25m aWctPnBpcGVfYnBwKTsKPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZW5jb2Rlci0+YmFzZS5k ZXYpKQo+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZW5jb2Rlci0+YmFzZS5kZXYp KQo+ICAJCXBjbGsgPSB2bHZfZ2V0X2RzaV9wY2xrKGVuY29kZXIsIHBpcGVfY29uZmlnLT5waXBl X2JwcCk7Cj4gIAo+ICAJaWYgKCFwY2xrKQo+IEBAIC04NjksNyArODY4LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHNpX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIp Cj4gIAl9Cj4gIAo+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykg ewo+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCQlpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkgewo+ICAJCQkvKgo+ICAJCQkgKiBlc2NhcGUgY2xvY2sgZGl2aWRlciwgMjBN SHosIHNoYXJlZCBmb3IgQSBhbmQgQy4KPiAgCQkJICogZGV2aWNlIHJlYWR5IG11c3QgYmUgb2Zm IHdoZW4gZG9pbmcgdGhpcyEgdHhjbGtlc2M/Cj4gQEAgLTExMjksNyArMTEyOCw3IEBAIHZvaWQg aW50ZWxfZHNpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWlmICghZGV2X3ByaXYt PnZidC5oYXNfbWlwaSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSkgewo+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQlkZXZfcHJpdi0+ bWlwaV9tbWlvX2Jhc2UgPSBWTFZfTUlQSV9CQVNFOwo+ICAJfSBlbHNlIHsKPiAgCQlEUk1fRVJS T1IoIlVuc3VwcG9ydGVkIE1pcGkgZGV2aWNlIHRvIHJlZyBiYXNlIik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RzaV9wbGwuYwo+IGluZGV4IGNiM2NmMzkuLmRjZTlmOTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4gQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIGlu dGVsX2VuYWJsZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gIAo+IC0JaWYg KElTX1ZBTExFWVZJRVcoZGV2KSkKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ ICAJCXZsdl9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKPiAgCWVsc2UgaWYgKElTX0JST1hUT04o ZGV2KSkKPiAgCQlieHRfZW5hYmxlX2RzaV9wbGwoZW5jb2Rlcik7Cj4gQEAgLTU3MSw3ICs1NzEs NyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2 Owo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkKPiAgCQl2bHZfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+ICAJZWxzZSBp ZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAJCWJ4dF9kaXNhYmxlX2RzaV9wbGwoZW5jb2Rlcik7Cj4g QEAgLTU5OSw2ICs1OTksNiBAQCB2b2lkIGludGVsX2RzaV9yZXNldF9jbG9ja3Moc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsIGVudW0gcG9ydCBwb3J0KQo+ICAKPiAgCWlmIChJU19CUk9Y VE9OKGRldikpCj4gIAkJYnh0X2RzaV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7Cj4gLQll bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpKQo+ICAJCXZsdl9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQpOwo+ICB9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IGluZGV4IGMzOTc4YmEuLjgwYzRkOGUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKPiAgCj4gIAlpZiAoSEFTX0RESShkZXZfcHJpdikpCj4gIAkJcmVnID0gSFNXX1RW SURFT19ESVBfR0NQKGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpOwo+IC0JZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXZfcHJpdikpCj4gIAkJcmVnID0gVkxWX1RWSURFT19ESVBfR0NQKGNydGMtPnBpcGUpOwo+ ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdi0+ZGV2KSkKPiAgCQlyZWcgPSBUVklE RU9fRElQX0dDUChjcnRjLT5waXBlKTsKPiBAQCAtMjEwMCw3ICsyMTAwLDcgQEAgdm9pZCBpbnRl bF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0LAo+ICAJCUJVRygpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikp IHsKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJaW50ZWxfaGRtaS0+ d3JpdGVfaW5mb2ZyYW1lID0gdmx2X3dyaXRlX2luZm9mcmFtZTsKPiAgCQlpbnRlbF9oZG1pLT5z ZXRfaW5mb2ZyYW1lcyA9IHZsdl9zZXRfaW5mb2ZyYW1lczsKPiAgCQlpbnRlbF9oZG1pLT5pbmZv ZnJhbWVfZW5hYmxlZCA9IHZsdl9pbmZvZnJhbWVfZW5hYmxlZDsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaG90cGx1Zy5jCj4gaW5kZXggYjE3Nzg1Ny4uZTdkZGYzNCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPiBAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgaW50ZWxf aHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCSAqIGhvdHBsdWcg Yml0cyBpdHNlbGYuIFNvIG9ubHkgV0FSTiBhYm91dCB1bmV4cGVjdGVkCj4gIAkJCSAqIGludGVy cnVwdHMgb24gc2FuZXIgcGxhdGZvcm1zLgo+ICAJCQkgKi8KPiAtCQkJV0FSTl9PTkNFKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSwKPiArCQkJV0FSTl9P TkNFKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRl diksCj4gIAkJCQkgICJSZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIHBpbiAlZCBhbHRob3VnaCBk aXNhYmxlZFxuIiwgaSk7CgpDYW4gcmVwbGFjZSB3aXRoICFIQVNfR01DSF9ESVNQTEFZCgo+ICAJ CQljb250aW51ZTsKPiAgCQl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2kyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiBpbmRleCAxMTEw YzgzLi4zZTllMGU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ky Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiBAQCAtNjI5LDcg KzYyOSw3IEBAIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJaWYgKEhBU19QQ0hfTk9QKGRldikpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2KSkKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ICAJCWRl dl9wcml2LT5ncGlvX21taW9fYmFzZSA9IFZMVl9ESVNQTEFZX0JBU0U7Cj4gIAllbHNlIGlmICgh SEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmdwaW9fbW1pb19iYXNl ID0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCBhMjRkZjM1Li4zYjdlNDQ3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gQEAgLTE3NjcsNyArMTc2Nyw3 IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9wYW5lbCAq cGFuZWwpCj4gIAkJcGFuZWwtPmJhY2tsaWdodC5zZXQgPSBwY2hfc2V0X2JhY2tsaWdodDsKPiAg CQlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IHBjaF9nZXRfYmFja2xpZ2h0Owo+ICAJCXBhbmVsLT5i YWNrbGlnaHQuaHpfdG9fcHdtID0gcGNoX2h6X3RvX3B3bTsKPiAtCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp IHsKPiAgCQlpZiAoZGV2X3ByaXYtPnZidC5oYXNfbWlwaSkgewo+ICAJCQlwYW5lbC0+YmFja2xp Z2h0LnNldHVwID0gcHdtX3NldHVwX2JhY2tsaWdodDsKPiAgCQkJcGFuZWwtPmJhY2tsaWdodC5l bmFibGUgPSBwd21fZW5hYmxlX2JhY2tsaWdodDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBp bmRleCA5NmY0NWQ3Li43NDFjODg4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAg LTI4Myw3ICsyODMsNyBAQCB2b2lkIGludGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGRldl9wcml2LT5kZXY7Cj4gIAl1MzIgdmFsOwo+ICAKPiAtCWlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJSTkx NV9XUklURShGV19CTENfU0VMRl9WTFYsIGVuYWJsZSA/IEZXX0NTUFdSRFdORU4gOiAwKTsKPiAg CQlQT1NUSU5HX1JFQUQoRldfQkxDX1NFTEZfVkxWKTsKPiAgCQlkZXZfcHJpdi0+d20udmx2LmN4 c3IgPSBlbmFibGU7Cj4gQEAgLTQzOTcsNyArNDM5Nyw3IEBAIHZvaWQgZ2VuNl9ycHNfaWRsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnJwcy5od19sb2NrKTsKPiAgCWlmIChkZXZfcHJpdi0+cnBzLmVuYWJsZWQpIHsKPiAt CQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpKQo+ICAJCQl2bHZfc2V0X3Jwc19pZGxlKGRldl9wcml2KTsKPiAgCQllbHNlCj4gIAkJCWdl bjZfc2V0X3JwcyhkZXZfcHJpdi0+ZGV2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSk7Cj4gQEAg LTQ0NTAsNyArNDQ1MCw3IEBAIHZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAKPiAgdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHU4IHZhbCkKPiAgewo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiArCWlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ICAJCXZhbGxleXZpZXdfc2V0X3JwcyhkZXYs IHZhbCk7Cj4gIAllbHNlCj4gIAkJZ2VuNl9zZXRfcnBzKGRldiwgdmFsKTsKPiBAQCAtNDQ5NCw3 ICs0NDk0LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19kaXNhYmxlX3JwcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHJpbnRfcmM2X2luZm8oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIG1vZGUpCj4gIHsKPiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikpIHsKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gIAkJaWYgKG1v ZGUgJiAoR0VON19SQ19DVExfVE9fTU9ERSB8IEdFTjZfUkNfQ1RMX0VJX01PREUoMSkpKQo+ICAJ CQltb2RlID0gR0VONl9SQ19DVExfUkM2X0VOQUJMRTsKPiAgCQllbHNlCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcHNyLmMKPiBpbmRleCBiNjYwOWU2Li5jNGU4YWQyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcHNyLmMKPiBAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBib29sIGludGVsX3Bzcl9t YXRjaF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJcmV0dXJuIGZh bHNlOwo+ICAJfQo+ICAKPiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICgoZGV2X3ByaXYt PnZidC5wc3IuZnVsbF9saW5rKSB8fAo+ICsJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYp ICYmICgoZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rKSB8fAo+ICAJCQkJICAgIChkaWdfcG9y dC0+cG9ydCAhPSBQT1JUX0EpKSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRpb24g ZmFpbGVkOiBMaW5rIFN0YW5kYnkgcmVxdWVzdGVkL25lZWRlZCBidXQgbm90IHN1cHBvcnRlZCBv biB0aGlzIHBsYXRmb3JtXG4iKTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTY1MCw3ICs2NTAs NyBAQCB2b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkgKiBTaW5nbGUgZnJhbWUgdXBkYXRlIGlzIGFscmVhZHkgc3VwcG9ydGVkIG9u IEJEVysgYnV0IGl0IHJlcXVpcmVzCj4gIAkgKiBtYW55IFcvQSBhbmQgaXQgaXNuJ3QgcmVhbGx5 IG5lZWRlZC4KPiAgCSAqLwo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoIUhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCW11dGV4X2xvY2so JmRldl9wcml2LT5wc3IubG9jayk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBp bmRleCAyYjk2ZjMzLi4yZTcwNDNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRl LmMKPiBAQCAtOTUxLDcgKzk1MSw3IEBAIGludCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9ya2V5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAlpZiAoKHNldC0+ZmxhZ3MgJiAo STkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04gfCBJOTE1X1NFVF9DT0xPUktFWV9TT1VSQ0Up KSA9PSAoSTkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04gfCBJOTE1X1NFVF9DT0xPUktFWV9T T1VSQ0UpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikgJiYKPiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmCj4gIAkgICAgc2V0LT5m bGFncyAmIEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OKQo+ICAJCXJldHVybiAtRUlOVkFM Owo+ICAKPiBAQCAtMTA4Niw3ICsxMDg2LDcgQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ICAJCQlpbnRlbF9wbGFu ZS0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKSB7Cj4gKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQkJaW50ZWxf cGxhbmUtPnVwZGF0ZV9wbGFuZSA9IHZsdl91cGRhdGVfcGxhbmU7Cj4gIAkJCWludGVsX3BsYW5l LT5kaXNhYmxlX3BsYW5lID0gdmx2X2Rpc2FibGVfcGxhbmU7Cj4gIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VuY29yZS5jCj4gaW5kZXggYzIzNThiYS4uZWJiYmUwMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgaW50IF9f Z2VuNl9ndF93YWl0X2Zvcl9maWZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCj4gIAkvKiBPbiBWTFYsIEZJRk8gd2lsbCBiZSBzaGFyZWQgYnkgYm90aCBTVyBhbmQgSFcu Cj4gIAkgKiBTbywgd2UgbmVlZCB0byByZWFkIHRoZSBGUkVFX0VOVFJJRVMgZXZlcnl0aW1lICov Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPiArCWlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZpZm9fY291 bnQgPSBmaWZvX2ZyZWVfZW50cmllcyhkZXZfcHJpdik7CgpUaGlzIGNvZGUgaXNuJ3QgdXNlZCBv biBDSFYsIHNvIGNhbiBzdGF5IGFzIGlzLgoKPiAgCj4gIAlpZiAoZGV2X3ByaXYtPnVuY29yZS5m aWZvX2NvdW50IDwgR1RfRklGT19OVU1fUkVTRVJWRURfRU5UUklFUykgewo+IEBAIC0xMTE1LDcg KzExMTUsNyBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJZC0+dmFsX2NsZWFyID0gX01BU0tFRF9CSVRfRElTQUJMRShG T1JDRVdBS0VfS0VSTkVMKTsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikpCj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQo+ICAJCWQtPnJlZ19w b3N0ID0gRk9SQ0VXQUtFX0FDS19WTFY7Cj4gIAllbHNlIGlmIChJU19HRU42KGRldl9wcml2KSB8 fCBJU19HRU43KGRldl9wcml2KSB8fCBJU19HRU44KGRldl9wcml2KSkKPiAgCQlkLT5yZWdfcG9z dCA9IEVDT0JVUzsKPiBAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5j b3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkgICAgICAg Rk9SQ0VXQUtFX0FDS19CTElUVEVSX0dFTjkpOwo+ICAJCWZ3X2RvbWFpbl9pbml0KGRldl9wcml2 LCBGV19ET01BSU5fSURfTUVESUEsCj4gIAkJCSAgICAgICBGT1JDRVdBS0VfTUVESUFfR0VOOSwg Rk9SQ0VXQUtFX0FDS19NRURJQV9HRU45KTsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiAgCQlk ZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0gZndfZG9tYWluc19nZXQ7Cj4g IAkJaWYgKCFJU19DSEVSUllWSUVXKGRldikpCj4gIAkJCWRldl9wcml2LT51bmNvcmUuZnVuY3Mu Zm9yY2Vfd2FrZV9wdXQgPQo+IC0tIAo+IDIuNi4zCj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwg T1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==