From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v6 3/6] drm/i915/huc: Add HuC fw loading support Date: Tue, 16 Aug 2016 12:17:02 +0100 Message-ID: <1471346225-17078-4-git-send-email-peter.antoine@intel.com> References: <1471346225-17078-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 B24EF6E683 for ; Tue, 16 Aug 2016 11:17:14 +0000 (UTC) In-Reply-To: <1471346225-17078-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 aW5kZXggMzQxMjQxMy4uN2Q2ODNiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTUxLDYgKzUx LDcgQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKIAogIyBnZW5lcmFsLXB1cnBvc2Ug bWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBvcnQKIGk5MTUteSArPSBpbnRlbF9ndWNfbG9hZGVy Lm8gXAorCSAgaW50ZWxfaHVjX2xvYWRlci5vIFwKIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwog CiAjIGF1dG9nZW5lcmF0ZWQgbnVsbCByZW5kZXIgc3RhdGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j CmluZGV4IDEzYWUzNDAuLjQ5OWE2ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNjI4 LDYgKzYyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCSAqIHdvcmtpbmcgaXJxcyBmb3IgZS5nLiBnbWJ1cyBhbmQgZHAgYXV4 IHRyYW5zZmVycy4gKi8KIAlpbnRlbF9tb2Rlc2V0X2luaXQoZGV2KTsKIAorCWludGVsX2h1Y19p bml0KGRldik7CiAJaW50ZWxfZ3VjX2luaXQoZGV2KTsKIAogCXJldCA9IGk5MTVfZ2VtX2luaXQo ZGV2KTsKQEAgLTY1Myw2ICs2NTQsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIGNsZWFudXBfZ2VtOgogCWk5MTVfZ2VtX2Zpbmko ZGV2KTsKIGNsZWFudXBfaXJxOgorCWludGVsX2h1Y19maW5pKGRldik7CiAJaW50ZWxfZ3VjX2Zp bmkoZGV2KTsKIAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwogCWludGVsX3RlYXJkb3duX2dtYnVz KGRldik7CkBAIC0xMzE0LDYgKzEzMTYsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCS8qIEZsdXNoIGFueSBvdXRzdGFuZGluZyB1bnBpbl93b3Jr LiAqLwogCWRyYWluX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwogCisJaW50ZWxfaHVjX2Zpbmko ZGV2KTsKIAlpbnRlbF9ndWNfZmluaShkZXYpOwogCWk5MTVfZ2VtX2ZpbmkoZGV2KTsKIAlpbnRl bF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg MzVjYWE5Yi4uYTYwYjUwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC01NSw2ICs1NSw3 IEBACiAjaW5jbHVkZSAiaW50ZWxfYmlvcy5oIgogI2luY2x1ZGUgImludGVsX2RwbGxfbWdyLmgi CiAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCiAjaW5jbHVk ZSAiaW50ZWxfbHJjLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgogCkBAIC0xNzI3 LDYgKzE3MjgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaW50ZWxf Z3Z0IGd2dDsKIAorCXN0cnVjdCBpbnRlbF9odWMgaHVjOwogCXN0cnVjdCBpbnRlbF9ndWMgZ3Vj OwogCiAJc3RydWN0IGludGVsX2NzciBjc3I7CkBAIC0yODAwLDYgKzI4MDIsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfY21kX3RhYmxlIHsKICNkZWZpbmUgSEFTX0dVQyhkZXYpCQkoSVNfR0VOOShkZXYp KQogI2RlZmluZSBIQVNfR1VDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKICNkZWZpbmUgSEFT X0dVQ19TQ0hFRChkZXYpCShIQVNfR1VDKGRldikpCisjZGVmaW5lIEhBU19IVUNfVUNPREUoZGV2 KQkoSEFTX0dVQyhkZXYpKQogCiAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXYpIChJ U19IQVNXRUxMKGRldikgfHwgXAogCQkJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAppbmRleCBjZjVhNjViLi41MTUzM2YxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApAQCAtNjEsOSArNjEsMTIgQEAKICNkZWZpbmUg ICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAgKDggPDwgMTYpCiAjZGVmaW5lIERNQV9DT1BZX1NJ WkUJCQlfTU1JTygweGMzMTApCiAjZGVmaW5lIERNQV9DVFJMCQkJX01NSU8oMHhjMzE0KQorI2Rl ZmluZSAgIEhVQ19VS0VSTkVMCQkJICAoMTw8OSkKICNkZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8 PDQpCiAjZGVmaW5lICAgU1RBUlRfRE1BCQkJICAoMTw8MCkKICNkZWZpbmUgRE1BX0dVQ19XT1BD TV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkKKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJ CSAgKDA8PDEpCisjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfR1VDCQkgICgxPDwxKQogI2Rl ZmluZSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAwCS8qIDUxMktCICovCiAjZGVm aW5lIEdVQ19NQVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oCmluZGV4IDFmMDE0NzguLmVmZGRhZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o CkBAIC0xNTgsNiArMTU4LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gaW50IGludGVs X2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIGludCBpbnRlbF9n dWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbnRlbF91Y19md19mZXRj aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKK3Uz MiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiAv KiBpOTE1X2d1Y19zdWJtaXNzaW9uLmMgKi8KIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYwppbmRleCA4ODliNDhiLi44NGQ0NmRhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0yODMsNyArMjgzLDggQEAgc3RhdGljIGludCBn dWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCUk5 MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CiAKIAkv KiBGaW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8KLQlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VE X0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpKTsKKwlJOTE1X1dSSVRFKERNQV9DVFJM LCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpIHwKKwkJCV9NQVNLRURf QklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsKIAogCS8qCiAJICogV2FpdCBmb3IgdGhlIERNQSB0 byBjb21wbGV0ZSAmIHRoZSBHdUMgdG8gc3RhcnQgdXAuCkBAIC0zMDgsNyArMzA5LDcgQEAgc3Rh dGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0 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 bmRleCAwMDAwMDAwLi4xYWFmZjY3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt 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+aHVjLmh1Y19mdzsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK Kwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IDA7CisJdTMyIHNpemU7CisJaW50IHJldDsKKworCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctPnVjX2Z3X29iaiwg ZmFsc2UpOworCWlmIChyZXQpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWls ZWQgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwlpZiAoSVNf RVJSKHZtYSkpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxuIiwgKGludClQ VFJfRVJSKHZtYSkpOworCQlyZXR1cm4gUFRSX0VSUih2bWEpOworCX0KKworCS8qIEludmFsaWRh dGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8K KwlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9HVENSX0lOVkFMSURBVEUpOworCisJV0FSTl9P TighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCkpOworCWludGVs X3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qIGlu aXQgV09QQ00gKi8KKwlJOTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpFLCBndWNfd29wY21fc2l6ZShk ZXZfcHJpdikpOworCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9P RkZTRVRfVkFMVUUgfAorCQkJSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKKworCS8qIFNldCB0aGUg c291cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLworCW9mZnNldCA9IGk5MTVfZ2d0dF9vZmZz ZXQodm1hKSArIGh1Y19mdy0+aGVhZGVyX29mZnNldDsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzBf TE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOworCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdI LCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOworCisJLyogSGFyZHdhcmUgZG9lc24n dCBsb29rIGF0IGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIEh1Qy4gU2V0IGl0IHRvIDAsCisJICog YnV0IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4KKwkgKi8KKwlJOTE1 X1dSSVRFKERNQV9BRERSXzFfTE9XLCAwKTsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwg RE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOworCisJc2l6ZSA9IGh1Y19mdy0+aGVhZGVyX3NpemUg KyBodWNfZnctPnVjb2RlX3NpemU7CisJSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBzaXplKTsK KworCS8qIFN0YXJ0IHRoZSBETUEgKi8KKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJ VF9FTkFCTEUoSFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsKKworCS8qIFdhaXQgZm9yIERNQSB0 byBmaW5pc2ggKi8KKwlyZXQgPSB3YWl0X2ZvcigoSTkxNV9SRUFEKERNQV9DVFJMKSAmIFNUQVJU X0RNQSkgPT0gMCwgMTAwKTsKKworCURSTV9ERUJVR19EUklWRVIoIkh1QyBETUEgdHJhbnNmZXIg d2FpdCBvdmVyIHdpdGggcmV0ICVkXG4iLCByZXQpOworCisJaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCisJLyoKKwkgKiBXZSBrZWVwIHRoZSBv YmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4gdW5waW4gaXQK KwkgKiBub3cgdGhhdCBETUEgaGFzIGNvbXBsZXRlZCwgc28gaXQgZG9lc24ndCBjb250aW51ZSB0 byB0YWtlIHVwIHNwYWNlLgorCSAqLworCWk5MTVfdm1hX3VucGluKHZtYSk7CisKKwlyZXR1cm4g cmV0OworfQorCisvKioKKyAqIGludGVsX2h1Y19pbml0KCkgLSBpbml0aWF0ZSBIdUMgZmlybXdh cmUgbG9hZGluZyByZXF1ZXN0CisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxl ZCBlYXJseSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJ1dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQu IFRoZSBsb2FkaW5nCisgKiB3aWxsIGNvbnRpbnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRs eSBzcGVjaWZ5IGZpcm13YXJlIG5hbWUgYW5kIHZlcnNpb24uCisgKiBBbGwgb3RoZXIgY2FzZXMg YXJlIGNvbnNpZGVyZWQgYXMgVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVyBpcyBu b3QKKyAqIGNhcGFibGUgb3IgZHJpdmVyIHlldCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBi ZSBubyBlcnJvciBtZXNzYWdlIGZvcgorICogVUNfRklSTVdBUkVfTk9ORSBjYXNlcy4KKyAqCisg KiBUaGUgRE1BLWNvcHlpbmcgdG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y191Y29k ZV9sb2FkKCkgaXMgY2FsbGVkLgorICovCit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOworCXN0 cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmh1Yy0+aHVjX2Z3OworCWNvbnN0IGNoYXIgKmZ3 X3BhdGggPSBOVUxMOworCisJaHVjX2Z3LT51Y19kZXYgPSBkZXY7CisJaHVjX2Z3LT51Y19md19w YXRoID0gTlVMTDsKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CisJ aHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CisJaHVjX2Z3LT5md190eXBl ID0gVUNfRldfVFlQRV9IVUM7CisKKwlpZiAoIUhBU19IVUNfVUNPREUoZGV2X3ByaXYpKQorCQly ZXR1cm47CisKKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKKwkJZndfcGF0aCA9IEk5MTVf U0tMX0hVQ19VQ09ERTsKKwkJaHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gMTsKKwkJaHVjX2Z3 LT5taW5vcl92ZXJfd2FudGVkID0gNzsKKwl9CisKKwlpZiAoZndfcGF0aCA9PSBOVUxMKQorCQly ZXR1cm47CisKKwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOworCWh1Y19mdy0+ZmV0Y2hf c3RhdHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKKworCURSTV9ERUJVR19EUklWRVIoIkh1QyBm aXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKKworCWludGVsX3VjX2Z3X2Zl dGNoKGRldiwgaHVjX2Z3KTsKK30KKworLyoqCisgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBI dUMgdUNvZGUgdG8gZGV2aWNlCisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxl ZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVy IGEgR1BVIHJlc2V0LgorICogQmUgbm90ZSB0aGF0IEh1QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBi ZWZvcmUgR3VDIGxvYWRpbmcuCisgKgorICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZl IGFscmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVtb3J5IGJ5IHRoZQorICogZWFybGllciBjYWxs IHRvIGludGVsX2h1Y191Y29kZV9pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRo YXQKKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBo L3cuCisgKgorICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVycm9yCisgKi8KK2ludCBpbnRl bF9odWNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1 Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKwlpbnQgZXJyOworCisJaWYgKGh1Y19mdy0+ ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX05PTkUpCisJCXJldHVybiAwOworCisJRFJNX0RF QlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3 LT51Y19md19wYXRoLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0 YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsK KworCWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJ ICAgIGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKKwkJcmV0dXJuIC1F Tk9FWEVDOworCisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CisK Kwlzd2l0Y2ggKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSB7CisJY2FzZSBVQ19GSVJNV0FSRV9GQUlM OgorCQkvKiBzb21ldGhpbmcgd2VudCB3cm9uZyA6KCAqLworCQllcnIgPSAtRUlPOworCQlnb3Rv IGZhaWw7CisKKwljYXNlIFVDX0ZJUk1XQVJFX05PTkU6CisJY2FzZSBVQ19GSVJNV0FSRV9QRU5E SU5HOgorCWRlZmF1bHQ6CisJCS8qICJjYW4ndCBoYXBwZW4iICovCisJCVdBUk5fT05DRSgxLCAi SHVDIGZ3ICVzIGludmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCisJCQlodWNfZnctPnVj X2Z3X3BhdGgsCisJCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1 cyksCisJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7CisJCWVyciA9IC1FTlhJTzsKKwkJZ290byBm YWlsOworCisJY2FzZSBVQ19GSVJNV0FSRV9TVUNDRVNTOgorCQlicmVhazsKKwl9CisKKwllcnIg PSBodWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CisJaWYgKGVycikKKwkJZ290byBmYWlsOworCisJ aHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7CisKKwlEUk1fREVCVUdf RFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAorCQlodWNfZnctPnVj X2Z3X3BhdGgsCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVz KSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOworCisJ cmV0dXJuIDA7CisKK2ZhaWw6CisJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdB UkVfUEVORElORykKKwkJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CisK KwlEUk1fRVJST1IoIkZhaWxlZCB0byBjb21wbGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAl ZFxuIiwgZXJyKTsKKworCXJldHVybiBlcnI7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2Zpbmko KSAtIGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1QworICogQGRldjogdGhlIGRy bSBkZXZpY2UKKyAqCisgKiBDbGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUg R0VNIG9iai4KKyAqLwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK KwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKwor CW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAoaHVjX2Z3LT51Y19md19vYmop CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZodWNfZnctPnVjX2Z3X29iai0+YmFzZSk7 CisJaHVjX2Z3LT51Y19md19vYmogPSBOVUxMOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOworCisJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworfQot LSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=