From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH 04/18] drm/i915: GuC firmware loader Date: Thu, 26 Mar 2015 12:41:11 -0700 Message-ID: <1427398885-31988-5-git-send-email-yu.dai@intel.com> References: <1427398885-31988-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 36A426E510 for ; Thu, 26 Mar 2015 12:44:12 -0700 (PDT) In-Reply-To: <1427398885-31988-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+CgpBZGQgR3VDIGZpcm13YXJlIGxvYWRl ci4gSXQgdXNlcyB0aGUgdW5pZmllZCBmaXJtd2FyZSBsb2FkZXIgdG8KZmV0Y2ggZmlybXdhcmUg YmxvYiBmaXJzdCwgdGhlbiBsb2FkIHRvIGh3IGluIGRyaXZlciBtYWluIHRocmVhZC4KCklzc3Vl OiBWSVotNDg4NApTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMgIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAg ICAgICB8ICA5NSArKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xv YWRlci5jIHwgMjcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNo YW5nZWQsIDM5MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQppbmRleCAxYjAyN2M3Li42MTg4MzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNDAsNyAr NDAsOCBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAogCSAgaW50ZWxfdW5jb3JlLm8K IAogIyBhbmNpbGxpYXJ5IG1pY3JvY29udHJvbGxlciBzdXBwb3J0Ci1pOTE1LXkgKz0gaW50ZWxf dWNfbG9hZGVyLm8KK2k5MTUteSArPSBpbnRlbF91Y19sb2FkZXIubyBcCisJICBpbnRlbF9ndWNf bG9hZGVyLm8KIAogIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCiBpOTE1LXkgKz0g aW50ZWxfcmVuZGVyc3RhdGVfZ2VuNi5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IGQ0 OWVkNjguLmE0ZTZmZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtNDY1LDYgKzQ2NSw3 IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCiBjbGVhbnVwX2dlbToKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJ aW50ZWxfZ3VjX3Vjb2RlX2ZpbmkoZGV2KTsKIAlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIo ZGV2KTsKIAlpOTE1X2dlbV9jb250ZXh0X2ZpbmkoZGV2KTsKIAltdXRleF91bmxvY2soJmRldi0+ c3RydWN0X211dGV4KTsKQEAgLTgyOCw2ICs4MjksMTAgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAogCWludGVsX3Vu Y29yZV9pbml0KGRldik7CiAKKwlpbnRlbF93b3BjbV9pbml0KGRldik7CisKKwlpbnRlbF9ndWNf dWNvZGVfaW5pdChkZXYpOworCiAJcmV0ID0gaTkxNV9nZW1fZ3R0X2luaXQoZGV2KTsKIAlpZiAo cmV0KQogCQlnb3RvIG91dF9yZWdzOwpAQCAtMTA3MSw2ICsxMDc2LDcgQEAgaW50IGk5MTVfZHJp dmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWZsdXNoX3dvcmtxdWV1ZShkZXZf cHJpdi0+d3EpOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWludGVsX2d1 Y191Y29kZV9maW5pKGRldik7CiAJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7CiAJ aTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZkZXZfcHJpdi0+bW0uYmF0Y2hfcG9vbCk7CiAJaTkx NV9nZW1fY29udGV4dF9maW5pKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBlNDIx NWEwLi4xYTYwZjg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTUwLDYgKzUwLDcgQEAK ICNpbmNsdWRlIDxsaW51eC9pbnRlbC1pb21tdS5oPgogI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4K ICNpbmNsdWRlIDxsaW51eC9wbV9xb3MuaD4KKyNpbmNsdWRlICJpbnRlbF9ndWMuaCIKIAogLyog R2VuZXJhbCBjdXN0b21pemF0aW9uOgogICovCkBAIC0xNTc2LDYgKzE1NzcsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaW50ZWxfZ21idXMgZ21idXNbR01CVVNfTlVN X1BPUlRTXTsKIAorCXN0cnVjdCBpbnRlbF9ndWMgZ3VjOwogCiAJLyoqIGdtYnVzX211dGV4IHBy b3RlY3RzIGFnYWluc3QgY29uY3VycmVudCB1c2FnZSBvZiB0aGUgc2luZ2xlIGh3IGdtYnVzCiAJ ICogY29udHJvbGxlciBvbiBkaWZmZXJlbnQgaTJjIGJ1c2VzLiAqLwpAQCAtMjQwNSw2ICsyNDA3 LDkgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAjZGVmaW5lIEhBU19SQzYoZGV2KQkJ KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCiAjZGVmaW5lIEhBU19SQzZwKGRldikJCShJTlRF TF9JTkZPKGRldiktPmdlbiA9PSA2IHx8IElTX0lWWUJSSURHRShkZXYpKQogCisjZGVmaW5lIEhB U19HVUNfVUNPREUoZGV2KQkoSVNfR0VOOShkZXYpIHx8IElTX0dFTjgoZGV2KSkKKyNkZWZpbmUg SEFTX0dVQ19TQ0hFRChkZXYpCShJU19HRU45KGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCisK ICNkZWZpbmUgSU5URUxfUENIX0RFVklDRV9JRF9NQVNLCQkweGZmMDAKICNkZWZpbmUgSU5URUxf UENIX0lCWF9ERVZJQ0VfSURfVFlQRQkJMHgzYjAwCiAjZGVmaW5lIElOVEVMX1BDSF9DUFRfREVW SUNFX0lEX1RZUEUJCTB4MWMwMApAQCAtMjk1OCw2ICsyOTYzLDcgQEAgaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJCQkgICAgICAgdTMyIHN0b2xlbl9vZmZzZXQsCiAJCQkJCSAgICAgICB1MzIgZ3R0X29mZnNl dCwKIAkJCQkJICAgICAgIHUzMiBzaXplKTsKK3ZvaWQgaW50ZWxfd29wY21faW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIAogLyogaTkxNV9nZW1fc2hyaW5rZXIuYyAqLwogdW5zaWduZWQg bG9uZyBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCBmOGRhNzE2Li4xMzc3MDc2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtNTUxLDMgKzU1MSwx MyBAQCBlcnJfb3V0OgogCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwog CXJldHVybiBOVUxMOwogfQorCit2b2lkIGludGVsX3dvcGNtX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOworCisJaWYgKEhBU19HVUNfVUNPREUoZGV2KSkgeworCQlJOTE1X1dSSVRFKEdV Q19XT1BDTV9TSVpFLCBHVUNfV09QQ01fU0laRV9WQUxVRSk7CisJCUk5MTVfV1JJVEUoRE1BX0dV Q19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVQpOworCX0KK30KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCmluZGV4IGI1MjJlYjYuLmRmZDFlYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApA QCAtNjI4OSw3ICs2Mjg5LDkgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5l ICAgR0VOOV9QR0NUTF9TU0JfRVUzMTFfQUNLCSgxIDw8IDE0KQogCiAjZGVmaW5lIEdFTjdfTUlT Q0NQQ1RMCQkJKDB4OTQyNCkKLSNkZWZpbmUgICBHRU43X0RPUF9DTE9DS19HQVRFX0VOQUJMRQko MTw8MCkKKyNkZWZpbmUgICBHRU43X0RPUF9DTE9DS19HQVRFX0VOQUJMRQkJKDE8PDApCisjZGVm aW5lICAgR0VOOF9ET1BfQ0xPQ0tfR0FURV9DRkNMS19FTkFCTEUJKDE8PDIpCisjZGVmaW5lICAg R0VOOF9ET1BfQ0xPQ0tfR0FURV9HVUNfRU5BQkxFCSgxPDw0KQogCiAvKiBJVllCUklER0UgRFBG ICovCiAjZGVmaW5lIEdFTjdfTDNDREVSUlNUMQkJCTB4QjAwOCAvKiBMM0NEIEVycm9yIFN0YXR1 cyAxICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmQ4ZTdjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWMuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQg SW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09G VFdBUkUuCisgKgorICovCisjaWZuZGVmIF9JTlRFTF9HVUNfSF8KKyNkZWZpbmUgX0lOVEVMX0dV Q19IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjX2FwaS5oIgorI2luY2x1ZGUgImludGVsX3VjX2xv YWRlci5oIgorCitzdHJ1Y3QgaW50ZWxfZ3VjIHsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZ3VjX2Z3 OworfTsKKworI2RlZmluZSBHVUNfU1RBVFVTCQkweGMwMDAKKyNkZWZpbmUgICBHU19CT09UUk9N X1NISUZUCTEKKyNkZWZpbmUgICBHU19CT09UUk9NX01BU0sJKDB4N0YgPDwgR1NfQk9PVFJPTV9T SElGVCkKKyNkZWZpbmUgICBHU19CT09UUk9NX1JTQV9GQUlMRUQJKDB4NTAgPDwgR1NfQk9PVFJP TV9TSElGVCkKKyNkZWZpbmUgICBHU19VS0VSTkVMX1NISUZUCTgKKyNkZWZpbmUgICBHU19VS0VS TkVMX01BU0sJKDB4RkYgPDwgR1NfVUtFUk5FTF9TSElGVCkKKyNkZWZpbmUgICBHU19VS0VSTkVM X0xBUElDX0RPTkUJKDB4MzAgPDwgR1NfVUtFUk5FTF9TSElGVCkKKyNkZWZpbmUgICBHU19VS0VS TkVMX0RQQ19FUlJPUgkoMHg2MCA8PCBHU19VS0VSTkVMX1NISUZUKQorI2RlZmluZSAgIEdTX1VL RVJORUxfUkVBRFkJKDB4RjAgPDwgR1NfVUtFUk5FTF9TSElGVCkKKyNkZWZpbmUgICBHU19NSUFf U0hJRlQJCTE2CisjZGVmaW5lICAgR1NfTUlBX01BU0sJCSgweDcgPDwgR1NfTUlBX1NISUZUKQor CisjZGVmaW5lIEdVQ19XT1BDTV9TSVpFCQkweGMwNTAKKyNkZWZpbmUgICBHVUNfV09QQ01fU0la RV9WQUxVRSAgKDB4ODAgPDwgMTIpCS8qIDUxMktCICovCisjZGVmaW5lICAgR1VDX1dPUENNX09G RlNFVAkweDgwMDAwCQkvKiA1MTJLQiAqLworI2RlZmluZSBTT0ZUX1NDUkFUQ0gobikJCSgweGMx ODAgKyAoKG4pICogNCkpCisKKyNkZWZpbmUgVU9TX1JTQV9TQ1JBVENIXzAJMHhjMjAwCisjZGVm aW5lICAgVU9TX1JTQV9TSUdfU0laRQkweDEwMAorI2RlZmluZSBETUFfQUREUl8wX0xPVwkJMHhj MzAwCisjZGVmaW5lIERNQV9BRERSXzBfSElHSAkJMHhjMzA0CisjZGVmaW5lIERNQV9BRERSXzFf TE9XCQkweGMzMDgKKyNkZWZpbmUgRE1BX0FERFJfMV9ISUdICQkweGMzMGMKKyNkZWZpbmUgICBE TUFfQUREUkVTU19TUEFDRV9XT1BDTQkoNyA8PCAxNikKKyNkZWZpbmUgICBETUFfQUREUkVTU19T UEFDRV9HVFQJCSg4IDw8IDE2KQorI2RlZmluZSBETUFfQ09QWV9TSVpFCQkweGMzMTAKKyNkZWZp bmUgRE1BX0NUUkwJCTB4YzMxNAorI2RlZmluZSAgIFVPU19NT1ZFCQkoMTw8NCkKKyNkZWZpbmUg ICBTVEFSVF9ETUEJCSgxPDwwKQorI2RlZmluZSBETUFfR1VDX1dPUENNX09GRlNFVAkweGMzNDAK KworI2RlZmluZSBHRU44X0dUX1BNX0NPTkZJRwkJMHgxMzgxNDAKKyNkZWZpbmUgR0VOOV9HVF9Q TV9DT05GSUcJCTB4MTM4MTZjCisjZGVmaW5lICAgR0VOOF9HVF9ET09SQkVMTF9FTkFCTEUJKDE8 PDApCisKKyNkZWZpbmUgR0VOOF9HVENSIDB4NDI3NAorI2RlZmluZSAgIEdFTjhfR1RDUl9JTlZB TElEQVRFICgxPDwwKQorCisjZGVmaW5lIEdVQ19BUkFUX0M2RElTCQkweEExNzgKKworI2RlZmlu ZSBHVUNfU0hJTV9DT05UUk9MCSgweGMwNjQpCisjZGVmaW5lICAgR1VDX0RJU0FCTEVfU1JBTV9J TklUX1RPX1pFUk9FUwkoMTw8MCkKKyNkZWZpbmUgICBHVUNfRU5BQkxFX1JFQURfQ0FDSEVfTE9H SUMJCSgxPDwxKQorI2RlZmluZSAgIEdVQ19FTkFCTEVfTUlBX0NBQ0hJTkcJCSgxPDwyKQorI2Rl ZmluZSAgIEdVQ19HRU4xMF9NU0dDSF9FTkFCTEUJCSgxPDw0KQorI2RlZmluZSAgIEdVQ19FTkFC TEVfUkVBRF9DQUNIRV9GT1JfU1JBTV9EQVRBCSgxPDw5KQorI2RlZmluZSAgIEdVQ19FTkFCTEVf UkVBRF9DQUNIRV9GT1JfV09QQ01fREFUQQkoMTw8MTApCisjZGVmaW5lICAgR1VDX0VOQUJMRV9N SUFfQ0xPQ0tfR0FUSU5HCQkoMTw8MTUpCisjZGVmaW5lICAgR1VDX0dFTjEwX1NISU1fV0NfRU5B QkxFCQkoMTw8MjEpCisKKyNkZWZpbmUgR1VDX1NISU1fQ09OVFJPTF9WQUxVRQkoR1VDX0RJU0FC TEVfU1JBTV9JTklUX1RPX1pFUk9FUyB8IFwKKwkJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0xP R0lDIHwgXAorCQkJCSBHVUNfRU5BQkxFX01JQV9DQUNISU5HIHwgXAorCQkJCSBHVUNfRU5BQkxF X1JFQURfQ0FDSEVfRk9SX1NSQU1fREFUQSB8IFwKKwkJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hF X0ZPUl9XT1BDTV9EQVRBKQorCisvKiBpbnRlbF9ndWNfbG9hZGVyLmMgKi8KK2V4dGVybiBpbnQg aW50ZWxfZ3VjX2xvYWRfdWNvZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gdm9p ZCBpbnRlbF9ndWNfdWNvZGVfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2 b2lkIGludGVsX2d1Y191Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCisjZW5k aWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi45MWFmNzEwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0wLDAgKzEsMjcxIEBACisvKgorICog Q29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdh cmUuaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2d1Yy5oIgorCisj ZGVmaW5lIEk5MTVfR1VDX1VDT0RFX0dFTjggImk5MTUvZ3VjX2dlbjguYmluIgorI2RlZmluZSBJ OTE1X0dVQ19VQ09ERV9HRU45ICJpOTE1L2d1Y19nZW45LmJpbiIKK01PRFVMRV9GSVJNV0FSRShJ OTE1X0dVQ19VQ09ERV9HRU44KTsKK01PRFVMRV9GSVJNV0FSRShJOTE1X0dVQ19VQ09ERV9HRU45 KTsKKworc3RhdGljIGludCBjb3B5X3JzYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJc3RydWN0IHNnX3RhYmxlICpzdCA9IGRldl9wcml2LT5ndWMuZ3VjX2Z3LnVjX2Z3 X29iai0+cGFnZXM7CisJdWludDMyX3QgcnNhW1VPU19SU0FfU0lHX1NJWkUgLyBzaXplb2YodWlu dDMyX3QpXTsKKwlzaXplX3QgYnl0ZXM7CisJaW50IGk7CisKKwlieXRlcyA9IHNnX2NvcHlfdG9f YnVmZmVyKHN0LT5zZ2wsIHN0LT5uZW50cywgcnNhLCBVT1NfUlNBX1NJR19TSVpFKTsKKwlpZiAo Ynl0ZXMgIT0gVU9TX1JTQV9TSUdfU0laRSkKKwkJcmV0dXJuIC1FTlhJTzsKKworCWZvciAoaSA9 IDA7IGkgPCBVT1NfUlNBX1NJR19TSVpFIC8gc2l6ZW9mKHVpbnQzMl90KTsgaSsrKQorCQlJOTE1 X1dSSVRFKFVPU19SU0FfU0NSQVRDSF8wICsgaSAqIHNpemVvZih1aW50MzJfdCksIHJzYVtpXSk7 CisKKwlyZXR1cm4gMDsKK30KKworLyogUmVhZCBHdUMgc3RhdHVzIHJlZ2lzdGVyIChHVUNfU1RB VFVTKQorICogUmV0dXJuIHRydWUgaWYgZ2V0IGEgc3VjY2VzcyBjb2RlIGZyb20gbm9ybWFsIGJv b3Qgb3IgUkM2IGJvb3QKKyAqLworc3RhdGljIGlubGluZSBib29sIGk5MTVfZ3VjX2dldF9zdGF0 dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQl1MzIgKnN0YXR1cykK K3sKKwkqc3RhdHVzID0gSTkxNV9SRUFEKEdVQ19TVEFUVVMpOworCXJldHVybiAoKCgqc3RhdHVz KSAmIEdTX1VLRVJORUxfTUFTSykgPT0gR1NfVUtFUk5FTF9SRUFEWSB8fAorCQkoKCpzdGF0dXMp ICYgR1NfVUtFUk5FTF9NQVNLKSA9PSBHU19VS0VSTkVMX0xBUElDX0RPTkUpOworfQorCisvKiBU cmFuc2ZlcnMgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBt aWNyb2NvbnRyb2xsZXIuCisgKgorICogQXJjaGl0ZWN0dXJhbGx5LCB0aGUgRE1BIGVuZ2luZSBp cyBiaWRpcmVjdGlvbmFsLCBhbmQgaW4gY2FuIHBvdGVudGlhbGx5CisgKiBldmVuIHRyYW5zZmVy IGJldHdlZW4gR1RUIGxvY2F0aW9ucy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGxlZnQgb3V0IG9m IHRoZQorICogQVBJIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQuCisgKi8KK3N0 YXRpYyBpbnQgdWNvZGVfZG1hX3hmZXJfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCit7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5n dWNfZnc7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3X29iaiA9IGd1Y19mdy0+dWNf Zndfb2JqOworCWNvbnN0IHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRf b2Zmc2V0KGZ3X29iaik7CisJdTMyIHN0YXR1czsKKwlpbnQgcmV0ID0gMDsKKworCS8qIFNldCB0 aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLworCUk5MTVfV1JJVEUoRE1BX0FERFJf MF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSArIFVPU19SU0FfU0lHX1NJWkUpOworCUk5MTVf V1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwor CisJLyogU2V0IHRoZSBkZXN0aW5hdGlvbi4gQ3VycmVudCB1Q29kZSBleHBlY3RzIGFuIDhrIHN0 YWNrIHN0YXJ0aW5nIGZyb20KKwkgKiBvZmZzZXQgMC4gKi8KKwlJOTE1X1dSSVRFKERNQV9BRERS XzFfTE9XLCAweDIwMDApOworCisJLyogWFhYOiBUaGUgaW1hZ2UgaXMgYXV0b21hdGljYWxseSB0 cmFuc2ZlcmVkIHRvIFNSQU0gYWZ0ZXIgdGhlIFJTQQorCSAqIHZlcmlmaWNhdGlvbi4gVGhpcyBp cyB3aHkgdGhlIGFkZHJlc3Mgc3BhY2UgaXMgY2hvc2VuIGFzIHN1Y2guICovCisJSTkxNV9XUklU RShETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKKworCUk5MTVfV1JJ VEUoRE1BX0NPUFlfU0laRSwgZ3VjX2Z3LT51Y19md19zaXplIC0gVU9TX1JTQV9TSUdfU0laRSk7 CisKKwkvKiBGaW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8KKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBf TUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpKTsKKworCS8qIE5COiBEb2Nz IHJlY29tbWVuZCBub3QgdXNpbmcgdGhlIGludGVycnVwdCBmb3IgY29tcGxldGlvbi4KKwkgKiBG SVhNRTogd2hhdCdzIGEgdmFsaWQgdGltZW91dD8gKi8KKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMo aTkxNV9ndWNfZ2V0X3N0YXR1cyhkZXZfcHJpdiwgJnN0YXR1cyksIDEwKTsKKworCURSTV9ERUJV R19EUklWRVIoIkRNQSBzdGF0dXMgPSAweCV4LCBHdUMgc3RhdHVzIDB4JXhcbiIsCisJCQlJOTE1 X1JFQUQoRE1BX0NUUkwpLCBzdGF0dXMpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHUz MiBnZXRfZ3R0eXBlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJLyogWFhYOiBHVCB0eXBl IGJhc2VkIG9uIFBDSSBkZXZpY2UgSUQ/IGZpZWxkIHNlZW1zIHVudXNlZCBieSBmdyAqLworCXJl dHVybiAwOworfQorCitzdGF0aWMgdTMyIGdldF9jb3JlX2ZhbWlseShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQoreworCXN3aXRjaCAoSU5URUxfSU5GTyhkZXYpLT5nZW4pIHsKKwljYXNlIDg6CisJ CXJldHVybiBHRlhDT1JFX0ZBTUlMWV9HRU44OworCWNhc2UgOToKKwkJcmV0dXJuIEdGWENPUkVf RkFNSUxZX0dFTjk7CisJZGVmYXVsdDoKKwkJRFJNX0VSUk9SKCJHVUM6IHVua25vd24gZ2VuIGZv ciBzY2hlZHVsZXIgaW5pdFxuIik7CisJCXJldHVybiBHRlhDT1JFX0ZBTUlMWV9GT1JDRV9VTE9O RzsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHNldF9ndWNfaW5pdF9wYXJhbXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXUzMiBwYXJhbXNbR1VDX0NUTF9NQVhfRFdPUkRT XTsKKwlpbnQgaTsKKworCW1lbXNldCgmcGFyYW1zLCAwLCBzaXplb2YocGFyYW1zKSk7CisKKwlw YXJhbXNbR1VDX0NUTF9ERVZJQ0VfSU5GT10gfD0KKwkJKGdldF9ndHR5cGUoZGV2X3ByaXYtPmRl dikgPDwgR1VDX0NUTF9HVFRZUEVfU0hJRlQpIHwKKwkJKGdldF9jb3JlX2ZhbWlseShkZXZfcHJp di0+ZGV2KSA8PCBHVUNfQ1RMX0NPUkVGQU1JTFlfU0hJRlQpOworCisJLyogR3VDIEFSQVQgaW5j cmVtZW50IGlzIDEwIG5zLiBHdUMgZGVmYXVsdCBzY2hlZHVsZXIgcXVhbnR1bSBpcyBvbmUKKwkg KiBzZWNvbmQuIFRoaXMgQVJBUiBpcyBjYWxjdWxhdGVkIGJ5OgorCSAqIFNjaGVkdWxlci1RdWFu dHVtLWluLW5zIC8gQVJBVC1pbmNyZW1lbnQtaW4tbnMgPSAxMDAwMDAwMDAwIC8gMTAKKwkgKi8K KwlwYXJhbXNbR1VDX0NUTF9BUkFUX0hJR0hdID0gMDsKKwlwYXJhbXNbR1VDX0NUTF9BUkFUX0xP V10gPSAxMDAwMDAwMDA7CisKKwlwYXJhbXNbR1VDX0NUTF9XQV0gfD0gR1VDX0NUTF9XQV9VS19C WV9EUklWRVI7CisKKwlwYXJhbXNbR1VDX0NUTF9GRUFUVVJFXSB8PSBHVUNfQ1RMX0RJU0FCTEVf U0NIRURVTEVSIHwKKwkJCUdVQ19DVExfVkNTMl9FTkFCTEVEOworCisJLyogWFhYOiBTZXQgdXAg bG9nIGJ1ZmZlciAqLworCisJSTkxNV9XUklURShTT0ZUX1NDUkFUQ0goMCksIDApOworCisJZm9y IChpID0gMDsgaSA8IEdVQ19DVExfTUFYX0RXT1JEUzsgaSsrKQorCQlJOTE1X1dSSVRFKFNPRlRf U0NSQVRDSCgxICsgaSksIHBhcmFtc1tpXSk7Cit9CisKKy8qKgorICogTG9hZHMgdGhlIEd1QyBm aXJtd2FyZSBibG9iIGluIHRvIHRoZSBNaW51dGVJQS4KKyAqLworc3RhdGljIGludCBndWNfbG9h ZF91Y29kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX3VjX2Z3ICpn dWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJYm9vbCBwaW5uZWQgPSBmYWxzZTsKKwlp bnQgcmV0OworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkp OworCisJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGd1Y19mdy0+dWNfZndfb2JqLCAwLCAw KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKwlwaW5uZWQgPSB0cnVlOworCisJLyogSW52YWxp ZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAq LworCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CisKKwkvKiBT ZXQgTU1JTy9XQSBmb3IgR3VDIGluaXQgKi8KKworCS8qIEVuYWJsZSBNSUEgY2FjaGluZy4gR3VD IGNsb2NrIGdhdGluZyBpcyBkaXNhYmxlZC4gKi8KKwlJOTE1X1dSSVRFKEdVQ19TSElNX0NPTlRS T0wsIEdVQ19TSElNX0NPTlRST0xfVkFMVUUpOworCisJLyogV2FDNkRpc2FsbG93QnlHZnhQYXVz ZSovCisJSTkxNV9XUklURShHRU42X0dGWFBBVVNFLCAweDMwRkZGKTsKKworCWlmIChJU19HRU45 KGRldikpIHsKKwkJLyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBjbG9ja3MgKi8K KwkJSTkxNV9XUklURShHRU43X01JU0NDUENUTCwgKEdFTjhfRE9QX0NMT0NLX0dBVEVfR1VDX0VO QUJMRSB8CisJCQkJCSAgICBJOTE1X1JFQUQoR0VON19NSVNDQ1BDVEwpKSk7CisKKwkJLyogYWxs b3dzIGZvciA1dXMgYmVmb3JlIEdUIGNhbiBnbyB0byBSQzYgKi8KKwkJSTkxNV9XUklURShHVUNf QVJBVF9DNkRJUywgMHgxRkYpOworCX0KKworCS8qIENvcHkgUlNBIHNpZ25hdHVyZSBmcm9tIHRo ZSBmdyBpbWFnZSB0byBIVyBmb3IgdmVyaWZpY2F0aW9uICovCisJcmV0ID0gY29weV9yc2EoZGV2 X3ByaXYpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJc2V0X2d1Y19pbml0X3BhcmFtcyhk ZXZfcHJpdik7CisKKwkvKiBGSVhNRTogIVVQU1RSRUFNIC0gSSBkb24ndCBoYXZlIHJlYWwga2V5 cywgc28gd2UgbmVlZCB0byBkaXNhYmxlIHRoZQorCSAqIGF1dGhlbnRpY2F0aW9uLiBUaGlzIGNh biBvbmx5IHdvcmsgaWYgdGhlIHBhcnQgaXMgZnVzZWQgaW4gYSBzcGVjaWFsCisJICogY29uZmln dXJhdGlvbi4gVGhlcmVmb3JlLCBldmVuIGlmIGl0IGxlYWtlZCBleHRlcm5hbGx5LCBpdCB3b24n dCBiZQorCSAqIGRldHJpbWVudGFsIHRvIHNlY3VyaXR5CisJICovCisJSTkxNV9XUklURSgweGMw NjgsIDB4Myk7CisKKwlyZXQgPSB1Y29kZV9kbWFfeGZlcl9zeW5jKGRldl9wcml2KTsKKworCS8q IFdlIGNhbiBmcmVlIHRoZSBvYmplY3QgcGFnZXMgbm93LCBhbmQgd2Ugd291bGQsIGV4Y2VwdCB3 ZSBtaWdodCBhcworCSAqIHdlbGwga2VlcCBpdCBhcm91bmQgZm9yIHN1c3BlbmQvcmVzdW1lLiBJ bnN0ZWFkLCB3ZSBqdXN0IHdhaXQgZm9yIHRoZQorCSAqIERNQSB0byBjb21wbGV0ZSwgYW5kIHVu cGluIHRoZSBvYmplY3QKKwkgKi8KKworb3V0OgorCURSTV9ERUJVR19EUklWRVIoInJldHVybiAl ZCwgcGlubmVkICVkXG4iLCByZXQsIHBpbm5lZCk7CisKKwlpZiAocGlubmVkKQorCQlpOTE1X2dl bV9vYmplY3RfZ2d0dF91bnBpbihndWNfZnctPnVjX2Z3X29iaik7CisKKwlyZXR1cm4gcmV0Owor fQorCisvKgorICogQ2FsbGVkIGZyb20gZ2VtX2luaXRfaHcoKSBkdXJpbmcgZHJpdmVyIGxvYWRp bmcgYW5kIGFsc28gYWZ0ZXIgYSBHUFUgcmVzZXQuCisgKiBDaGVjayB0aGF0IHRoZSBmaXJtd2Fy ZSBmZXRjaGluZyBwcm9jZXNzIGhhcyBzdWNjZWVkZWQsIGFuZCBpZiBzbyB0cmFuc2ZlcgorICog dGhlIGxvYWRlZCBpbWFnZSB0byB0aGUgaGFyZHdhcmUuCisgKi8KK2ludCBpbnRlbF9ndWNfbG9h ZF91Y29kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX3VjX2Z3ICpn dWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJaW50IGVycjsKKworCWd1Y19mdy0+dWNf ZndfbG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOworCWlmIChndWNfZnctPnVj X2Z3X2ZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FKQorCQlyZXR1cm4gMDsK KworCWd1Y19mdy0+dWNfZndfbG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5H OworCWVyciA9IGludGVsX3VjX2Z3X2NoZWNrKGRldiwgZ3VjX2Z3KTsKKwlpZiAoZXJyKQorCQln b3RvIGZhaWw7CisKKwllcnIgPSBndWNfbG9hZF91Y29kZShkZXYpOworCWlmIChlcnIpCisJCWdv dG8gZmFpbDsKKworCWd1Y19mdy0+dWNfZndfbG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FS RV9TVUNDRVNTOworCXJldHVybiAwOworCitmYWlsOgorCWd1Y19mdy0+dWNfZndfbG9hZF9zdGF0 dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOworCXJldHVybiBlcnI7Cit9CisKK3ZvaWQgaW50 ZWxfZ3VjX3Vjb2RlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRl bF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCWNvbnN0IGNoYXIgKnBh dGggPSBOVUxMOworCisJaWYgKElTX0dFTjgoZGV2KSkKKwkJcGF0aCA9IEk5MTVfR1VDX1VDT0RF X0dFTjg7CisJZWxzZSBpZiAoSVNfR0VOOShkZXYpKQorCQlwYXRoID0gSTkxNV9HVUNfVUNPREVf R0VOOTsKKworCWludGVsX3VjX2Z3X2luaXQoZGV2LCBndWNfZncsICJHdUMiLCBwYXRoLCBIQVNf R1VDX1VDT0RFKGRldikpOworfQorCit2b2lkIGludGVsX2d1Y191Y29kZV9maW5pKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKKworCWludGVsX3VjX2Z3X2ZpbmkoZGV2LCBndWNfZncpOworfQotLSAK MS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==