From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff McGee Subject: Re: [PATCH 3/7] drm/i915/huc: Add HuC fw loading support Date: Mon, 31 Oct 2016 13:21:09 -0700 Message-ID: <20161031202109.GO18646@jeffdesk> References: <1477699546-6624-1-git-send-email-anusha.srivatsa@intel.com> <1477699546-6624-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3462B6E0D0 for ; Mon, 31 Oct 2016 20:11:36 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1477699546-6624-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 T24gRnJpLCBPY3QgMjgsIDIwMTYgYXQgMDU6MDU6NDJQTSAtMDcwMCwgQW51c2hhIFNyaXZhdHNh IHdyb3RlOgo+IEZyb206IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+ IAo+IFRoZSBIdUMgbG9hZGluZyBwcm9jZXNzIGlzIHNpbWlsYXIgdG8gR3VDLiBUaGUgaW50ZWxf dWNfZndfZmV0Y2goKQo+IGlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCj4gCj4gSHVDIGxvYWRpbmcg bmVlZHMgdG8gYmUgYmVmb3JlIEd1QyBsb2FkaW5nLiBUaGUgV09QQ00gc2V0dGluZyBtdXN0Cj4g YmUgZG9uZSBlYXJseSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KPiAKPiB2MjogcmViYXNl ZCBvbi10b3Agb2YgZHJtLWludGVsLW5pZ2h0bHkuCj4gICAgIHJlbW92ZWQgaWYoSEFTX0dVQygp KSBiZWZvcmUgdGhlIGd1YyBjYWxsLiAoRC5Hb3Jkb24pCj4gICAgIHVwZGF0ZSBodWNfdmVyc2lv biBudW1iZXIgb2YgZm9ybWF0Lgo+IHYzOiByZWJhc2VkIHRvIGRybS1pbnRlbC1uaWdodGx5LCBj aGFuZ2VkIHRoZSBmaWxlIG5hbWUgZm9ybWF0IHRvCj4gICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhl IGh1YyBwYWNrYWdlLgo+ICAgICBDaGFuZ2VkIGRldi0+ZGV2X3ByaXZhdGUgdG8gdG9faTkxNSgp Cj4gdjQ6IG1vdmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hlcmUgaXQgd2FzLgo+ICAgICBjaGFuZ2Ug d2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgo+IHY1OiByZWJhc2VkICsgY29tbWVudCBjaGFu Z2VzLgo+IHY3OiByZWJhc2VkLgo+IHY4OiByZWJhc2VkLgo+IHY5OiByZWJhc2VkLiBDaGFuZ2Vk IHRoZSB5ZWFyIGluIHRoZSBjb3B5cmlnaHQgbWVzc2FnZSB0byByZWZsZWN0Cj4gdGhlIHJpZ2h0 IHllYXIuQ29ycmVjdCB0aGUgY29tbWVudHMscmVtb3ZlIHRoZSB1bndhbnRlZCBXQVJOIG1lc3Nh Z2UsCj4gcmVwbGFjZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpIHdpdGggaTkxNV9nZW1f b2JqZWN0X3B1dCgpLk1ha2UgdGhlCj4gcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBub24tZXh0 ZXJuLgo+IAo+IFRlc3RlZC1ieTogWGlhbmcgSGFpaGFvIDxoYWloYW8ueGlhbmdAaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KPiBSZXZp ZXdlZC1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfcmVnLmggICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjLmggICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oICAg ICAgICB8ICA0MiArKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRl ci5jIHwgMjYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDggZmlsZXMgY2hh bmdlZCwgMzE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPiBpbmRleCA2MTIzNDAwLi4wNTI4MTY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKPiBAQCAtNTIsNiArNTIsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ICAK PiAgIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBvcnQKPiAgaTkx NS15ICs9IGludGVsX2d1Y19sb2FkZXIubyBcCj4gKwkgIGludGVsX2h1Y19sb2FkZXIubyBcCj4g IAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwo+ICAKPiAgIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVu ZGVyIHN0YXRlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggYWYzNTU5ZC4uMmYzNjY3 MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC01OTQsNiArNTk0LDcgQEAgc3Rh dGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAkgKiB3b3JraW5nIGlycXMgZm9yIGUuZy4gZ21idXMgYW5kIGRwIGF1eCB0cmFuc2ZlcnMuICov Cj4gIAlpbnRlbF9tb2Rlc2V0X2luaXQoZGV2KTsKPiAgCj4gKwlpbnRlbF9odWNfaW5pdChkZXYp Owo+ICAJaW50ZWxfZ3VjX2luaXQoZGV2KTsKPiAgCj4gIAlyZXQgPSBpOTE1X2dlbV9pbml0KGRl dik7Cj4gQEAgLTYyMSw2ICs2MjIsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlEUk1fRVJST1IoImZhaWxlZCB0byBpZGxl IGhhcmR3YXJlOyBjb250aW51aW5nIHRvIHVubG9hZCFcbiIpOwo+ICAJaTkxNV9nZW1fZmluaShk ZXYpOwo+ICBjbGVhbnVwX2lycToKPiArCWludGVsX2h1Y19maW5pKGRldik7Cj4gIAlpbnRlbF9n dWNfZmluaShkZXYpOwo+ICAJZHJtX2lycV91bmluc3RhbGwoZGV2KTsKPiAgCWludGVsX3RlYXJk b3duX2dtYnVzKGRldik7Cj4gQEAgLTEzMDQsNiArMTMwNiw3IEBAIHZvaWQgaTkxNV9kcml2ZXJf dW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRp bmcgdW5waW5fd29yay4gKi8KPiAgCWRyYWluX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwo+ICAK PiArCWludGVsX2h1Y19maW5pKGRldik7Cj4gIAlpbnRlbF9ndWNfZmluaShkZXYpOwo+ICAJaTkx NV9nZW1fZmluaShkZXYpOwo+ICAJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA1NWFmYjY2Li5iMDM3NmYwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTU1LDYgKzU1LDcgQEAKPiAgI2luY2x1ZGUgImludGVs X2Jpb3MuaCIKPiAgI2luY2x1ZGUgImludGVsX2RwbGxfbWdyLmgiCj4gICNpbmNsdWRlICJpbnRl bF9ndWMuaCIKPiArI2luY2x1ZGUgImludGVsX2h1Yy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfbHJj LmgiCj4gICNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCj4gIAo+IEBAIC0xNzg2LDYgKzE3 ODcsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJc3RydWN0IGludGVsX2d2 dCAqZ3Z0Owo+ICAKPiArCXN0cnVjdCBpbnRlbF9odWMgaHVjOwo+ICAJc3RydWN0IGludGVsX2d1 YyBndWM7Cj4gIAo+ICAJc3RydWN0IGludGVsX2NzciBjc3I7Cj4gQEAgLTI4MzcsNiArMjgzOSw3 IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAjZGVmaW5lIEhBU19HVUMoZGV2KQkJ KElOVEVMX0lORk8oZGV2KS0+aGFzX2d1YykKPiAgI2RlZmluZSBIQVNfR1VDX1VDT0RFKGRldikJ KEhBU19HVUMoZGV2KSkKPiAgI2RlZmluZSBIQVNfR1VDX1NDSEVEKGRldikJKEhBU19HVUMoZGV2 KSkKPiArI2RlZmluZSBIQVNfSFVDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKPiAgCj4gICNk ZWZpbmUgSEFTX1JFU09VUkNFX1NUUkVBTUVSKGRldikgKElOVEVMX0lORk8oZGV2KS0+aGFzX3Jl c291cmNlX3N0cmVhbWVyKQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IGlu ZGV4IGE0N2UxZTQuLjY0ZTk0MmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcu aAo+IEBAIC02MSw5ICs2MSwxMiBAQAo+ICAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RU CQkgICg4IDw8IDE2KQo+ICAjZGVmaW5lIERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCj4g ICNkZWZpbmUgRE1BX0NUUkwJCQlfTU1JTygweGMzMTQpCj4gKyNkZWZpbmUgICBIVUNfVUtFUk5F TAkJCSAgKDE8PDkpCj4gICNkZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8PDQpCj4gICNkZWZpbmUg ICBTVEFSVF9ETUEJCQkgICgxPDwwKQo+ICAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlf TU1JTygweGMzNDApCj4gKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJCSAgKDA8PDEp Cj4gKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCj4gICNkZWZpbmUg ICBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAqLwo+ICAjZGVmaW5l IEdVQ19NQVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAo+IGluZGV4IDg0ZWYyYmYuLjQ2NDdlNDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAo+IEBAIC0xODMsNiArMTgzLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3Vj X2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7Cj4gIGV4dGVy biBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGV4dGVy biBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBp bnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNf ZncgKnVjX2Z3KTsKPiArdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gIAo+ICAvKiBpOTE1X2d1Y19zdWJtaXNzaW9uLmMgKi8KPiAgaW50IGk5 MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBpbmRleCBmZjI2ZDJj Li5kYzc5OTY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19s b2FkZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ IEBAIC0zMDksNyArMzA5LDggQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJSTkxNV9XUklURShETUFfQUREUl8xX0hJ R0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKPiAgCj4gIAkvKiBGaW5hbGx5IHN0YXJ0IHRo ZSBETUEgKi8KPiAtCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1Nf TU9WRSB8IFNUQVJUX0RNQSkpOwo+ICsJSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRf RU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSB8Cj4gKwkJCV9NQVNLRURfQklUX0RJU0FCTEUo SFVDX1VLRVJORUwpKTsKPiAgCj4gIAkvKgo+ICAJICogV2FpdCBmb3IgdGhlIERNQSB0byBjb21w bGV0ZSAmIHRoZSBHdUMgdG8gc3RhcnQgdXAuCj4gQEAgLTMzNCw3ICszMzUsNyBAQCBzdGF0aWMg aW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdTMyIGd1Y193b3BjbV9zaXplKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJdTMyIHdvcGNtX3NpemUg PSBHVUNfV09QQ01fVE9QOwo+ICAKPiBAQCAtNTEyLDYgKzUxMyw3IEBAIGludCBpbnRlbF9ndWNf c2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlpZiAoZXJyKQo+ICAJCQlnb3RvIGZh aWw7Cj4gIAo+ICsJCWludGVsX2h1Y19sb2FkKGRldik7Cj4gIAkJZXJyID0gZ3VjX3Vjb2RlX3hm ZXIoZGV2X3ByaXYpOwo+ICAJCWlmICghZXJyKQo+ICAJCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uM2NlMDI5 OQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMu aAo+IEBAIC0wLDAgKzEsNDIgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwg Q29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKyNp Zm5kZWYgX0lOVEVMX0hVQ19IXwo+ICsjZGVmaW5lIF9JTlRFTF9IVUNfSF8KPiArCj4gKyNpbmNs dWRlICJpbnRlbF9ndWMuaCIKPiArCj4gKyNkZWZpbmUgSFVDX1NUQVRVUzIJCV9NTUlPKDB4RDNC MCkKPiArI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRAkoMTw8NykKPiArCj4gK3N0cnVjdCBpbnRl bF9odWMgewo+ICsJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5hZ2VtZW50ICovCj4gKwlzdHJ1 Y3QgaW50ZWxfdWNfZncgaHVjX2Z3Owo+ICsKPiArCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMg Ki8KPiArfTsKPiArCj4gK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK2lu dCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArI2VuZGlmCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMC4uZGNkOTk3MAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKPiBAQCAtMCwwICsxLDI2MCBAQAo+ICsv Kgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl Cj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS Cj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4g VEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+ Cj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCj4gKwo+ ICsvKioKPiArICogRE9DOiBIdUMgRmlybXdhcmUKPiArICoKPiArICogTW90aXZhdGlvbjoKPiAr ICogR0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBmaXJtd2FyZSBmb3IgdXNhZ2UgaW4g bWVkaWEgSEVWQyAoSGlnaAo+ICsgKiBFZmZpY2llbmN5IFZpZGVvIENvZGluZykgb3BlcmF0aW9u cy4gVXNlcnNwYWNlIGNhbiB1c2UgdGhlIGZpcm13YXJlCj4gKyAqIGNhcGFiaWxpdGllcyBieSBh ZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCj4gKyAqCj4gKyAq IEltcGxlbWVudGF0aW9uOgo+ICsgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZCBh cyB0aGUgR3VDLiBIb3dldmVyLCB0aGUgYWN0dWFsCj4gKyAqIGxvYWRpbmcgdG8gSFcgaXMgZGVm ZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCj4gKyAqCj4gKyAqIE5vdGUg dGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5n Lgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgSTkxNV9TS0xfSFVDX1VDT0RFICJpOTE1L3NrbF9odWNf dmVyMDFfMDdfMTM5OC5iaW4iCj4gK01PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUp OwpQbGVhc2UgdXBkYXRlIHRvIHVzZSB0aGUgbmV3IGFwcHJvYWNoIHVzZWQgYnkgR3VDIGZvciBz cGVjaWZ5aW5nCnJlcXVpcmVkIHZlcnNpb24gYW5kIGNvbnN0cnVjdGluZyB0aGUgZmlsZSBwYXRo LiBTZWUgaW50ZWxfZ3VjX2xvYWRlci5jLgpIdUMgZmlybXdhcmUgdmVyc2lvbmluZyBpbmNsdWRl cyB0aGUgYnVpbGQgbnVtYmVyIGFmdGVyIHRoZSBtaW5vciBzbwpzb21lIG1vZGlmaWNhdGlvbiB3 aWxsIGJlIG5lZWRlZC4KCkV4YW1wbGUuLi4gKG5vdCB0ZXN0ZWQpCgojZGVmaW5lIFNLTF9IVUNf RldfTUFKT1IgMDEKI2RlZmluZSBTS0xfSFVDX0ZXX01JTk9SIDA3CiNkZWZpbmUgU0tMX0hVQ19G V19CVUlMRCAxMzk4CgojZGVmaW5lIEhVQ19GV19QQVRIKHBsYXRmb3JtLCBtYWpvciwgbWlub3Is IGJ1aWxkKSBcCiAgICAgICAiaTkxNS8iIF9fc3RyaW5naWZ5KHBsYXRmb3JtKSAiX2h1Y192ZXIi IFwKICAgICAgIF9fc3RyaW5naWZ5KG1ham9yKSAiXyIgX19zdHJpbmdpZnkobWlub3IpICJfIiBf X3N0cmluZ2lmeShidWlsZCkgIi5iaW4iCgojZGVmaW5lIEk5MTVfU0tMX0hVQ19VQ09ERSBIVUNf RldfUEFUSChza2wsIFNLTF9IVUNfRldfTUFKT1IsIFNLTF9IVUNfRldfTUlOT1IsIFNLTF9IVUNf RldfQlVJTEQpCk1PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOwoKLUplZmYKCj4g Kwo+ICsvKioKPiArICogaHVjX3Vjb2RlX3hmZXIoKSAtIERNQSdzIHRoZSBmaXJtd2FyZQo+ICsg KiBAZGV2X3ByaXY6IHRoZSBkcm0gZGV2aWNlCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gdGFr ZXMgdGhlIGdlbSBvYmplY3QgY29udGFpbmluZyB0aGUgZmlybXdhcmUsIHNldHMgdXAgdGhlIERN QQo+ICsgKiBlbmdpbmUgTU1JTywgdHJpZ2dlcnMgdGhlIERNQSBvcGVyYXRpb24gYW5kIHdhaXRz IGZvciBpdCB0byBmaW5pc2guCj4gKyAqCj4gKyAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFn ZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9sbGVyLgo+ICsgKgo+ICsg KiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZQo+ICsgKi8KPiArCj4g K3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVj Lmh1Y19mdzsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsJdW5zaWduZWQgbG9uZyBvZmZz ZXQgPSAwOwo+ICsJdTMyIHNpemU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOwo+ICsJ aWYgKHJldCkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4i LCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKPiArCWlmIChJ U19FUlIodm1hKSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIChp bnQpUFRSX0VSUih2bWEpKTsKPiArCQlyZXR1cm4gUFRSX0VSUih2bWEpOwo+ICsJfQo+ICsKPiAr CS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1cGRhdGVz IHRvIEdUVC4gKi8KPiArCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFU RSk7Cj4gKwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOwo+ICsKPiArCS8qIGluaXQgV09QQ00gKi8KPiArCUk5MTVfV1JJVEUoR1VDX1dPUENN X1NJWkUsIGd1Y193b3BjbV9zaXplKGRldl9wcml2KSk7Cj4gKwlJOTE1X1dSSVRFKERNQV9HVUNf 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 ZXN0Cj4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCj4gKyAqCj4gKyAqIENhbGxlZCBlYXJseSBk dXJpbmcgZHJpdmVyIGxvYWQsIGJ1dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQuIFRoZSBsb2Fk aW5nCj4gKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRyaXZlciBleHBsaWNpdGx5IHNwZWNp ZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4KPiArICogQWxsIG90aGVyIGNhc2VzIGFyZSBj b25zaWRlcmVkIGFzIFVDX0ZJUk1XQVJFX05PTkUgZWl0aGVyIGJlY2F1c2UgSFcgaXMgbm90Cj4g KyAqIGNhcGFibGUgb3IgZHJpdmVyIHlldCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBu byBlcnJvciBtZXNzYWdlIGZvcgo+ICsgKiBVQ19GSVJNV0FSRV9OT05FIGNhc2VzLgo+ICsgKgo+ ICsgKiBUaGUgRE1BLWNvcHlpbmcgdG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y19s b2FkKCkgaXMgY2FsbGVkLgo+ICsgKi8KPiArdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1 YzsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmh1Yy0+aHVjX2Z3Owo+ICsJY29u c3QgY2hhciAqZndfcGF0aCA9IE5VTEw7Cj4gKwo+ICsJaHVjX2Z3LT51Y19kZXYgPSBkZXY7Cj4g KwlodWNfZnctPnVjX2Z3X3BhdGggPSBOVUxMOwo+ICsJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBV Q19GSVJNV0FSRV9OT05FOwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05P TkU7Cj4gKwlodWNfZnctPmZ3X3R5cGUgPSBVQ19GV19UWVBFX0hVQzsKPiArCj4gKwlpZiAoIUhB U19IVUNfVUNPREUoZGV2X3ByaXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoSVNfU0tZTEFL RShkZXZfcHJpdikpIHsKPiArCQlmd19wYXRoID0gSTkxNV9TS0xfSFVDX1VDT0RFOwo+ICsJCWh1 Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IDE7Cj4gKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2FudGVk ID0gNzsKPiArCX0KV2l0aCBhYm92ZSBjaGFuZ2Ugd2UgY2FuIHVzZSBTS0xfSFVDX0ZXX01BSk9S IGFuZCBTS0xfSFVDX0ZXX01JTk9SIG1hY3JvcwpoZXJlIGluc3RlYWQgb2YgaGFyZGNvZGVkIHZh bHVlcy4gTm93IHZlcnNpb24gYW5kIGZpbGVuYW1lIHVwZGF0ZSBjYW4gYmUKbWFkZSBjbGVhbmx5 IGluIG9uZSBwbGFjZS4KLUplZmYKCj4gKwo+ICsJaWYgKGZ3X3BhdGggPT0gTlVMTCkKPiArCQly ZXR1cm47Cj4gKwo+ICsJaHVjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKPiArCWh1Y19mdy0+ ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKPiArCj4gKwlEUk1fREVCVUdfRFJJ VkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7Cj4gKwo+ICsJ aW50ZWxfdWNfZndfZmV0Y2goZGV2LCBodWNfZncpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50 ZWxfaHVjX2xvYWQoKSAtIGxvYWQgSHVDIHVDb2RlIHRvIGRldmljZQo+ICsgKiBAZGV2OiB0aGUg ZHJtIGRldmljZQo+ICsgKgo+ICsgKiBDYWxsZWQgZnJvbSBnZW1faW5pdF9odygpIGR1cmluZyBk cml2ZXIgbG9hZGluZyBhbmQgYWxzbyBhZnRlciBhIEdQVSByZXNldC4KPiArICogQmUgbm90ZSB0 aGF0IEh1QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCj4gKyAqCj4g KyAqIFRoZSBmaXJtd2FyZSBpbWFnZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gZmV0Y2hlZCBp bnRvIG1lbW9yeSBieSB0aGUKPiArICogZWFybGllciBjYWxsIHRvIGludGVsX2h1Y191Y29kZV9p bml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRoYXQKPiArICogaXMgc3VjY2VlZGVk LCBhbmQgdGhlbiB0cmFuc2ZlciB0aGUgaW1hZ2UgdG8gdGhlIGgvdy4KPiArICoKPiArICogUmV0 dXJuOglub24temVybyBjb2RlIG9uIGVycm9yCj4gKyAqLwo+ICtpbnQgaW50ZWxfaHVjX2xvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncg PSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmIChodWNfZnct PmZldGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9OT05FKQo+ICsJCXJldHVybiAwOwo+ICsKPiAr CURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4g KwkJaHVjX2Z3LT51Y19md19wYXRoLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19m dy0+ZmV0Y2hfc3RhdHVzKSwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxv YWRfc3RhdHVzKSk7Cj4gKwo+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1X QVJFX1NVQ0NFU1MgJiYKPiArCSAgICBodWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJF X0ZBSUwpCj4gKwkJcmV0dXJuIC1FTk9FWEVDOwo+ICsKPiArCWh1Y19mdy0+bG9hZF9zdGF0dXMg PSBVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsKPiArCXN3aXRjaCAoaHVjX2Z3LT5mZXRjaF9zdGF0 dXMpIHsKPiArCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKPiArCQkvKiBzb21ldGhpbmcgd2VudCB3 cm9uZyA6KCAqLwo+ICsJCWVyciA9IC1FSU87Cj4gKwkJZ290byBmYWlsOwo+ICsKPiArCWNhc2Ug VUNfRklSTVdBUkVfTk9ORToKPiArCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKPiArCWRlZmF1 bHQ6Cj4gKwkJLyogImNhbid0IGhhcHBlbiIgKi8KPiArCQlXQVJOX09OQ0UoMSwgIkh1QyBmdyAl cyBpbnZhbGlkIGZldGNoX3N0YXR1cyAlcyBbJWRdXG4iLAo+ICsJCQlodWNfZnctPnVjX2Z3X3Bh dGgsCj4gKwkJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwK PiArCQkJaHVjX2Z3LT5mZXRjaF9zdGF0dXMpOwo+ICsJCWVyciA9IC1FTlhJTzsKPiArCQlnb3Rv IGZhaWw7Cj4gKwo+ICsJY2FzZSBVQ19GSVJNV0FSRV9TVUNDRVNTOgo+ICsJCWJyZWFrOwo+ICsJ fQo+ICsKPiArCWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiArCWlmIChlcnIpCj4g KwkJZ290byBmYWlsOwo+ICsKPiArCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9T VUNDRVNTOwo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMs IGxvYWQgJXNcbiIsCj4gKwkJaHVjX2Z3LT51Y19md19wYXRoLAo+ICsJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiArCQlpbnRlbF91Y19md19zdGF0dXNf cmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtmYWls Ogo+ICsJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfUEVORElORykKPiAr CQlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKPiArCj4gKwlEUk1fRVJS T1IoIkZhaWxlZCB0byBjb21wbGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJy KTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfaHVjX2Zp bmkoKSAtIGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1Qwo+ICsgKiBAZGV2OiB0 aGUgZHJtIGRldmljZQo+ICsgKgo+ICsgKiBDbGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMg ZmlybXdhcmUgR0VNIG9iai4KPiArICovCj4gK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3By aXYtPmh1Yy5odWNfZnc7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJaWYgKGh1Y19mdy0+dWNfZndfb2JqKQo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQoaHVjX2Z3 LT51Y19md19vYmopOwo+ICsJaHVjX2Z3LT51Y19md19vYmogPSBOVUxMOwo+ICsJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBV Q19GSVJNV0FSRV9OT05FOwo+ICt9Cj4gLS0gCj4gMi43LjQKPiAKPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==