From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [RFC 6/8] drm/i915: Prefer passing intel_irq instead of intel_core Date: Thu, 18 Apr 2019 13:53:45 -0700 Message-ID: <20190418205347.6402-7-rodrigo.vivi@intel.com> References: <20190418205347.6402-1-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id A2CAD6E1C0 for ; Thu, 18 Apr 2019 20:53:37 +0000 (UTC) In-Reply-To: <20190418205347.6402-1-rodrigo.vivi@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 VGhlIHBsYW4gaXMgdG8gY29udmVydCBtb3N0IG9mIGFyZ3VtZW50cyB0byB1c2UgaW50ZWxfaXJx Cmluc3RlYWQgb2YgaW50ZWxfY29yZSBvciBpOTE1LgoKTm90ZSB0aGF0IGRldl9wcml2IGlzIG5v dCBnZXR0aW5nIHJlcGxhY2VkIGJ5IGk5MTUgYmVjYXVzZQp0aGUgcGxhbiBhbHNvIGluY2x1ZGUg dG8gbW92ZSBkZXZfcHJpdiB0byBpbnRlbF9pcnEuCgpUaGUgY2F2ZWF0IGlzIHRoYXQgd2Ugd2ls bCBuZWVkIHRoZSB1bmNvcmUgZm9yIHRyYWNraW5nCnRoZSBtbWlvIHJlZ2lvbiB0aGF0IHdlIG5l ZWQsIGJ1dCBhdCBsZWFzdCBjb2RlIGtlZXBzICJjbGVhbiIKYW5kIGxlc3MgZGVwZW5kZW50IG9u IG90aGVyIGNvbXBvbmVudHMuCgpTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28u dml2aUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCB8ICAg MiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIHwgMjM4ICsrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCAx MTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggODM2OGRhZWNmNDc4 Li5mNzgzZDYzYjY4NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjYyLDYgKzY2Miw4 IEBAIHN0cnVjdCBpbnRlbF9pcnEgewogCX07CiAJdTMyIGd0X21hc2s7CiAJdTMyIHBpcGVzdGF0 X21hc2tbSTkxNV9NQVhfUElQRVNdOworCisJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlOwog fTsKIAogc3RydWN0IGludGVsX3JwcyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCAwNDY4 ZmJlYTcwYWYuLjI3Y2FlMWU3ZjJjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0xMzYs MTIwICsxMzYsMTIwIEBAIHN0YXRpYyBjb25zdCB1MzIgaHBkX2ljcFtIUERfTlVNX1BJTlNdID0g ewogCVtIUERfUE9SVF9GXSA9IFNERV9UQzRfSE9UUExVR19JQ1AKIH07CiAKLXN0YXRpYyB2b2lk IGdlbjNfaXJxX3Jlc2V0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwgaTkxNV9yZWdfdCBp bXIsCitzdGF0aWMgdm9pZCBnZW4zX2lycV9yZXNldChzdHJ1Y3QgaW50ZWxfaXJxICppcnEsIGk5 MTVfcmVnX3QgaW1yLAogCQkJICAgaTkxNV9yZWdfdCBpaXIsIGk5MTVfcmVnX3QgaWVyKQogewot CWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIGltciwgMHhmZmZmZmZmZik7Ci0JaW50ZWxfdW5j b3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGltcik7CisJaW50ZWxfdW5jb3JlX3dyaXRlKGlycS0+ dW5jb3JlLCBpbXIsIDB4ZmZmZmZmZmYpOworCWludGVsX3VuY29yZV9wb3N0aW5nX3JlYWQoaXJx LT51bmNvcmUsIGltcik7CiAKLQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBpZXIsIDApOwor CWludGVsX3VuY29yZV93cml0ZShpcnEtPnVuY29yZSwgaWVyLCAwKTsKIAogCS8qIElJUiBjYW4g dGhlb3JldGljYWxseSBxdWV1ZSB1cCB0d28gZXZlbnRzLiBCZSBwYXJhbm9pZC4gKi8KLQlpbnRl bF91bmNvcmVfd3JpdGUodW5jb3JlLCBpaXIsIDB4ZmZmZmZmZmYpOwotCWludGVsX3VuY29yZV9w b3N0aW5nX3JlYWQodW5jb3JlLCBpaXIpOwotCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIGlp ciwgMHhmZmZmZmZmZik7Ci0JaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGlpcik7 CisJaW50ZWxfdW5jb3JlX3dyaXRlKGlycS0+dW5jb3JlLCBpaXIsIDB4ZmZmZmZmZmYpOworCWlu dGVsX3VuY29yZV9wb3N0aW5nX3JlYWQoaXJxLT51bmNvcmUsIGlpcik7CisJaW50ZWxfdW5jb3Jl X3dyaXRlKGlycS0+dW5jb3JlLCBpaXIsIDB4ZmZmZmZmZmYpOworCWludGVsX3VuY29yZV9wb3N0 aW5nX3JlYWQoaXJxLT51bmNvcmUsIGlpcik7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjJfaXJxX3Jl c2V0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKK3N0YXRpYyB2b2lkIGdlbjJfaXJxX3Jl c2V0KHN0cnVjdCBpbnRlbF9pcnEgKmlycSkKIHsKLQlpbnRlbF91bmNvcmVfd3JpdGUxNih1bmNv cmUsIEdFTjJfSU1SLCAweGZmZmYpOwotCWludGVsX3VuY29yZV9wb3N0aW5nX3JlYWQxNih1bmNv cmUsIEdFTjJfSU1SKTsKKwlpbnRlbF91bmNvcmVfd3JpdGUxNihpcnEtPnVuY29yZSwgR0VOMl9J TVIsIDB4ZmZmZik7CisJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZDE2KGlycS0+dW5jb3JlLCBH RU4yX0lNUik7CiAKLQlpbnRlbF91bmNvcmVfd3JpdGUxNih1bmNvcmUsIEdFTjJfSUVSLCAwKTsK KwlpbnRlbF91bmNvcmVfd3JpdGUxNihpcnEtPnVuY29yZSwgR0VOMl9JRVIsIDApOwogCiAJLyog SUlSIGNhbiB0aGVvcmV0aWNhbGx5IHF1ZXVlIHVwIHR3byBldmVudHMuIEJlIHBhcmFub2lkLiAq LwotCWludGVsX3VuY29yZV93cml0ZTE2KHVuY29yZSwgR0VOMl9JSVIsIDB4ZmZmZik7Ci0JaW50 ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZDE2KHVuY29yZSwgR0VOMl9JSVIpOwotCWludGVsX3VuY29y ZV93cml0ZTE2KHVuY29yZSwgR0VOMl9JSVIsIDB4ZmZmZik7Ci0JaW50ZWxfdW5jb3JlX3Bvc3Rp bmdfcmVhZDE2KHVuY29yZSwgR0VOMl9JSVIpOworCWludGVsX3VuY29yZV93cml0ZTE2KGlycS0+ dW5jb3JlLCBHRU4yX0lJUiwgMHhmZmZmKTsKKwlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkMTYo aXJxLT51bmNvcmUsIEdFTjJfSUlSKTsKKwlpbnRlbF91bmNvcmVfd3JpdGUxNihpcnEtPnVuY29y ZSwgR0VOMl9JSVIsIDB4ZmZmZik7CisJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZDE2KGlycS0+ dW5jb3JlLCBHRU4yX0lJUik7CiB9CiAKLSNkZWZpbmUgR0VOOF9JUlFfUkVTRVRfTkRYKHVuY29y ZSwgdHlwZSwgd2hpY2gpIFwKKyNkZWZpbmUgR0VOOF9JUlFfUkVTRVRfTkRYKGlycSwgdHlwZSwg d2hpY2gpIFwKICh7IFwKIAl1bnNpZ25lZCBpbnQgd2hpY2hfID0gd2hpY2g7IFwKLQlnZW4zX2ly cV9yZXNldCgodW5jb3JlKSwgR0VOOF8jI3R5cGUjI19JTVIod2hpY2hfKSwgXAorCWdlbjNfaXJx X3Jlc2V0KChpcnEpLCBHRU44XyMjdHlwZSMjX0lNUih3aGljaF8pLCBcCiAJCSAgICAgICBHRU44 XyMjdHlwZSMjX0lJUih3aGljaF8pLCBHRU44XyMjdHlwZSMjX0lFUih3aGljaF8pKTsgXAogfSkK IAotI2RlZmluZSBHRU4zX0lSUV9SRVNFVCh1bmNvcmUsIHR5cGUpIFwKLQlnZW4zX2lycV9yZXNl dCgodW5jb3JlKSwgdHlwZSMjSU1SLCB0eXBlIyNJSVIsIHR5cGUjI0lFUikKKyNkZWZpbmUgR0VO M19JUlFfUkVTRVQoaXJxLCB0eXBlKSBcCisJZ2VuM19pcnFfcmVzZXQoKGlycSksIHR5cGUjI0lN UiwgdHlwZSMjSUlSLCB0eXBlIyNJRVIpCiAKLSNkZWZpbmUgR0VOMl9JUlFfUkVTRVQodW5jb3Jl KSBcCi0JZ2VuMl9pcnFfcmVzZXQodW5jb3JlKQorI2RlZmluZSBHRU4yX0lSUV9SRVNFVChpcnEp IFwKKwlnZW4yX2lycV9yZXNldChpcnEpCiAKIC8qCiAgKiBXZSBzaG91bGQgY2xlYXIgSU1SIGF0 IHByZWluc3RhbGwvdW5pbnN0YWxsLCBhbmQganVzdCBjaGVjayBhdCBwb3N0aW5zdGFsbC4KICAq Lwotc3RhdGljIHZvaWQgZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8oc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJlZykKK3N0YXRpYyB2b2lkIGdlbjNfYXNzZXJ0X2lpcl9p c196ZXJvKHN0cnVjdCBpbnRlbF9pcnEgKmlycSwgaTkxNV9yZWdfdCByZWcpCiB7Ci0JdTMyIHZh bCA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgcmVnKTsKKwl1MzIgdmFsID0gaW50ZWxfdW5j b3JlX3JlYWQoaXJxLT51bmNvcmUsIHJlZyk7CiAKIAlpZiAodmFsID09IDApCiAJCXJldHVybjsK IAogCVdBUk4oMSwgIkludGVycnVwdCByZWdpc3RlciAweCV4IGlzIG5vdCB6ZXJvOiAweCUwOHhc biIsCiAJICAgICBpOTE1X21taW9fcmVnX29mZnNldChyZWcpLCB2YWwpOwotCWludGVsX3VuY29y ZV93cml0ZSh1bmNvcmUsIHJlZywgMHhmZmZmZmZmZik7Ci0JaW50ZWxfdW5jb3JlX3Bvc3Rpbmdf cmVhZCh1bmNvcmUsIHJlZyk7Ci0JaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgcmVnLCAweGZm ZmZmZmZmKTsKLQlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkKHVuY29yZSwgcmVnKTsKKwlpbnRl bF91bmNvcmVfd3JpdGUoaXJxLT51bmNvcmUsIHJlZywgMHhmZmZmZmZmZik7CisJaW50ZWxfdW5j b3JlX3Bvc3RpbmdfcmVhZChpcnEtPnVuY29yZSwgcmVnKTsKKwlpbnRlbF91bmNvcmVfd3JpdGUo aXJxLT51bmNvcmUsIHJlZywgMHhmZmZmZmZmZik7CisJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVh ZChpcnEtPnVuY29yZSwgcmVnKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuMl9hc3NlcnRfaWlyX2lz X3plcm8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQorc3RhdGljIHZvaWQgZ2VuMl9hc3Nl cnRfaWlyX2lzX3plcm8oc3RydWN0IGludGVsX2lycSAqaXJxKQogewotCXUxNiB2YWwgPSBpbnRl bF91bmNvcmVfcmVhZDE2KHVuY29yZSwgR0VOMl9JSVIpOworCXUxNiB2YWwgPSBpbnRlbF91bmNv cmVfcmVhZDE2KGlycS0+dW5jb3JlLCBHRU4yX0lJUik7CiAKIAlpZiAodmFsID09IDApCiAJCXJl dHVybjsKIAogCVdBUk4oMSwgIkludGVycnVwdCByZWdpc3RlciAweCV4IGlzIG5vdCB6ZXJvOiAw eCUwOHhcbiIsCiAJICAgICBpOTE1X21taW9fcmVnX29mZnNldChHRU4yX0lJUiksIHZhbCk7Ci0J aW50ZWxfdW5jb3JlX3dyaXRlMTYodW5jb3JlLCBHRU4yX0lJUiwgMHhmZmZmKTsKLQlpbnRlbF91 bmNvcmVfcG9zdGluZ19yZWFkMTYodW5jb3JlLCBHRU4yX0lJUik7Ci0JaW50ZWxfdW5jb3JlX3dy aXRlMTYodW5jb3JlLCBHRU4yX0lJUiwgMHhmZmZmKTsKLQlpbnRlbF91bmNvcmVfcG9zdGluZ19y ZWFkMTYodW5jb3JlLCBHRU4yX0lJUik7CisJaW50ZWxfdW5jb3JlX3dyaXRlMTYoaXJxLT51bmNv cmUsIEdFTjJfSUlSLCAweGZmZmYpOworCWludGVsX3VuY29yZV9wb3N0aW5nX3JlYWQxNihpcnEt PnVuY29yZSwgR0VOMl9JSVIpOworCWludGVsX3VuY29yZV93cml0ZTE2KGlycS0+dW5jb3JlLCBH RU4yX0lJUiwgMHhmZmZmKTsKKwlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkMTYoaXJxLT51bmNv cmUsIEdFTjJfSUlSKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuM19pcnFfaW5pdChzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUsCitzdGF0aWMgdm9pZCBnZW4zX2lycV9pbml0KHN0cnVjdCBpbnRl bF9pcnEgKmlycSwKIAkJCSAgaTkxNV9yZWdfdCBpbXIsIHUzMiBpbXJfdmFsLAogCQkJICBpOTE1 X3JlZ190IGllciwgdTMyIGllcl92YWwsCiAJCQkgIGk5MTVfcmVnX3QgaWlyKQogewotCWdlbjNf YXNzZXJ0X2lpcl9pc196ZXJvKHVuY29yZSwgaWlyKTsKKwlnZW4zX2Fzc2VydF9paXJfaXNfemVy byhpcnEsIGlpcik7CiAKLQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBpZXIsIGllcl92YWwp OwotCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIGltciwgaW1yX3ZhbCk7Ci0JaW50ZWxfdW5j b3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGltcik7CisJaW50ZWxfdW5jb3JlX3dyaXRlKGlycS0+ dW5jb3JlLCBpZXIsIGllcl92YWwpOworCWludGVsX3VuY29yZV93cml0ZShpcnEtPnVuY29yZSwg aW1yLCBpbXJfdmFsKTsKKwlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkKGlycS0+dW5jb3JlLCBp bXIpOwogfQogCi1zdGF0aWMgdm9pZCBnZW4yX2lycV9pbml0KHN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSwKK3N0YXRpYyB2b2lkIGdlbjJfaXJxX2luaXQoc3RydWN0IGludGVsX2lycSAqaXJx LAogCQkJICB1MzIgaW1yX3ZhbCwgdTMyIGllcl92YWwpCiB7Ci0JZ2VuMl9hc3NlcnRfaWlyX2lz X3plcm8odW5jb3JlKTsKKwlnZW4yX2Fzc2VydF9paXJfaXNfemVybyhpcnEpOwogCi0JaW50ZWxf dW5jb3JlX3dyaXRlMTYodW5jb3JlLCBHRU4yX0lFUiwgaWVyX3ZhbCk7Ci0JaW50ZWxfdW5jb3Jl X3dyaXRlMTYodW5jb3JlLCBHRU4yX0lNUiwgaW1yX3ZhbCk7Ci0JaW50ZWxfdW5jb3JlX3Bvc3Rp bmdfcmVhZDE2KHVuY29yZSwgR0VOMl9JTVIpOworCWludGVsX3VuY29yZV93cml0ZTE2KGlycS0+ dW5jb3JlLCBHRU4yX0lFUiwgaWVyX3ZhbCk7CisJaW50ZWxfdW5jb3JlX3dyaXRlMTYoaXJxLT51 bmNvcmUsIEdFTjJfSU1SLCBpbXJfdmFsKTsKKwlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkMTYo aXJxLT51bmNvcmUsIEdFTjJfSU1SKTsKIH0KIAotI2RlZmluZSBHRU44X0lSUV9JTklUX05EWCh1 bmNvcmUsIHR5cGUsIHdoaWNoLCBpbXJfdmFsLCBpZXJfdmFsKSBcCisjZGVmaW5lIEdFTjhfSVJR X0lOSVRfTkRYKGlycSwgdHlwZSwgd2hpY2gsIGltcl92YWwsIGllcl92YWwpIFwKICh7IFwKIAl1 bnNpZ25lZCBpbnQgd2hpY2hfID0gd2hpY2g7IFwKLQlnZW4zX2lycV9pbml0KCh1bmNvcmUpLCBc CisJZ2VuM19pcnFfaW5pdCgoaXJxKSwgXAogCQkgICAgICBHRU44XyMjdHlwZSMjX0lNUih3aGlj aF8pLCBpbXJfdmFsLCBcCiAJCSAgICAgIEdFTjhfIyN0eXBlIyNfSUVSKHdoaWNoXyksIGllcl92 YWwsIFwKIAkJICAgICAgR0VOOF8jI3R5cGUjI19JSVIod2hpY2hfKSk7IFwKIH0pCiAKLSNkZWZp bmUgR0VOM19JUlFfSU5JVCh1bmNvcmUsIHR5cGUsIGltcl92YWwsIGllcl92YWwpIFwKLQlnZW4z X2lycV9pbml0KCh1bmNvcmUpLCBcCisjZGVmaW5lIEdFTjNfSVJRX0lOSVQoaXJxLCB0eXBlLCBp bXJfdmFsLCBpZXJfdmFsKSBcCisJZ2VuM19pcnFfaW5pdCgoaXJxKSwgXAogCQkgICAgICB0eXBl IyNJTVIsIGltcl92YWwsIFwKIAkJICAgICAgdHlwZSMjSUVSLCBpZXJfdmFsLCBcCiAJCSAgICAg IHR5cGUjI0lJUikKIAotI2RlZmluZSBHRU4yX0lSUV9JTklUKHVuY29yZSwgaW1yX3ZhbCwgaWVy X3ZhbCkgXAotCWdlbjJfaXJxX2luaXQoKHVuY29yZSksIGltcl92YWwsIGllcl92YWwpCisjZGVm aW5lIEdFTjJfSVJRX0lOSVQoaXJxLCBpbXJfdmFsLCBpZXJfdmFsKSBcCisJZ2VuMl9pcnFfaW5p dCgoaXJxKSwgaW1yX3ZhbCwgaWVyX3ZhbCkKIAogc3RhdGljIHZvaWQgZ2VuNl9ycHNfaXJxX2hh bmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1faWlyKTsKIHN0 YXRpYyB2b2lkIGdlbjlfZ3VjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIHBtX2lpcik7CkBAIC0zMzY4LDEyICszMzY4LDEyIEBAIHN0YXRpYyB2b2lk IGk5NDVnbV92Ymxhbmtfd29ya19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAogc3RhdGljIHZvaWQgaWJ4X2lycV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51 bmNvcmU7CisJc3RydWN0IGludGVsX2lycSAqaXJxID0gJmRldl9wcml2LT5pcnE7CiAKIAlpZiAo SEFTX1BDSF9OT1AoZGV2X3ByaXYpKQogCQlyZXR1cm47CiAKLQlHRU4zX0lSUV9SRVNFVCh1bmNv cmUsIFNERSk7CisJR0VOM19JUlFfUkVTRVQoaXJxLCBTREUpOwogCiAJaWYgKEhBU19QQ0hfQ1BU KGRldl9wcml2KSB8fCBIQVNfUENIX0xQVChkZXZfcHJpdikpCiAJCUk5MTVfV1JJVEUoU0VSUl9J TlQsIDB4ZmZmZmZmZmYpOwpAQCAtMzQwMSwxNiArMzQwMSwxNiBAQCBzdGF0aWMgdm9pZCBpYnhf aXJxX3ByZV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiBzdGF0aWMgdm9p ZCBnZW41X2d0X2lycV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 Ci0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7CisJc3Ry dWN0IGludGVsX2lycSAqaXJxID0gJmRldl9wcml2LT5pcnE7CiAKLQlHRU4zX0lSUV9SRVNFVCh1 bmNvcmUsIEdUKTsKKwlHRU4zX0lSUV9SRVNFVChpcnEsIEdUKTsKIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA2KQotCQlHRU4zX0lSUV9SRVNFVCh1bmNvcmUsIEdFTjZfUE0pOworCQlHRU4z X0lSUV9SRVNFVChpcnEsIEdFTjZfUE0pOwogfQogCiBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9p cnFfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOworCXN0cnVjdCBpbnRlbF9p cnEgKmlycSA9ICZkZXZfcHJpdi0+aXJxOwogCiAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYp KQogCQlJOTE1X1dSSVRFKERQSU5WR1RULCBEUElOVkdUVF9TVEFUVVNfTUFTS19DSFYpOwpAQCAt MzQyMiwxMyArMzQyMiwxMyBAQCBzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9pcnFfcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaTl4eF9waXBlc3RhdF9pcnFfcmVz ZXQoZGV2X3ByaXYpOwogCi0JR0VOM19JUlFfUkVTRVQodW5jb3JlLCBWTFZfKTsKKwlHRU4zX0lS UV9SRVNFVChpcnEsIFZMVl8pOwogCWRldl9wcml2LT5pcnEubWFzayA9IH4wdTsKIH0KIAogc3Rh dGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3By aXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfaXJxICppcnEgPSAmZGV2X3ByaXYtPmlycTsKIAog CXUzMiBwaXBlc3RhdF9tYXNrOwogCXUzMiBlbmFibGVfbWFzazsKQEAgLTM0NTQsNyArMzQ1NCw3 IEBAIHN0YXRpYyB2b2lkIHZsdl9kaXNwbGF5X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlkZXZfcHJpdi0+aXJxLm1hc2sgPSB+ZW5hYmxlX21h c2s7CiAKLQlHRU4zX0lSUV9JTklUKHVuY29yZSwgVkxWXywgZGV2X3ByaXYtPmlycS5tYXNrLCBl bmFibGVfbWFzayk7CisJR0VOM19JUlFfSU5JVChpcnEsIFZMVl8sIGRldl9wcml2LT5pcnEubWFz aywgZW5hYmxlX21hc2spOwogfQogCiAvKiBkcm1fZG1hLmggaG9va3MKQEAgLTM0NjIsOSArMzQ2 Miw5IEBAIHN0YXRpYyB2b2lkIHZsdl9kaXNwbGF5X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBzdGF0aWMgdm9pZCBpcm9ubGFrZV9pcnFfcmVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRl dl9wcml2LT51bmNvcmU7CisJc3RydWN0IGludGVsX2lycSAqaXJxID0gJmRldl9wcml2LT5pcnE7 CiAKLQlHRU4zX0lSUV9SRVNFVCh1bmNvcmUsIERFKTsKKwlHRU4zX0lSUV9SRVNFVChpcnEsIERF KTsKIAlpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkKIAkJSTkxNV9XUklURShHRU43X0VSUl9JTlQs IDB4ZmZmZmZmZmYpOwogCkBAIC0zNDk1LDE4ICszNDk1LDE4IEBAIHN0YXRpYyB2b2lkIHZhbGxl eXZpZXdfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIHN0YXRpYyB2b2lkIGdl bjhfZ3RfaXJxX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3Qg aW50ZWxfaXJxICppcnEgPSAmZGV2X3ByaXYtPmlycTsKIAotCUdFTjhfSVJRX1JFU0VUX05EWCh1 bmNvcmUsIEdULCAwKTsKLQlHRU44X0lSUV9SRVNFVF9ORFgodW5jb3JlLCBHVCwgMSk7Ci0JR0VO OF9JUlFfUkVTRVRfTkRYKHVuY29yZSwgR1QsIDIpOwotCUdFTjhfSVJRX1JFU0VUX05EWCh1bmNv cmUsIEdULCAzKTsKKwlHRU44X0lSUV9SRVNFVF9ORFgoaXJxLCBHVCwgMCk7CisJR0VOOF9JUlFf UkVTRVRfTkRYKGlycSwgR1QsIDEpOworCUdFTjhfSVJRX1JFU0VUX05EWChpcnEsIEdULCAyKTsK KwlHRU44X0lSUV9SRVNFVF9ORFgoaXJxLCBHVCwgMyk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjhf aXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOworCXN0cnVjdCBpbnRlbF9pcnEgKmlycSA9ICZkZXZf cHJpdi0+aXJxOwogCWludCBwaXBlOwogCiAJZ2VuOF9tYXN0ZXJfaW50cl9kaXNhYmxlKGRldl9w cml2LT51bmNvcmUucmVncyk7CkBAIC0zNTE5LDExICszNTE5LDExIEBAIHN0YXRpYyB2b2lkIGdl bjhfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZm9yX2VhY2hfcGlwZShkZXZf cHJpdiwgcGlwZSkKIAkJaWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfaXNfZW5hYmxlZChkZXZfcHJp diwKIAkJCQkJCSAgIFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUpKSkKLQkJCUdFTjhfSVJRX1JFU0VU X05EWCh1bmNvcmUsIERFX1BJUEUsIHBpcGUpOworCQkJR0VOOF9JUlFfUkVTRVRfTkRYKGlycSwg REVfUElQRSwgcGlwZSk7CiAKLQlHRU4zX0lSUV9SRVNFVCh1bmNvcmUsIEdFTjhfREVfUE9SVF8p OwotCUdFTjNfSVJRX1JFU0VUKHVuY29yZSwgR0VOOF9ERV9NSVNDXyk7Ci0JR0VOM19JUlFfUkVT RVQodW5jb3JlLCBHRU44X1BDVV8pOworCUdFTjNfSVJRX1JFU0VUKGlycSwgR0VOOF9ERV9QT1JU Xyk7CisJR0VOM19JUlFfUkVTRVQoaXJxLCBHRU44X0RFX01JU0NfKTsKKwlHRU4zX0lSUV9SRVNF VChpcnEsIEdFTjhfUENVXyk7CiAKIAlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCiAJCWli eF9pcnFfcmVzZXQoZGV2X3ByaXYpOwpAQCAtMzU0OSw3ICszNTQ5LDcgQEAgc3RhdGljIHZvaWQg Z2VuMTFfZ3RfaXJxX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHN0 YXRpYyB2b2lkIGdlbjExX2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7CisJc3RydWN0IGlu dGVsX2lycSAqaXJxID0gJmRldl9wcml2LT5pcnE7CiAJaW50IHBpcGU7CiAKIAlnZW4xMV9tYXN0 ZXJfaW50cl9kaXNhYmxlKGRldl9wcml2LT51bmNvcmUucmVncyk7CkBAIC0zNTY0LDIyICszNTY0 LDIyIEBAIHN0YXRpYyB2b2lkIGdlbjExX2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCiAJCWlmIChpbnRlbF9kaXNwbGF5X3Bv d2VyX2lzX2VuYWJsZWQoZGV2X3ByaXYsCiAJCQkJCQkgICBQT1dFUl9ET01BSU5fUElQRShwaXBl KSkpCi0JCQlHRU44X0lSUV9SRVNFVF9ORFgodW5jb3JlLCBERV9QSVBFLCBwaXBlKTsKKwkJCUdF TjhfSVJRX1JFU0VUX05EWChpcnEsIERFX1BJUEUsIHBpcGUpOwogCi0JR0VOM19JUlFfUkVTRVQo dW5jb3JlLCBHRU44X0RFX1BPUlRfKTsKLQlHRU4zX0lSUV9SRVNFVCh1bmNvcmUsIEdFTjhfREVf TUlTQ18pOwotCUdFTjNfSVJRX1JFU0VUKHVuY29yZSwgR0VOMTFfREVfSFBEXyk7Ci0JR0VOM19J UlFfUkVTRVQodW5jb3JlLCBHRU4xMV9HVV9NSVNDXyk7Ci0JR0VOM19JUlFfUkVTRVQodW5jb3Jl LCBHRU44X1BDVV8pOworCUdFTjNfSVJRX1JFU0VUKGlycSwgR0VOOF9ERV9QT1JUXyk7CisJR0VO M19JUlFfUkVTRVQoaXJxLCBHRU44X0RFX01JU0NfKTsKKwlHRU4zX0lSUV9SRVNFVChpcnEsIEdF TjExX0RFX0hQRF8pOworCUdFTjNfSVJRX1JFU0VUKGlycSwgR0VOMTFfR1VfTUlTQ18pOworCUdF TjNfSVJRX1JFU0VUKGlycSwgR0VOOF9QQ1VfKTsKIAogCWlmIChJTlRFTF9QQ0hfVFlQRShkZXZf cHJpdikgPj0gUENIX0lDUCkKLQkJR0VOM19JUlFfUkVTRVQodW5jb3JlLCBTREUpOworCQlHRU4z X0lSUV9SRVNFVChpcnEsIFNERSk7CiB9CiAKIHZvaWQgZ2VuOF9pcnFfcG93ZXJfd2VsbF9wb3N0 X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgICB1OCBw aXBlX21hc2spCiB7Ci0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51 bmNvcmU7CisJc3RydWN0IGludGVsX2lycSAqaXJxID0gJmRldl9wcml2LT5pcnE7CiAKIAl1MzIg ZXh0cmFfaWVyID0gR0VOOF9QSVBFX1ZCTEFOSyB8IEdFTjhfUElQRV9GSUZPX1VOREVSUlVOOwog CWVudW0gcGlwZSBwaXBlOwpAQCAtMzU5Miw3ICszNTkyLDcgQEAgdm9pZCBnZW44X2lycV9wb3dl cl93ZWxsX3Bvc3RfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9 CiAKIAlmb3JfZWFjaF9waXBlX21hc2tlZChkZXZfcHJpdiwgcGlwZSwgcGlwZV9tYXNrKQotCQlH RU44X0lSUV9JTklUX05EWCh1bmNvcmUsIERFX1BJUEUsIHBpcGUsCisJCUdFTjhfSVJRX0lOSVRf TkRYKGlycSwgREVfUElQRSwgcGlwZSwKIAkJCQkgIGRldl9wcml2LT5pcnEuZGVfbWFza1twaXBl XSwKIAkJCQkgIH5kZXZfcHJpdi0+aXJxLmRlX21hc2tbcGlwZV0gfCBleHRyYV9pZXIpOwogCkBA IC0zNjAyLDcgKzM2MDIsNyBAQCB2b2lkIGdlbjhfaXJxX3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogdm9pZCBnZW44X2lycV9wb3dlcl93 ZWxsX3ByZV9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkg ICAgIHU4IHBpcGVfbWFzaykKIHsKLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2 X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfaXJxICppcnEgPSAmZGV2X3ByaXYtPmlycTsK IAllbnVtIHBpcGUgcGlwZTsKIAogCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnEubG9jayk7 CkBAIC0zNjEzLDcgKzM2MTMsNyBAQCB2b2lkIGdlbjhfaXJxX3Bvd2VyX3dlbGxfcHJlX2Rpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAogCWZvcl9lYWNoX3Bp cGVfbWFza2VkKGRldl9wcml2LCBwaXBlLCBwaXBlX21hc2spCi0JCUdFTjhfSVJRX1JFU0VUX05E WCh1bmNvcmUsIERFX1BJUEUsIHBpcGUpOworCQlHRU44X0lSUV9SRVNFVF9ORFgoaXJxLCBERV9Q SVBFLCBwaXBlKTsKIAogCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycS5sb2NrKTsKIApA QCAtMzYyNCwxNCArMzYyNCwxNCBAQCB2b2lkIGdlbjhfaXJxX3Bvd2VyX3dlbGxfcHJlX2Rpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgY2hlcnJ5 dmlld19pcnFfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7CisJc3RydWN0IGludGVsX2lycSAqaXJxID0g JmRldl9wcml2LT5pcnE7CiAKIAlJOTE1X1dSSVRFKEdFTjhfTUFTVEVSX0lSUSwgMCk7CiAJUE9T VElOR19SRUFEKEdFTjhfTUFTVEVSX0lSUSk7CiAKIAlnZW44X2d0X2lycV9yZXNldChkZXZfcHJp dik7CiAKLQlHRU4zX0lSUV9SRVNFVCh1bmNvcmUsIEdFTjhfUENVXyk7CisJR0VOM19JUlFfUkVT RVQoaXJxLCBHRU44X1BDVV8pOwogCiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycS5sb2Nr KTsKIAlpZiAoZGV2X3ByaXYtPmlycS5kaXNwbGF5X2ludGVycnVwdHNfZW5hYmxlZCkKQEAgLTM5 MDMsNyArMzkwMyw3IEBAIHN0YXRpYyB2b2lkIGlieF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAllbHNlCiAJCW1hc2sgPSBTREVfR01CVVNfQ1BUOwogCi0JZ2VuM19h c3NlcnRfaWlyX2lzX3plcm8oJmRldl9wcml2LT51bmNvcmUsIFNERUlJUik7CisJZ2VuM19hc3Nl cnRfaWlyX2lzX3plcm8oJmRldl9wcml2LT5pcnEsIFNERUlJUik7CiAJSTkxNV9XUklURShTREVJ TVIsIH5tYXNrKTsKIAogCWlmIChIQVNfUENIX0lCWChkZXZfcHJpdikgfHwgSEFTX1BDSF9DUFQo ZGV2X3ByaXYpIHx8CkBAIC0zOTE2LDcgKzM5MTYsNyBAQCBzdGF0aWMgdm9pZCBpYnhfaXJxX3Bv c3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiBzdGF0aWMgdm9pZCBnZW41X2d0X2ly cV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfaXJxICppcnEgPSAm ZGV2X3ByaXYtPmlycTsKIAl1MzIgcG1faXJxcywgZ3RfaXJxczsKIAogCXBtX2lycXMgPSBndF9p cnFzID0gMDsKQEAgLTM5MzUsNyArMzkzNSw3IEBAIHN0YXRpYyB2b2lkIGdlbjVfZ3RfaXJxX3Bv c3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWd0X2lycXMgfD0gR1RfQkxUX1VT RVJfSU5URVJSVVBUIHwgR1RfQlNEX1VTRVJfSU5URVJSVVBUOwogCX0KIAotCUdFTjNfSVJRX0lO SVQodW5jb3JlLCBHVCwgZGV2X3ByaXYtPmlycS5ndF9tYXNrLCBndF9pcnFzKTsKKwlHRU4zX0lS UV9JTklUKGlycSwgR1QsIGRldl9wcml2LT5pcnEuZ3RfbWFzaywgZ3RfaXJxcyk7CiAKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7CiAJCS8qCkBAIC0zOTQ4LDE0ICszOTQ4LDE0IEBA IHN0YXRpYyB2b2lkIGdlbjVfZ3RfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJCX0KIAogCQlkZXZfcHJpdi0+aXJxLnBtX2ltciA9IDB4ZmZmZmZmZmY7Ci0JCUdFTjNf SVJRX0lOSVQodW5jb3JlLCBHRU42X1BNLCBkZXZfcHJpdi0+aXJxLnBtX2ltciwgcG1faXJxcyk7 CisJCUdFTjNfSVJRX0lOSVQoaXJxLCBHRU42X1BNLCBkZXZfcHJpdi0+aXJxLnBtX2ltciwgcG1f aXJxcyk7CiAJfQogfQogCiBzdGF0aWMgaW50IGlyb25sYWtlX2lycV9wb3N0aW5zdGFsbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3By aXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfaXJxICppcnEgPSAmZGV2X3ByaXYtPmlycTsKIAl1 MzIgZGlzcGxheV9tYXNrLCBleHRyYV9tYXNrOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNykgewpAQCAtMzk3NCw3ICszOTc0LDcgQEAgc3RhdGljIGludCBpcm9ubGFrZV9pcnFfcG9z dGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiAKIAlpZiAoSVNfSEFTV0VMTChk ZXZfcHJpdikpIHsKLQkJZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8odW5jb3JlLCBFRFBfUFNSX0lJ Uik7CisJCWdlbjNfYXNzZXJ0X2lpcl9pc196ZXJvKGlycSwgRURQX1BTUl9JSVIpOwogCQlpbnRl bF9wc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYsIGRldl9wcml2LT5wc3IuZGVidWcpOwogCQlkaXNw bGF5X21hc2sgfD0gREVfRURQX1BTUl9JTlRfSFNXOwogCX0KQEAgLTM5ODMsNyArMzk4Myw3IEBA IHN0YXRpYyBpbnQgaXJvbmxha2VfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAKIAlpYnhfaXJxX3ByZV9wb3N0aW5zdGFsbChkZXYpOwogCi0JR0VOM19JUlFfSU5JVCh1 bmNvcmUsIERFLCBkZXZfcHJpdi0+aXJxLm1hc2ssCisJR0VOM19JUlFfSU5JVChpcnEsIERFLCBk ZXZfcHJpdi0+aXJxLm1hc2ssCiAJCSAgICAgIGRpc3BsYXlfbWFzayB8IGV4dHJhX21hc2spOwog CiAJZ2VuNV9ndF9pcnFfcG9zdGluc3RhbGwoZGV2KTsKQEAgLTQwNTQsNyArNDA1NCw3IEBAIHN0 YXRpYyBpbnQgdmFsbGV5dmlld19pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAogc3RhdGljIHZvaWQgZ2VuOF9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZk ZXZfcHJpdi0+dW5jb3JlOworCXN0cnVjdCBpbnRlbF9pcnEgKmlycSA9ICZkZXZfcHJpdi0+aXJx OwogCiAJLyogVGhlc2UgYXJlIGludGVycnVwdHMgd2UnbGwgdG9nZ2xlIHdpdGggdGhlIHJpbmcg bWFzayByZWdpc3RlciAqLwogCXUzMiBndF9pbnRlcnJ1cHRzW10gPSB7CkBAIC00MDc2LDE5ICs0 MDc2LDE5IEBAIHN0YXRpYyB2b2lkIGdlbjhfZ3RfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWRldl9wcml2LT5pcnEucG1faWVyID0gMHgwOwog CWRldl9wcml2LT5pcnEucG1faW1yID0gfmRldl9wcml2LT5pcnEucG1faWVyOwotCUdFTjhfSVJR X0lOSVRfTkRYKHVuY29yZSwgR1QsIDAsIH5ndF9pbnRlcnJ1cHRzWzBdLCBndF9pbnRlcnJ1cHRz WzBdKTsKLQlHRU44X0lSUV9JTklUX05EWCh1bmNvcmUsIEdULCAxLCB+Z3RfaW50ZXJydXB0c1sx XSwgZ3RfaW50ZXJydXB0c1sxXSk7CisJR0VOOF9JUlFfSU5JVF9ORFgoaXJxLCBHVCwgMCwgfmd0 X2ludGVycnVwdHNbMF0sIGd0X2ludGVycnVwdHNbMF0pOworCUdFTjhfSVJRX0lOSVRfTkRYKGly cSwgR1QsIDEsIH5ndF9pbnRlcnJ1cHRzWzFdLCBndF9pbnRlcnJ1cHRzWzFdKTsKIAkvKgogCSAq IFJQUyBpbnRlcnJ1cHRzIHdpbGwgZ2V0IGVuYWJsZWQvZGlzYWJsZWQgb24gZGVtYW5kIHdoZW4g UlBTIGl0c2VsZgogCSAqIGlzIGVuYWJsZWQvZGlzYWJsZWQuIFNhbWUgd2lsIGJlIHRoZSBjYXNl IGZvciBHdUMgaW50ZXJydXB0cy4KIAkgKi8KLQlHRU44X0lSUV9JTklUX05EWCh1bmNvcmUsIEdU LCAyLCBkZXZfcHJpdi0+aXJxLnBtX2ltciwgZGV2X3ByaXYtPmlycS5wbV9pZXIpOwotCUdFTjhf SVJRX0lOSVRfTkRYKHVuY29yZSwgR1QsIDMsIH5ndF9pbnRlcnJ1cHRzWzNdLCBndF9pbnRlcnJ1 cHRzWzNdKTsKKwlHRU44X0lSUV9JTklUX05EWChpcnEsIEdULCAyLCBkZXZfcHJpdi0+aXJxLnBt X2ltciwgZGV2X3ByaXYtPmlycS5wbV9pZXIpOworCUdFTjhfSVJRX0lOSVRfTkRYKGlycSwgR1Qs IDMsIH5ndF9pbnRlcnJ1cHRzWzNdLCBndF9pbnRlcnJ1cHRzWzNdKTsKIH0KIAogc3RhdGljIHZv aWQgZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3Jl OworCXN0cnVjdCBpbnRlbF9pcnEgKmlycSA9ICZkZXZfcHJpdi0+aXJxOwogCiAJdTMyIGRlX3Bp cGVfbWFza2VkID0gR0VOOF9QSVBFX0NEQ0xLX0NSQ19ET05FOwogCXUzMiBkZV9waXBlX2VuYWJs ZXM7CkBAIC00MTI1LDcgKzQxMjUsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2RlX2lycV9wb3N0aW5z dGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZWxzZSBpZiAoSVNfQlJP QURXRUxMKGRldl9wcml2KSkKIAkJZGVfcG9ydF9lbmFibGVzIHw9IEdFTjhfUE9SVF9EUF9BX0hP VFBMVUc7CiAKLQlnZW4zX2Fzc2VydF9paXJfaXNfemVybyh1bmNvcmUsIEVEUF9QU1JfSUlSKTsK KwlnZW4zX2Fzc2VydF9paXJfaXNfemVybyhpcnEsIEVEUF9QU1JfSUlSKTsKIAlpbnRlbF9wc3Jf aXJxX2NvbnRyb2woZGV2X3ByaXYsIGRldl9wcml2LT5wc3IuZGVidWcpOwogCiAJZm9yX2VhY2hf cGlwZShkZXZfcHJpdiwgcGlwZSkgewpAQCAtNDEzMywyMCArNDEzMywyMCBAQCBzdGF0aWMgdm9p ZCBnZW44X2RlX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAKIAkJaWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfaXNfZW5hYmxlZChkZXZfcHJpdiwKIAkJ CQlQT1dFUl9ET01BSU5fUElQRShwaXBlKSkpCi0JCQlHRU44X0lSUV9JTklUX05EWCh1bmNvcmUs IERFX1BJUEUsIHBpcGUsCisJCQlHRU44X0lSUV9JTklUX05EWChpcnEsIERFX1BJUEUsIHBpcGUs CiAJCQkJCSAgZGV2X3ByaXYtPmlycS5kZV9tYXNrW3BpcGVdLAogCQkJCQkgIGRlX3BpcGVfZW5h Ymxlcyk7CiAJfQogCi0JR0VOM19JUlFfSU5JVCh1bmNvcmUsIEdFTjhfREVfUE9SVF8sIH5kZV9w b3J0X21hc2tlZCwgZGVfcG9ydF9lbmFibGVzKTsKLQlHRU4zX0lSUV9JTklUKHVuY29yZSwgR0VO OF9ERV9NSVNDXywgfmRlX21pc2NfbWFza2VkLCBkZV9taXNjX21hc2tlZCk7CisJR0VOM19JUlFf SU5JVChpcnEsIEdFTjhfREVfUE9SVF8sIH5kZV9wb3J0X21hc2tlZCwgZGVfcG9ydF9lbmFibGVz KTsKKwlHRU4zX0lSUV9JTklUKGlycSwgR0VOOF9ERV9NSVNDXywgfmRlX21pc2NfbWFza2VkLCBk ZV9taXNjX21hc2tlZCk7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewogCQl1 MzIgZGVfaHBkX21hc2tlZCA9IDA7CiAJCXUzMiBkZV9ocGRfZW5hYmxlcyA9IEdFTjExX0RFX1RD X0hPVFBMVUdfTUFTSyB8CiAJCQkJICAgICBHRU4xMV9ERV9UQlRfSE9UUExVR19NQVNLOwogCi0J CUdFTjNfSVJRX0lOSVQodW5jb3JlLCBHRU4xMV9ERV9IUERfLCB+ZGVfaHBkX21hc2tlZCwKKwkJ R0VOM19JUlFfSU5JVChpcnEsIEdFTjExX0RFX0hQRF8sIH5kZV9ocGRfbWFza2VkLAogCQkJICAg ICAgZGVfaHBkX2VuYWJsZXMpOwogCQlnZW4xMV9ocGRfZGV0ZWN0aW9uX3NldHVwKGRldl9wcml2 KTsKIAl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7CkBAIC00MjEwLDcgKzQyMTAs NyBAQCBzdGF0aWMgdm9pZCBpY3BfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJSTkxNV9XUklURShTREVJRVIsIDB4ZmZmZmZmZmYpOwogCVBPU1RJTkdfUkVBRChTREVJ RVIpOwogCi0JZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8oJmRldl9wcml2LT51bmNvcmUsIFNERUlJ Uik7CisJZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8oJmRldl9wcml2LT5pcnEsIFNERUlJUik7CiAJ STkxNV9XUklURShTREVJTVIsIH5tYXNrKTsKIAogCWljcF9ocGRfZGV0ZWN0aW9uX3NldHVwKGRl dl9wcml2KTsKQEAgLTQyMTksNyArNDIxOSw3IEBAIHN0YXRpYyB2b2lkIGljcF9pcnFfcG9zdGlu c3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHN0YXRpYyBpbnQgZ2VuMTFfaXJxX3Bvc3Rp bnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfaXJxICppcnEgPSAmZGV2 X3ByaXYtPmlycTsKIAl1MzIgZ3VfbWlzY19tYXNrZWQgPSBHRU4xMV9HVV9NSVNDX0dTRTsKIAog CWlmIChJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPj0gUENIX0lDUCkKQEAgLTQyMjgsNyArNDIy OCw3IEBAIHN0YXRpYyBpbnQgZ2VuMTFfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJZ2VuMTFfZ3RfaXJxX3Bvc3RpbnN0YWxsKGRldl9wcml2KTsKIAlnZW44X2RlX2ly cV9wb3N0aW5zdGFsbChkZXZfcHJpdik7CiAKLQlHRU4zX0lSUV9JTklUKHVuY29yZSwgR0VOMTFf R1VfTUlTQ18sIH5ndV9taXNjX21hc2tlZCwgZ3VfbWlzY19tYXNrZWQpOworCUdFTjNfSVJRX0lO SVQoaXJxLCBHRU4xMV9HVV9NSVNDXywgfmd1X21pc2NfbWFza2VkLCBndV9taXNjX21hc2tlZCk7 CiAKIAlJOTE1X1dSSVRFKEdFTjExX0RJU1BMQVlfSU5UX0NUTCwgR0VOMTFfRElTUExBWV9JUlFf RU5BQkxFKTsKIApAQCAtNDI1OCwxNyArNDI1OCwxNyBAQCBzdGF0aWMgaW50IGNoZXJyeXZpZXdf aXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiBzdGF0aWMgdm9pZCBpOHh4 X2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfaXJxICppcnEgPSAmZGV2 X3ByaXYtPmlycTsKIAogCWk5eHhfcGlwZXN0YXRfaXJxX3Jlc2V0KGRldl9wcml2KTsKIAotCUdF TjJfSVJRX1JFU0VUKHVuY29yZSk7CisJR0VOMl9JUlFfUkVTRVQoaXJxKTsKIH0KIAogc3RhdGlj IGludCBpOHh4X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxf aXJxICppcnEgPSAmZGV2X3ByaXYtPmlycTsKIAl1MTYgZW5hYmxlX21hc2s7CiAKIAlJOTE1X1dS SVRFMTYoRU1SLCB+KEk5MTVfRVJST1JfUEFHRV9UQUJMRSB8CkBAIC00Mjg2LDcgKzQyODYsNyBA QCBzdGF0aWMgaW50IGk4eHhfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJCUk5MTVfTUFTVEVSX0VSUk9SX0lOVEVSUlVQVCB8CiAJCUk5MTVfVVNFUl9JTlRFUlJVUFQ7 CiAKLQlHRU4yX0lSUV9JTklUKHVuY29yZSwgZGV2X3ByaXYtPmlycS5tYXNrLCBlbmFibGVfbWFz ayk7CisJR0VOMl9JUlFfSU5JVChpcnEsIGRldl9wcml2LT5pcnEubWFzaywgZW5hYmxlX21hc2sp OwogCiAJLyogSW50ZXJydXB0IHNldHVwIGlzIGFscmVhZHkgZ3VhcmFudGVlZCB0byBiZSBzaW5n bGUtdGhyZWFkZWQsIHRoaXMgaXMKIAkgKiBqdXN0IHRvIG1ha2UgdGhlIGFzc2VydF9zcGluX2xv Y2tlZCBjaGVjayBoYXBweS4gKi8KQEAgLTQ0MjIsNyArNDQyMiw3IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBpOHh4X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIHN0YXRpYyB2b2lkIGk5 MTVfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOworCXN0cnVjdCBpbnRlbF9pcnEgKmlycSA9ICZk ZXZfcHJpdi0+aXJxOwogCiAJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3ByaXYpKSB7CiAJCWk5 MTVfaG90cGx1Z19pbnRlcnJ1cHRfdXBkYXRlKGRldl9wcml2LCAweGZmZmZmZmZmLCAwKTsKQEAg LTQ0MzEsMTMgKzQ0MzEsMTMgQEAgc3RhdGljIHZvaWQgaTkxNV9pcnFfcmVzZXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAogCWk5eHhfcGlwZXN0YXRfaXJxX3Jlc2V0KGRldl9wcml2KTsKIAot CUdFTjNfSVJRX1JFU0VUKHVuY29yZSwgR0VOMl8pOworCUdFTjNfSVJRX1JFU0VUKGlycSwgR0VO Ml8pOwogfQogCiBzdGF0aWMgaW50IGk5MTVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwotCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3Jl OworCXN0cnVjdCBpbnRlbF9pcnEgKmlycSA9ICZkZXZfcHJpdi0+aXJxOwogCXUzMiBlbmFibGVf bWFzazsKIAogCUk5MTVfV1JJVEUoRU1SLCB+KEk5MTVfRVJST1JfUEFHRV9UQUJMRSB8CkBAIC00 NDY0LDcgKzQ0NjQsNyBAQCBzdGF0aWMgaW50IGk5MTVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCWRldl9wcml2LT5pcnEubWFzayAmPSB+STkxNV9ESVNQTEFZX1BP UlRfSU5URVJSVVBUOwogCX0KIAotCUdFTjNfSVJRX0lOSVQodW5jb3JlLCBHRU4yXywgZGV2X3By aXYtPmlycS5tYXNrLCBlbmFibGVfbWFzayk7CisJR0VOM19JUlFfSU5JVChpcnEsIEdFTjJfLCBk ZXZfcHJpdi0+aXJxLm1hc2ssIGVuYWJsZV9tYXNrKTsKIAogCS8qIEludGVycnVwdCBzZXR1cCBp cyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgc2luZ2xlLXRocmVhZGVkLCB0aGlzIGlzCiAJICog anVzdCB0byBtYWtlIHRoZSBhc3NlcnRfc3Bpbl9sb2NrZWQgY2hlY2sgaGFwcHkuICovCkBAIC00 NTM1LDIwICs0NTM1LDIwIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTE1X2lycV9oYW5kbGVyKGlu dCBpcnEsIHZvaWQgKmFyZykKIHN0YXRpYyB2b2lkIGk5NjVfaXJxX3Jlc2V0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5j b3JlOworCXN0cnVjdCBpbnRlbF9pcnEgKmlycSA9ICZkZXZfcHJpdi0+aXJxOwogCiAJaTkxNV9o b3RwbHVnX2ludGVycnVwdF91cGRhdGUoZGV2X3ByaXYsIDB4ZmZmZmZmZmYsIDApOwogCUk5MTVf V1JJVEUoUE9SVF9IT1RQTFVHX1NUQVQsIEk5MTVfUkVBRChQT1JUX0hPVFBMVUdfU1RBVCkpOwog CiAJaTl4eF9waXBlc3RhdF9pcnFfcmVzZXQoZGV2X3ByaXYpOwogCi0JR0VOM19JUlFfUkVTRVQo dW5jb3JlLCBHRU4yXyk7CisJR0VOM19JUlFfUkVTRVQoaXJxLCBHRU4yXyk7CiB9CiAKIHN0YXRp YyBpbnQgaTk2NV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7CisJc3RydWN0IGludGVs X2lycSAqaXJxID0gJmRldl9wcml2LT5pcnE7CiAJdTMyIGVuYWJsZV9tYXNrOwogCXUzMiBlcnJv cl9tYXNrOwogCkBAIC00NTg2LDcgKzQ1ODYsNyBAQCBzdGF0aWMgaW50IGk5NjVfaXJxX3Bvc3Rp bnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKElTX0c0WChkZXZfcHJpdikpCiAJ CWVuYWJsZV9tYXNrIHw9IEk5MTVfQlNEX1VTRVJfSU5URVJSVVBUOwogCi0JR0VOM19JUlFfSU5J VCh1bmNvcmUsIEdFTjJfLCBkZXZfcHJpdi0+aXJxLm1hc2ssIGVuYWJsZV9tYXNrKTsKKwlHRU4z X0lSUV9JTklUKGlycSwgR0VOMl8sIGRldl9wcml2LT5pcnEubWFzaywgZW5hYmxlX21hc2spOwog CiAJLyogSW50ZXJydXB0IHNldHVwIGlzIGFscmVhZHkgZ3VhcmFudGVlZCB0byBiZSBzaW5nbGUt dGhyZWFkZWQsIHRoaXMgaXMKIAkgKiBqdXN0IHRvIG1ha2UgdGhlIGFzc2VydF9zcGluX2xvY2tl ZCBjaGVjayBoYXBweS4gKi8KQEAgLTQ2OTgsNiArNDY5OCw4IEBAIHZvaWQgaW50ZWxfaXJxX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChJU19JOTQ1R00oZGV2 X3ByaXYpKQogCQlpOTQ1Z21fdmJsYW5rX3dvcmtfaW5pdChkZXZfcHJpdik7CiAKKwlkZXZfcHJp di0+aXJxLnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOworCiAJaW50ZWxfaHBkX2luaXRfd29y ayhkZXZfcHJpdik7CiAKIAlJTklUX1dPUksoJnJwcy0+d29yaywgZ2VuNl9wbV9ycHNfd29yayk7 Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==