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: Fri, 4 Dec 2015 17:18:15 +0200 Message-ID: <20151204151815.GZ4437@intel.com> References: <1449018700-31959-1-git-send-email-wayne.boyer@intel.com> <20151202090256.GR4437@intel.com> <87mvtt2ftn.fsf@intel.com> <20151204150554.GT10243@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 6961C6E227 for ; Fri, 4 Dec 2015 07:18:23 -0800 (PST) Content-Disposition: inline In-Reply-To: <20151204150554.GT10243@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBEZWMgMDQsIDIwMTUgYXQgMDQ6MDU6NTRQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBXZWQsIERlYyAwMiwgMjAxNSBhdCAwMjozMDoyOFBNICswMjAwLCBKYW5pIE5p a3VsYSB3cm90ZToKPiA+IE9uIFdlZCwgMDIgRGVjIDIwMTUsIFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4gPiBPbiBUdWUsIERlYyAwMSwg MjAxNSBhdCAwNToxMTo0MFBNIC0wODAwLCBXYXluZSBCb3llciB3cm90ZToKPiA+ID4+IFRoZSBj aGVycnl2aWV3IGRldmljZSBzaGFyZXMgbWFueSBjaGFyYWN0ZXJpc3RpY3Mgd2l0aCB0aGUgdmFs bGV5dmlldwo+ID4gPj4gZGV2aWNlLiAgV2hlbiBzdXBwb3J0IHdhcyBhZGRlZCB0byB0aGUgZHJp dmVyIGZvciBjaGVycnl2aWV3LCB0aGUKPiA+ID4+IGNvcnJlc3BvbmRpbmcgZGV2aWNlIGluZm8g c3RydWN0dXJlIGluY2x1ZGVkIC5pc192YWxsZXl2aWV3ID0gMS4KPiA+ID4+IFRoaXMgaXMgbm90 IGNvcnJlY3QgYW5kIGxlYWRzIHRvIHNvbWUgY29uZnVzaW9uLgo+ID4gPj4gCj4gPiA+PiBUaGlz IHBhdGNoIGNoYW5nZXMgLmlzX3ZhbGxleXZpZXcgdG8gLmlzX2NoZXJyeXZpZXcgaW4gdGhlIGNo ZXJyeXZpZXcKPiA+ID4+IGRldmljZSBpbmZvIHN0cnVjdHVyZSBhbmQgZGVmaW5lcyB0aGUgSEFT X0dFTjdfTFBfRkVBVFVSRVMgbWFjcm8uCj4gPiA+PiBUaGVuIHdoZXJlIGFwcHJvcHJpYXRlLCBp bnN0YW5jZXMgb2YgSVNfVkFMTEVZVklFVyBhcmUgcmVwbGFjZWQgd2l0aAo+ID4gPj4gSEFTX0dF TjdfTFBfRkVBVFVSRVMgdG8gdGVzdCBmb3IgZWl0aGVyIGEgdmFsbGV5dmlldyBvciBhIGNoZXJy eXZpZXcKPiA+ID4+IGRldmljZS4KPiA+ID4KPiA+ID4gSSBkb24ndCBsaWtlIHRoZSBuYW1lIG9m IHRoZSBtYWNyby4gTW9zdCBvZiB0aGUgc2hhcmVkIGJpdHMgYXJlIGRpc3BsYXkKPiA+ID4gcmVs YXRlZCwgc28gd2UgY291bGQgaGF2ZSBzb21ldGhpbmcgbGlrZSBIQVNfVkxWX0RJU1BMQVkuIEZv ciB0aGUgcmVzdCwKPiA+ID4gSSB0aGluayB3ZSBjb3VsZCBqdXN0IHRlc3QgSVNfVkxWfHxJU19D SFYgZXhwbGljaXRseS4gVW5sZXNzIHNvbWVvbmUKPiA+ID4gY2FuIGNvbWUgdXAgd2l0aCBhIGJl dHRlciBuYW1lIHRoYXQgY292ZXJzIGV2ZXJ5dGhpbmc/Cj4gPiAKPiA+IERlZmluaXRlbHkgTkFL IG9uIEhBU19HRU43X0xQX0ZFQVRVUkVTLgo+ID4gCj4gPiBIQVNfVkxWX0RJU1BMQVkgd291bGQg YmUgYSBzdWJzZXQgb2YgSEFTX0dNQ0hfRElTUExBWSwgd2hpY2ggSSBndWVzcwo+ID4gd291bGRu J3QgYmUgdGhhdCBiYWQuLi4gdW5sZXNzIHNvbWVvbmUgc3RhcnRzIHVzaW5nIHRoYXQgZm9yIGEg VkxWfHxDSFYKPiA+IHNob3J0aGFuZCBpbiBub24tZGlzcGxheSBjb2RlLgo+ID4gCj4gPiBJIHRo aW5rIEkgbWlnaHQganVzdCBnbyBmb3IgdGhlIHZlcmJvc2UgKElTX1ZBTExFWVZJRVcgfHwgSVNf Q0hFUlJZVklFVykKPiA+IGFsbCBhcm91bmQuIEVzcGVjaWFsbHkgc2luY2Ugd2UndmUgYmVlbiBi cmFpbndhc2hlZCB3aXRoIHRoZSBvbGQgdmx2IGlzCj4gPiBib3RoIHZsdiBhbmQgY2h2IGNvZGUu Cj4gCj4gSEFTX0dNQ0hfRElTUExBWSBpcyB3aGF0IEkndmUgZ2VuZXJhbGx5IHVzZWQsIHNpbmNl IHVzdWFsbHkgeW91IGhhdmUgYQo+IElOVEVMX0lORk8oKS0+Z2VuID49IDUgdGVzdCBhbHJlYWR5 IHNvbWV3aGVyZS4gSWYgd2Ugd2FudCB0byBtYWtlIHRoaXMKPiBtb3JlIGV4cGxpY2l0IHRoZSBw cm9wZXIgbmFtZSBmb3Igdmx2IGlzIEJBWVRSQUlMLAoKTm8gaXQgaXNuJ3QuIExldCdzIG5vdCBw cm9wYWdhdGUgdGhhdCBtYWRuZXNzIGludG8gdGhlIGRyaXZlci4KCj4gYW5kIGZvciB0cnVlbHkg Ynl0Cj4gc3BlY2lmaWMgc3R1ZmYgd2UndmUgbmFtZWQgdGhpbmdzIGJ5dF8uIFNvIHdoYXQgYWJv dXQgRGVmaW5pbmcgYW4KPiBJU19CQVlUUkFJTCBpbnN0ZWFkIGZvciB0aGUgY2FzZXMgd2hlcmUg aXQncyBub3Qgdmx2IHx8IGNodi4KPiAKPiBBbmQgd2hhdCdzIHRoZSBiZW5lZml0IG9mIGFsbCB0 aGlzIGNodXJuPwo+IC1EYW5pZWwKPiAKPiA+IAo+ID4gQlIsCj4gPiBKYW5pLgo+ID4gCj4gPiA+ Cj4gPiA+PiAKPiA+ID4+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ Cj4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBXYXluZSBCb3llciA8d2F5bmUuYm95ZXJAaW50ZWwuY29t Pgo+ID4gPj4gLS0tCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICAgIHwgMTQgKysrKy0tLS0tCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEu YyAgICAgICAgIHwgIDggKystLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jICAgICAgICAgfCAxMCArKystLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgfCAxOSArKysrKysrKy0tLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAgNCArLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgMiArLQo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jICAgICB8ICAyICstCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyAgIHwgIDYgKystLQo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICA4ICsrLS0tCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgIHwgIDQgKy0tCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5jICAgICAgIHwgMTAgKysrLS0tCj4gPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAgIHwgIDYgKystLQo+ID4gPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jICAgICAgICB8ICA0ICstLQo+ID4gPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICB8IDU0ICsrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLQo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAg ICB8IDM4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpLmMgICAgICAgIHwgMTMgKysrKy0tLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgICAgfCAgNiArKy0tCj4gPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAgIHwgIDQgKy0tCj4gPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jICAgIHwgIDIgKy0KPiA+ID4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9pMmMuYyAgICAgICAgfCAgMiArLQo+ID4gPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICB8ICAyICstCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDggKystLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wc3IuYyAgICAgICAgfCAgNCArLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgfCAgNCArLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuYyAgICAgfCAgNiArKy0tCj4gPiA+PiAgMjUgZmlsZXMgY2hh bmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKPiA+ID4+IAo+ID4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ID4+IGluZGV4IGJmZDU3ZmIuLmEyZDUw ZGEgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ID4+ IEBAIC04NjIsNyArODYyLDcgQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+ID4+ICAJCQkgICBJOTE1X1JFQUQoR0VOOF9Q Q1VfSUlSKSk7Cj4gPiA+PiAgCQlzZXFfcHJpbnRmKG0sICJQQ1UgaW50ZXJydXB0IGVuYWJsZTpc dCUwOHhcbiIsCj4gPiA+PiAgCQkJICAgSTkxNV9SRUFEKEdFTjhfUENVX0lFUikpOwo+ID4gPj4g LQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwl9IGVsc2UgaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4KPiA+ID4gV2UgYWxyZWR5IHRlc3QgZm9y IENIViBlYXJsaWVyLCBzbyB0aGlzIHNob3VsZCByZW1haW4gYXMgaXMuCj4gPiA+Cj4gPiA+PiAg CQlzZXFfcHJpbnRmKG0sICJEaXNwbGF5IElFUjpcdCUwOHhcbiIsCj4gPiA+PiAgCQkJICAgSTkx NV9SRUFEKFZMVl9JRVIpKTsKPiA+ID4+ICAJCXNlcV9wcmludGYobSwgIkRpc3BsYXkgSUlSOlx0 JTA4eFxuIiwKPiA+ID4+IEBAIC0xMjg0LDcgKzEyODQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJl cXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gPiA+PiAgCQlz ZXFfcHJpbnRmKG0sCj4gPiA+PiAgCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVk IE1IelxuIiwKPiA+ID4+ICAJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYt PnJwcy5lZmZpY2llbnRfZnJlcSkpOwo+ID4gPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgewo+ID4gPj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsK PiA+ID4KPiA+ID4gQW5kIGZvciB0aGlzIHlvdSB3b3VsZCBhbHNvIG5lZWQgdG8gY2hhbmdlIHRo ZSBlYXJsaWVyIGNvbmRpdGlvbiBpbiB0aGUKPiA+ID4gcHJldmlvdXMgJ2Vsc2UgaWYnIGJyYW5j aC4gQnV0IEkgdGhpbmsgaXQgd291bGQgYmUgY2xlYXJuZXIgdG8gaG9pc3QKPiA+ID4gdGhlIFZM Vi9DSFYgY29kZSB0byBzaXQgYmVmb3JlIHRoZSBnZW42KyBjb2RlLCBhbmQgdGhlbiB0aGUgZ2Vu NisKPiA+ID4gY29uZGl0aW9uIGNhbiBiZSBzaW1wbGlmaWVkIHNpZ25pZmljYW50bHkuCj4gPiA+ Cj4gPiA+PiAgCQl1MzIgZnJlcV9zdHM7Cj4gPiA+PiAgCj4gPiA+PiAgCQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ID4gPj4gQEAgLTE2MDIsNyArMTYwMiw3IEBAIHN0YXRp YyBpbnQgaTkxNV9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4g PiA+PiAgCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKPiA+ID4+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7Cj4gPiA+PiAgCj4gPiA+ PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWlmIChIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpKQo+ID4gPj4gIAkJcmV0dXJuIHZsdl9kcnBjX2luZm8obSk7Cj4gPiA+PiAgCWVs c2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gPiA+PiAgCQlyZXR1cm4gZ2VuNl9k cnBjX2luZm8obSk7Cj4gPiA+PiBAQCAtMTc0Myw3ICsxNzQzLDcgQEAgc3RhdGljIGludCBpOTE1 X3NyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiA+ID4+ICAJCXNy X2VuYWJsZWQgPSBJOTE1X1JFQUQoSU5TVFBNKSAmIElOU1RQTV9TRUxGX0VOOwo+ID4gPj4gIAll bHNlIGlmIChJU19QSU5FVklFVyhkZXYpKQo+ID4gPj4gIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVB RChEU1BGVzMpICYgUElORVZJRVdfU0VMRl9SRUZSRVNIX0VOOwo+ID4gPj4gLQllbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpCj4gPiA+PiAgCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKEZXX0JMQ19TRUxGX1ZMVikg JiBGV19DU1BXUkRXTkVOOwo+ID4gPj4gIAo+ID4gPj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7Cj4gPiA+PiBAQCAtMzk4Myw3ICszOTgzLDcgQEAgc3RhdGljIGludCBwaXBlX2Ny Y19zZXRfc291cmNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAo+ID4g Pj4gIAkJcmV0ID0gaTh4eF9waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2YWwpOwo+ID4gPj4g IAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpCj4gPiA+PiAgCQlyZXQgPSBpOXh4 X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBwaXBlLCAmc291cmNlLCAmdmFsKTsKPiA+ID4+IC0JZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpKQo+ID4gPj4gIAkJcmV0ID0gdmx2X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBw aXBlLCAmc291cmNlLCAmdmFsKTsKPiA+ID4+ICAJZWxzZSBpZiAoSVNfR0VONShkZXYpIHx8IElT X0dFTjYoZGV2KSkKPiA+ID4+ICAJCXJldCA9IGlsa19waXBlX2NyY19jdGxfcmVnKCZzb3VyY2Us ICZ2YWwpOwo+ID4gPj4gQEAgLTQwNTIsNyArNDA1Miw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNf c2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwKPiA+ID4+ ICAKPiA+ID4+ICAJCWlmIChJU19HNFgoZGV2KSkKPiA+ID4+ICAJCQlnNHhfdW5kb19waXBlX3Nj cmFtYmxlX3Jlc2V0KGRldiwgcGlwZSk7Cj4gPiA+PiAtCQllbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldikpCj4gPiA+PiArCQllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ID4g Pj4gIAkJCXZsdl91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2LCBwaXBlKTsKPiA+ID4+ICAJ CWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSAmJiBwaXBlID09IFBJUEVfQSkKPiA+ID4+ICAJCQlo c3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2EoZGV2LCBmYWxzZSk7Cj4gPiA+PiBAQCAtNDQ0Miw3 ICs0NDQyLDcgQEAgc3RhdGljIHZvaWQgd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAq bSwgY29uc3QgdWludDE2X3Qgd21bOF0pCj4gPiA+PiAgCQkgKiAtIFdNMSsgbGF0ZW5jeSB2YWx1 ZXMgaW4gMC41dXMgdW5pdHMKPiA+ID4+ICAJCSAqIC0gbGF0ZW5jaWVzIGFyZSBpbiB1cyBvbiBn ZW45L3Zsdi9jaHYKPiA+ID4+ICAJCSAqLwo+ID4gPj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDkgfHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwkJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkgfHwgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4+ICAJCQls YXRlbmN5ICo9IDEwOwo+ID4gPj4gIAkJZWxzZSBpZiAobGV2ZWwgPiAwKQo+ID4gPj4gIAkJCWxh dGVuY3kgKj0gNTsKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ID4gPj4gaW5kZXggYTgx Yzc2Ni4uZTI0YWE2NSAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiA+ ID4+IEBAIC0yNTYsNyArMjU2LDcgQEAgaW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gPiA+PiAgCXUzMiB0ZW1wOwo+ID4gPj4gIAlib29sIGVuYWJsZWQ7Cj4gPiA+ PiAgCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKQo+ID4gPj4gIAkJcmV0dXJuOwo+ID4gPj4gIAo+ID4gPj4gIAlk ZXZfcHJpdi0+bWNoYmFyX25lZWRfZGlzYWJsZSA9IGZhbHNlOwo+ID4gPj4gQEAgLTc3OSw3ICs3 NzksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAy Owo+ID4gPj4gIAkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9CXSA9IDI7Cj4gPiA+PiAgCQlpbmZv LT5udW1fc3ByaXRlc1tQSVBFX0NdID0gMTsKPiA+ID4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpCj4gPiA+PiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkK PiA+ID4+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gPiA+PiAgCQkJaW5mby0+ bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+ID4gPj4gIAllbHNlCj4gPiA+PiBAQCAtNzkxLDcgKzc5 MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gIAkJaW5mby0+bnVtX3BpcGVzID0gMDsKPiA+ID4+ICAJ fSBlbHNlIGlmIChpbmZvLT5udW1fcGlwZXMgPiAwICYmCj4gPiA+PiAgCQkgICAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPT0gNyB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA4KSAmJgo+ID4gPj4g LQkJICAgIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwkJICAgIUhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpIHsKPiA+ID4KPiA+ID4gVGhhdCBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9y ICdIQVNfUENIX1NQTElUICYmIChHRU43IHx8IEdFTjgpJywgc2luY2UKPiA+ID4gaXQncyByZWFk aW5nIFNGVVNFX1NUUkFQIHdoaWNoIGxpdmVzIGluIHRoZSBQQ0guCj4gPiA+Cj4gPiA+PiAgCQl1 MzIgZnVzZV9zdHJhcCA9IEk5MTVfUkVBRChGVVNFX1NUUkFQKTsKPiA+ID4+ICAJCXUzMiBzZnVz ZV9zdHJhcCA9IEk5MTVfUkVBRChTRlVTRV9TVFJBUCk7Cj4gPiA+PiAgCj4gPiA+PiBAQCAtODM2 LDcgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gIAo+ID4gPj4gIHN0YXRpYyB2b2lkIGludGVs X2luaXRfZHBpbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+PiAgewo+ ID4gPj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ID4gPj4gKwlpZiAoIUhBU19H RU43X0xQX0ZFQVRVUkVTKGRldl9wcml2KSkKPiA+ID4+ICAJCXJldHVybjsKPiA+ID4+ICAKPiA+ ID4+ICAJLyoKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPj4gaW5kZXggNWY4YjBm Zi4uYWM1NGI2OCAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4+ IEBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5m byBpbnRlbF9jaGVycnl2aWV3X2luZm8gPSB7Cj4gPiA+PiAgCS5nZW4gPSA4LCAubnVtX3BpcGVz ID0gMywKPiA+ID4+ICAJLm5lZWRfZ2Z4X2h3cyA9IDEsIC5oYXNfaG90cGx1ZyA9IDEsCj4gPiA+ PiAgCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxUX1JJTkcgfCBWRUJP WF9SSU5HLAo+ID4gPj4gLQkuaXNfdmFsbGV5dmlldyA9IDEsCj4gPiA+PiArCS5pc19jaGVycnl2 aWV3ID0gMSwKPiA+ID4+ICAJLmRpc3BsYXlfbW1pb19vZmZzZXQgPSBWTFZfRElTUExBWV9CQVNF LAo+ID4gPj4gIAlHRU5fQ0hWX1BJUEVPRkZTRVRTLAo+ID4gPj4gIAlDVVJTT1JfT0ZGU0VUUywK PiA+ID4+IEBAIC04MDAsNyArODAwLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFy bHkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAKPiA+ID4+ICAJcGNpX3NldF9tYXN0 ZXIoZGV2LT5wZGV2KTsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpKQo+ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQo+ID4gPj4g IAkJcmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2LCBmYWxzZSk7Cj4gPiA+PiAgCWlm IChyZXQpCj4gPiA+PiAgCQlEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJlIGZhaWxlZDogJWQsIGNv bnRpbnVpbmcgYW55d2F5XG4iLAo+ID4gPj4gQEAgLTE1MzAsNyArMTUzMCw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+ID4gPj4gIAkJ cmV0ID0gYnh0X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2KTsKPiA+ID4+ICAJZWxzZSBpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+ID4+ICAJCWhz d19kaXNhYmxlX3BjOChkZXZfcHJpdik7Cj4gPiA+PiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpKQo+ID4gPj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJp dikpCj4gPiA+PiAgCQlyZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIHRydWUpOwo+ ID4gPj4gIAo+ID4gPj4gIAkvKgo+ID4gPj4gQEAgLTE1NDcsNyArMTU0Nyw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+ID4gPj4gIAkg KiBwb3dlciB3ZWxsLCBzbyBocGQgaXMgcmVpbml0aWFsaXplZCBmcm9tIHRoZXJlLiBGb3IKPiA+ ID4+ICAJICogZXZlcnlvbmUgZWxzZSBkbyBpdCBoZXJlLgo+ID4gPj4gIAkgKi8KPiA+ID4+IC0J aWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiA+ID4+ICsJaWYgKCFIQVNfR0VON19MUF9G RUFUVVJFUyhkZXZfcHJpdikpCj4gPiA+PiAgCQlpbnRlbF9ocGRfaW5pdChkZXZfcHJpdik7Cj4g PiA+PiAgCj4gPiA+PiAgCWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoZGV2KTsKPiA+ID4+IEBA IC0xNTcyLDcgKzE1NzIsNyBAQCBzdGF0aWMgaW50IGludGVsX3N1c3BlbmRfY29tcGxldGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPj4gIAkJcmV0ID0gYnh0X3N1c3Bl bmRfY29tcGxldGUoZGV2X3ByaXYpOwo+ID4gPj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9w cml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gPj4gIAkJcmV0ID0gaHN3X3N1c3Bl bmRfY29tcGxldGUoZGV2X3ByaXYpOwo+ID4gPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dl9wcml2KSkKPiA+ID4+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYp KQo+ID4gPj4gIAkJcmV0ID0gdmx2X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+ID4gPj4g IAllbHNlCj4gPiA+PiAgCQlyZXQgPSAwOwo+ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g PiA+PiBpbmRleCBiYzg2NWUyMy4uYWNiNWU4YiAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiA+ID4+IEBAIC03NjMsNiArNzYzLDcgQEAgc3RydWN0IGludGVsX2NzciB7 Cj4gPiA+PiAgCWZ1bmMoaXNfY3Jlc3RsaW5lKSBzZXAgXAo+ID4gPj4gIAlmdW5jKGlzX2l2eWJy aWRnZSkgc2VwIFwKPiA+ID4+ICAJZnVuYyhpc192YWxsZXl2aWV3KSBzZXAgXAo+ID4gPj4gKwlm dW5jKGlzX2NoZXJyeXZpZXcpIHNlcCBcCj4gPiA+PiAgCWZ1bmMoaXNfaGFzd2VsbCkgc2VwIFwK PiA+ID4+ICAJZnVuYyhpc19za3lsYWtlKSBzZXAgXAo+ID4gPj4gIAlmdW5jKGlzX2Jyb3h0b24p IHNlcCBcCj4gPiA+PiBAQCAtMjQ1Niw5ICsyNDU3LDkgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90 YWJsZSB7Cj4gPiA+PiAgCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1MiB8fCBcCj4gPiA+ PiAgCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1YSkKPiA+ID4+ICAjZGVmaW5lIElTX1ZB TExFWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc192YWxsZXl2aWV3KQo+ID4gPj4gLSNk ZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZpZXcg JiYgSVNfR0VOOChkZXYpKQo+ID4gPj4gKyNkZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJTlRF TF9JTkZPKGRldiktPmlzX2NoZXJyeXZpZXcpCj4gPiA+PiAgI2RlZmluZSBJU19IQVNXRUxMKGRl dikJKElOVEVMX0lORk8oZGV2KS0+aXNfaGFzd2VsbCkKPiA+ID4+IC0jZGVmaW5lIElTX0JST0FE V0VMTChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5pc192YWxsZXl2aWV3ICYmIElTX0dFTjgoZGV2 KSkKPiA+ID4+ICsjZGVmaW5lIElTX0JST0FEV0VMTChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5p c19jaGVycnl2aWV3ICYmIElTX0dFTjgoZGV2KSkKPiA+ID4+ICAjZGVmaW5lIElTX1NLWUxBS0Uo ZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19za3lsYWtlKQo+ID4gPj4gICNkZWZpbmUgSVNfQlJP WFRPTihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5pc19icm94dG9uKQo+ID4gPj4gICNkZWZpbmUg SVNfS0FCWUxBS0UoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19rYWJ5bGFrZSkKPiA+ID4+IEBA IC0yNTg1LDcgKzI1ODYsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiA+ID4+ICAJ CQkJIElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKQo+ID4gPj4gICNkZWZpbmUg SEFTX1JVTlRJTUVfUE0oZGV2KQkoSVNfR0VONihkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSB8fCBc Cj4gPiA+PiAgCQkJCSBJU19CUk9BRFdFTEwoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikgfHwg XAo+ID4gPj4gLQkJCQkgSVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRldikpCj4gPiA+ PiArCQkJCSBJU19DSEVSUllWSUVXKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8IFwKPiA+ID4+ ICsJCQkJIElTX0tBQllMQUtFKGRldikpCj4gPiA+PiAgI2RlZmluZSBIQVNfUkM2KGRldikJCShJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+ID4gPj4gICNkZWZpbmUgSEFTX1JDNnAoZGV2KQkJ KElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDYgfHwgSVNfSVZZQlJJREdFKGRldikpCj4gPiA+PiAg Cj4gPiA+PiBAQCAtMjU5OCw3ICsyNjAwLDExIEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUg ewo+ID4gPj4gIAkJCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKPiA+ID4+ICAKPiA+ ID4+ICAjZGVmaW5lIEhBU19DT1JFX1JJTkdfRlJFUShkZXYpCShJTlRFTF9JTkZPKGRldiktPmdl biA+PSA2ICYmIFwKPiA+ID4+IC0JCQkJICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hU T04oZGV2KSkKPiA+ID4+ICsJCQkJICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJ RVcoZGV2KSAmJiBcCj4gPiA+PiArCQkJCSAhSVNfQlJPWFRPTihkZXYpKQo+ID4gPj4gKwo+ID4g Pj4gKyNkZWZpbmUgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5p c192YWxsZXl2aWV3IHx8IFwKPiA+ID4+ICsJCQkJICAgSU5URUxfSU5GTyhkZXYpLT5pc19jaGVy cnl2aWV3KQo+ID4gPj4gIAo+ID4gPj4gICNkZWZpbmUgSU5URUxfUENIX0RFVklDRV9JRF9NQVNL CQkweGZmMDAKPiA+ID4+ICAjZGVmaW5lIElOVEVMX1BDSF9JQlhfREVWSUNFX0lEX1RZUEUJCTB4 M2IwMAo+ID4gPj4gQEAgLTI2MjAsNyArMjYyNiw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFi bGUgewo+ID4gPj4gICNkZWZpbmUgSEFTX1BDSF9OT1AoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2 KSA9PSBQQ0hfTk9QKQo+ID4gPj4gICNkZWZpbmUgSEFTX1BDSF9TUExJVChkZXYpIChJTlRFTF9Q Q0hfVFlQRShkZXYpICE9IFBDSF9OT05FKQo+ID4gPj4gIAo+ID4gPj4gLSNkZWZpbmUgSEFTX0dN Q0hfRElTUExBWShkZXYpIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUgfHwgSVNfVkFMTEVZVklF VyhkZXYpKQo+ID4gPj4gKyNkZWZpbmUgSEFTX0dNQ0hfRElTUExBWShkZXYpIChJTlRFTF9JTkZP KGRldiktPmdlbiA8IDUgfHwgXAo+ID4gPj4gKwkJCSAgICAgICBIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKQo+ID4gPj4gIAo+ID4gPj4gIC8qIERQRiA9PSBkeW5hbWljIHBhcml0eSBmZWF0dXJl ICovCj4gPiA+PiAgI2RlZmluZSBIQVNfTDNfRFBGKGRldikgKElTX0lWWUJSSURHRShkZXYpIHx8 IElTX0hBU1dFTEwoZGV2KSkKPiA+ID4+IEBAIC0zNTExLDcgKzM1MTgsNyBAQCBfX3Jhd193cml0 ZSg2NCwgcSkKPiA+ID4+ICAKPiA+ID4+ICBzdGF0aWMgaW5saW5lIGk5MTVfcmVnX3QgaTkxNV92 Z2FjbnRybF9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICB7Cj4gPiA+PiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpKQo+ID4gPj4gIAkJcmV0dXJuIFZMVl9WR0FDTlRSTDsKPiA+ID4+ICAJZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkKPiA+ID4+ICAJCXJldHVybiBDUFVfVkdBQ05UUkw7Cj4g PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4+IGluZGV4IGE2OTk3YTguLjE1YmU5ZWEg MTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiA+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiA+PiBAQCAtNDgzOCw3 ICs0ODM4LDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ID4+ICAKPiA+ID4+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gPj4gIAo+ ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gPiA+PiArCWlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKSB7Cj4gPiA+PiAgCQkvKiBWTFZBMCAocG90ZW50aWFsIGhhY2spLCBC SU9TIGlzbid0IGFjdHVhbGx5IHdha2luZyB1cyAqLwo+ID4gPj4gIAkJSTkxNV9XUklURShWTFZf R1RMQ19XQUtFX0NUUkwsIFZMVl9HVExDX0FMTE9XV0FLRVJFUSk7Cj4gPiA+PiAgCQlpZiAod2Fp dF9mb3IoKEk5MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpICYKPiA+ID4KPiA+ID4gV2Ugc3Rp bGwgaGF2ZSB0aGF0IGNvZGU/IFNob3VsZCBwcm9iYWJseSBqdXN0IG51a2UgaXQuCj4gPiA+Cj4g PiA+PiBAQCAtNDk2Myw3ICs0OTYzLDcgQEAgaTkxNV9nZW1fbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ID4gPj4gIAo+ID4gPj4gIAlkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21v ZGUgPSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9HRU5FUkFMOwo+ID4gPj4gIAo+ID4gPj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4g Pj4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAhSEFTX0dFTjdfTFBfRkVBVFVS RVMoZGV2KSkKPiA+ID4+ICAJCWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9IDMyOwo+ID4gPj4g IAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0IHx8IElTX0k5NDVHKGRldikgfHwg SVNfSTk0NUdNKGRldikgfHwgSVNfRzMzKGRldikpCj4gPiA+PiAgCQlkZXZfcHJpdi0+bnVtX2Zl bmNlX3JlZ3MgPSAxNjsKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKPiA+ID4+IGluZGV4IDQzNzYxYzUuLjQ3NmZlZTAgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ID4gPj4gQEAgLTE5MCw3ICsxOTAsNyBA QCBpOTE1X2dlbV9hbGxvY19jb250ZXh0X29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXpl X3Qgc2l6ZSkKPiA+ID4+ICAJICogd291bGQgbWFrZSB0aGUgb2JqZWN0IHNub29wZWQgd2hpY2gg bWlnaHQgaGF2ZSBhCj4gPiA+PiAgCSAqIG5lZ2F0aXZlIHBlcmZvcm1hbmNlIGltcGFjdC4KPiA+ ID4+ICAJICovCj4gPiA+PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19W QUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcg JiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4KPiA+ID4gSSB0aGluayB3ZSBz aG91bGQganVzdCBtYWtlIHRoaXMgSVNfSVZZQlJJREdFIHNpbmNlIGxhdGVyIHBsYXRmb3Jtcwo+ ID4gPiBkb24ndCBoYXZlIGFueSBMMyBjb250cm9sIGJpdHMgaW4gdGhlIFBURSBhbnl3YXkuCj4g PiA+Cj4gPiA+PiAgCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwg STkxNV9DQUNIRV9MM19MTEMpOwo+ID4gPj4gIAkJLyogRmFpbHVyZSBzaG91bGRuJ3QgZXZlciBo YXBwZW4gdGhpcyBlYXJseSAqLwo+ID4gPj4gIAkJaWYgKFdBUk5fT04ocmV0KSkgewo+ID4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+ID4+IGluZGV4IDFmN2U2YjkuLmVlODBl MjYgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu Ywo+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+ID4+ IEBAIC0zMTI1LDcgKzMxMjUsNyBAQCBpbnQgaTkxNV9nZW1fZ3R0X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiA+ID4+ICAJCQlndHQtPmJhc2UucHRlX2VuY29kZSA9IGlyaXNfcHRlX2Vu Y29kZTsKPiA+ID4+ICAJCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSkKPiA+ID4+ICAJCQlndHQt PmJhc2UucHRlX2VuY29kZSA9IGhzd19wdGVfZW5jb2RlOwo+ID4gPj4gLQkJZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwkJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSkKPiA+ID4KPiA+ID4gTm8gbmVlZCB0byBjaGFuZ2UuCj4gPiA+Cj4gPiA+PiAgCQkJZ3R0 LT5iYXNlLnB0ZV9lbmNvZGUgPSBieXRfcHRlX2VuY29kZTsKPiA+ID4+ICAJCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDcpCj4gPiA+PiAgCQkJZ3R0LT5iYXNlLnB0ZV9lbmNvZGUg PSBpdmJfcHRlX2VuY29kZTsKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu Ywo+ID4gPj4gaW5kZXggMDZjYTQwOC4uZTkyYmU1ZiAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiA+ID4+IEBAIC0zODMsNyArMzgzLDcgQEAgaW50 IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYg Km0sCj4gPiA+PiAgCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQo+ID4gPj4gIAkJCWVycl9wcmlu dGYobSwgIkdUSUVSIGd0ICVkOiAweCUwOHhcbiIsIGksCj4gPiA+PiAgCQkJCSAgIGVycm9yLT5n dGllcltpXSk7Cj4gPiA+PiAtCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpIHx8IElTX1ZB TExFWVZJRVcoZGV2KSkKPiA+ID4+ICsJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikgfHwg SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4KPiA+ID4gTm8gbmVlZCB0byBjaGFuZ2Uu IENIViB0YWtlcyB0aGUgZ2VuPj04IGJyYW5jaCBlYXJsaWVyLgo+ID4gPgo+ID4gPj4gIAkJZXJy X3ByaW50ZihtLCAiR1RJRVI6IDB4JTA4eFxuIiwgZXJyb3ItPmd0aWVyWzBdKTsKPiA+ID4+ICAJ ZXJyX3ByaW50ZihtLCAiUEdUQkxfRVI6IDB4JTA4eFxuIiwgZXJyb3ItPnBndGJsX2VyKTsKPiA+ ID4+ICAJZXJyX3ByaW50ZihtLCAiRk9SQ0VXQUtFOiAweCUwOHhcbiIsIGVycm9yLT5mb3JjZXdh a2UpOwo+ID4gPj4gQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVy ZV9yZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPj4gIAkg Ki8KPiA+ID4+ICAKPiA+ID4+ICAJLyogMTogUmVnaXN0ZXJzIHNwZWNpZmljIHRvIGEgc2luZ2xl IGdlbmVyYXRpb24gKi8KPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJZXJyb3ItPmd0aWVy WzBdID0gSTkxNV9SRUFEKEdUSUVSKTsKPiA+ID4+ICAJCWVycm9yLT5pZXIgPSBJOTE1X1JFQUQo VkxWX0lFUik7Cj4gPiA+PiAgCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFEX0ZXKEZPUkNF V0FLRV9WTFYpOwo+ID4gPgo+ID4gPiBXZSB3YW50IHRvIGNhcHR1cmUgdGhlIGZvcmNld2FrZSBv biBDSFYsIGJ1dCBub3QgdGhlIEdUSUVSLiBFcnJvcgo+ID4gPiBjYXB0dXJlIG9uIFZMVi9DSFYg aXMgcHJldHR5IGRlY2Vucmx5IGJyb2tlbiBjdXJyZW50bHkuIEkgaGF2ZSBhIGJyYW5jaAo+ID4g PiBzb21ld2hlcmUgdGhhdCB0cmllcyB0byBmaXggaXQgdXAsIEkgc3VwcG9zZSBJIHNob3VsZCBk aWcgaXQgdXAgYW5kIHBvc3QKPiA+ID4gaXQuCj4gPiA+Cj4gPiA+PiBAQCAtMTI1Nyw3ICsxMjU3 LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+PiAgCQllcnJvci0+Z3RpZXJbMF0gPSBJOTE1X1JFQUQo R1RJRVIpOwo+ID4gPj4gIAl9IGVsc2UgaWYgKElTX0dFTjIoZGV2KSkgewo+ID4gPj4gIAkJZXJy b3ItPmllciA9IEk5MTVfUkVBRDE2KElFUik7Cj4gPiA+PiAtCX0gZWxzZSBpZiAoIUlTX1ZBTExF WVZJRVcoZGV2KSkgewo+ID4gPj4gKwl9IGVsc2UgaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpKSB7Cj4gPiA+PiAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKElFUik7Cj4gPiA+PiAgCX0K PiA+ID4+ICAJZXJyb3ItPmVpciA9IEk5MTVfUkVBRChFSVIpOwo+ID4gPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gPiA+PiBpbmRleCBlODhkNjkyLi45MjAxZTI1IDEwMDY0NAo+ID4gPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gPj4gQEAgLTU4MSw3ICs1ODEsNyBAQCBpOTE1X2Vu YWJsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlw ZSBwaXBlLAo+ID4gPj4gIHsKPiA+ID4+ICAJdTMyIGVuYWJsZV9tYXNrOwo+ID4gPj4gIAo+ID4g Pj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPiA+ID4+ICsJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKQo+ID4gPj4gIAkJZW5hYmxlX21hc2sgPSB2 bHZfZ2V0X3BpcGVzdGF0X2VuYWJsZV9tYXNrKGRldl9wcml2LT5kZXYsCj4gPiA+PiAgCQkJCQkJ CSAgIHN0YXR1c19tYXNrKTsKPiA+ID4+ICAJZWxzZQo+ID4gPj4gQEAgLTU5NSw3ICs1OTUsNyBA QCBpOTE1X2Rpc2FibGVfcGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBlbnVtIHBpcGUgcGlwZSwKPiA+ID4+ICB7Cj4gPiA+PiAgCXUzMiBlbmFibGVfbWFzazsKPiA+ ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpCj4gPiA+PiAr CWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkKPiA+ID4+ICAJCWVuYWJs ZV9tYXNrID0gdmx2X2dldF9waXBlc3RhdF9lbmFibGVfbWFzayhkZXZfcHJpdi0+ZGV2LAo+ID4g Pj4gIAkJCQkJCQkgICBzdGF0dXNfbWFzayk7Cj4gPiA+PiAgCWVsc2UKPiA+ID4+IEBAIC0xNzIz LDcgKzE3MjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ID4gPj4gIAkgKi8KPiA+ID4+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9U UExVR19TVEFUKTsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExF WVZJRVcoZGV2KSkgewo+ID4gPj4gKwlpZiAoSVNfRzRYKGRldikgfHwgSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJdTMyIGhvdHBsdWdfdHJpZ2dlciA9IGhvdHBsdWdfc3Rh dHVzICYgSE9UUExVR19JTlRfU1RBVFVTX0c0WDsKPiA+ID4+ICAKPiA+ID4+ICAJCWlmIChob3Rw bHVnX3RyaWdnZXIpIHsKPiA+ID4+IEBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lkIGludGVsX2ly cV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4+ICAJSU5JVF9X T1JLKCZkZXZfcHJpdi0+bDNfcGFyaXR5LmVycm9yX3dvcmssIGl2eWJyaWRnZV9wYXJpdHlfd29y ayk7Cj4gPiA+PiAgCj4gPiA+PiAgCS8qIExldCdzIHRyYWNrIHRoZSBlbmFibGVkIHJwcyBldmVu dHMgKi8KPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPiA+ID4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ID4g Pj4gIAkJLyogV2FHc3ZSQzBSZXNpZGVuY3lNZXRob2Q6dmx2ICovCj4gPiA+PiAgCQlkZXZfcHJp di0+cG1fcnBzX2V2ZW50cyA9IEdFTjZfUE1fUlBfRE9XTl9FSV9FWFBJUkVEIHwgR0VONl9QTV9S UF9VUF9FSV9FWFBJUkVEOwo+ID4gPj4gIAllbHNlCj4gPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N1c3BlbmQuYwo+ID4gPj4gaW5kZXggMmQ5MTgyMS4uOTU5MjFmYyAxMDA2NDQKPiA+ID4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gPiA+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+ID4gPj4gQEAgLTQ5LDcgKzQ5LDcgQEAg c3RhdGljIHZvaWQgaTkxNV9zYXZlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ID4+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUENI X1BQX09OX0RFTEFZUyk7Cj4gPiA+PiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT0ZGX0RF TEFZUyA9IEk5MTVfUkVBRChQQ0hfUFBfT0ZGX0RFTEFZUyk7Cj4gPiA+PiAgCQlkZXZfcHJpdi0+ cmVnZmlsZS5zYXZlUFBfRElWSVNPUiA9IEk5MTVfUkVBRChQQ0hfUFBfRElWSVNPUik7Cj4gPiA+ PiAtCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwl9IGVsc2UgaWYg KCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gPiA+PiAgCQlkZXZfcHJpdi0+cmVnZmls ZS5zYXZlUFBfQ09OVFJPTCA9IEk5MTVfUkVBRChQUF9DT05UUk9MKTsKPiA+ID4+ICAJCWRldl9w cml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT05fREVMQVlTKTsK PiA+ID4+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFE KFBQX09GRl9ERUxBWVMpOwo+ID4gPj4gQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgaTkx NV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJCUk5MTVf V1JJVEUoUENIX1BQX09GRl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVM QVlTKTsKPiA+ID4+ICAJCUk5MTVfV1JJVEUoUENIX1BQX0RJVklTT1IsIGRldl9wcml2LT5yZWdm aWxlLnNhdmVQUF9ESVZJU09SKTsKPiA+ID4+ICAJCUk5MTVfV1JJVEUoUENIX1BQX0NPTlRST0ws IGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MKTsKPiA+ID4+IC0JfSBlbHNlIGlmICgh SVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gPiA+PiArCX0gZWxzZSBpZiAoIUhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCUk5MTVfV1JJVEUoUFBfT05fREVMQVlTLCBkZXZfcHJp di0+cmVnZmlsZS5zYXZlUFBfT05fREVMQVlTKTsKPiA+ID4+ICAJCUk5MTVfV1JJVEUoUFBfT0ZG X0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+ID4gPj4gIAkJ STkxNV9XUklURShQUF9ESVZJU09SLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUik7 Cj4gPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gPiA+PiBpbmRleCBmOTI5YzYxLi5k ZDUwNmUzIDEwMDY0NAo+ID4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNm cy5jCj4gPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiA+ID4+ IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+ID4+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ID4g Pj4gIAo+ID4gPj4gIAkvKiBPbiBWTFYgYW5kIENIViwgcmVzaWRlbmN5IHRpbWUgaXMgaW4gQ1og dW5pdHMgcmF0aGVyIHRoYW4gMS4yOHVzICovCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJ CXVuaXRzID0gMTsKPiA+ID4+ICAJCWRpdiA9IGRldl9wcml2LT5jemNsa19mcmVxOwo+ID4gPj4g IAo+ID4gPj4gQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9t aHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+ID4gPj4gIAlpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7Cj4gPiA+PiAgCj4gPiA+PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7Cj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKSB7Cj4g PiA+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkgewo+ID4gPj4g IAkJdTMyIGZyZXE7Cj4gPiA+PiAgCQlmcmVxID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBV TklUX1JFR19HUFVfRlJFUV9TVFMpOwo+ID4gPj4gIAkJcmV0ID0gaW50ZWxfZ3B1X2ZyZXEoZGV2 X3ByaXYsIChmcmVxID4+IDgpICYgMHhmZik7Cj4gPiA+PiBAQCAtNTk4LDcgKzU5OCw3IEBAIHZv aWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gIAkJaWYg KHJldCkKPiA+ID4+ICAJCQlEUk1fRVJST1IoIlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZh aWxlZFxuIik7Cj4gPiA+PiAgCX0KPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJcmV0ID0g c3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwKPiA+ID4+ICAJCQkJ CSZtZWRpYV9yYzZfYXR0cl9ncm91cCk7Cj4gPiA+PiAgCQlpZiAocmV0KQo+ID4gPj4gQEAgLTYx OSw3ICs2MTksNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiA+ID4+ICAJfQo+ID4gPj4gIAo+ID4gPj4gIAlyZXQgPSAwOwo+ID4gPj4gLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkK PiA+ID4+ICAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5r b2JqLCB2bHZfYXR0cnMpOwo+ID4gPj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA2KQo+ID4gPj4gIAkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVzKCZkZXYtPnByaW1hcnktPmtk ZXYtPmtvYmosIGdlbjZfYXR0cnMpOwo+ID4gPj4gQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIGk5 MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICB2b2lkIGk5MTVf dGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICB7Cj4gPiA+PiAg CXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCAmZXJyb3Jf c3RhdGVfYXR0cik7Cj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ID4gPj4gIAkJc3lzZnNfcmVtb3ZlX2ZpbGVz KCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7Cj4gPiA+PiAgCWVsc2UKPiA+ ID4+ICAJCXN5c2ZzX3JlbW92ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42 X2F0dHJzKTsKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPj4gaW5kZXgg OWFhODNlNy4uNjczNGVhZSAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F1ZGlvLmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1 ZGlvLmMKPiA+ID4+IEBAIC0zNzUsNyArMzc1LDcgQEAgc3RhdGljIHZvaWQgaWxrX2F1ZGlvX2Nv ZGVjX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPiA+PiAgCWlmIChI QVNfUENIX0lCWChkZXZfcHJpdi0+ZGV2KSkgewo+ID4gPj4gIAkJYXVkX2NvbmZpZyA9IElCWF9B VURfQ0ZHKHBpcGUpOwo+ID4gPj4gIAkJYXVkX2NudHJsX3N0MiA9IElCWF9BVURfQ05UTF9TVDI7 Cj4gPiA+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiA+ID4+ICsJ fSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpIHsKPiA+ID4+ICAJCWF1 ZF9jb25maWcgPSBWTFZfQVVEX0NGRyhwaXBlKTsKPiA+ID4+ICAJCWF1ZF9jbnRybF9zdDIgPSBW TFZfQVVEX0NOVExfU1QyOwo+ID4gPj4gIAl9IGVsc2Ugewo+ID4gPj4gQEAgLTQzNSw3ICs0MzUs NyBAQCBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gPiA+PiAgCQlhdWRfY29uZmlnID0gSUJYX0FVRF9DRkcocGlwZSk7 Cj4gPiA+PiAgCQlhdWRfY250bF9zdCA9IElCWF9BVURfQ05UTF9TVChwaXBlKTsKPiA+ID4+ICAJ CWF1ZF9jbnRybF9zdDIgPSBJQlhfQVVEX0NOVExfU1QyOwo+ID4gPj4gLQl9IGVsc2UgaWYgKElT X1ZBTExFWVZJRVcoY29ubmVjdG9yLT5kZXYpKSB7Cj4gPiA+PiArCX0gZWxzZSBpZiAoSEFTX0dF TjdfTFBfRkVBVFVSRVMoY29ubmVjdG9yLT5kZXYpKSB7Cj4gPiA+PiAgCQloZG1pd19oZG1pZWRp ZCA9IFZMVl9IRE1JV19IRE1JRURJRChwaXBlKTsKPiA+ID4+ICAJCWF1ZF9jb25maWcgPSBWTFZf QVVEX0NGRyhwaXBlKTsKPiA+ID4+ICAJCWF1ZF9jbnRsX3N0ID0gVkxWX0FVRF9DTlRMX1NUKHBp cGUpOwo+ID4gPj4gQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIGludGVsX2luaXRfYXVkaW8oc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJaWYgKElTX0c0WChkZXYpKSB7Cj4gPiA+PiAg CQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19lbmFibGUgPSBnNHhfYXVkaW9fY29kZWNf ZW5hYmxlOwo+ID4gPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9 IGc0eF9hdWRpb19jb2RlY19kaXNhYmxlOwo+ID4gPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkgewo+ID4gPj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp IHsKPiA+ID4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IGlsa19h dWRpb19jb2RlY19lbmFibGU7Cj4gPiA+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2Rl Y19kaXNhYmxlID0gaWxrX2F1ZGlvX2NvZGVjX2Rpc2FibGU7Cj4gPiA+PiAgCX0gZWxzZSBpZiAo SVNfSEFTV0VMTChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiA+ID4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jCj4gPiA+PiBpbmRleCAxMjAwOGFmLi45NGQxYWIyIDEwMDY0 NAo+ID4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiA+ID4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gPiA+PiBAQCAtMzYyLDcgKzM2 Miw3IEBAIHN0YXRpYyBib29sIGludGVsX2NydF9kZXRlY3RfaG90cGx1ZyhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPj4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXYpKQo+ID4g Pj4gIAkJcmV0dXJuIGludGVsX2lyb25sYWtlX2NydF9kZXRlY3RfaG90cGx1Zyhjb25uZWN0b3Ip Owo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwlpZiAo SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4+ICAJCXJldHVybiB2YWxsZXl2aWV3X2Ny dF9kZXRlY3RfaG90cGx1Zyhjb25uZWN0b3IpOwo+ID4gPgo+ID4gPiBUaGVyZSdzIG5vIGNydCBv biBDSFYsIHNvIGRvZXNuJ3QgbmVlZCBjaGFuZ2luZy4KPiA+ID4KPiA+ID4+ICAKPiA+ID4+ICAJ LyoKPiA+ID4+IEBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gIAo+ID4gPj4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXYp KQo+ID4gPj4gIAkJYWRwYV9yZWcgPSBQQ0hfQURQQTsKPiA+ID4+IC0JZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQo+ID4gPj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYp KQo+ID4gPj4gIAkJYWRwYV9yZWcgPSBWTFZfQURQQTsKPiA+ID4+ICAJZWxzZQo+ID4gPj4gIAkJ YWRwYV9yZWcgPSBBRFBBOwo+ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ID4gPj4gaW5kZXggYWFjMTcwMTEuLjhlNTFiODMgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPj4gQEAgLTE4NSw3ICsxODUsNyBAQCBpbnQgaW50 ZWxfaHJhd2NsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gIAl1aW50MzJfdCBjbGtj Zmc7Cj4gPiA+PiAgCj4gPiA+PiAgCS8qIFRoZXJlIGlzIG5vIENMS0NGRyByZWcgaW4gVmFsbGV5 dmlldy4gVkxWIGhyYXdjbGsgaXMgMjAwIE1IeiAqLwo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQo+ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4+ICAJ CXJldHVybiAyMDA7Cj4gPiA+PiAgCj4gPiA+PiAgCWNsa2NmZyA9IEk5MTVfUkVBRChDTEtDRkcp Owo+ID4gPj4gQEAgLTIxMyw3ICsyMTMsNyBAQCBpbnQgaW50ZWxfaHJhd2NsayhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ID4gPj4gIAo+ID4gPj4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9j emNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+PiAgewo+ID4gPj4g LQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ID4gPj4gKwlpZiAoIUhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldl9wcml2KSkKPiA+ID4+ICAJCXJldHVybjsKPiA+ID4+ICAKPiA+ID4+ICAJ ZGV2X3ByaXYtPmN6Y2xrX2ZyZXEgPSB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKGRldl9wcml2LCAi Y3pjbGsiLAo+ID4gPj4gQEAgLTcxNCwxMSArNzE0LDExIEBAIHN0YXRpYyBib29sIGludGVsX1BM TF9pc192YWxpZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPj4gIAlpZiAoY2xvY2stPm0x ICA8IGxpbWl0LT5tMS5taW4gIHx8IGxpbWl0LT5tMS5tYXggIDwgY2xvY2stPm0xKQo+ID4gPj4g IAkJSU5URUxQbGxJbnZhbGlkKCJtMSBvdXQgb2YgcmFuZ2VcbiIpOwo+ID4gPj4gIAo+ID4gPj4g LQlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQlJP WFRPTihkZXYpKQo+ID4gPj4gKwlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKPiA+ID4+ICAJCWlmIChjbG9jay0+ bTEgPD0gY2xvY2stPm0yKQo+ID4gPj4gIAkJCUlOVEVMUGxsSW52YWxpZCgibTEgPD0gbTJcbiIp Owo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRP TihkZXYpKSB7Cj4gPiA+PiArCWlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJiAhSVNf QlJPWFRPTihkZXYpKSB7Cj4gPiA+PiAgCQlpZiAoY2xvY2stPnAgPCBsaW1pdC0+cC5taW4gfHwg bGltaXQtPnAubWF4IDwgY2xvY2stPnApCj4gPiA+PiAgCQkJSU5URUxQbGxJbnZhbGlkKCJwIG91 dCBvZiByYW5nZVxuIik7Cj4gPiA+PiAgCQlpZiAoY2xvY2stPm0gPCBsaW1pdC0+bS5taW4gfHwg bGltaXQtPm0ubWF4IDwgY2xvY2stPm0pCj4gPiA+PiBAQCAtMTMwMyw3ICsxMzAzLDcgQEAgdm9p ZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gPj4gIAkJICAgIEk5MTVfUkVBRChQQ0hfTFZEUykgJiBMVkRTX1BJUEVCX1NFTEVDVCkK PiA+ID4+ICAJCQlwYW5lbF9waXBlID0gUElQRV9COwo+ID4gPj4gIAkJLyogWFhYOiBlbHNlIGZp eCBmb3IgZURQICovCj4gPiA+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4g PiA+PiArCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJ LyogcHJlc3VtYWJseSB3cml0ZSBsb2NrIGRlcGVuZHMgb24gcGlwZSwgbm90IHBvcnQgc2VsZWN0 ICovCj4gPiA+PiAgCQlwcF9yZWcgPSBWTFZfUElQRV9QUF9DT05UUk9MKHBpcGUpOwo+ID4gPj4g IAkJcGFuZWxfcGlwZSA9IHBpcGU7Cj4gPiA+PiBAQCAtMTQyMSw3ICsxNDIxLDcgQEAgc3RhdGlj IHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gPj4gIAkJCSAgICAgInBsYW5lICVkIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91 bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwKPiA+ID4+ICAJCQkg ICAgIHNwcml0ZSwgcGlwZV9uYW1lKHBpcGUpKTsKPiA+ID4+ICAJCX0KPiA+ID4+IC0JfSBlbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKSB7Cj4gPiA+PiAgCQlmb3JfZWFjaF9zcHJpdGUoZGV2X3ByaXYsIHBp cGUsIHNwcml0ZSkgewo+ID4gPj4gIAkJCXUzMiB2YWwgPSBJOTE1X1JFQUQoU1BDTlRSKHBpcGUs IHNwcml0ZSkpOwo+ID4gPj4gIAkJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBTUF9FTkFCTEUsCj4g PiA+PiBAQCAtMTYwNSw3ICsxNjA1LDcgQEAgc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9wbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+PiAgCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9w cml2LCBjcnRjLT5waXBlKTsKPiA+ID4+ICAKPiA+ID4+ICAJLyogTm8gcmVhbGx5LCBub3QgZm9y IElMSysgKi8KPiA+ID4+IC0JQlVHX09OKCFJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKTsK PiA+ID4+ICsJQlVHX09OKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSk7Cj4g PiA+Cj4gPiA+IFRoaXMgaXMgVkxWIHNwZWNpZmljLCBzbyBubyBuZWVkIHRvIGNoYW5nZS4gQ291 bGQganVzdCBraWxsIHRoZXNlCj4gPiA+IEJVR19PTnMgdGhvdWdoLi4uCj4gPiA+Cj4gPiA+PiAg Cj4gPiA+PiAgCS8qIFBMTCBpcyBwcm90ZWN0ZWQgYnkgcGFuZWwsIG1ha2Ugc3VyZSB3ZSBjYW4g d3JpdGUgaXQgKi8KPiA+ID4+ICAJaWYgKElTX01PQklMRShkZXZfcHJpdi0+ZGV2KSkKPiA+ID4+ IEBAIC0yMzE3LDcgKzIzMTcsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2xpbmVhcl9h bGlnbm1lbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPj4gIAlpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+ID4gPj4gIAkJcmV0dXJuIDI1NiAqIDEw MjQ7Cj4gPiA+PiAgCWVsc2UgaWYgKElTX0JST0FEV0FURVIoZGV2X3ByaXYpIHx8IElTX0NSRVNU TElORShkZXZfcHJpdikgfHwKPiA+ID4+IC0JCSBJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiA+ ID4+ICsJCSBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikpCj4gPiA+PiAgCQlyZXR1cm4g MTI4ICogMTAyNDsKPiA+ID4+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+ PSA0KQo+ID4gPj4gIAkJcmV0dXJuIDQgKiAxMDI0Owo+ID4gPj4gQEAgLTU0NDgsNyArNTQ0OCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ID4gPj4gIAkgKiBCU3BlYyBlcnJvbmVvdXNseSBjbGFpbXMgd2Ugc2hvdWxkIGFpbSBmb3Ig NE1IeiwgYnV0Cj4gPiA+PiAgCSAqIGluIGZhY3QgMU1IeiBpcyB0aGUgY29ycmVjdCBmcmVxdWVu Y3kuCj4gPiA+PiAgCSAqLwo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gPiA+ PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7Cj4gPiA+PiAgCQkvKgo+ID4gPj4g IAkJICogUHJvZ3JhbSB0aGUgZ21idXNfZnJlcSBiYXNlZCBvbiB0aGUgY2RjbGsgZnJlcXVlbmN5 Lgo+ID4gPj4gIAkJICogQlNwZWMgZXJyb25lb3VzbHkgY2xhaW1zIHdlIHNob3VsZCBhaW0gZm9y IDRNSHosIGJ1dAo+ID4gPj4gQEAgLTcxNjksNyArNzE2OSw3IEBAIHN0YXRpYyBpbnQgaTl4eF9n ZXRfcmVmY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4g Pj4gIAo+ID4gPj4gIAlXQVJOX09OKCFjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiA+ID4+ICAK PiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpIHsKPiA+ ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgfHwgSVNfQlJPWFRPTihkZXYpKSB7 Cj4gPiA+PiAgCQlyZWZjbGsgPSAxMDAwMDA7Cj4gPiA+PiAgCX0gZWxzZSBpZiAoaW50ZWxfcGlw ZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfTFZEUykgJiYKPiA+ID4+ ICAJICAgIGludGVsX3BhbmVsX3VzZV9zc2MoZGV2X3ByaXYpICYmIG51bV9jb25uZWN0b3JzIDwg Mikgewo+ID4gPj4gQEAgLTc4NjgsNyArNzg2OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3Bp cGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ID4gPj4gIAkJcGlwZWNvbmYg fD0gUElQRUNPTkZfRE9VQkxFX1dJREU7Cj4gPiA+PiAgCj4gPiA+PiAgCS8qIG9ubHkgZzR4IGFu ZCBsYXRlciBoYXZlIGZhbmN5IGJwYy9kaXRoZXIgY29udHJvbHMgKi8KPiA+ID4+IC0JaWYgKElT X0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwlpZiAoSVNfRzRYKGRl dikgfHwgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJLyogQnNwZWMgY2xh aW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmluZyBmb3IgMzBicHAgcGlwZXMuICovCj4gPiA+ PiAgCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRoZXIgJiYgaW50ZWxfY3J0Yy0+Y29uZmln LT5waXBlX2JwcCAhPSAzMCkKPiA+ID4+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ESVRIRVJf RU4gfAo+ID4gPj4gQEAgLTc5MDgsNyArNzkwOCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3Bp cGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ID4gPj4gIAl9IGVsc2UKPiA+ ID4+ICAJCXBpcGVjb25mIHw9IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+ID4gPj4gIAo+ID4gPj4g LQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9j b2xvcl9yYW5nZSkKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYgaW50 ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ID4gPj4gIAkJcGlwZWNvbmYg fD0gUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUOwo+ID4gPj4gIAo+ID4gPj4gIAlJOTE1X1dS SVRFKFBJUEVDT05GKGludGVsX2NydGMtPnBpcGUpLCBwaXBlY29uZik7Cj4gPiA+PiBAQCAtODE1 NSw3ICs4MTU1LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gPiA+PiAgCWlmICghKHRtcCAmIFBJUEVDT05GX0VOQUJMRSkpCj4g PiA+PiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJU19HNFgoZGV2KSB8 fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJaWYgKElTX0c0WChkZXYpIHx8IEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCXN3aXRjaCAodG1wICYgUElQRUNPTkZf QlBDX01BU0spIHsKPiA+ID4+ICAJCWNhc2UgUElQRUNPTkZfNkJQQzoKPiA+ID4+ICAJCQlwaXBl X2NvbmZpZy0+cGlwZV9icHAgPSAxODsKPiA+ID4+IEBAIC04MTcxLDcgKzgxNzEsNyBAQCBzdGF0 aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ ID4+ICAJCX0KPiA+ID4+ICAJfQo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpICYmICh0bXAgJiBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1QpKQo+ID4gPj4gKwlpZiAo SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJiAodG1wICYgUElQRUNPTkZfQ09MT1JfUkFOR0Vf U0VMRUNUKSkKPiA+ID4+ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1 ZTsKPiA+ID4+ICAKPiA+ID4+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKPiA+ID4+ IEBAIC04MTk5LDcgKzgxOTksNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4+ICAJCXBpcGVfY29uZmlnLT5waXhlbF9tdWx0 aXBsaWVyID0gMTsKPiA+ID4+ICAJfQo+ID4gPj4gIAlwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0 ZS5kcGxsID0gSTkxNV9SRUFEKERQTEwoY3J0Yy0+cGlwZSkpOwo+ID4gPj4gLQlpZiAoIUlTX1ZB TExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp IHsKPiA+ID4+ICAJCS8qCj4gPiA+PiAgCQkgKiBEUExMX0RWT18yWF9NT0RFIG11c3QgYmUgZW5h YmxlZCBmb3IgYm90aCBEUExMcwo+ID4gPj4gIAkJICogb24gODMwLiBGaWx0ZXIgaXQgb3V0IGhl cmUgc28gdGhhdCB3ZSBkb24ndAo+ID4gPj4gQEAgLTExNTE2LDcgKzExNTE2LDcgQEAgc3RhdGlj IGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+PiAg CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQo+ID4gPj4gIAkJ d29yay0+ZmxpcF9jb3VudCA9IEk5MTVfUkVBRChQSVBFX0ZMSVBDT1VOVF9HNFgocGlwZSkpICsg MTsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwlp ZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJcmluZyA9ICZkZXZfcHJp di0+cmluZ1tCQ1NdOwo+ID4gPj4gIAkJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gaW50ZWxfZmJf b2JqKHdvcmstPm9sZF9mYiktPnRpbGluZ19tb2RlKQo+ID4gPj4gIAkJCS8qIHZsdjogRElTUExB WV9GTElQIGZhaWxzIHRvIGNoYW5nZSB0aWxpbmcgKi8KPiA+ID4+IEBAIC0xMTk5Nyw3ICsxMTk5 Nyw3IEBAIGNvbXB1dGVfYmFzZWxpbmVfcGlwZV9icHAoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gPiA+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4g PiA+PiAgCWludCBicHAsIGk7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmICgoSVNfRzRYKGRldikgfHwg SVNfVkFMTEVZVklFVyhkZXYpKSkKPiA+ID4+ICsJaWYgKChJU19HNFgoZGV2KSB8fCBIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKSkKPiA+ID4+ICAJCWJwcCA9IDEwKjM7Cj4gPiA+PiAgCWVsc2Ug aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCj4gPiA+PiAgCQlicHAgPSAxMiozOwo+ID4g Pj4gQEAgLTEyNjA3LDcgKzEyNjA3LDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShwaXhlbF9tdWx0 aXBsaWVyKTsKPiA+ID4+ICAJUElQRV9DT05GX0NIRUNLX0koaGFzX2hkbWlfc2luayk7Cj4gPiA+ PiAgCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmICFJU19IQVNXRUxMKGRldikpIHx8 Cj4gPiA+PiAtCSAgICBJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCSAgICBIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKQo+ID4gPj4gIAkJUElQRV9DT05GX0NIRUNLX0kobGltaXRlZF9jb2xv cl9yYW5nZSk7Cj4gPiA+PiAgCVBJUEVfQ09ORl9DSEVDS19JKGhhc19pbmZvZnJhbWUpOwo+ID4g Pj4gIAo+ID4gPj4gQEAgLTE0MjU2LDcgKzE0MjU2LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0 X3ByZXNlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJaWYgKElTX0NIRVJSWVZJ RVcoZGV2KSkKPiA+ID4+ICAJCXJldHVybiBmYWxzZTsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElT X1ZBTExFWVZJRVcoZGV2KSAmJiAhZGV2X3ByaXYtPnZidC5pbnRfY3J0X3N1cHBvcnQpCj4gPiA+ PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmICFkZXZfcHJpdi0+dmJ0LmludF9j cnRfc3VwcG9ydCkKPiA+ID4+ICAJCXJldHVybiBmYWxzZTsKPiA+ID4KPiA+ID4gQWdhaW4sIG5v IGNydCBvbiBDSFYsIHNvIGRvZXNuJ3QgbmVlZCBjaGFuZ2luZy4KPiA+ID4KPiA+ID4+ICAKPiA+ ID4+ICAJcmV0dXJuIHRydWU7Cj4gPiA+PiBAQCAtMTQzNDEsNyArMTQzNDEsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+PiAg Cj4gPiA+PiAgCQlpZiAoSTkxNV9SRUFEKFBDSF9EUF9EKSAmIERQX0RFVEVDVEVEKQo+ID4gPj4g IAkJCWludGVsX2RwX2luaXQoZGV2LCBQQ0hfRFBfRCwgUE9SVF9EKTsKPiA+ID4+IC0JfSBlbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKSB7Cj4gPiA+PiAgCQkvKgo+ID4gPj4gIAkJICogVGhlIERQX0RFVEVD VEVEIGJpdCBpcyB0aGUgbGF0Y2hlZCBzdGF0ZSBvZiB0aGUgRERDCj4gPiA+PiAgCQkgKiBTREEg cGluIGF0IGJvb3QuIEhvd2V2ZXIgc2luY2UgZURQIGRvZXNuJ3QgcmVxdWlyZSBEREMKPiA+ID4+ IEBAIC0xNDQ5MCw3ICsxNDQ5MCw3IEBAIHUzMiBpbnRlbF9mYl9waXRjaF9saW1pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1aW50NjRfdCBmYl9tb2RpZmllciwKPiA+ID4+ICAJCSAqICBwaXhl bHMgYW5kIDMySyBieXRlcy4iCj4gPiA+PiAgCQkgKi8KPiA+ID4+ICAJCSByZXR1cm4gbWluKDgx OTIqZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGl4ZWxfZm9ybWF0LCAwKSwgMzI3NjgpOwo+ID4gPj4g LQl9IGVsc2UgaWYgKGdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJ fSBlbHNlIGlmIChnZW4gPj0gNSAmJiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4g Pj4gIAkJcmV0dXJuIDMyKjEwMjQ7Cj4gPiA+PiAgCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKPiA+ ID4+ICAJCWlmIChmYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiA+ID4+ IEBAIC0xNDU5NCw3ICsxNDU5NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPj4gIAkJfQo+ID4gPj4gIAkJYnJlYWs7Cj4g PiA+PiAgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiA+ID4+IC0JCWlmICghSVNfVkFMTEVZ VklFVyhkZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkgewo+ID4gPj4gKwkJaWYgKCFI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkgewo+ ID4gPj4gIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiA+ ID4+ICAJCQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsK PiA+ID4+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4+IEBAIC0xNDYxMCw3ICsxNDYxMCw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4gPj4gIAkJfQo+ID4gPj4gIAkJYnJlYWs7Cj4gPiA+PiAgCWNhc2UgRFJNX0ZPUk1BVF9B QkdSMjEwMTAxMDoKPiA+ID4+IC0JCWlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gPiA+PiAr CQlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCQlEUk1fREVCVUco InVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gPiA+PiAgCQkJCSAgZHJtX2dldF9m b3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gPiA+PiAgCQkJcmV0dXJuIC1F SU5WQUw7Cj4gPiA+PiBAQCAtMTQ3MzgsNyArMTQ3MzgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9p bml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJCWRldl9wcml2LT5k aXNwbGF5LmNydGNfZGlzYWJsZSA9IGlyb25sYWtlX2NydGNfZGlzYWJsZTsKPiA+ID4+ICAJCWRl dl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lID0KPiA+ID4+ICAJCQlpcm9ubGFr ZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKPiA+ID4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldikpIHsKPiA+ID4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7 Cj4gPiA+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcgPSBpOXh4X2dldF9w aXBlX2NvbmZpZzsKPiA+ID4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5l X2NvbmZpZyA9Cj4gPiA+PiAgCQkJaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWc7Cj4gPiA+ PiBAQCAtMTQ3NzEsNyArMTQ3NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXko c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYp KQo+ID4gPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQgPQo+ ID4gPj4gIAkJCWhhc3dlbGxfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7Cj4gPiA+PiAtCWVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiA+ID4+ICsJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkKPiA+ID4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2Nr X3NwZWVkID0KPiA+ID4+ICAJCQl2YWxsZXl2aWV3X2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVkOwo+ ID4gPj4gIAllbHNlIGlmIChJU19HRU41KGRldikpCj4gPiA+PiBAQCAtMTQ4MzIsNyArMTQ4MzIs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiA+ID4+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQo+ID4g Pj4gIAkJCQlicm9hZHdlbGxfbW9kZXNldF9jYWxjX2NkY2xrOwo+ID4gPj4gIAkJfQo+ID4gPj4g LQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwl9IGVsc2UgaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1v ZGVzZXRfY29tbWl0X2NkY2xrID0KPiA+ID4+ICAJCQl2YWxsZXl2aWV3X21vZGVzZXRfY29tbWl0 X2NkY2xrOwo+ID4gPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0K PiA+ID4+IEBAIC0xNTYwNiw3ICsxNTYwNiw3IEBAIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4+ICAJCXBsbC0+b24gPSBmYWxzZTsKPiA+ ID4+ICAJfQo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4+ICAJCXZsdl93bV9nZXRfaHdf c3RhdGUoZGV2KTsKPiA+ID4+ICAJZWxzZSBpZiAoSVNfR0VOOShkZXYpKQo+ID4gPj4gIAkJc2ts X3dtX2dldF9od19zdGF0ZShkZXYpOwo+ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ PiBpbmRleCBmMmJmY2EwLi5hYzg0ZjgzIDEwMDY0NAo+ID4gPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ID4gPj4gQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIHZsdl9wb3dlcl9zZXF1ZW5j ZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiA+ID4+ICAJc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXI7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChXQVJOX09OKCFJU19WQUxM RVlWSUVXKGRldikpKQo+ID4gPj4gKwlpZiAoV0FSTl9PTighSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSkpCj4gPiA+PiAgCQlyZXR1cm47Cj4gPiA+PiAgCj4gPiA+PiAgCS8qCj4gPiA+PiBAQCAt NTgyLDcgKzU4Miw3IEBAIHN0YXRpYyBpbnQgZWRwX25vdGlmeV9oYW5kbGVyKHN0cnVjdCBub3Rp Zmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBjb2RlLAo+ID4gPj4gIAo+ID4gPj4gIAlw cHNfbG9jayhpbnRlbF9kcCk7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJ CWVudW0gcGlwZSBwaXBlID0gdmx2X3Bvd2VyX3NlcXVlbmNlcl9waXBlKGludGVsX2RwKTsKPiA+ ID4+ICAJCWk5MTVfcmVnX3QgcHBfY3RybF9yZWcsIHBwX2Rpdl9yZWc7Cj4gPiA+PiAgCQl1MzIg cHBfZGl2Owo+ID4gPj4gQEAgLTYxMCw3ICs2MTAsNyBAQCBzdGF0aWMgYm9vbCBlZHBfaGF2ZV9w YW5lbF9wb3dlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPj4gIAo+ID4gPj4gIAls b2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiA+ID4+ICAKPiA+ID4+ IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJgo+ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSAmJgo+ID4gPj4gIAkgICAgaW50ZWxfZHAtPnBwc19waXBlID09IElOVkFMSURf UElQRSkKPiA+ID4+ICAJCXJldHVybiBmYWxzZTsKPiA+ID4+ICAKPiA+ID4+IEBAIC02MjQsNyAr NjI0LDcgQEAgc3RhdGljIGJvb2wgZWRwX2hhdmVfcGFuZWxfdmRkKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCj4gPiA+PiAgCj4gPiA+PiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2 LT5wcHNfbXV0ZXgpOwo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYm Cj4gPiA+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmCj4gPiA+PiAgCSAgICBp bnRlbF9kcC0+cHBzX3BpcGUgPT0gSU5WQUxJRF9QSVBFKQo+ID4gPj4gIAkJcmV0dXJuIGZhbHNl Owo+ID4gPj4gIAo+ID4gPj4gQEAgLTE3MjIsNyArMTcyMiw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPiA+PiAgCQkJdHJh bnNfZHAgJj0gflRSQU5TX0RQX0VOSF9GUkFNSU5HOwo+ID4gPj4gIAkJSTkxNV9XUklURShUUkFO U19EUF9DVEwoY3J0Yy0+cGlwZSksIHRyYW5zX2RwKTsKPiA+ID4+ICAJfSBlbHNlIHsKPiA+ID4+ IC0JCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYKPiA+ ID4+ICsJCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpICYmCj4gPiA+PiAgCQkgICAgY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ ID4gPj4gIAkJCWludGVsX2RwLT5EUCB8PSBEUF9DT0xPUl9SQU5HRV8xNl8yMzU7Cj4gPiA+PiAg Cj4gPiA+PiBAQCAtMjQxNyw3ICsyNDE3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4+ICAKPiA+ID4+ICAJcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiA+ID4+ICAKPiA+ ID4+IC0JaWYgKCFIQVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgo+ ID4gPj4gKwlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2KSAmJiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMo ZGV2KSAmJgo+ID4gPj4gIAkgICAgdG1wICYgRFBfQ09MT1JfUkFOR0VfMTZfMjM1KQo+ID4gPj4g IAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+ID4gPj4gIAo+ID4g Pj4gQEAgLTI2OTQsNyArMjY5NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+ID4+ICAKPiA+ID4+ICAJcHBzX2xvY2soaW50 ZWxfZHApOwo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4+ICAJCXZsdl9pbml0X3BhbmVs X3Bvd2VyX3NlcXVlbmNlcihpbnRlbF9kcCk7Cj4gPiA+PiAgCj4gPiA+PiAgCS8qCj4gPiA+PiBA QCAtMjcyOCw3ICsyNzI4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gPj4gIAo+ID4gPj4gIAlwcHNfdW5sb2NrKGludGVs X2RwKTsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4g KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJdW5zaWduZWQgaW50 IGxhbmVfbWFzayA9IDB4MDsKPiA+ID4+ICAKPiA+ID4+ICAJCWlmIChJU19DSEVSUllWSUVXKGRl dikpCj4gPiA+PiBAQCAtMzIxOCw3ICszMjE4LDcgQEAgaW50ZWxfZHBfdm9sdGFnZV9tYXgoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4+ICAJCWlmIChkZXZfcHJpdi0+ZWRwX2xvd192 c3dpbmcgJiYgcG9ydCA9PSBQT1JUX0EpCj4gPiA+PiAgCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTEVWRUxfMzsKPiA+ID4+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H X0xFVkVMXzI7Cj4gPiA+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4g Kwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gPiA+PiAgCQlyZXR1cm4g RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOwo+ID4gPj4gIAllbHNlIGlmIChJU19HRU43 KGRldikgJiYgcG9ydCA9PSBQT1JUX0EpCj4gPiA+PiAgCQlyZXR1cm4gRFBfVFJBSU5fVk9MVEFH RV9TV0lOR19MRVZFTF8yOwo+ID4gPj4gQEAgLTMyNTksNyArMzI1OSw3IEBAIGludGVsX2RwX3By ZV9lbXBoYXNpc19tYXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDhfdCB2b2x0YWdl X3N3aW5nKQo+ID4gPj4gIAkJZGVmYXVsdDoKPiA+ID4+ICAJCQlyZXR1cm4gRFBfVFJBSU5fUFJF X0VNUEhfTEVWRUxfMDsKPiA+ID4+ICAJCX0KPiA+ID4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPiA+ID4+ICsJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYp KSB7Cj4gPiA+PiAgCQlzd2l0Y2ggKHZvbHRhZ2Vfc3dpbmcgJiBEUF9UUkFJTl9WT0xUQUdFX1NX SU5HX01BU0spIHsKPiA+ID4+ICAJCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8w Ogo+ID4gPj4gIAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+ID4gPj4gQEAg LTQ1MzksNyArNDUzOSw3IEBAIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+PiAgCQlyZXR1cm4gY3B0X2RpZ2l0 YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+ID4gPj4gIAllbHNlIGlmIChJU19C Uk9YVE9OKGRldl9wcml2KSkKPiA+ID4+ICAJCXJldHVybiBieHRfZGlnaXRhbF9wb3J0X2Nvbm5l Y3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gPiA+PiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKQo+ID4gPj4gKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikp Cj4gPiA+PiAgCQlyZXR1cm4gdmx2X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBv cnQpOwo+ID4gPj4gIAllbHNlCj4gPiA+PiAgCQlyZXR1cm4gZzR4X2RpZ2l0YWxfcG9ydF9jb25u ZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+ID4gPj4gQEAgLTQ5MzMsNyArNDkzMyw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQo+ID4gPj4gIAkgKiBSZWFkIG91dCB0aGUgY3VycmVudCBwb3dlciBzZXF1ZW5jZXIgYXNzaWdu bWVudCwKPiA+ID4+ICAJICogaW4gY2FzZSB0aGUgQklPUyBkaWQgc29tZXRoaW5nIHdpdGggaXQu Cj4gPiA+PiAgCSAqLwo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVyLT5kZXYpKQo+ ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZW5jb2Rlci0+ZGV2KSkKPiA+ID4+ICAJ CXZsdl9pbml0aWFsX3Bvd2VyX3NlcXVlbmNlcl9zZXR1cChpbnRlbF9kcCk7Cj4gPiA+PiAgCj4g PiA+PiAgCWludGVsX2VkcF9wYW5lbF92ZGRfc2FuaXRpemUoaW50ZWxfZHApOwo+ID4gPj4gQEAg LTUyOTMsNyArNTI5Myw3IEBAIGludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyX3Jl Z2lzdGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPj4gIAo+ID4gPj4gIAkvKiBIYXN3 ZWxsIGRvZXNuJ3QgaGF2ZSBhbnkgcG9ydCBzZWxlY3Rpb24gYml0cyBmb3IgdGhlIHBhbmVsCj4g PiA+PiAgCSAqIHBvd2VyIHNlcXVlbmNlciBhbnkgbW9yZS4gKi8KPiA+ID4+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkg ewo+ID4gPj4gIAkJcG9ydF9zZWwgPSBQQU5FTF9QT1JUX1NFTEVDVF9WTFYocG9ydCk7Cj4gPiA+ PiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2KSB8fCBIQVNfUENIX0NQVChkZXYpKSB7Cj4g PiA+PiAgCQlpZiAocG9ydCA9PSBQT1JUX0EpCj4gPiA+PiBAQCAtNTQwNSwxMiArNTQwNSwxMiBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQo+ID4gPj4gIAo+ID4gPj4gIAkJdmFsID0gSTkxNV9SRUFE KHJlZyk7Cj4gPiA+PiAgCQlpZiAoaW5kZXggPiBEUlJTX0hJR0hfUlIpIHsKPiA+ID4+IC0JCQlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwkJCWlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKQo+ID4gPj4gIAkJCQl2YWwgfD0gUElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIX1ZM VjsKPiA+ID4+ICAJCQllbHNlCj4gPiA+PiAgCQkJCXZhbCB8PSBQSVBFQ09ORl9FRFBfUlJfTU9E RV9TV0lUQ0g7Cj4gPiA+PiAgCQl9IGVsc2Ugewo+ID4gPj4gLQkJCWlmIChJU19WQUxMRVlWSUVX KGRldikpCj4gPiA+PiArCQkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gPiA+PiAg CQkJCXZhbCAmPSB+UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIX1ZMVjsKPiA+ID4+ICAJCQll bHNlCj4gPiA+PiAgCQkJCXZhbCAmPSB+UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOwo+ID4g Pj4gQEAgLTU3NzcsNyArNTc3Nyw3IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5l Y3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPj4gIAl9Cj4gPiA+PiAgCW11dGV4 X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpIHsKPiA+ID4+ICAJCWludGVsX2RwLT5lZHBfbm90aWZpZXIubm90aWZpZXJfY2FsbCA9IGVk cF9ub3RpZnlfaGFuZGxlcjsKPiA+ID4+ICAJCXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmllcigmaW50 ZWxfZHAtPmVkcF9ub3RpZmllcik7Cj4gPiA+PiAgCj4gPiA+PiBAQCAtNTgyNSw3ICs1ODI1LDcg QEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCj4gPiA+PiAgCS8qIGludGVsX2RwIHZmdW5jcyAqLwo+ID4gPj4gIAlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiA+ID4+ICAJCWludGVsX2RwLT5nZXRfYXV4X2Ns b2NrX2RpdmlkZXIgPSBza2xfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+ID4gPj4gLQllbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpCj4gPiA+PiAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gdmx2 X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPiA+ID4+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYp IHx8IElTX0JST0FEV0VMTChkZXYpKQo+ID4gPj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tf ZGl2aWRlciA9IGhzd19nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4gPiA+PiBAQCAtNTg2MCw3ICs1 ODYwLDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQsCj4gPiA+PiAgCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxf T1VUUFVUX0VEUDsKPiA+ID4+ICAKPiA+ID4+ICAJLyogZURQIG9ubHkgb24gcG9ydCBCIGFuZC9v ciBDIG9uIHZsdi9jaHYgKi8KPiA+ID4+IC0JaWYgKFdBUk5fT04oSVNfVkFMTEVZVklFVyhkZXYp ICYmIGlzX2VkcChpbnRlbF9kcCkgJiYKPiA+ID4+ICsJaWYgKFdBUk5fT04oSEFTX0dFTjdfTFBf RkVBVFVSRVMoZGV2KSAmJiBpc19lZHAoaW50ZWxfZHApICYmCj4gPiA+PiAgCQkgICAgcG9ydCAh PSBQT1JUX0IgJiYgcG9ydCAhPSBQT1JUX0MpKQo+ID4gPj4gIAkJcmV0dXJuIGZhbHNlOwo+ID4g Pj4gIAo+ID4gPj4gQEAgLTU5MTIsNyArNTkxMiw3IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gPj4gIAlpZiAo aXNfZWRwKGludGVsX2RwKSkgewo+ID4gPj4gIAkJcHBzX2xvY2soaW50ZWxfZHApOwo+ID4gPj4g IAkJaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl90aW1lc3RhbXBzKGludGVsX2RwKTsKPiA+ID4+ IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCQlpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkKPiA+ID4+ICAJCQl2bHZfaW5pdGlhbF9wb3dlcl9zZXF1ZW5jZXJfc2V0dXAo aW50ZWxfZHApOwo+ID4gPj4gIAkJZWxzZQo+ID4gPj4gIAkJCWludGVsX2RwX2luaXRfcGFuZWxf cG93ZXJfc2VxdWVuY2VyKGRldiwgaW50ZWxfZHApOwo+ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpLmMKPiA+ID4+IGluZGV4IDIzMDk1N2YuLjk1NzA3NjEgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiA+ID4+IEBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK PiA+ID4+ICB7Cj4gPiA+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNl LmRldjsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiA+ID4+ICsJ aWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gPiA+PiAgCQl2bHZfZHNpX2RldmljZV9y ZWFkeShlbmNvZGVyKTsKPiA+ID4+ICAJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+ID4gPj4g IAkJYnh0X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gPiA+PiBAQCAtNDg3LDcgKzQ4Nyw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQo+ID4gPj4gIAo+ID4gPj4gIAltc2xlZXAoaW50ZWxfZHNpLT5wYW5lbF9vbl9k ZWxheSk7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCS8qCj4gPiA+PiAg CQkgKiBEaXNhYmxlIERQT3VuaXQgY2xvY2sgZ2F0aW5nLCBjYW4gc3RhbGwgcGlwZQo+ID4gPj4g IAkJICogYW5kIHdlIG5lZWQgRFBMTCBSRUZBIGFsd2F5cyBlbmFibGVkCj4gPiA+PiBAQCAtNjg0 LDggKzY4NCw3IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+PiAgCQkgKiBFbmFibGUgYml0IGRvZXMgbm90IGdl dCBzZXQuIFRvIGNoZWNrIHdoZXRoZXIgRFNJIFBvcnQgQwo+ID4gPj4gIAkJICogd2FzIGVuYWJs ZWQgaW4gQklPUywgY2hlY2sgdGhlIFBpcGUgQiBlbmFibGUgYml0Cj4gPiA+PiAgCQkgKi8KPiA+ ID4+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgo+ ID4gPj4gLQkJICAgIChwb3J0ID09IFBPUlRfQykpCj4gPiA+PiArCQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpICYmIChwb3J0ID09IFBPUlRfQykpCj4gPiA+PiAgCQkJZHBpX2VuYWJsZWQgPSBJOTE1 X1JFQUQoUElQRUNPTkYoUElQRV9CKSkgJgo+ID4gPj4gIAkJCQkJCQlQSVBFQ09ORl9FTkFCTEU7 Cj4gPiA+PiAgCj4gPiA+PiBAQCAtNzE2LDcgKzcxNSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPj4gIAo+ID4g Pj4gIAlpZiAoSVNfQlJPWFRPTihlbmNvZGVyLT5iYXNlLmRldikpCj4gPiA+PiAgCQlwY2xrID0g Ynh0X2dldF9kc2lfcGNsayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwo+ID4gPj4g LQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmJhc2UuZGV2KSkKPiA+ID4+ICsJZWxz ZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZW5jb2Rlci0+YmFzZS5kZXYpKQo+ID4gPj4gIAkJ cGNsayA9IHZsdl9nZXRfZHNpX3BjbGsoZW5jb2RlciwgcGlwZV9jb25maWctPnBpcGVfYnBwKTsK PiA+ID4+ICAKPiA+ID4+ICAJaWYgKCFwY2xrKQo+ID4gPj4gQEAgLTg2OSw3ICs4NjgsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlcikKPiA+ID4+ICAJfQo+ID4gPj4gIAo+ID4gPj4gIAlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gPiA+PiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KSB7Cj4gPiA+PiArCQlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewo+ID4gPj4gIAkJ CS8qCj4gPiA+PiAgCQkJICogZXNjYXBlIGNsb2NrIGRpdmlkZXIsIDIwTUh6LCBzaGFyZWQgZm9y IEEgYW5kIEMuCj4gPiA+PiAgCQkJICogZGV2aWNlIHJlYWR5IG11c3QgYmUgb2ZmIHdoZW4gZG9p bmcgdGhpcyEgdHhjbGtlc2M/Cj4gPiA+PiBAQCAtMTEyOSw3ICsxMTI4LDcgQEAgdm9pZCBpbnRl bF9kc2lfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gIAlpZiAoIWRldl9wcml2 LT52YnQuaGFzX21pcGkpCj4gPiA+PiAgCQlyZXR1cm47Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpIHsKPiA+ID4+ICAJCWRldl9wcml2LT5taXBpX21taW9fYmFzZSA9IFZMVl9NSVBJX0JBU0U7 Cj4gPiA+PiAgCX0gZWxzZSB7Cj4gPiA+PiAgCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIE1pcGkg ZGV2aWNlIHRvIHJlZyBiYXNlIik7Cj4gPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpX3BsbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3Bs bC5jCj4gPiA+PiBpbmRleCBjYjNjZjM5Li5kY2U5ZjkzIDEwMDY0NAo+ID4gPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4gPiA+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKPiA+ID4+IEBAIC01NjEsNyArNTYxLDcgQEAgdm9p ZCBpbnRlbF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+ ID4+ICB7Cj4gPiA+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRl djsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiA+ID4+ICsJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gPiA+PiAgCQl2bHZfZW5hYmxlX2RzaV9wbGwo ZW5jb2Rlcik7Cj4gPiA+PiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkKPiA+ID4+ICAJCWJ4 dF9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKPiA+ID4+IEBAIC01NzEsNyArNTcxLDcgQEAgdm9p ZCBpbnRlbF9kaXNhYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4g PiA+PiAgewo+ID4gPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5k ZXY7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWlm IChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ID4gPj4gIAkJdmx2X2Rpc2FibGVfZHNpX3Bs bChlbmNvZGVyKTsKPiA+ID4+ICAJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+ID4gPj4gIAkJ Ynh0X2Rpc2FibGVfZHNpX3BsbChlbmNvZGVyKTsKPiA+ID4+IEBAIC01OTksNiArNTk5LDYgQEAg dm9pZCBpbnRlbF9kc2lfcmVzZXRfY2xvY2tzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LCBlbnVtIHBvcnQgcG9ydCkKPiA+ID4+ICAKPiA+ID4+ICAJaWYgKElTX0JST1hUT04oZGV2KSkK PiA+ID4+ICAJCWJ4dF9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQpOwo+ID4gPj4gLQll bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gPiA+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldikpCj4gPiA+PiAgCQl2bHZfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNvZGVyLCBw b3J0KTsKPiA+ID4+ICB9Cj4gPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiA+PiBp bmRleCBjMzk3OGJhLi44MGM0ZDhlIDEwMDY0NAo+ID4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jCj4gPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMKPiA+ID4+IEBAIC02MzgsNyArNjM4LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfaGRt aV9zZXRfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gPiA+PiAg Cj4gPiA+PiAgCWlmIChIQVNfRERJKGRldl9wcml2KSkKPiA+ID4+ICAJCXJlZyA9IEhTV19UVklE RU9fRElQX0dDUChjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPiA+ID4+IC0JZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gPiA+PiArCWVsc2UgaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldl9wcml2KSkKPiA+ID4+ICAJCXJlZyA9IFZMVl9UVklERU9fRElQX0dDUChj cnRjLT5waXBlKTsKPiA+ID4+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdi0+ZGV2 KSkKPiA+ID4+ICAJCXJlZyA9IFRWSURFT19ESVBfR0NQKGNydGMtPnBpcGUpOwo+ID4gPj4gQEAg LTIxMDAsNyArMjEwMCw3IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ID4+ICAJCUJVRygpOwo+ID4g Pj4gIAl9Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCWludGVsX2hkbWkt PndyaXRlX2luZm9mcmFtZSA9IHZsdl93cml0ZV9pbmZvZnJhbWU7Cj4gPiA+PiAgCQlpbnRlbF9o ZG1pLT5zZXRfaW5mb2ZyYW1lcyA9IHZsdl9zZXRfaW5mb2ZyYW1lczsKPiA+ID4+ICAJCWludGVs X2hkbWktPmluZm9mcmFtZV9lbmFibGVkID0gdmx2X2luZm9mcmFtZV9lbmFibGVkOwo+ID4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYwo+ID4gPj4gaW5kZXggYjE3Nzg1Ny4uZTdk ZGYzNCAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBs dWcuYwo+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCj4g PiA+PiBAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+PiAgCQkJICogaG90cGx1ZyBiaXRzIGl0c2VsZi4gU28g b25seSBXQVJOIGFib3V0IHVuZXhwZWN0ZWQKPiA+ID4+ICAJCQkgKiBpbnRlcnJ1cHRzIG9uIHNh bmVyIHBsYXRmb3Jtcy4KPiA+ID4+ICAJCQkgKi8KPiA+ID4+IC0JCQlXQVJOX09OQ0UoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpLAo+ID4gPj4gKwkJCVdB Uk5fT05DRShJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1ICYmICFIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpLAo+ID4gPj4gIAkJCQkgICJSZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIHBpbiAlZCBh bHRob3VnaCBkaXNhYmxlZFxuIiwgaSk7Cj4gPiA+Cj4gPiA+IENhbiByZXBsYWNlIHdpdGggIUhB U19HTUNIX0RJU1BMQVkKPiA+ID4KPiA+ID4+ICAJCQljb250aW51ZTsKPiA+ID4+ICAJCX0KPiA+ ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gPiA+PiBpbmRleCAxMTEwYzgzLi4zZTllMGU1 IDEwMDY0NAo+ID4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiA+ ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gPiA+PiBAQCAtNjI5 LDcgKzYyOSw3IEBAIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ID4gPj4gIAlpZiAoSEFTX1BDSF9OT1AoZGV2KSkKPiA+ID4+ICAJCXJldHVybiAwOwo+ID4g Pj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4gPj4gKwlpZiAoSEFTX0dF TjdfTFBfRkVBVFVSRVMoZGV2KSkKPiA+ID4+ICAJCWRldl9wcml2LT5ncGlvX21taW9fYmFzZSA9 IFZMVl9ESVNQTEFZX0JBU0U7Cj4gPiA+PiAgCWVsc2UgaWYgKCFIQVNfR01DSF9ESVNQTEFZKGRl dl9wcml2KSkKPiA+ID4+ICAJCWRldl9wcml2LT5ncGlvX21taW9fYmFzZSA9Cj4gPiA+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiA+ID4+IGluZGV4IGEyNGRmMzUuLjNiN2U0NDcgMTAw NjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiA+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiA+PiBAQCAtMTc2 Nyw3ICsxNzY3LDcgQEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGlu dGVsX3BhbmVsICpwYW5lbCkKPiA+ID4+ICAJCXBhbmVsLT5iYWNrbGlnaHQuc2V0ID0gcGNoX3Nl dF9iYWNrbGlnaHQ7Cj4gPiA+PiAgCQlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IHBjaF9nZXRfYmFj a2xpZ2h0Owo+ID4gPj4gIAkJcGFuZWwtPmJhY2tsaWdodC5oel90b19wd20gPSBwY2hfaHpfdG9f cHdtOwo+ID4gPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ID4gPj4gKwl9 IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCWlmIChkZXZf cHJpdi0+dmJ0Lmhhc19taXBpKSB7Cj4gPiA+PiAgCQkJcGFuZWwtPmJhY2tsaWdodC5zZXR1cCA9 IHB3bV9zZXR1cF9iYWNrbGlnaHQ7Cj4gPiA+PiAgCQkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUg PSBwd21fZW5hYmxlX2JhY2tsaWdodDsKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4g Pj4gaW5kZXggOTZmNDVkNy4uNzQxYzg4OCAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiA+ID4+IEBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBpbnRlbF9zZXRfbWVtb3J5 X2N4c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGVuYWJsZSkKPiA+ ID4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gPiA+PiAgCXUz MiB2YWw7Cj4gPiA+PiAgCj4gPiA+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiA+ID4+ ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCUk5MTVfV1JJVEUo RldfQkxDX1NFTEZfVkxWLCBlbmFibGUgPyBGV19DU1BXUkRXTkVOIDogMCk7Cj4gPiA+PiAgCQlQ T1NUSU5HX1JFQUQoRldfQkxDX1NFTEZfVkxWKTsKPiA+ID4+ICAJCWRldl9wcml2LT53bS52bHYu Y3hzciA9IGVuYWJsZTsKPiA+ID4+IEBAIC00Mzk3LDcgKzQzOTcsNyBAQCB2b2lkIGdlbjZfcnBz X2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPj4gIAo+ID4gPj4g IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ID4gPj4gIAlpZiAoZGV2X3By aXYtPnJwcy5lbmFibGVkKSB7Cj4gPiA+PiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ID4g Pj4gKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gPiA+PiAgCQkJdmx2X3NldF9y cHNfaWRsZShkZXZfcHJpdik7Cj4gPiA+PiAgCQllbHNlCj4gPiA+PiAgCQkJZ2VuNl9zZXRfcnBz KGRldl9wcml2LT5kZXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKTsKPiA+ID4+IEBAIC00NDUw LDcgKzQ0NTAsNyBAQCB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiA+ID4+ICAKPiA+ID4+ICB2b2lkIGludGVsX3NldF9ycHMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTggdmFsKQo+ID4gPj4gIHsKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCj4gPiA+PiAg CQl2YWxsZXl2aWV3X3NldF9ycHMoZGV2LCB2YWwpOwo+ID4gPj4gIAllbHNlCj4gPiA+PiAgCQln ZW42X3NldF9ycHMoZGV2LCB2YWwpOwo+ID4gPj4gQEAgLTQ0OTQsNyArNDQ5NCw3IEBAIHN0YXRp YyB2b2lkIHZhbGxleXZpZXdfZGlzYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ID4+ICAKPiA+ID4+ICBzdGF0aWMgdm9pZCBpbnRlbF9wcmludF9yYzZfaW5mbyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1MzIgbW9kZSkKPiA+ID4+ICB7Cj4gPiA+PiAtCWlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPiA+ID4+ICsJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ ID4+ICAJCWlmIChtb2RlICYgKEdFTjdfUkNfQ1RMX1RPX01PREUgfCBHRU42X1JDX0NUTF9FSV9N T0RFKDEpKSkKPiA+ID4+ICAJCQltb2RlID0gR0VONl9SQ19DVExfUkM2X0VOQUJMRTsKPiA+ID4+ ICAJCWVsc2UKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w c3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gPiA+PiBpbmRleCBiNjYw OWU2Li5jNGU4YWQyIDEwMDY0NAo+ID4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcHNyLmMKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4g PiA+PiBAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBib29sIGludGVsX3Bzcl9tYXRjaF9jb25k aXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+PiAgCQlyZXR1cm4gZmFsc2U7 Cj4gPiA+PiAgCX0KPiA+ID4+ICAKPiA+ID4+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYg KChkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbmspIHx8Cj4gPiA+PiArCWlmICghSEFTX0dFTjdf TFBfRkVBVFVSRVMoZGV2KSAmJiAoKGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluaykgfHwKPiA+ ID4+ICAJCQkJICAgIChkaWdfcG9ydC0+cG9ydCAhPSBQT1JUX0EpKSkgewo+ID4gPj4gIAkJRFJN X0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IExpbmsgU3RhbmRieSByZXF1ZXN0ZWQv bmVlZGVkIGJ1dCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1cbiIpOwo+ID4gPj4gIAkJ cmV0dXJuIGZhbHNlOwo+ID4gPj4gQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIGludGVsX3Bzcl9z aW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+PiAgCSAqIFNp bmdsZSBmcmFtZSB1cGRhdGUgaXMgYWxyZWFkeSBzdXBwb3J0ZWQgb24gQkRXKyBidXQgaXQgcmVx dWlyZXMKPiA+ID4+ICAJICogbWFueSBXL0EgYW5kIGl0IGlzbid0IHJlYWxseSBuZWVkZWQuCj4g PiA+PiAgCSAqLwo+ID4gPj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkKPiA+ID4+ICsJaWYg KCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQo+ID4gPj4gIAkJcmV0dXJuOwo+ID4gPj4gIAo+ ID4gPj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ID4+IGluZGV4IDJiOTZmMzMuLjJlNzA0M2IgMTAwNjQ0 Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ID4+IEBAIC05NTEs NyArOTUxLDcgQEAgaW50IGludGVsX3Nwcml0ZV9zZXRfY29sb3JrZXkoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ID4+ICAJaWYgKChzZXQtPmZsYWdzICYgKEk5MTVfU0VU X0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkgPT0gKEk5 MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkK PiA+ID4+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPj4gIAo+ID4gPj4gLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpICYmCj4gPiA+PiArCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmCj4g PiA+PiAgCSAgICBzZXQtPmZsYWdzICYgSTkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04pCj4g PiA+PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4+ICAKPiA+ID4+IEBAIC0xMDg2LDcgKzEwODYs NyBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBw aXBlLCBpbnQgcGxhbmUpCj4gPiA+PiAgCQkJaW50ZWxfcGxhbmUtPm1heF9kb3duc2NhbGUgPSAx Owo+ID4gPj4gIAkJfQo+ID4gPj4gIAo+ID4gPj4gLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkg ewo+ID4gPj4gKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ICAJCQlp bnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5lID0gdmx2X3VwZGF0ZV9wbGFuZTsKPiA+ID4+ICAJCQlp bnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZSA9IHZsdl9kaXNhYmxlX3BsYW5lOwo+ID4gPj4gIAo+ ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiA+ID4+IGluZGV4IGMyMzU4YmEu LmViYmJlMDAgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYwo+ID4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMK PiA+ID4+IEBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIGludCBfX2dlbjZfZ3Rfd2FpdF9mb3Jf ZmlmbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+PiAgCj4gPiA+PiAg CS8qIE9uIFZMViwgRklGTyB3aWxsIGJlIHNoYXJlZCBieSBib3RoIFNXIGFuZCBIVy4KPiA+ID4+ ICAJICogU28sIHdlIG5lZWQgdG8gcmVhZCB0aGUgRlJFRV9FTlRSSUVTIGV2ZXJ5dGltZSAqLwo+ ID4gPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPiA+ID4+ICsJaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKQo+ID4gPj4gIAkJZGV2X3ByaXYtPnVu Y29yZS5maWZvX2NvdW50ID0gZmlmb19mcmVlX2VudHJpZXMoZGV2X3ByaXYpOwo+ID4gPgo+ID4g PiBUaGlzIGNvZGUgaXNuJ3QgdXNlZCBvbiBDSFYsIHNvIGNhbiBzdGF5IGFzIGlzLgo+ID4gPgo+ ID4gPj4gIAo+ID4gPj4gIAlpZiAoZGV2X3ByaXYtPnVuY29yZS5maWZvX2NvdW50IDwgR1RfRklG T19OVU1fUkVTRVJWRURfRU5UUklFUykgewo+ID4gPj4gQEAgLTExMTUsNyArMTExNSw3IEBAIHN0 YXRpYyB2b2lkIGZ3X2RvbWFpbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+ID4+ICAJCWQtPnZhbF9jbGVhciA9IF9NQVNLRURfQklUX0RJU0FCTEUoRk9SQ0VXQUtF X0tFUk5FTCk7Cj4gPiA+PiAgCX0KPiA+ID4+ICAKPiA+ID4+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpKQo+ID4gPj4gKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQo+ ID4gPj4gIAkJZC0+cmVnX3Bvc3QgPSBGT1JDRVdBS0VfQUNLX1ZMVjsKPiA+ID4+ICAJZWxzZSBp ZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikgfHwgSVNfR0VOOChkZXZf cHJpdikpCj4gPiA+PiAgCQlkLT5yZWdfcG9zdCA9IEVDT0JVUzsKPiA+ID4+IEBAIC0xMTQ4LDcg KzExNDgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+PiAgCQkJICAgICAgIEZPUkNFV0FLRV9BQ0tfQkxJVFRF Ul9HRU45KTsKPiA+ID4+ICAJCWZ3X2RvbWFpbl9pbml0KGRldl9wcml2LCBGV19ET01BSU5fSURf TUVESUEsCj4gPiA+PiAgCQkJICAgICAgIEZPUkNFV0FLRV9NRURJQV9HRU45LCBGT1JDRVdBS0Vf QUNLX01FRElBX0dFTjkpOwo+ID4gPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkg ewo+ID4gPj4gKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKPiA+ID4+ ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPSBmd19kb21haW5zX2dl dDsKPiA+ID4+ICAJCWlmICghSVNfQ0hFUlJZVklFVyhkZXYpKQo+ID4gPj4gIAkJCWRldl9wcml2 LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPQo+ID4gPj4gLS0gCj4gPiA+PiAyLjYuMwo+ ID4gPj4gCj4gPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+ID4gPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPj4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4gCj4gPiAtLSAKPiA+IEphbmkgTmlrdWxhLCBJbnRl bCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgo+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBEYW5pZWwgVmV0 dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==