From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: =?utf-8?q?=5BPATCH_05/15=5D_drm/i915=3A_GuC-specific_?= =?utf-8?q?firmware_loader?= Date: Mon, 15 Jun 2015 19:36:23 +0100 Message-ID: <1434393394-21002-6-git-send-email-david.s.gordon@intel.com> References: <1434393394-21002-1-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 2B51F6E893 for ; Mon, 15 Jun 2015 11:38:04 -0700 (PDT) In-Reply-To: <1434393394-21002-1-git-send-email-david.s.gordon@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 RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpUaGlzIHVzZXMgdGhlIHVuaWZpZWQg ZmlybXdhcmUgbG9hZGVyIHRvIGZldGNoIHRoZSBmaXJtd2FyZSBpbWFnZSwKdGhlbiBsb2FkcyBp dCBpbnRvIHRoZSBHdUMncyBtZW1vcnkgdmlhIGEgZGVkaWNhdGVkIERNQSBlbmdpbmUuCgpUaGlz IHBhdGNoIGlzIGRlcml2ZWQgZnJvbSBHdUMgbG9hZGluZyB3b3JrIG9yaWdpbmFsbHkgZG9uZSBi eQpWaW5pdCBBemFkIGFuZCBCZW4gV2lkYXdza3kuIEl0IGhhcyBiZWVuIHJlY29uc3RydWN0ZWQg dG8gYWNjb3JkCndpdGggdGhlIHVuaWZpZWQgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20gYnkg RGF2ZSBHb3Jkb24gYXMgd2VsbAphcyBuZXcgZmlybXdhcmUgbGF5b3V0IGV0Yy4KCklzc3VlOiBW SVotNDg4NApTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgICAzICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAxMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jICAgICAgICAgfCAgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o ICAgICAgICB8ICAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j IHwgIDQxNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQs IDQ0MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA2MDdmYTJhLi4x NTgxOGRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNDEsNiArNDEsOSBAQCBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXAogIyBnZW5lcmljIGFuY2lsbGlhcnkgbWljcm9jb250cm9sbGVy IHN1cHBvcnQKIGk5MTUteSArPSBpbnRlbF91Y19sb2FkZXIubwogCisjIGdlbmVyYWwtcHVycG9z ZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3VwcG9ydAoraTkxNS15ICs9IGludGVsX2d1Y19sb2Fk ZXIubworCiAjIGF1dG9nZW5lcmF0ZWQgbnVsbCByZW5kZXIgc3RhdGUKIGk5MTUteSArPSBpbnRl bF9yZW5kZXJzdGF0ZV9nZW42Lm8gXAogCSAgaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5vIFwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IDM0MjQ4NjMuLjAyOGRiZmYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kbWEuYwpAQCAtNDY1LDYgKzQ2NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVz ZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiBjbGVhbnVwX2dlbToKIAltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaW50ZWxfZ3VjX3Vjb2RlX2ZpbmkoZGV2KTsKIAlp OTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKIAlpOTE1X2dlbV9jb250ZXh0X2Zpbmko ZGV2KTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKQEAgLTg2Miw2ICs4NjMs OCBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBsb25nIGZsYWdzKQogCiAJaW50ZWxfdW5jb3JlX2luaXQoZGV2KTsKIAorCWludGVsX2d1Y191 Y29kZV9pbml0KGRldik7CisKIAkvKiBMb2FkIENTUiBGaXJtd2FyZSBmb3IgU0tMICovCiAJaW50 ZWxfY3NyX3Vjb2RlX2luaXQoZGV2KTsKIApAQCAtMTExMyw2ICsxMTE2LDcgQEAgaW50IGk5MTVf ZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWZsdXNoX3dvcmtxdWV1ZShk ZXZfcHJpdi0+d3EpOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWludGVs X2d1Y191Y29kZV9maW5pKGRldik7CiAJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7 CiAJaTkxNV9nZW1fY29udGV4dF9maW5pKGRldik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA3MzFhMWM4Li5mNDdjZGU3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxsaW51 eC9pbnRlbC1pb21tdS5oPgogI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KICNpbmNsdWRlIDxsaW51 eC9wbV9xb3MuaD4KKyNpbmNsdWRlICJpbnRlbF9ndWMuaCIKIAogLyogR2VuZXJhbCBjdXN0b21p emF0aW9uOgogICovCkBAIC0xNjY5LDYgKzE2NzAsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7CiAKIAlzdHJ1Y3QgaW50ZWxfZ21idXMgZ21idXNbR01CVVNfTlVNX1BJTlNdOwogCisJc3Ry dWN0IGludGVsX2d1YyBndWM7CisKIAkvKiogZ21idXNfbXV0ZXggcHJvdGVjdHMgYWdhaW5zdCBj b25jdXJyZW50IHVzYWdlIG9mIHRoZSBzaW5nbGUgaHcgZ21idXMKIAkgKiBjb250cm9sbGVyIG9u IGRpZmZlcmVudCBpMmMgYnVzZXMuICovCiAJc3RydWN0IG11dGV4IGdtYnVzX211dGV4OwpAQCAt MTkxMyw2ICsxOTE2LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl90b19pOTE1KHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gdG9faTkxNShkZXZfZ2V0 X2RydmRhdGEoZGV2KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmd1Y190b19pOTE1KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlyZXR1cm4gY29udGFp bmVyX29mKGd1Yywgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIGd1Yyk7Cit9CisKIC8qIEl0ZXJh dGUgb3ZlciBpbml0aWFsaXNlZCByaW5ncyAqLwogI2RlZmluZSBmb3JfZWFjaF9yaW5nKHJpbmdf XywgZGV2X3ByaXZfXywgaV9fKSBcCiAJZm9yICgoaV9fKSA9IDA7IChpX18pIDwgSTkxNV9OVU1f UklOR1M7IChpX18pKyspIFwKQEAgLTI1MDMsNiArMjUxMSw5IEBAIHN0cnVjdCBkcm1faTkxNV9j bWRfdGFibGUgewogCiAjZGVmaW5lIEhBU19DU1IoZGV2KQkoSVNfU0tZTEFLRShkZXYpKQogCisj ZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2KQkoSVNfR0VOOShkZXYpKQorI2RlZmluZSBIQVNfR1VD X1NDSEVEKGRldikJKElTX0dFTjkoZGV2KSkKKwogI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lE X01BU0sJCTB4ZmYwMAogI2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNi MDAKICNkZWZpbmUgSU5URUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQRQkJMHgxYzAwCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwppbmRleCA3NWQ2M2MyLi5jZDRhODY1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKQEAgLTUwMjMsNiArNTAyMyw4IEBAIGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7CiAJfQogCisJ LyogV2UgY2FuJ3QgZW5hYmxlIGNvbnRleHRzIHVudGlsIGFsbCBmaXJtd2FyZSBpcyBsb2FkZWQg Ki8KKwlyZXQgPSBpbnRlbF9ndWNfdWNvZGVfbG9hZChkZXYsIGZhbHNlKTsKIAlyZXQgPSBpOTE1 X2dlbV9jb250ZXh0X2VuYWJsZShkZXZfcHJpdik7CiAJaWYgKHJldCAmJiByZXQgIT0gLUVJTykg ewogCQlEUk1fRVJST1IoIkNvbnRleHQgZW5hYmxlIGZhaWxlZCAlZFxuIiwgcmV0KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKaW5kZXggODIzNjdjOS4uMGI0NDI2NSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmgKQEAgLTE2Niw0ICsxNjYsOSBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKICNkZWZp bmUgR1VDX1dEX1ZFQ1NfSUVSCQkweEM1NTgKICNkZWZpbmUgR1VDX1BNX1AyNENfSUVSCQkweEM1 NUMKIAorLyogaW50ZWxfZ3VjX2xvYWRlci5jICovCitleHRlcm4gdm9pZCBpbnRlbF9ndWNfdWNv ZGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiBpbnQgaW50ZWxfZ3VjX3Vj b2RlX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCB3YWl0KTsKK2V4dGVybiB2b2lk IGludGVsX2d1Y191Y29kZV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCiAjZW5kaWYK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4xNmVlZjRjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0wLDAgKzEsNDE2IEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIFZpbml0IEF6YWQg PHZpbml0LmF6YWRAaW50ZWwuY29tPgorICogICAgQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2su bmV0PgorICogICAgRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KKyAqICAg IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdh cmUuaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2d1Yy5oIgorCisv KioKKyAqIERPQzogR3VDCisgKgorICogaW50ZWxfZ3VjOgorICogVG9wIGxldmVsIHN0cnVjdHVy ZSBvZiBndWMuIEl0IGhhbmRsZXMgZmlybXdhcmUgbG9hZGluZyBhbmQgbWFuYWdlcyBjbGllbnQK KyAqIHBvb2wgYW5kIGRvb3JiZWxscy4gaW50ZWxfZ3VjIG93bnMgYSBpOTE1X2d1Y19jbGllbnQg dG8gcmVwbGFjZSB0aGUgbGVnYWN5CisgKiBFeGVjTGlzdCBzdWJtaXNzaW9uLgorICoKKyAqIEZp cm13YXJlIHZlcnNpb25pbmc6CisgKiBUaGUgZmlybXdhcmUgYnVpbGQgcHJvY2VzcyB3aWxsIGdl bmVyYXRlIGEgdmVyc2lvbiBoZWFkZXIgZmlsZSB3aXRoIG1ham9yIGFuZAorICogbWlub3IgdmVy c2lvbiBkZWZpbmVkLiBUaGUgdmVyc2lvbnMgYXJlIGJ1aWx0IGludG8gQ1NTIGhlYWRlciBvZiBm aXJtd2FyZS4KKyAqIGk5MTUga2VybmVsIGRyaXZlciBzZXQgdGhlIG1pbmltYWwgZmlybXdhcmUg dmVyc2lvbiByZXF1aXJlZCBwZXIgcGxhdGZvcm0uCisgKiBUaGUgZmlybXdhcmUgaW5zdGFsbGF0 aW9uIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIChzeW1ib2xpYyBsaW5rKSBwcm9wZXIgdmVyc2lvbgor ICogb2YgZmlybXdhcmUuCisgKgorICogR3VDIGFkZHJlc3Mgc3BhY2U6CisgKiBHdUMgZG9lcyBu b3QgYWxsb3cgYW55IGdmeCBHR1RUIGFkZHJlc3MgdGhhdCBmYWxscyBpbnRvIHJhbmdlIFswLCBX T1BDTV9UT1ApLAorICogd2hpY2ggaXMgcmVzZXJ2ZWQgZm9yIEJvb3QgUk9NLCBTUkFNIGFuZCBX T1BDTS4gQ3VycmVudGx5IHRoaXMgdG9wIGFkZHJlc3MgaXMKKyAqIDUxMksuIEluIG9yZGVyIHRv IGV4Y2x1ZGUgMC01MTJLIGFkZHJlc3Mgc3BhY2UgZnJvbSBHR1RULCBhbGwgZ2Z4IG9iamVjdHMK KyAqIHVzZWQgYnkgR3VDIGlzIHBpbm5lZCB3aXRoIFBJTl9PRkZTRVRfQklBUyBhbG9uZyB3aXRo IHNpemUgb2YgV09QQ00uCisgKgorICogRmlybXdhcmUgbG9nOgorICogRmlybXdhcmUgbG9nIGlz IGVuYWJsZWQgYnkgc2V0dGluZyBpOTE1Lmd1Y19sb2dfbGV2ZWwgdG8gbm9uLW5lZ2F0aXZlIGxl dmVsLgorICogTG9nIGRhdGEgaXMgcHJpbnRlZCBvdXQgdmlhIHJlYWRpbmcgZGVidWdmcyBpOTE1 X2d1Y19sb2dfZHVtcC4gUmVhZGluZyBmcm9tCisgKiBpOTE1X2d1Y19sb2FkX3N0YXR1cyB3aWxs IHByaW50IG91dCBmaXJtd2FyZSBsb2FkaW5nIHN0YXR1cyBhbmQgc2NyYXRjaAorICogcmVnaXN0 ZXJzIHZhbHVlLgorICoKKyAqLworCisjZGVmaW5lIEk5MTVfU0tMX0dVQ19VQ09ERSAiaTkxNS9z a2xfZ3VjX3ZlcjMuYmluIgorTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0dVQ19VQ09ERSk7CisK K3N0YXRpYyB1MzIgZ2V0X2d0dHlwZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCS8qIFhY WDogR1QgdHlwZSBiYXNlZCBvbiBQQ0kgZGV2aWNlIElEPyBmaWVsZCBzZWVtcyB1bnVzZWQgYnkg ZncgKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHUzMiBnZXRfY29yZV9mYW1pbHkoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+Z2VuKSB7CisJ Y2FzZSA4OgorCQlyZXR1cm4gR0ZYQ09SRV9GQU1JTFlfR0VOODsKKwljYXNlIDk6CisJCXJldHVy biBHRlhDT1JFX0ZBTUlMWV9HRU45OworCWRlZmF1bHQ6CisJCURSTV9FUlJPUigiR1VDOiB1bmtu b3duIGdlbiBmb3Igc2NoZWR1bGVyIGluaXRcbiIpOworCQlyZXR1cm4gR0ZYQ09SRV9GQU1JTFlf Rk9SQ0VfVUxPTkc7CisJfQorfQorCitzdGF0aWMgdm9pZCBzZXRfZ3VjX2luaXRfcGFyYW1zKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMgPSAmZGV2X3ByaXYtPmd1YzsKKwl1MzIgcGFyYW1zW0dVQ19DVExfTUFYX0RXT1JEU107CisJ aW50IGk7CisKKwltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCisJcGFyYW1z W0dVQ19DVExfREVWSUNFX0lORk9dIHw9CisJCShnZXRfZ3R0eXBlKGRldl9wcml2LT5kZXYpIDw8 IEdVQ19DVExfR1RUWVBFX1NISUZUKSB8CisJCShnZXRfY29yZV9mYW1pbHkoZGV2X3ByaXYtPmRl dikgPDwgR1VDX0NUTF9DT1JFRkFNSUxZX1NISUZUKTsKKworCS8qIEd1QyBBUkFUIGluY3JlbWVu dCBpcyAxMCBucy4gR3VDIGRlZmF1bHQgc2NoZWR1bGVyIHF1YW50dW0gaXMgb25lCisJICogc2Vj b25kLiBUaGlzIEFSQVIgaXMgY2FsY3VsYXRlZCBieToKKwkgKiBTY2hlZHVsZXItUXVhbnR1bS1p bi1ucyAvIEFSQVQtaW5jcmVtZW50LWluLW5zID0gMTAwMDAwMDAwMCAvIDEwCisJICovCisJcGFy YW1zW0dVQ19DVExfQVJBVF9ISUdIXSA9IDA7CisJcGFyYW1zW0dVQ19DVExfQVJBVF9MT1ddID0g MTAwMDAwMDAwOworCisJcGFyYW1zW0dVQ19DVExfV0FdIHw9IEdVQ19DVExfV0FfVUtfQllfRFJJ VkVSOworCisJcGFyYW1zW0dVQ19DVExfRkVBVFVSRV0gfD0gR1VDX0NUTF9ESVNBQkxFX1NDSEVE VUxFUiB8CisJCQlHVUNfQ1RMX1ZDUzJfRU5BQkxFRDsKKworCWlmIChpOTE1Lmd1Y19sb2dfbGV2 ZWwgPj0gMCkgeworCQlwYXJhbXNbR1VDX0NUTF9MT0dfUEFSQU1TXSA9IGd1Yy0+bG9nX2ZsYWdz OworCQlwYXJhbXNbR1VDX0NUTF9ERUJVR10gPQorCQkJaTkxNS5ndWNfbG9nX2xldmVsIDw8IEdV Q19MT0dfVkVSQk9TSVRZX1NISUZUOworCX0KKworCUk5MTVfV1JJVEUoU09GVF9TQ1JBVENIKDAp LCAwKTsKKworCWZvciAoaSA9IDA7IGkgPCBHVUNfQ1RMX01BWF9EV09SRFM7IGkrKykKKwkJSTkx NV9XUklURShTT0ZUX1NDUkFUQ0goMSArIGkpLCBwYXJhbXNbaV0pOworfQorCisvKiBSZWFkIEd1 QyBzdGF0dXMgcmVnaXN0ZXIgKEdVQ19TVEFUVVMpCisgKiBSZXR1cm4gdHJ1ZSBpZiBnZXQgYSBz dWNjZXNzIGNvZGUgZnJvbSBub3JtYWwgYm9vdCBvciBSQzYgYm9vdAorICovCitzdGF0aWMgaW5s aW5lIGJvb2wgaTkxNV9ndWNfZ2V0X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCisJCQkJCXUzMiAqc3RhdHVzKQoreworCSpzdGF0dXMgPSBJOTE1X1JFQUQoR1VDX1NU QVRVUyk7CisJcmV0dXJuICgoKCpzdGF0dXMpICYgR1NfVUtFUk5FTF9NQVNLKSA9PSBHU19VS0VS TkVMX1JFQURZIHx8CisJCSgoKnN0YXR1cykgJiBHU19VS0VSTkVMX01BU0spID09IEdTX1VLRVJO RUxfTEFQSUNfRE9ORSk7Cit9CisKKy8qIFRyYW5zZmVycyB0aGUgZmlybXdhcmUgaW1hZ2UgdG8g UkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxlci4KKyAqCisgKiBHdUMgRmly bXdhcmUgbGF5b3V0OgorICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0t CisgKiB8ICAgICAgICAgIENTUyBoZWFkZXIgICAgICAgICAgIHwgIDEyOEIKKyAqICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQorICogfCAgICAgICAgICAgICB1Q29kZSAg ICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0K KyAqIHwgICAgICAgICBSU0Egc2lnbmF0dXJlICAgICAgICAgfCAgMjU2QgorICogKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCisgKiB8ICAgICAgICAgUlNBIHB1YmxpYyBL ZXkgICAgICAgIHwgIDI1NkIKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAg LS0tLQorICogfCAgICAgICBQdWJsaWMga2V5IG1vZHVsdXMgICAgICB8ICAgIDRCCisgKiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KKyAqCisgKiBBcmNoaXRlY3R1cmFs bHksIHRoZSBETUEgZW5naW5lIGlzIGJpZGlyZWN0aW9uYWwsIGFuZCBpbiBjYW4gcG90ZW50aWFs bHkKKyAqIGV2ZW4gdHJhbnNmZXIgYmV0d2VlbiBHVFQgbG9jYXRpb25zLiBUaGlzIGZ1bmN0aW9u YWxpdHkgaXMgbGVmdCBvdXQgb2YgdGhlCisgKiBBUEkgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyBu ZWVkIGZvciBpdC4KKyAqCisgKiBCZSBub3RlIHRoYXQgR3VDIG5lZWQgdGhlIENTUyBoZWFkZXIg cGx1cyB1S2VybmVsIGNvZGUgdG8gYmUgY29waWVkIGFzIG9uZQorICogY2h1bmsgb2YgZGF0YS4g UlNBIHNpZyBkYXRhIGlzIGxvYWRlZCB2aWEgTU1JTy4KKyAqLworc3RhdGljIGludCBndWNfdWNv ZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVj dCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpmd19vYmogPSBndWNfZnctPnVjX2Z3X29iajsKKwl1bnNpZ25l ZCBsb25nIG9mZnNldDsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gZndfb2JqLT5wYWdlczsKKwl1 MzIgc3RhdHVzLCB1Y29kZV9zaXplLCByc2FbVU9TX1JTQV9TSUdfU0laRSAvIHNpemVvZih1MzIp XTsKKwlpbnQgaSwgcmV0ID0gMDsKKworCS8qIHVDb2RlIHNpemUsIGFsc28gaXMgd2hlcmUgUlNB IHNpZ25hdHVyZSBzdGFydHMgKi8KKwlvZmZzZXQgPSB1Y29kZV9zaXplID0gZ3VjX2Z3LT51Y19m d19zaXplIC0gVU9TX0NTU19TSUdOSU5HX1NJWkU7CisKKwkvKiBDb3B5IFJTQSBzaWduYXR1cmUg ZnJvbSB0aGUgZncgaW1hZ2UgdG8gSFcgZm9yIHZlcmlmaWNhdGlvbiAqLworCXNnX3Bjb3B5X3Rv X2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsIHJzYSwgVU9TX1JTQV9TSUdfU0laRSwgb2Zmc2V0 KTsKKwlmb3IgKGkgPSAwOyBpIDwgVU9TX1JTQV9TSUdfU0laRSAvIHNpemVvZih1MzIpOyBpKysp CisJCUk5MTVfV1JJVEUoVU9TX1JTQV9TQ1JBVENIXzAgKyBpICogc2l6ZW9mKHUzMiksIHJzYVtp XSk7CisKKwkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3IGJsb2IgKi8KKwlv ZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZndfb2JqKTsKKwlJOTE1X1dSSVRFKERN QV9BRERSXzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOworCUk5MTVfV1JJVEUoRE1BX0FE RFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOworCisJLyogU2V0IHRo ZSBkZXN0aW5hdGlvbi4gQ3VycmVudCB1Q29kZSBleHBlY3RzIGFuIDhrIHN0YWNrIHN0YXJ0aW5n IGZyb20KKwkgKiBvZmZzZXQgMC4gKi8KKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfTE9XLCAweDIw MDApOworCisJLyogWFhYOiBUaGUgaW1hZ2UgaXMgYXV0b21hdGljYWxseSB0cmFuc2ZlcmVkIHRv IFNSQU0gYWZ0ZXIgdGhlIFJTQQorCSAqIHZlcmlmaWNhdGlvbi4gVGhpcyBpcyB3aHkgdGhlIGFk ZHJlc3Mgc3BhY2UgaXMgY2hvc2VuIGFzIHN1Y2guICovCisJSTkxNV9XUklURShETUFfQUREUl8x X0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKKworCUk5MTVfV1JJVEUoRE1BX0NPUFlf U0laRSwgdWNvZGVfc2l6ZSk7CisKKwkvKiBGaW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8KKwlJOTE1 X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEp KTsKKworCS8qCisJICogU3Bpbi13YWl0IGZvciB0aGUgRE1BIHRvIGNvbXBsZXRlICYgdGhlIEd1 QyB0byBzdGFydCB1cC4KKwkgKiBOQjogRG9jcyByZWNvbW1lbmQgbm90IHVzaW5nIHRoZSBpbnRl cnJ1cHQgZm9yIGNvbXBsZXRpb24uCisJICogRklYTUU6IHdoYXQncyBhIHZhbGlkIHRpbWVvdXQ/ CisJICovCisJcmV0ID0gd2FpdF9mb3JfYXRvbWljKGk5MTVfZ3VjX2dldF9zdGF0dXMoZGV2X3By aXYsICZzdGF0dXMpLCAxMCk7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJETUEgc3RhdHVzID0gMHgl eCwgR3VDIHN0YXR1cyAweCV4XG4iLAorCQkJSTkxNV9SRUFEKERNQV9DVFJMKSwgc3RhdHVzKTsK KworCWlmICgoc3RhdHVzICYgR1NfQk9PVFJPTV9NQVNLKSA9PSBHU19CT09UUk9NX1JTQV9GQUlM RUQpIHsKKwkJRFJNX0VSUk9SKCIlcyBmaXJtd2FyZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZh aWxlZFxuIiwKKwkJCWd1Y19mdy0+dWNfbmFtZSk7CisJCXJldCA9IC1FTk9FWEVDOworCX0KKwor CURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBsb2FkIHN0YXR1cyAlcyAlZFxuIiwKKwkJCXJldCA/ ICJGQUlMIiA6ICJTVUNDRVNTIiwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBM b2FkcyB0aGUgR3VDIGZpcm13YXJlIGJsb2IgaW4gdG8gdGhlIE1pbnV0ZUlBLgorICovCitzdGF0 aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlib29sIHBpbm5l ZCA9IGZhbHNlOworCWludCByZXQ7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+ c3RydWN0X211dGV4KSk7CisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZP UkNFV0FLRV9BTEwpOworCisJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGd1Y19mdy0+dWNf Zndfb2JqLCAwLCAwKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKwlwaW5uZWQgPSB0cnVlOwor CisJLyogaW5pdCBXT1BDTSAqLworCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIEdVQ19XT1BD TV9TSVpFX1ZBTFVFKTsKKwlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULCBHVUNfV09Q Q01fT0ZGU0VUKTsKKworCS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhl IGxhdGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8KKwlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9H VENSX0lOVkFMSURBVEUpOworCisJLyogU2V0IE1NSU8vV0EgZm9yIEd1QyBpbml0ICovCisJSTkx NV9XUklURShEUkJNSVNDMSwgRE9PUkJFTExfRU5BQkxFKTsKKworCS8qIEVuYWJsZSBNSUEgY2Fj aGluZy4gR3VDIGNsb2NrIGdhdGluZyBpcyBkaXNhYmxlZC4gKi8KKwlJOTE1X1dSSVRFKEdVQ19T SElNX0NPTlRST0wsIEdVQ19TSElNX0NPTlRST0xfVkFMVUUpOworCisJLyogV2FDNkRpc2FsbG93 QnlHZnhQYXVzZSovCisJSTkxNV9XUklURShHRU42X0dGWFBBVVNFLCAweDMwRkZGKTsKKworCWlm IChJU19TS1lMQUtFKGRldikpCisJCUk5MTVfV1JJVEUoR0VOOV9HVF9QTV9DT05GSUcsIEdFTjhf R1RfRE9PUkJFTExfRU5BQkxFKTsKKwllbHNlCisJCUk5MTVfV1JJVEUoR0VOOF9HVF9QTV9DT05G SUcsIEdFTjhfR1RfRE9PUkJFTExfRU5BQkxFKTsKKworCWlmIChJU19HRU45KGRldikpIHsKKwkJ LyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBjbG9ja3MgKi8KKwkJSTkxNV9XUklU RShHRU43X01JU0NDUENUTCwgKEdFTjhfRE9QX0NMT0NLX0dBVEVfR1VDX0VOQUJMRSB8CisJCQkJ CSAgICBJOTE1X1JFQUQoR0VON19NSVNDQ1BDVEwpKSk7CisKKwkJLyogYWxsb3dzIGZvciA1dXMg YmVmb3JlIEdUIGNhbiBnbyB0byBSQzYgKi8KKwkJSTkxNV9XUklURShHVUNfQVJBVF9DNkRJUywg MHgxRkYpOworCX0KKworCXNldF9ndWNfaW5pdF9wYXJhbXMoZGV2X3ByaXYpOworCisJcmV0ID0g Z3VjX3Vjb2RlX3hmZXJfZG1hKGRldl9wcml2KTsKKworCS8qIFdlIGNhbiBmcmVlIHRoZSBvYmpl Y3QgcGFnZXMgbm93LCBhbmQgd2Ugd291bGQsIGV4Y2VwdCB3ZSBtaWdodCBhcworCSAqIHdlbGwg a2VlcCBpdCBhcm91bmQgZm9yIHN1c3BlbmQvcmVzdW1lLiBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQg Zm9yIHRoZQorCSAqIERNQSB0byBjb21wbGV0ZSwgYW5kIHVucGluIHRoZSBvYmplY3QKKwkgKi8K Kworb3V0OgorCWlmIChwaW5uZWQpCisJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGd1Y19m dy0+dWNfZndfb2JqKTsKKwllbHNlCisJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRc biIsIHJldCk7CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VX QUtFX0FMTCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogQ2hlY2sgdGhlIGZpcm13YXJl IHRoYXQgd2FzIGZvdW5kOyBpZiBpdCdzIHRoZSB3cm9uZyBzaXplIG9yIHRoZSB3cm9uZworICog dmVyc2lvbiwgcmV0dXJuIEZBTFNFLiBJZiBpdCdzIE9LLCBzYXZlIHRoZSBkYXRhIGluIGEgR0VN IG9iamVjdCBhbmQKKyAqIHJldHVybiBUUlVFLgorICoKKyAqIFRoZSBHdUMgZmlybXdhcmUgaW1h Z2UgaGFzIHRoZSB2ZXJzaW9uIG51bWJlciBlbWJlZGRlZCBhdCBhIHdlbGwta25vd24KKyAqIG9m ZnNldCB3aXRoaW4gdGhlIGZpcm13YXJlIGJsb2I7IG5vdGUgdGhhdCBtYWpvciAvIG1pbm9yIHZl cnNpb24gYXJlCisgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9p bnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKKyAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCku CisgKi8KK3N0YXRpYyBib29sCitndWNfdWNvZGVfY2hlY2soc3RydWN0IGludGVsX3VjX2Z3ICpn dWNfZncpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gY29udGFpbmVyX29mKGd1Y19mdywg c3RydWN0IGludGVsX2d1YywgZ3VjX2Z3KTsKKwljb25zdCB1OCAqY3NzX2hlYWRlciA9IGd1Y19m dy0+dWNfZndfYmxvYi0+ZGF0YSArIFVPU19DU1NfSEVBREVSX09GRlNFVDsKKwl1aW50MzJfdCBt YWpvciwgbWlub3I7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSBmaWxlIHNpemUgJXp1 IChtaW5pbXVtICV1KVxuIiwKKwkJZ3VjX2Z3LT51Y19md19ibG9iLT5zaXplLCBVT1NfQ1NTX1NJ R05JTkdfU0laRSk7CisKKwkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBmaXJzdCAqLwor CWlmIChndWNfZnctPnVjX2Z3X2Jsb2ItPnNpemUgPD0gVU9TX0NTU19TSUdOSU5HX1NJWkUpCisJ CXJldHVybiBmYWxzZTsKKworCW1ham9yID0gKih1MTYgKikoY3NzX2hlYWRlciArIFVPU19WRVJf TUFKT1JfT0ZGU0VUKTsKKwltaW5vciA9ICoodTE2ICopKGNzc19oZWFkZXIgKyBVT1NfVkVSX01J Tk9SX09GRlNFVCk7CisKKwlpZiAobWFqb3IgIT0gZ3VjLT5md192ZXJfbWFqb3IgfHwgbWlub3Ig PCBndWMtPmZ3X3Zlcl9taW5vcikgeworCQlEUk1fRVJST1IoIkd1QyBmaXJtd2FyZSB2ZXJzaW9u ICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKKwkJCSBtYWpvciwgbWlub3IsIGd1Yy0+ZndfdmVy X21ham9yLCBndWMtPmZ3X3Zlcl9taW5vcik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlEUk1f REVCVUdfRFJJVkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVkLiVkIE9LIChtaW5pbXVtICVkLiVkKVxu IiwKKwkJIG1ham9yLCBtaW5vciwgZ3VjLT5md192ZXJfbWFqb3IsIGd1Yy0+ZndfdmVyX21pbm9y KTsKKworCS8qIE92ZXJyaWRlIGRlZmF1bHQgR0VNIG9iamVjdCBhbGxvY2F0aW9uLWFuZC1zYXZl IGhlcmUsIGlmIG5lZWRlZCAqLworCXJldHVybiB0cnVlOworfQorCisvKioKKyAqIGludGVsX2d1 Y191Y29kZV9pbml0KCkgLSBpbml0aWF0ZSBhIGZpcm13YXJlIGxvYWRpbmcgcmVxdWVzdAorICoK KyAqIENhbGxlZCBlYXJseSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJlZm9yZSBHRU0gaXMgaW5pdGlh bGlzZWQuCisgKiBEcml2ZXIgaXMgc2luZ2xlIHRocmVhZGVkLCBzbyBubyBtdXRleCBpcyByZXF1 aXJlZC4KKyAqLwordm9pZCBpbnRlbF9ndWNfdWNvZGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7CisJc3RydWN0 IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZ3VjLT5ndWNfZnc7CisJY29uc3QgY2hhciAqcGF0aDsK KworCWlmICghSEFTX0dVQ19TQ0hFRChkZXYpKQorCQlpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lv biA9IGZhbHNlOworCisJaWYgKCFIQVNfR1VDX1VDT0RFKGRldikpIHsKKwkJcGF0aCA9IE5VTEw7 CisJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldikpIHsKKwkJcGF0aCA9IEk5MTVfU0tMX0dVQ19V Q09ERTsKKwkJZ3VjLT5md192ZXJfbWFqb3IgPSAzOworCQlndWMtPmZ3X3Zlcl9taW5vciA9IDA7 CisJfSBlbHNlIHsKKwkJaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPSBmYWxzZTsKKwkJcGF0 aCA9ICIiOwkvKiB1bmtub3duIGRldmljZSAqLworCX0KKworCWludGVsX3VjX2Z3X2luaXQoZGV2 LCBndWNfZncsICJHdUMiLCBwYXRoKTsKK30KKworLyoqCisgKiBpbnRlbF9ndWNfdWNvZGVfbG9h ZCgpIC0gbG9hZCBHdUMgdUNvZGUgaW50byB0aGUgZGV2aWNlCisgKgorICogQ2FsbGVkIGZyb20g Z2VtX2luaXRfaHcoKSBkdXJpbmcgZHJpdmVyIGxvYWRpbmcgYW5kIGFsc28gYWZ0ZXIgYSBHUFUg cmVzZXQuCisgKiBDaGVja3MgdGhhdCB0aGUgZmlybXdhcmUgZmV0Y2hpbmcgcHJvY2VzcyBoYXMg c3VjY2VlZGVkLCBhbmQgaWYgc28gdHJhbnNmZXJzCisgKiB0aGUgbG9hZGVkIGltYWdlIHRvIHRo ZSBoYXJkd2FyZS4KKyAqCisgKiBIb3dldmVyLCB0aGVyZSBhcmUgYSBmZXcgY2hlY2tzIHRvIGRv IGZpcnN0LiBUaGUgdmVyeSBmaXJzdCBjYWxsIHNob3VsZCBoYXZlCisgKiAod2FpdCA9PSBGQUxT RSksIGJ1dCB0aGUgZmV0Y2hfc3RhdGUgd2lsbCBzdGlsbCBiZSBQRU5ESU5HIGFzIHRoZSBmaXJt d2FyZSBtYXkKKyAqIG5vdCBiZSBhdmFpbGFibGUgdGhhdCBlYXJseS4gVGhlcmVmb3JlLCBvbiB0 aGlzIGZpcnN0IGNhbGwsIHdlIGp1c3QgcmV0dXJuLgorICoKKyAqIFRoZSBzZWNvbmQgY2FsbCBz aG91bGQgY29tZSBmcm9tIHRoZSBmaXJzdCBvcGVuIG9mIHRoZSBkZXZpY2UgKHdhaXQgPT0gVFJV RSkuCisgKiBUaGlzIGlzIGEgZ29vZCB0aW1lIHRvIGxvYWQgdGhlIGZpcm13YXJlIGludG8gdGhl IGRldmljZSwgYXMgYnkgdGhpcyBwb2ludCBpdAorICogbXVzdCBiZSBhdmFpbGFibGUuCisgKgor ICogQW55IHN1YnNlcXVlbnQgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGhhdmUgd2FpdCA9PSBGQUxT RSwgYW5kIGluZGljYXRlIHRoYXQgdGhlCisgKiBoYXJkd2FyZSBoYXMgYmVlbiByZXNldCBhbmQg c28gdGhlIGZpcm13YXJlIHNob3VsZCBiZSByZWxvYWRlZC4KKyAqLworaW50IGludGVsX2d1Y191 Y29kZV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgd2FpdCkKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBp bnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCWludCBlcnI7CisK KwlEUk1fREVCVUdfRFJJVkVSKCJHdUM6IHdhaXQgJWQsIGZldGNoIHN0YXR1cyAlZCwgbG9hZCBz dGF0dXMgJWRcbiIsCisJCXdhaXQsIGd1Y19mdy0+dWNfZndfZmV0Y2hfc3RhdHVzLCBndWNfZnct PnVjX2Z3X2xvYWRfc3RhdHVzKTsKKworCWlmIChndWNfZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyA9 PSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HICYmICF3YWl0KQorCQlyZXR1cm4gLUVBR0FJTjsK KworCWlmIChndWNfZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9O T05FKQorCQlyZXR1cm4gMDsKKworCWlmIChndWNfZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyA9PSBJ TlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJICAgIGd1Y19mdy0+dWNfZndfbG9hZF9zdGF0 dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfRkFJTCkKKwkJcmV0dXJuIC1FTk9FWEVDOworCisJZ3Vj X2Z3LT51Y19md19sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZXJy ID0gaW50ZWxfdWNfZndfY2hlY2soZ3VjX2Z3LCBndWNfdWNvZGVfY2hlY2spOworCWlmIChlcnIp CisJCWdvdG8gZmFpbDsKKworCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldik7CisJaWYgKGVycikK KwkJZ290byBmYWlsOworCisJZ3VjX2Z3LT51Y19md19sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX1NVQ0NFU1M7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwlpZiAoZ3VjX2Z3LT51Y19m d19sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HKQorCQlndWNfZnctPnVj X2Z3X2xvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfRkFJTDsKKworCURSTV9FUlJPUigi RmFpbGVkIHRvIGluaXRpYWxpemUgR3VDLCBlcnJvciAlZFxuIiwgZXJyKTsKKworCXJldHVybiBl cnI7Cit9CisKKy8qKgorICogaW50ZWxfZ3VjX3Vjb2RlX2ZpbmkoKSAtIGNsZWFuIHVwIGFsbCBh bGxvY2F0ZWQgcmVzb3VyY2VzCisgKi8KK3ZvaWQgaW50ZWxfZ3VjX3Vjb2RlX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9w cml2LT5ndWMuZ3VjX2Z3OworCisJaW50ZWxfdWNfZndfZmluaShndWNfZncpOworfQotLSAKMS43 LjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK