From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Fri, 16 Dec 2016 16:13:14 +0000 Message-ID: <7db31d87-955d-7180-e2e8-8b8a526642e1@linux.intel.com> References: <1481840990-31191-1-git-send-email-anusha.srivatsa@intel.com> <1481840990-31191-4-git-send-email-anusha.srivatsa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 598626EC7B for ; Fri, 16 Dec 2016 16:13:31 +0000 (UTC) In-Reply-To: <1481840990-31191-4-git-send-email-anusha.srivatsa@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: anushasr , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE1LzEyLzIwMTYgMjI6MjksIGFudXNoYXNyIHdyb3RlOgo+IEZyb206IEFudXNoYSBTcml2 YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPgo+IFRoZSBIdUMgbG9hZGluZyBwcm9j ZXNzIGlzIHNpbWlsYXIgdG8gR3VDLiBUaGUgaW50ZWxfdWNfZndfZmV0Y2goKQo+IGlzIHVzZWQg Zm9yIGJvdGggY2FzZXMuCj4KPiBIdUMgbG9hZGluZyBuZWVkcyB0byBiZSBiZWZvcmUgR3VDIGxv YWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nIG11c3QKPiBiZSBkb25lIGVhcmx5IGJlZm9yZSBsb2Fk aW5nIGFueSBvZiB0aGVtLgo+Cj4gdjI6IHJlYmFzZWQgb24tdG9wIG9mIGRybS1pbnRlbC1uaWdo dGx5Lgo+ICAgICByZW1vdmVkIGlmKEhBU19HVUMoKSkgYmVmb3JlIHRoZSBndWMgY2FsbC4gKEQu R29yZG9uKQo+ICAgICB1cGRhdGUgaHVjX3ZlcnNpb24gbnVtYmVyIG9mIGZvcm1hdC4KPiB2Mzog cmViYXNlZCB0byBkcm0taW50ZWwtbmlnaHRseSwgY2hhbmdlZCB0aGUgZmlsZSBuYW1lIGZvcm1h dCB0bwo+ICAgICBtYXRjaCB0aGUgb25lIGluIHRoZSBodWMgcGFja2FnZS4KPiAgICAgQ2hhbmdl ZCBkZXYtPmRldl9wcml2YXRlIHRvIHRvX2k5MTUoKQo+IHY0OiBtb3ZlZCBmdW5jdGlvbiBiYWNr IHRvIHdoZXJlIGl0IHdhcy4KPiAgICAgY2hhbmdlIHdhaXRfZm9yX2F0b21pYyB0byB3YWl0X2Zv ci4KPiB2NTogcmViYXNlZCArIGNvbW1lbnQgY2hhbmdlcy4KPiB2NzogcmViYXNlZC4KPiB2ODog cmViYXNlZC4KPiB2OTogcmViYXNlZC4gQ2hhbmdlZCB0aGUgeWVhciBpbiB0aGUgY29weXJpZ2h0 IG1lc3NhZ2UgdG8gcmVmbGVjdAo+IHRoZSByaWdodCB5ZWFyLkNvcnJlY3QgdGhlIGNvbW1lbnRz LHJlbW92ZSB0aGUgdW53YW50ZWQgV0FSTiBtZXNzYWdlLAo+IHJlcGxhY2UgZHJtX2dlbV9vYmpl Y3RfdW5yZWZlcmVuY2UoKSB3aXRoIGk5MTVfZ2VtX29iamVjdF9wdXQoKS5NYWtlIHRoZQo+IHBy b3RvdHlwZXMgaW4gaW50ZWxfaHVjLmggbm9uLWV4dGVybi4KPiB2MTA6IHJlYmFzZWQuIFVwZGF0 ZSB0aGUgZmlsZSBjb25zdHJ1Y3Rpb24gZG9uZSBieSBIdUMuIEl0IGlzIHNpbWlsYXIgdG8KPiBH dUMuQWRvcHRlZCB0aGUgYXBwcm9hY2ggdXNlZCBpbi0KPiBodHRwczovL3BhdGNod29yay5mcmVl ZGVza3RvcC5vcmcvcGF0Y2gvMTA0MzU1LyA8VHZydGtvIFVyc3VsaW4+Cj4gdjExOiBGaXggd2Fy bmluZ3MgcmVtb3ZlIG9sZCBkZWNsYXJhdGlvbgo+IHYxMjogQ2hhbmdlIGRldiB0byBkZXZfcHJp diBpbiBtYWNybyBkZWZpbml0aW9uLgo+IENvcnJlY3RlZCBjb21tZW50cy4KPiB2MTM6IHJlYmFz ZWQuCj4gdjE0OiByZWJhc2VkIG9uIHRvcCBvZiBkcm0tdGlwCj4gdjE1OiByZWJhc2VkLiBVcGRh dGVkIGZ1bmN0aW9ucyBpbnRlbF9odWNfbG9hZCgpLGludGVsX2h1Y19pbml0KCkgYW5kCj4gaW50 ZWxfdWNfZndfZmV0Y2goKSB0byBhY2NlcHQgZGV2X3ByaXYgaW5zdGVhZCBvZiBkZXYuIE1vdmVk IGNvbnRlbnRzCj4gb2YgaW50ZWxfaHVjLmggdG8gaW50ZWxfdWMuaAo+IHYxNjogY2hhbmdlIFNL TF9GV18gdG8gU0tMX0hVQ19GV18uIEFkZCBpbnRlbF8gcHJlZml4IHRvIGd1Y193b3BjbV9zaXpl KCkuCj4gUmVtb3ZlIHVud2FudGVkIGNoZWNrcyBpbiBpbnRlbF91Yy5oLiBSZW5hbWUgaHVjX2Z3 IGluIHN0cnVjdCBpbnRlbF9odWMgdG8KPiBzaW1wbHkgZncgdG8gYXZvaWQgcmVkdW5kZW5jeS4K Pgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IFRlc3Rl ZC1ieTogWGlhbmcgSGFpaGFvIDxoYWloYW8ueGlhbmdAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYt Ynk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiBTaWduZWQt b2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQZXRl ciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19yZWcuaCAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9h ZGVyLmMgfCAgMTEgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5j IHwgMjY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VjLmggICAgICAgICB8ICAxOCArKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAy OTcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKPiBpbmRleCA1MTk2NTA5Li40NWFlMTI0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBA QCAtNTcsNiArNTcsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ICAjIGdlbmVy YWwtcHVycG9zZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3VwcG9ydAo+ICBpOTE1LXkgKz0gaW50 ZWxfdWMubyBcCj4gIAkgIGludGVsX2d1Y19sb2FkZXIubyBcCj4gKwkgIGludGVsX2h1Y19sb2Fk ZXIubyBcCj4gIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwo+Cj4gICMgYXV0b2dlbmVyYXRlZCBu dWxsIHJlbmRlciBzdGF0ZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDY0Mjg1ODgu Ljg1YTQ3YzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNjAwLDYgKzYwMCw3 IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGNsZWFudXBfaXJxOwo+Cj4gKwlpbnRlbF9odWNf aW5pdChkZXZfcHJpdik7Cj4gIAlpbnRlbF9ndWNfaW5pdChkZXZfcHJpdik7Cj4KPiAgCXJldCA9 IGk5MTVfZ2VtX2luaXQoZGV2X3ByaXYpOwo+IEBAIC02MjcsNiArNjI4LDcgQEAgc3RhdGljIGlu dCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJRFJN X0VSUk9SKCJmYWlsZWQgdG8gaWRsZSBoYXJkd2FyZTsgY29udGludWluZyB0byB1bmxvYWQhXG4i KTsKPiAgCWk5MTVfZ2VtX2ZpbmkoZGV2X3ByaXYpOwo+ICBjbGVhbnVwX2lycToKPiArCWludGVs X2h1Y19maW5pKGRldik7Cj4gIAlpbnRlbF9ndWNfZmluaShkZXZfcHJpdik7Cj4gIAlkcm1faXJx X3VuaW5zdGFsbChkZXYpOwo+ICAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2X3ByaXYpOwo+IEBA IC0xMzEzLDcgKzEzMTUsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+Cj4gIAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRpbmcgdW5waW5fd29yay4gKi8K PiAgCWRyYWluX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwo+IC0KPiArCWludGVsX2h1Y19maW5p KGRldik7Cj4gIAlpbnRlbF9ndWNfZmluaShkZXZfcHJpdik7Cj4gIAlpOTE1X2dlbV9maW5pKGRl dl9wcml2KTsKPiAgCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZfcHJpdik7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gaW5kZXggNDE5OWQyNi4uYmQ1ZjIzNSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC0yMTM0LDYgKzIxMzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7Cj4KPiAgCXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsKPgo+ICsJc3RydWN0IGludGVsX2h1YyBo dWM7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3VjIGd1YzsKPgo+ICAJc3RydWN0IGludGVsX2NzciBjc3I7 Cj4gQEAgLTI5MDgsNyArMjkwOSw3IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAjZGVmaW5lIEhBU19HVUMoZGV2X3ByaXYpCSgoZGV2X3By aXYpLT5pbmZvLmhhc19ndWMpCj4gICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXZfcHJpdikJKEhB U19HVUMoZGV2X3ByaXYpKQo+ICAjZGVmaW5lIEhBU19HVUNfU0NIRUQoZGV2X3ByaXYpCShIQVNf R1VDKGRldl9wcml2KSkKPiAtCj4gKyNkZWZpbmUgSEFTX0hVQ19VQ09ERShkZXZfcHJpdikJKEhB U19HVUMoZGV2X3ByaXYpKQo+ICAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXZfcHJp dikgKChkZXZfcHJpdiktPmluZm8uaGFzX3Jlc291cmNlX3N0cmVhbWVyKQo+Cj4gICNkZWZpbmUg SEFTX1BPT0xFRF9FVShkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX3Bvb2xlZF9ldSkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IGluZGV4IDVlNjM4ZmMuLmY5ODI5ZjYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IEBAIC02MSw5ICs2MSwxMiBA QAo+ICAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2KQo+ICAjZGVm aW5lIERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCj4gICNkZWZpbmUgRE1BX0NUUkwJCQlf TU1JTygweGMzMTQpCj4gKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCj4gICNkZWZp bmUgICBVT1NfTU9WRQkJCSAgKDE8PDQpCj4gICNkZWZpbmUgICBTVEFSVF9ETUEJCQkgICgxPDww KQo+ICAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCj4gKyNkZWZp bmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJCSAgKDA8PDEpCj4gKyNkZWZpbmUgICBIVUNfTE9B RElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCj4gICNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VUX1ZB TFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAqLwo+ICAjZGVmaW5lIEdVQ19NQVhfSURMRV9DT1VOVAkJ X01NSU8oMHhDM0U0KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ IGluZGV4IDA5ZTQ2M2IuLjIyNTc0OTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2xvYWRlci5jCj4gQEAgLTMwOSw4ICszMDksOCBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94 ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlJOTE1X1dSSVRF KERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+Cj4gIAkvKiBGaW5h bGx5IHN0YXJ0IHRoZSBETUEgKi8KPiAtCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklU X0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkpOwo+IC0KPiArCUk5MTVfV1JJVEUoRE1BX0NU UkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkgfAo+ICsJCV9NQVNL RURfQklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsKPiAgCS8qCj4gIAkgKiBXYWl0IGZvciB0aGUg RE1BIHRvIGNvbXBsZXRlICYgdGhlIEd1QyB0byBzdGFydCB1cC4KPiAgCSAqIE5COiBEb2NzIHJl Y29tbWVuZCBub3QgdXNpbmcgdGhlIGludGVycnVwdCBmb3IgY29tcGxldGlvbi4KPiBAQCAtMzM0 LDcgKzMzNCw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldHVybiByZXQ7Cj4gIH0KPgo+IC1zdGF0aWMgdTMy IGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdTMy IGludGVsX2d1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgewo+ICAJdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwo+Cj4gQEAgLTM3Miw3ICsz NzIsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JD RVdBS0VfQUxMKTsKPgo+ICAJLyogaW5pdCBXT1BDTSAqLwo+IC0JSTkxNV9XUklURShHVUNfV09Q Q01fU0laRSwgZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKPiArCUk5MTVfV1JJVEUoR1VDX1dP UENNX1NJWkUsIGludGVsX2d1Y193b3BjbV9zaXplKGRldl9wcml2KSk7Cj4gIAlJOTE1X1dSSVRF KERNQV9HVUNfV09QQ01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFKTsKPgo+ICAJLyog RW5hYmxlIE1JQSBjYWNoaW5nLiBHdUMgY2xvY2sgZ2F0aW5nIGlzIGRpc2FibGVkLiAqLwo+IEBA IC01MTEsNiArNTExLDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAkJaWYgKGVycikKPiAgCQkJZ290byBmYWlsOwo+Cj4gKwkJaW50 ZWxfaHVjX2xvYWQoZGV2X3ByaXYpOwo+ICAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2 KTsKCk91dCBvZiBjdXJpb3NpdHkgLSBob3cgY29tZSBpdCBpcyBPSyB0byBsb2FkIEh1QyBiZWZv cmUgdGhlIEd1QywgaWYgdGhlIApIdUMgbmVlZHMgdGhlIEd1Qz8KClJlZ2FyZHMsCgpUdnJ0a28K Cj4gIAkJaWYgKCFlcnIpCj4gIAkJCWJyZWFrOwo+IEBAIC02NTgsNyArNjU5LDcgQEAgdm9pZCBp bnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ c2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwo+Cj4gIAkJLyog VG9wIDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRleHQp LiAqLwo+IC0JCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKSB7Cj4gKwkJaWYg KHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsKPiAgCQkJRFJNX0VSUk9S KCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdPUENNXG4iKTsKPiAgCQkJZ290byBm YWlsOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj X2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4wZjkyOWNjCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+IEBAIC0w LDAgKzEsMjY0IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0 aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4g KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsjaW5jbHVkZSA8 bGludXgvZmlybXdhcmUuaD4KPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJp bnRlbF91Yy5oIgo+ICsKPiArLyoqCj4gKyAqIERPQzogSHVDIEZpcm13YXJlCj4gKyAqCj4gKyAq IE1vdGl2YXRpb246Cj4gKyAqIEdFTjkgaW50cm9kdWNlcyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdh cmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhpZ2gKPiArICogRWZmaWNpZW5jeSBWaWRlbyBD b2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQo+ICsgKiBj YXBhYmlsaXRpZXMgYnkgYWRkaW5nIEh1QyBzcGVjaWZpYyBjb21tYW5kcyB0byBiYXRjaCBidWZm ZXJzLgo+ICsgKgo+ICsgKiBJbXBsZW1lbnRhdGlvbjoKPiArICogVGhlIHNhbWUgZmlybXdhcmUg bG9hZGVyIGlzIHVzZWQgYXMgdGhlIEd1Qy4gSG93ZXZlciwgdGhlIGFjdHVhbAo+ICsgKiBsb2Fk aW5nIHRvIEhXIGlzIGRlZmVycmVkIHVudGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgo+ ICsgKgo+ICsgKiBOb3RlIHRoYXQgSHVDIGZpcm13YXJlIGxvYWRpbmcgbXVzdCBiZSBkb25lIGJl Zm9yZSBHdUMgbG9hZGluZy4KPiArICovCj4gKwo+ICsjZGVmaW5lIFNLTF9IVUNfRldfTUFKT1Ig MDEKPiArI2RlZmluZSBTS0xfSFVDX0ZXX01JTk9SIDA3Cj4gKyNkZWZpbmUgU0tMX0JMRF9OVU0g MTM5OAo+ICsKPiArI2RlZmluZSBIVUNfRldfUEFUSChwbGF0Zm9ybSwgbWFqb3IsIG1pbm9yLCBi bGRfbnVtKSBcCj4gKwkiaTkxNS8iIF9fc3RyaW5naWZ5KHBsYXRmb3JtKSAiX2h1Y192ZXIiIF9f c3RyaW5naWZ5KG1ham9yKSAiXyIgXAo+ICsJX19zdHJpbmdpZnkobWlub3IpICJfIiBfX3N0cmlu Z2lmeShibGRfbnVtKSAiLmJpbiIKPiArCj4gKyNkZWZpbmUgSTkxNV9TS0xfSFVDX1VDT0RFIEhV Q19GV19QQVRIKHNrbCwgU0tMX0hVQ19GV19NQUpPUiwgXAo+ICsJU0tMX0hVQ19GV19NSU5PUiwg U0tMX0JMRF9OVU0pCj4gK01PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOwo+ICsK PiArLyoqCj4gKyAqIGh1Y191Y29kZV94ZmVyKCkgLSBETUEncyB0aGUgZmlybXdhcmUKPiArICog QGRldl9wcml2OiB0aGUgZHJtIGRldmljZQo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHRha2Vz IHRoZSBnZW0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpcm13YXJlLCBzZXRzIHVwIHRoZSBETUEK PiArICogZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBETUEgb3BlcmF0aW9uIGFuZCB3YWl0cyBm b3IgaXQgdG8gZmluaXNoLgo+ICsgKgo+ICsgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2Ug dG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxlci4KPiArICoKPiArICog UmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUKPiArICovCj4gKwo+ICtz dGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiArewo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5m dzsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAw Owo+ICsJdTMyIHNpemU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOwo+ICsJaWYgKHJl dCkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQp Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dn dHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKPiArCWlmIChJU19FUlIo dm1hKSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRS X0VSUih2bWEpKTsKPiArCQlyZXR1cm4gUFRSX0VSUih2bWEpOwo+ICsJfQo+ICsKPiArCS8qIElu dmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIEdU VC4gKi8KPiArCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7Cj4g Kwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp Owo+ICsKPiArCS8qIGluaXQgV09QQ00gKi8KPiArCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUs IGludGVsX2d1Y193b3BjbV9zaXplKGRldl9wcml2KSk7Cj4gKwlJOTE1X1dSSVRFKERNQV9HVUNf V09QQ01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHwKPiArCQkJSFVDX0xPQURJTkdf QUdFTlRfR1VDKTsKPiArCj4gKwkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNv ZGUgKi8KPiArCW9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIGh1Y19mdy0+aGVhZGVy X29mZnNldDsKPiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zm c2V0KSk7Cj4gKwlJOTE1X1dSSVRFKERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZz ZXQpICYgMHhGRkZGKTsKPiArCj4gKwkvKiBIYXJkd2FyZSBkb2Vzbid0IGxvb2sgYXQgZGVzdGlu YXRpb24gYWRkcmVzcyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwKPiArCSAqIGJ1dCBzdGlsbCBwcm9n cmFtIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuCj4gKwkgKi8KPiArCUk5MTVfV1JJVEUoRE1B X0FERFJfMV9MT1csIDApOwo+ICsJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERNQV9BRERS RVNTX1NQQUNFX1dPUENNKTsKPiArCj4gKwlzaXplID0gaHVjX2Z3LT5oZWFkZXJfc2l6ZSArIGh1 Y19mdy0+dWNvZGVfc2l6ZTsKPiArCUk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwgc2l6ZSk7Cj4g Kwo+ICsJLyogU3RhcnQgdGhlIERNQSAqLwo+ICsJSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tF RF9CSVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwgU1RBUlRfRE1BKSk7Cj4gKwo+ICsJLyogV2FpdCBm b3IgRE1BIHRvIGZpbmlzaCAqLwo+ICsJcmV0ID0gd2FpdF9mb3IoKEk5MTVfUkVBRChETUFfQ1RS TCkgJiBTVEFSVF9ETUEpID09IDAsIDEwMCk7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiSHVD IERNQSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJldCk7Cj4gKwo+ICsJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICsKPiAr CS8qCj4gKwkgKiBXZSBrZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1 bWUuIEJ1dCB3ZSBjYW4gdW5waW4gaXQKPiArCSAqIG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVk LCBzbyBpdCBkb2Vzbid0IGNvbnRpbnVlIHRvIHRha2UgdXAgc3BhY2UuCj4gKwkgKi8KPiArCWk5 MTVfdm1hX3VucGluKHZtYSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArLyoqCj4g KyAqIGludGVsX2h1Y19pbml0KCkgLSBpbml0aWF0ZSBIdUMgZmlybXdhcmUgbG9hZGluZyByZXF1 ZXN0Cj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCj4gKyAqCj4g KyAqIENhbGxlZCBlYXJseSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJ1dCBhZnRlciBHRU0gaXMgaW5p dGlhbGlzZWQuIFRoZSBsb2FkaW5nCj4gKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRyaXZl ciBleHBsaWNpdGx5IHNwZWNpZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4KPiArICogQWxs IG90aGVyIGNhc2VzIGFyZSBjb25zaWRlcmVkIGFzIElOVEVMX1VDX0ZJUk1XQVJFX05PTkUgZWl0 aGVyIGJlY2F1c2UgSFcKPiArICogaXMgbm90IGNhcGFibGUgb3IgZHJpdmVyIHlldCBzdXBwb3J0 IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBubyBlcnJvciBtZXNzYWdlCj4gKyAqIGZvciBJTlRFTF9V Q19GSVJNV0FSRV9OT05FIGNhc2VzLgo+ICsgKgo+ICsgKiBUaGUgRE1BLWNvcHlpbmcgdG8gSFcg aXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y19sb2FkKCkgaXMgY2FsbGVkLgo+ICsgKi8KPiAr dm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g K3sKPiArCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOwo+ICsJc3RydWN0 IGludGVsX3VjX2Z3ICpodWNfZncgPSAmaHVjLT5mdzsKPiArCWNvbnN0IGNoYXIgKmZ3X3BhdGgg PSBOVUxMOwo+ICsKPiArCWh1Y19mdy0+dWNfZndfcGF0aCA9IE5VTEw7Cj4gKwlodWNfZnctPmZl dGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7Cj4gKwlodWNfZnctPmxvYWRfc3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKPiArCWh1Y19mdy0+ZndfdHlwZSA9IElOVEVM X1VDX0ZXX1RZUEVfSFVDOwo+ICsKPiArCWlmICghSEFTX0hVQ19VQ09ERShkZXZfcHJpdikpCj4g KwkJcmV0dXJuOwo+ICsKPiArCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgewo+ICsJCWZ3X3Bh dGggPSBJOTE1X1NLTF9IVUNfVUNPREU7Cj4gKwkJaHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0g U0tMX0hVQ19GV19NQUpPUjsKPiArCQlodWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBTS0xfSFVD X0ZXX01JTk9SOwo+ICsJfQo+ICsKPiArCWh1Y19mdy0+dWNfZndfcGF0aCA9IGZ3X3BhdGg7Cj4g KwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gKwo+ ICsJRFJNX0RFQlVHX0RSSVZFUigiSHVDIGZpcm13YXJlIHBlbmRpbmcsIHBhdGggJXNcbiIsIGZ3 X3BhdGgpOwo+ICsKPiArCWludGVsX3VjX2Z3X2ZldGNoKGRldl9wcml2LCBodWNfZncpOwo+ICt9 Cj4gKwo+ICsvKioKPiArICogaW50ZWxfaHVjX2xvYWQoKSAtIGxvYWQgSHVDIHVDb2RlIHRvIGRl dmljZQo+ICsgKiBAZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9wcml2YXRlIGRldmljZQo+ICsgKgo+ ICsgKiBDYWxsZWQgZnJvbSBnZW1faW5pdF9odygpIGR1cmluZyBkcml2ZXIgbG9hZGluZyBhbmQg YWxzbyBhZnRlciBhIEdQVSByZXNldC4KPiArICogQmUgbm90ZSB0aGF0IEh1QyBsb2FkaW5nIG11 c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCj4gKyAqCj4gKyAqIFRoZSBmaXJtd2FyZSBp bWFnZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gZmV0Y2hlZCBpbnRvIG1lbW9yeSBieSB0aGUK PiArICogZWFybGllciBjYWxsIHRvIGludGVsX2h1Y19pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBv bmx5IGNoZWNrIHRoYXQKPiArICogaXMgc3VjY2VlZGVkLCBhbmQgdGhlbiB0cmFuc2ZlciB0aGUg aW1hZ2UgdG8gdGhlIGgvdy4KPiArICoKPiArICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVy cm9yCj4gKyAqLwo+ICtpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJp di0+aHVjLmZ3Owo+ICsJaW50IGVycjsKPiArCj4gKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMg PT0gSU5URUxfVUNfRklSTVdBUkVfTk9ORSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlEUk1fREVC VUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAo+ICsJCWh1Y19m dy0+dWNfZndfcGF0aCwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNo X3N0YXR1cyksCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1 cykpOwo+ICsKPiArCWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FS RV9TVUNDRVNTICYmCj4gKwkgICAgaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJN V0FSRV9GQUlMKQo+ICsJCXJldHVybiAtRU5PRVhFQzsKPiArCj4gKwlodWNfZnctPmxvYWRfc3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORzsKPiArCj4gKwlzd2l0Y2ggKGh1Y19mdy0+ ZmV0Y2hfc3RhdHVzKSB7Cj4gKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw6Cj4gKwkJLyog c29tZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KPiArCQllcnIgPSAtRUlPOwo+ICsJCWdvdG8gZmFp bDsKPiArCj4gKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX05PTkU6Cj4gKwljYXNlIElOVEVMX1VD X0ZJUk1XQVJFX1BFTkRJTkc6Cj4gKwlkZWZhdWx0Ogo+ICsJCS8qICJjYW4ndCBoYXBwZW4iICov Cj4gKwkJV0FSTl9PTkNFKDEsICJIdUMgZncgJXMgaW52YWxpZCBmZXRjaF9zdGF0dXMgJXMgWyVk XVxuIiwKPiArCQkJaHVjX2Z3LT51Y19md19wYXRoLAo+ICsJCQlpbnRlbF91Y19md19zdGF0dXNf cmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCj4gKwkJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzKTsK PiArCQllcnIgPSAtRU5YSU87Cj4gKwkJZ290byBmYWlsOwo+ICsKPiArCWNhc2UgSU5URUxfVUNf RklSTVdBUkVfU1VDQ0VTUzoKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwllcnIgPSBodWNfdWNv ZGVfeGZlcihkZXZfcHJpdik7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gZmFpbDsKPiArCj4gKwlo dWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKPiArCj4gKwlE Uk1fREVCVUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAo+ICsJ CWh1Y19mdy0+dWNfZndfcGF0aCwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnct PmZldGNoX3N0YXR1cyksCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2Fk X3N0YXR1cykpOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZmFpbDoKPiArCWlmIChodWNfZnct PmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkcpCj4gKwkJaHVjX2Z3LT5s b2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7Cj4gKwo+ICsJRFJNX0VSUk9SKCJG YWlsZWQgdG8gY29tcGxldGUgSHVDIHVDb2RlIGxvYWQgd2l0aCByZXQgJWRcbiIsIGVycik7Cj4g Kwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2h1Y19maW5pKCkg LSBjbGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKPiArICogQGRldjogdGhlIGRy bSBkZXZpY2UKPiArICoKPiArICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2luZyB0aGUgaHVjIGZpcm13 YXJlIEdFTSBvYmouCj4gKyAqLwo+ICt2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5o dWMuZnc7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKGh1 Y19mdy0+dWNfZndfb2JqKQo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQoaHVjX2Z3LT51Y19md19v YmopOwo+ICsJaHVjX2Z3LT51Y19md19vYmogPSBOVUxMOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9OT05FOwo+ICt9Cj4gKwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAo+IGluZGV4IGFk MTQwZTIuLjU3YWVmNTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKPiBAQCAtMjQsNiAr MjQsOSBAQAo+ICAjaWZuZGVmIF9JTlRFTF9VQ19IXwo+ICAjZGVmaW5lIF9JTlRFTF9VQ19IXwo+ Cj4gKyNkZWZpbmUgSFVDX1NUQVRVUzIgICAgICAgICAgICAgX01NSU8oMHhEM0IwKQo+ICsjZGVm aW5lICAgSFVDX0ZXX1ZFUklGSUVEICAgICAgICgxPDw3KQo+ICsKPiAgI2luY2x1ZGUgImludGVs X2d1Y19md2lmLmgiCj4gICNpbmNsdWRlICJpOTE1X2d1Y19yZWcuaCIKPiAgI2luY2x1ZGUgImlu dGVsX3JpbmdidWZmZXIuaCIKPiBAQCAtMTc0LDYgKzE3NywxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3Vj IHsKPiAgCXN0cnVjdCBtdXRleCBzZW5kX211dGV4Owo+ICB9Owo+Cj4gK3N0cnVjdCBpbnRlbF9o dWMgewo+ICsJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5hZ2VtZW50ICovCj4gKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgZnc7Cj4gKwo+ICsJLyogSHVDLXNwZWNpZmljIGFkZGl0aW9ucyAqLwo+ICt9 Owo+ICsKPiAgLyogaW50ZWxfdWMuYyAqLwo+ICB2b2lkIGludGVsX3VjX2luaXRfZWFybHkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgYm9vbCBpbnRlbF9ndWNfcmVjdihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiAqc3RhdHVzKTsKPiBAQCAtMTkw LDYgKzIwMCw5IEBAIGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gIGV4dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0 dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ICBleHRlcm4gaW50IGlu dGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGV4 dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+ICt2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwo+ICt1MzIgaW50ZWxfZ3Vj X3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPgo+ICAvKiBp OTE1X2d1Y19zdWJtaXNzaW9uLmMgKi8KPiAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IEBAIC0yMDQsNCArMjE3LDkgQEAg dm9pZCBpOTE1X2d1Y19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ICB2b2lkIGk5MTVfZ3VjX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiAgaW50IGk5MTVfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTY0IGNvbnRyb2xfdmFsKTsKPgo+ICsvKiBpbnRlbF9odWNfbG9hZGVy LmMgKi8KPiArdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICt2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ ICtpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiArCj4gICNlbmRpZgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=