From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anusha Srivatsa Subject: [PATCH] drm/i915/huc: Add HuC fw loading support Date: Wed, 11 Jan 2017 05:15:14 -0800 Message-ID: <1484140514-9590-1-git-send-email-anusha.srivatsa@intel.com> References: <20170106160234.GA100852@mwajdecz-MOBL1.ger.corp.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 6F8066E8E0 for ; Wed, 11 Jan 2017 13:18:36 +0000 (UTC) In-Reply-To: <20170106160234.GA100852@mwajdecz-MOBL1.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org VGhlIEh1QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZSBpbnRlbF91Y19m d19mZXRjaCgpCmlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCgpIdUMgbG9hZGluZyBuZWVkcyB0byBi ZSBiZWZvcmUgR3VDIGxvYWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nIG11c3QKYmUgZG9uZSBlYXJs eSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KCnYyOiByZWJhc2VkIG9uLXRvcCBvZiBkcm0t aW50ZWwtbmlnaHRseS4KICAgIHJlbW92ZWQgaWYoSEFTX0dVQygpKSBiZWZvcmUgdGhlIGd1YyBj YWxsLiAoRC5Hb3Jkb24pCiAgICB1cGRhdGUgaHVjX3ZlcnNpb24gbnVtYmVyIG9mIGZvcm1hdC4K djM6IHJlYmFzZWQgdG8gZHJtLWludGVsLW5pZ2h0bHksIGNoYW5nZWQgdGhlIGZpbGUgbmFtZSBm b3JtYXQgdG8KICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLgogICAgQ2hhbmdl ZCBkZXYtPmRldl9wcml2YXRlIHRvIHRvX2k5MTUoKQp2NDogbW92ZWQgZnVuY3Rpb24gYmFjayB0 byB3aGVyZSBpdCB3YXMuCiAgICBjaGFuZ2Ugd2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgp2 NTogcmViYXNlZCArIGNvbW1lbnQgY2hhbmdlcy4Kdjc6IHJlYmFzZWQuCnY4OiByZWJhc2VkLgp2 OTogcmViYXNlZC4gQ2hhbmdlZCB0aGUgeWVhciBpbiB0aGUgY29weXJpZ2h0IG1lc3NhZ2UgdG8g cmVmbGVjdAp0aGUgcmlnaHQgeWVhci5Db3JyZWN0IHRoZSBjb21tZW50cyxyZW1vdmUgdGhlIHVu d2FudGVkIFdBUk4gbWVzc2FnZSwKcmVwbGFjZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgp IHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dCgpLk1ha2UgdGhlCnByb3RvdHlwZXMgaW4gaW50ZWxf aHVjLmggbm9uLWV4dGVybi4KdjEwOiByZWJhc2VkLiBVcGRhdGUgdGhlIGZpbGUgY29uc3RydWN0 aW9uIGRvbmUgYnkgSHVDLiBJdCBpcyBzaW1pbGFyIHRvCkd1Qy5BZG9wdGVkIHRoZSBhcHByb2Fj aCB1c2VkIGluLQpodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMTA0MzU1 LyA8VHZydGtvIFVyc3VsaW4+CnYxMTogRml4IHdhcm5pbmdzIHJlbW92ZSBvbGQgZGVjbGFyYXRp b24KdjEyOiBDaGFuZ2UgZGV2IHRvIGRldl9wcml2IGluIG1hY3JvIGRlZmluaXRpb24uCkNvcnJl Y3RlZCBjb21tZW50cy4KdjEzOiByZWJhc2VkLgp2MTQ6IHJlYmFzZWQgb24gdG9wIG9mIGRybS10 aXAKdjE1OiByZWJhc2VkLiBVcGRhdGVkIGZ1bmN0aW9ucyBpbnRlbF9odWNfbG9hZCgpLGludGVs X2h1Y19pbml0KCkgYW5kCmludGVsX3VjX2Z3X2ZldGNoKCkgdG8gYWNjZXB0IGRldl9wcml2IGlu c3RlYWQgb2YgZGV2LiBNb3ZlZCBjb250ZW50cwpvZiBpbnRlbF9odWMuaCB0byBpbnRlbF91Yy5o CnYxNjogY2hhbmdlIFNLTF9GV18gdG8gU0tMX0hVQ19GV18uIEFkZCBpbnRlbF8gcHJlZml4IHRv IGd1Y193b3BjbV9zaXplKCkuClJlbW92ZSB1bndhbnRlZCBjaGVja3MgaW4gaW50ZWxfdWMuaC4g UmVuYW1lIGh1Y19mdyBpbiBzdHJ1Y3QgaW50ZWxfaHVjIHRvCnNpbXBseSBmdyB0byBhdm9pZCBy ZWR1bmRlbmN5Lgp2MTc6IHJlYmFzZWQuCnYxODogcmViYXNlZC4gQ29ycmVjdCBjb21tZW50cy4K djE5OiByZWJhc2VkLiBDb3JyZWN0IGNvbW1lbnRzLiBtb3ZlIGRlZmluaXRpb24gdG8gaTkxNV9n dWNfcmVnLmggZnJvbQppbnRlbF91Yy5oLiBDbGVhbiBETUFfQ1RSTCBiaXRzIGFmdGVyIEh1QyBE TUEgdHJhbnNmZXIgaW4gaHVjX3Vjb2RlX3hmZXIoKQppbnN0ZWFkIG9mIGd1Y191Y29kZV94ZmVy KCkuIEFkZCBzdWl0YWJsZSBXQVJOcyB0byBnaXZlIGV4dHJhIGluZm8uCgpDYzogQXJrYWRpdXN6 IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJAaW50ZWwuY29tPgpDYzogTWljaGFsIFdhamRlY3prbyA8 bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ClRlc3RlZC1ieTogWGlhbmcgSGFpaGFvIDxoYWlo YW8ueGlhbmdAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNo YS5zcml2YXRzYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICAzICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19yZWcuaCAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2xvYWRlci5jIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o dWNfbG9hZGVyLmMgfCAyNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggICAgICAgICB8ICAxNCArKwogNyBmaWxlcyBjaGFu Z2VkLCAyOTUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCmluZGV4IDUxOTY1MDkuLjQ1YWUxMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC01Nyw2 ICs1Nyw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCiAjIGdlbmVyYWwtcHVycG9z ZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3VwcG9ydAogaTkxNS15ICs9IGludGVsX3VjLm8gXAog CSAgaW50ZWxfZ3VjX2xvYWRlci5vIFwKKwkgIGludGVsX2h1Y19sb2FkZXIubyBcCiAJICBpOTE1 X2d1Y19zdWJtaXNzaW9uLm8KIAogIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBhZWZhYjlhLi41YTkwODI5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKQEAgLTU5OSw2ICs1OTksNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rl c2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAocmV0KQogCQlnb3RvIGNsZWFu dXBfaXJxOwogCisJaW50ZWxfaHVjX2luaXQoZGV2X3ByaXYpOwogCWludGVsX2d1Y19pbml0KGRl dl9wcml2KTsKIAogCXJldCA9IGk5MTVfZ2VtX2luaXQoZGV2X3ByaXYpOwpAQCAtNjI3LDYgKzYy OCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCWk5MTVfZ2VtX2ZpbmkoZGV2X3ByaXYpOwogY2xlYW51cF9pcnE6CiAJaW50ZWxf Z3VjX2ZpbmkoZGV2X3ByaXYpOworCWludGVsX2h1Y19maW5pKGRldik7CiAJZHJtX2lycV91bmlu c3RhbGwoZGV2KTsKIAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXZfcHJpdik7CiBjbGVhbnVwX2Nz cjoKQEAgLTEzMTQsNiArMTMxNiw3IEBAIHZvaWQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJZHJhaW5fd29ya3F1ZXVlKGRldl9wcml2LT53cSk7CiAKIAlpbnRl bF9ndWNfZmluaShkZXZfcHJpdik7CisJaW50ZWxfaHVjX2ZpbmkoZGV2KTsKIAlpOTE1X2dlbV9m aW5pKGRldl9wcml2KTsKIAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCBiODRjMWQxLi4yYTE3ZGYyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTIwNzMsNiArMjA3Myw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK IAogCXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsKIAorCXN0cnVjdCBpbnRlbF9odWMgaHVjOwogCXN0 cnVjdCBpbnRlbF9ndWMgZ3VjOwogCiAJc3RydWN0IGludGVsX2NzciBjc3I7CkBAIC0yODQ3LDYg KzI4NDgsNyBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKICNkZWZpbmUgSEFTX0dVQyhkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX2d1 YykKICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQog I2RlZmluZSBIQVNfR1VDX1NDSEVEKGRldl9wcml2KQkoSEFTX0dVQyhkZXZfcHJpdikpCisjZGVm aW5lIEhBU19IVUNfVUNPREUoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkKIAogI2RlZmlu ZSBIQVNfUkVTT1VSQ0VfU1RSRUFNRVIoZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19y ZXNvdXJjZV9zdHJlYW1lcikKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAppbmRleCA2 YTBhZGFmLi4zNWNmOTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApAQCAtNjEs MTIgKzYxLDE4IEBACiAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2 KQogI2RlZmluZSBETUFfQ09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQogI2RlZmluZSBETUFfQ1RS TAkJCV9NTUlPKDB4YzMxNCkKKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCiAjZGVm aW5lICAgVU9TX01PVkUJCQkgICgxPDw0KQogI2RlZmluZSAgIFNUQVJUX0RNQQkJCSAgKDE8PDAp CiAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCisjZGVmaW5lICAg SFVDX0xPQURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FH RU5UX0dVQwkJICAoMTw8MSkKICNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCSAgMHg4 MDAwMAkvKiA1MTJLQiAqLwogI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNF NCkKIAorI2RlZmluZSBIVUNfU1RBVFVTMiAgICAgICAgICAgICBfTU1JTygweEQzQjApCisjZGVm aW5lICAgSFVDX0ZXX1ZFUklGSUVEICAgICAgICgxPDw3KQorCiAvKiBEZWZpbmVzIFdPUENNIHNw YWNlIGF2YWlsYWJsZSB0byBHdUMgZmlybXdhcmUgKi8KICNkZWZpbmUgR1VDX1dPUENNX1NJWkUJ CQlfTU1JTygweGMwNTApCiAvKiBHdUMgYWRkcmVzc2VzIGJlbG93IEdVQ19XT1BDTV9UT1AgZG9u J3QgbWFwIHRocm91Z2ggdGhlIEdUVCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xv YWRlci5jCmluZGV4IGE3YTRjZDQuLjNiMDUyMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94 ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCit1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogewogCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKIApAQCAt MzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKIAogCS8qIGluaXQgV09QQ00gKi8KLQlJOTE1X1dSSVRFKEdVQ19X T1BDTV9TSVpFLCBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOworCUk5MTVfV1JJVEUoR1VDX1dP UENNX1NJWkUsIGludGVsX2d1Y193b3BjbV9zaXplKGRldl9wcml2KSk7CiAJSTkxNV9XUklURShE TUFfR1VDX1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09GRlNFVF9WQUxVRSk7CiAKIAkvKiBFbmFi bGUgTUlBIGNhY2hpbmcuIEd1QyBjbG9jayBnYXRpbmcgaXMgZGlzYWJsZWQuICovCkBAIC01MTEs NiArNTExLDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJCWlmIChlcnIpCiAJCQlnb3RvIGZhaWw7CiAKKwkJaW50ZWxfaHVjX2xvYWQo ZGV2X3ByaXYpOwogCQllcnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAJCWlmICghZXJy KQogCQkJYnJlYWs7CkBAIC02NTgsNyArNjU5LDcgQEAgdm9pZCBpbnRlbF91Y19md19mZXRjaChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXNpemUgPSB1Y19mdy0+aGVhZGVy X3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKIAogCQkvKiBUb3AgMzJrIG9mIFdPUENNIGlzIHJl c2VydmVkICg4SyBzdGFjayArIDI0ayBSQzYgY29udGV4dCkuICovCi0JCWlmIChzaXplID4gZ3Vj X3dvcGNtX3NpemUoZGV2X3ByaXYpKSB7CisJCWlmIChzaXplID4gaW50ZWxfZ3VjX3dvcGNtX3Np emUoZGV2X3ByaXYpKSB7CiAJCQlEUk1fRVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBm aXQgaW4gV09QQ01cbiIpOwogCQkJZ290byBmYWlsOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWNfbG9hZGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk0 YzkwOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19s b2FkZXIuYwpAQCAtMCwwICsxLDI2NSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSAiaTkxNV9k cnYuaCIKKyNpbmNsdWRlICJpbnRlbF91Yy5oIgorCisvKioKKyAqIERPQzogSHVDIEZpcm13YXJl CisgKgorICogTW90aXZhdGlvbjoKKyAqIEdFTjkgaW50cm9kdWNlcyBhIG5ldyBkZWRpY2F0ZWQg ZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhpZ2gKKyAqIEVmZmljaWVuY3kgVmlk ZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGUgZmlybXdhcmUKKyAq IGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNoIGJ1 ZmZlcnMuCisgKgorICogSW1wbGVtZW50YXRpb246CisgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2Fk ZXIgaXMgdXNlZCBhcyB0aGUgR3VDLiBIb3dldmVyLCB0aGUgYWN0dWFsCisgKiBsb2FkaW5nIHRv IEhXIGlzIGRlZmVycmVkIHVudGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgorICoKKyAq IE5vdGUgdGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBs b2FkaW5nLgorICovCisKKyNkZWZpbmUgU0tMX0hVQ19GV19NQUpPUiAwMQorI2RlZmluZSBTS0xf SFVDX0ZXX01JTk9SIDA3CisjZGVmaW5lIFNLTF9CTERfTlVNIDEzOTgKKworI2RlZmluZSBIVUNf RldfUEFUSChwbGF0Zm9ybSwgbWFqb3IsIG1pbm9yLCBibGRfbnVtKSBcCisJImk5MTUvIiBfX3N0 cmluZ2lmeShwbGF0Zm9ybSkgIl9odWNfdmVyIiBfX3N0cmluZ2lmeShtYWpvcikgIl8iIFwKKwlf X3N0cmluZ2lmeShtaW5vcikgIl8iIF9fc3RyaW5naWZ5KGJsZF9udW0pICIuYmluIgorCisjZGVm aW5lIEk5MTVfU0tMX0hVQ19VQ09ERSBIVUNfRldfUEFUSChza2wsIFNLTF9IVUNfRldfTUFKT1Is IFwKKwlTS0xfSFVDX0ZXX01JTk9SLCBTS0xfQkxEX05VTSkKK01PRFVMRV9GSVJNV0FSRShJOTE1 X1NLTF9IVUNfVUNPREUpOworCisvKioKKyAqIGh1Y191Y29kZV94ZmVyKCkgLSBETUEncyB0aGUg ZmlybXdhcmUKKyAqIEBkZXZfcHJpdjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBUcmFuc2ZlciB0 aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJv bGxlci4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZQor ICovCitzdGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVj LmZ3OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMDsK Kwl1MzIgc2l6ZTsKKwlpbnQgcmV0OworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19n dHRfZG9tYWluKGh1Y19mdy0+b2JqLCBmYWxzZSk7CisJaWYgKHJldCkgeworCQlEUk1fREVCVUdf RFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT5vYmosIE5VTEwsIDAs IDAsIDApOworCWlmIChJU19FUlIodm1hKSkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFp bGVkICVkXG4iLCAoaW50KVBUUl9FUlIodm1hKSk7CisJCXJldHVybiBQVFJfRVJSKHZtYSk7CisJ fQorCisJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVw ZGF0ZXMgdG8gR1RULiAqLworCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJ REFURSk7CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7CisKKwkvKiBpbml0IFdPUENNICovCisJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwg aW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKKwlJOTE1X1dSSVRFKERNQV9HVUNfV09Q Q01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHwKKwkJCUhVQ19MT0FESU5HX0FHRU5U X0dVQyk7CisKKwkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNvZGUgKi8KKwlv ZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBodWNfZnctPmhlYWRlcl9vZmZzZXQ7CisJ STkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlJOTE1 X1dSSVRFKERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZzZXQpICYgMHhGRkZGKTsK KworCS8qIEhhcmR3YXJlIGRvZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBI dUMuIFNldCBpdCB0byAwLAorCSAqIGJ1dCBzdGlsbCBwcm9ncmFtIHRoZSBjb3JyZWN0IGFkZHJl c3Mgc3BhY2UuCisJICovCisJSTkxNV9XUklURShETUFfQUREUl8xX0xPVywgMCk7CisJSTkxNV9X UklURShETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKKworCXNpemUg PSBodWNfZnctPmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOworCUk5MTVfV1JJVEUo RE1BX0NPUFlfU0laRSwgc2l6ZSk7CisKKwkvKiBTdGFydCB0aGUgRE1BICovCisJSTkxNV9XUklU RShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwgU1RBUlRfRE1BKSk7 CisKKwkvKiBXYWl0IGZvciBETUEgdG8gZmluaXNoICovCisJcmV0ID0gd2FpdF9mb3IoKEk5MTVf UkVBRChETUFfQ1RSTCkgJiBTVEFSVF9ETUEpID09IDAsIDEwMCk7CisKKwlEUk1fREVCVUdfRFJJ VkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsKKwor CS8qIERpc2FibGUgdGhlIGJpdHMgb25jZSBETUEgaXMgb3ZlciAqLworCUk5MTVfV1JJVEUoRE1B X0NUUkwsIF9NQVNLRURfQklUX0RJU0FCTEUoSFVDX1VLRVJORUwpOworCisJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCisJLyoKKwkgKiBXZSBr ZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4g dW5waW4gaXQKKwkgKiBub3cgdGhhdCBETUEgaGFzIGNvbXBsZXRlZCwgc28gaXQgZG9lc24ndCBj b250aW51ZSB0byB0YWtlIHVwIHNwYWNlLgorCSAqLworCWk5MTVfdm1hX3VucGluKHZtYSk7CisK KwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGludGVsX2h1Y19pbml0KCkgLSBpbml0aWF0ZSBI dUMgZmlybXdhcmUgbG9hZGluZyByZXF1ZXN0CisgKiBAZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9w cml2YXRlIGRldmljZQorICoKKyAqIENhbGxlZCBlYXJseSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJ1 dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQuIFRoZSBsb2FkaW5nCisgKiB3aWxsIGNvbnRpbnVl IG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBzcGVjaWZ5IGZpcm13YXJlIG5hbWUgYW5kIHZl cnNpb24uCisgKiBBbGwgb3RoZXIgY2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMgSU5URUxfVUNfRklS TVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVworICogaXMgbm90IGNhcGFibGUgb3IgZHJpdmVy IHlldCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBubyBlcnJvciBtZXNzYWdlCisgKiBm b3IgSU5URUxfVUNfRklSTVdBUkVfTk9ORSBjYXNlcy4KKyAqCisgKiBUaGUgRE1BLWNvcHlpbmcg dG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y19sb2FkKCkgaXMgY2FsbGVkLgorICov Cit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3sKKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsKKwlzdHJ1Y3QgaW50 ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmZ3OworCWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBOVUxM OworCisJaHVjX2Z3LT5wYXRoID0gTlVMTDsKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX05PTkU7CisJaHVjX2Z3LT5mdyA9IElOVEVMX1VDX0ZXX1RZUEVfSFVDOworCisJaWYgKCFI QVNfSFVDX1VDT0RFKGRldl9wcml2KSkKKwkJcmV0dXJuOworCisJaWYgKElTX1NLWUxBS0UoZGV2 X3ByaXYpKSB7CisJCWZ3X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7CisJCWh1Y19mdy0+bWFq b3JfdmVyX3dhbnRlZCA9IFNLTF9IVUNfRldfTUFKT1I7CisJCWh1Y19mdy0+bWlub3JfdmVyX3dh bnRlZCA9IFNLTF9IVUNfRldfTUlOT1I7CisJfQorCisJaHVjX2Z3LT5wYXRoID0gZndfcGF0aDsK KwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlE Uk1fREVCVUdfRFJJVkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0 aCk7CisKKwlXQVJOKGh1Y19mdy0+cGF0aCA9PSBOVUxMLCAiSHVDIHByZXNlbnQgYnV0IG5vIGZ3 IHBhdGhcbiIpOworCisJaW50ZWxfdWNfZndfZmV0Y2goZGV2X3ByaXYsIGh1Y19mdyk7Cit9CisK Ky8qKgorICogaW50ZWxfaHVjX2xvYWQoKSAtIGxvYWQgSHVDIHVDb2RlIHRvIGRldmljZQorICog QGRldl9wcml2OiB0aGUgZHJtX2k5MTVfcHJpdmF0ZSBkZXZpY2UKKyAqCisgKiBDYWxsZWQgZnJv bSBndWNfc2V0dXAoKSBkdXJpbmcgZHJpdmVyIGxvYWRpbmcgYW5kIGFsc28gYWZ0ZXIgYSBHUFUg cmVzZXQuCisgKiBCZSBub3RlIHRoYXQgSHVDIGxvYWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBH dUMgbG9hZGluZy4KKyAqCisgKiBUaGUgZmlybXdhcmUgaW1hZ2Ugc2hvdWxkIGhhdmUgYWxyZWFk eSBiZWVuIGZldGNoZWQgaW50byBtZW1vcnkgYnkgdGhlCisgKiBlYXJsaWVyIGNhbGwgdG8gaW50 ZWxfaHVjX2luaXQoKSwgc28gaGVyZSB3ZSBuZWVkIG9ubHkgY2hlY2sgdGhhdAorICogaXMgc3Vj Y2VlZGVkLCBhbmQgdGhlbiB0cmFuc2ZlciB0aGUgaW1hZ2UgdG8gdGhlIGgvdy4KKyAqCisgKiBS ZXR1cm46CW5vbi16ZXJvIGNvZGUgb24gZXJyb3IKKyAqLworaW50IGludGVsX2h1Y19sb2FkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmZ3OworCWludCBlcnI7CisKKwlpZiAoaHVjX2Z3LT5m ZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfTk9ORSkKKwkJcmV0dXJuIDA7CisKKwlE Uk1fREVCVUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAorCQlo dWNfZnctPnBhdGgsCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3Rh dHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOwor CisJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1Mg JiYKKwkgICAgaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMKQor CQlyZXR1cm4gLUVOT0VYRUM7CisKKwlodWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklS TVdBUkVfUEVORElORzsKKworCXN3aXRjaCAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpIHsKKwljYXNl IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw6CisJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICov CisJCWVyciA9IC1FSU87CisJCWdvdG8gZmFpbDsKKworCWNhc2UgSU5URUxfVUNfRklSTVdBUkVf Tk9ORToKKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc6CisJZGVmYXVsdDoKKwkJLyog ImNhbid0IGhhcHBlbiIgKi8KKwkJV0FSTl9PTkNFKDEsICJIdUMgZncgJXMgaW52YWxpZCBmZXRj aF9zdGF0dXMgJXMgWyVkXVxuIiwKKwkJCWh1Y19mdy0+cGF0aCwKKwkJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVz KTsKKwkJZXJyID0gLUVOWElPOworCQlnb3RvIGZhaWw7CisKKwljYXNlIElOVEVMX1VDX0ZJUk1X QVJFX1NVQ0NFU1M6CisJCWJyZWFrOworCX0KKworCWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9w cml2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGZhaWw7CisKKwlodWNfZnctPmxvYWRfc3RhdHVzID0g SU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKKworCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0 YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCisJCWh1Y19mdy0+cGF0aCwKKwkJaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0 dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwlp ZiAoaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HKQorCQlo dWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfRkFJTDsKKworCURSTV9FUlJP UigiRmFpbGVkIHRvIGNvbXBsZXRlIEh1QyB1Q29kZSBsb2FkIHdpdGggcmV0ICVkXG4iLCBlcnIp OworCisJcmV0dXJuIGVycjsKK30KKworLyoqCisgKiBpbnRlbF9odWNfZmluaSgpIC0gY2xlYW4g dXAgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgSHVDCisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQor ICoKKyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1YyBmaXJtd2FyZSBHRU0gb2JqLgor ICovCit2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBp bnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuZnc7CisKKwltdXRleF9sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKGh1Y19mdy0+b2JqKQorCQlpOTE1X2dlbV9vYmplY3Rf cHV0KGh1Y19mdy0+b2JqKTsKKwlodWNfZnctPm9iaiA9IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7CisKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX05PTkU7Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCmluZGV4IGNlMDQxMDUuLmJm MTc0MWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaApAQCAtMTc2LDYgKzE3NiwxMyBAQCBzdHJ1 Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgbXV0ZXggc2VuZF9tdXRleDsKIH07CiAKK3N0cnVjdCBp bnRlbF9odWMgeworCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLworCXN0cnVj dCBpbnRlbF91Y19mdyBmdzsKKworCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8KK307CisK IC8qIGludGVsX3VjLmMgKi8KIHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogaW50IGludGVsX2d1Y19zZW5kKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4pOwpAQCAtMTkxLDYgKzE5OCw4IEBA IGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiBleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBp bnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3Vj X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF91 Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJc3RydWN0IGlu dGVsX3VjX2Z3ICp1Y19mdyk7CiB1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCkBA IC0yMTQsNCArMjIzLDkgQEAgc3RhdGljIGlubGluZSB1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQogCXJldHVybiBvZmZzZXQ7CiB9CiAKKy8qIGludGVsX2h1Y19sb2Fk ZXIuYyAqLwordm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2lu dCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCiAj ZW5kaWYKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK