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: Thu, 29 Sep 2016 11:04:00 -0700 Message-ID: <1475172245-10939-4-git-send-email-anusha.srivatsa@intel.com> References: <1475172245-10939-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4906F6E8D7 for ; Thu, 29 Sep 2016 18:04:34 +0000 (UTC) In-Reply-To: <1475172245-10939-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+CgpUaGUgSHVDIGxv YWRpbmcgcHJvY2VzcyBpcyBzaW1pbGFyIHRvIEd1Qy4gVGhlIGludGVsX3VjX2Z3X2ZldGNoKCkK aXMgdXNlZCBmb3IgYm90aCBjYXNlcy4KCkh1QyBsb2FkaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBH dUMgbG9hZGluZy4gVGhlIFdPUENNIHNldHRpbmcgbXVzdApiZSBkb25lIGVhcmx5IGJlZm9yZSBs b2FkaW5nIGFueSBvZiB0aGVtLgoKdjI6IHJlYmFzZWQgb24tdG9wIG9mIGRybS1pbnRlbC1uaWdo dGx5LgogICAgcmVtb3ZlZCBpZihIQVNfR1VDKCkpIGJlZm9yZSB0aGUgZ3VjIGNhbGwuIChELkdv cmRvbikKICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgp2MzogcmViYXNl ZCB0byBkcm0taW50ZWwtbmlnaHRseSwgY2hhbmdlZCB0aGUgZmlsZSBuYW1lIGZvcm1hdCB0bwog ICAgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgaHVjIHBhY2thZ2UuCiAgICBDaGFuZ2VkIGRldi0+ZGV2 X3ByaXZhdGUgdG8gdG9faTkxNSgpCnY0OiBtb3ZlZCBmdW5jdGlvbiBiYWNrIHRvIHdoZXJlIGl0 IHdhcy4KICAgIGNoYW5nZSB3YWl0X2Zvcl9hdG9taWMgdG8gd2FpdF9mb3IuCnY1OiByZWJhc2Vk ICsgY29tbWVudCBjaGFuZ2VzLgp2NzogcmViYXNlZC4Kdjg6IHJlYmFzZWQuCgpUZXN0ZWQtYnk6 IFhpYW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQW51 c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBB bGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8 cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQu cy5nb3Jkb25AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAg ICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAg fCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAzICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oICAgICB8ICAgMyArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuaCAgICAgICAgfCAgNDQgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9odWNfbG9hZGVyLmMgfCAyNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDgg ZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCmluZGV4IGU2ZmUwMDQuLjZlOTljNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBA IC01Myw2ICs1Myw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCiAKICMgZ2VuZXJh bC1wdXJwb3NlIG1pY3JvY29udHJvbGxlciAoR3VDKSBzdXBwb3J0CiBpOTE1LXkgKz0gaW50ZWxf Z3VjX2xvYWRlci5vIFwKKwkgIGludGVsX2h1Y19sb2FkZXIubyBcCiAJICBpOTE1X2d1Y19zdWJt aXNzaW9uLm8KIAogIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwppbmRleCAzMWIyYjYzLi43YWY3YmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKQEAgLTYxMyw2ICs2MTMsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiB3b3JraW5nIGlycXMgZm9yIGUuZy4gZ21idXMg YW5kIGRwIGF1eCB0cmFuc2ZlcnMuICovCiAJaW50ZWxfbW9kZXNldF9pbml0KGRldik7CiAKKwlp bnRlbF9odWNfaW5pdChkZXYpOwogCWludGVsX2d1Y19pbml0KGRldik7CiAKIAlyZXQgPSBpOTE1 X2dlbV9pbml0KGRldik7CkBAIC02MzgsNiArNjM5LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRf bW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiBjbGVhbnVwX2dlbToKIAlpOTE1 X2dlbV9maW5pKGRldik7CiBjbGVhbnVwX2lycToKKwlpbnRlbF9odWNfZmluaShkZXYpOwogCWlu dGVsX2d1Y19maW5pKGRldik7CiAJZHJtX2lycV91bmluc3RhbGwoZGV2KTsKIAlpbnRlbF90ZWFy ZG93bl9nbWJ1cyhkZXYpOwpAQCAtMTMxNSw2ICsxMzE3LDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91 bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRpbmcg dW5waW5fd29yay4gKi8KIAlkcmFpbl93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKIAorCWludGVs X2h1Y19maW5pKGRldik7CiAJaW50ZWxfZ3VjX2ZpbmkoZGV2KTsKIAlpOTE1X2dlbV9maW5pKGRl dik7CiAJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IDkxZmYzZDcuLjFkYzg4ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt NTUsNiArNTUsNyBAQAogI2luY2x1ZGUgImludGVsX2Jpb3MuaCIKICNpbmNsdWRlICJpbnRlbF9k cGxsX21nci5oIgogI2luY2x1ZGUgImludGVsX2d1Yy5oIgorI2luY2x1ZGUgImludGVsX2h1Yy5o IgogI2luY2x1ZGUgImludGVsX2xyYy5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIK IApAQCAtMTc2Niw2ICsxNzY3LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3Ry dWN0IGludGVsX2d2dCBndnQ7CiAKKwlzdHJ1Y3QgaW50ZWxfaHVjIGh1YzsKIAlzdHJ1Y3QgaW50 ZWxfZ3VjIGd1YzsKIAogCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwpAQCAtMjgyMiw2ICsyODI0LDcg QEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAjZGVmaW5lIEhBU19HVUMoZGV2KQkJKElO VEVMX0lORk8oZGV2KS0+aGFzX2d1YykKICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXYpCShIQVNf R1VDKGRldikpCiAjZGVmaW5lIEhBU19HVUNfU0NIRUQoZGV2KQkoSEFTX0dVQyhkZXYpKQorI2Rl ZmluZSBIQVNfSFVDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKIAogI2RlZmluZSBIQVNfUkVT T1VSQ0VfU1RSRUFNRVIoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5oYXNfcmVzb3VyY2Vfc3RyZWFt ZXIpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKaW5kZXggYTQ3ZTFlNC4uNjRlOTQy YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKQEAgLTYxLDkgKzYxLDEyIEBACiAj ZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2KQogI2RlZmluZSBETUFf Q09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQogI2RlZmluZSBETUFfQ1RSTAkJCV9NTUlPKDB4YzMx NCkKKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCiAjZGVmaW5lICAgVU9TX01PVkUJ CQkgICgxPDw0KQogI2RlZmluZSAgIFNUQVJUX0RNQQkJCSAgKDE8PDApCiAjZGVmaW5lIERNQV9H VUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCisjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdF TlRfVkNSCQkgICgwPDwxKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX0dVQwkJICAoMTw8 MSkKICNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAq LwogI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNFNCkKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWMuaAppbmRleCA4MTJlNGNhLi5hZjc2ZmZlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaApAQCAtMTYwLDYgKzE2MCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19m d19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwogZXh0ZXJuIGlu dCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQg aW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaW50ZWxfdWNf ZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19m dyk7Cit1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKIAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQgaTkxNV9ndWNfc3VibWlzc2lv bl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggMGI4NjNhMS4uMGQyMTRiNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtMzA1LDcgKzMwNSw4IEBAIHN0YXRp YyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00p OwogCiAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCi0JSTkxNV9XUklURShETUFfQ1RSTCwg X01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSk7CisJSTkxNV9XUklURShE TUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSB8CisJCQlf TUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7CiAKIAkvKgogCSAqIFdhaXQgZm9yIHRo ZSBETUEgdG8gY29tcGxldGUgJiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgpAQCAtMzMwLDcgKzMzMSw3 IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdTMyIGd1Y193b3BjbV9zaXpl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3UzMiBndWNfd29wY21fc2l6ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIHdvcGNtX3NpemUgPSBH VUNfV09QQ01fVE9QOwogCkBAIC01MDgsNiArNTA5LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpZiAoZXJyKQogCQkJZ290byBmYWlsOwogCisJCWlu dGVsX2h1Y19sb2FkKGRldik7CiAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKIAkJ aWYgKCFlcnIpCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2h1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2Y2FhNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5 cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MK KyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKyNpZm5kZWYgX0lOVEVMX0hVQ19IXworI2Rl ZmluZSBfSU5URUxfSFVDX0hfCisKKyNpbmNsdWRlICJpbnRlbF9ndWMuaCIKKworI2RlZmluZSBI VUNfU1RBVFVTMgkJX01NSU8oMHhEM0IwKQorI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRAkoMTw8 NykKKworc3RydWN0IGludGVsX2h1YyB7CisJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5hZ2Vt ZW50ICovCisJc3RydWN0IGludGVsX3VjX2Z3IGh1Y19mdzsKKworCS8qIEh1Qy1zcGVjaWZpYyBh ZGRpdGlvbnMgKi8KK307CisKK2V4dGVybiB2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOworZXh0ZXJuIGludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKK2V4dGVybiB2b2lkIGludGVsX2h1Y19hdXRoKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOworZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xv YWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYWZmNjcKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKQEAgLTAsMCArMSwyNjggQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51 eC9maXJtd2FyZS5oPgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxfaHVj LmgiCisKKy8qKgorICogRE9DOiBIdUMgRmlybXdhcmUKKyAqCisgKiBNb3RpdmF0aW9uOgorICog R0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBmaXJtd2FyZSBmb3IgdXNhZ2UgaW4gbWVk aWEgSEVWQyAoSGlnaAorICogRWZmaWNpZW5jeSBWaWRlbyBDb2RpbmcpIG9wZXJhdGlvbnMuIFVz ZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQorICogY2FwYWJpbGl0aWVzIGJ5IGFkZGluZyBI dUMgc3BlY2lmaWMgY29tbWFuZHMgdG8gYmF0Y2ggYnVmZmVycy4KKyAqCisgKiBJbXBsZW1lbnRh dGlvbjoKKyAqIE9uIHN1cHBvcnRlZCBwbGF0Zm9ybXMsIGk5MTUncyBqb2IgaXMgdG8gbG9hZCB0 aGUgZmlybXdhcmUgc3RvcmVkIG9uIHRoZQorICogZmlsZSBzeXN0ZW0gYW5kIGFzc2lzdCB3aXRo IGF1dGhlbnRpY2F0aW9uLiBJdCBpcyB1cCB0byB1c2Vyc3BhY2UgdG8KKyAqIGRldGVjdCB0aGUg cHJlc2VuY2Ugb2YgSHVDIHN1cHBvcnQgb24gYSBwbGF0Zm9ybSwgb24gdGhlaXIgb3duLgorICog Rm9yIGRlYnVnZ2luZywgaTkxNSBwcm92aWRlcyBhIGRlYnVnZnMgZmlsZSwgaTkxNV9odWNfbG9h ZF9zdGF0dXNfaW5mbworICogd2hpY2ggZGlzcGxheXMgdGhlIGZpcm13YXJlIGxvYWQgc3RhdHVz LgorICoKKyAqIFRoZSBzYW1lIGZpcm13YXJlIGxvYWRlciBpcyB1c2VkIGFzIHRoZSBHdUMuIEZp cm13YXJlICogYmluYXJ5IGlzIGZldGNoZWQgYnkKKyAqIHRoZSBsb2FkZXIgYXN5bmNocm9ub3Vz bHkgZnJvbSB0aGUgZHJpdmVyIGluaXQgcHJvY2Vzcy4gSG93ZXZlciwgdGhlIGFjdHVhbAorICog bG9hZGluZyB0byBIVyBpcyBkZWZlcnJlZCB1bnRpbCBHRU0gaW5pdGlhbGl6YXRpb24gaXMgZG9u ZS4KKyAqCisgKiBOb3RlIHRoYXQgSHVDIGZpcm13YXJlIGxvYWRpbmcgbXVzdCBiZSBkb25lIGJl Zm9yZSBHdUMgbG9hZGluZy4KKyAqLworCisjZGVmaW5lIEk5MTVfU0tMX0hVQ19VQ09ERSAiaTkx NS9za2xfaHVjX3ZlcjAxXzA3XzEzOTguYmluIgorTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0hV Q19VQ09ERSk7CisKKy8qKgorICogaW50ZWxfaHVjX2xvYWRfdWNvZGUoKSAtIERNQSdzIHRoZSBm aXJtd2FyZQorICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHRh a2VzIHRoZSBnZW0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpcm13YXJlLCBzZXRzIHVwIHRoZSBE TUEKKyAqIGVuZ2luZSBNTUlPLCB0cmlnZ2VycyB0aGUgRE1BIG9wZXJhdGlvbiBhbmQgd2FpdHMg Zm9yIGl0IHRvIGZpbmlzaC4KKyAqCisgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8g UkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxlci4KKyAqCisgKiBSZXR1cm46 IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZQorICovCisKK3N0YXRpYyBpbnQgaHVj X3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVj dCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3OworCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMDsKKwl1MzIgc2l6ZTsKKwlp bnQgcmV0OworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGh1Y19m dy0+dWNfZndfb2JqLCBmYWxzZSk7CisJaWYgKHJldCkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJz ZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAs IDApOworCWlmIChJU19FUlIodm1hKSkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVk ICVkXG4iLCAoaW50KVBUUl9FUlIodm1hKSk7CisJCXJldHVybiBQVFJfRVJSKHZtYSk7CisJfQor CisJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVwZGF0 ZXMgdG8gR1RULiAqLworCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFU RSk7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5kcm0uc3RydWN0X211 dGV4KSk7CisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9B TEwpOworCisJLyogaW5pdCBXT1BDTSAqLworCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1 Y193b3BjbV9zaXplKGRldl9wcml2KSk7CisJSTkxNV9XUklURShETUFfR1VDX1dPUENNX09GRlNF VCwgR1VDX1dPUENNX09GRlNFVF9WQUxVRSB8CisJCQlIVUNfTE9BRElOR19BR0VOVF9HVUMpOwor CisJLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIHVDb2RlICovCisJb2Zmc2V0ID0g aTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaHVjX2Z3LT5oZWFkZXJfb2Zmc2V0OworCUk5MTVfV1JJ VEUoRE1BX0FERFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7CisJSTkxNV9XUklURShE TUFfQUREUl8wX0hJR0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4RkZGRik7CisKKwkvKiBI YXJkd2FyZSBkb2Vzbid0IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgSHVDLiBTZXQg aXQgdG8gMCwKKwkgKiBidXQgc3RpbGwgcHJvZ3JhbSB0aGUgY29ycmVjdCBhZGRyZXNzIHNwYWNl LgorCSAqLworCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDApOworCUk5MTVfV1JJVEUoRE1B X0FERFJfMV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CisKKwlzaXplID0gaHVjX2Z3 LT5oZWFkZXJfc2l6ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKKwlJOTE1X1dSSVRFKERNQV9DT1BZ X1NJWkUsIHNpemUpOworCisJLyogU3RhcnQgdGhlIERNQSAqLworCUk5MTVfV1JJVEUoRE1BX0NU UkwsIF9NQVNLRURfQklUX0VOQUJMRShIVUNfVUtFUk5FTCB8IFNUQVJUX0RNQSkpOworCisJLyog V2FpdCBmb3IgRE1BIHRvIGZpbmlzaCAqLworCXJldCA9IHdhaXRfZm9yKChJOTE1X1JFQUQoRE1B X0NUUkwpICYgU1RBUlRfRE1BKSA9PSAwLCAxMDApOworCisJRFJNX0RFQlVHX0RSSVZFUigiSHVD IERNQSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJldCk7CisKKwlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwkvKgorCSAq IFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdl IGNhbiB1bnBpbiBpdAorCSAqIG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vz bid0IGNvbnRpbnVlIHRvIHRha2UgdXAgc3BhY2UuCisJICovCisJaTkxNV92bWFfdW5waW4odm1h KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRp YXRlIEh1QyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVlc3QKKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNl CisgKgorICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdFTSBp cyBpbml0aWFsaXNlZC4gVGhlIGxvYWRpbmcKKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRy aXZlciBleHBsaWNpdGx5IHNwZWNpZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4KKyAqIEFs bCBvdGhlciBjYXNlcyBhcmUgY29uc2lkZXJlZCBhcyBVQ19GSVJNV0FSRV9OT05FIGVpdGhlciBi ZWNhdXNlIEhXIGlzIG5vdAorICogY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQuIEFu ZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yIG1lc3NhZ2UgZm9yCisgKiBVQ19GSVJNV0FSRV9OT05F IGNhc2VzLgorICoKKyAqIFRoZSBETUEtY29weWluZyB0byBIVyBpcyBkb25lIGxhdGVyIHdoZW4g aW50ZWxfaHVjX3Vjb2RlX2xvYWQoKSBpcyBjYWxsZWQuCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX2h1YyAqaHVjID0gJmRldl9w cml2LT5odWM7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmaHVjLT5odWNfZnc7CisJ Y29uc3QgY2hhciAqZndfcGF0aCA9IE5VTEw7CisKKwlodWNfZnctPnVjX2RldiA9IGRldjsKKwlo dWNfZnctPnVjX2Z3X3BhdGggPSBOVUxMOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklS TVdBUkVfTk9ORTsKKwlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKKwlo dWNfZnctPmZ3X3R5cGUgPSBVQ19GV19UWVBFX0hVQzsKKworCWlmICghSEFTX0hVQ19VQ09ERShk ZXZfcHJpdikpCisJCXJldHVybjsKKworCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgeworCQlm d19wYXRoID0gSTkxNV9TS0xfSFVDX1VDT0RFOworCQlodWNfZnctPm1ham9yX3Zlcl93YW50ZWQg PSAxOworCQlodWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSA3OworCX0KKworCWlmIChmd19wYXRo ID09IE5VTEwpCisJCXJldHVybjsKKworCWh1Y19mdy0+dWNfZndfcGF0aCA9IGZ3X3BhdGg7CisJ aHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOworCisJRFJNX0RFQlVH X0RSSVZFUigiSHVDIGZpcm13YXJlIHBlbmRpbmcsIHBhdGggJXNcbiIsIGZ3X3BhdGgpOworCisJ aW50ZWxfdWNfZndfZmV0Y2goZGV2LCBodWNfZncpOworfQorCisvKioKKyAqIGludGVsX2h1Y19s b2FkKCkgLSBsb2FkIEh1QyB1Q29kZSB0byBkZXZpY2UKKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNl CisgKgorICogQ2FsbGVkIGZyb20gZ2VtX2luaXRfaHcoKSBkdXJpbmcgZHJpdmVyIGxvYWRpbmcg YW5kIGFsc28gYWZ0ZXIgYSBHUFUgcmVzZXQuCisgKiBCZSBub3RlIHRoYXQgSHVDIGxvYWRpbmcg bXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGluZy4KKyAqCisgKiBUaGUgZmlybXdhcmUgaW1h Z2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZldGNoZWQgaW50byBtZW1vcnkgYnkgdGhlCisg KiBlYXJsaWVyIGNhbGwgdG8gaW50ZWxfaHVjX3Vjb2RlX2luaXQoKSwgc28gaGVyZSB3ZSBuZWVk IG9ubHkgY2hlY2sgdGhhdAorICogaXMgc3VjY2VlZGVkLCBhbmQgdGhlbiB0cmFuc2ZlciB0aGUg aW1hZ2UgdG8gdGhlIGgvdy4KKyAqCisgKiBSZXR1cm46CW5vbi16ZXJvIGNvZGUgb24gZXJyb3IK KyAqLworaW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBp bnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3OworCWludCBlcnI7CisK KwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfTk9ORSkKKwkJcmV0dXJu IDA7CisKKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVz XG4iLAorCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1 Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5s b2FkX3N0YXR1cykpOworCisJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJF X1NVQ0NFU1MgJiYKKwkgICAgaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9GQUlM KQorCQlyZXR1cm4gLUVOT0VYRUM7CisKKwlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdB UkVfUEVORElORzsKKworCXN3aXRjaCAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpIHsKKwljYXNlIFVD X0ZJUk1XQVJFX0ZBSUw6CisJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICovCisJCWVyciA9 IC1FSU87CisJCWdvdG8gZmFpbDsKKworCWNhc2UgVUNfRklSTVdBUkVfTk9ORToKKwljYXNlIFVD X0ZJUk1XQVJFX1BFTkRJTkc6CisJZGVmYXVsdDoKKwkJLyogImNhbid0IGhhcHBlbiIgKi8KKwkJ V0FSTl9PTkNFKDEsICJIdUMgZncgJXMgaW52YWxpZCBmZXRjaF9zdGF0dXMgJXMgWyVkXVxuIiwK KwkJCWh1Y19mdy0+dWNfZndfcGF0aCwKKwkJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19m dy0+ZmV0Y2hfc3RhdHVzKSwKKwkJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzKTsKKwkJZXJyID0gLUVO WElPOworCQlnb3RvIGZhaWw7CisKKwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6CisJCWJyZWFr OworCX0KKworCWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKKwlpZiAoZXJyKQorCQln b3RvIGZhaWw7CisKKwlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsK KworCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIs CisJCWh1Y19mdy0+dWNfZndfcGF0aCwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3 LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRf c3RhdHVzKSk7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwlpZiAoaHVjX2Z3LT5sb2FkX3N0YXR1 cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQorCQlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklS TVdBUkVfRkFJTDsKKworCURSTV9FUlJPUigiRmFpbGVkIHRvIGNvbXBsZXRlIEh1QyB1Q29kZSBs b2FkIHdpdGggcmV0ICVkXG4iLCBlcnIpOworCisJcmV0dXJuIGVycjsKK30KKworLyoqCisgKiBp bnRlbF9odWNfZmluaSgpIC0gY2xlYW4gdXAgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgSHVDCisg KiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhl IGh1YyBmaXJtd2FyZSBHRU0gb2JqLgorICovCit2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5o dWMuaHVjX2Z3OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlmIChodWNf ZnctPnVjX2Z3X29iaikKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmh1Y19mdy0+dWNf Zndfb2JqLT5iYXNlKTsKKwlodWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7CisJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1X QVJFX05PTkU7Cit9Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==