From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Wajdeczko Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Tue, 27 Dec 2016 18:50:56 +0100 Message-ID: <20161227175056.GB61164@mwajdecz-MOBL1.ger.corp.intel.com> References: <1482448344-6505-1-git-send-email-anusha.srivatsa@intel.com> <1482448344-6505-4-git-send-email-anusha.srivatsa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id CAC4689C8F for ; Tue, 27 Dec 2016 17:50:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1482448344-6505-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: Anusha Srivatsa Cc: intel-gfx@lists.freedesktop.org, Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDM6MTI6MTlQTSAtMDgwMCwgQW51c2hhIFNyaXZhdHNh IHdyb3RlOgo+IFRoZSBIdUMgbG9hZGluZyBwcm9jZXNzIGlzIHNpbWlsYXIgdG8gR3VDLiBUaGUg aW50ZWxfdWNfZndfZmV0Y2goKQo+IGlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCj4gCj4gSHVDIGxv YWRpbmcgbmVlZHMgdG8gYmUgYmVmb3JlIEd1QyBsb2FkaW5nLiBUaGUgV09QQ00gc2V0dGluZyBt dXN0Cj4gYmUgZG9uZSBlYXJseSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KPiAKPiB2Mjog cmViYXNlZCBvbi10b3Agb2YgZHJtLWludGVsLW5pZ2h0bHkuCj4gICAgIHJlbW92ZWQgaWYoSEFT X0dVQygpKSBiZWZvcmUgdGhlIGd1YyBjYWxsLiAoRC5Hb3Jkb24pCj4gICAgIHVwZGF0ZSBodWNf dmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgo+IHYzOiByZWJhc2VkIHRvIGRybS1pbnRlbC1uaWdo dGx5LCBjaGFuZ2VkIHRoZSBmaWxlIG5hbWUgZm9ybWF0IHRvCj4gICAgIG1hdGNoIHRoZSBvbmUg aW4gdGhlIGh1YyBwYWNrYWdlLgo+ICAgICBDaGFuZ2VkIGRldi0+ZGV2X3ByaXZhdGUgdG8gdG9f aTkxNSgpCj4gdjQ6IG1vdmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hlcmUgaXQgd2FzLgo+ICAgICBj aGFuZ2Ugd2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgo+IHY1OiByZWJhc2VkICsgY29tbWVu dCBjaGFuZ2VzLgo+IHY3OiByZWJhc2VkLgo+IHY4OiByZWJhc2VkLgo+IHY5OiByZWJhc2VkLiBD aGFuZ2VkIHRoZSB5ZWFyIGluIHRoZSBjb3B5cmlnaHQgbWVzc2FnZSB0byByZWZsZWN0Cj4gdGhl IHJpZ2h0IHllYXIuQ29ycmVjdCB0aGUgY29tbWVudHMscmVtb3ZlIHRoZSB1bndhbnRlZCBXQVJO IG1lc3NhZ2UsCj4gcmVwbGFjZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpIHdpdGggaTkx NV9nZW1fb2JqZWN0X3B1dCgpLk1ha2UgdGhlCj4gcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBu b24tZXh0ZXJuLgo+IHYxMDogcmViYXNlZC4gVXBkYXRlIHRoZSBmaWxlIGNvbnN0cnVjdGlvbiBk b25lIGJ5IEh1Qy4gSXQgaXMgc2ltaWxhciB0bwo+IEd1Qy5BZG9wdGVkIHRoZSBhcHByb2FjaCB1 c2VkIGluLQo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xMDQzNTUv IDxUdnJ0a28gVXJzdWxpbj4KPiB2MTE6IEZpeCB3YXJuaW5ncyByZW1vdmUgb2xkIGRlY2xhcmF0 aW9uCj4gdjEyOiBDaGFuZ2UgZGV2IHRvIGRldl9wcml2IGluIG1hY3JvIGRlZmluaXRpb24uCj4g Q29ycmVjdGVkIGNvbW1lbnRzLgo+IHYxMzogcmViYXNlZC4KPiB2MTQ6IHJlYmFzZWQgb24gdG9w IG9mIGRybS10aXAKPiB2MTU6IHJlYmFzZWQuIFVwZGF0ZWQgZnVuY3Rpb25zIGludGVsX2h1Y19s b2FkKCksaW50ZWxfaHVjX2luaXQoKSBhbmQKPiBpbnRlbF91Y19md19mZXRjaCgpIHRvIGFjY2Vw dCBkZXZfcHJpdiBpbnN0ZWFkIG9mIGRldi4gTW92ZWQgY29udGVudHMKPiBvZiBpbnRlbF9odWMu aCB0byBpbnRlbF91Yy5oCj4gdjE2OiBjaGFuZ2UgU0tMX0ZXXyB0byBTS0xfSFVDX0ZXXy4gQWRk IGludGVsXyBwcmVmaXggdG8gZ3VjX3dvcGNtX3NpemUoKS4KPiBSZW1vdmUgdW53YW50ZWQgY2hl Y2tzIGluIGludGVsX3VjLmguIFJlbmFtZSBodWNfZncgaW4gc3RydWN0IGludGVsX2h1YyB0bwo+ IHNpbXBseSBmdyB0byBhdm9pZCByZWR1bmRlbmN5Lgo+IHYxNzogcmViYXNlZC4KPiAKPiBDYzog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBUZXN0ZWQtYnk6IFhp YW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbnVz aGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog QWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2lu ZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgICAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgg ICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwg IDExICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyB8IDI2MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Yy5oICAgICAgICAgfCAgMTggKysrCj4gIDcgZmlsZXMgY2hhbmdlZCwgMjk2IGluc2Vy dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGlu ZGV4IDUxOTY1MDkuLjQ1YWUxMjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC01Nyw2 ICs1Nyw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCj4gICMgZ2VuZXJhbC1wdXJw b3NlIG1pY3JvY29udHJvbGxlciAoR3VDKSBzdXBwb3J0Cj4gIGk5MTUteSArPSBpbnRlbF91Yy5v IFwKPiAgCSAgaW50ZWxfZ3VjX2xvYWRlci5vIFwKPiArCSAgaW50ZWxfaHVjX2xvYWRlci5vIFwK PiAgCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCj4gIAo+ICAjIGF1dG9nZW5lcmF0ZWQgbnVsbCBy ZW5kZXIgc3RhdGUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA2NDI4NTg4Li44NWE0 N2MyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTYwMCw2ICs2MDAsNyBAQCBz dGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCWlmIChyZXQpCj4gIAkJZ290byBjbGVhbnVwX2lycTsKPiAgCj4gKwlpbnRlbF9odWNfaW5p dChkZXZfcHJpdik7Cj4gIAlpbnRlbF9ndWNfaW5pdChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0ID0g aTkxNV9nZW1faW5pdChkZXZfcHJpdik7Cj4gQEAgLTYyNyw2ICs2MjgsNyBAQCBzdGF0aWMgaW50 IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlEUk1f RVJST1IoImZhaWxlZCB0byBpZGxlIGhhcmR3YXJlOyBjb250aW51aW5nIHRvIHVubG9hZCFcbiIp Owo+ICAJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7Cj4gIGNsZWFudXBfaXJxOgo+ICsJaW50ZWxf aHVjX2ZpbmkoZGV2KTsKPiAgCWludGVsX2d1Y19maW5pKGRldl9wcml2KTsKPiAgCWRybV9pcnFf dW5pbnN0YWxsKGRldik7Cj4gIAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXZfcHJpdik7Cj4gQEAg LTEzMTMsNyArMTMxNSw3IEBAIHZvaWQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAo+ICAJLyogRmx1c2ggYW55IG91dHN0YW5kaW5nIHVucGluX3dvcmsuICov Cj4gIAlkcmFpbl93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKPiAtCj4gKwlpbnRlbF9odWNfZmlu aShkZXYpOwo+ICAJaW50ZWxfZ3VjX2ZpbmkoZGV2X3ByaXYpOwo+ICAJaTkxNV9nZW1fZmluaShk ZXZfcHJpdik7Cj4gIAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IGluZGV4IDFhOTE0MDkuLjdhYzc3MzAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBAQCAtMjE0Nyw2ICsyMTQ3LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgewo+ICAKPiAgCXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsKPiAgCj4gKwlzdHJ1Y3QgaW50ZWxf aHVjIGh1YzsKPiAgCXN0cnVjdCBpbnRlbF9ndWMgZ3VjOwo+ICAKPiAgCXN0cnVjdCBpbnRlbF9j c3IgY3NyOwo+IEBAIC0yOTIxLDcgKzI5MjIsNyBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgI2RlZmluZSBIQVNfR1VDKGRldl9wcml2KQko KGRldl9wcml2KS0+aW5mby5oYXNfZ3VjKQo+ICAjZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2X3By aXYpCShIQVNfR1VDKGRldl9wcml2KSkKPiAgI2RlZmluZSBIQVNfR1VDX1NDSEVEKGRldl9wcml2 KQkoSEFTX0dVQyhkZXZfcHJpdikpCj4gLQo+ICsjZGVmaW5lIEhBU19IVUNfVUNPREUoZGV2X3By aXYpCShIQVNfR1VDKGRldl9wcml2KSkKPiAgI2RlZmluZSBIQVNfUkVTT1VSQ0VfU1RSRUFNRVIo ZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19yZXNvdXJjZV9zdHJlYW1lcikKPiAgCj4g ICNkZWZpbmUgSEFTX1BPT0xFRF9FVShkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX3Bv b2xlZF9ldSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVn LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IGluZGV4IDVlNjM4ZmMu LmY5ODI5ZjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVn LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IEBAIC02MSw5 ICs2MSwxMiBAQAo+ICAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2 KQo+ICAjZGVmaW5lIERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCj4gICNkZWZpbmUgRE1B X0NUUkwJCQlfTU1JTygweGMzMTQpCj4gKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkp Cj4gICNkZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8PDQpCj4gICNkZWZpbmUgICBTVEFSVF9ETUEJ CQkgICgxPDwwKQo+ICAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDAp Cj4gKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJCSAgKDA8PDEpCj4gKyNkZWZpbmUg ICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCj4gICNkZWZpbmUgICBHVUNfV09QQ01f T0ZGU0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAqLwo+ICAjZGVmaW5lIEdVQ19NQVhfSURM RV9DT1VOVAkJX01NSU8oMHhDM0U0KQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCj4gaW5kZXggMDZlM2U1Yy4uOGM3N2U5NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBAQCAtMzA5LDggKzMwOSw4IEBAIHN0YXRpYyBpbnQg Z3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CUk5MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7Cj4g IAo+ICAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCj4gLQlJOTE1X1dSSVRFKERNQV9DVFJM LCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpKTsKPiAtCj4gKwlJOTE1 X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEp IHwKPiArCQlfTUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7Cj4gIAkvKgo+ICAJICog V2FpdCBmb3IgdGhlIERNQSB0byBjb21wbGV0ZSAmIHRoZSBHdUMgdG8gc3RhcnQgdXAuCj4gIAkg KiBOQjogRG9jcyByZWNvbW1lbmQgbm90IHVzaW5nIHRoZSBpbnRlcnJ1cHQgZm9yIGNvbXBsZXRp b24uCj4gQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4g IAo+IC1zdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArdTMyIGludGVsX2d1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgewo+ICAJdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwo+ ICAKPiBAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9n ZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAgCS8qIGluaXQgV09QQ00gKi8KPiAt CUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1Y193b3BjbV9zaXplKGRldl9wcml2KSk7Cj4g KwlJOTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpFLCBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJp dikpOwo+ICAJSTkxNV9XUklURShETUFfR1VDX1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09GRlNF VF9WQUxVRSk7Cj4gIAo+ICAJLyogRW5hYmxlIE1JQSBjYWNoaW5nLiBHdUMgY2xvY2sgZ2F0aW5n IGlzIGRpc2FibGVkLiAqLwo+IEBAIC01MTEsNiArNTExLDcgQEAgaW50IGludGVsX2d1Y19zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJaWYgKGVycikKPiAgCQkJ Z290byBmYWlsOwo+ICAKPiArCQlpbnRlbF9odWNfbG9hZChkZXZfcHJpdik7Cj4gIAkJZXJyID0g Z3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwo+ICAJCWlmICghZXJyKQo+ICAJCQlicmVhazsKPiBA QCAtNjU4LDcgKzY1OSw3IEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19m dy0+dWNvZGVfc2l6ZTsKPiAgCj4gIAkJLyogVG9wIDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAo OEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRleHQpLiAqLwo+IC0JCWlmIChzaXplID4gZ3VjX3dvcGNt X3NpemUoZGV2X3ByaXYpKSB7Cj4gKwkJaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZShk ZXZfcHJpdikpIHsKPiAgCQkJRFJNX0VSUk9SKCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0 IGluIFdPUENNXG4iKTsKPiAgCQkJZ290byBmYWlsOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwLi45OGQ2MzFjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Y19sb2FkZXIuYwo+IEBAIC0wLDAgKzEsMjYzIEBACj4gKy8qCj4gKyAqIENvcHly aWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh Cj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdh cmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUu Cj4gKyAqCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiArI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpbnRlbF91Yy5oIgo+ICsKPiArLyoqCj4gKyAqIERP QzogSHVDIEZpcm13YXJlCj4gKyAqCj4gKyAqIE1vdGl2YXRpb246Cj4gKyAqIEdFTjkgaW50cm9k dWNlcyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhp Z2gKPiArICogRWZmaWNpZW5jeSBWaWRlbyBDb2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBj YW4gdXNlIHRoZSBmaXJtd2FyZQo+ICsgKiBjYXBhYmlsaXRpZXMgYnkgYWRkaW5nIEh1QyBzcGVj aWZpYyBjb21tYW5kcyB0byBiYXRjaCBidWZmZXJzLgo+ICsgKgo+ICsgKiBJbXBsZW1lbnRhdGlv bjoKPiArICogVGhlIHNhbWUgZmlybXdhcmUgbG9hZGVyIGlzIHVzZWQgYXMgdGhlIEd1Qy4gSG93 ZXZlciwgdGhlIGFjdHVhbAo+ICsgKiBsb2FkaW5nIHRvIEhXIGlzIGRlZmVycmVkIHVudGlsIEdF TSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgo+ICsgKgo+ICsgKiBOb3RlIHRoYXQgSHVDIGZpcm13 YXJlIGxvYWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGluZy4KPiArICovCj4gKwo+ ICsjZGVmaW5lIFNLTF9IVUNfRldfTUFKT1IgMDEKPiArI2RlZmluZSBTS0xfSFVDX0ZXX01JTk9S IDA3Cj4gKyNkZWZpbmUgU0tMX0JMRF9OVU0gMTM5OAo+ICsKPiArI2RlZmluZSBIVUNfRldfUEFU SChwbGF0Zm9ybSwgbWFqb3IsIG1pbm9yLCBibGRfbnVtKSBcCj4gKwkiaTkxNS8iIF9fc3RyaW5n aWZ5KHBsYXRmb3JtKSAiX2h1Y192ZXIiIF9fc3RyaW5naWZ5KG1ham9yKSAiXyIgXAo+ICsJX19z dHJpbmdpZnkobWlub3IpICJfIiBfX3N0cmluZ2lmeShibGRfbnVtKSAiLmJpbiIKPiArCj4gKyNk ZWZpbmUgSTkxNV9TS0xfSFVDX1VDT0RFIEhVQ19GV19QQVRIKHNrbCwgU0tMX0hVQ19GV19NQUpP UiwgXAo+ICsJU0tMX0hVQ19GV19NSU5PUiwgU0tMX0JMRF9OVU0pCj4gK01PRFVMRV9GSVJNV0FS RShJOTE1X1NLTF9IVUNfVUNPREUpOwo+ICsKPiArLyoqCj4gKyAqIGh1Y191Y29kZV94ZmVyKCkg LSBETUEncyB0aGUgZmlybXdhcmUKPiArICogQGRldl9wcml2OiB0aGUgZHJtIGRldmljZQo+ICsg Kgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBnZW0gb2JqZWN0IGNvbnRhaW5pbmcgdGhl IGZpcm13YXJlLCBzZXRzIHVwIHRoZSBETUEKCkhtbSwgdGhpcyBmdW5jdGlvbiB0YWtlcyBqdXN0 IGRldl9wcml2Li4uCgoKPiArICogZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBETUEgb3BlcmF0 aW9uIGFuZCB3YWl0cyBmb3IgaXQgdG8gZmluaXNoLgo+ICsgKgo+ICsgKiBUcmFuc2ZlciB0aGUg ZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxl ci4KPiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUK PiArICovCj4gK3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZf cHJpdi0+aHVjLmZ3Owo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwl1bnNpZ25lZCBsb25n IG9mZnNldCA9IDA7Cj4gKwl1MzIgc2l6ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGh1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7 Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQg JWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwl2bWEgPSBpOTE1X2dl bV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAsIDApOwo+ICsJ aWYgKElTX0VSUih2bWEpKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxu IiwgKGludClQVFJfRVJSKHZtYSkpOwo+ICsJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gKwl9Cj4g Kwo+ICsJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVw ZGF0ZXMgdG8gR1RULiAqLwo+ICsJSTkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZB TElEQVRFKTsKPiArCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gKwo+ICsJLyogaW5pdCBXT1BDTSAqLwo+ICsJSTkxNV9XUklURShHVUNf V09QQ01fU0laRSwgaW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKPiArCUk5MTVfV1JJ VEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgfAo+ICsJCQlI VUNfTE9BRElOR19BR0VOVF9HVUMpOwo+ICsKPiArCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3Mg Zm9yIHRoZSB1Q29kZSAqLwo+ICsJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaHVj X2Z3LT5oZWFkZXJfb2Zmc2V0Owo+ICsJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJf MzJfYml0cyhvZmZzZXQpKTsKPiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8z Ml9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwo+ICsKPiArCS8qIEhhcmR3YXJlIGRvZXNuJ3QgbG9v ayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBIdUMuIFNldCBpdCB0byAwLAo+ICsJICogYnV0 IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4KPiArCSAqLwo+ICsJSTkx NV9XUklURShETUFfQUREUl8xX0xPVywgMCk7Cj4gKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElH SCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ICsKPiArCXNpemUgPSBodWNfZnctPmhlYWRl cl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOwo+ICsJSTkxNV9XUklURShETUFfQ09QWV9TSVpF LCBzaXplKTsKPiArCj4gKwkvKiBTdGFydCB0aGUgRE1BICovCj4gKwlJOTE1X1dSSVRFKERNQV9D VFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsKPiArCj4g KwkvKiBXYWl0IGZvciBETUEgdG8gZmluaXNoICovCj4gKwlyZXQgPSB3YWl0X2ZvcigoSTkxNV9S RUFEKERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsKPiArCj4gKwlEUk1fREVCVUdf RFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsK PiArCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FM TCk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2Ug ZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAo+ICsJICogbm93IHRoYXQgRE1BIGhh cyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4KPiAr CSAqLwo+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICsvKioKPiArICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBmaXJtd2FyZSBs b2FkaW5nIHJlcXVlc3QKPiArICogQGRldl9wcml2OiB0aGUgZHJtX2k5MTVfcHJpdmF0ZSBkZXZp Y2UKPiArICoKPiArICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVy IEdFTSBpcyBpbml0aWFsaXNlZC4gVGhlIGxvYWRpbmcKPiArICogd2lsbCBjb250aW51ZSBvbmx5 IHdoZW4gZHJpdmVyIGV4cGxpY2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZCB2ZXJzaW9u Lgo+ICsgKiBBbGwgb3RoZXIgY2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMgSU5URUxfVUNfRklSTVdB UkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVwo+ICsgKiBpcyBub3QgY2FwYWJsZSBvciBkcml2ZXIg eWV0IHN1cHBvcnQgaXQuIEFuZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yIG1lc3NhZ2UKPiArICog Zm9yIElOVEVMX1VDX0ZJUk1XQVJFX05PTkUgY2FzZXMuCj4gKyAqCj4gKyAqIFRoZSBETUEtY29w eWluZyB0byBIVyBpcyBkb25lIGxhdGVyIHdoZW4gaW50ZWxfaHVjX2xvYWQoKSBpcyBjYWxsZWQu Cj4gKyAqLwo+ICt2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGludGVsX2h1YyAqaHVjID0gJmRldl9wcml2LT5odWM7 Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmZ3Owo+ICsJY29uc3QgY2hh ciAqZndfcGF0aCA9IE5VTEw7Cj4gKwo+ICsJaHVjX2Z3LT51Y19md19wYXRoID0gTlVMTDsKPiAr CWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKPiArCWh1Y19m dy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOwo+ICsJaHVjX2Z3LT5md190 eXBlID0gSU5URUxfVUNfRldfVFlQRV9IVUM7Cj4gKwo+ICsJaWYgKCFIQVNfSFVDX1VDT0RFKGRl dl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7 Cj4gKwkJZndfcGF0aCA9IEk5MTVfU0tMX0hVQ19VQ09ERTsKPiArCQlodWNfZnctPm1ham9yX3Zl cl93YW50ZWQgPSBTS0xfSFVDX0ZXX01BSk9SOwo+ICsJCWh1Y19mdy0+bWlub3JfdmVyX3dhbnRl ZCA9IFNLTF9IVUNfRldfTUlOT1I7Cj4gKwl9Cj4gKwo+ICsJaHVjX2Z3LT51Y19md19wYXRoID0g ZndfcGF0aDsKPiArCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVO RElORzsKPiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0 aCAlc1xuIiwgZndfcGF0aCk7Cj4gKwo+ICsJaW50ZWxfdWNfZndfZmV0Y2goZGV2X3ByaXYsIGh1 Y19mdyk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMg dUNvZGUgdG8gZGV2aWNlCj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2 aWNlCj4gKyAqCj4gKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBs b2FkaW5nIGFuZCBhbHNvIGFmdGVyIGEgR1BVIHJlc2V0Lgo+ICsgKiBCZSBub3RlIHRoYXQgSHVD IGxvYWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGluZy4KPiArICoKPiArICogVGhl IGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVt b3J5IGJ5IHRoZQo+ICsgKiBlYXJsaWVyIGNhbGwgdG8gaW50ZWxfaHVjX2luaXQoKSwgc28gaGVy ZSB3ZSBuZWVkIG9ubHkgY2hlY2sgdGhhdAo+ICsgKiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRy YW5zZmVyIHRoZSBpbWFnZSB0byB0aGUgaC93Lgo+ICsgKgo+ICsgKiBSZXR1cm46CW5vbi16ZXJv IGNvZGUgb24gZXJyb3IKPiArICovCj4gK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3 ID0gJmRldl9wcml2LT5odWMuZnc7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmIChodWNfZnctPmZl dGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FKQo+ICsJCXJldHVybiAwOwo+ICsK PiArCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIs Cj4gKwkJaHVjX2Z3LT51Y19md19wYXRoLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1 Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnct PmxvYWRfc3RhdHVzKSk7Cj4gKwo+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IElOVEVM X1VDX0ZJUk1XQVJFX1NVQ0NFU1MgJiYKPiArCSAgICBodWNfZnctPmxvYWRfc3RhdHVzID09IElO VEVMX1VDX0ZJUk1XQVJFX0ZBSUwpCj4gKwkJcmV0dXJuIC1FTk9FWEVDOwo+ICsKPiArCWh1Y19m dy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsKPiArCXN3aXRj aCAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpIHsKPiArCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfRkFJ TDoKPiArCQkvKiBzb21ldGhpbmcgd2VudCB3cm9uZyA6KCAqLwo+ICsJCWVyciA9IC1FSU87Cj4g KwkJZ290byBmYWlsOwo+ICsKPiArCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfTk9ORToKPiArCWNh c2UgSU5URUxfVUNfRklSTVdBUkVfUEVORElORzoKPiArCWRlZmF1bHQ6Cj4gKwkJLyogImNhbid0 IGhhcHBlbiIgKi8KPiArCQlXQVJOX09OQ0UoMSwgIkh1QyBmdyAlcyBpbnZhbGlkIGZldGNoX3N0 YXR1cyAlcyBbJWRdXG4iLAo+ICsJCQlodWNfZnctPnVjX2Z3X3BhdGgsCj4gKwkJCWludGVsX3Vj X2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiArCQkJaHVjX2Z3LT5mZXRj aF9zdGF0dXMpOwo+ICsJCWVyciA9IC1FTlhJTzsKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJY2Fz ZSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOgo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWVy ciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBmYWls Owo+ICsKPiArCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNT Owo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQg JXNcbiIsCj4gKwkJaHVjX2Z3LT51Y19md19wYXRoLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwciho dWNfZnctPmxvYWRfc3RhdHVzKSk7CgpIbW0sIHRoaXMgbWVzc2FnZSB3aWxsIGFsd2F5cyBkaXNw bGF5ICJmZXRjaCBTVUNDRVNTIGxvYWQgU1VDQ0VTUyIKYXMgYWxsIG90aGVyIGNhc2VzIGFsbCBo YW5kbGVkIGFzIGZhaWwgYmVsb3cuLi4gaXMgaXQgZXhwZWN0ZWQgPyAKCj4gKwo+ICsJcmV0dXJu IDA7Cj4gKwo+ICtmYWlsOgo+ICsJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNf RklSTVdBUkVfUEVORElORykKPiArCQlodWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklS TVdBUkVfRkFJTDsKPiArCj4gKwlEUk1fRVJST1IoIkZhaWxlZCB0byBjb21wbGV0ZSBIdUMgdUNv ZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJyKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4g Kwo+ICsvKioKPiArICogaW50ZWxfaHVjX2ZpbmkoKSAtIGNsZWFuIHVwIHJlc291cmNlcyBhbGxv Y2F0ZWQgZm9yIEh1Qwo+ICsgKiBAZGV2OiB0aGUgZHJtIGRldmljZQo+ICsgKgo+ICsgKiBDbGVh bnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUgR0VNIG9iai4KPiArICovCj4gK3Zv aWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKCldoeSB0aGlzIGZ1bmN0 aW9uIHRha2VzIGRldj8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0YWtlIGRldl9wcml2LgoKTWljaGFs Cgo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmZ3Owo+ ICsKPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCWlmIChodWNfZnctPnVj X2Z3X29iaikKPiArCQlpOTE1X2dlbV9vYmplY3RfcHV0KGh1Y19mdy0+dWNfZndfb2JqKTsKPiAr CWh1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKPiArCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+ICsKPiArCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVf Tk9ORTsKPiArfQo+ICsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKPiBpbmRleCBhZDE0MGUyLi41 N2FlZjU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCj4gQEAgLTI0LDYgKzI0LDkgQEAK PiAgI2lmbmRlZiBfSU5URUxfVUNfSF8KPiAgI2RlZmluZSBfSU5URUxfVUNfSF8KPiAgCj4gKyNk ZWZpbmUgSFVDX1NUQVRVUzIgICAgICAgICAgICAgX01NSU8oMHhEM0IwKQo+ICsjZGVmaW5lICAg SFVDX0ZXX1ZFUklGSUVEICAgICAgICgxPDw3KQo+ICsKPiAgI2luY2x1ZGUgImludGVsX2d1Y19m d2lmLmgiCj4gICNpbmNsdWRlICJpOTE1X2d1Y19yZWcuaCIKPiAgI2luY2x1ZGUgImludGVsX3Jp bmdidWZmZXIuaCIKPiBAQCAtMTc0LDYgKzE3NywxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAg CXN0cnVjdCBtdXRleCBzZW5kX211dGV4Owo+ICB9Owo+ICAKPiArc3RydWN0IGludGVsX2h1YyB7 Cj4gKwkvKiBHZW5lcmljIHVDIGZpcm13YXJlIG1hbmFnZW1lbnQgKi8KPiArCXN0cnVjdCBpbnRl bF91Y19mdyBmdzsKPiArCj4gKwkvKiBIdUMtc3BlY2lmaWMgYWRkaXRpb25zICovCj4gK307Cj4g Kwo+ICAvKiBpbnRlbF91Yy5jICovCj4gIHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBib29sIGludGVsX2d1Y19yZWN2KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpzdGF0dXMpOwo+IEBAIC0xOTAsNiAr MjAwLDkgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiAgZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7Cj4gIGV4dGVybiBpbnQgaW50ZWxf Z3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgZXh0ZXJu IGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4gK3UzMiBpbnRlbF9ndWNfd29w Y21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgLyogaTkx NV9ndWNfc3VibWlzc2lvbi5jICovCj4gIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBAQCAtMjA0LDQgKzIxNyw5IEBAIHZv aWQgaTkxNV9ndWNfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiAgdm9pZCBpOTE1X2d1Y191bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gIGludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCk7Cj4gIAo+ICsvKiBpbnRlbF9odWNfbG9hZGVy LmMgKi8KPiArdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICt2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ ICtpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiArCj4gICNlbmRpZgo+IC0tIAo+IDIuNy40Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=