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 06:55:50 -0800 Message-ID: <1483541755-647-4-git-send-email-anusha.srivatsa@intel.com> References: <1483541755-647-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 AEEFF6E73F for ; Wed, 4 Jan 2017 14:59:09 +0000 (UTC) In-Reply-To: <1483541755-647-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 ZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggNjhh ZjdhZS4uZWQ1N2FiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj 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 dGVsX2h1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTA2 YTUzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xv 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 dF9kb21haW4oaHVjX2Z3LT5vYmosIGZhbHNlKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERUJVR19E UklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWNfZnctPm9iaiwgTlVMTCwgMCwg MCwgMCk7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWls ZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwl9 CisKKwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBk YXRlcyB0byBHVFQuICovCisJSTkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElE QVRFKTsKKworCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0Vf QUxMKTsKKworCS8qIGluaXQgV09QQ00gKi8KKwlJOTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpFLCBp bnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOworCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BD TV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgfAorCQkJSFVDX0xPQURJTkdfQUdFTlRf R1VDKTsKKworCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLworCW9m ZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIGh1Y19mdy0+aGVhZGVyX29mZnNldDsKKwlJ OTE1X1dSSVRFKERNQV9BRERSXzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOworCUk5MTVf V1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwor CisJLyogSGFyZHdhcmUgZG9lc24ndCBsb29rIGF0IGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIEh1 Qy4gU2V0IGl0IHRvIDAsCisJICogYnV0IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVz cyBzcGFjZS4KKwkgKi8KKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfTE9XLCAwKTsKKwlJOTE1X1dS SVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOworCisJc2l6ZSA9 IGh1Y19mdy0+aGVhZGVyX3NpemUgKyBodWNfZnctPnVjb2RlX3NpemU7CisJSTkxNV9XUklURShE TUFfQ09QWV9TSVpFLCBzaXplKTsKKworCS8qIFN0YXJ0IHRoZSBETUEgKi8KKwlJOTE1X1dSSVRF KERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsK KworCS8qIFdhaXQgZm9yIERNQSB0byBmaW5pc2ggKi8KKwlyZXQgPSB3YWl0X2ZvcigoSTkxNV9S RUFEKERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsKKworCURSTV9ERUJVR19EUklW RVIoIkh1QyBETUEgdHJhbnNmZXIgd2FpdCBvdmVyIHdpdGggcmV0ICVkXG4iLCByZXQpOworCisJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCisJ LyoKKwkgKiBXZSBrZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUu IEJ1dCB3ZSBjYW4gdW5waW4gaXQKKwkgKiBub3cgdGhhdCBETUEgaGFzIGNvbXBsZXRlZCwgc28g aXQgZG9lc24ndCBjb250aW51ZSB0byB0YWtlIHVwIHNwYWNlLgorCSAqLworCWk5MTVfdm1hX3Vu cGluKHZtYSk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGludGVsX2h1Y19pbml0KCkg LSBpbml0aWF0ZSBIdUMgZmlybXdhcmUgbG9hZGluZyByZXF1ZXN0CisgKiBAZGV2X3ByaXY6IHRo ZSBkcm1faTkxNV9wcml2YXRlIGRldmljZQorICoKKyAqIENhbGxlZCBlYXJseSBkdXJpbmcgZHJp dmVyIGxvYWQsIGJ1dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQuIFRoZSBsb2FkaW5nCisgKiB3 aWxsIGNvbnRpbnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBzcGVjaWZ5IGZpcm13YXJl IG5hbWUgYW5kIHZlcnNpb24uCisgKiBBbGwgb3RoZXIgY2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMg SU5URUxfVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVworICogaXMgbm90IGNhcGFi bGUgb3IgZHJpdmVyIHlldCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBubyBlcnJvciBt ZXNzYWdlCisgKiBmb3IgSU5URUxfVUNfRklSTVdBUkVfTk9ORSBjYXNlcy4KKyAqCisgKiBUaGUg RE1BLWNvcHlpbmcgdG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y19sb2FkKCkgaXMg Y2FsbGVkLgorICovCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsK KwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmZ3OworCWNvbnN0IGNoYXIgKmZ3 X3BhdGggPSBOVUxMOworCisJaHVjX2Z3LT5wYXRoID0gTlVMTDsKKwlodWNfZnctPmZldGNoX3N0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElO VEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3LT5mdyA9IElOVEVMX1VDX0ZXX1RZUEVfSFVD OworCisJaWYgKCFIQVNfSFVDX1VDT0RFKGRldl9wcml2KSkKKwkJcmV0dXJuOworCisJaWYgKElT X1NLWUxBS0UoZGV2X3ByaXYpKSB7CisJCWZ3X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7CisJ CWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9IVUNfRldfTUFKT1I7CisJCWh1Y19mdy0+ bWlub3JfdmVyX3dhbnRlZCA9IFNLTF9IVUNfRldfTUlOT1I7CisJfQorCisJaHVjX2Z3LT5wYXRo ID0gZndfcGF0aDsKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BF TkRJTkc7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAl c1xuIiwgZndfcGF0aCk7CisKKwlpbnRlbF91Y19md19mZXRjaChkZXZfcHJpdiwgaHVjX2Z3KTsK K30KKworLyoqCisgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNl CisgKiBAZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9wcml2YXRlIGRldmljZQorICoKKyAqIENhbGxl ZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVy IGEgR1BVIHJlc2V0LgorICogQmUgbm90ZSB0aGF0IEh1QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBi ZWZvcmUgR3VDIGxvYWRpbmcuCisgKgorICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZl IGFscmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVtb3J5IGJ5IHRoZQorICogZWFybGllciBjYWxs IHRvIGludGVsX2h1Y19pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRoYXQKKyAq IGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBoL3cuCisg KgorICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVycm9yCisgKi8KK2ludCBpbnRlbF9odWNf bG9hZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0IGludGVs X3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5mdzsKKwlpbnQgZXJyOworCisJaWYgKGh1 Y19mdy0+ZmV0Y2hfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX05PTkUpCisJCXJldHVybiAw OworCisJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xu IiwKKwkJaHVjX2Z3LT5wYXRoLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZl dGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0 dXMpKTsKKworCWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9T VUNDRVNTICYmCisJICAgIGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVf RkFJTCkKKwkJcmV0dXJuIC1FTk9FWEVDOworCisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlzd2l0Y2ggKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSB7 CisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOgorCQkvKiBzb21ldGhpbmcgd2VudCB3cm9u ZyA6KCAqLworCQllcnIgPSAtRUlPOworCQlnb3RvIGZhaWw7CisKKwljYXNlIElOVEVMX1VDX0ZJ Uk1XQVJFX05PTkU6CisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOgorCWRlZmF1bHQ6 CisJCS8qICJjYW4ndCBoYXBwZW4iICovCisJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFs aWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCisJCQlodWNfZnctPnBhdGgsCisJCQlpbnRlbF91 Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCQlodWNfZnctPmZldGNo X3N0YXR1cyk7CisJCWVyciA9IC1FTlhJTzsKKwkJZ290byBmYWlsOworCisJY2FzZSBJTlRFTF9V Q19GSVJNV0FSRV9TVUNDRVNTOgorCQlicmVhazsKKwl9CisKKwllcnIgPSBodWNfdWNvZGVfeGZl cihkZXZfcHJpdik7CisJaWYgKGVycikKKwkJZ290byBmYWlsOworCisJaHVjX2Z3LT5sb2FkX3N0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CisKKwlEUk1fREVCVUdfRFJJVkVSKCIl cyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAorCQlodWNfZnctPnBhdGgsCisJCWlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOworCisJcmV0dXJuIDA7CisKK2Zh aWw6CisJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfUEVORElO RykKKwkJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7CisKKwlE Uk1fRVJST1IoIkZhaWxlZCB0byBjb21wbGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxu IiwgZXJyKTsKKworCXJldHVybiBlcnI7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2ZpbmkoKSAt IGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1QworICogQGRldjogdGhlIGRybSBk ZXZpY2UKKyAqCisgKiBDbGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUgR0VN IG9iai4KKyAqLwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlz dHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmZ3OworCisJbXV0ZXhf bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlmIChodWNfZnctPm9iaikKKwkJaTkxNV9nZW1f b2JqZWN0X3B1dChodWNfZnctPm9iaik7CisJaHVjX2Z3LT5vYmogPSBOVUxMOworCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRF TF9VQ19GSVJNV0FSRV9OT05FOworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAppbmRleCBmOGVl NTcxLi43ZGY1N2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKQEAgLTI0LDYgKzI0LDkgQEAK ICNpZm5kZWYgX0lOVEVMX1VDX0hfCiAjZGVmaW5lIF9JTlRFTF9VQ19IXwogCisjZGVmaW5lIEhV Q19TVEFUVVMyICAgICAgICAgICAgIF9NTUlPKDB4RDNCMCkKKyNkZWZpbmUgICBIVUNfRldfVkVS SUZJRUQgICAgICAgKDE8PDcpCisKICNpbmNsdWRlICJpbnRlbF9ndWNfZndpZi5oIgogI2luY2x1 ZGUgImk5MTVfZ3VjX3JlZy5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKQEAgLTE3 Niw2ICsxNzksMTMgQEAgc3RydWN0IGludGVsX2d1YyB7CiAJc3RydWN0IG11dGV4IHNlbmRfbXV0 ZXg7CiB9OwogCitzdHJ1Y3QgaW50ZWxfaHVjIHsKKwkvKiBHZW5lcmljIHVDIGZpcm13YXJlIG1h bmFnZW1lbnQgKi8KKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7CisKKwkvKiBIdUMtc3BlY2lmaWMg YWRkaXRpb25zICovCit9OworCiAvKiBpbnRlbF91Yy5jICovCiB2b2lkIGludGVsX3VjX2luaXRf ZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGludCBpbnRlbF9ndWNf c2VuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuKTsK QEAgLTE5MSw2ICsyMDEsOSBAQCBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gaW50 IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBl eHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorCXN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwordTMyIGludGVsX2d1Y193b3Bj bV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGk5MTVfZ3Vj X3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpAQCAtMjA0LDcgKzIxNyw2IEBAIHZvaWQgaTkxNV9n dWNfZmx1c2hfbG9ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBp OTE1X2d1Y19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9p ZCBpOTE1X2d1Y191bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiBpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1NjQgY29udHJvbF92YWwpOwotCiBzdGF0aWMgaW5saW5lIHUzMiBndWNfZ2d0dF9vZmZz ZXQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJdTMyIG9mZnNldCA9IGk5MTVfZ2d0dF9vZmZz ZXQodm1hKTsKQEAgLTIxMiw0ICsyMjQsOSBAQCBzdGF0aWMgaW5saW5lIHUzMiBndWNfZ2d0dF9v ZmZzZXQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJcmV0dXJuIG9mZnNldDsKIH0KIAorLyogaW50 ZWxfaHVjX2xvYWRlci5jICovCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOworaW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CisKICNlbmRpZgotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=