From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v2 3/6] drm/i915/huc: Add HuC fw loading support Date: Fri, 1 Jul 2016 14:15:42 +0100 Message-ID: <1467378945-14274-4-git-send-email-peter.antoine@intel.com> References: <1467378945-14274-1-git-send-email-peter.antoine@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 ESMTP id 24A4E6EA70 for ; Fri, 1 Jul 2016 13:15:59 +0000 (UTC) In-Reply-To: <1467378945-14274-1-git-send-email-peter.antoine@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: rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhlIEh1QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZSBpbnRlbF91Y19m d19mZXRjaCgpCmlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCgpIdUMgbG9hZGluZyBuZWVkcyB0byBi ZSBiZWZvcmUgR3VDIGxvYWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nIG11c3QKYmUgZG9uZSBlYXJs eSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KCnYyOiByZWJhc2VkIG9uLXRvcCBvZiBkcm0t aW50ZWwtbmlnaHRseS4KICAgIHJlbW92ZWQgaWYoSEFTX0dVQygpKSBiZWZvcmUgdGhlIGd1YyBj YWxsLiAoRC5Hb3Jkb24pCiAgICB1cGRhdGUgaHVjX3ZlcnNpb24gbnVtYmVyIG9mIGZvcm1hdC4K ClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcu aCAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8ICAyNiArKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCAgICAgICAgfCAgNDQgKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgfCAyNjcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzM2IGluc2VydGlvbnMoKyks IDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Yy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjX2xvYWRlci5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCBhM2QyYjc4Li4zMmFmNjZl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNDUsNiArNDUsNyBAQCBpOTE1LXkgKz0gaTkxNV9j bWRfcGFyc2VyLm8gXAogCiAjIGdlbmVyYWwtcHVycG9zZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykg c3VwcG9ydAogaTkxNS15ICs9IGludGVsX2d1Y19sb2FkZXIubyBcCisJICBpbnRlbF9odWNfbG9h ZGVyLm8gXAogCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCiAKICMgYXV0b2dlbmVyYXRlZCBudWxs IHJlbmRlciBzdGF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggYzU4MGUyNC4uYWU1MDkz YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC02MzksNiArNjM5LDcgQEAgc3RhdGljIGlu dCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJICogd29y a2luZyBpcnFzIGZvciBlLmcuIGdtYnVzIGFuZCBkcCBhdXggdHJhbnNmZXJzLiAqLwogCWludGVs X21vZGVzZXRfaW5pdChkZXYpOwogCisJaW50ZWxfaHVjX2luaXQoZGV2KTsKIAlpbnRlbF9ndWNf aW5pdChkZXYpOwogCiAJcmV0ID0gaTkxNV9nZW1faW5pdChkZXYpOwpAQCAtNjY0LDYgKzY2NSw3 IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogY2xlYW51cF9nZW06CiAJaTkxNV9nZW1fZmluaShkZXYpOwogY2xlYW51cF9pcnE6CisJ aW50ZWxfaHVjX2ZpbmkoZGV2KTsKIAlpbnRlbF9ndWNfZmluaShkZXYpOwogCWRybV9pcnFfdW5p bnN0YWxsKGRldik7CiAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsKQEAgLTE3MTQsNiArMTcx Niw3IEBAIHZvaWQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ LyogRmx1c2ggYW55IG91dHN0YW5kaW5nIHVucGluX3dvcmsuICovCiAJZmx1c2hfd29ya3F1ZXVl KGRldl9wcml2LT53cSk7CiAKKwlpbnRlbF9odWNfZmluaShkZXYpOwogCWludGVsX2d1Y19maW5p KGRldik7CiAJaTkxNV9nZW1fZmluaShkZXYpOwogCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZf cHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA0ODVhYjExLi43ODM5MzRlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJpbnRlbF9i aW9zLmgiCiAjaW5jbHVkZSAiaW50ZWxfZHBsbF9tZ3IuaCIKICNpbmNsdWRlICJpbnRlbF9ndWMu aCIKKyNpbmNsdWRlICJpbnRlbF9odWMuaCIKICNpbmNsdWRlICJpbnRlbF9scmMuaCIKICNpbmNs dWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCiAKQEAgLTE3NTQsNiArMTc1NSw3IEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIHsKIAogCXN0cnVjdCBpbnRlbF9ndnQgZ3Z0OwogCisJc3RydWN0IGlu dGVsX2h1YyBodWM7CiAJc3RydWN0IGludGVsX2d1YyBndWM7CiAKIAlzdHJ1Y3QgaW50ZWxfY3Ny IGNzcjsKQEAgLTI4NTEsNiArMjg1Myw3IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewog I2RlZmluZSBIQVNfR1VDKGRldikJCShJU19HRU45KGRldikgJiYgIUlTX0tBQllMQUtFKGRldikp CiAjZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2KQkoSEFTX0dVQyhkZXYpKQogI2RlZmluZSBIQVNf R1VDX1NDSEVEKGRldikJKEhBU19HVUMoZGV2KSkKKyNkZWZpbmUgSEFTX0hVQ19VQ09ERShkZXYp CShIQVNfR1VDKGRldikpCiAKICNkZWZpbmUgSEFTX1JFU09VUkNFX1NUUkVBTUVSKGRldikgKElT X0hBU1dFTEwoZGV2KSB8fCBcCiAJCQkJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCmluZGV4IGNmNWE2NWIuLjUxNTMzZjEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCkBAIC02MSw5ICs2MSwxMiBAQAogI2RlZmluZSAg IERNQV9BRERSRVNTX1NQQUNFX0dUVAkJICAoOCA8PCAxNikKICNkZWZpbmUgRE1BX0NPUFlfU0la RQkJCV9NTUlPKDB4YzMxMCkKICNkZWZpbmUgRE1BX0NUUkwJCQlfTU1JTygweGMzMTQpCisjZGVm aW5lICAgSFVDX1VLRVJORUwJCQkgICgxPDw5KQogI2RlZmluZSAgIFVPU19NT1ZFCQkJICAoMTw8 NCkKICNkZWZpbmUgICBTVEFSVF9ETUEJCQkgICgxPDwwKQogI2RlZmluZSBETUFfR1VDX1dPUENN X09GRlNFVAkJX01NSU8oMHhjMzQwKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX1ZDUgkJ ICAoMDw8MSkKKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCiAjZGVm aW5lICAgR1VDX1dPUENNX09GRlNFVF9WQUxVRQkgIDB4ODAwMDAJLyogNTEyS0IgKi8KICNkZWZp bmUgR1VDX01BWF9JRExFX0NPVU5UCQlfTU1JTygweEMzRTQpCiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmgKaW5kZXggZWJmOWM4ZC4uYzdiMjc0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK QEAgLTE2MCw2ICsxNjAsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxf Z3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGludGVsX2d1 Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGludGVsX3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwordTMy IGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8q IGk5MTVfZ3VjX3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jCmluZGV4IDNlOGUxN2EuLmM3MjA2ZDggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKQEAgLTgyLDYgKzgyLDE3IEBAIGNvbnN0IGNoYXIgKmlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cykKIAl9 CiB9OwogCit1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQoreworCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKKworCS8qIE9uIEJYVCwg dGhlIHRvcCBvZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2IGNvbnRleHQgKi8KKwlpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpCisJCXdvcGNtX3NpemUgLT0gQlhUX0dVQ19XT1BDTV9SQzZfUkVT RVJWRUQ7CisKKwlyZXR1cm4gd29wY21fc2l6ZTsKK30KKwogc3RhdGljIHZvaWQgZGlyZWN0X2lu dGVycnVwdHNfdG9faG9zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwpAQCAtMjY5LDcgKzI4MCw4IEBAIHN0YXRp YyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00p OwogCiAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCi0JSTkxNV9XUklURShETUFfQ1RSTCwg X01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSk7CisJSTkxNV9XUklURShE TUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSB8CisJCQlf TUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7CiAKIAkvKgogCSAqIFdhaXQgZm9yIHRo ZSBETUEgdG8gY29tcGxldGUgJiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgpAQCAtMjk0LDE3ICszMDYs NiBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHUzMiBndWNfd29wY21fc2l6 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0JdTMyIHdvcGNtX3NpemUg PSBHVUNfV09QQ01fVE9QOwotCi0JLyogT24gQlhULCB0aGUgdG9wIG9mIFdPUENNIGlzIHJlc2Vy dmVkIGZvciBSQzYgY29udGV4dCAqLwotCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKLQkJd29w Y21fc2l6ZSAtPSBCWFRfR1VDX1dPUENNX1JDNl9SRVNFUlZFRDsKLQotCXJldHVybiB3b3BjbV9z aXplOwotfQotCiAvKgogICogTG9hZCB0aGUgR3VDIGZpcm13YXJlIGJsb2IgaW50byB0aGUgTWlu dXRlSUEuCiAgKi8KQEAgLTQ3Myw2ICs0NzQsNyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJCQlnb3RvIGZhaWw7CiAJCX0KIAorCQlpbnRlbF9odWNfbG9h ZChkZXYpOwogCQllcnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAJCWlmICghZXJyKQog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjk0NmNhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9odWMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIw MTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUg U09GVFdBUkUuCisgKgorICovCisjaWZuZGVmIF9JTlRFTF9IVUNfSF8KKyNkZWZpbmUgX0lOVEVM X0hVQ19IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisKKyNkZWZpbmUgSFVDX1NUQVRVUzIJ CV9NTUlPKDB4RDNCMCkKKyNkZWZpbmUgICBIVUNfRldfVkVSSUZJRUQJKDE8PDcpCisKK3N0cnVj dCBpbnRlbF9odWMgeworCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLworCXN0 cnVjdCBpbnRlbF91Y19mdyBodWNfZnc7CisKKwkvKiBIdUMtc3BlY2lmaWMgYWRkaXRpb25zICov Cit9OworCitleHRlcm4gdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKK2V4dGVybiBpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Citl eHRlcm4gdm9pZCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVy biB2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5kaWYK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi45OGVmOGRmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCkBAIC0wLDAgKzEsMjY3IEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUu aD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2h1Yy5oIgorCisvKioK KyAqIERPQzogSHVDIEZpcm13YXJlCisgKgorICogTW90aXZhdGlvbjoKKyAqIEdFTjkgaW50cm9k dWNlcyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhp Z2gKKyAqIEVmZmljaWVuY3kgVmlkZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2Fu IHVzZSB0aGUgZmlybXdhcmUKKyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmlj IGNvbW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCisgKgorICogSW1wbGVtZW50YXRpb246CisgKiBP biBzdXBwb3J0ZWQgcGxhdGZvcm1zLCBpOTE1J3Mgam9iIGlzIHRvIGxvYWQgdGhlIGZpcm13YXJl IHN0b3JlZCBvbiB0aGUKKyAqIGZpbGUgc3lzdGVtIGFuZCBhc3Npc3Qgd2l0aCBhdXRoZW50aWNh dGlvbi4gSXQgaXMgdXAgdG8gdXNlcnNwYWNlIHRvCisgKiBkZXRlY3QgdGhlIHByZXNlbmNlIG9m IEh1QyBzdXBwb3J0IG9uIGEgcGxhdGZvcm0sIG9uIHRoZWlyIG93bi4KKyAqIEZvciBkZWJ1Z2dp bmcsIGk5MTUgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGZpbGUsIGk5MTVfaHVjX2xvYWRfc3RhdHVzX2lu Zm8KKyAqIHdoaWNoIGRpc3BsYXlzIHRoZSBmaXJtd2FyZSBsb2FkIHN0YXR1cy4KKyAqCisgKiBU aGUgdW5pZmllZCB1QyBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZC4gRmlybXdhcmUgYmluYXJ5IGlz IGZldGNoZWQgYnkgdGhlCisgKiBsb2FkZXIgYXN5bmNocm9ub3VzbHkgZnJvbSB0aGUgZHJpdmVy IGluaXQgcHJvY2Vzcy4gSG93ZXZlciwgdGhlIGFjdHVhbAorICogbG9hZGluZyB0byBIVyBpcyBk ZWZlcnJlZCB1bnRpbCBHRU0gaW5pdGlhbGl6YXRpb24gaXMgZG9uZS4gQmUgbm90ZSB0aGF0IEh1 QworICogZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgor ICovCisKKyNkZWZpbmUgSTkxNV9TS0xfSFVDX1VDT0RFICJpOTE1L3NrbF9odWNfdmVyMV83LmJp biIKK01PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOworCisvKioKKyAqIGludGVs X2h1Y19sb2FkX3Vjb2RlKCkgLSBETUEncyB0aGUgZmlybXdhcmUKKyAqIEBkZXY6IHRoZSBkcm0g ZGV2aWNlCisgKgorICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgZ2VtIG9iamVjdCBjb250YWlu aW5nIHRoZSBmaXJtd2FyZSwgc2V0cyB1cCB0aGUgRE1BCisgKiBlbmdpbmUgTU1JTywgdHJpZ2dl cnMgdGhlIERNQSBvcGVyYXRpb24gYW5kIHdhaXRzIGZvciBpdCB0byBmaW5pc2guCisgKgorICog VHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBt aWNyb2NvbnRyb2xsZXIuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9u IGZhaWx1cmUKKyAqLworCitzdGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZk ZXZfcHJpdi0+aHVjLmh1Y19mdzsKKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IDA7CisJdTMyIHNp emU7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihodWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJRFJNX0RFQlVHX0RS SVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQor CisJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCAwLCAwKTsK KwlpZiAocmV0KSB7CisJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIHJldCk7 CisJCXJldHVybiByZXQ7CisJfQorCisJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMg dGFrZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAqLworCUk5MTVfV1JJVEUoR0VOOF9HVENS LCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRl dl9wcml2LT5kZXYtPnN0cnVjdF9tdXRleCkpOworCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0 KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qIGluaXQgV09QQ00gKi8KKwlJOTE1X1dS SVRFKEdVQ19XT1BDTV9TSVpFLCBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOworCUk5MTVfV1JJ VEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgfAorCQkJSFVD X0xPQURJTkdfQUdFTlRfR1VDKTsKKworCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9yIHRo ZSB1Q29kZSAqLworCW9mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChodWNfZnctPnVj X2Z3X29iaikgKworCQkJaHVjX2Z3LT5oZWFkZXJfb2Zmc2V0OworCUk5MTVfV1JJVEUoRE1BX0FE RFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7CisJSTkxNV9XUklURShETUFfQUREUl8w X0hJR0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4RkZGRik7CisKKwkvKiBIYXJkd2FyZSBk b2Vzbid0IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwK KwkgKiBidXQgc3RpbGwgcHJvZ3JhbSB0aGUgY29ycmVjdCBhZGRyZXNzIHNwYWNlLgorCSAqLwor CUk5MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDApOworCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9I SUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CisKKwlzaXplID0gaHVjX2Z3LT5oZWFkZXJf c2l6ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKKwlJOTE1X1dSSVRFKERNQV9DT1BZX1NJWkUsIHNp emUpOworCisJLyogU3RhcnQgdGhlIERNQSAqLworCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNL RURfQklUX0VOQUJMRShIVUNfVUtFUk5FTCB8IFNUQVJUX0RNQSkpOworCisJLyogV2FpdCBmb3Ig RE1BIHRvIGZpbmlzaCAqLworCXJldCA9IHdhaXRfZm9yX2F0b21pYygoSTkxNV9SRUFEKERNQV9D VFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgNTApOworCisJRFJNX0RFQlVHX0RSSVZFUigiSHVDIERN QSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJldCk7CisKKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwkvKgorCSAqIFdl IGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNh biB1bnBpbiBpdAorCSAqIG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vzbid0 IGNvbnRpbnVlIHRvIHRha2UgdXAgc3BhY2UuCisJICovCisJaTkxNV9nZW1fb2JqZWN0X2dndHRf dW5waW4oaHVjX2Z3LT51Y19md19vYmopOworCisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBp bnRlbF9odWNfaW5pdCgpIC0gaW5pdGlhdGUgSHVDIGZpcm13YXJlIGxvYWRpbmcgcmVxdWVzdAor ICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBDYWxsZWQgZWFybHkgZHVyaW5nIGRyaXZl ciBsb2FkLCBidXQgYWZ0ZXIgR0VNIGlzIGluaXRpYWxpc2VkLiBUaGUgbG9hZGluZworICogd2ls bCBjb250aW51ZSBvbmx5IHdoZW4gZHJpdmVyIGV4cGxpY2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBu YW1lIGFuZCB2ZXJzaW9uLgorICogQWxsIG90aGVyIGNhc2VzIGFyZSBjb25zaWRlcmVkIGFzIFVD X0ZJUk1XQVJFX05PTkUgZWl0aGVyIGJlY2F1c2UgSFcgaXMgbm90CisgKiBjYXBhYmxlIG9yIGRy aXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5kIHRoZXJlIHdpbGwgYmUgbm8gZXJyb3IgbWVzc2FnZSBm b3IKKyAqIFVDX0ZJUk1XQVJFX05PTkUgY2FzZXMuCisgKgorICogVGhlIERNQS1jb3B5aW5nIHRv IEhXIGlzIGRvbmUgbGF0ZXIgd2hlbiBpbnRlbF9odWNfdWNvZGVfbG9hZCgpIGlzIGNhbGxlZC4K KyAqLwordm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3Ry dWN0IGludGVsX2h1YyAqaHVjID0gJmRldl9wcml2LT5odWM7CisJc3RydWN0IGludGVsX3VjX2Z3 ICpodWNfZncgPSAmaHVjLT5odWNfZnc7CisJY29uc3QgY2hhciAqZndfcGF0aCA9IE5VTEw7CisK KwlodWNfZnctPnVjX2RldiA9IGRldjsKKwlodWNfZnctPnVjX2Z3X3BhdGggPSBOVUxMOworCWh1 Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnctPmxvYWRfc3Rh dHVzID0gVUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnctPmZ3X3R5cGUgPSBVQ19GV19UWVBFX0hV QzsKKworCWlmICghSEFTX0hVQ19VQ09ERShkZXZfcHJpdikpCisJCXJldHVybjsKKworCWlmIChJ U19TS1lMQUtFKGRldl9wcml2KSkgeworCQlmd19wYXRoID0gSTkxNV9TS0xfSFVDX1VDT0RFOwor CQlodWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSAxOworCQlodWNfZnctPm1pbm9yX3Zlcl93YW50 ZWQgPSA3OworCX0KKworCWlmIChmd19wYXRoID09IE5VTEwpCisJCXJldHVybjsKKworCWh1Y19m dy0+dWNfZndfcGF0aCA9IGZ3X3BhdGg7CisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9QRU5ESU5HOworCisJRFJNX0RFQlVHX0RSSVZFUigiSHVDIGZpcm13YXJlIHBlbmRpbmcs IHBhdGggJXNcbiIsIGZ3X3BhdGgpOworCisJaW50ZWxfdWNfZndfZmV0Y2goZGV2LCBodWNfZncp OworfQorCisvKioKKyAqIGludGVsX2h1Y19sb2FkKCkgLSBsb2FkIEh1QyB1Q29kZSB0byBkZXZp Y2UKKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCisgKgorICogQ2FsbGVkIGZyb20gZ2VtX2luaXRf aHcoKSBkdXJpbmcgZHJpdmVyIGxvYWRpbmcgYW5kIGFsc28gYWZ0ZXIgYSBHUFUgcmVzZXQuCisg KiBCZSBub3RlIHRoYXQgSHVDIGxvYWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGlu Zy4KKyAqCisgKiBUaGUgZmlybXdhcmUgaW1hZ2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZl dGNoZWQgaW50byBtZW1vcnkgYnkgdGhlCisgKiBlYXJsaWVyIGNhbGwgdG8gaW50ZWxfaHVjX3Vj b2RlX2luaXQoKSwgc28gaGVyZSB3ZSBuZWVkIG9ubHkgY2hlY2sgdGhhdAorICogaXMgc3VjY2Vl ZGVkLCBhbmQgdGhlbiB0cmFuc2ZlciB0aGUgaW1hZ2UgdG8gdGhlIGgvdy4KKyAqCisgKiBSZXR1 cm46CW5vbi16ZXJvIGNvZGUgb24gZXJyb3IKKyAqLworaW50IGludGVsX2h1Y19sb2FkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZf cHJpdi0+aHVjLmh1Y19mdzsKKwlpbnQgZXJyOworCisJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVz ID09IFVDX0ZJUk1XQVJFX05PTkUpCisJCXJldHVybiAwOworCisJRFJNX0RFQlVHX0RSSVZFUigi JXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT51Y19md19wYXRo LAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCWlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKworCWlmIChodWNf ZnctPmZldGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJICAgIGh1Y19mdy0+ bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKKwkJcmV0dXJuIC1FTk9FWEVDOworCisJ aHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlzd2l0Y2ggKGh1 Y19mdy0+ZmV0Y2hfc3RhdHVzKSB7CisJY2FzZSBVQ19GSVJNV0FSRV9GQUlMOgorCQkvKiBzb21l dGhpbmcgd2VudCB3cm9uZyA6KCAqLworCQllcnIgPSAtRUlPOworCQlnb3RvIGZhaWw7CisKKwlj YXNlIFVDX0ZJUk1XQVJFX05PTkU6CisJY2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgorCWRlZmF1 bHQ6CisJCS8qICJjYW4ndCBoYXBwZW4iICovCisJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGlu dmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCisJCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJ CQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCQlodWNf ZnctPmZldGNoX3N0YXR1cyk7CisJCWVyciA9IC1FTlhJTzsKKwkJZ290byBmYWlsOworCisJY2Fz ZSBVQ19GSVJNV0FSRV9TVUNDRVNTOgorCQlicmVhazsKKwl9CisKKwllcnIgPSBodWNfdWNvZGVf eGZlcihkZXZfcHJpdik7CisJaWYgKGVycikKKwkJZ290byBmYWlsOworCisJaHVjX2Z3LT5sb2Fk X3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7CisKKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBm dyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAorCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxf dWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOworCisJcmV0dXJuIDA7CisK K2ZhaWw6CisJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfUEVORElORykK KwkJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CisKKwlEUk1fRVJST1Io IkZhaWxlZCB0byBjb21wbGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJyKTsK KworCXJldHVybiBlcnI7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2ZpbmkoKSAtIGNsZWFuIHVw IHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1QworICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAq CisgKiBDbGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUgR0VNIG9iai4KKyAq Lwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0 IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7CisKKwltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKGh1Y19mdy0+dWNfZndfb2JqKQorCQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmaHVjX2Z3LT51Y19md19vYmotPmJhc2UpOworCWh1Y19m dy0+dWNfZndfb2JqID0gTlVMTDsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK KworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKK30KLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK