From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anusha Srivatsa Subject: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Wed, 4 Jan 2017 05:27:25 -0800 Message-ID: <1483536450-4536-4-git-send-email-anusha.srivatsa@intel.com> References: <1483536450-4536-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id DC2F76E706 for ; Wed, 4 Jan 2017 13:30:46 +0000 (UTC) In-Reply-To: <1483536450-4536-1-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: 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 CkNjOiBBcmthZGl1c3ogSGlsZXIgPGFya2FkaXVzei5oaWxlckBpbnRlbC5jb20+CkNjOiBNaWNo YWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KVGVzdGVkLWJ5OiBYaWFu ZyBIYWloYW8gPGhhaWhhby54aWFuZ0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFudXNoYSBT cml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBE YWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVy LmFudG9pbmVAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAg ICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAg fCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgMyAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggICAgIHwgICAzICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8ICAxMSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIHwgMjYwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oICAgICAgICAgfCAgMTkg KystCiA3IGZpbGVzIGNoYW5nZWQsIDI5MyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIu YwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNTE5NjUwOS4uNDVhZTEyNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKQEAgLTU3LDYgKzU3LDcgQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwK ICMgZ2VuZXJhbC1wdXJwb3NlIG1pY3JvY29udHJvbGxlciAoR3VDKSBzdXBwb3J0CiBpOTE1LXkg Kz0gaW50ZWxfdWMubyBcCiAJICBpbnRlbF9ndWNfbG9hZGVyLm8gXAorCSAgaW50ZWxfaHVjX2xv YWRlci5vIFwKIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwogCiAjIGF1dG9nZW5lcmF0ZWQgbnVs bCByZW5kZXIgc3RhdGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDJjMDIwZWEuLmM5Zjcx ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNTk5LDYgKzU5OSw3IEBAIHN0YXRpYyBp bnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChy ZXQpCiAJCWdvdG8gY2xlYW51cF9pcnE7CiAKKwlpbnRlbF9odWNfaW5pdChkZXZfcHJpdik7CiAJ aW50ZWxfZ3VjX2luaXQoZGV2X3ByaXYpOwogCiAJcmV0ID0gaTkxNV9nZW1faW5pdChkZXZfcHJp dik7CkBAIC02MjYsNiArNjI3LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGlkbGUgaGFy ZHdhcmU7IGNvbnRpbnVpbmcgdG8gdW5sb2FkIVxuIik7CiAJaTkxNV9nZW1fZmluaShkZXZfcHJp dik7CiBjbGVhbnVwX2lycToKKwlpbnRlbF9odWNfZmluaShkZXYpOwogCWludGVsX2d1Y19maW5p KGRldl9wcml2KTsKIAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwogCWludGVsX3RlYXJkb3duX2dt YnVzKGRldl9wcml2KTsKQEAgLTEzMTIsNyArMTMxNCw3IEBAIHZvaWQgaTkxNV9kcml2ZXJfdW5s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRpbmcg dW5waW5fd29yay4gKi8KIAlkcmFpbl93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKLQorCWludGVs X2h1Y19maW5pKGRldik7CiAJaW50ZWxfZ3VjX2ZpbmkoZGV2X3ByaXYpOwogCWk5MTVfZ2VtX2Zp bmkoZGV2X3ByaXYpOwogCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZfcHJpdik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAppbmRleCAwZWE2M2Q2Li44NTRlMmJiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKQEAgLTIwODAsNiArMjA4MCw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAog CXN0cnVjdCBpbnRlbF9ndnQgKmd2dDsKIAorCXN0cnVjdCBpbnRlbF9odWMgaHVjOwogCXN0cnVj dCBpbnRlbF9ndWMgZ3VjOwogCiAJc3RydWN0IGludGVsX2NzciBjc3I7CkBAIC0yODU0LDcgKzI4 NTUsNyBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKICNkZWZpbmUgSEFTX0dVQyhkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX2d1YykK ICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQogI2Rl ZmluZSBIQVNfR1VDX1NDSEVEKGRldl9wcml2KQkoSEFTX0dVQyhkZXZfcHJpdikpCi0KKyNkZWZp bmUgSEFTX0hVQ19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQogI2RlZmluZSBI QVNfUkVTT1VSQ0VfU1RSRUFNRVIoZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19yZXNv dXJjZV9zdHJlYW1lcikKIAogI2RlZmluZSBIQVNfUE9PTEVEX0VVKGRldl9wcml2KQkoKGRldl9w cml2KS0+aW5mby5oYXNfcG9vbGVkX2V1KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApp bmRleCA1ZTYzOGZjLi5mOTgyOWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApA QCAtNjEsOSArNjEsMTIgQEAKICNkZWZpbmUgICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAgKDgg PDwgMTYpCiAjZGVmaW5lIERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCiAjZGVmaW5lIERN QV9DVFJMCQkJX01NSU8oMHhjMzE0KQorI2RlZmluZSAgIEhVQ19VS0VSTkVMCQkJICAoMTw8OSkK ICNkZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8PDQpCiAjZGVmaW5lICAgU1RBUlRfRE1BCQkJICAo MTw8MCkKICNkZWZpbmUgRE1BX0dVQ19XT1BDTV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkKKyNkZWZp bmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJCSAgKDA8PDEpCisjZGVmaW5lICAgSFVDX0xPQURJ TkdfQUdFTlRfR1VDCQkgICgxPDwxKQogI2RlZmluZSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUJ ICAweDgwMDAwCS8qIDUxMktCICovCiAjZGVmaW5lIEdVQ19NQVhfSURMRV9DT1VOVAkJX01NSU8o MHhDM0U0KQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9h ZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggYTQx OTZlMi4uYTZhYzA0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpA QCAtMzA5LDggKzMwOSw4IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwg RE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwogCiAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICov Ci0JSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RB UlRfRE1BKSk7Ci0KKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9T X01PVkUgfCBTVEFSVF9ETUEpIHwKKwkJX01BU0tFRF9CSVRfRElTQUJMRShIVUNfVUtFUk5FTCkp OwogCS8qCiAJICogV2FpdCBmb3IgdGhlIERNQSB0byBjb21wbGV0ZSAmIHRoZSBHdUMgdG8gc3Rh cnQgdXAuCiAJICogTkI6IERvY3MgcmVjb21tZW5kIG5vdCB1c2luZyB0aGUgaW50ZXJydXB0IGZv ciBjb21wbGV0aW9uLgpAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hm ZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3UzMiBpbnRlbF9ndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwogCkBAIC0z NzIsNyArMzcyLDcgQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYs IEZPUkNFV0FLRV9BTEwpOwogCiAJLyogaW5pdCBXT1BDTSAqLwotCUk5MTVfV1JJVEUoR1VDX1dP UENNX1NJWkUsIGd1Y193b3BjbV9zaXplKGRldl9wcml2KSk7CisJSTkxNV9XUklURShHVUNfV09Q Q01fU0laRSwgaW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKIAlJOTE1X1dSSVRFKERN QV9HVUNfV09QQ01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFKTsKIAogCS8qIEVuYWJs ZSBNSUEgY2FjaGluZy4gR3VDIGNsb2NrIGdhdGluZyBpcyBkaXNhYmxlZC4gKi8KQEAgLTUxMSw2 ICs1MTEsNyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAkJaWYgKGVycikKIAkJCWdvdG8gZmFpbDsKIAorCQlpbnRlbF9odWNfbG9hZChk ZXZfcHJpdik7CiAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKIAkJaWYgKCFlcnIp CiAJCQlicmVhazsKQEAgLTY1OCw3ICs2NTksNyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJf c2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwogCiAJCS8qIFRvcCAzMmsgb2YgV09QQ00gaXMgcmVz ZXJ2ZWQgKDhLIHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4gKi8KLQkJaWYgKHNpemUgPiBndWNf d29wY21fc2l6ZShkZXZfcHJpdikpIHsKKwkJaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6 ZShkZXZfcHJpdikpIHsKIAkJCURSTV9FUlJPUigiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZp dCBpbiBXT1BDTVxuIik7CiAJCQlnb3RvIGZhaWw7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2h1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNl ZDEyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xv YWRlci5jCkBAIC0wLDAgKzEsMjYwIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwg Q29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl CisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUu CisgKgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlICJpOTE1X2Ry di5oIgorI2luY2x1ZGUgImludGVsX3VjLmgiCisKKy8qKgorICogRE9DOiBIdUMgRmlybXdhcmUK KyAqCisgKiBNb3RpdmF0aW9uOgorICogR0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBm aXJtd2FyZSBmb3IgdXNhZ2UgaW4gbWVkaWEgSEVWQyAoSGlnaAorICogRWZmaWNpZW5jeSBWaWRl byBDb2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQorICog Y2FwYWJpbGl0aWVzIGJ5IGFkZGluZyBIdUMgc3BlY2lmaWMgY29tbWFuZHMgdG8gYmF0Y2ggYnVm ZmVycy4KKyAqCisgKiBJbXBsZW1lbnRhdGlvbjoKKyAqIFRoZSBzYW1lIGZpcm13YXJlIGxvYWRl ciBpcyB1c2VkIGFzIHRoZSBHdUMuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKKyAqIGxvYWRpbmcgdG8g SFcgaXMgZGVmZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCisgKgorICog Tm90ZSB0aGF0IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxv YWRpbmcuCisgKi8KKworI2RlZmluZSBTS0xfSFVDX0ZXX01BSk9SIDAxCisjZGVmaW5lIFNLTF9I VUNfRldfTUlOT1IgMDcKKyNkZWZpbmUgU0tMX0JMRF9OVU0gMTM5OAorCisjZGVmaW5lIEhVQ19G V19QQVRIKHBsYXRmb3JtLCBtYWpvciwgbWlub3IsIGJsZF9udW0pIFwKKwkiaTkxNS8iIF9fc3Ry aW5naWZ5KHBsYXRmb3JtKSAiX2h1Y192ZXIiIF9fc3RyaW5naWZ5KG1ham9yKSAiXyIgXAorCV9f c3RyaW5naWZ5KG1pbm9yKSAiXyIgX19zdHJpbmdpZnkoYmxkX251bSkgIi5iaW4iCisKKyNkZWZp bmUgSTkxNV9TS0xfSFVDX1VDT0RFIEhVQ19GV19QQVRIKHNrbCwgU0tMX0hVQ19GV19NQUpPUiwg XAorCVNLTF9IVUNfRldfTUlOT1IsIFNLTF9CTERfTlVNKQorTU9EVUxFX0ZJUk1XQVJFKEk5MTVf U0tMX0hVQ19VQ09ERSk7CisKKy8qKgorICogaHVjX3Vjb2RlX3hmZXIoKSAtIERNQSdzIHRoZSBm aXJtd2FyZQorICogQGRldl9wcml2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIFRyYW5zZmVyIHRo ZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9s bGVyLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlCisg Ki8KK3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMu Znc7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwor CXUzMiBzaXplOworCWludCByZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4oaHVjX2Z3LT51Y19md19vYmosIGZhbHNlKTsKKwlpZiAocmV0KSB7CisJCURSTV9E RUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0 OworCX0KKworCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWNfZnctPnVjX2Z3X29i aiwgTlVMTCwgMCwgMCwgMCk7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCURSTV9ERUJVR19EUklW RVIoInBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKKwkJcmV0dXJuIFBUUl9F UlIodm1hKTsKKwl9CisKKwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRo ZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICovCisJSTkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhf R1RDUl9JTlZBTElEQVRFKTsKKworCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qIGluaXQgV09QQ00gKi8KKwlJOTE1X1dSSVRFKEdVQ19X T1BDTV9TSVpFLCBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOworCUk5MTVfV1JJVEUo RE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgfAorCQkJSFVDX0xP QURJTkdfQUdFTlRfR1VDKTsKKworCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB1 Q29kZSAqLworCW9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIGh1Y19mdy0+aGVhZGVy X29mZnNldDsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNl dCkpOworCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkg JiAweEZGRkYpOworCisJLyogSGFyZHdhcmUgZG9lc24ndCBsb29rIGF0IGRlc3RpbmF0aW9uIGFk ZHJlc3MgZm9yIEh1Qy4gU2V0IGl0IHRvIDAsCisJICogYnV0IHN0aWxsIHByb2dyYW0gdGhlIGNv cnJlY3QgYWRkcmVzcyBzcGFjZS4KKwkgKi8KKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfTE9XLCAw KTsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00p OworCisJc2l6ZSA9IGh1Y19mdy0+aGVhZGVyX3NpemUgKyBodWNfZnctPnVjb2RlX3NpemU7CisJ STkxNV9XUklURShETUFfQ09QWV9TSVpFLCBzaXplKTsKKworCS8qIFN0YXJ0IHRoZSBETUEgKi8K KwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VLRVJORUwgfCBT VEFSVF9ETUEpKTsKKworCS8qIFdhaXQgZm9yIERNQSB0byBmaW5pc2ggKi8KKwlyZXQgPSB3YWl0 X2ZvcigoSTkxNV9SRUFEKERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsKKworCURS TV9ERUJVR19EUklWRVIoIkh1QyBETUEgdHJhbnNmZXIgd2FpdCBvdmVyIHdpdGggcmV0ICVkXG4i LCByZXQpOworCisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOworCisJLyoKKwkgKiBXZSBrZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1 cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4gdW5waW4gaXQKKwkgKiBub3cgdGhhdCBETUEgaGFzIGNv bXBsZXRlZCwgc28gaXQgZG9lc24ndCBjb250aW51ZSB0byB0YWtlIHVwIHNwYWNlLgorCSAqLwor CWk5MTVfdm1hX3VucGluKHZtYSk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGludGVs X2h1Y19pbml0KCkgLSBpbml0aWF0ZSBIdUMgZmlybXdhcmUgbG9hZGluZyByZXF1ZXN0CisgKiBA ZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9wcml2YXRlIGRldmljZQorICoKKyAqIENhbGxlZCBlYXJs eSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJ1dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQuIFRoZSBs b2FkaW5nCisgKiB3aWxsIGNvbnRpbnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBzcGVj aWZ5IGZpcm13YXJlIG5hbWUgYW5kIHZlcnNpb24uCisgKiBBbGwgb3RoZXIgY2FzZXMgYXJlIGNv bnNpZGVyZWQgYXMgSU5URUxfVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVworICog aXMgbm90IGNhcGFibGUgb3IgZHJpdmVyIHlldCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBi ZSBubyBlcnJvciBtZXNzYWdlCisgKiBmb3IgSU5URUxfVUNfRklSTVdBUkVfTk9ORSBjYXNlcy4K KyAqCisgKiBUaGUgRE1BLWNvcHlpbmcgdG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1 Y19sb2FkKCkgaXMgY2FsbGVkLgorICovCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2 X3ByaXYtPmh1YzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmZ3OworCWNv bnN0IGNoYXIgKmZ3X3BhdGggPSBOVUxMOworCisJaHVjX2Z3LT51Y19md19wYXRoID0gTlVMTDsK KwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3 LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3LT5mdyA9IElO VEVMX1VDX0ZXX1RZUEVfSFVDOworCisJaWYgKCFIQVNfSFVDX1VDT0RFKGRldl9wcml2KSkKKwkJ cmV0dXJuOworCisJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CisJCWZ3X3BhdGggPSBJOTE1 X1NLTF9IVUNfVUNPREU7CisJCWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9IVUNfRldf TUFKT1I7CisJCWh1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IFNLTF9IVUNfRldfTUlOT1I7CisJ fQorCisJaHVjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlodWNfZnctPmZldGNoX3N0YXR1 cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMg ZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7CisKKwlpbnRlbF91Y19md19m ZXRjaChkZXZfcHJpdiwgaHVjX2Z3KTsKK30KKworLyoqCisgKiBpbnRlbF9odWNfbG9hZCgpIC0g bG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCisgKiBAZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9wcml2 YXRlIGRldmljZQorICoKKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZl ciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVyIGEgR1BVIHJlc2V0LgorICogQmUgbm90ZSB0aGF0IEh1 QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCisgKgorICogVGhlIGZp cm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVtb3J5 IGJ5IHRoZQorICogZWFybGllciBjYWxsIHRvIGludGVsX2h1Y19pbml0KCksIHNvIGhlcmUgd2Ug bmVlZCBvbmx5IGNoZWNrIHRoYXQKKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIg dGhlIGltYWdlIHRvIHRoZSBoL3cuCisgKgorICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVy cm9yCisgKi8KK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCit7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5m dzsKKwlpbnQgZXJyOworCisJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IElOVEVMX1VDX0ZJ Uk1XQVJFX05PTkUpCisJCXJldHVybiAwOworCisJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3Rh dHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT51Y19md19wYXRoLAorCQlpbnRl bF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKworCWlmIChodWNfZnctPmZldGNo X3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJICAgIGh1Y19mdy0+bG9h ZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfRkFJTCkKKwkJcmV0dXJuIC1FTk9FWEVDOwor CisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlz d2l0Y2ggKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSB7CisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9G QUlMOgorCQkvKiBzb21ldGhpbmcgd2VudCB3cm9uZyA6KCAqLworCQllcnIgPSAtRUlPOworCQln b3RvIGZhaWw7CisKKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX05PTkU6CisJY2FzZSBJTlRFTF9V Q19GSVJNV0FSRV9QRU5ESU5HOgorCWRlZmF1bHQ6CisJCS8qICJjYW4ndCBoYXBwZW4iICovCisJ CVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIs CisJCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNf ZnctPmZldGNoX3N0YXR1cyksCisJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7CisJCWVyciA9IC1F TlhJTzsKKwkJZ290byBmYWlsOworCisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOgor CQlicmVhazsKKwl9CisKKwllcnIgPSBodWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CisJaWYgKGVy cikKKwkJZ290byBmYWlsOworCisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX1NVQ0NFU1M7CisKKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVz LCBsb2FkICVzXG4iLAorCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJCWludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo aHVjX2Z3LT5sb2FkX3N0YXR1cykpOworCisJcmV0dXJuIDA7CisKK2ZhaWw6CisJaWYgKGh1Y19m dy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORykKKwkJaHVjX2Z3LT5s b2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7CisKKwlEUk1fRVJST1IoIkZhaWxl ZCB0byBjb21wbGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJyKTsKKworCXJl dHVybiBlcnI7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2ZpbmkoKSAtIGNsZWFuIHVwIHJlc291 cmNlcyBhbGxvY2F0ZWQgZm9yIEh1QworICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBD bGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUgR0VNIG9iai4KKyAqLwordm9p ZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdWNf ZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmZ3OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOworCWlmIChodWNfZnctPnVjX2Z3X29iaikKKwkJaTkxNV9nZW1fb2JqZWN0X3B1 dChodWNfZnctPnVjX2Z3X29iaik7CisJaHVjX2Z3LT51Y19md19vYmogPSBOVUxMOworCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJ TlRFTF9VQ19GSVJNV0FSRV9OT05FOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAppbmRleCBl ZmMxMjVkLi4wMGMwOTg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKQEAgLTI0LDYgKzI0LDkg QEAKICNpZm5kZWYgX0lOVEVMX1VDX0hfCiAjZGVmaW5lIF9JTlRFTF9VQ19IXwogCisjZGVmaW5l IEhVQ19TVEFUVVMyICAgICAgICAgICAgIF9NTUlPKDB4RDNCMCkKKyNkZWZpbmUgICBIVUNfRldf VkVSSUZJRUQgICAgICAgKDE8PDcpCisKICNpbmNsdWRlICJpbnRlbF9ndWNfZndpZi5oIgogI2lu Y2x1ZGUgImk5MTVfZ3VjX3JlZy5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKQEAg LTE3Niw2ICsxNzksMTMgQEAgc3RydWN0IGludGVsX2d1YyB7CiAJc3RydWN0IG11dGV4IHNlbmRf bXV0ZXg7CiB9OwogCitzdHJ1Y3QgaW50ZWxfaHVjIHsKKwkvKiBHZW5lcmljIHVDIGZpcm13YXJl IG1hbmFnZW1lbnQgKi8KKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7CisKKwkvKiBIdUMtc3BlY2lm aWMgYWRkaXRpb25zICovCit9OworCiAvKiBpbnRlbF91Yy5jICovCiB2b2lkIGludGVsX3VjX2lu aXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGludCBpbnRlbF9n dWNfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVu KTsKQEAgLTE5MSw2ICsyMDEsOSBAQCBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3Vj X2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRlcm4g aW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAorCXN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwordTMyIGludGVsX2d1Y193 b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGk5MTVf Z3VjX3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpAQCAtMjA0LDcgKzIxNyw2IEBAIHZvaWQgaTkx NV9ndWNfZmx1c2hfbG9ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9p ZCBpOTE1X2d1Y19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog dm9pZCBpOTE1X2d1Y191bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CiBpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1NjQgY29udHJvbF92YWwpOwotCiBzdGF0aWMgaW5saW5lIHUzMiBndWNfZ2d0dF9v ZmZzZXQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJdTMyIG9mZnNldCA9IGk5MTVfZ2d0dF9v ZmZzZXQodm1hKTsKQEAgLTIxMiw0ICsyMjQsOSBAQCBzdGF0aWMgaW5saW5lIHUzMiBndWNfZ2d0 dF9vZmZzZXQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJcmV0dXJuIG9mZnNldDsKIH0KIAorLyog aW50ZWxfaHVjX2xvYWRlci5jICovCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOworaW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CisKICNlbmRpZgotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=