From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH v2 4/6] drm/i915/huc: Add HuC fw loading support Date: Mon, 8 Feb 2016 15:02:51 -0800 Message-ID: <1454972573-16290-5-git-send-email-yu.dai@intel.com> References: <1454972573-16290-1-git-send-email-yu.dai@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 D4F566E4A6 for ; Mon, 8 Feb 2016 15:07:36 -0800 (PST) In-Reply-To: <1454972573-16290-1-git-send-email-yu.dai@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+CgpUaGUgSHVDIGxvYWRpbmcgcHJvY2Vz cyBpcyBzaW1pbGFyIHRvIEd1Qy4gVGhlIGludGVsX3VjX2Z3X2ZldGNoKCkKaXMgdXNlZCBmb3Ig Ym90aCBjYXNlcy4KCkh1QyBsb2FkaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBHdUMgbG9hZGluZy4g VGhlIFdPUENNIHNldHRpbmcgbXVzdApiZSBkb25lIGVhcmx5IGJlZm9yZSBsb2FkaW5nIGFueSBv ZiB0aGVtLgoKU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcu aCAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwg ICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCAgICAgICAgfCAgNDQgKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgfCAyNjIgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzI1IGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaHVjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWNfbG9hZGVyLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDA4NTFkZTA3Li42 OTNjYzhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNDIsNiArNDIsNyBAQCBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXAogCiAjIGdlbmVyYWwtcHVycG9zZSBtaWNyb2NvbnRyb2xsZXIg KEd1Qykgc3VwcG9ydAogaTkxNS15ICs9IGludGVsX2d1Y19sb2FkZXIubyBcCisJICBpbnRlbF9o dWNfbG9hZGVyLm8gXAogCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCiAKICMgYXV0b2dlbmVyYXRl ZCBudWxsIHJlbmRlciBzdGF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggMTIwMTI1Yi4u NjUyNmNmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC00MDUsNiArNDA1LDcgQEAgc3Rh dGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ ICogd29ya2luZyBpcnFzIGZvciBlLmcuIGdtYnVzIGFuZCBkcCBhdXggdHJhbnNmZXJzLiAqLwog CWludGVsX21vZGVzZXRfaW5pdChkZXYpOwogCisJaW50ZWxfaHVjX3Vjb2RlX2luaXQoZGV2KTsK IAlpbnRlbF9ndWNfdWNvZGVfaW5pdChkZXYpOwogCiAJcmV0ID0gaTkxNV9nZW1faW5pdChkZXYp OwpAQCAtNDQ4LDYgKzQ0OSw3IEBAIGNsZWFudXBfZ2VtOgogCWk5MTVfZ2VtX2NvbnRleHRfZmlu aShkZXYpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogY2xlYW51cF9pcnE6 CisJaW50ZWxfaHVjX3Vjb2RlX2ZpbmkoZGV2KTsKIAlpbnRlbF9ndWNfdWNvZGVfZmluaShkZXYp OwogCWRybV9pcnFfdW5pbnN0YWxsKGRldik7CiAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsK QEAgLTEyNTEsNiArMTI1Myw3IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRpbmcgdW5waW5fd29yay4gKi8KIAlm bHVzaF93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKIAorCWludGVsX2h1Y191Y29kZV9maW5pKGRl dik7CiAJaW50ZWxfZ3VjX3Vjb2RlX2ZpbmkoZGV2KTsKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CiAJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAppbmRleCA4MjE2NjY1Li5jOWM3Mzc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8 bGludXgvcG1fcW9zLmg+CiAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisjaW5jbHVkZSAiaW50ZWxf aHVjLmgiCiAKIC8qIEdlbmVyYWwgY3VzdG9taXphdGlvbjoKICAqLwpAQCAtMTc0NCw2ICsxNzQ1 LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5MTVfdmlydHVhbF9n cHUgdmdwdTsKIAorCXN0cnVjdCBpbnRlbF9odWMgaHVjOwogCXN0cnVjdCBpbnRlbF9ndWMgZ3Vj OwogCiAJc3RydWN0IGludGVsX2NzciBjc3I7CkBAIC0yNjczLDYgKzI2NzUsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfY21kX3RhYmxlIHsKIAogI2RlZmluZSBIQVNfR1VDX1VDT0RFKGRldikJKElTX0dF TjkoZGV2KSAmJiAhSVNfS0FCWUxBS0UoZGV2KSkKICNkZWZpbmUgSEFTX0dVQ19TQ0hFRChkZXYp CShJU19HRU45KGRldikgJiYgIUlTX0tBQllMQUtFKGRldikpCisjZGVmaW5lIEhBU19IVUNfVUNP REUoZGV2KQkoSVNfR0VOOShkZXYpICYmICFJU19LQUJZTEFLRShkZXYpKQogCiAjZGVmaW5lIEhB U19SRVNPVVJDRV9TVFJFQU1FUihkZXYpIChJU19IQVNXRUxMKGRldikgfHwgXAogCQkJCSAgICBJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggZTli MTliYy4uNTZmMjQzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00ODkwLDYgKzQ4OTAs MTMgQEAgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJLyogV2Ug Y2FuJ3QgZW5hYmxlIGNvbnRleHRzIHVudGlsIGFsbCBmaXJtd2FyZSBpcyBsb2FkZWQgKi8KIAlp ZiAoSEFTX0dVQ19VQ09ERShkZXYpKSB7CisJCS8qIGluaXQgV09QQ00gKi8KKwkJSTkxNV9XUklU RShHVUNfV09QQ01fU0laRSwgR1VDX1dPUENNX1NJWkVfVkFMVUUpOworCQlJOTE1X1dSSVRFKERN QV9HVUNfV09QQ01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHwKKwkJCQlIVUNfTE9B RElOR19BR0VOVF9HVUMpOworCisJCWludGVsX2h1Y191Y29kZV9sb2FkKGRldik7CisKIAkJcmV0 ID0gaW50ZWxfZ3VjX3Vjb2RlX2xvYWQoZGV2KTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBHdUMsIGVycm9yICVkXG4iLCByZXQpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19yZWcuaAppbmRleCBlNGJhNTgyLi44ZDI3YzA5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19yZWcuaApAQCAtNTIsOSArNTIsMTIgQEAKICNkZWZpbmUgICBETUFfQURE UkVTU19TUEFDRV9HVFQJCSAgKDggPDwgMTYpCiAjZGVmaW5lIERNQV9DT1BZX1NJWkUJCQlfTU1J TygweGMzMTApCiAjZGVmaW5lIERNQV9DVFJMCQkJX01NSU8oMHhjMzE0KQorI2RlZmluZSAgIEhV Q19VS0VSTkVMCQkJICAoMTw8OSkKICNkZWZpbmUgICBVT1NfTU9WRQkJCSAgKDE8PDQpCiAjZGVm aW5lICAgU1RBUlRfRE1BCQkJICAoMTw8MCkKICNkZWZpbmUgRE1BX0dVQ19XT1BDTV9PRkZTRVQJ CV9NTUlPKDB4YzM0MCkKKyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9WQ1IJCSAgKDA8PDEp CisjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfR1VDCQkgICgxPDwxKQogI2RlZmluZSAgIEdV Q19XT1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAwCS8qIDUxMktCICovCiAjZGVmaW5lIEdVQ19N QVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMKaW5kZXggMjYxYWU1Yi4uYWMwZDllNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtMjU2LDcgKzI1Niw4IEBAIHN0YXRpYyBpbnQgZ3VjX3Vj b2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlJOTE1X1dS SVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwogCiAJLyogRmlu YWxseSBzdGFydCB0aGUgRE1BICovCi0JSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRf RU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSk7CisJSTkxNV9XUklURShETUFfQ1RSTCwgX01B U0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1BKSB8CisJCQlfTUFTS0VEX0JJVF9E SVNBQkxFKEhVQ19VS0VSTkVMKSk7CiAKIAkvKgogCSAqIFNwaW4td2FpdCBmb3IgdGhlIERNQSB0 byBjb21wbGV0ZSAmIHRoZSBHdUMgdG8gc3RhcnQgdXAuCkBAIC0zMDcsMTAgKzMwOCw2IEBAIHN0 YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp OwogCi0JLyogaW5pdCBXT1BDTSAqLwotCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIEdVQ19X T1BDTV9TSVpFX1ZBTFVFKTsKLQlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULCBHVUNf V09QQ01fT0ZGU0VUX1ZBTFVFKTsKLQogCS8qIEVuYWJsZSBNSUEgY2FjaGluZy4gR3VDIGNsb2Nr IGdhdGluZyBpcyBkaXNhYmxlZC4gKi8KIAlJOTE1X1dSSVRFKEdVQ19TSElNX0NPTlRST0wsIEdV Q19TSElNX0NPTlRST0xfVkFMVUUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZmIyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICog Q29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisjaWZuZGVmIF9JTlRFTF9IVUNfSF8K KyNkZWZpbmUgX0lOVEVMX0hVQ19IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisKKyNkZWZp bmUgSFVDX1NUQVRVUzIJCV9NTUlPKDB4RDNCMCkKKyNkZWZpbmUgICBIVUNfRldfVkVSSUZJRUQJ KDE8PDcpCisKK3N0cnVjdCBpbnRlbF9odWMgeworCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFu YWdlbWVudCAqLworCXN0cnVjdCBpbnRlbF91Y19mdyBodWNfZnc7CisKKwkvKiBIdUMtc3BlY2lm aWMgYWRkaXRpb25zICovCit9OworCitleHRlcm4gdm9pZCBpbnRlbF9odWNfdWNvZGVfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiBpbnQgaW50ZWxfaHVjX3Vjb2RlX2xvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZCBpbnRlbF9odWNfdWNvZGVfYXV0 aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGludGVsX2h1Y191Y29kZV9m aW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40 MDVlNzBlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj X2xvYWRlci5jCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQgSW50 ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdB UkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlICJpOTE1 X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2h1Yy5oIgorCisvKioKKyAqIERPQzogSHVDIEZpcm13 YXJlCisgKgorICogTW90aXZhdGlvbjoKKyAqIEdFTjkgaW50cm9kdWNlcyBhIG5ldyBkZWRpY2F0 ZWQgZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhpZ2gKKyAqIEVmZmljaWVuY3kg VmlkZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGUgZmlybXdhcmUK KyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNo IGJ1ZmZlcnMuCisgKgorICogSW1wbGVtZW50YXRpb246CisgKiBPbiBzdXBwb3J0ZWQgcGxhdGZv cm1zLCBpOTE1J3Mgam9iIGlzIHRvIGxvYWQgdGhlIGZpcm13YXJlIHN0b3JlZCBvbiB0aGUKKyAq IGZpbGUgc3lzdGVtIGFuZCBhc3Npc3Qgd2l0aCBhdXRoZW50aWNhdGlvbi4gSXQgaXMgdXAgdG8g dXNlcnNwYWNlIHRvCisgKiBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIEh1QyBzdXBwb3J0IG9uIGEg cGxhdGZvcm0sIG9uIHRoZWlyIG93bi4KKyAqIEZvciBkZWJ1Z2dpbmcsIGk5MTUgcHJvdmlkZXMg YSBkZWJ1Z2ZzIGZpbGUsIGk5MTVfaHVjX2xvYWRfc3RhdHVzX2luZm8KKyAqIHdoaWNoIGRpc3Bs YXlzIHRoZSBmaXJtd2FyZSBsb2FkIHN0YXR1cy4KKyAqCisgKiBUaGUgdW5pZmllZCB1QyBmaXJt d2FyZSBsb2FkZXIgaXMgdXNlZC4gRmlybXdhcmUgYmluYXJ5IGlzIGZldGNoZWQgYnkgdGhlCisg KiBsb2FkZXIgYXN5bmNocm9ub3VzbHkgZnJvbSB0aGUgZHJpdmVyIGluaXQgcHJvY2Vzcy4gSG93 ZXZlciwgdGhlIGFjdHVhbAorICogbG9hZGluZyB0byBIVyBpcyBkZWZlcnJlZCB1bnRpbCBHRU0g aW5pdGlhbGl6YXRpb24gaXMgZG9uZS4gQmUgbm90ZSB0aGF0IEh1QworICogZmlybXdhcmUgbG9h ZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgorICovCisKKyNkZWZpbmUgSTkx NV9TS0xfSFVDX1VDT0RFICJpOTE1L3NrbF9odWNfdmVyMS5iaW4iCitNT0RVTEVfRklSTVdBUkUo STkxNV9TS0xfSFVDX1VDT0RFKTsKKworLyoqCisgKiBpbnRlbF9odWNfbG9hZF91Y29kZSgpIC0g RE1BJ3MgdGhlIGZpcm13YXJlCisgKiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIFRoaXMg ZnVuY3Rpb24gdGFrZXMgdGhlIGdlbSBvYmplY3QgY29udGFpbmluZyB0aGUgZmlybXdhcmUsIHNl dHMgdXAgdGhlIERNQQorICogZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBETUEgb3BlcmF0aW9u IGFuZCB3YWl0cyBmb3IgaXQgdG8gZmluaXNoLgorICoKKyAqIFRyYW5zZmVyIHRoZSBmaXJtd2Fy ZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9sbGVyLgorICoK KyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlCisgKi8KKworc3Rh dGljIGludCBodWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cit7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7 CisJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOworCXUzMiBzaXplOworCWludCByZXQ7CisKKwly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oaHVjX2Z3LT51Y19md19vYmos IGZhbHNlKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFp bGVkICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGk5MTVfZ2VtX29i al9nZ3R0X3BpbihodWNfZnctPnVjX2Z3X29iaiwgMCwgMCk7CisJaWYgKHJldCkgeworCQlEUk1f REVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1cGRh dGVzIHRvIEdUVC4gKi8KKwlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9HVENSX0lOVkFMSURB VEUpOworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+ZGV2LT5zdHJ1Y3Rf bXV0ZXgpKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7CisKKwkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgdUNvZGUgKi8KKwlv ZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoaHVjX2Z3LT51Y19md19vYmopICsKKwkJ CWh1Y19mdy0+aGVhZGVyX29mZnNldDsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzBfTE9XLCBsb3dl cl8zMl9iaXRzKG9mZnNldCkpOworCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8z Ml9iaXRzKG9mZnNldCkgJiAweEZGRkYpOworCisJLyogSGFyZHdhcmUgZG9lc24ndCBsb29rIGF0 IGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIEh1Qy4gU2V0IGl0IHRvIDAsCisJICogYnV0IHN0aWxs IHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4KKwkgKi8KKwlJOTE1X1dSSVRFKERN QV9BRERSXzFfTE9XLCAwKTsKKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJF U1NfU1BBQ0VfV09QQ00pOworCisJc2l6ZSA9IGh1Y19mdy0+aGVhZGVyX3NpemUgKyBodWNfZnct PnVjb2RlX3NpemU7CisJSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBzaXplKTsKKworCS8qIFN0 YXJ0IHRoZSBETUEgKi8KKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUo SFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsKKworCS8qIFdhaXQgZm9yIERNQSB0byBmaW5pc2gg Ki8KKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoKEk5MTVfUkVBRChETUFfQ1RSTCkgJiBTVEFSVF9E TUEpID09IDAsIDUwMCk7CisKKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdh aXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsKKworCWludGVsX3VuY29yZV9mb3JjZXdha2Vf cHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qCisJICogV2Uga2VlcCB0aGUgb2Jq ZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQgd2UgY2FuIHVucGluIGl0CisJ ICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8g dGFrZSB1cCBzcGFjZS4KKwkgKi8KKwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihodWNfZnct PnVjX2Z3X29iaik7CisKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIGludGVsX2h1Y191Y29k ZV9pbml0KCkgLSBpbml0aWF0ZSBIdUMgZmlybXdhcmUgbG9hZGluZyByZXF1ZXN0CisgKiBAZGV2 OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxlZCBlYXJseSBkdXJpbmcgZHJpdmVyIGxvYWQs IGJ1dCBhZnRlciBHRU0gaXMgaW5pdGlhbGlzZWQuIFRoZSBsb2FkaW5nCisgKiB3aWxsIGNvbnRp bnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBzcGVjaWZ5IGZpcm13YXJlIG5hbWUgYW5k IHZlcnNpb24uCisgKiBBbGwgb3RoZXIgY2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMgVUNfRklSTVdB UkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVyBpcyBub3QKKyAqIGNhcGFibGUgb3IgZHJpdmVyIHll dCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBubyBlcnJvciBtZXNzYWdlIGZvcgorICog VUNfRklSTVdBUkVfTk9ORSBjYXNlcy4KKyAqCisgKiBUaGUgRE1BLWNvcHlpbmcgdG8gSFcgaXMg ZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y191Y29kZV9sb2FkKCkgaXMgY2FsbGVkLgorICovCit2 b2lkIGludGVsX2h1Y191Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1 Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmh1Y19mdyA9ICZodWMtPmh1Y19mdzsKKwljb25zdCBjaGFyICpmd19wYXRoID0gTlVMTDsKKwor CWh1Y19mdy0+dWNfZGV2ID0gZGV2OworCWh1Y19mdy0+dWNfZndfcGF0aCA9IE5VTEw7CisJaHVj X2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworCWh1Y19mdy0+bG9hZF9zdGF0 dXMgPSBVQ19GSVJNV0FSRV9OT05FOworCWh1Y19mdy0+ZndfdHlwZSA9IFVDX0ZXX1RZUEVfSFVD OworCisJaWYgKCFIQVNfSFVDX1VDT0RFKGRldikpCisJCXJldHVybjsKKworCWlmIChJU19TS1lM QUtFKGRldikpIHsKKwkJZndfcGF0aCA9IEk5MTVfU0tMX0hVQ19VQ09ERTsKKwkJaHVjX2Z3LT5t YWpvcl92ZXJfd2FudGVkID0gMTsKKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gNTsKKwl9 CisKKwlpZiAoZndfcGF0aCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlodWNfZnctPnVjX2Z3X3Bh dGggPSBmd19wYXRoOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfUEVORElO RzsKKworCURSTV9ERUJVR19EUklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4i LCBmd19wYXRoKTsKKworCWludGVsX3VjX2Z3X2ZldGNoKGRldiwgaHVjX2Z3KTsKK30KKworLyoq CisgKiBpbnRlbF9odWNfdWNvZGVfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCisg KiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkg ZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVyIGEgR1BVIHJlc2V0LgorICogQmUg bm90ZSB0aGF0IEh1QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCisg KgorICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVk IGludG8gbWVtb3J5IGJ5IHRoZQorICogZWFybGllciBjYWxsIHRvIGludGVsX2h1Y191Y29kZV9p bml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRoYXQKKyAqIGlzIHN1Y2NlZWRlZCwg YW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBoL3cuCisgKgorICogUmV0dXJuOglu b24temVybyBjb2RlIG9uIGVycm9yCisgKi8KK2ludCBpbnRlbF9odWNfdWNvZGVfbG9hZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2 X3ByaXYtPmh1Yy5odWNfZnc7CisJaW50IGVycjsKKworCWlmIChodWNfZnctPmZldGNoX3N0YXR1 cyA9PSBVQ19GSVJNV0FSRV9OT05FKQorCQlyZXR1cm4gMDsKKworCURSTV9ERUJVR19EUklWRVIo IiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCisJCWh1Y19mdy0+dWNfZndfcGF0 aCwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlp bnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7CisKKwlpZiAoaHVj X2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfU1VDQ0VTUyAmJgorCSAgICBodWNfZnct PmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpCisJCXJldHVybiAtRU5PRVhFQzsKKwor CWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOworCisJc3dpdGNoICho dWNfZnctPmZldGNoX3N0YXR1cykgeworCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKKwkJLyogc29t ZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KKwkJZXJyID0gLUVJTzsKKwkJZ290byBmYWlsOworCisJ Y2FzZSBVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKKwlkZWZh dWx0OgorCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLworCQlXQVJOX09OQ0UoMSwgIkh1QyBmdyAlcyBp bnZhbGlkIGZldGNoX3N0YXR1cyAlcyBbJWRdXG4iLAorCQkJaHVjX2Z3LT51Y19md19wYXRoLAor CQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQkJaHVj X2Z3LT5mZXRjaF9zdGF0dXMpOworCQllcnIgPSAtRU5YSU87CisJCWdvdG8gZmFpbDsKKworCWNh c2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwkJYnJlYWs7CisJfQorCisJZXJyID0gaHVjX3Vjb2Rl X3hmZXIoZGV2X3ByaXYpOworCWlmIChlcnIpCisJCWdvdG8gZmFpbDsKKworCWh1Y19mdy0+bG9h ZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOworCisJRFJNX0RFQlVHX0RSSVZFUigiJXMg Zncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT51Y19md19wYXRoLAor CQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKworCXJldHVybiAwOwor CitmYWlsOgorCWlmIChodWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcp CisJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOworCisJRFJNX0VSUk9S KCJGYWlsZWQgdG8gY29tcGxldGUgSHVDIHVDb2RlIGxvYWQgd2l0aCByZXQgJWRcbiIsIGVycik7 CisKKwlyZXR1cm4gZXJyOworfQorCisvKioKKyAqIGludGVsX2h1Y191Y29kZV9maW5pKCkgLSBj bGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKKyAqIEBkZXY6IHRoZSBkcm0gZGV2 aWNlCisgKgorICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2luZyB0aGUgaHVjIGZpcm13YXJlIEdFTSBv YmouCisgKi8KK3ZvaWQgaW50ZWxfaHVjX3Vjb2RlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuaHVjX2Z3 OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlmIChodWNfZnctPnVjX2Z3 X29iaikKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmh1Y19mdy0+dWNfZndfb2JqLT5i YXNlKTsKKwlodWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7CisKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7 Cit9Ci0tIAoyLjUuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==