From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arkadiusz Hiler Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Wed, 4 Jan 2017 16:15:55 +0100 Message-ID: <20170104151554.GA21658@ahiler-desk.igk.intel.com> References: <1482448344-6505-1-git-send-email-anusha.srivatsa@intel.com> <1482448344-6505-4-git-send-email-anusha.srivatsa@intel.com> <20161227175056.GB61164@mwajdecz-MOBL1.ger.corp.intel.com> <83F5C7385F545743AD4FB2A62F75B0730195EAAF@ORSMSX108.amr.corp.intel.com> <83F5C7385F545743AD4FB2A62F75B073019601EA@ORSMSX108.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5BF56E758 for ; Wed, 4 Jan 2017 15:16:00 +0000 (UTC) Content-Disposition: inline In-Reply-To: <83F5C7385F545743AD4FB2A62F75B073019601EA@ORSMSX108.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Srivatsa, Anusha" Cc: "intel-gfx@lists.freedesktop.org" , Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKYW4gMDMsIDIwMTcgYXQgMDY6NTk6MTFQTSArMDAwMCwgU3JpdmF0c2EsIEFudXNo YSB3cm90ZToKPiAKPiAKPiA+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+RnJvbTogSW50 ZWwtZ2Z4IFttYWlsdG86aW50ZWwtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXSBP biBCZWhhbGYgT2YKPiA+U3JpdmF0c2EsIEFudXNoYQo+ID5TZW50OiBNb25kYXksIEphbnVhcnkg MiwgMjAxNyA0OjA5IFBNCj4gPlRvOiBXYWpkZWN6a28sIE1pY2hhbCA8TWljaGFsLldhamRlY3pr b0BpbnRlbC5jb20+Cj4gPkNjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBBbGV4 IERhaSA8eXUuZGFpQGludGVsLmNvbT47IFBldGVyIEFudG9pbmUKPiA+PHBldGVyLmFudG9pbmVA aW50ZWwuY29tPgo+ID5TdWJqZWN0OiBSZTogW0ludGVsLWdmeF0gW1BBVENIIDMvOF0gZHJtL2k5 MTUvaHVjOiBBZGQgSHVDIGZ3IGxvYWRpbmcgc3VwcG9ydAo+ID4KPiA+Cj4gPgo+ID4+LS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+PkZyb206IFdhamRlY3prbywgTWljaGFsCj4gPj5TZW50 OiBUdWVzZGF5LCBEZWNlbWJlciAyNywgMjAxNiA5OjUxIEFNCj4gPj5UbzogU3JpdmF0c2EsIEFu dXNoYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiA+PkNjOiBpbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnOyBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT47IFBldGVyCj4gPj5B bnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KPiA+PlN1YmplY3Q6IFJlOiBbSW50ZWwt Z2Z4XSBbUEFUQ0ggMy84XSBkcm0vaTkxNS9odWM6IEFkZCBIdUMgZncgbG9hZGluZwo+ID4+c3Vw cG9ydAo+ID4+Cj4gPj5PbiBUaHUsIERlYyAyMiwgMjAxNiBhdCAwMzoxMjoxOVBNIC0wODAwLCBB bnVzaGEgU3JpdmF0c2Egd3JvdGU6Cj4gPj4+IFRoZSBIdUMgbG9hZGluZyBwcm9jZXNzIGlzIHNp bWlsYXIgdG8gR3VDLiBUaGUgaW50ZWxfdWNfZndfZmV0Y2goKSBpcwo+ID4+PiB1c2VkIGZvciBi b3RoIGNhc2VzLgo+ID4+Pgo+ID4+PiBIdUMgbG9hZGluZyBuZWVkcyB0byBiZSBiZWZvcmUgR3VD IGxvYWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nIG11c3QgYmUKPiA+Pj4gZG9uZSBlYXJseSBiZWZv cmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KPiA+Pj4KPiA+Pj4gdjI6IHJlYmFzZWQgb24tdG9wIG9m IGRybS1pbnRlbC1uaWdodGx5Lgo+ID4+PiAgICAgcmVtb3ZlZCBpZihIQVNfR1VDKCkpIGJlZm9y ZSB0aGUgZ3VjIGNhbGwuIChELkdvcmRvbikKPiA+Pj4gICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBu dW1iZXIgb2YgZm9ybWF0Lgo+ID4+PiB2MzogcmViYXNlZCB0byBkcm0taW50ZWwtbmlnaHRseSwg Y2hhbmdlZCB0aGUgZmlsZSBuYW1lIGZvcm1hdCB0bwo+ID4+PiAgICAgbWF0Y2ggdGhlIG9uZSBp biB0aGUgaHVjIHBhY2thZ2UuCj4gPj4+ICAgICBDaGFuZ2VkIGRldi0+ZGV2X3ByaXZhdGUgdG8g dG9faTkxNSgpCj4gPj4+IHY0OiBtb3ZlZCBmdW5jdGlvbiBiYWNrIHRvIHdoZXJlIGl0IHdhcy4K PiA+Pj4gICAgIGNoYW5nZSB3YWl0X2Zvcl9hdG9taWMgdG8gd2FpdF9mb3IuCj4gPj4+IHY1OiBy ZWJhc2VkICsgY29tbWVudCBjaGFuZ2VzLgo+ID4+PiB2NzogcmViYXNlZC4KPiA+Pj4gdjg6IHJl YmFzZWQuCj4gPj4+IHY5OiByZWJhc2VkLiBDaGFuZ2VkIHRoZSB5ZWFyIGluIHRoZSBjb3B5cmln aHQgbWVzc2FnZSB0byByZWZsZWN0IHRoZQo+ID4+PiByaWdodCB5ZWFyLkNvcnJlY3QgdGhlIGNv bW1lbnRzLHJlbW92ZSB0aGUgdW53YW50ZWQgV0FSTiBtZXNzYWdlLAo+ID4+PiByZXBsYWNlIGRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCkgd2l0aCBpOTE1X2dlbV9vYmplY3RfcHV0KCkuTWFr ZQo+ID4+PiB0aGUgcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBub24tZXh0ZXJuLgo+ID4+PiB2 MTA6IHJlYmFzZWQuIFVwZGF0ZSB0aGUgZmlsZSBjb25zdHJ1Y3Rpb24gZG9uZSBieSBIdUMuIEl0 IGlzIHNpbWlsYXIKPiA+Pj4gdG8gR3VDLkFkb3B0ZWQgdGhlIGFwcHJvYWNoIHVzZWQgaW4tCj4g Pj4+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xMDQzNTUvIDxUdnJ0 a28gVXJzdWxpbj4KPiA+Pj4gdjExOiBGaXggd2FybmluZ3MgcmVtb3ZlIG9sZCBkZWNsYXJhdGlv bgo+ID4+PiB2MTI6IENoYW5nZSBkZXYgdG8gZGV2X3ByaXYgaW4gbWFjcm8gZGVmaW5pdGlvbi4K PiA+Pj4gQ29ycmVjdGVkIGNvbW1lbnRzLgo+ID4+PiB2MTM6IHJlYmFzZWQuCj4gPj4+IHYxNDog cmViYXNlZCBvbiB0b3Agb2YgZHJtLXRpcAo+ID4+PiB2MTU6IHJlYmFzZWQuIFVwZGF0ZWQgZnVu Y3Rpb25zIGludGVsX2h1Y19sb2FkKCksaW50ZWxfaHVjX2luaXQoKSBhbmQKPiA+Pj4gaW50ZWxf dWNfZndfZmV0Y2goKSB0byBhY2NlcHQgZGV2X3ByaXYgaW5zdGVhZCBvZiBkZXYuIE1vdmVkIGNv bnRlbnRzCj4gPj4+IG9mIGludGVsX2h1Yy5oIHRvIGludGVsX3VjLmgKPiA+Pj4gdjE2OiBjaGFu Z2UgU0tMX0ZXXyB0byBTS0xfSFVDX0ZXXy4gQWRkIGludGVsXyBwcmVmaXggdG8KPiA+Pmd1Y193 b3BjbV9zaXplKCkuCj4gPj4+IFJlbW92ZSB1bndhbnRlZCBjaGVja3MgaW4gaW50ZWxfdWMuaC4g UmVuYW1lIGh1Y19mdyBpbiBzdHJ1Y3QKPiA+Pj4gaW50ZWxfaHVjIHRvIHNpbXBseSBmdyB0byBh dm9pZCByZWR1bmRlbmN5Lgo+ID4+PiB2MTc6IHJlYmFzZWQuCj4gPj4+Cj4gPj4+IENjOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ID4+PiBUZXN0ZWQtYnk6IFhp YW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGludGVsLmNvbT4KPiA+Pj4gU2lnbmVkLW9mZi1ieTog QW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+ID4+PiBTaWduZWQt b2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiA+Pj4gU2lnbmVkLW9mZi1ieTog UGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Cj4gPj4+IC0tLQo+ID4+PiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiA+Pj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAgNCArLQo+ID4+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAzICstCj4gPj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCAgICAgfCAgIDMgKwo+ID4+PiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgIDExICstCj4gPj4+IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyB8IDI2Mwo+ID4+KysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgg ICAgICAgICB8ICAxOCArKysKPiA+Pj4gIDcgZmlsZXMgY2hhbmdlZCwgMjk2IGluc2VydGlvbnMo KyksIDcgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZQo+ID4+PiAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlIGluZGV4IDUxOTY1MDkuLjQ1YWUxMjQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gPj4+IEBAIC01Nyw2ICs1Nyw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIu byBcICAjIGdlbmVyYWwtcHVycG9zZQo+ID4+PiBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3VwcG9y dCAgaTkxNS15ICs9IGludGVsX3VjLm8gXAo+ID4+PiAgCSAgaW50ZWxfZ3VjX2xvYWRlci5vIFwK PiA+Pj4gKwkgIGludGVsX2h1Y19sb2FkZXIubyBcCj4gPj4+ICAJICBpOTE1X2d1Y19zdWJtaXNz aW9uLm8KPiA+Pj4KPiA+Pj4gICMgYXV0b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0ZQo+ID4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgaW5kZXggNjQyODU4OC4uODVhNDdjMiAxMDA2 NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPj4+IEBAIC02MDAsNiArNjAwLDcg QEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdAo+ID4+PiBkcm1fZGV2 aWNlCj4gPj4qZGV2KQo+ID4+PiAgCWlmIChyZXQpCj4gPj4+ICAJCWdvdG8gY2xlYW51cF9pcnE7 Cj4gPj4+Cj4gPj4+ICsJaW50ZWxfaHVjX2luaXQoZGV2X3ByaXYpOwo+ID4+PiAgCWludGVsX2d1 Y19pbml0KGRldl9wcml2KTsKPiA+Pj4KPiA+Pj4gIAlyZXQgPSBpOTE1X2dlbV9pbml0KGRldl9w cml2KTsKPiA+Pj4gQEAgLTYyNyw2ICs2MjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rl c2V0X2luaXQoc3RydWN0Cj4gPj4+IGRybV9kZXZpY2UKPiA+PipkZXYpCj4gPj4+ICAJCURSTV9F UlJPUigiZmFpbGVkIHRvIGlkbGUgaGFyZHdhcmU7IGNvbnRpbnVpbmcgdG8gdW5sb2FkIVxuIik7 Cj4gPj4+ICAJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7Cj4gPj4+ICBjbGVhbnVwX2lycToKPiA+ Pj4gKwlpbnRlbF9odWNfZmluaShkZXYpOwo+ID4+PiAgCWludGVsX2d1Y19maW5pKGRldl9wcml2 KTsKPiA+Pj4gIAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwo+ID4+PiAgCWludGVsX3RlYXJkb3du X2dtYnVzKGRldl9wcml2KTsKPiA+Pj4gQEAgLTEzMTMsNyArMTMxNSw3IEBAIHZvaWQgaTkxNV9k cml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4+Cj4gPj4+ICAJLyogRmx1 c2ggYW55IG91dHN0YW5kaW5nIHVucGluX3dvcmsuICovCj4gPj4+ICAJZHJhaW5fd29ya3F1ZXVl KGRldl9wcml2LT53cSk7Cj4gPj4+IC0KPiA+Pj4gKwlpbnRlbF9odWNfZmluaShkZXYpOwo+ID4+ PiAgCWludGVsX2d1Y19maW5pKGRldl9wcml2KTsKPiA+Pj4gIAlpOTE1X2dlbV9maW5pKGRldl9w cml2KTsKPiA+Pj4gIAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwo+ID4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+PiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggaW5kZXggMWE5MTQwOS4uN2FjNzczMCAxMDA2NDQKPiA+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPj4+IEBAIC0yMTQ3LDYgKzIxNDcsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPj4+Cj4gPj4+ICAJc3RydWN0IGludGVsX2d2dCAq Z3Z0Owo+ID4+Pgo+ID4+PiArCXN0cnVjdCBpbnRlbF9odWMgaHVjOwo+ID4+PiAgCXN0cnVjdCBp bnRlbF9ndWMgZ3VjOwo+ID4+Pgo+ID4+PiAgCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwo+ID4+PiBA QCAtMjkyMSw3ICsyOTIyLDcgQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPj4+ICAjZGVmaW5lIEhBU19HVUMoZGV2X3ByaXYpCSgoZGV2X3By aXYpLT5pbmZvLmhhc19ndWMpCj4gPj4+ICAjZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2X3ByaXYp CShIQVNfR1VDKGRldl9wcml2KSkKPiA+Pj4gICNkZWZpbmUgSEFTX0dVQ19TQ0hFRChkZXZfcHJp dikJKEhBU19HVUMoZGV2X3ByaXYpKQo+ID4+PiAtCj4gPj4+ICsjZGVmaW5lIEhBU19IVUNfVUNP REUoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkKPiA+Pj4gICNkZWZpbmUgSEFTX1JFU09V UkNFX1NUUkVBTUVSKGRldl9wcml2KQo+ID4+PiAoKGRldl9wcml2KS0+aW5mby5oYXNfcmVzb3Vy Y2Vfc3RyZWFtZXIpCj4gPj4+Cj4gPj4+ICAjZGVmaW5lIEhBU19QT09MRURfRVUoZGV2X3ByaXYp CSgoZGV2X3ByaXYpLT5pbmZvLmhhc19wb29sZWRfZXUpCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+ID4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3JlZy5oCj4gPj4+IGluZGV4IDVlNjM4ZmMuLmY5ODI5ZjYgMTAwNjQ0Cj4g Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCj4gPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCj4gPj4+IEBAIC02MSw5ICs2MSwx MiBAQAo+ID4+PiAgI2RlZmluZSAgIERNQV9BRERSRVNTX1NQQUNFX0dUVAkJICAoOCA8PCAxNikK PiA+Pj4gICNkZWZpbmUgRE1BX0NPUFlfU0laRQkJCV9NTUlPKDB4YzMxMCkKPiA+Pj4gICNkZWZp bmUgRE1BX0NUUkwJCQlfTU1JTygweGMzMTQpCj4gPj4+ICsjZGVmaW5lICAgSFVDX1VLRVJORUwJ CQkgICgxPDw5KQo+ID4+PiAgI2RlZmluZSAgIFVPU19NT1ZFCQkJICAoMTw8NCkKPiA+Pj4gICNk ZWZpbmUgICBTVEFSVF9ETUEJCQkgICgxPDwwKQo+ID4+PiAgI2RlZmluZSBETUFfR1VDX1dPUENN X09GRlNFVAkJX01NSU8oMHhjMzQwKQo+ID4+PiArI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5U X1ZDUgkJICAoMDw8MSkKPiA+Pj4gKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAg KDE8PDEpCj4gPj4+ICAjZGVmaW5lICAgR1VDX1dPUENNX09GRlNFVF9WQUxVRQkgIDB4ODAwMDAJ LyogNTEyS0IgKi8KPiA+Pj4gICNkZWZpbmUgR1VDX01BWF9JRExFX0NPVU5UCQlfTU1JTygweEMz RTQpCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMKPiA+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKPiA+Pj4gaW5kZXggMDZlM2U1Yy4uOGM3N2U5NCAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4+PiBAQCAtMzA5LDggKzMwOSw4IEBAIHN0 YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdAo+ID4+PiBkcm1faTkxNV9wcml2YXRl Cj4gPj4qZGV2X3ByaXYsCj4gPj4+ICAJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERNQV9B RERSRVNTX1NQQUNFX1dPUENNKTsKPiA+Pj4KPiA+Pj4gIAkvKiBGaW5hbGx5IHN0YXJ0IHRoZSBE TUEgKi8KPiA+Pj4gLQlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9T X01PVkUgfAo+ID4+U1RBUlRfRE1BKSk7Cj4gPj4+IC0KPiA+Pj4gKwlJOTE1X1dSSVRFKERNQV9D VFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfAo+ID4+U1RBUlRfRE1BKSB8Cj4gPj4+ ICsJCV9NQVNLRURfQklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsKPiA+Pj4gIAkvKgo+ID4+PiAg CSAqIFdhaXQgZm9yIHRoZSBETUEgdG8gY29tcGxldGUgJiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgo+ ID4+PiAgCSAqIE5COiBEb2NzIHJlY29tbWVuZCBub3QgdXNpbmcgdGhlIGludGVycnVwdCBmb3Ig Y29tcGxldGlvbi4KPiA+Pj4gQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29k ZV94ZmVyX2RtYShzdHJ1Y3QKPiA+Pj4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4+KmRldl9wcml2LAo+ ID4+PiAgCXJldHVybiByZXQ7Cj4gPj4+ICB9Cj4gPj4+Cj4gPj4+IC1zdGF0aWMgdTMyIGd1Y193 b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Pj4gK3UzMiBp bnRlbF9ndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g Pj4+ICB7Cj4gPj4+ICAJdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwo+ID4+Pgo+ID4+ PiBAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiA+PipkZXZfcHJpdikKPiA+Pj4gIAlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gPj4+Cj4gPj4+ICAJLyogaW5pdCBX T1BDTSAqLwo+ID4+PiAtCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1Y193b3BjbV9zaXpl KGRldl9wcml2KSk7Cj4gPj4+ICsJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgaW50ZWxfZ3Vj X3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKPiA+Pj4gIAlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01f T0ZGU0VULAo+ID4+R1VDX1dPUENNX09GRlNFVF9WQUxVRSk7Cj4gPj4+Cj4gPj4+ICAJLyogRW5h YmxlIE1JQSBjYWNoaW5nLiBHdUMgY2xvY2sgZ2F0aW5nIGlzIGRpc2FibGVkLiAqLyBAQCAtNTEx LDYKPiA+Pj4gKzUxMSw3IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ID4+PiAgCQlpZiAoZXJyKQo+ID4+PiAgCQkJZ290byBmYWlsOwo+ ID4+Pgo+ID4+PiArCQlpbnRlbF9odWNfbG9hZChkZXZfcHJpdik7Cj4gPj4+ICAJCWVyciA9IGd1 Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiA+Pj4gIAkJaWYgKCFlcnIpCj4gPj4+ICAJCQlicmVh azsKPiA+Pj4gQEAgLTY1OCw3ICs2NTksNyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlCj4gPj4qZGV2X3ByaXYsCj4gPj4+ICAJCXNpemUgPSB1Y19mdy0+ aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKPiA+Pj4KPiA+Pj4gIAkJLyogVG9wIDMy ayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRleHQpLgo+ID4+ Ki8KPiA+Pj4gLQkJaWYgKHNpemUgPiBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsKPiA+Pj4g KwkJaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsKPiA+Pj4gIAkJ CURSTV9FUlJPUigiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbgo+ID4+V09QQ01cbiIp Owo+ID4+PiAgCQkJZ290byBmYWlsOwo+ID4+PiAgCQl9Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKPiA+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKPiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ Pj4gaW5kZXggMDAwMDAwMC4uOThkNjMxYwo+ID4+PiAtLS0gL2Rldi9udWxsCj4gPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+ID4+PiBAQCAtMCwwICsx LDI2MyBAQAo+ID4+PiArLyoKPiA+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbgo+ID4+PiArICoKPiA+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gPj4+ICtvYnRhaW5pbmcgYQo+ID4+PiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZQo+ID4+PiArIlNvZnR3YXJlIiksCj4gPj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+ID4+PiArbGltaXRh dGlvbgo+ID4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gPj4+ICtzdWJsaWNlbnNlLAo+ID4+PiArICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20K PiA+Pj4gK3RoZQo+ID4+PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+Pj4gKyAqCj4gPj4+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nCj4gPj4+ICt0aGUgbmV4dAo+ID4+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gPj4+ICtwb3J0aW9ucyBvZiB0aGUKPiA+ Pj4gKyAqIFNvZnR3YXJlLgo+ID4+PiArICoKPiA+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4+PiArRVhQUkVT UyBPUgo+ID4+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRgo+ID4+PiArTUVSQ0hBTlRBQklMSVRZLAo+ID4+PiArICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PCj4gPj5F VkVOVAo+ID4+PiArU0hBTEwKPiA+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID4+REFNQUdFUwo+ID4+PiArT1IgT1RIRVIK PiA+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAo+ID4+PiArQVJJU0lORwo+ID4+PiArICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+ID4+PiArT1RI RVIgREVBTElOR1MKPiA+Pj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+Pj4gKyAqCj4gPj4+ICsg Ki8KPiA+Pj4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgo+ID4+PiArI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCj4gPj4+ICsjaW5jbHVkZSAiaW50ZWxfdWMuaCIKPiA+Pj4gKwo+ID4+PiArLyoq Cj4gPj4+ICsgKiBET0M6IEh1QyBGaXJtd2FyZQo+ID4+PiArICoKPiA+Pj4gKyAqIE1vdGl2YXRp b246Cj4gPj4+ICsgKiBHRU45IGludHJvZHVjZXMgYSBuZXcgZGVkaWNhdGVkIGZpcm13YXJlIGZv ciB1c2FnZSBpbiBtZWRpYSBIRVZDCj4gPj4+ICsoSGlnaAo+ID4+PiArICogRWZmaWNpZW5jeSBW aWRlbyBDb2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZQo+ID4+PiArZmly bXdhcmUKPiA+Pj4gKyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1h bmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCj4gPj4+ICsgKgo+ID4+PiArICogSW1wbGVtZW50YXRpb246 Cj4gPj4+ICsgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZCBhcyB0aGUgR3VDLiBI b3dldmVyLCB0aGUgYWN0dWFsCj4gPj4+ICsgKiBsb2FkaW5nIHRvIEhXIGlzIGRlZmVycmVkIHVu dGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgo+ID4+PiArICoKPiA+Pj4gKyAqIE5vdGUg dGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5n Lgo+ID4+PiArICovCj4gPj4+ICsKPiA+Pj4gKyNkZWZpbmUgU0tMX0hVQ19GV19NQUpPUiAwMQo+ ID4+PiArI2RlZmluZSBTS0xfSFVDX0ZXX01JTk9SIDA3Cj4gPj4+ICsjZGVmaW5lIFNLTF9CTERf TlVNIDEzOTgKPiA+Pj4gKwo+ID4+PiArI2RlZmluZSBIVUNfRldfUEFUSChwbGF0Zm9ybSwgbWFq b3IsIG1pbm9yLCBibGRfbnVtKSBcCj4gPj4+ICsJImk5MTUvIiBfX3N0cmluZ2lmeShwbGF0Zm9y bSkgIl9odWNfdmVyIiBfX3N0cmluZ2lmeShtYWpvcikgIl8iIFwKPiA+Pj4gKwlfX3N0cmluZ2lm eShtaW5vcikgIl8iIF9fc3RyaW5naWZ5KGJsZF9udW0pICIuYmluIgo+ID4+PiArCj4gPj4+ICsj ZGVmaW5lIEk5MTVfU0tMX0hVQ19VQ09ERSBIVUNfRldfUEFUSChza2wsIFNLTF9IVUNfRldfTUFK T1IsIFwKPiA+Pj4gKwlTS0xfSFVDX0ZXX01JTk9SLCBTS0xfQkxEX05VTSkKPiA+Pj4gK01PRFVM RV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOwo+ID4+PiArCj4gPj4+ICsvKioKPiA+Pj4g KyAqIGh1Y191Y29kZV94ZmVyKCkgLSBETUEncyB0aGUgZmlybXdhcmUKPiA+Pj4gKyAqIEBkZXZf cHJpdjogdGhlIGRybSBkZXZpY2UKPiA+Pj4gKyAqCj4gPj4+ICsgKiBUaGlzIGZ1bmN0aW9uIHRh a2VzIHRoZSBnZW0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpcm13YXJlLCBzZXRzCj4gPj4+ICt1 cCB0aGUgRE1BCj4gPj4KPiA+PkhtbSwgdGhpcyBmdW5jdGlvbiB0YWtlcyBqdXN0IGRldl9wcml2 Li4uCj4gPgo+ID5Pb3BzLi4uLiB3aWxsIGNoYW5nZSB0aGUgY29tbWVudC4KPiA+Cj4gPkFudXNo YQo+ID4+Cj4gPj4+ICsgKiBlbmdpbmUgTU1JTywgdHJpZ2dlcnMgdGhlIERNQSBvcGVyYXRpb24g YW5kIHdhaXRzIGZvciBpdCB0byBmaW5pc2guCj4gPj4+ICsgKgo+ID4+PiArICogVHJhbnNmZXIg dGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2NvbnRy b2xsZXIuCj4gPj4+ICsgKgo+ID4+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJv IG9uIGZhaWx1cmUgICovIHN0YXRpYyBpbnQKPiA+Pj4gK2h1Y191Y29kZV94ZmVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikgewo+ID4+PiArCXN0cnVjdCBpbnRlbF91Y19mdyAq aHVjX2Z3ID0gJmRldl9wcml2LT5odWMuZnc7Cj4gPj4+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7 Cj4gPj4+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwo+ID4+PiArCXUzMiBzaXplOwo+ID4+ PiArCWludCByZXQ7Cj4gPj4+ICsKPiA+Pj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4oaHVjX2Z3LT51Y19md19vYmosIGZhbHNlKTsKPiA+Pj4gKwlpZiAocmV0KSB7 Cj4gPj4+ICsJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQp Owo+ID4+PiArCQlyZXR1cm4gcmV0Owo+ID4+PiArCX0KPiA+Pj4gKwo+ID4+PiArCXZtYSA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWNfZnctPnVjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7 Cj4gPj4+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gPj4+ICsJCURSTV9ERUJVR19EUklWRVIoInBp biBmYWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKPiA+Pj4gKwkJcmV0dXJuIFBUUl9F UlIodm1hKTsKPiA+Pj4gKwl9Cj4gPj4+ICsKPiA+Pj4gKwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIg dG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICovCj4gPj4+ICsJSTkx NV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKPiA+Pj4gKwo+ID4+PiAr CWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiA+ Pj4gKwo+ID4+PiArCS8qIGluaXQgV09QQ00gKi8KPiA+Pj4gKwlJOTE1X1dSSVRFKEdVQ19XT1BD TV9TSVpFLCBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOwo+ID4+PiArCUk5MTVfV1JJ VEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsCj4gPj5HVUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHwKPiA+ Pj4gKwkJCUhVQ19MT0FESU5HX0FHRU5UX0dVQyk7Cj4gPj4+ICsKPiA+Pj4gKwkvKiBTZXQgdGhl IHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNvZGUgKi8KPiA+Pj4gKwlvZmZzZXQgPSBpOTE1X2dn dHRfb2Zmc2V0KHZtYSkgKyBodWNfZnctPmhlYWRlcl9vZmZzZXQ7Cj4gPj4+ICsJSTkxNV9XUklU RShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiA+Pj4gKwlJOTE1X1dS SVRFKERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZzZXQpICYgMHhGRkZGKTsKPiA+ Pj4gKwo+ID4+PiArCS8qIEhhcmR3YXJlIGRvZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRy ZXNzIGZvciBIdUMuIFNldCBpdCB0byAwLAo+ID4+PiArCSAqIGJ1dCBzdGlsbCBwcm9ncmFtIHRo ZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuCj4gPj4+ICsJICovCj4gPj4+ICsJSTkxNV9XUklURShE TUFfQUREUl8xX0xPVywgMCk7Cj4gPj4+ICsJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERN QV9BRERSRVNTX1NQQUNFX1dPUENNKTsKPiA+Pj4gKwo+ID4+PiArCXNpemUgPSBodWNfZnctPmhl YWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOwo+ID4+PiArCUk5MTVfV1JJVEUoRE1BX0NP UFlfU0laRSwgc2l6ZSk7Cj4gPj4+ICsKPiA+Pj4gKwkvKiBTdGFydCB0aGUgRE1BICovCj4gPj4+ ICsJSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwK PiA+PlNUQVJUX0RNQSkpOwo+ID4+PiArCj4gPj4+ICsJLyogV2FpdCBmb3IgRE1BIHRvIGZpbmlz aCAqLwo+ID4+PiArCXJldCA9IHdhaXRfZm9yKChJOTE1X1JFQUQoRE1BX0NUUkwpICYgU1RBUlRf RE1BKSA9PSAwLCAxMDApOwo+ID4+PiArCj4gPj4+ICsJRFJNX0RFQlVHX0RSSVZFUigiSHVDIERN QSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJldCk7Cj4gPj4+ICsKPiA+Pj4g KwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4g Pj4+ICsKPiA+Pj4gKwkvKgo+ID4+PiArCSAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3Ig cmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAo+ID4+PiArCSAqIG5vdyB0 aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vzbid0IGNvbnRpbnVlIHRvIHRha2UgdXAg c3BhY2UuCj4gPj4+ICsJICovCj4gPj4+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiA+Pj4gKwo+ ID4+PiArCXJldHVybiByZXQ7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gKy8qKgo+ID4+PiArICog aW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVlc3QK PiA+Pj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCj4gPj4+ICsg Kgo+ID4+PiArICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdF TSBpcyBpbml0aWFsaXNlZC4KPiA+Pj4gK1RoZSBsb2FkaW5nCj4gPj4+ICsgKiB3aWxsIGNvbnRp bnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBzcGVjaWZ5IGZpcm13YXJlIG5hbWUgYW5k Cj4gPnZlcnNpb24uCj4gPj4+ICsgKiBBbGwgb3RoZXIgY2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMg SU5URUxfVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIKPiA+Pj4gK2JlY2F1c2UgSFcKPiA+Pj4gKyAq IGlzIG5vdCBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5kIHRoZXJlIHdpbGwg YmUgbm8KPiA+Pj4gK2Vycm9yIG1lc3NhZ2UKPiA+Pj4gKyAqIGZvciBJTlRFTF9VQ19GSVJNV0FS RV9OT05FIGNhc2VzLgo+ID4+PiArICoKPiA+Pj4gKyAqIFRoZSBETUEtY29weWluZyB0byBIVyBp cyBkb25lIGxhdGVyIHdoZW4gaW50ZWxfaHVjX2xvYWQoKSBpcyBjYWxsZWQuCj4gPj4+ICsgKi8K PiA+Pj4gK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KSB7Cj4gPj4+ICsJc3RydWN0IGludGVsX2h1YyAqaHVjID0gJmRldl9wcml2LT5odWM7Cj4g Pj4+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmaHVjLT5mdzsKPiA+Pj4gKwljb25z dCBjaGFyICpmd19wYXRoID0gTlVMTDsKPiA+Pj4gKwo+ID4+PiArCWh1Y19mdy0+dWNfZndfcGF0 aCA9IE5VTEw7Cj4gPj4+ICsJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FS RV9OT05FOwo+ID4+PiArCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9O T05FOwo+ID4+PiArCWh1Y19mdy0+ZndfdHlwZSA9IElOVEVMX1VDX0ZXX1RZUEVfSFVDOwo+ID4+ PiArCj4gPj4+ICsJaWYgKCFIQVNfSFVDX1VDT0RFKGRldl9wcml2KSkKPiA+Pj4gKwkJcmV0dXJu Owo+ID4+PiArCj4gPj4+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7Cj4gPj4+ICsJCWZ3 X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7Cj4gPj4+ICsJCWh1Y19mdy0+bWFqb3JfdmVyX3dh bnRlZCA9IFNLTF9IVUNfRldfTUFKT1I7Cj4gPj4+ICsJCWh1Y19mdy0+bWlub3JfdmVyX3dhbnRl ZCA9IFNLTF9IVUNfRldfTUlOT1I7Cj4gPj4+ICsJfQo+ID4+PiArCj4gPj4+ICsJaHVjX2Z3LT51 Y19md19wYXRoID0gZndfcGF0aDsKPiA+Pj4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gPj4+ICsKPiA+Pj4gKwlEUk1fREVCVUdfRFJJVkVSKCJI dUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7Cj4gPj4+ICsKPiA+Pj4g KwlpbnRlbF91Y19md19mZXRjaChkZXZfcHJpdiwgaHVjX2Z3KTsgfQo+ID4+PiArCj4gPj4+ICsv KioKPiA+Pj4gKyAqIGludGVsX2h1Y19sb2FkKCkgLSBsb2FkIEh1QyB1Q29kZSB0byBkZXZpY2UK PiA+Pj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCj4gPj4+ICsg Kgo+ID4+PiArICogQ2FsbGVkIGZyb20gZ2VtX2luaXRfaHcoKSBkdXJpbmcgZHJpdmVyIGxvYWRp bmcgYW5kIGFsc28gYWZ0ZXIgYSBHUFUgcmVzZXQuCj4gPj4+ICsgKiBCZSBub3RlIHRoYXQgSHVD IGxvYWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGluZy4KPiA+Pj4gKyAqCj4gPj4+ ICsgKiBUaGUgZmlybXdhcmUgaW1hZ2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZldGNoZWQg aW50byBtZW1vcnkKPiA+Pj4gK2J5IHRoZQo+ID4+PiArICogZWFybGllciBjYWxsIHRvIGludGVs X2h1Y19pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRoYXQKPiA+Pj4gKyAqIGlz IHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBoL3cuCj4gPj4+ ICsgKgo+ID4+PiArICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVycm9yCj4gPj4+ICsgKi8K PiA+Pj4gK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpIHsKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVj LmZ3Owo+ID4+PiArCWludCBlcnI7Cj4gPj4+ICsKPiA+Pj4gKwlpZiAoaHVjX2Z3LT5mZXRjaF9z dGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfTk9ORSkKPiA+Pj4gKwkJcmV0dXJuIDA7Cj4gPj4+ ICsKPiA+Pj4gKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2Fk ICVzXG4iLAo+ID4+PiArCQlodWNfZnctPnVjX2Z3X3BhdGgsCj4gPj4+ICsJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiA+Pj4gKwkJaW50ZWxfdWNfZndf c3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOwo+ID4+PiArCj4gPj4+ICsJaWYgKGh1 Y19mdy0+ZmV0Y2hfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MgJiYKPiA+Pj4g KwkgICAgaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMKQo+ID4+ PiArCQlyZXR1cm4gLUVOT0VYRUM7Cj4gPj4+ICsKPiA+Pj4gKwlodWNfZnctPmxvYWRfc3RhdHVz ID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORzsKPiA+Pj4gKwo+ID4+PiArCXN3aXRjaCAoaHVj X2Z3LT5mZXRjaF9zdGF0dXMpIHsKPiA+Pj4gKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw6 Cj4gPj4+ICsJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICovCj4gPj4+ICsJCWVyciA9IC1F SU87Cj4gPj4+ICsJCWdvdG8gZmFpbDsKPiA+Pj4gKwo+ID4+PiArCWNhc2UgSU5URUxfVUNfRklS TVdBUkVfTk9ORToKPiA+Pj4gKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc6Cj4gPj4+ ICsJZGVmYXVsdDoKPiA+Pj4gKwkJLyogImNhbid0IGhhcHBlbiIgKi8KPiA+Pj4gKwkJV0FSTl9P TkNFKDEsICJIdUMgZncgJXMgaW52YWxpZCBmZXRjaF9zdGF0dXMgJXMgWyVkXVxuIiwKPiA+Pj4g KwkJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiA+Pj4gKwkJCWludGVsX3VjX2Z3X3N0YXR1c19yZXBy KGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiA+Pj4gKwkJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzKTsK PiA+Pj4gKwkJZXJyID0gLUVOWElPOwo+ID4+PiArCQlnb3RvIGZhaWw7Cj4gPj4+ICsKPiA+Pj4g KwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gPj4+ICsJCWJyZWFrOwo+ID4+PiAr CX0KPiA+Pj4gKwo+ID4+PiArCWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiA+Pj4g KwlpZiAoZXJyKQo+ID4+PiArCQlnb3RvIGZhaWw7Cj4gPj4+ICsKPiA+Pj4gKwlodWNfZnctPmxv YWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKPiA+Pj4gKwo+ID4+PiArCURS TV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gPj4+ ICsJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiA+Pj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo aHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ID4+PiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwciho dWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4gPj4KPiA+PkhtbSwgdGhpcyBtZXNzYWdlIHdpbGwgYWx3 YXlzIGRpc3BsYXkgImZldGNoIFNVQ0NFU1MgbG9hZCBTVUNDRVNTIgo+ID4+YXMgYWxsIG90aGVy IGNhc2VzIGFsbCBoYW5kbGVkIGFzIGZhaWwgYmVsb3cuLi4gaXMgaXQgZXhwZWN0ZWQgPwo+IAo+ IFllcy4gSSB0aGluayB3ZSBuZWVkIGEgbWVzc2FnZSBmb3IgdGhlIGNhc2Ugd2hlbiB0aGVyZSBp cyBubyBmYWlsdXJlLgo+IAo+ID4+PiArCj4gPj4+ICsJcmV0dXJuIDA7Cj4gPj4+ICsKPiA+Pj4g K2ZhaWw6Cj4gPj4+ICsJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdB UkVfUEVORElORykKPiA+Pj4gKwkJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX0ZBSUw7Cj4gPj4+ICsKPiA+Pj4gKwlEUk1fRVJST1IoIkZhaWxlZCB0byBjb21wbGV0ZSBI dUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJyKTsKPiA+Pj4gKwo+ID4+PiArCXJldHVy biBlcnI7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gKy8qKgo+ID4+PiArICogaW50ZWxfaHVjX2Zp bmkoKSAtIGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1Qwo+ID4+PiArICogQGRl djogdGhlIGRybSBkZXZpY2UKPiA+Pj4gKyAqCj4gPj4+ICsgKiBDbGVhbnMgdXAgYnkgcmVsZWFz aW5nIHRoZSBodWMgZmlybXdhcmUgR0VNIG9iai4KPiA+Pj4gKyAqLwo+ID4+PiArdm9pZCBpbnRl bF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+Cj4gPj5XaHkgdGhpcyBmdW5j dGlvbiB0YWtlcyBkZXY/IEFsbCBvdGhlciBmdW5jdGlvbnMgdGFrZSBkZXZfcHJpdi4KPiAKPiBM YXN0IEkgaGVhcmQgdGhpcyB3YXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB0b29rIGRldiBhbmQg dGhlcmUgc29tZSBXSVAgYmVmb3JlIHdlIG1ha2UgaXQgdGFrZSBkZXZfcHJpdi4KPiBBcmVrLCBj YW4gd2UgY2hhbmdlIHRoaXMgbm93PwoKSUlSQyB0aGUgcmVmYWN0b3JpbmcgdGhhdCBoYXBwZW5l ZCBjaGFuZ2VkIGRldiB0byBkZXZfcHJpdiBldmVyeXdoZXJlCndoZXJlIHRoZSBsYXR0ZXIgd2Fz IHVzZWQgZXhjbHVzaXZlbHkuIFRoaXMgcGF0Y2hzZXQgd2FzIGNoYW5nZWQKYWNjb3JkaW5nbHkg YW5kIHRoaXMgZnVuY3Rpb24gd2FzIGxlZnQgd2l0aCBkZXYsIGFzIGl0IHVzZXMgaXQgZm9yIGxv Y2sKYWNjZXNzLgoKQnV0IEkgc2VlIHlvdXIgcG9pbnQgd2l0aCBiZWluZyBjb25zaXN0ZW50LgoK PiA+Pk1pY2hhbAo+ID4+Cj4gPj4+ICt7Cj4gPj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4+PiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVj X2Z3ID0gJmRldl9wcml2LT5odWMuZnc7Cj4gPj4+ICsKPiA+Pj4gKwltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gPj4+ICsJaWYgKGh1Y19mdy0+dWNfZndfb2JqKQo+ID4+PiArCQlp OTE1X2dlbV9vYmplY3RfcHV0KGh1Y19mdy0+dWNfZndfb2JqKTsKPiA+Pj4gKwlodWNfZnctPnVj X2Z3X29iaiA9IE5VTEw7Cj4gPj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gPj4+ICsKPiA+Pj4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJF X05PTkU7IH0KPiA+Pj4gKwo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuaAo+ID4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggaW5kZXgg YWQxNDBlMi4uNTdhZWY1NiAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuaAo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCj4g Pj4+IEBAIC0yNCw2ICsyNCw5IEBACj4gPj4+ICAjaWZuZGVmIF9JTlRFTF9VQ19IXwo+ID4+PiAg I2RlZmluZSBfSU5URUxfVUNfSF8KPiA+Pj4KPiA+Pj4gKyNkZWZpbmUgSFVDX1NUQVRVUzIgICAg ICAgICAgICAgX01NSU8oMHhEM0IwKQo+ID4+PiArI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRCAg ICAgICAoMTw8NykKPiA+Pj4gKwo+ID4+PiAgI2luY2x1ZGUgImludGVsX2d1Y19md2lmLmgiCj4g Pj4+ICAjaW5jbHVkZSAiaTkxNV9ndWNfcmVnLmgiCj4gPj4+ICAjaW5jbHVkZSAiaW50ZWxfcmlu Z2J1ZmZlci5oIgo+ID4+PiBAQCAtMTc0LDYgKzE3NywxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsK PiA+Pj4gIAlzdHJ1Y3QgbXV0ZXggc2VuZF9tdXRleDsKPiA+Pj4gIH07Cj4gPj4+Cj4gPj4+ICtz dHJ1Y3QgaW50ZWxfaHVjIHsKPiA+Pj4gKwkvKiBHZW5lcmljIHVDIGZpcm13YXJlIG1hbmFnZW1l bnQgKi8KPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7Cj4gPj4+ICsKPiA+Pj4gKwkvKiBI dUMtc3BlY2lmaWMgYWRkaXRpb25zICovCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICAvKiBpbnRl bF91Yy5jICovCj4gPj4+ICB2b2lkIGludGVsX3VjX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsgIGJvb2wKPiA+Pj4gaW50ZWxfZ3VjX3JlY3Yoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgKnN0YXR1cyk7IEBACj4gPj4+IC0xOTAsNiAr MjAwLDkgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPiA+Pj4gKmRldl9wcml2KTsgIGV4dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0 dXNfcmVwcihlbnVtCj4gPj4+IGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOyAgZXh0ZXJuIGlu dCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QKPiA+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOyAgZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdAo+ID4+PiBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gPj4+ICt2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKnVj X2Z3KTsKPiA+Pj4gK3UzMiBpbnRlbF9ndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ID4+Pgo+ID4+PiAgLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICov Cj4gPj4+ICBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7IEBACj4gPj4+IC0yMDQsNCArMjE3LDkgQEAgdm9pZCBpOTE1X2d1Y19y ZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4+PiAqZGV2X3ByaXYpOyAgdm9pZCBp OTE1X2d1Y191bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPj4+ICpkZXZfcHJp dik7ICBpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ Pj4gKmRldl9wcml2LCB1NjQgY29udHJvbF92YWwpOwo+ID4+Pgo+ID4+PiArLyogaW50ZWxfaHVj X2xvYWRlci5jICovCj4gPj4+ICt2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7IHZvaWQKPiA+Pj4gK2ludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOyBpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0Cj4gPj4+ICtkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gPj4+ICsKPiA+Pj4gICNlbmRpZgo+ID4+PiAtLQo+ID4+PiAy LjcuNAo+ID4+Pgo+ID4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+ID4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPj4+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiA+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiA+SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID5JbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKQ2hlZXJzLApBcmVrCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=