From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v7 3/6] drm/i915/huc: Add HuC fw loading support Date: Fri, 2 Sep 2016 09:08:41 +0100 Message-ID: <1472803724-11803-4-git-send-email-peter.antoine@intel.com> References: <1472803724-11803-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 324336EA2B for ; Fri, 2 Sep 2016 08:08:54 +0000 (UTC) In-Reply-To: <1472803724-11803-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: Alex Dai List-Id: intel-gfx@lists.freedesktop.org VGhlIEh1QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZSBpbnRlbF91Y19m d19mZXRjaCgpCmlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCgpIdUMgbG9hZGluZyBuZWVkcyB0byBi ZSBiZWZvcmUgR3VDIGxvYWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nIG11c3QKYmUgZG9uZSBlYXJs eSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KCnYyOiByZWJhc2VkIG9uLXRvcCBvZiBkcm0t aW50ZWwtbmlnaHRseS4KICAgIHJlbW92ZWQgaWYoSEFTX0dVQygpKSBiZWZvcmUgdGhlIGd1YyBj YWxsLiAoRC5Hb3Jkb24pCiAgICB1cGRhdGUgaHVjX3ZlcnNpb24gbnVtYmVyIG9mIGZvcm1hdC4K djM6IHJlYmFzZWQgdG8gZHJtLWludGVsLW5pZ2h0bHksIGNoYW5nZWQgdGhlIGZpbGUgbmFtZSBm b3JtYXQgdG8KICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLgogICAgQ2hhbmdl ZCBkZXYtPmRldl9wcml2YXRlIHRvIHRvX2k5MTUoKQp2NDogbW92ZWQgZnVuY3Rpb24gYmFjayB0 byB3aGVyZSBpdCB3YXMuCiAgICBjaGFuZ2Ugd2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgp2 NTogcmViYXNlZCArIGNvbW1lbnQgY2hhbmdlcy4Kdjc6IHJlYmFzZWQuCgpTaWduZWQtb2ZmLWJ5 OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2lu ZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2 aWQucy5nb3Jkb25AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl ICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAg ICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAz ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oICAgICB8ICAgMyArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaCAgICAgICAgfCAgNDQgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWNfbG9hZGVyLmMgfCAyNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDggZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCmluZGV4IGE3ZGEyNDYuLjJjOGZmZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CkBAIC01Miw2ICs1Miw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCiAKICMgZ2Vu ZXJhbC1wdXJwb3NlIG1pY3JvY29udHJvbGxlciAoR3VDKSBzdXBwb3J0CiBpOTE1LXkgKz0gaW50 ZWxfZ3VjX2xvYWRlci5vIFwKKwkgIGludGVsX2h1Y19sb2FkZXIubyBcCiAJICBpOTE1X2d1Y19z dWJtaXNzaW9uLm8KIAogIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwppbmRleCA0N2ZlMDcyLi5jMjg1ZTU1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKQEAgLTYzNyw2ICs2MzcsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiB3b3JraW5nIGlycXMgZm9yIGUuZy4gZ21i dXMgYW5kIGRwIGF1eCB0cmFuc2ZlcnMuICovCiAJaW50ZWxfbW9kZXNldF9pbml0KGRldik7CiAK KwlpbnRlbF9odWNfaW5pdChkZXYpOwogCWludGVsX2d1Y19pbml0KGRldik7CiAKIAlyZXQgPSBp OTE1X2dlbV9pbml0KGRldik7CkBAIC02NjIsNiArNjYzLDcgQEAgc3RhdGljIGludCBpOTE1X2xv YWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiBjbGVhbnVwX2dlbToKIAlp OTE1X2dlbV9maW5pKGRldik7CiBjbGVhbnVwX2lycToKKwlpbnRlbF9odWNfZmluaShkZXYpOwog CWludGVsX2d1Y19maW5pKGRldik7CiAJZHJtX2lycV91bmluc3RhbGwoZGV2KTsKIAlpbnRlbF90 ZWFyZG93bl9nbWJ1cyhkZXYpOwpAQCAtMTMzMiw2ICsxMzM0LDcgQEAgdm9pZCBpOTE1X2RyaXZl cl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRp bmcgdW5waW5fd29yay4gKi8KIAlkcmFpbl93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKIAorCWlu dGVsX2h1Y19maW5pKGRldik7CiAJaW50ZWxfZ3VjX2ZpbmkoZGV2KTsKIAlpOTE1X2dlbV9maW5p KGRldik7CiAJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCmluZGV4IDQzZDUyOTguLmNjMzFhMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApA QCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgImludGVsX2Jpb3MuaCIKICNpbmNsdWRlICJpbnRl bF9kcGxsX21nci5oIgogI2luY2x1ZGUgImludGVsX2d1Yy5oIgorI2luY2x1ZGUgImludGVsX2h1 Yy5oIgogI2luY2x1ZGUgImludGVsX2xyYy5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIu aCIKIApAQCAtMTczOCw2ICsxNzM5LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJ c3RydWN0IGludGVsX2d2dCBndnQ7CiAKKwlzdHJ1Y3QgaW50ZWxfaHVjIGh1YzsKIAlzdHJ1Y3Qg aW50ZWxfZ3VjIGd1YzsKIAogCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwpAQCAtMjc5OCw2ICsyODAw LDcgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAjZGVmaW5lIEhBU19HVUMoZGV2KQkJ KElTX0dFTjkoZGV2KSkKICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXYpCShIQVNfR1VDKGRldikp CiAjZGVmaW5lIEhBU19HVUNfU0NIRUQoZGV2KQkoSEFTX0dVQyhkZXYpKQorI2RlZmluZSBIQVNf SFVDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKIAogI2RlZmluZSBIQVNfUkVTT1VSQ0VfU1RS RUFNRVIoZGV2KSAoSVNfSEFTV0VMTChkZXYpIHx8IFwKIAkJCQkgICAgSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gOCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3Jl Zy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKaW5kZXggY2Y1YTY1Yi4u NTE1MzNmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKQEAgLTYxLDkgKzYxLDEy IEBACiAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2KQogI2RlZmlu ZSBETUFfQ09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQogI2RlZmluZSBETUFfQ1RSTAkJCV9NTUlP KDB4YzMxNCkKKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCiAjZGVmaW5lICAgVU9T X01PVkUJCQkgICgxPDw0KQogI2RlZmluZSAgIFNUQVJUX0RNQQkJCSAgKDE8PDApCiAjZGVmaW5l IERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCisjZGVmaW5lICAgSFVDX0xPQURJ TkdfQUdFTlRfVkNSCQkgICgwPDwxKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX0dVQwkJ ICAoMTw8MSkKICNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1 MTJLQiAqLwogI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNFNCkKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWMuaAppbmRleCAxZjAxNDc4Li5lZmRkYWVkIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWMuaApAQCAtMTU4LDYgKzE1OCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICppbnRl bF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwogZXh0 ZXJuIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVy biBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaW50 ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3VjX2Z3 ICp1Y19mdyk7Cit1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKIAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQgaTkxNV9ndWNfc3Vi bWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggYzExMGQ1MS4uODM0MDczZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtMjgzLDcgKzI4Myw4IEBA IHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0Vf V09QQ00pOwogCiAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCi0JSTkxNV9XUklURShETUFf Q1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSk7CisJSTkxNV9X UklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSB8 CisJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7CiAKIAkvKgogCSAqIFdhaXQg Zm9yIHRoZSBETUEgdG8gY29tcGxldGUgJiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgpAQCAtMzA4LDcg KzMwOSw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdTMyIGd1Y193b3Bj bV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3UzMiBndWNfd29wY21f c2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIHdvcGNtX3Np emUgPSBHVUNfV09QQ01fVE9QOwogCkBAIC00OTAsNiArNDkxLDcgQEAgaW50IGludGVsX2d1Y19z ZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJZ290byBmYWlsOwogCQl9CiAKKwkJaW50 ZWxfaHVjX2xvYWQoZGV2KTsKIAkJZXJyID0gZ3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwogCQlp ZiAoIWVycikKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDZjYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2lmbmRlZiBfSU5URUxfSFVDX0hfCisjZGVm aW5lIF9JTlRFTF9IVUNfSF8KKworI2luY2x1ZGUgImludGVsX2d1Yy5oIgorCisjZGVmaW5lIEhV Q19TVEFUVVMyCQlfTU1JTygweEQzQjApCisjZGVmaW5lICAgSFVDX0ZXX1ZFUklGSUVECSgxPDw3 KQorCitzdHJ1Y3QgaW50ZWxfaHVjIHsKKwkvKiBHZW5lcmljIHVDIGZpcm13YXJlIG1hbmFnZW1l bnQgKi8KKwlzdHJ1Y3QgaW50ZWxfdWNfZncgaHVjX2Z3OworCisJLyogSHVDLXNwZWNpZmljIGFk ZGl0aW9ucyAqLworfTsKKworZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CitleHRlcm4gaW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOworZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7CitleHRlcm4gdm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK KworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9h ZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhZmY2NwotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwpAQCAtMCwwICsxLDI2OCBAQAor LyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4 L2Zpcm13YXJlLmg+CisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9odWMu aCIKKworLyoqCisgKiBET0M6IEh1QyBGaXJtd2FyZQorICoKKyAqIE1vdGl2YXRpb246CisgKiBH RU45IGludHJvZHVjZXMgYSBuZXcgZGVkaWNhdGVkIGZpcm13YXJlIGZvciB1c2FnZSBpbiBtZWRp YSBIRVZDIChIaWdoCisgKiBFZmZpY2llbmN5IFZpZGVvIENvZGluZykgb3BlcmF0aW9ucy4gVXNl cnNwYWNlIGNhbiB1c2UgdGhlIGZpcm13YXJlCisgKiBjYXBhYmlsaXRpZXMgYnkgYWRkaW5nIEh1 QyBzcGVjaWZpYyBjb21tYW5kcyB0byBiYXRjaCBidWZmZXJzLgorICoKKyAqIEltcGxlbWVudGF0 aW9uOgorICogT24gc3VwcG9ydGVkIHBsYXRmb3JtcywgaTkxNSdzIGpvYiBpcyB0byBsb2FkIHRo ZSBmaXJtd2FyZSBzdG9yZWQgb24gdGhlCisgKiBmaWxlIHN5c3RlbSBhbmQgYXNzaXN0IHdpdGgg YXV0aGVudGljYXRpb24uIEl0IGlzIHVwIHRvIHVzZXJzcGFjZSB0bworICogZGV0ZWN0IHRoZSBw cmVzZW5jZSBvZiBIdUMgc3VwcG9ydCBvbiBhIHBsYXRmb3JtLCBvbiB0aGVpciBvd24uCisgKiBG b3IgZGVidWdnaW5nLCBpOTE1IHByb3ZpZGVzIGEgZGVidWdmcyBmaWxlLCBpOTE1X2h1Y19sb2Fk X3N0YXR1c19pbmZvCisgKiB3aGljaCBkaXNwbGF5cyB0aGUgZmlybXdhcmUgbG9hZCBzdGF0dXMu CisgKgorICogVGhlIHNhbWUgZmlybXdhcmUgbG9hZGVyIGlzIHVzZWQgYXMgdGhlIEd1Qy4gRmly bXdhcmUgKiBiaW5hcnkgaXMgZmV0Y2hlZCBieQorICogdGhlIGxvYWRlciBhc3luY2hyb25vdXNs eSBmcm9tIHRoZSBkcml2ZXIgaW5pdCBwcm9jZXNzLiBIb3dldmVyLCB0aGUgYWN0dWFsCisgKiBs b2FkaW5nIHRvIEhXIGlzIGRlZmVycmVkIHVudGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25l LgorICoKKyAqIE5vdGUgdGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVm b3JlIEd1QyBsb2FkaW5nLgorICovCisKKyNkZWZpbmUgSTkxNV9TS0xfSFVDX1VDT0RFICJpOTE1 L3NrbF9odWNfdmVyMDFfMDdfMTM5OC5iaW4iCitNT0RVTEVfRklSTVdBUkUoSTkxNV9TS0xfSFVD X1VDT0RFKTsKKworLyoqCisgKiBpbnRlbF9odWNfbG9hZF91Y29kZSgpIC0gRE1BJ3MgdGhlIGZp cm13YXJlCisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gdGFr ZXMgdGhlIGdlbSBvYmplY3QgY29udGFpbmluZyB0aGUgZmlybXdhcmUsIHNldHMgdXAgdGhlIERN QQorICogZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBETUEgb3BlcmF0aW9uIGFuZCB3YWl0cyBm b3IgaXQgdG8gZmluaXNoLgorICoKKyAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBS QU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9sbGVyLgorICoKKyAqIFJldHVybjog MCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlCisgKi8KKworc3RhdGljIGludCBodWNf dWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0 IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7CisJc3RydWN0IGk5 MTVfdm1hICp2bWE7CisJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOworCXUzMiBzaXplOworCWlu dCByZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oaHVjX2Z3 LT51Y19md19vYmosIGZhbHNlKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERUJVR19EUklWRVIoInNl dC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXZtYSA9 IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWNfZnctPnVjX2Z3X29iaiwgTlVMTCwgMCwgMCwg MCk7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQg JWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwl9CisK KwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBkYXRl cyB0byBHVFQuICovCisJSTkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRF KTsKKworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXgpKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FM TCk7CisKKwkvKiBpbml0IFdPUENNICovCisJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgZ3Vj X3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKKwlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01fT0ZGU0VU LCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHwKKwkJCUhVQ19MT0FESU5HX0FHRU5UX0dVQyk7CisK KwkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNvZGUgKi8KKwlvZmZzZXQgPSBp OTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBodWNfZnctPmhlYWRlcl9vZmZzZXQ7CisJSTkxNV9XUklU RShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlJOTE1X1dSSVRFKERN QV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZzZXQpICYgMHhGRkZGKTsKKworCS8qIEhh cmR3YXJlIGRvZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBIdUMuIFNldCBp dCB0byAwLAorCSAqIGJ1dCBzdGlsbCBwcm9ncmFtIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2Uu CisJICovCisJSTkxNV9XUklURShETUFfQUREUl8xX0xPVywgMCk7CisJSTkxNV9XUklURShETUFf QUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKKworCXNpemUgPSBodWNfZnct PmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOworCUk5MTVfV1JJVEUoRE1BX0NPUFlf U0laRSwgc2l6ZSk7CisKKwkvKiBTdGFydCB0aGUgRE1BICovCisJSTkxNV9XUklURShETUFfQ1RS TCwgX01BU0tFRF9CSVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwgU1RBUlRfRE1BKSk7CisKKwkvKiBX YWl0IGZvciBETUEgdG8gZmluaXNoICovCisJcmV0ID0gd2FpdF9mb3IoKEk5MTVfUkVBRChETUFf Q1RSTCkgJiBTVEFSVF9ETUEpID09IDAsIDEwMCk7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMg RE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsKKworCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qCisJICog V2Uga2VlcCB0aGUgb2JqZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQgd2Ug Y2FuIHVucGluIGl0CisJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNu J3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4KKwkgKi8KKwlpOTE1X3ZtYV91bnBpbih2bWEp OworCisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBpbnRlbF9odWNfaW5pdCgpIC0gaW5pdGlh dGUgSHVDIGZpcm13YXJlIGxvYWRpbmcgcmVxdWVzdAorICogQGRldjogdGhlIGRybSBkZXZpY2UK KyAqCisgKiBDYWxsZWQgZWFybHkgZHVyaW5nIGRyaXZlciBsb2FkLCBidXQgYWZ0ZXIgR0VNIGlz IGluaXRpYWxpc2VkLiBUaGUgbG9hZGluZworICogd2lsbCBjb250aW51ZSBvbmx5IHdoZW4gZHJp dmVyIGV4cGxpY2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZCB2ZXJzaW9uLgorICogQWxs IG90aGVyIGNhc2VzIGFyZSBjb25zaWRlcmVkIGFzIFVDX0ZJUk1XQVJFX05PTkUgZWl0aGVyIGJl Y2F1c2UgSFcgaXMgbm90CisgKiBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5k IHRoZXJlIHdpbGwgYmUgbm8gZXJyb3IgbWVzc2FnZSBmb3IKKyAqIFVDX0ZJUk1XQVJFX05PTkUg Y2FzZXMuCisgKgorICogVGhlIERNQS1jb3B5aW5nIHRvIEhXIGlzIGRvbmUgbGF0ZXIgd2hlbiBp bnRlbF9odWNfdWNvZGVfbG9hZCgpIGlzIGNhbGxlZC4KKyAqLwordm9pZCBpbnRlbF9odWNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3By aXYtPmh1YzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmh1Y19mdzsKKwlj b25zdCBjaGFyICpmd19wYXRoID0gTlVMTDsKKworCWh1Y19mdy0+dWNfZGV2ID0gZGV2OworCWh1 Y19mdy0+dWNfZndfcGF0aCA9IE5VTEw7CisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9OT05FOworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworCWh1 Y19mdy0+ZndfdHlwZSA9IFVDX0ZXX1RZUEVfSFVDOworCisJaWYgKCFIQVNfSFVDX1VDT0RFKGRl dl9wcml2KSkKKwkJcmV0dXJuOworCisJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CisJCWZ3 X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7CisJCWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9 IDE7CisJCWh1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IDc7CisJfQorCisJaWYgKGZ3X3BhdGgg PT0gTlVMTCkKKwkJcmV0dXJuOworCisJaHVjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlo dWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlEUk1fREVCVUdf RFJJVkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7CisKKwlp bnRlbF91Y19md19mZXRjaChkZXYsIGh1Y19mdyk7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2xv YWQoKSAtIGxvYWQgSHVDIHVDb2RlIHRvIGRldmljZQorICogQGRldjogdGhlIGRybSBkZXZpY2UK KyAqCisgKiBDYWxsZWQgZnJvbSBnZW1faW5pdF9odygpIGR1cmluZyBkcml2ZXIgbG9hZGluZyBh bmQgYWxzbyBhZnRlciBhIEdQVSByZXNldC4KKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBt dXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgorICoKKyAqIFRoZSBmaXJtd2FyZSBpbWFn ZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gZmV0Y2hlZCBpbnRvIG1lbW9yeSBieSB0aGUKKyAq IGVhcmxpZXIgY2FsbCB0byBpbnRlbF9odWNfdWNvZGVfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQg b25seSBjaGVjayB0aGF0CisgKiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRyYW5zZmVyIHRoZSBp bWFnZSB0byB0aGUgaC93LgorICoKKyAqIFJldHVybjoJbm9uLXplcm8gY29kZSBvbiBlcnJvcgor ICovCitpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGlu dGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7CisJaW50IGVycjsKKwor CWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9OT05FKQorCQlyZXR1cm4g MDsKKworCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNc biIsCisJCWh1Y19mdy0+dWNfZndfcGF0aCwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVj X2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxv YWRfc3RhdHVzKSk7CisKKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdBUkVf U1VDQ0VTUyAmJgorCSAgICBodWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwp CisJCXJldHVybiAtRU5PRVhFQzsKKworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FS RV9QRU5ESU5HOworCisJc3dpdGNoIChodWNfZnctPmZldGNoX3N0YXR1cykgeworCWNhc2UgVUNf RklSTVdBUkVfRkFJTDoKKwkJLyogc29tZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KKwkJZXJyID0g LUVJTzsKKwkJZ290byBmYWlsOworCisJY2FzZSBVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgVUNf RklSTVdBUkVfUEVORElORzoKKwlkZWZhdWx0OgorCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLworCQlX QVJOX09OQ0UoMSwgIkh1QyBmdyAlcyBpbnZhbGlkIGZldGNoX3N0YXR1cyAlcyBbJWRdXG4iLAor CQkJaHVjX2Z3LT51Y19md19wYXRoLAorCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3 LT5mZXRjaF9zdGF0dXMpLAorCQkJaHVjX2Z3LT5mZXRjaF9zdGF0dXMpOworCQllcnIgPSAtRU5Y SU87CisJCWdvdG8gZmFpbDsKKworCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwkJYnJlYWs7 CisJfQorCisJZXJyID0gaHVjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOworCWlmIChlcnIpCisJCWdv dG8gZmFpbDsKKworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOwor CisJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwK KwkJaHVjX2Z3LT51Y19md19wYXRoLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnct PmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9z dGF0dXMpKTsKKworCXJldHVybiAwOworCitmYWlsOgorCWlmIChodWNfZnctPmxvYWRfc3RhdHVz ID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9GQUlMOworCisJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY29tcGxldGUgSHVDIHVDb2RlIGxv YWQgd2l0aCByZXQgJWRcbiIsIGVycik7CisKKwlyZXR1cm4gZXJyOworfQorCisvKioKKyAqIGlu dGVsX2h1Y19maW5pKCkgLSBjbGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKKyAq IEBkZXY6IHRoZSBkcm0gZGV2aWNlCisgKgorICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2luZyB0aGUg aHVjIGZpcm13YXJlIEdFTSBvYmouCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1 Yy5odWNfZnc7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKGh1Y19m dy0+dWNfZndfb2JqKQorCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaHVjX2Z3LT51Y19m d19vYmotPmJhc2UpOworCWh1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKKwltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKKworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdB UkVfTk9ORTsKK30KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK