From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v12 05/38] drm/i915: MEI interface definition Date: Sat, 9 Feb 2019 12:42:34 +0530 Message-ID: <1549696387-28268-6-git-send-email-ramalingam.c@intel.com> References: <1549696387-28268-1-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1549696387-28268-1-git-send-email-ramalingam.c@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, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, tomas.winkler@intel.com, uma.shankar@intel.com List-Id: dri-devel@lists.freedesktop.org RGVmaW5pbmcgdGhlIG1laS1pOTE1IGludGVyZmFjZSBmdW5jdGlvbnMgYW5kIGluaXRpYWxpemF0 aW9uIG9mCnRoZSBpbnRlcmZhY2UuCgp2MjoKICBBZGp1c3QgdG8gdGhlIG5ldyBpbnRlcmZhY2Ug Y2hhbmdlcy4gW1RvbWFzXQogIEFkZGVkIGZ1cnRoZXIgZGVidWcgbG9ncyBmb3IgdGhlIGZhaWx1 cmVzIGF0IE1FSSBpL2YuCiAgcG9ydCBpbiBoZGNwX3BvcnQgZGF0YSBpcyBlcXVpcHBlZCB0byBo YW5kbGUgLXZlIHZhbHVlcy4KdjM6CiAgbWVpIGNvbXAgaXMgbWF0Y2hlZCBmb3IgZ2xvYmFsIGk5 MTUgY29tcCBtYXN0ZXIuIFtEYW5pZWxdCiAgSW4gaGRjcF9zaGltIGhkY3BfcHJvdG9jb2woKSBp cyByZXBsYWNlZCB3aXRoIGNvbnN0IHZhcmlhYmxlLiBbRGFuaWVsXQogIG1laSB3cmFwcGVycyBh cmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hhbmdlIFtEYW5pZWxdCnY0OgogIHBvcnQgaW5p dGlhbGl6YXRpb24gaXMgZG9uZSBvbmx5IGF0IGhkY3AyX2luaXQgb25seSBbRGFudmV0XQp2NToK ICBJOTE1IHJlZ2lzdGVycyBhIHN1YmNvbXBvbmVudCB0byBiZSBtYXRjaGVkIHdpdGggbWVpX2hk Y3AgW0RhbmllbF0KdjY6CiAgSERDUF9kaXNhYmxlIGZvciBhbGwgY29ubmVjdG9ycyBpbmNhc2Ug b2YgY29tcF91bmJpbmQuCiAgVGVhciBkb3duIEhEQ1AgY29tcCBpbnRlcmZhY2UgYXQgaTkxNV91 bmxvYWQgW0RhbmllbF0Kdjc6CiAgQ29tcG9uZW50IGluaXQgYW5kIGZpbmkgYXJlIG1vdmVkIG91 dCBvZiBjb25uZWN0b3Igb3BzIFtEYW5pZWxdCiAgaGRjcF9kaXNhYmxlIGlzIG5vdCBjYWxsZWQg ZnJvbSB1bmJpbmQuIFtEYW5pZWxdCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFs aW5nYW0uY0BpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPiBbdjExXQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg ICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgIHwg ICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jIHwgICAyICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgIHwgICA4ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkY3AuYyAgICAgIHwgMzk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICAgICAgICAgfCAgIDMgKwogNyBmaWxl cyBjaGFuZ2VkLCA0MjIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCmluZGV4IDY2MzAyMTJmMmZhZi4uYzYzNTRmNmNkYmRiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKQEAgLTkwNiw2ICs5MDYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2lu aXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCW11dGV4X2luaXQo JmRldl9wcml2LT5hdl9tdXRleCk7CiAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4 KTsKIAltdXRleF9pbml0KCZkZXZfcHJpdi0+cHBzX211dGV4KTsKKwltdXRleF9pbml0KCZkZXZf cHJpdi0+aGRjcF9jb21wX211dGV4KTsKIAogCWk5MTVfbWVtY3B5X2luaXRfZWFybHkoZGV2X3By aXYpOwogCWludGVsX3J1bnRpbWVfcG1faW5pdF9lYXJseShkZXZfcHJpdik7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAppbmRleCA0YTQyMzc1M2E3MWMuLmUxZDZiNzIwODExOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9kc2MuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5o PgorI2luY2x1ZGUgPGRybS9pOTE1X21laV9oZGNwX2ludGVyZmFjZS5oPgogCiAjaW5jbHVkZSAi aTkxNV9maXhlZC5oIgogI2luY2x1ZGUgImk5MTVfcGFyYW1zLmgiCkBAIC0yMDU1LDYgKzIwNTYs MTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5MTVfcG11IHBtdTsK IAorCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmhkY3BfbWFzdGVyOworCWJvb2wgaGRj cF9jb21wX2FkZGVkOworCisJLyogTXV0ZXggdG8gcHJvdGVjdCB0aGUgYWJvdmUgaGRjcCBjb21w b25lbnQgcmVsYXRlZCB2YWx1ZXMuICovCisJc3RydWN0IG11dGV4IGhkY3BfY29tcF9tdXRleDsK KwogCS8qCiAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRk IHN0dWZmIGhlcmUuIFlvdXIgcGF0Y2gKIAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxv b2sgZm9yIGEgYmV0dGVyIHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3Iu YwppbmRleCBlZTE2NzU4NzQ3YzUuLjY2ZWQzZWU1OTk4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29ubmVjdG9yLmMKQEAgLTg4LDYgKzg4LDggQEAgdm9pZCBpbnRlbF9jb25uZWN0b3Jf ZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCiAJa2ZyZWUoaW50ZWxf Y29ubmVjdG9yLT5kZXRlY3RfZWRpZCk7CiAKKwlpbnRlbF9oZGNwX2NsZWFudXAoaW50ZWxfY29u bmVjdG9yKTsKKwogCWlmICghSVNfRVJSX09SX05VTEwoaW50ZWxfY29ubmVjdG9yLT5lZGlkKSkK IAkJa2ZyZWUoaW50ZWxfY29ubmVjdG9yLT5lZGlkKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCmluZGV4IDViOGRhYmRiMGUzOS4uNjFkMmRlY2NmNTBhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xNTQ1OSw2ICsxNTQ1OSw4IEBAIGludCBpbnRlbF9t b2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpbnRlbF91cGRhdGVfY3pjbGso ZGV2X3ByaXYpOwogCWludGVsX21vZGVzZXRfaW5pdF9odyhkZXYpOwogCisJaW50ZWxfaGRjcF9j b21wb25lbnRfaW5pdChkZXZfcHJpdik7CisKIAlpZiAoZGV2X3ByaXYtPm1heF9jZGNsa19mcmVx ID09IDApCiAJCWludGVsX3VwZGF0ZV9tYXhfY2RjbGsoZGV2X3ByaXYpOwogCkBAIC0xNjMyMCw2 ICsxNjMyMiw4IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJLyogZmx1c2ggYW55IGRlbGF5ZWQgdGFza3Mgb3IgcGVuZGluZyB3b3JrICovCiAJ Zmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKIAorCWludGVsX2hkY3BfY29tcG9uZW50X2ZpbmkoZGV2 X3ByaXYpOworCiAJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKIAogCWludGVsX292ZXJs YXlfY2xlYW51cChkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDhiYzc4 OWUzZmY5OS4uMDgzZTJmNzhhYzFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtNDEs NiArNDEsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fcmVjdC5oPgogI2luY2x1ZGUgPGRybS9kcm1f dmJsYW5rLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vaTkx NV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9jZWMtbm90aWZpZXIuaD4K IAogc3RydWN0IGRybV9wcmludGVyOwpAQCAtMzk1LDYgKzM5Niw5IEBAIHN0cnVjdCBpbnRlbF9o ZGNwX3NoaW0gewogCS8qIERldGVjdHMgcGFuZWwncyBoZGNwIGNhcGFiaWxpdHkuIFRoaXMgaXMg b3B0aW9uYWwgZm9yIEhETUkuICovCiAJaW50ICgqaGRjcF9jYXBhYmxlKShzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJCSAgICBib29sICpoZGNwX2NhcGFibGUp OworCisJLyogSERDUCBhZGFwdGF0aW9uKERQL0hETUkpIHJlcXVpcmVkIG9uIHRoZSBwb3J0ICov CisJZW51bSBoZGNwX3dpcmVkX3Byb3RvY29sIHByb3RvY29sOwogfTsKIAogc3RydWN0IGludGVs X2hkY3AgewpAQCAtNDE1LDYgKzQxOSw3IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAkgKiBjb250 ZW50IGNhbiBmbG93IG9ubHkgdGhyb3VnaCBhIGxpbmsgcHJvdGVjdGVkIGJ5IEhEQ1AyLjIuCiAJ ICovCiAJdTggY29udGVudF90eXBlOworCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSBwb3J0X2RhdGE7 CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKQEAgLTIwODgsNiArMjA5Myw5IEBAIGlu dCBpbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK IGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKTsKIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBlbnVtIHBvcnQgcG9ydCk7CiBib29sIGludGVsX2hkY3BfY2FwYWJsZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwordm9pZCBpbnRlbF9oZGNwX2NvbXBvbmVudF9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGludGVsX2hkY3Bf Y29tcG9uZW50X2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQg aW50ZWxfaGRjcF9jbGVhbnVwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CiAK IC8qIGludGVsX3Bzci5jICovCiAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYpIChIQVNfUFNSKGRl dl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYwppbmRleCA3YjEwOTdkNzlmYjguLmQwNmJlZjlkMWFiMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkY3AuYwpAQCAtNyw4ICs3LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgPGRybS9kcm1f aGRjcC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2NvbXBvbmVudC5oPgogI2luY2x1ZGUgPGxpbnV4 L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbXBv bmVudC5oPgogCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV9yZWcuaCIK QEAgLTgzMiw2ICs4MzQsMzQ3IEBAIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIAlyZXR1cm4gSU5URUxfR0VO KGRldl9wcml2KSA+PSA5ICYmIHBvcnQgPCBQT1JUX0U7CiB9CiAKK3N0YXRpYyBfX2F0dHJpYnV0 ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3AyX3ByZXBhcmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgICAgc3RydWN0IGhkY3AyX2FrZV9pbml0ICpha2Vf ZGF0YSkKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNw LnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNv bXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp OworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAt Pm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPmluaXRpYXRlX2hkY3AyX3Nl c3Npb24oY29tcC0+bWVpX2RldiwgZGF0YSwgYWtlX2RhdGEpOworCWlmIChyZXQpCisJCURSTV9E RUJVR19LTVMoIlByZXBhcmVfYWtlX2luaXQgZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwltdXRleF91 bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfdmVyaWZ5X3J4X2NlcnRf cHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJc3RydWN0 IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2NlcnQsCisJCQkJYm9vbCAqcGFpcmVkLAorCQkJCXN0 cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttICpla19wdWJfa20sCisJCQkJc2l6ZV90ICptc2df c3opCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5w b3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21w OworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK Kwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFjb21wIHx8ICFjb21wLT5v cHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfcmVjZWl2ZXJfY2Vy dF9wcmVwYXJlX2ttKGNvbXAtPm1laV9kZXYsIGRhdGEsCisJCQkJCQkJIHJ4X2NlcnQsIHBhaXJl ZCwKKwkJCQkJCQkgZWtfcHViX2ttLCBtc2dfc3opOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVC VUdfS01TKCJWZXJpZnkgcnhfY2VydCBmYWlsZWQuICVkXG4iLCByZXQpOworCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlfaHByaW1lKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgIHN0cnVjdCBoZGNwMl9ha2Vfc2Vu ZF9ocHJpbWUgKnJ4X2hwcmltZSkKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAm Y29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3Bf Y29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAo IWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2Nv bXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPnZl cmlmeV9ocHJpbWUoY29tcC0+bWVpX2RldiwgZGF0YSwgcnhfaHByaW1lKTsKKwlpZiAocmV0IDwg MCkKKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IGhwcmltZSBmYWlsZWQuICVkXG4iLCByZXQpOwor CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNwMl9zdG9yZV9w YWlyaW5nX2luZm8oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJIHN0cnVj dCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5nX2luZm8gKnBhaXJpbmdfaW5mbykKK3sKKwlzdHJ1Y3Qg aGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5k ZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKwor CW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJp di0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91 bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwlyZXQgPSBjb21wLT5vcHMtPnN0b3JlX3BhaXJpbmdfaW5mbyhjb21wLT5tZWlfZGV2LCBk YXRhLCBwYWlyaW5nX2luZm8pOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVCVUdfS01TKCJTdG9y ZSBwYWlyaW5nIGluZm8gZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwltdXRleF91bmxvY2soJmRldl9w cml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfcHJlcGFyZV9sY19pbml0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgICAgc3RydWN0IGhkY3AyX2xjX2luaXQgKmxj X2luaXQpCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRj cC5wb3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpj b21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFjb21wIHx8ICFjb21w LT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5pbml0aWF0ZV9sb2NhbGl0 eV9jaGVjayhjb21wLT5tZWlfZGV2LCBkYXRhLCBsY19pbml0KTsKKwlpZiAocmV0IDwgMCkKKwkJ RFJNX0RFQlVHX0tNUygiUHJlcGFyZSBsY19pbml0IGZhaWxlZC4gJWRcbiIsIHJldCk7CisJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3AyX3ZlcmlmeV9scHJp bWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgc3RydWN0IGhkY3Ay X2xjX3NlbmRfbHByaW1lICpyeF9scHJpbWUpCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpk YXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkx NV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZf cHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwor CisJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+ b3BzLT52ZXJpZnlfbHByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEsIHJ4X2xwcmltZSk7CisJaWYg KHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIlZlcmlmeSBMX1ByaW1lIGZhaWxlZC4gJWRcbiIs IHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQoraW50IGhkY3Ay X3ByZXBhcmVfc2tleShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCSAgICAg ICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKK3sKKwlzdHJ1Y3QgaGRjcF9w b3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwor CXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4 X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRj cF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2so JmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwly ZXQgPSBjb21wLT5vcHMtPmdldF9zZXNzaW9uX2tleShjb21wLT5tZWlfZGV2LCBkYXRhLCBza2Vf ZGF0YSk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIkdldCBzZXNzaW9uIGtleSBm YWlsZWQuICVkXG4iLCByZXQpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9t dXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2Vk KSkgaW50CitoZGNwMl92ZXJpZnlfcmVwX3RvcG9sb2d5X3ByZXBhcmVfYWNrKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkgICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRf cmVjZWl2ZXJpZF9saXN0CisJCQkJCQkJCSpyZXBfdG9wb2xvZ3ksCisJCQkJICAgICAgc3RydWN0 IGhkY3AyX3JlcF9zZW5kX2FjayAqcmVwX3NlbmRfYWNrKQoreworCXN0cnVjdCBoZGNwX3BvcnRf ZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3Ry dWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJY29tcCA9IGRldl9wcml2LT5oZGNwX21h c3RlcjsKKworCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7CisJCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9 IGNvbXAtPm9wcy0+cmVwZWF0ZXJfY2hlY2tfZmxvd19wcmVwYXJlX2Fjayhjb21wLT5tZWlfZGV2 LCBkYXRhLAorCQkJCQkJCSByZXBfdG9wb2xvZ3ksCisJCQkJCQkJIHJlcF9zZW5kX2Fjayk7CisJ aWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIlZlcmlmeSByZXAgdG9wb2xvZ3kgZmFpbGVk LiAlZFxuIiwgcmV0KTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGlu dAoraGRjcDJfdmVyaWZ5X21wcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CisJCSAgICBzdHJ1Y3QgaGRjcDJfcmVwX3N0cmVhbV9yZWFkeSAqc3RyZWFtX3JlYWR5KQorewor CXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRh OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9y LT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKKwlpbnQg cmV0OworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJY29tcCA9 IGRldl9wcml2LT5oZGNwX21hc3RlcjsKKworCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7CisJ CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X21wcmltZShjb21wLT5tZWlfZGV2 LCBkYXRhLCBzdHJlYW1fcmVhZHkpOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVCVUdfS01TKCJW ZXJpZnkgbXByaW1lIGZhaWxlZC4gJWRcbiIsIHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+aGRjcF9jb21wX211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJp YnV0ZV9fKCh1bnVzZWQpKQoraW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEg PSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hk Y3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlp ZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNw X2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMt PmVuYWJsZV9oZGNwX2F1dGhlbnRpY2F0aW9uKGNvbXAtPm1laV9kZXYsIGRhdGEpOworCWlmIChy ZXQgPCAwKQorCQlEUk1fREVCVUdfS01TKCJFbmFibGUgaGRjcCBhdXRoIGZhaWxlZC4gJWRcbiIs IHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQoraW50IGhkY3Ay X2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJl dDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBk ZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5tZWlf ZGV2LAorCQkJCQkgICAgICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhKTsKKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCitpbnQgaGRjcDJfZGVhdXRoZW50aWNhdGVfcG9y dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0dXJuIGhkY3AyX2Ns b3NlX21laV9zZXNzaW9uKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9oZGNwX2Nv bXBvbmVudF9iaW5kKHN0cnVjdCBkZXZpY2UgKmk5MTVfa2RldiwKKwkJCQkgICAgc3RydWN0IGRl dmljZSAqbWVpX2tkZXYsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0ga2Rldl90b19pOTE1KGk5MTVfa2Rldik7CisKKwlEUk1fREVCVUcoIkk5MTUg SERDUCBjb21wIGJpbmRcbiIpOworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOworCWRldl9wcml2LT5oZGNwX21hc3RlciA9IChzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFz dGVyICopZGF0YTsKKwlkZXZfcHJpdi0+aGRjcF9tYXN0ZXItPm1laV9kZXYgPSBtZWlfa2RldjsK KwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfaGRjcF9jb21wb25lbnRfdW5iaW5kKHN0cnVjdCBkZXZp Y2UgKmk5MTVfa2RldiwKKwkJCQkgICAgICAgc3RydWN0IGRldmljZSAqbWVpX2tkZXYsIHZvaWQg KmRhdGEpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl90b19p OTE1KGk5MTVfa2Rldik7CisKKwlEUk1fREVCVUcoIkk5MTUgSERDUCBjb21wIHVuYmluZFxuIik7 CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJZGV2X3ByaXYtPmhk Y3BfbWFzdGVyID0gTlVMTDsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgaTkxNV9oZGNwX2Nv bXBvbmVudF9vcHMgPSB7CisJLmJpbmQgICA9IGk5MTVfaGRjcF9jb21wb25lbnRfYmluZCwKKwku dW5iaW5kID0gaTkxNV9oZGNwX2NvbXBvbmVudF91bmJpbmQsCit9OworCitzdGF0aWMgaW5saW5l IGludCBpbml0aWFsaXplX2hkY3BfcG9ydF9kYXRhKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7 CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmhkY3AtPnBvcnRfZGF0YTsKKworCWRh dGEtPnBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7CisJZGF0YS0+cG9ydF90eXBlID0g KHU4KUhEQ1BfUE9SVF9UWVBFX0lOVEVHUkFURUQ7CisJZGF0YS0+cHJvdG9jb2wgPSAodTgpaGRj cC0+c2hpbS0+cHJvdG9jb2w7CisKKwlkYXRhLT5rID0gMTsKKwlpZiAoIWRhdGEtPnN0cmVhbXMp CisJCWRhdGEtPnN0cmVhbXMgPSBrY2FsbG9jKGRhdGEtPmssCisJCQkJCXNpemVvZihzdHJ1Y3Qg aGRjcDJfc3RyZWFtaWRfdHlwZSksCisJCQkJCUdGUF9LRVJORUwpOworCWlmICghZGF0YS0+c3Ry ZWFtcykgeworCQlEUk1fRVJST1IoIk91dCBvZiBNZW1vcnlcbiIpOworCQlyZXR1cm4gLUVOT01F TTsKKwl9CisKKwlkYXRhLT5zdHJlYW1zWzBdLnN0cmVhbV9pZCA9IDA7CisJZGF0YS0+c3RyZWFt c1swXS5zdHJlYW1fdHlwZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsKKworCXJldHVybiAwOworfQor CiBzdGF0aWMgYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewogCWlmICghSVNfRU5BQkxFRChDT05GSUdfSU5URUxfTUVJX0hEQ1ApKQpA QCAtODQxLDExICsxMTg0LDQwIEBAIHN0YXRpYyBib29sIGlzX2hkY3AyX3N1cHBvcnRlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCUlTX0tBQllMQUtFKGRldl9wcml2KSk7 CiB9CiAKK3ZvaWQgaW50ZWxfaGRjcF9jb21wb25lbnRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldDsKKworCWlmICghaXNfaGRjcDJfc3VwcG9ydGVk KGRldl9wcml2KSkKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29t cF9tdXRleCk7CisJV0FSTl9PTihkZXZfcHJpdi0+aGRjcF9jb21wX2FkZGVkKTsKKworCWRldl9w cml2LT5oZGNwX2NvbXBfYWRkZWQgPSB0cnVlOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhk Y3BfY29tcF9tdXRleCk7CisJcmV0ID0gY29tcG9uZW50X2FkZF90eXBlZChkZXZfcHJpdi0+ZHJt LmRldiwgJmk5MTVfaGRjcF9jb21wb25lbnRfb3BzLAorCQkJCSAgSTkxNV9DT01QT05FTlRfSERD UCk7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIGF0IGNvbXBvbmVu dCBhZGQoJWQpXG4iLCByZXQpOworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKwkJZGV2X3ByaXYtPmhkY3BfY29tcF9hZGRlZCA9IGZhbHNlOworCQltdXRleF91bmxv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm47CisJfQorfQorCiBzdGF0 aWMgdm9pZCBpbnRlbF9oZGNwMl9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKIHsKIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJaW50 IHJldDsKKworCXJldCA9IGluaXRpYWxpemVfaGRjcF9wb3J0X2RhdGEoY29ubmVjdG9yKTsKKwlp ZiAocmV0KSB7CisJCURSTV9ERUJVR19LTVMoIk1laSBoZGNwIGRhdGEgaW5pdCBmYWlsZWRcbiIp OworCQlyZXR1cm47CisJfQogCi0JLyogVE9ETzogTUVJIGludGVyZmFjZSBuZWVkcyB0byBiZSBp bml0aWFsaXplZCBoZXJlICovCiAJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0gdHJ1ZTsKIH0KIApA QCAtOTE3LDYgKzEyODksMzAgQEAgaW50IGludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCiAJcmV0dXJuIHJldDsKIH0KIAordm9pZCBpbnRlbF9oZGNw X2NvbXBvbmVudF9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlt dXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwlpZiAoIWRldl9wcml2LT5o ZGNwX2NvbXBfYWRkZWQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKwkJcmV0dXJuOworCX0KKworCWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQgPSBmYWxz ZTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJY29tcG9u ZW50X2RlbChkZXZfcHJpdi0+ZHJtLmRldiwgJmk5MTVfaGRjcF9jb21wb25lbnRfb3BzKTsKK30K Kwordm9pZCBpbnRlbF9oZGNwX2NsZWFudXAoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQoreworCWlmICghY29ubmVjdG9yLT5oZGNwLnNoaW0pCisJCXJldHVybjsKKworCW11dGV4 X2xvY2soJmNvbm5lY3Rvci0+aGRjcC5tdXRleCk7CisJa2ZyZWUoY29ubmVjdG9yLT5oZGNwLnBv cnRfZGF0YS5zdHJlYW1zKTsKKwltdXRleF91bmxvY2soJmNvbm5lY3Rvci0+aGRjcC5tdXRleCk7 Cit9CisKIHZvaWQgaW50ZWxfaGRjcF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0 ZSwKIAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19zdGF0ZSkKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmggYi9pbmNsdWRlL2RybS9pOTE1X2Nv bXBvbmVudC5oCmluZGV4IDcyZmJiMDM3ZjliMy4uZjM4NTFiYTNlNGMzIDEwMDY0NAotLS0gYS9p bmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCisrKyBiL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9u ZW50LmgKQEAgLTI0LDEwICsyNCwxMyBAQAogI2lmbmRlZiBfSTkxNV9DT01QT05FTlRfSF8KICNk ZWZpbmUgX0k5MTVfQ09NUE9ORU5UX0hfCiAKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKwog I2luY2x1ZGUgImRybV9hdWRpb19jb21wb25lbnQuaCIKIAogZW51bSBpOTE1X2NvbXBvbmVudF90 eXBlIHsKIAlJOTE1X0NPTVBPTkVOVF9BVURJTyA9IDEsCisJSTkxNV9DT01QT05FTlRfSERDUCwK IH07CiAKIC8qIE1BWF9QT1JUIGlzIHRoZSBudW1iZXIgb2YgcG9ydAotLSAKMi43LjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=