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: Thu, 1 Dec 2016 13:24:22 +0000 Message-ID: <0d7b5d67-a0d2-eba5-524a-7948cc34362d@linux.intel.com> References: <1480548694-23000-1-git-send-email-anusha.srivatsa@intel.com> <1480548694-23000-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 43FF16E793 for ; Thu, 1 Dec 2016 13:24:25 +0000 (UTC) In-Reply-To: <1480548694-23000-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGksCgpPbiAzMC8xMS8yMDE2IDIzOjMxLCBBbnVzaGEgU3JpdmF0c2Egd3JvdGU6Cj4gVGhlIEh1 QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZSBpbnRlbF91Y19md19mZXRj aCgpCj4gaXMgdXNlZCBmb3IgYm90aCBjYXNlcy4KPgo+IEh1QyBsb2FkaW5nIG5lZWRzIHRvIGJl IGJlZm9yZSBHdUMgbG9hZGluZy4gVGhlIFdPUENNIHNldHRpbmcgbXVzdAo+IGJlIGRvbmUgZWFy bHkgYmVmb3JlIGxvYWRpbmcgYW55IG9mIHRoZW0uCj4KPiB2MjogcmViYXNlZCBvbi10b3Agb2Yg ZHJtLWludGVsLW5pZ2h0bHkuCj4gICAgIHJlbW92ZWQgaWYoSEFTX0dVQygpKSBiZWZvcmUgdGhl IGd1YyBjYWxsLiAoRC5Hb3Jkb24pCj4gICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2Yg Zm9ybWF0Lgo+IHYzOiByZWJhc2VkIHRvIGRybS1pbnRlbC1uaWdodGx5LCBjaGFuZ2VkIHRoZSBm aWxlIG5hbWUgZm9ybWF0IHRvCj4gICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdl Lgo+ICAgICBDaGFuZ2VkIGRldi0+ZGV2X3ByaXZhdGUgdG8gdG9faTkxNSgpCj4gdjQ6IG1vdmVk IGZ1bmN0aW9uIGJhY2sgdG8gd2hlcmUgaXQgd2FzLgo+ICAgICBjaGFuZ2Ugd2FpdF9mb3JfYXRv bWljIHRvIHdhaXRfZm9yLgo+IHY1OiByZWJhc2VkICsgY29tbWVudCBjaGFuZ2VzLgo+IHY3OiBy ZWJhc2VkLgo+IHY4OiByZWJhc2VkLgo+IHY5OiByZWJhc2VkLiBDaGFuZ2VkIHRoZSB5ZWFyIGlu IHRoZSBjb3B5cmlnaHQgbWVzc2FnZSB0byByZWZsZWN0Cj4gdGhlIHJpZ2h0IHllYXIuQ29ycmVj dCB0aGUgY29tbWVudHMscmVtb3ZlIHRoZSB1bndhbnRlZCBXQVJOIG1lc3NhZ2UsCj4gcmVwbGFj ZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpIHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dCgp Lk1ha2UgdGhlCj4gcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBub24tZXh0ZXJuLgo+IHYxMDog cmViYXNlZC4gVXBkYXRlIHRoZSBmaWxlIGNvbnN0cnVjdGlvbiBkb25lIGJ5IEh1Qy4gSXQgaXMg c2ltaWxhciB0bwo+IEd1Qy5BZG9wdGVkIHRoZSBhcHByb2FjaCB1c2VkIGluLQo+IGh0dHBzOi8v cGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xMDQzNTUvIDxUdnJ0a28gVXJzdWxpbj4K PiB2MTE6IEZpeCB3YXJuaW5ncyByZW1vdmUgb2xkIGRlY2xhcmF0aW9uCj4gdjEyOiBDaGFuZ2Ug ZGV2IHRvIGRldl9wcml2IGluIG1hY3JvIGRlZmluaXRpb24uCj4gQ29ycmVjdGVkIGNvbW1lbnRz Lgo+IHYxMzogcmViYXNlZC4KPiB2MTQ6IHJlYmFzZWQgb24gdG9wIG9mIGRybS10aXAKCkkgdGhv dWdodCB3ZSBiYXNpY2FsbHkgYWdyZWVkIHRvIGFkZCBpOTE1LmVuYWJsZV9odWMgKGRlZmF1bHQ9 eWVzKSBhbmQgCmhpZGUgaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcsIG1ha2luZyBpdCBhdXRvbWF0 aWNhbGx5IHR1cm4gb24gaWYgZWl0aGVyIApodWMgb3IgZ3VjIHN1Ym1pc3Npb24gYXJlIGVuYWJs ZWQ/CgpSZWdhcmRzLAoKVHZydGtvCgo+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+Cj4gVGVzdGVkLWJ5OiBYaWFuZyBIYWloYW8gPGhhaWhhby54aWFuZ0Bp bnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0 c2FAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29t Pgo+IFJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgIDQgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oICAgICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaCAgICAgICAgfCAgNDIgKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaHVjX2xvYWRlci5jIHwgMjY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggICAgICAgICB8ICAgMiArCj4gIDgg ZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDNjMzA5MTYuLjAxZDRmNGIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQo+IEBAIC01Nyw2ICs1Nyw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIu byBcCj4gICMgZ2VuZXJhbC1wdXJwb3NlIG1pY3JvY29udHJvbGxlciAoR3VDKSBzdXBwb3J0Cj4g IGk5MTUteSArPSBpbnRlbF91Yy5vIFwKPiAgCSAgaW50ZWxfZ3VjX2xvYWRlci5vIFwKPiArCSAg aW50ZWxfaHVjX2xvYWRlci5vIFwKPiAgCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCj4KPiAgIyBh dXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggOGRhYzI5OC4uMDc1ZDljZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBA IC02MDMsNiArNjAzLDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gY2xlYW51cF9pcnE7Cj4K PiArCWludGVsX2h1Y19pbml0KGRldik7Cj4gIAlpbnRlbF9ndWNfaW5pdChkZXYpOwo+Cj4gIAly ZXQgPSBpOTE1X2dlbV9pbml0KGRldik7Cj4gQEAgLTYzMCw2ICs2MzEsNyBAQCBzdGF0aWMgaW50 IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlEUk1f RVJST1IoImZhaWxlZCB0byBpZGxlIGhhcmR3YXJlOyBjb250aW51aW5nIHRvIHVubG9hZCFcbiIp Owo+ICAJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7Cj4gIGNsZWFudXBfaXJxOgo+ICsJaW50ZWxf aHVjX2ZpbmkoZGV2KTsKPiAgCWludGVsX2d1Y19maW5pKGRldik7Cj4gIAlkcm1faXJxX3VuaW5z dGFsbChkZXYpOwo+ICAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsKPiBAQCAtMTMyNiw3ICsx MzI4LDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK Pgo+ICAJLyogRmx1c2ggYW55IG91dHN0YW5kaW5nIHVucGluX3dvcmsuICovCj4gIAlkcmFpbl93 b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKPiAtCj4gKwlpbnRlbF9odWNfZmluaShkZXYpOwo+ICAJ aW50ZWxfZ3VjX2ZpbmkoZGV2KTsKPiAgCWk5MTVfZ2VtX2ZpbmkoZGV2X3ByaXYpOwo+ICAJaW50 ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCAyOTdhZDAzLi44ZWRmYWU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAg LTU2LDYgKzU2LDcgQEAKPiAgI2luY2x1ZGUgImludGVsX2Jpb3MuaCIKPiAgI2luY2x1ZGUgImlu dGVsX2RwbGxfbWdyLmgiCj4gICNpbmNsdWRlICJpbnRlbF91Yy5oIgo+ICsjaW5jbHVkZSAiaW50 ZWxfaHVjLmgiCj4gICNpbmNsdWRlICJpbnRlbF9scmMuaCIKPiAgI2luY2x1ZGUgImludGVsX3Jp bmdidWZmZXIuaCIKPgo+IEBAIC0xOTMzLDYgKzE5MzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSB7Cj4KPiAgCXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsKPgo+ICsJc3RydWN0IGludGVsX2h1 YyBodWM7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3VjIGd1YzsKPgo+ICAJc3RydWN0IGludGVsX2NzciBj c3I7Cj4gQEAgLTI2OTgsNyArMjcwMCw3IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAjZGVmaW5lIEhBU19HVUMoZGV2X3ByaXYpCSgoZGV2 X3ByaXYpLT5pbmZvLmhhc19ndWMpCj4gICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXZfcHJpdikJ KEhBU19HVUMoZGV2X3ByaXYpKQo+ICAjZGVmaW5lIEhBU19HVUNfU0NIRUQoZGV2X3ByaXYpCShI QVNfR1VDKGRldl9wcml2KSkKPiAtCj4gKyNkZWZpbmUgSEFTX0hVQ19VQ09ERShkZXZfcHJpdikJ KEhBU19HVUMoZGV2X3ByaXYpKQo+ICAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXZf cHJpdikgKChkZXZfcHJpdiktPmluZm8uaGFzX3Jlc291cmNlX3N0cmVhbWVyKQo+Cj4gICNkZWZp bmUgSEFTX1BPT0xFRF9FVShkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX3Bvb2xlZF9l dSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IGluZGV4IDVlNjM4ZmMuLmY5ODI5 ZjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IEBAIC02MSw5ICs2MSwx MiBAQAo+ICAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2KQo+ICAj ZGVmaW5lIERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCj4gICNkZWZpbmUgRE1BX0NUUkwJ CQlfTU1JTygweGMzMTQpCj4gKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCj4gICNk ZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8PDQpCj4gICNkZWZpbmUgICBTVEFSVF9ETUEJCQkgICgx PDwwKQo+ICAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCj4gKyNk ZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJCSAgKDA8PDEpCj4gKyNkZWZpbmUgICBIVUNf TE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCj4gICNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VU X1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAqLwo+ICAjZGVmaW5lIEdVQ19NQVhfSURMRV9DT1VO VAkJX01NSU8oMHhDM0U0KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIu Ywo+IGluZGV4IDU1N2Q0YjQuLjdjYTU1NTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jCj4gQEAgLTMwOSw4ICszMDksOCBAQCBzdGF0aWMgaW50IGd1Y191Y29k ZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlJOTE1X1dS SVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+Cj4gIAkvKiBG aW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8KPiAtCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURf QklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkpOwo+IC0KPiArCUk5MTVfV1JJVEUoRE1B X0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkgfAo+ICsJCV9N QVNLRURfQklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsKPiAgCS8qCj4gIAkgKiBXYWl0IGZvciB0 aGUgRE1BIHRvIGNvbXBsZXRlICYgdGhlIEd1QyB0byBzdGFydCB1cC4KPiAgCSAqIE5COiBEb2Nz IHJlY29tbWVuZCBub3QgdXNpbmcgdGhlIGludGVycnVwdCBmb3IgY29tcGxldGlvbi4KPiBAQCAt MzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldHVybiByZXQ7Cj4gIH0KPgo+IC1zdGF0aWMg dTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAr dTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg ewo+ICAJdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjFkZDE4YzUK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgK PiBAQCAtMCwwICsxLDQyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENv cnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0 Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsjaWZu ZGVmIF9JTlRFTF9IVUNfSF8KPiArI2RlZmluZSBfSU5URUxfSFVDX0hfCj4gKwo+ICsjaW5jbHVk ZSAiaW50ZWxfdWMuaCIKPiArCj4gKyNkZWZpbmUgSFVDX1NUQVRVUzIJCV9NTUlPKDB4RDNCMCkK PiArI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRAkoMTw8NykKPiArCj4gK3N0cnVjdCBpbnRlbF9o dWMgewo+ICsJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5hZ2VtZW50ICovCj4gKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgaHVjX2Z3Owo+ICsKPiArCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8K PiArfTsKPiArCj4gK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4gK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK2ludCBp bnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArI2VuZGlmCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uNjYzZmNjNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKPiBAQCAtMCwwICsxLDI2NyBAQAo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u Cj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4g KyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4g KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhF IFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+Cj4g KyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCj4gKwo+ICsv KioKPiArICogRE9DOiBIdUMgRmlybXdhcmUKPiArICoKPiArICogTW90aXZhdGlvbjoKPiArICog R0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBmaXJtd2FyZSBmb3IgdXNhZ2UgaW4gbWVk aWEgSEVWQyAoSGlnaAo+ICsgKiBFZmZpY2llbmN5IFZpZGVvIENvZGluZykgb3BlcmF0aW9ucy4g VXNlcnNwYWNlIGNhbiB1c2UgdGhlIGZpcm13YXJlCj4gKyAqIGNhcGFiaWxpdGllcyBieSBhZGRp bmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCj4gKyAqCj4gKyAqIElt cGxlbWVudGF0aW9uOgo+ICsgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZCBhcyB0 aGUgR3VDLiBIb3dldmVyLCB0aGUgYWN0dWFsCj4gKyAqIGxvYWRpbmcgdG8gSFcgaXMgZGVmZXJy ZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCj4gKyAqCj4gKyAqIE5vdGUgdGhh dCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgo+ ICsgKi8KPiArCj4gKyNkZWZpbmUgU0tMX0ZXX01BSk9SIDAxCj4gKyNkZWZpbmUgU0tMX0ZXX01J Tk9SIDA3Cj4gKyNkZWZpbmUgU0tMX0JMRF9OVU0gMTM5OAo+ICsKPiArI2RlZmluZSBIVUNfRldf UEFUSChwbGF0Zm9ybSwgbWFqb3IsIG1pbm9yLCBibGRfbnVtKSBcCj4gKwkiaTkxNS8iIF9fc3Ry aW5naWZ5KHBsYXRmb3JtKSAiX2h1Y192ZXIiIF9fc3RyaW5naWZ5KG1ham9yKSAiXyIgXAo+ICsJ X19zdHJpbmdpZnkobWlub3IpICJfIiBfX3N0cmluZ2lmeShibGRfbnVtKSAiLmJpbiIKPiArCj4g KyNkZWZpbmUgSTkxNV9TS0xfSFVDX1VDT0RFIEhVQ19GV19QQVRIKHNrbCwgU0tMX0ZXX01BSk9S LCBcCj4gKwlTS0xfRldfTUlOT1IsIFNLTF9CTERfTlVNKQo+ICtNT0RVTEVfRklSTVdBUkUoSTkx NV9TS0xfSFVDX1VDT0RFKTsKPiArCj4gKy8qKgo+ICsgKiBodWNfdWNvZGVfeGZlcigpIC0gRE1B J3MgdGhlIGZpcm13YXJlCj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybSBkZXZpY2UKPiArICoKPiAr ICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgZ2VtIG9iamVjdCBjb250YWluaW5nIHRoZSBmaXJt d2FyZSwgc2V0cyB1cCB0aGUgRE1BCj4gKyAqIGVuZ2luZSBNTUlPLCB0cmlnZ2VycyB0aGUgRE1B IG9wZXJhdGlvbiBhbmQgd2FpdHMgZm9yIGl0IHRvIGZpbmlzaC4KPiArICoKPiArICogVHJhbnNm ZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2Nv bnRyb2xsZXIuCj4gKyAqCj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBm YWlsdXJlCj4gKyAqLwo+ICsKPiArc3RhdGljIGludCBodWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVj X2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3Owo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4g Kwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IDA7Cj4gKwl1MzIgc2l6ZTsKPiArCWludCByZXQ7Cj4g Kwo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGh1Y19mdy0+dWNf Zndfb2JqLCBmYWxzZSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0 LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4g Kwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT51Y19md19vYmosIE5VTEws IDAsIDAsIDApOwo+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigi cGluIGZhaWxlZCAlZFxuIiwgKGludClQVFJfRVJSKHZtYSkpOwo+ICsJCXJldHVybiBQVFJfRVJS KHZtYSk7Cj4gKwl9Cj4gKwo+ICsJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFr ZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAqLwo+ICsJSTkxNV9XUklURShHRU44X0dUQ1Is IEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKPiArCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dl dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwo+ICsJLyogaW5pdCBXT1BDTSAqLwo+ICsJ STkxNV9XUklURShHVUNfV09QQ01fU0laRSwgZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKPiAr CUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUg fAo+ICsJCQlIVUNfTE9BRElOR19BR0VOVF9HVUMpOwo+ICsKPiArCS8qIFNldCB0aGUgc291cmNl IGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLwo+ICsJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2 bWEpICsgaHVjX2Z3LT5oZWFkZXJfb2Zmc2V0Owo+ICsJSTkxNV9XUklURShETUFfQUREUl8wX0xP VywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdI LCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwo+ICsKPiArCS8qIEhhcmR3YXJlIGRv ZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBIdUMuIFNldCBpdCB0byAwLAo+ ICsJICogYnV0IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4KPiArCSAq Lwo+ICsJSTkxNV9XUklURShETUFfQUREUl8xX0xPVywgMCk7Cj4gKwlJOTE1X1dSSVRFKERNQV9B RERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ICsKPiArCXNpemUgPSBodWNf ZnctPmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOwo+ICsJSTkxNV9XUklURShETUFf Q09QWV9TSVpFLCBzaXplKTsKPiArCj4gKwkvKiBTdGFydCB0aGUgRE1BICovCj4gKwlJOTE1X1dS SVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VLRVJORUwgfCBTVEFSVF9ETUEp KTsKPiArCj4gKwkvKiBXYWl0IGZvciBETUEgdG8gZmluaXNoICovCj4gKwlyZXQgPSB3YWl0X2Zv cigoSTkxNV9SRUFEKERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsKPiArCj4gKwlE Uk1fREVCVUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxu IiwgcmV0KTsKPiArCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBm b3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAo+ICsJICogbm93IHRo YXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8gdGFrZSB1cCBz cGFjZS4KPiArCSAqLwo+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBm aXJtd2FyZSBsb2FkaW5nIHJlcXVlc3QKPiArICogQGRldjogdGhlIGRybSBkZXZpY2UKPiArICoK PiArICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdFTSBpcyBp bml0aWFsaXNlZC4gVGhlIGxvYWRpbmcKPiArICogd2lsbCBjb250aW51ZSBvbmx5IHdoZW4gZHJp dmVyIGV4cGxpY2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZCB2ZXJzaW9uLgo+ICsgKiBB bGwgb3RoZXIgY2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMgVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIg YmVjYXVzZSBIVyBpcyBub3QKPiArICogY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQu IEFuZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yIG1lc3NhZ2UgZm9yCj4gKyAqIFVDX0ZJUk1XQVJF X05PTkUgY2FzZXMuCj4gKyAqCj4gKyAqIFRoZSBETUEtY29weWluZyB0byBIVyBpcyBkb25lIGxh dGVyIHdoZW4gaW50ZWxfaHVjX2xvYWQoKSBpcyBjYWxsZWQuCj4gKyAqLwo+ICt2b2lkIGludGVs X2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9odWMg Kmh1YyA9ICZkZXZfcHJpdi0+aHVjOwo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAm aHVjLT5odWNfZnc7Cj4gKwljb25zdCBjaGFyICpmd19wYXRoID0gTlVMTDsKPiArCj4gKwlodWNf ZnctPnVjX2RldiA9IGRldjsKPiArCWh1Y19mdy0+dWNfZndfcGF0aCA9IE5VTEw7Cj4gKwlodWNf ZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gKwlodWNfZnctPmxvYWRfc3Rh dHVzID0gVUNfRklSTVdBUkVfTk9ORTsKPiArCWh1Y19mdy0+ZndfdHlwZSA9IFVDX0ZXX1RZUEVf SFVDOwo+ICsKPiArCWlmICghSEFTX0hVQ19VQ09ERShkZXZfcHJpdikpCj4gKwkJcmV0dXJuOwo+ ICsKPiArCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgewo+ICsJCWZ3X3BhdGggPSBJOTE1X1NL TF9IVUNfVUNPREU7Cj4gKwkJaHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tMX0ZXX01BSk9S Owo+ICsJCWh1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NSU5PUjsKPiArCX0KPiAr Cj4gKwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOwo+ICsJaHVjX2Z3LT5mZXRjaF9zdGF0 dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIkh1QyBm aXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKPiArCj4gKwlpbnRlbF91Y19m d19mZXRjaChkZXYsIGh1Y19mdyk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfbG9h ZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCj4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNl Cj4gKyAqCj4gKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2Fk aW5nIGFuZCBhbHNvIGFmdGVyIGEgR1BVIHJlc2V0Lgo+ICsgKiBCZSBub3RlIHRoYXQgSHVDIGxv YWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGluZy4KPiArICoKPiArICogVGhlIGZp cm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVtb3J5 IGJ5IHRoZQo+ICsgKiBlYXJsaWVyIGNhbGwgdG8gaW50ZWxfaHVjX2luaXQoKSwgc28gaGVyZSB3 ZSBuZWVkIG9ubHkgY2hlY2sgdGhhdAo+ICsgKiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRyYW5z ZmVyIHRoZSBpbWFnZSB0byB0aGUgaC93Lgo+ICsgKgo+ICsgKiBSZXR1cm46CW5vbi16ZXJvIGNv ZGUgb24gZXJyb3IKPiArICovCj4gK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVj Lmh1Y19mdzsKPiArCWludCBlcnI7Cj4gKwo+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09 IFVDX0ZJUk1XQVJFX05PTkUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZF UigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiArCQlodWNfZnctPnVjX2Z3 X3BhdGgsCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMp LAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiAr Cj4gKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfU1VDQ0VTUyAmJgo+ ICsJICAgIGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKPiArCQlyZXR1 cm4gLUVOT0VYRUM7Cj4gKwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BF TkRJTkc7Cj4gKwo+ICsJc3dpdGNoIChodWNfZnctPmZldGNoX3N0YXR1cykgewo+ICsJY2FzZSBV Q19GSVJNV0FSRV9GQUlMOgo+ICsJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICovCj4gKwkJ ZXJyID0gLUVJTzsKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJY2FzZSBVQ19GSVJNV0FSRV9OT05F Ogo+ICsJY2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgo+ICsJZGVmYXVsdDoKPiArCQkvKiAiY2Fu J3QgaGFwcGVuIiAqLwo+ICsJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFsaWQgZmV0Y2hf c3RhdHVzICVzIFslZF1cbiIsCj4gKwkJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiArCQkJaW50ZWxf dWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCQlodWNfZnctPmZl dGNoX3N0YXR1cyk7Cj4gKwkJZXJyID0gLUVOWElPOwo+ICsJCWdvdG8gZmFpbDsKPiArCj4gKwlj YXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJZXJyID0g aHVjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGZhaWw7Cj4g Kwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gKwo+ICsJ RFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAr CQlodWNfZnctPnVjX2Z3X3BhdGgsCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3 LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9h ZF9zdGF0dXMpKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gKwlpZiAoaHVjX2Z3 LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQo+ICsJCWh1Y19mdy0+bG9hZF9z dGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+ICsKPiArCURSTV9FUlJPUigiRmFpbGVkIHRvIGNv bXBsZXRlIEh1QyB1Q29kZSBsb2FkIHdpdGggcmV0ICVkXG4iLCBlcnIpOwo+ICsKPiArCXJldHVy biBlcnI7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfZmluaSgpIC0gY2xlYW4gdXAg cmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgSHVDCj4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCj4g KyAqCj4gKyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1YyBmaXJtd2FyZSBHRU0gb2Jq Lgo+ICsgKi8KPiArdm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsK PiArCj4gKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAoaHVjX2Z3LT51 Y19md19vYmopCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChodWNfZnctPnVjX2Z3X29iaik7Cj4g KwlodWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7Cj4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiArCj4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7 Cj4gK30KPiArCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCj4gaW5kZXggMTYxNmNhYy4uOTMyMTIy NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAo+IEBAIC0xOTEsNiArMTkxLDggQEAgZXh0 ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGV4dGVy biBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0 YXR1cyBzdGF0dXMpOwo+ICBleHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4gK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4gK3UzMiBndWNfd29wY21fc2l6ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+Cj4gIC8qIGk5MTVfZ3VjX3N1Ym1p c3Npb24uYyAqLwo+ICBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==