From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v5 3/6] drm/i915/huc: Add HuC fw loading support Date: Fri, 12 Aug 2016 09:09:52 +0100 Message-ID: <1470989395-32517-4-git-send-email-peter.antoine@intel.com> References: <1470989395-32517-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 485706EAB8 for ; Fri, 12 Aug 2016 08:10:21 +0000 (UTC) In-Reply-To: <1470989395-32517-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 NTogcmViYXNlZCArIGNvbW1lbnQgY2hhbmdlcy4KClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5 dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRv aW5lQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAgMyArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5o ICAgICAgICB8ICA0NCArKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2Fk ZXIuYyB8IDI2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFu Z2VkLCAzMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK aW5kZXggZGRhNzI0Zi4uODU2MTRkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTQ4LDYgKzQ4 LDcgQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKIAogIyBnZW5lcmFsLXB1cnBvc2Ug bWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBvcnQKIGk5MTUteSArPSBpbnRlbF9ndWNfbG9hZGVy Lm8gXAorCSAgaW50ZWxfaHVjX2xvYWRlci5vIFwKIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwog CiAjIGF1dG9nZW5lcmF0ZWQgbnVsbCByZW5kZXIgc3RhdGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j CmluZGV4IDBmY2QxYzAuLmM0MDU5ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNjI4 LDYgKzYyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCSAqIHdvcmtpbmcgaXJxcyBmb3IgZS5nLiBnbWJ1cyBhbmQgZHAgYXV4 IHRyYW5zZmVycy4gKi8KIAlpbnRlbF9tb2Rlc2V0X2luaXQoZGV2KTsKIAorCWludGVsX2h1Y19p bml0KGRldik7CiAJaW50ZWxfZ3VjX2luaXQoZGV2KTsKIAogCXJldCA9IGk5MTVfZ2VtX2luaXQo ZGV2KTsKQEAgLTY1Myw2ICs2NTQsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIGNsZWFudXBfZ2VtOgogCWk5MTVfZ2VtX2Zpbmko ZGV2KTsKIGNsZWFudXBfaXJxOgorCWludGVsX2h1Y19maW5pKGRldik7CiAJaW50ZWxfZ3VjX2Zp bmkoZGV2KTsKIAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwogCWludGVsX3RlYXJkb3duX2dtYnVz KGRldik7CkBAIC0xMzEyLDYgKzEzMTQsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCS8qIEZsdXNoIGFueSBvdXRzdGFuZGluZyB1bnBpbl93b3Jr LiAqLwogCWRyYWluX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwogCisJaW50ZWxfaHVjX2Zpbmko ZGV2KTsKIAlpbnRlbF9ndWNfZmluaShkZXYpOwogCWk5MTVfZ2VtX2ZpbmkoZGV2KTsKIAlpbnRl bF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg Nzk3MWM3Ni4uYzE2YjhiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC01NSw2ICs1NSw3 IEBACiAjaW5jbHVkZSAiaW50ZWxfYmlvcy5oIgogI2luY2x1ZGUgImludGVsX2RwbGxfbWdyLmgi CiAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCiAjaW5jbHVk ZSAiaW50ZWxfbHJjLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgogCkBAIC0xNzIz LDYgKzE3MjQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaW50ZWxf Z3Z0IGd2dDsKIAorCXN0cnVjdCBpbnRlbF9odWMgaHVjOwogCXN0cnVjdCBpbnRlbF9ndWMgZ3Vj OwogCiAJc3RydWN0IGludGVsX2NzciBjc3I7CkBAIC0yNzg0LDYgKzI3ODYsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfY21kX3RhYmxlIHsKICNkZWZpbmUgSEFTX0dVQyhkZXYpCQkoSVNfR0VOOShkZXYp KQogI2RlZmluZSBIQVNfR1VDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKICNkZWZpbmUgSEFT X0dVQ19TQ0hFRChkZXYpCShIQVNfR1VDKGRldikpCisjZGVmaW5lIEhBU19IVUNfVUNPREUoZGV2 KQkoSEFTX0dVQyhkZXYpKQogCiAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXYpIChJ U19IQVNXRUxMKGRldikgfHwgXAogCQkJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAppbmRleCBjZjVhNjViLi41MTUzM2YxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApAQCAtNjEsOSArNjEsMTIgQEAKICNkZWZpbmUg ICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAgKDggPDwgMTYpCiAjZGVmaW5lIERNQV9DT1BZX1NJ WkUJCQlfTU1JTygweGMzMTApCiAjZGVmaW5lIERNQV9DVFJMCQkJX01NSU8oMHhjMzE0KQorI2Rl ZmluZSAgIEhVQ19VS0VSTkVMCQkJICAoMTw8OSkKICNkZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8 PDQpCiAjZGVmaW5lICAgU1RBUlRfRE1BCQkJICAoMTw8MCkKICNkZWZpbmUgRE1BX0dVQ19XT1BD TV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkKKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJ CSAgKDA8PDEpCisjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfR1VDCQkgICgxPDwxKQogI2Rl ZmluZSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAwCS8qIDUxMktCICovCiAjZGVm aW5lIEdVQ19NQVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oCmluZGV4IGRkZmQ1YjcuLjE0YjNjYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o CkBAIC0xNTksNiArMTU5LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gaW50IGludGVs X2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIGludCBpbnRlbF9n dWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbnRlbF91Y19md19mZXRj aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKK3Uz MiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiAv KiBpOTE1X2d1Y19zdWJtaXNzaW9uLmMgKi8KIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYwppbmRleCBjNGZkODI4Li5lYjc0MDU1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0yODQsNyArMjg0LDggQEAgc3RhdGljIGludCBn dWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCUk5 MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CiAKIAkv KiBGaW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8KLQlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VE X0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpKTsKKwlJOTE1X1dSSVRFKERNQV9DVFJM LCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpIHwKKwkJCV9NQVNLRURf QklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsKIAogCS8qCiAJICogV2FpdCBmb3IgdGhlIERNQSB0 byBjb21wbGV0ZSAmIHRoZSBHdUMgdG8gc3RhcnQgdXAuCkBAIC0zMDksNyArMzEwLDcgQEAgc3Rh dGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQordTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAl1MzIgd29wY21fc2l6ZSA9IEdVQ19XT1BD TV9UT1A7CiAKQEAgLTQ5MCw2ICs0OTEsNyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCQlnb3RvIGZhaWw7CiAJCX0KIAorCQlpbnRlbF9odWNfbG9hZChk ZXYpOwogCQllcnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAJCWlmICghZXJyKQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjk0NmNhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQg 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 OworCitleHRlcm4gdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK K2V4dGVybiBpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRl cm4gdm9pZCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2 b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5kaWYKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hMjkxNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJp Z2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisg KiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4K KyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2h1Yy5oIgorCisvKioKKyAq IERPQzogSHVDIEZpcm13YXJlCisgKgorICogTW90aXZhdGlvbjoKKyAqIEdFTjkgaW50cm9kdWNl cyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhpZ2gK KyAqIEVmZmljaWVuY3kgVmlkZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2FuIHVz ZSB0aGUgZmlybXdhcmUKKyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNv bW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCisgKgorICogSW1wbGVtZW50YXRpb246CisgKiBPbiBz dXBwb3J0ZWQgcGxhdGZvcm1zLCBpOTE1J3Mgam9iIGlzIHRvIGxvYWQgdGhlIGZpcm13YXJlIHN0 b3JlZCBvbiB0aGUKKyAqIGZpbGUgc3lzdGVtIGFuZCBhc3Npc3Qgd2l0aCBhdXRoZW50aWNhdGlv bi4gSXQgaXMgdXAgdG8gdXNlcnNwYWNlIHRvCisgKiBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIEh1 QyBzdXBwb3J0IG9uIGEgcGxhdGZvcm0sIG9uIHRoZWlyIG93bi4KKyAqIEZvciBkZWJ1Z2dpbmcs IGk5MTUgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGZpbGUsIGk5MTVfaHVjX2xvYWRfc3RhdHVzX2luZm8K KyAqIHdoaWNoIGRpc3BsYXlzIHRoZSBmaXJtd2FyZSBsb2FkIHN0YXR1cy4KKyAqCisgKiBUaGUg c2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZCBhcyB0aGUgR3VDLiBGaXJtd2FyZSAqIGJpbmFy eSBpcyBmZXRjaGVkIGJ5CisgKiB0aGUgbG9hZGVyIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGRy aXZlciBpbml0IHByb2Nlc3MuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKKyAqIGxvYWRpbmcgdG8gSFcg aXMgZGVmZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCisgKgorICogTm90 ZSB0aGF0IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRp bmcuCisgKi8KKworI2RlZmluZSBJOTE1X1NLTF9IVUNfVUNPREUgImk5MTUvc2tsX2h1Y192ZXIw MV8wN18xMzk4LmJpbiIKK01PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOworCisv KioKKyAqIGludGVsX2h1Y19sb2FkX3Vjb2RlKCkgLSBETUEncyB0aGUgZmlybXdhcmUKKyAqIEBk ZXY6IHRoZSBkcm0gZGV2aWNlCisgKgorICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgZ2VtIG9i amVjdCBjb250YWluaW5nIHRoZSBmaXJtd2FyZSwgc2V0cyB1cCB0aGUgRE1BCisgKiBlbmdpbmUg TU1JTywgdHJpZ2dlcnMgdGhlIERNQSBvcGVyYXRpb24gYW5kIHdhaXRzIGZvciBpdCB0byBmaW5p c2guCisgKgorICogVHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0 aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3Ms IG5vbi16ZXJvIG9uIGZhaWx1cmUKKyAqLworCitzdGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9 IDA7CisJdTMyIHNpemU7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRf dG9fZ3R0X2RvbWFpbihodWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJ RFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7CisJCXJldHVy biByZXQ7CisJfQorCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGh1Y19mdy0+dWNf Zndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERUJVR19EUklWRVIo InBpbiBmYWlsZWQgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogSW52YWxp ZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAq LworCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CisKKwlXQVJO X09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KSk7CisJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCisJLyog aW5pdCBXT1BDTSAqLworCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1Y193b3BjbV9zaXpl KGRldl9wcml2KSk7CisJSTkxNV9XUklURShETUFfR1VDX1dPUENNX09GRlNFVCwgR1VDX1dPUENN X09GRlNFVF9WQUxVRSB8CisJCQlIVUNfTE9BRElOR19BR0VOVF9HVUMpOworCisJLyogU2V0IHRo ZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIHVDb2RlICovCisJb2Zmc2V0ID0gaTkxNV9nZW1fb2Jq X2dndHRfb2Zmc2V0KGh1Y19mdy0+dWNfZndfb2JqKSArCisJCQlodWNfZnctPmhlYWRlcl9vZmZz ZXQ7CisJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsK KwlJOTE1X1dSSVRFKERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZzZXQpICYgMHhG RkZGKTsKKworCS8qIEhhcmR3YXJlIGRvZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNz IGZvciBIdUMuIFNldCBpdCB0byAwLAorCSAqIGJ1dCBzdGlsbCBwcm9ncmFtIHRoZSBjb3JyZWN0 IGFkZHJlc3Mgc3BhY2UuCisJICovCisJSTkxNV9XUklURShETUFfQUREUl8xX0xPVywgMCk7CisJ STkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKKwor CXNpemUgPSBodWNfZnctPmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOworCUk5MTVf V1JJVEUoRE1BX0NPUFlfU0laRSwgc2l6ZSk7CisKKwkvKiBTdGFydCB0aGUgRE1BICovCisJSTkx NV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwgU1RBUlRf RE1BKSk7CisKKwkvKiBXYWl0IGZvciBETUEgdG8gZmluaXNoICovCisJcmV0ID0gd2FpdF9mb3Io KEk5MTVfUkVBRChETUFfQ1RSTCkgJiBTVEFSVF9ETUEpID09IDAsIDEwMCk7CisKKwlEUk1fREVC VUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0 KTsKKworCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxM KTsKKworCS8qCisJICogV2Uga2VlcCB0aGUgb2JqZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcg cmVzdW1lLiBCdXQgd2UgY2FuIHVucGluIGl0CisJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0 ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4KKwkgKi8KKwlpOTE1 X2dlbV9vYmplY3RfZ2d0dF91bnBpbihodWNfZnctPnVjX2Z3X29iaik7CisKKwlyZXR1cm4gcmV0 OworfQorCisvKioKKyAqIGludGVsX2h1Y19pbml0KCkgLSBpbml0aWF0ZSBIdUMgZmlybXdhcmUg bG9hZGluZyByZXF1ZXN0CisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxlZCBl YXJseSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJ1dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQuIFRo ZSBsb2FkaW5nCisgKiB3aWxsIGNvbnRpbnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBz cGVjaWZ5IGZpcm13YXJlIG5hbWUgYW5kIHZlcnNpb24uCisgKiBBbGwgb3RoZXIgY2FzZXMgYXJl IGNvbnNpZGVyZWQgYXMgVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVyBpcyBub3QK KyAqIGNhcGFibGUgb3IgZHJpdmVyIHlldCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBu byBlcnJvciBtZXNzYWdlIGZvcgorICogVUNfRklSTVdBUkVfTk9ORSBjYXNlcy4KKyAqCisgKiBU aGUgRE1BLWNvcHlpbmcgdG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y191Y29kZV9s b2FkKCkgaXMgY2FsbGVkLgorICovCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOworCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOworCXN0cnVj dCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmh1Yy0+aHVjX2Z3OworCWNvbnN0IGNoYXIgKmZ3X3Bh dGggPSBOVUxMOworCisJaHVjX2Z3LT51Y19kZXYgPSBkZXY7CisJaHVjX2Z3LT51Y19md19wYXRo ID0gTlVMTDsKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CisJaHVj X2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3LT5md190eXBlID0g VUNfRldfVFlQRV9IVUM7CisKKwlpZiAoIUhBU19IVUNfVUNPREUoZGV2X3ByaXYpKQorCQlyZXR1 cm47CisKKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKKwkJZndfcGF0aCA9IEk5MTVfU0tM X0hVQ19VQ09ERTsKKwkJaHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gMTsKKwkJaHVjX2Z3LT5t aW5vcl92ZXJfd2FudGVkID0gNzsKKwl9CisKKwlpZiAoZndfcGF0aCA9PSBOVUxMKQorCQlyZXR1 cm47CisKKwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOworCWh1Y19mdy0+ZmV0Y2hfc3Rh dHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKKworCURSTV9ERUJVR19EUklWRVIoIkh1QyBmaXJt d2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKKworCWludGVsX3VjX2Z3X2ZldGNo KGRldiwgaHVjX2Z3KTsKK30KKworLyoqCisgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMg dUNvZGUgdG8gZGV2aWNlCisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxlZCBm cm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVyIGEg R1BVIHJlc2V0LgorICogQmUgbm90ZSB0aGF0IEh1QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZv cmUgR3VDIGxvYWRpbmcuCisgKgorICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFs cmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVtb3J5IGJ5IHRoZQorICogZWFybGllciBjYWxsIHRv IGludGVsX2h1Y191Y29kZV9pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRoYXQK KyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBoL3cu CisgKgorICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVycm9yCisgKi8KK2ludCBpbnRlbF9o dWNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19m dyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKwlpbnQgZXJyOworCisJaWYgKGh1Y19mdy0+ZmV0 Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX05PTkUpCisJCXJldHVybiAwOworCisJRFJNX0RFQlVH X0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT51 Y19md19wYXRoLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1 cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKwor CWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJICAg IGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKKwkJcmV0dXJuIC1FTk9F WEVDOworCisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlz d2l0Y2ggKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSB7CisJY2FzZSBVQ19GSVJNV0FSRV9GQUlMOgor CQkvKiBzb21ldGhpbmcgd2VudCB3cm9uZyA6KCAqLworCQllcnIgPSAtRUlPOworCQlnb3RvIGZh aWw7CisKKwljYXNlIFVDX0ZJUk1XQVJFX05PTkU6CisJY2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5H OgorCWRlZmF1bHQ6CisJCS8qICJjYW4ndCBoYXBwZW4iICovCisJCVdBUk5fT05DRSgxLCAiSHVD IGZ3ICVzIGludmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCisJCQlodWNfZnctPnVjX2Z3 X3BhdGgsCisJCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyks CisJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7CisJCWVyciA9IC1FTlhJTzsKKwkJZ290byBmYWls OworCisJY2FzZSBVQ19GSVJNV0FSRV9TVUNDRVNTOgorCQlicmVhazsKKwl9CisKKwllcnIgPSBo dWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CisJaWYgKGVycikKKwkJZ290byBmYWlsOworCisJaHVj X2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7CisKKwlEUk1fREVCVUdfRFJJ VkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAorCQlodWNfZnctPnVjX2Z3 X3BhdGgsCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwK KwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOworCisJcmV0 dXJuIDA7CisKK2ZhaWw6CisJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVf UEVORElORykKKwkJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CisKKwlE Uk1fRVJST1IoIkZhaWxlZCB0byBjb21wbGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxu IiwgZXJyKTsKKworCXJldHVybiBlcnI7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2ZpbmkoKSAt IGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1QworICogQGRldjogdGhlIGRybSBk ZXZpY2UKKyAqCisgKiBDbGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUgR0VN IG9iai4KKyAqLwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlz dHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKworCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAoaHVjX2Z3LT51Y19md19vYmopCisJ CWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZodWNfZnctPnVjX2Z3X29iai0+YmFzZSk7CisJ aHVjX2Z3LT51Y19md19vYmogPSBOVUxMOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOworCisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworfQotLSAK MS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=