From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff McGee Subject: Re: [PATCH-v11] drm/i915/huc: Add HuC fw loading support Date: Tue, 15 Nov 2016 14:21:34 -0800 Message-ID: <20161115222134.GB18646@jeffdesk> References: <1478823321-6009-4-git-send-email-anusha.srivatsa@intel.com> <1479170361-3528-1-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B93896E0F6 for ; Tue, 15 Nov 2016 22:11:11 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Alex Dai , intel-gfx@lists.freedesktop.org, Peter Antoine List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMTUsIDIwMTYgYXQgMTA6MjY6NDZBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMTUvMTEvMjAxNiAwMDozOSwgQW51c2hhIFNyaXZhdHNhIHdyb3RlOgo+ ID5Gcm9tOiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KPiA+Cj4gPlRo ZSBIdUMgbG9hZGluZyBwcm9jZXNzIGlzIHNpbWlsYXIgdG8gR3VDLiBUaGUgaW50ZWxfdWNfZndf ZmV0Y2goKQo+ID5pcyB1c2VkIGZvciBib3RoIGNhc2VzLgo+ID4KPiA+SHVDIGxvYWRpbmcgbmVl ZHMgdG8gYmUgYmVmb3JlIEd1QyBsb2FkaW5nLiBUaGUgV09QQ00gc2V0dGluZyBtdXN0Cj4gPmJl IGRvbmUgZWFybHkgYmVmb3JlIGxvYWRpbmcgYW55IG9mIHRoZW0uCj4gPgo+ID52MjogcmViYXNl ZCBvbi10b3Agb2YgZHJtLWludGVsLW5pZ2h0bHkuCj4gPiAgICByZW1vdmVkIGlmKEhBU19HVUMo KSkgYmVmb3JlIHRoZSBndWMgY2FsbC4gKEQuR29yZG9uKQo+ID4gICAgdXBkYXRlIGh1Y192ZXJz aW9uIG51bWJlciBvZiBmb3JtYXQuCj4gPnYzOiByZWJhc2VkIHRvIGRybS1pbnRlbC1uaWdodGx5 LCBjaGFuZ2VkIHRoZSBmaWxlIG5hbWUgZm9ybWF0IHRvCj4gPiAgICBtYXRjaCB0aGUgb25lIGlu IHRoZSBodWMgcGFja2FnZS4KPiA+ICAgIENoYW5nZWQgZGV2LT5kZXZfcHJpdmF0ZSB0byB0b19p OTE1KCkKPiA+djQ6IG1vdmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hlcmUgaXQgd2FzLgo+ID4gICAg Y2hhbmdlIHdhaXRfZm9yX2F0b21pYyB0byB3YWl0X2Zvci4KPiA+djU6IHJlYmFzZWQgKyBjb21t ZW50IGNoYW5nZXMuCj4gPnY3OiByZWJhc2VkLgo+ID52ODogcmViYXNlZC4KPiA+djk6IHJlYmFz ZWQuIENoYW5nZWQgdGhlIHllYXIgaW4gdGhlIGNvcHlyaWdodCBtZXNzYWdlIHRvIHJlZmxlY3QK PiA+dGhlIHJpZ2h0IHllYXIuQ29ycmVjdCB0aGUgY29tbWVudHMscmVtb3ZlIHRoZSB1bndhbnRl ZCBXQVJOIG1lc3NhZ2UsCj4gPnJlcGxhY2UgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoKSB3 aXRoIGk5MTVfZ2VtX29iamVjdF9wdXQoKS5NYWtlIHRoZQo+ID5wcm90b3R5cGVzIGluIGludGVs X2h1Yy5oIG5vbi1leHRlcm4uCj4gPnYxMDogcmViYXNlZC4gVXBkYXRlIHRoZSBmaWxlIGNvbnN0 cnVjdGlvbiBkb25lIGJ5IEh1Qy4gSXQgaXMgc2ltaWxhciB0bwo+ID5HdUMuQWRvcHRlZCB0aGUg YXBwcm9hY2ggdXNlZCBpbi0KPiA+aHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Bh dGNoLzEwNDM1NS8gPFR2cnRrbyBVcnN1bGluPgo+ID52MTE6IEZpeCB3YXJuaW5ncy4gUmVtb3Zl IG9sZCBkZWNsYXJhdGlvbi4KPiA+Cj4gPkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgo+ID5UZXN0ZWQtYnk6IFhpYW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGlu dGVsLmNvbT4KPiA+U2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0 c2FAaW50ZWwuY29tPgo+ID5TaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNv bT4KPiA+U2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5j b20+Cj4gPlJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29t Pgo+ID4tLS0KPiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICB8ICAg MSArCj4gPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDMgKwo+ ID4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggICAgIHwgICAzICsKPiA+IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICB8ICAgMSArCj4gPiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCAgIDYgKy0KPiA+IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2h1Yy5oICAgICAgICB8ICA0MiArKysrKwo+ID4gZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIHwgMjY5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPiA3IGZpbGVzIGNoYW5nZWQsIDMyMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQo+ID4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2h1Yy5oCj4gPiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aHVjX2xvYWRlci5jCj4gPgo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID5pbmRleCAzZGVhNDZhLi5j ZmVhOTI1IDEwMDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4r KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID5AQCAtNTYsNiArNTYsNyBAQCBp OTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ID4KPiA+ICMgZ2VuZXJhbC1wdXJwb3NlIG1p Y3JvY29udHJvbGxlciAoR3VDKSBzdXBwb3J0Cj4gPiBpOTE1LXkgKz0gaW50ZWxfZ3VjX2xvYWRl ci5vIFwKPiA+KwkgIGludGVsX2h1Y19sb2FkZXIubyBcCj4gPiAJICBpOTE1X2d1Y19zdWJtaXNz aW9uLm8KPiA+Cj4gPiAjIGF1dG9nZW5lcmF0ZWQgbnVsbCByZW5kZXIgc3RhdGUKPiA+ZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gPmluZGV4IGM0YTE0ZGUuLjNhNmM0MTIgMTAwNjQ0Cj4gPi0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ID5AQCAtNTYsNiArNTYsNyBAQAo+ID4gI2luY2x1ZGUgImludGVs X2Jpb3MuaCIKPiA+ICNpbmNsdWRlICJpbnRlbF9kcGxsX21nci5oIgo+ID4gI2luY2x1ZGUgImlu dGVsX2d1Yy5oIgo+ID4rI2luY2x1ZGUgImludGVsX2h1Yy5oIgo+ID4gI2luY2x1ZGUgImludGVs X2xyYy5oIgo+ID4gI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKPiA+Cj4gPkBAIC0xNzkx LDYgKzE3OTIsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPgo+ID4gCXN0cnVjdCBp bnRlbF9ndnQgKmd2dDsKPiA+Cj4gPisJc3RydWN0IGludGVsX2h1YyBodWM7Cj4gPiAJc3RydWN0 IGludGVsX2d1YyBndWM7Cj4gPgo+ID4gCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwo+ID5AQCAtMjYw Nyw2ICsyNjA5LDcgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gPiAjZGVmaW5lIEhB U19HVUMoZGV2X3ByaXYpCSgoZGV2X3ByaXYpLT5pbmZvLmhhc19ndWMpCj4gPiAjZGVmaW5lIEhB U19HVUNfVUNPREUoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkKPiA+ICNkZWZpbmUgSEFT X0dVQ19TQ0hFRChkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQo+ID4rI2RlZmluZSBIQVNf SFVDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKPiAKPiBQYXJhbWV0ZXIgbmFtZSBzaG91bGQg YmUgZGV2X3ByaXYuCj4gCj4gPiAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXZfcHJp dikgKChkZXZfcHJpdiktPmluZm8uaGFzX3Jlc291cmNlX3N0cmVhbWVyKQo+ID4KPiA+ZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+aW5kZXggYTQ3ZTFlNC4uNjRlOTQyYSAxMDA2NDQK PiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+KysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+QEAgLTYxLDkgKzYxLDEyIEBACj4g PiAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2KQo+ID4gI2RlZmlu ZSBETUFfQ09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQo+ID4gI2RlZmluZSBETUFfQ1RSTAkJCV9N TUlPKDB4YzMxNCkKPiA+KyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCj4gPiAjZGVm aW5lICAgVU9TX01PVkUJCQkgICgxPDw0KQo+ID4gI2RlZmluZSAgIFNUQVJUX0RNQQkJCSAgKDE8 PDApCj4gPiAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCj4gPisj ZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQo+ID4rI2RlZmluZSAgIEhV Q19MT0FESU5HX0FHRU5UX0dVQwkJICAoMTw8MSkKPiA+ICNkZWZpbmUgICBHVUNfV09QQ01fT0ZG U0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAqLwo+ID4gI2RlZmluZSBHVUNfTUFYX0lETEVf Q09VTlQJCV9NTUlPKDB4QzNFNCkKPiA+Cj4gPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gPmlu ZGV4IDQ2OTkwYTAuLjMzOGU4MDMgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCj4gPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4g PkBAIC0xODQsNiArMTg0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7Cj4gPiBleHRlcm4gaW50IGlu dGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gZXh0ZXJuIGludCBp bnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gdm9pZCBpbnRlbF91 Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVj X2Z3KTsKPiA+K3UzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ID4KPiA+IC8qIGk5MTVfZ3VjX3N1Ym1pc3Npb24uYyAqLwo+ID4gaW50IGk5MTVf Z3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPmluZGV4IDcwYjk2NWQu LjdmM2ZkYjAgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19s b2FkZXIuYwo+ID4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMK PiA+QEAgLTMwOSw3ICszMDksOCBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAJSTkxNV9XUklURShETUFfQUREUl8x X0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKPiA+Cj4gPiAJLyogRmluYWxseSBzdGFy dCB0aGUgRE1BICovCj4gPi0JSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxF KFVPU19NT1ZFIHwgU1RBUlRfRE1BKSk7Cj4gPisJSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tF RF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSB8Cj4gPisJCQlfTUFTS0VEX0JJVF9E SVNBQkxFKEhVQ19VS0VSTkVMKSk7Cj4gPgo+ID4gCS8qCj4gPiAJICogV2FpdCBmb3IgdGhlIERN QSB0byBjb21wbGV0ZSAmIHRoZSBHdUMgdG8gc3RhcnQgdXAuCj4gPkBAIC0zMzQsNyArMzM1LDcg QEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gCXJldHVybiByZXQ7Cj4gPiB9Cj4gPgo+ID4tc3RhdGljIHUzMiBndWNf d29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPit1MzIgZ3Vj X3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gewo+ID4g CXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKPiA+Cj4gPkBAIC01MTIsNiArNTEzLDcg QEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gCQlpZiAo ZXJyKQo+ID4gCQkJZ290byBmYWlsOwo+ID4KPiA+KwkJaW50ZWxfaHVjX2xvYWQoZGV2KTsKPiA+ IAkJZXJyID0gZ3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwo+ID4gCQlpZiAoIWVycikKPiA+IAkJ CWJyZWFrOwo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+ID5uZXcgZmlsZSBtb2RlIDEwMDY0 NAo+ID5pbmRleCAwMDAwMDAwLi4zY2UwMjk5Cj4gPi0tLSAvZGV2L251bGwKPiA+KysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKPiA+QEAgLTAsMCArMSw0MiBAQAo+ID4rLyoK PiA+KyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gPisgKgo+ID4rICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKPiA+KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCj4gPisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+KyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4rICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKPiA+KyAqCj4gPisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCj4gPisgKiBTb2Z0d2FyZS4KPiA+KyAqCj4gPisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP Ugo+ID4rICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+KyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4gPisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4rICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUwo+ID4rICogSU4gVEhFIFNPRlRXQVJFLgo+ID4rICoKPiA+KyAqLwo+ID4rI2lmbmRl ZiBfSU5URUxfSFVDX0hfCj4gPisjZGVmaW5lIF9JTlRFTF9IVUNfSF8KPiA+Kwo+ID4rI2luY2x1 ZGUgImludGVsX2d1Yy5oIgo+ID4rCj4gPisjZGVmaW5lIEhVQ19TVEFUVVMyCQlfTU1JTygweEQz QjApCj4gPisjZGVmaW5lICAgSFVDX0ZXX1ZFUklGSUVECSgxPDw3KQo+ID4rCj4gPitzdHJ1Y3Qg aW50ZWxfaHVjIHsKPiA+KwkvKiBHZW5lcmljIHVDIGZpcm13YXJlIG1hbmFnZW1lbnQgKi8KPiA+ KwlzdHJ1Y3QgaW50ZWxfdWNfZncgaHVjX2Z3Owo+ID4rCj4gPisJLyogSHVDLXNwZWNpZmljIGFk ZGl0aW9ucyAqLwo+ID4rfTsKPiA+Kwo+ID4rdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiA+K3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4gPitpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g PisjZW5kaWYKPiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19s b2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+ID5uZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ID5pbmRleCAwMDAwMDAwLi5jZTUwMzA2Cj4gPi0tLSAvZGV2L251 bGwKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gPkBA IC0wLDAgKzEsMjY5IEBACj4gPisvKgo+ID4rICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29y cG9yYXRpb24KPiA+KyAqCj4gPisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4rICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKPiA+KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+KyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4r ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gPisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4rICoKPiA+KyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKPiA+KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+KyAqIFNvZnR3YXJlLgo+ID4rICoK PiA+KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+KyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAo+ID4rICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+KyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCj4gPisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gPisgKiBJTiBUSEUgU09GVFdBUkUuCj4g PisgKgo+ID4rICovCj4gPisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiA+KyNpbmNsdWRl ICJpOTE1X2Rydi5oIgo+ID4rI2luY2x1ZGUgImludGVsX2h1Yy5oIgo+ID4rCj4gPisvKioKPiA+ KyAqIERPQzogSHVDIEZpcm13YXJlCj4gPisgKgo+ID4rICogTW90aXZhdGlvbjoKPiA+KyAqIEdF TjkgaW50cm9kdWNlcyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlh IEhFVkMgKEhpZ2gKPiA+KyAqIEVmZmljaWVuY3kgVmlkZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBV c2Vyc3BhY2UgY2FuIHVzZSB0aGUgZmlybXdhcmUKPiA+KyAqIGNhcGFiaWxpdGllcyBieSBhZGRp bmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCj4gPisgKgo+ID4rICog SW1wbGVtZW50YXRpb246Cj4gPisgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZCBh cyB0aGUgR3VDLiBIb3dldmVyLCB0aGUgYWN0dWFsCj4gPisgKiBsb2FkaW5nIHRvIEhXIGlzIGRl ZmVycmVkIHVudGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgo+ID4rICoKPiA+KyAqIE5v dGUgdGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2Fk aW5nLgo+ID4rICovCj4gPisKPiA+KyNkZWZpbmUgU0tMX0ZXX01BSk9SIDAxCj4gPisjZGVmaW5l IFNLTF9GV19NSU5PUiAwNwo+ID4rI2RlZmluZSBTS0xfQkxEX05VTSAxMzk4Cj4gPisKPiA+KyNk ZWZpbmUgSFVDX0ZXX1BBVEgocGxhdGZvcm0sIG1ham9yLCBtaW5vciwgYmxkX251bSkgXAo+ID4r CSJpOTE1LyIgX19zdHJpbmdpZnkocGxhdGZvcm0pICJfaHVjX3ZlciIgX19zdHJpbmdpZnkobWFq b3IpICJfIiBcCj4gPisJX19zdHJpbmdpZnkobWlub3IpICJfIiBfX3N0cmluZ2lmeShibGRfbnVt KSAiLmJpbiIKPiAKPiBBcG9sb2dpZXMgaWYgSSBtaXNzZWQgaXQsIGJ1dCB3YXMgaXQgZXZlciBk aXNjdXNzZWQgd2h5IGRvIHdlIG5lZWQKPiB0aGUgYnVpbGQgbnVtYmVyIGluIHRoZSBmaWxlbmFt ZT8gTW9yZSBzbywgZm9yIHRoZSBkcml2ZXIgdG8ga25vdwo+IGFib3V0IGl0IHdoZW4gaXQgb3Ro ZXJ3aXNlIGRvZXMgbm90IHVzZSBpdD8KPiAKVlBHIE1lZGlhIHRlYW0gdGhhdCBwcm92aWRlcyBI dUMgZmlybXdhcmUgaXMgdXNpbmcgdGhpcyBmb3JtYXQuIEl0IHNlZW1zCnRoYXQgYnVpbGQgbnVt YmVyIHJlYWxseSBpcyBhIHJlbGVhc2UgbWlub3IuIFdlIGFyZSBzZWVpbmcgbmV3IGZpcm13YXJl CmZyb20gdGhlbSB3aXRoIGJ1ZyBmaXhlcyB3aGVyZSBvbmx5IGJ1aWxkIG51bWJlciBpcyBpbmNy ZW1lbnRlZC4gV2UgY2FuCnB1c2ggYmFjayBvbiB0aGlzIGFwcHJvYWNoIGlmIGl0IGlzIGEgY29u Y2Vybi4KLUplZmYKPiA+Kwo+ID4rI2RlZmluZSBJOTE1X1NLTF9IVUNfVUNPREUgSFVDX0ZXX1BB VEgoc2tsLCBTS0xfRldfTUFKT1IsIFwKPiA+KwlTS0xfRldfTUlOT1IsIFNLTF9CTERfTlVNKQo+ ID4rTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0hVQ19VQ09ERSk7Cj4gPisKPiA+Ky8qKgo+ID4r ICogaHVjX3Vjb2RlX3hmZXIoKSAtIERNQSdzIHRoZSBmaXJtd2FyZQo+ID4rICogQGRldl9wcml2 OiB0aGUgZHJtIGRldmljZQo+ID4rICoKPiA+KyAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGdl bSBvYmplY3QgY29udGFpbmluZyB0aGUgZmlybXdhcmUsIHNldHMgdXAgdGhlIERNQQo+ID4rICog ZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBETUEgb3BlcmF0aW9uIGFuZCB3YWl0cyBmb3IgaXQg dG8gZmluaXNoLgo+ID4rICoKPiA+KyAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBS QU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9sbGVyLgo+ID4rICoKPiA+KyAqIFJl dHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlCj4gPisgKi8KPiA+Kwo+ID4r c3RhdGljIGludCBodWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPit7Cj4gPisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1 Yy5odWNfZnc7Cj4gPisJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gPisJdW5zaWduZWQgbG9uZyBv ZmZzZXQgPSAwOwo+ID4rCXUzMiBzaXplOwo+ID4rCWludCByZXQ7Cj4gPisKPiA+KwlyZXQgPSBp OTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oaHVjX2Z3LT51Y19md19vYmosIGZhbHNl KTsKPiA+KwlpZiAocmV0KSB7Cj4gPisJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFp bGVkICVkXG4iLCByZXQpOwo+ID4rCQlyZXR1cm4gcmV0Owo+ID4rCX0KPiA+Kwo+ID4rCXZtYSA9 IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWNfZnctPnVjX2Z3X29iaiwgTlVMTCwgMCwgMCwg MCk7Cj4gPisJaWYgKElTX0VSUih2bWEpKSB7Cj4gPisJCURSTV9ERUJVR19EUklWRVIoInBpbiBm YWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKPiA+KwkJcmV0dXJuIFBUUl9FUlIodm1h KTsKPiA+Kwl9Cj4gPisKPiA+KwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtl IHRoZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICovCj4gPisJSTkxNV9XUklURShHRU44X0dUQ1Is IEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKPiA+Kwo+ID4rCWludGVsX3VuY29yZV9mb3JjZXdha2Vf Z2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiA+Kwo+ID4rCS8qIGluaXQgV09QQ00gKi8K PiA+KwlJOTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpFLCBndWNfd29wY21fc2l6ZShkZXZfcHJpdikp Owo+ID4rCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRf VkFMVUUgfAo+ID4rCQkJSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKPiA+Kwo+ID4rCS8qIFNldCB0 aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLwo+ID4rCW9mZnNldCA9IGk5MTVfZ2d0 dF9vZmZzZXQodm1hKSArIGh1Y19mdy0+aGVhZGVyX29mZnNldDsKPiA+KwlJOTE1X1dSSVRFKERN QV9BRERSXzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+ID4rCUk5MTVfV1JJVEUoRE1B X0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwo+ID4rCj4gPisJ LyogSGFyZHdhcmUgZG9lc24ndCBsb29rIGF0IGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIEh1Qy4g U2V0IGl0IHRvIDAsCj4gPisJICogYnV0IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVz cyBzcGFjZS4KPiA+KwkgKi8KPiA+KwlJOTE1X1dSSVRFKERNQV9BRERSXzFfTE9XLCAwKTsKPiA+ KwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ ID4rCj4gPisJc2l6ZSA9IGh1Y19mdy0+aGVhZGVyX3NpemUgKyBodWNfZnctPnVjb2RlX3NpemU7 Cj4gPisJSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBzaXplKTsKPiA+Kwo+ID4rCS8qIFN0YXJ0 IHRoZSBETUEgKi8KPiA+KwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUo SFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsKPiA+Kwo+ID4rCS8qIFdhaXQgZm9yIERNQSB0byBm aW5pc2ggKi8KPiA+KwlyZXQgPSB3YWl0X2ZvcigoSTkxNV9SRUFEKERNQV9DVFJMKSAmIFNUQVJU X0RNQSkgPT0gMCwgMTAwKTsKPiA+Kwo+ID4rCURSTV9ERUJVR19EUklWRVIoIkh1QyBETUEgdHJh bnNmZXIgd2FpdCBvdmVyIHdpdGggcmV0ICVkXG4iLCByZXQpOwo+ID4rCj4gPisJaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ID4rCj4gPisJLyoK PiA+KwkgKiBXZSBrZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUu IEJ1dCB3ZSBjYW4gdW5waW4gaXQKPiA+KwkgKiBub3cgdGhhdCBETUEgaGFzIGNvbXBsZXRlZCwg c28gaXQgZG9lc24ndCBjb250aW51ZSB0byB0YWtlIHVwIHNwYWNlLgo+ID4rCSAqLwo+ID4rCWk5 MTVfdm1hX3VucGluKHZtYSk7Cj4gPisKPiA+KwlyZXR1cm4gcmV0Owo+ID4rfQo+IAo+IEl0IG1h eSBiZSBwb3NzaWJsZSB0byBleHRyYWN0IHNvbWUgY29tbW9uYWxpdHkgYmV0d2VlbiB0aGlzIGFu ZAo+IGd1Y191Y29kZV94ZmVyKF9kbWEpLCBidXQgaXQgY2FuIGJlIGRvbmUgYXMgYSBmb2xsb3d1 cC4KPiAKPiA+Kwo+ID4rLyoqCj4gPisgKiBpbnRlbF9odWNfaW5pdCgpIC0gaW5pdGlhdGUgSHVD IGZpcm13YXJlIGxvYWRpbmcgcmVxdWVzdAo+ID4rICogQGRldjogdGhlIGRybSBkZXZpY2UKPiA+ KyAqCj4gPisgKiBDYWxsZWQgZWFybHkgZHVyaW5nIGRyaXZlciBsb2FkLCBidXQgYWZ0ZXIgR0VN IGlzIGluaXRpYWxpc2VkLiBUaGUgbG9hZGluZwo+ID4rICogd2lsbCBjb250aW51ZSBvbmx5IHdo ZW4gZHJpdmVyIGV4cGxpY2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZCB2ZXJzaW9uLgo+ ID4rICogQWxsIG90aGVyIGNhc2VzIGFyZSBjb25zaWRlcmVkIGFzIFVDX0ZJUk1XQVJFX05PTkUg ZWl0aGVyIGJlY2F1c2UgSFcgaXMgbm90Cj4gPisgKiBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3Vw cG9ydCBpdC4gQW5kIHRoZXJlIHdpbGwgYmUgbm8gZXJyb3IgbWVzc2FnZSBmb3IKPiA+KyAqIFVD X0ZJUk1XQVJFX05PTkUgY2FzZXMuCj4gPisgKgo+ID4rICogVGhlIERNQS1jb3B5aW5nIHRvIEhX IGlzIGRvbmUgbGF0ZXIgd2hlbiBpbnRlbF9odWNfbG9hZCgpIGlzIGNhbGxlZC4KPiA+KyAqLwo+ ID4rdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4rewo+ID4r CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+Kwlz dHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsKPiA+KwlzdHJ1Y3QgaW50ZWxf dWNfZncgKmh1Y19mdyA9ICZodWMtPmh1Y19mdzsKPiA+Kwljb25zdCBjaGFyICpmd19wYXRoID0g TlVMTDsKPiA+Kwo+ID4rCWh1Y19mdy0+dWNfZGV2ID0gZGV2Owo+ID4rCWh1Y19mdy0+dWNfZndf cGF0aCA9IE5VTEw7Cj4gPisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05F Owo+ID4rCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOwo+ID4rCWh1Y19m dy0+ZndfdHlwZSA9IFVDX0ZXX1RZUEVfSFVDOwo+ID4rCj4gPisJaWYgKCFIQVNfSFVDX1VDT0RF KGRldl9wcml2KSkKPiA+KwkJcmV0dXJuOwo+ID4rCj4gPisJaWYgKElTX1NLWUxBS0UoZGV2X3By aXYpKSB7Cj4gPisJCWZ3X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7Cj4gPisJCWh1Y19mdy0+ bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NQUpPUjsKPiA+KwkJaHVjX2Z3LT5taW5vcl92ZXJf d2FudGVkID0gU0tMX0ZXX01JTk9SOwo+ID4rCX0KPiAKPiBXaHkgbm90ICJlbHNlIHJldHVybiIg aW5zdGVhZCBvZiB0aGUgZndfcGF0aCBjaGVjayBiZWxvdz8gKENvdWxkCj4gcmVtb3ZlIGZ3X3Bh dGggPSBOVUxMIGluaXRpYWxpemVyIHRoZW4pLgo+IAo+ID4rCj4gPisJaWYgKGZ3X3BhdGggPT0g TlVMTCkKPiA+KwkJcmV0dXJuOwo+ID4rCj4gPisJaHVjX2Z3LT51Y19md19wYXRoID0gZndfcGF0 aDsKPiA+KwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gPisK PiA+KwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwg ZndfcGF0aCk7Cj4gPisKPiA+KwlpbnRlbF91Y19md19mZXRjaChkZXYsIGh1Y19mdyk7Cj4gPit9 Cj4gPisKPiA+Ky8qKgo+ID4rICogaW50ZWxfaHVjX2xvYWQoKSAtIGxvYWQgSHVDIHVDb2RlIHRv IGRldmljZQo+ID4rICogQGRldjogdGhlIGRybSBkZXZpY2UKPiA+KyAqCj4gPisgKiBDYWxsZWQg ZnJvbSBnZW1faW5pdF9odygpIGR1cmluZyBkcml2ZXIgbG9hZGluZyBhbmQgYWxzbyBhZnRlciBh IEdQVSByZXNldC4KPiA+KyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRvbmUg YmVmb3JlIEd1QyBsb2FkaW5nLgo+ID4rICoKPiA+KyAqIFRoZSBmaXJtd2FyZSBpbWFnZSBzaG91 bGQgaGF2ZSBhbHJlYWR5IGJlZW4gZmV0Y2hlZCBpbnRvIG1lbW9yeSBieSB0aGUKPiA+KyAqIGVh cmxpZXIgY2FsbCB0byBpbnRlbF9odWNfdWNvZGVfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQgb25s eSBjaGVjayB0aGF0Cj4gCj4gaW50ZWxfaHVjX3Vjb2RlX2luaXQgZXhpc3RzIGFueXdoZXJlPwo+ IAo+ID4rICogaXMgc3VjY2VlZGVkLCBhbmQgdGhlbiB0cmFuc2ZlciB0aGUgaW1hZ2UgdG8gdGhl IGgvdy4KPiA+KyAqCj4gPisgKiBSZXR1cm46CW5vbi16ZXJvIGNvZGUgb24gZXJyb3IKPiA+KyAq Lwo+ID4raW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPit7Cj4g PisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4r CXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3Owo+ID4r CWludCBlcnI7Cj4gPisKPiA+KwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdB UkVfTk9ORSkKPiA+KwkJcmV0dXJuIDA7Cj4gPisKPiA+KwlEUk1fREVCVUdfRFJJVkVSKCIlcyBm dyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAo+ID4rCQlodWNfZnctPnVjX2Z3X3BhdGgs Cj4gPisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiA+ KwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOwo+ID4rCj4g PisJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX1NVQ0NFU1MgJiYKPiA+ KwkgICAgaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9GQUlMKQo+ID4rCQlyZXR1 cm4gLUVOT0VYRUM7Cj4gPisKPiA+KwlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVf UEVORElORzsKPiA+Kwo+ID4rCXN3aXRjaCAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpIHsKPiA+Kwlj YXNlIFVDX0ZJUk1XQVJFX0ZBSUw6Cj4gPisJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICov Cj4gPisJCWVyciA9IC1FSU87Cj4gPisJCWdvdG8gZmFpbDsKPiA+Kwo+ID4rCWNhc2UgVUNfRklS TVdBUkVfTk9ORToKPiA+KwljYXNlIFVDX0ZJUk1XQVJFX1BFTkRJTkc6Cj4gPisJZGVmYXVsdDoK PiA+KwkJLyogImNhbid0IGhhcHBlbiIgKi8KPiA+KwkJV0FSTl9PTkNFKDEsICJIdUMgZncgJXMg aW52YWxpZCBmZXRjaF9zdGF0dXMgJXMgWyVkXVxuIiwKPiA+KwkJCWh1Y19mdy0+dWNfZndfcGF0 aCwKPiA+KwkJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwK PiA+KwkJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzKTsKPiA+KwkJZXJyID0gLUVOWElPOwo+ID4rCQln b3RvIGZhaWw7Cj4gPisKPiA+KwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gPisJCWJyZWFr Owo+ID4rCX0KPiA+Kwo+ID4rCWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiA+Kwlp ZiAoZXJyKQo+ID4rCQlnb3RvIGZhaWw7Cj4gPisKPiA+KwlodWNfZnctPmxvYWRfc3RhdHVzID0g VUNfRklSTVdBUkVfU1VDQ0VTUzsKPiA+Kwo+ID4rCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0 YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gPisJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiA+ KwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ID4rCQlp bnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4gPisKPiA+Kwly ZXR1cm4gMDsKPiA+Kwo+ID4rZmFpbDoKPiA+KwlpZiAoaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBV Q19GSVJNV0FSRV9QRU5ESU5HKQo+ID4rCQlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdB UkVfRkFJTDsKPiA+Kwo+ID4rCURSTV9FUlJPUigiRmFpbGVkIHRvIGNvbXBsZXRlIEh1QyB1Q29k ZSBsb2FkIHdpdGggcmV0ICVkXG4iLCBlcnIpOwo+ID4rCj4gPisJcmV0dXJuIGVycjsKPiA+K30K PiA+Kwo+ID4rLyoqCj4gPisgKiBpbnRlbF9odWNfZmluaSgpIC0gY2xlYW4gdXAgcmVzb3VyY2Vz IGFsbG9jYXRlZCBmb3IgSHVDCj4gPisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQo+ID4rICoKPiA+ KyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1YyBmaXJtd2FyZSBHRU0gb2JqLgo+ID4r ICovCj4gPit2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPit7 Cj4gPisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ ID4rCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3Owo+ ID4rCj4gPisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4rCWlmIChodWNfZnct PnVjX2Z3X29iaikKPiA+KwkJaTkxNV9nZW1fb2JqZWN0X3B1dChodWNfZnctPnVjX2Z3X29iaik7 Cj4gPisJaHVjX2Z3LT51Y19md19vYmogPSBOVUxMOwo+ID4rCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ID4rCj4gPisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FS RV9OT05FOwo+ID4rfQo+ID4KPiAKPiBSZWdhcmRzLAo+IAo+IFR2cnRrbwo+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK