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, 9 Nov 2016 10:51:32 -0800 Message-ID: <1478717497-4485-3-git-send-email-anusha.srivatsa@intel.com> References: <1478717497-4485-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1523E6E699 for ; Wed, 9 Nov 2016 18:51:41 +0000 (UTC) In-Reply-To: <1478717497-4485-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 RnJvbTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+CgpUaGUgSHVDIGxv YWRpbmcgcHJvY2VzcyBpcyBzaW1pbGFyIHRvIEd1Qy4gVGhlIGludGVsX3VjX2Z3X2ZldGNoKCkK aXMgdXNlZCBmb3IgYm90aCBjYXNlcy4KCkh1QyBsb2FkaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBH dUMgbG9hZGluZy4gVGhlIFdPUENNIHNldHRpbmcgbXVzdApiZSBkb25lIGVhcmx5IGJlZm9yZSBs b2FkaW5nIGFueSBvZiB0aGVtLgoKdjI6IHJlYmFzZWQgb24tdG9wIG9mIGRybS1pbnRlbC1uaWdo dGx5LgogICAgcmVtb3ZlZCBpZihIQVNfR1VDKCkpIGJlZm9yZSB0aGUgZ3VjIGNhbGwuIChELkdv cmRvbikKICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgp2MzogcmViYXNl ZCB0byBkcm0taW50ZWwtbmlnaHRseSwgY2hhbmdlZCB0aGUgZmlsZSBuYW1lIGZvcm1hdCB0bwog ICAgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgaHVjIHBhY2thZ2UuCiAgICBDaGFuZ2VkIGRldi0+ZGV2 X3ByaXZhdGUgdG8gdG9faTkxNSgpCnY0OiBtb3ZlZCBmdW5jdGlvbiBiYWNrIHRvIHdoZXJlIGl0 IHdhcy4KICAgIGNoYW5nZSB3YWl0X2Zvcl9hdG9taWMgdG8gd2FpdF9mb3IuCnY1OiByZWJhc2Vk ICsgY29tbWVudCBjaGFuZ2VzLgp2NzogcmViYXNlZC4Kdjg6IHJlYmFzZWQuCnY5OiByZWJhc2Vk LiBDaGFuZ2VkIHRoZSB5ZWFyIGluIHRoZSBjb3B5cmlnaHQgbWVzc2FnZSB0byByZWZsZWN0CnRo ZSByaWdodCB5ZWFyLkNvcnJlY3QgdGhlIGNvbW1lbnRzLHJlbW92ZSB0aGUgdW53YW50ZWQgV0FS TiBtZXNzYWdlLApyZXBsYWNlIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCkgd2l0aCBpOTE1 X2dlbV9vYmplY3RfcHV0KCkuTWFrZSB0aGUKcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBub24t ZXh0ZXJuLgp2MTA6IHJlYmFzZWQuCgpUZXN0ZWQtYnk6IFhpYW5nIEhhaWhhbyA8aGFpaGFvLnhp YW5nQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3Jp dmF0c2FAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+ ClJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3JlZy5oICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMu aCAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j IHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCAgICAgICAgfCAgNDIg KysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgfCAyNjAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzE3IGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDA4NTdlNTAu LmM5OWIwZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC01NSw2ICs1NSw3IEBAIGk5MTUteSAr PSBpOTE1X2NtZF9wYXJzZXIubyBcCiAKICMgZ2VuZXJhbC1wdXJwb3NlIG1pY3JvY29udHJvbGxl ciAoR3VDKSBzdXBwb3J0CiBpOTE1LXkgKz0gaW50ZWxfZ3VjX2xvYWRlci5vIFwKKwkgIGludGVs X2h1Y19sb2FkZXIubyBcCiAJICBpOTE1X2d1Y19zdWJtaXNzaW9uLm8KIAogIyBhdXRvZ2VuZXJh dGVkIG51bGwgcmVuZGVyIHN0YXRlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCAwMjEzYTMw Li5hYTQ0ZDhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTU5OSw2ICs1OTksNyBAQCBz dGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlpZiAocmV0KQogCQlnb3RvIGNsZWFudXBfaXJxOwogCisJaW50ZWxfaHVjX2luaXQoZGV2KTsK IAlpbnRlbF9ndWNfaW5pdChkZXYpOwogCiAJcmV0ID0gaTkxNV9nZW1faW5pdChkZXYpOwpAQCAt NjI2LDYgKzYyNyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCQlEUk1fRVJST1IoImZhaWxlZCB0byBpZGxlIGhhcmR3YXJlOyBj b250aW51aW5nIHRvIHVubG9hZCFcbiIpOwogCWk5MTVfZ2VtX2ZpbmkoZGV2X3ByaXYpOwogY2xl YW51cF9pcnE6CisJaW50ZWxfaHVjX2ZpbmkoZGV2KTsKIAlpbnRlbF9ndWNfZmluaShkZXYpOwog CWRybV9pcnFfdW5pbnN0YWxsKGRldik7CiAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsKQEAg LTEzMTMsNiArMTMxNSw3IEBAIHZvaWQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJLyogRmx1c2ggYW55IG91dHN0YW5kaW5nIHVucGluX3dvcmsuICovCiAJZHJh aW5fd29ya3F1ZXVlKGRldl9wcml2LT53cSk7CiAKKwlpbnRlbF9odWNfZmluaShkZXYpOwogCWlu dGVsX2d1Y19maW5pKGRldik7CiAJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7CiAJaW50ZWxfZmJj X2NsZWFudXBfY2ZiKGRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDMwNzc3 ZGUuLmViZWY5ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNTYsNiArNTYsNyBAQAog I2luY2x1ZGUgImludGVsX2Jpb3MuaCIKICNpbmNsdWRlICJpbnRlbF9kcGxsX21nci5oIgogI2lu Y2x1ZGUgImludGVsX2d1Yy5oIgorI2luY2x1ZGUgImludGVsX2h1Yy5oIgogI2luY2x1ZGUgImlu dGVsX2xyYy5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKIApAQCAtMTgwNCw2ICsx ODA1LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGludGVsX2d2dCAq Z3Z0OwogCisJc3RydWN0IGludGVsX2h1YyBodWM7CiAJc3RydWN0IGludGVsX2d1YyBndWM7CiAK IAlzdHJ1Y3QgaW50ZWxfY3NyIGNzcjsKQEAgLTI5MjgsNiArMjkzMCw3IEBAIHN0cnVjdCBkcm1f aTkxNV9jbWRfdGFibGUgewogI2RlZmluZSBIQVNfR1VDKGRldikJCShJTlRFTF9JTkZPKGRldikt Pmhhc19ndWMpCiAjZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2KQkoSEFTX0dVQyhkZXYpKQogI2Rl ZmluZSBIQVNfR1VDX1NDSEVEKGRldikJKEhBU19HVUMoZGV2KSkKKyNkZWZpbmUgSEFTX0hVQ19V Q09ERShkZXYpCShIQVNfR1VDKGRldikpCiAKICNkZWZpbmUgSEFTX1JFU09VUkNFX1NUUkVBTUVS KGRldikgKElOVEVMX0lORk8oZGV2KS0+aGFzX3Jlc291cmNlX3N0cmVhbWVyKQogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3VjX3JlZy5oCmluZGV4IGE0N2UxZTQuLjY0ZTk0MmEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3VjX3JlZy5oCkBAIC02MSw5ICs2MSwxMiBAQAogI2RlZmluZSAgIERNQV9B RERSRVNTX1NQQUNFX0dUVAkJICAoOCA8PCAxNikKICNkZWZpbmUgRE1BX0NPUFlfU0laRQkJCV9N TUlPKDB4YzMxMCkKICNkZWZpbmUgRE1BX0NUUkwJCQlfTU1JTygweGMzMTQpCisjZGVmaW5lICAg SFVDX1VLRVJORUwJCQkgICgxPDw5KQogI2RlZmluZSAgIFVPU19NT1ZFCQkJICAoMTw8NCkKICNk ZWZpbmUgICBTVEFSVF9ETUEJCQkgICgxPDwwKQogI2RlZmluZSBETUFfR1VDX1dPUENNX09GRlNF VAkJX01NSU8oMHhjMzQwKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX1ZDUgkJICAoMDw8 MSkKKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCiAjZGVmaW5lICAg R1VDX1dPUENNX09GRlNFVF9WQUxVRQkgIDB4ODAwMDAJLyogNTEyS0IgKi8KICNkZWZpbmUgR1VD X01BWF9JRExFX0NPVU5UCQlfTU1JTygweEMzRTQpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK aW5kZXggNDVkZmE0MC4uZmY2YWJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTE4 Myw2ICsxODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo ZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1 bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwordTMyIGd1Y193 b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGk5MTVf Z3VjX3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCmluZGV4IGZmMjZkMmMuLmRjNzk5NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfbG9hZGVyLmMKQEAgLTMwOSw3ICszMDksOCBAQCBzdGF0aWMgaW50IGd1Y191Y29k ZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJSTkxNV9XUklU RShETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKIAogCS8qIEZpbmFs bHkgc3RhcnQgdGhlIERNQSAqLwotCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VO QUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkpOworCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNL RURfQklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkgfAorCQkJX01BU0tFRF9CSVRfRElT QUJMRShIVUNfVUtFUk5FTCkpOwogCiAJLyoKIAkgKiBXYWl0IGZvciB0aGUgRE1BIHRvIGNvbXBs ZXRlICYgdGhlIEd1QyB0byBzdGFydCB1cC4KQEAgLTMzNCw3ICszMzUsNyBAQCBzdGF0aWMgaW50 IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ cmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewogCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsK IApAQCAtNTEyLDYgKzUxMyw3IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJaWYgKGVycikKIAkJCWdvdG8gZmFpbDsKIAorCQlpbnRlbF9odWNfbG9hZChk ZXYpOwogCQllcnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAJCWlmICghZXJyKQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNjZTAyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYg SW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09G VFdBUkUuCisgKgorICovCisjaWZuZGVmIF9JTlRFTF9IVUNfSF8KKyNkZWZpbmUgX0lOVEVMX0hV Q19IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisKKyNkZWZpbmUgSFVDX1NUQVRVUzIJCV9N TUlPKDB4RDNCMCkKKyNkZWZpbmUgICBIVUNfRldfVkVSSUZJRUQJKDE8PDcpCisKK3N0cnVjdCBp bnRlbF9odWMgeworCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLworCXN0cnVj dCBpbnRlbF91Y19mdyBodWNfZnc7CisKKwkvKiBIdUMtc3BlY2lmaWMgYWRkaXRpb25zICovCit9 OworCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBp bnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCBpbnRlbF9odWNfbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjX2xvYWRlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZDk5 NzAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9h ZGVyLmMKQEAgLTAsMCArMSwyNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K KyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgorI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCisjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCisKKy8qKgorICogRE9DOiBIdUMgRmlybXdhcmUK KyAqCisgKiBNb3RpdmF0aW9uOgorICogR0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBm aXJtd2FyZSBmb3IgdXNhZ2UgaW4gbWVkaWEgSEVWQyAoSGlnaAorICogRWZmaWNpZW5jeSBWaWRl byBDb2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQorICog Y2FwYWJpbGl0aWVzIGJ5IGFkZGluZyBIdUMgc3BlY2lmaWMgY29tbWFuZHMgdG8gYmF0Y2ggYnVm ZmVycy4KKyAqCisgKiBJbXBsZW1lbnRhdGlvbjoKKyAqIFRoZSBzYW1lIGZpcm13YXJlIGxvYWRl ciBpcyB1c2VkIGFzIHRoZSBHdUMuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKKyAqIGxvYWRpbmcgdG8g SFcgaXMgZGVmZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCisgKgorICog Tm90ZSB0aGF0IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxv YWRpbmcuCisgKi8KKworI2RlZmluZSBJOTE1X1NLTF9IVUNfVUNPREUgImk5MTUvc2tsX2h1Y192 ZXIwMV8wN18xMzk4LmJpbiIKK01PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOwor CisvKioKKyAqIGh1Y191Y29kZV94ZmVyKCkgLSBETUEncyB0aGUgZmlybXdhcmUKKyAqIEBkZXZf cHJpdjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBnZW0g b2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpcm13YXJlLCBzZXRzIHVwIHRoZSBETUEKKyAqIGVuZ2lu ZSBNTUlPLCB0cmlnZ2VycyB0aGUgRE1BIG9wZXJhdGlvbiBhbmQgd2FpdHMgZm9yIGl0IHRvIGZp bmlzaC4KKyAqCisgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVj dXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxlci4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2Vz cywgbm9uLXplcm8gb24gZmFpbHVyZQorICovCisKK3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF91Y19m dyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1h OworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMDsKKwl1MzIgc2l6ZTsKKwlpbnQgcmV0OworCisJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGh1Y19mdy0+dWNfZndfb2Jq LCBmYWxzZSk7CisJaWYgKHJldCkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZh aWxlZCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl2bWEgPSBpOTE1X2dlbV9v YmplY3RfZ2d0dF9waW4oaHVjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAsIDApOworCWlmIChJ U19FUlIodm1hKSkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50 KVBUUl9FUlIodm1hKSk7CisJCXJldHVybiBQVFJfRVJSKHZtYSk7CisJfQorCisJLyogSW52YWxp ZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAq LworCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CisKKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwkvKiBp bml0IFdPUENNICovCisJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgZ3VjX3dvcGNtX3NpemUo ZGV2X3ByaXYpKTsKKwlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULCBHVUNfV09QQ01f T0ZGU0VUX1ZBTFVFIHwKKwkJCUhVQ19MT0FESU5HX0FHRU5UX0dVQyk7CisKKwkvKiBTZXQgdGhl IHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNvZGUgKi8KKwlvZmZzZXQgPSBpOTE1X2dndHRfb2Zm c2V0KHZtYSkgKyBodWNfZnctPmhlYWRlcl9vZmZzZXQ7CisJSTkxNV9XUklURShETUFfQUREUl8w X0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzBfSElH SCwgdXBwZXJfMzJfYml0cyhvZmZzZXQpICYgMHhGRkZGKTsKKworCS8qIEhhcmR3YXJlIGRvZXNu J3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBIdUMuIFNldCBpdCB0byAwLAorCSAq IGJ1dCBzdGlsbCBwcm9ncmFtIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuCisJICovCisJSTkx NV9XUklURShETUFfQUREUl8xX0xPVywgMCk7CisJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gs IERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKKworCXNpemUgPSBodWNfZnctPmhlYWRlcl9zaXpl ICsgaHVjX2Z3LT51Y29kZV9zaXplOworCUk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwgc2l6ZSk7 CisKKwkvKiBTdGFydCB0aGUgRE1BICovCisJSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9C SVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwgU1RBUlRfRE1BKSk7CisKKwkvKiBXYWl0IGZvciBETUEg dG8gZmluaXNoICovCisJcmV0ID0gd2FpdF9mb3IoKEk5MTVfUkVBRChETUFfQ1RSTCkgJiBTVEFS VF9ETUEpID09IDAsIDEwMCk7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVy IHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsKKworCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qCisJICogV2Uga2VlcCB0aGUg b2JqZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQgd2UgY2FuIHVucGluIGl0 CisJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUg dG8gdGFrZSB1cCBzcGFjZS4KKwkgKi8KKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJcmV0dXJu IHJldDsKK30KKworLyoqCisgKiBpbnRlbF9odWNfaW5pdCgpIC0gaW5pdGlhdGUgSHVDIGZpcm13 YXJlIGxvYWRpbmcgcmVxdWVzdAorICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBDYWxs ZWQgZWFybHkgZHVyaW5nIGRyaXZlciBsb2FkLCBidXQgYWZ0ZXIgR0VNIGlzIGluaXRpYWxpc2Vk LiBUaGUgbG9hZGluZworICogd2lsbCBjb250aW51ZSBvbmx5IHdoZW4gZHJpdmVyIGV4cGxpY2l0 bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZCB2ZXJzaW9uLgorICogQWxsIG90aGVyIGNhc2Vz IGFyZSBjb25zaWRlcmVkIGFzIFVDX0ZJUk1XQVJFX05PTkUgZWl0aGVyIGJlY2F1c2UgSFcgaXMg bm90CisgKiBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5kIHRoZXJlIHdpbGwg YmUgbm8gZXJyb3IgbWVzc2FnZSBmb3IKKyAqIFVDX0ZJUk1XQVJFX05PTkUgY2FzZXMuCisgKgor ICogVGhlIERNQS1jb3B5aW5nIHRvIEhXIGlzIGRvbmUgbGF0ZXIgd2hlbiBpbnRlbF9odWNfbG9h ZCgpIGlzIGNhbGxlZC4KKyAqLwordm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsKKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmh1Y19mdzsKKwljb25zdCBjaGFyICpmd19wYXRo ID0gTlVMTDsKKworCWh1Y19mdy0+dWNfZGV2ID0gZGV2OworCWh1Y19mdy0+dWNfZndfcGF0aCA9 IE5VTEw7CisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworCWh1Y19m dy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworCWh1Y19mdy0+ZndfdHlwZSA9IFVD X0ZXX1RZUEVfSFVDOworCisJaWYgKCFIQVNfSFVDX1VDT0RFKGRldl9wcml2KSkKKwkJcmV0dXJu OworCisJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CisJCWZ3X3BhdGggPSBJOTE1X1NLTF9I VUNfVUNPREU7CisJCWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IDE7CisJCWh1Y19mdy0+bWlu b3JfdmVyX3dhbnRlZCA9IDc7CisJfQorCisJaWYgKGZ3X3BhdGggPT0gTlVMTCkKKwkJcmV0dXJu OworCisJaHVjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlodWNfZnctPmZldGNoX3N0YXR1 cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgZmlybXdh cmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7CisKKwlpbnRlbF91Y19md19mZXRjaChk ZXYsIGh1Y19mdyk7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2xvYWQoKSAtIGxvYWQgSHVDIHVD b2RlIHRvIGRldmljZQorICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBDYWxsZWQgZnJv bSBnZW1faW5pdF9odygpIGR1cmluZyBkcml2ZXIgbG9hZGluZyBhbmQgYWxzbyBhZnRlciBhIEdQ VSByZXNldC4KKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3Jl IEd1QyBsb2FkaW5nLgorICoKKyAqIFRoZSBmaXJtd2FyZSBpbWFnZSBzaG91bGQgaGF2ZSBhbHJl YWR5IGJlZW4gZmV0Y2hlZCBpbnRvIG1lbW9yeSBieSB0aGUKKyAqIGVhcmxpZXIgY2FsbCB0byBp bnRlbF9odWNfdWNvZGVfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQgb25seSBjaGVjayB0aGF0Cisg KiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRyYW5zZmVyIHRoZSBpbWFnZSB0byB0aGUgaC93Lgor ICoKKyAqIFJldHVybjoJbm9uLXplcm8gY29kZSBvbiBlcnJvcgorICovCitpbnQgaW50ZWxfaHVj X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncg PSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7CisJaW50IGVycjsKKworCWlmIChodWNfZnctPmZldGNo X3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9OT05FKQorCQlyZXR1cm4gMDsKKworCURSTV9ERUJVR19E UklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCisJCWh1Y19mdy0+dWNf ZndfcGF0aCwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMp LAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7CisKKwlp ZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfU1VDQ0VTUyAmJgorCSAgICBo dWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpCisJCXJldHVybiAtRU5PRVhF QzsKKworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOworCisJc3dp dGNoIChodWNfZnctPmZldGNoX3N0YXR1cykgeworCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKKwkJ Lyogc29tZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KKwkJZXJyID0gLUVJTzsKKwkJZ290byBmYWls OworCisJY2FzZSBVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoK KwlkZWZhdWx0OgorCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLworCQlXQVJOX09OQ0UoMSwgIkh1QyBm dyAlcyBpbnZhbGlkIGZldGNoX3N0YXR1cyAlcyBbJWRdXG4iLAorCQkJaHVjX2Z3LT51Y19md19w YXRoLAorCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAor CQkJaHVjX2Z3LT5mZXRjaF9zdGF0dXMpOworCQllcnIgPSAtRU5YSU87CisJCWdvdG8gZmFpbDsK KworCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwkJYnJlYWs7CisJfQorCisJZXJyID0gaHVj X3Vjb2RlX3hmZXIoZGV2X3ByaXYpOworCWlmIChlcnIpCisJCWdvdG8gZmFpbDsKKworCWh1Y19m dy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOworCisJRFJNX0RFQlVHX0RSSVZF UigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT51Y19md19w YXRoLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKworCXJldHVy biAwOworCitmYWlsOgorCWlmIChodWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX1BF TkRJTkcpCisJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOworCisJRFJN X0VSUk9SKCJGYWlsZWQgdG8gY29tcGxldGUgSHVDIHVDb2RlIGxvYWQgd2l0aCByZXQgJWRcbiIs IGVycik7CisKKwlyZXR1cm4gZXJyOworfQorCisvKioKKyAqIGludGVsX2h1Y19maW5pKCkgLSBj bGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKKyAqIEBkZXY6IHRoZSBkcm0gZGV2 aWNlCisgKgorICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2luZyB0aGUgaHVjIGZpcm13YXJlIEdFTSBv YmouCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3Ry dWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7CisKKwltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKGh1Y19mdy0+dWNfZndfb2JqKQorCQlp OTE1X2dlbV9vYmplY3RfcHV0KGh1Y19mdy0+dWNfZndfb2JqKTsKKwlodWNfZnctPnVjX2Z3X29i aiA9IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlodWNfZnct PmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cit9Ci0tIAoyLjcuNAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==