From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C via dri-devel Subject: [PATCH v14 04/33] drm/i915: MEI interface implementation Date: Sat, 16 Feb 2019 23:06:51 +0530 Message-ID: <1550338640-17470-5-git-send-email-ramalingam.c@intel.com> References: <1550338640-17470-1-git-send-email-ramalingam.c@intel.com> Reply-To: Ramalingam C Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1550338640-17470-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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: intel-gfx@lists.freedesktop.org RGVmaW5pbmcgdGhlIG1laS1pOTE1IGludGVyZmFjZSBmdW5jdGlvbnMgYW5kIGluaXRpYWxpemF0 aW9uIG9mCnRoZSBpbnRlcmZhY2UuCgp2MjoKICBBZGp1c3QgdG8gdGhlIG5ldyBpbnRlcmZhY2Ug Y2hhbmdlcy4gW1RvbWFzXQogIEFkZGVkIGZ1cnRoZXIgZGVidWcgbG9ncyBmb3IgdGhlIGZhaWx1 cmVzIGF0IE1FSSBpL2YuCiAgcG9ydCBpbiBoZGNwX3BvcnQgZGF0YSBpcyBlcXVpcHBlZCB0byBo YW5kbGUgLXZlIHZhbHVlcy4KdjM6CiAgbWVpIGNvbXAgaXMgbWF0Y2hlZCBmb3IgZ2xvYmFsIGk5 MTUgY29tcCBtYXN0ZXIuIFtEYW5pZWxdCiAgSW4gaGRjcF9zaGltIGhkY3BfcHJvdG9jb2woKSBp cyByZXBsYWNlZCB3aXRoIGNvbnN0IHZhcmlhYmxlLiBbRGFuaWVsXQogIG1laSB3cmFwcGVycyBh cmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hhbmdlIFtEYW5pZWxdCnY0OgogIHBvcnQgaW5p dGlhbGl6YXRpb24gaXMgZG9uZSBvbmx5IGF0IGhkY3AyX2luaXQgb25seSBbRGFudmV0XQp2NToK ICBJOTE1IHJlZ2lzdGVycyBhIHN1YmNvbXBvbmVudCB0byBiZSBtYXRjaGVkIHdpdGggbWVpX2hk Y3AgW0RhbmllbF0KdjY6CiAgSERDUF9kaXNhYmxlIGZvciBhbGwgY29ubmVjdG9ycyBpbmNhc2Ug b2YgY29tcF91bmJpbmQuCiAgVGVhciBkb3duIEhEQ1AgY29tcCBpbnRlcmZhY2UgYXQgaTkxNV91 bmxvYWQgW0RhbmllbF0Kdjc6CiAgQ29tcG9uZW50IGluaXQgYW5kIGZpbmkgYXJlIG1vdmVkIG91 dCBvZiBjb25uZWN0b3Igb3BzIFtEYW5pZWxdCiAgaGRjcF9kaXNhYmxlIGlzIG5vdCBjYWxsZWQg ZnJvbSB1bmJpbmQuIFtEYW5pZWxdCnY4OgogIHN1YmNvbXBvbmVudCBuYW1lIGlzIGRyb3BwZWQg YXMgaXQgaXMgYWxyZWFkeSBtZXJnZWQuCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJh bWFsaW5nYW0uY0BpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPiBbdjExXQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg IHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jIHwgICAyICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgIHwgICA0ICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgIHwgICA4ICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYyAgICAgIHwgMzk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogNiBmaWxlcyBjaGFuZ2VkLCA0MTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDY2MzAyMTJmMmZhZi4uYzYzNTRmNmNkYmRiIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTkwNiw2ICs5MDYsNyBAQCBzdGF0aWMgaW50IGk5 MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CW11dGV4X2luaXQoJmRldl9wcml2LT5hdl9tdXRleCk7CiAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYt PndtLndtX211dGV4KTsKIAltdXRleF9pbml0KCZkZXZfcHJpdi0+cHBzX211dGV4KTsKKwltdXRl eF9pbml0KCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKIAogCWk5MTVfbWVtY3B5X2luaXRf ZWFybHkoZGV2X3ByaXYpOwogCWludGVsX3J1bnRpbWVfcG1faW5pdF9lYXJseShkZXZfcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA1YzhkMDQ4OWExY2QuLmQzNzVkMWNmODZmNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8ZHJt L2RybV91dGlsLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kc2MuaD4KICNpbmNsdWRlIDxkcm0vZHJt X2Nvbm5lY3Rvci5oPgorI2luY2x1ZGUgPGRybS9pOTE1X21laV9oZGNwX2ludGVyZmFjZS5oPgog CiAjaW5jbHVkZSAiaTkxNV9maXhlZC5oIgogI2luY2x1ZGUgImk5MTVfcGFyYW1zLmgiCkBAIC0y MDUyLDYgKzIwNTMsMTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5 MTVfcG11IHBtdTsKIAorCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmhkY3BfbWFzdGVy OworCWJvb2wgaGRjcF9jb21wX2FkZGVkOworCisJLyogTXV0ZXggdG8gcHJvdGVjdCB0aGUgYWJv dmUgaGRjcCBjb21wb25lbnQgcmVsYXRlZCB2YWx1ZXMuICovCisJc3RydWN0IG11dGV4IGhkY3Bf Y29tcF9tdXRleDsKKwogCS8qCiAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2Vv biwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXIgcGF0Y2gKIAkgKiB3aWxsIGJlIHJlamVjdGVk LiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVyIHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jb25uZWN0b3IuYwppbmRleCBlZTE2NzU4NzQ3YzUuLjY2ZWQzZWU1OTk4YSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMKQEAgLTg4LDYgKzg4LDggQEAgdm9pZCBpbnRl bF9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCiAJ a2ZyZWUoaW50ZWxfY29ubmVjdG9yLT5kZXRlY3RfZWRpZCk7CiAKKwlpbnRlbF9oZGNwX2NsZWFu dXAoaW50ZWxfY29ubmVjdG9yKTsKKwogCWlmICghSVNfRVJSX09SX05VTEwoaW50ZWxfY29ubmVj dG9yLT5lZGlkKSkKIAkJa2ZyZWUoaW50ZWxfY29ubmVjdG9yLT5lZGlkKTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDczYTEwN2I2ZWI5YS4uYWNiOTkzY2U3ZWFhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xNTQ1Myw2ICsxNTQ1Myw4IEBA IGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpbnRlbF91 cGRhdGVfY3pjbGsoZGV2X3ByaXYpOwogCWludGVsX21vZGVzZXRfaW5pdF9odyhkZXYpOwogCisJ aW50ZWxfaGRjcF9jb21wb25lbnRfaW5pdChkZXZfcHJpdik7CisKIAlpZiAoZGV2X3ByaXYtPm1h eF9jZGNsa19mcmVxID09IDApCiAJCWludGVsX3VwZGF0ZV9tYXhfY2RjbGsoZGV2X3ByaXYpOwog CkBAIC0xNjMxNCw2ICsxNjMxNiw4IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVhbnVwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJLyogZmx1c2ggYW55IGRlbGF5ZWQgdGFza3Mgb3IgcGVuZGlu ZyB3b3JrICovCiAJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKIAorCWludGVsX2hkY3BfY29tcG9u ZW50X2ZpbmkoZGV2X3ByaXYpOworCiAJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKIAog CWludGVsX292ZXJsYXlfY2xlYW51cChkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CmluZGV4IDExYzY5NjAyNTA4NS4uZjhlODQ4MjU3M2M4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fcmVjdC5oPgogI2luY2x1 ZGUgPGRybS9kcm1fdmJsYW5rLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNs dWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9jZWMt bm90aWZpZXIuaD4KIAogc3RydWN0IGRybV9wcmludGVyOwpAQCAtMzk1LDYgKzM5Niw5IEBAIHN0 cnVjdCBpbnRlbF9oZGNwX3NoaW0gewogCS8qIERldGVjdHMgcGFuZWwncyBoZGNwIGNhcGFiaWxp dHkuIFRoaXMgaXMgb3B0aW9uYWwgZm9yIEhETUkuICovCiAJaW50ICgqaGRjcF9jYXBhYmxlKShz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJCSAgICBib29sICpo ZGNwX2NhcGFibGUpOworCisJLyogSERDUCBhZGFwdGF0aW9uKERQL0hETUkpIHJlcXVpcmVkIG9u IHRoZSBwb3J0ICovCisJZW51bSBoZGNwX3dpcmVkX3Byb3RvY29sIHByb3RvY29sOwogfTsKIAog c3RydWN0IGludGVsX2hkY3AgewpAQCAtNDE1LDYgKzQxOSw3IEBAIHN0cnVjdCBpbnRlbF9oZGNw IHsKIAkgKiBjb250ZW50IGNhbiBmbG93IG9ubHkgdGhyb3VnaCBhIGxpbmsgcHJvdGVjdGVkIGJ5 IEhEQ1AyLjIuCiAJICovCiAJdTggY29udGVudF90eXBlOworCXN0cnVjdCBoZGNwX3BvcnRfZGF0 YSBwb3J0X2RhdGE7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKQEAgLTIwODgsNiAr MjA5Myw5IEBAIGludCBpbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCk7CiBib29sIGludGVsX2hkY3BfY2Fw YWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwordm9pZCBpbnRlbF9oZGNw X2NvbXBvbmVudF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lk IGludGVsX2hkY3BfY29tcG9uZW50X2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKK3ZvaWQgaW50ZWxfaGRjcF9jbGVhbnVwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3Rvcik7CiAKIC8qIGludGVsX3Bzci5jICovCiAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYp IChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkY3AuYwppbmRleCA3YjEwOTdkNzlmYjguLmQwNmJlZjlkMWFiMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwpAQCAtNyw4ICs3LDEwIEBACiAgKi8KIAogI2luY2x1 ZGUgPGRybS9kcm1faGRjcC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2NvbXBvbmVudC5oPgogI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorI2luY2x1ZGUg PGxpbnV4L2NvbXBvbmVudC5oPgogCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAjaW5jbHVkZSAi aTkxNV9yZWcuaCIKQEAgLTgzMiw2ICs4MzQsMzQ3IEBAIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIAlyZXR1 cm4gSU5URUxfR0VOKGRldl9wcml2KSA+PSA5ICYmIHBvcnQgPCBQT1JUX0U7CiB9CiAKK3N0YXRp YyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3AyX3ByZXBhcmVfYWtlX2luaXQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgICAgc3RydWN0IGhkY3AyX2Fr ZV9pbml0ICpha2VfZGF0YSkKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29u bmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29t cF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNw X2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNv bXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPmluaXRp YXRlX2hkY3AyX3Nlc3Npb24oY29tcC0+bWVpX2RldiwgZGF0YSwgYWtlX2RhdGEpOworCWlmIChy ZXQpCisJCURSTV9ERUJVR19LTVMoIlByZXBhcmVfYWtlX2luaXQgZmFpbGVkLiAlZFxuIiwgcmV0 KTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfdmVy aWZ5X3J4X2NlcnRfcHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CisJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2NlcnQsCisJCQkJYm9vbCAqcGFp cmVkLAorCQkJCXN0cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttICpla19wdWJfa20sCisJCQkJ c2l6ZV90ICptc2dfc3opCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5l Y3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBf bWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFjb21w IHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlf cmVjZWl2ZXJfY2VydF9wcmVwYXJlX2ttKGNvbXAtPm1laV9kZXYsIGRhdGEsCisJCQkJCQkJIHJ4 X2NlcnQsIHBhaXJlZCwKKwkJCQkJCQkgZWtfcHViX2ttLCBtc2dfc3opOworCWlmIChyZXQgPCAw KQorCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgcnhfY2VydCBmYWlsZWQuICVkXG4iLCByZXQpOwor CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlf aHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgIHN0cnVjdCBo ZGNwMl9ha2Vfc2VuZF9ocHJpbWUgKnJ4X2hwcmltZSkKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2Rh dGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVj dCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2so JmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0 ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9w cml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBj b21wLT5vcHMtPnZlcmlmeV9ocHJpbWUoY29tcC0+bWVpX2RldiwgZGF0YSwgcnhfaHByaW1lKTsK KwlpZiAocmV0IDwgMCkKKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IGhwcmltZSBmYWlsZWQuICVk XG4iLCByZXQpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Cito ZGNwMl9zdG9yZV9wYWlyaW5nX2luZm8oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y LAorCQkJIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5nX2luZm8gKnBhaXJpbmdfaW5mbykK K3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRf ZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5l Y3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJ aW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNv bXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykg eworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPnN0b3JlX3BhaXJpbmdfaW5mbyhjb21w LT5tZWlfZGV2LCBkYXRhLCBwYWlyaW5nX2luZm8pOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVC VUdfS01TKCJTdG9yZSBwYWlyaW5nIGluZm8gZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwltdXRleF91 bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfcHJlcGFyZV9sY19pbml0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgICAgc3RydWN0IGhkY3Ay X2xjX2luaXQgKmxjX2luaXQpCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNv bm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2Nv bXBfbWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRj cF9jb21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFj b21wIHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5pbml0 aWF0ZV9sb2NhbGl0eV9jaGVjayhjb21wLT5tZWlfZGV2LCBkYXRhLCBsY19pbml0KTsKKwlpZiAo cmV0IDwgMCkKKwkJRFJNX0RFQlVHX0tNUygiUHJlcGFyZSBsY19pbml0IGZhaWxlZC4gJWRcbiIs IHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3Ay X3ZlcmlmeV9scHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAg c3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1lICpyeF9scHJpbWUpCit7CisJc3RydWN0IGhkY3Bf cG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRl eF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhk Y3BfbWFzdGVyOworCisJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJ cmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfbHByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEsIHJ4X2xw cmltZSk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIlZlcmlmeSBMX1ByaW1lIGZh aWxlZC4gJWRcbiIsIHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KQoraW50IGhkY3AyX3ByZXBhcmVfc2tleShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCisJCSAgICAgICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKK3sKKwlz dHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJl dDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBk ZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPmdldF9zZXNzaW9uX2tleShjb21wLT5tZWlfZGV2 LCBkYXRhLCBza2VfZGF0YSk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIkdldCBz ZXNzaW9uIGtleSBmYWlsZWQuICVkXG4iLCByZXQpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmhkY3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1 dGVfXygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlfcmVwX3RvcG9sb2d5X3ByZXBhcmVfYWNr KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkgICAgICBzdHJ1Y3QgaGRj cDJfcmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0CisJCQkJCQkJCSpyZXBfdG9wb2xvZ3ksCisJCQkJ ICAgICAgc3RydWN0IGhkY3AyX3JlcF9zZW5kX2FjayAqcmVwX3NlbmRfYWNrKQoreworCXN0cnVj dCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNl LmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKKwlpbnQgcmV0Owor CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJY29tcCA9IGRldl9w cml2LT5oZGNwX21hc3RlcjsKKworCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7CisJCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCXJldCA9IGNvbXAtPm9wcy0+cmVwZWF0ZXJfY2hlY2tfZmxvd19wcmVwYXJlX2Fjayhj b21wLT5tZWlfZGV2LCBkYXRhLAorCQkJCQkJCSByZXBfdG9wb2xvZ3ksCisJCQkJCQkJIHJlcF9z ZW5kX2Fjayk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIlZlcmlmeSByZXAgdG9w b2xvZ3kgZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNw X2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIF9fYXR0cmlidXRlX18o KHVudXNlZCkpIGludAoraGRjcDJfdmVyaWZ5X21wcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsCisJCSAgICBzdHJ1Y3QgaGRjcDJfcmVwX3N0cmVhbV9yZWFkeSAqc3RyZWFt X3JlYWR5KQoreworCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhk Y3AucG9ydF9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAq Y29tcDsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRl eCk7CisJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKKworCWlmICghY29tcCB8fCAhY29t cC0+b3BzKSB7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X21wcmltZShj b21wLT5tZWlfZGV2LCBkYXRhLCBzdHJlYW1fcmVhZHkpOworCWlmIChyZXQgPCAwKQorCQlEUk1f REVCVUdfS01TKCJWZXJpZnkgbXByaW1lIGZhaWxlZC4gJWRcbiIsIHJldCk7CisJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQoraW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0 X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0 cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9t YXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQg PSBjb21wLT5vcHMtPmVuYWJsZV9oZGNwX2F1dGhlbnRpY2F0aW9uKGNvbXAtPm1laV9kZXYsIGRh dGEpOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVCVUdfS01TKCJFbmFibGUgaGRjcCBhdXRoIGZh aWxlZC4gJWRcbiIsIHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KQoraW50IGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNv bXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp OworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAt Pm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lv bihjb21wLT5tZWlfZGV2LAorCQkJCQkgICAgICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhKTsK KwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCitpbnQgaGRjcDJfZGVhdXRo ZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJcmV0 dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBpbnQg aTkxNV9oZGNwX2NvbXBvbmVudF9iaW5kKHN0cnVjdCBkZXZpY2UgKmk5MTVfa2RldiwKKwkJCQkg ICAgc3RydWN0IGRldmljZSAqbWVpX2tkZXYsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl90b19pOTE1KGk5MTVfa2Rldik7CisKKwlEUk1f REVCVUcoIkk5MTUgSERDUCBjb21wIGJpbmRcbiIpOworCW11dGV4X2xvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOworCWRldl9wcml2LT5oZGNwX21hc3RlciA9IChzdHJ1Y3QgaTkxNV9o ZGNwX2NvbXBfbWFzdGVyICopZGF0YTsKKwlkZXZfcHJpdi0+aGRjcF9tYXN0ZXItPm1laV9kZXYg PSBtZWlfa2RldjsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfaGRjcF9jb21wb25lbnRfdW5iaW5k KHN0cnVjdCBkZXZpY2UgKmk5MTVfa2RldiwKKwkJCQkgICAgICAgc3RydWN0IGRldmljZSAqbWVp X2tkZXYsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0ga2Rldl90b19pOTE1KGk5MTVfa2Rldik7CisKKwlEUk1fREVCVUcoIkk5MTUgSERDUCBjb21w IHVuYmluZFxuIik7CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJ ZGV2X3ByaXYtPmhkY3BfbWFzdGVyID0gTlVMTDsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMg aTkxNV9oZGNwX2NvbXBvbmVudF9vcHMgPSB7CisJLmJpbmQgICA9IGk5MTVfaGRjcF9jb21wb25l bnRfYmluZCwKKwkudW5iaW5kID0gaTkxNV9oZGNwX2NvbXBvbmVudF91bmJpbmQsCit9OworCitz dGF0aWMgaW5saW5lIGludCBpbml0aWFsaXplX2hkY3BfcG9ydF9kYXRhKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25u ZWN0b3ItPmhkY3A7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmhkY3AtPnBvcnRf ZGF0YTsKKworCWRhdGEtPnBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7CisJZGF0YS0+ cG9ydF90eXBlID0gKHU4KUhEQ1BfUE9SVF9UWVBFX0lOVEVHUkFURUQ7CisJZGF0YS0+cHJvdG9j b2wgPSAodTgpaGRjcC0+c2hpbS0+cHJvdG9jb2w7CisKKwlkYXRhLT5rID0gMTsKKwlpZiAoIWRh dGEtPnN0cmVhbXMpCisJCWRhdGEtPnN0cmVhbXMgPSBrY2FsbG9jKGRhdGEtPmssCisJCQkJCXNp emVvZihzdHJ1Y3QgaGRjcDJfc3RyZWFtaWRfdHlwZSksCisJCQkJCUdGUF9LRVJORUwpOworCWlm ICghZGF0YS0+c3RyZWFtcykgeworCQlEUk1fRVJST1IoIk91dCBvZiBNZW1vcnlcbiIpOworCQly ZXR1cm4gLUVOT01FTTsKKwl9CisKKwlkYXRhLT5zdHJlYW1zWzBdLnN0cmVhbV9pZCA9IDA7CisJ ZGF0YS0+c3RyZWFtc1swXS5zdHJlYW1fdHlwZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsKKworCXJl dHVybiAwOworfQorCiBzdGF0aWMgYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWlmICghSVNfRU5BQkxFRChDT05GSUdfSU5URUxf TUVJX0hEQ1ApKQpAQCAtODQxLDExICsxMTg0LDQwIEBAIHN0YXRpYyBib29sIGlzX2hkY3AyX3N1 cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCUlTX0tBQllMQUtF KGRldl9wcml2KSk7CiB9CiAKK3ZvaWQgaW50ZWxfaGRjcF9jb21wb25lbnRfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldDsKKworCWlmICghaXNfaGRj cDJfc3VwcG9ydGVkKGRldl9wcml2KSkKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZGV2X3By aXYtPmhkY3BfY29tcF9tdXRleCk7CisJV0FSTl9PTihkZXZfcHJpdi0+aGRjcF9jb21wX2FkZGVk KTsKKworCWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQgPSB0cnVlOworCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJcmV0ID0gY29tcG9uZW50X2FkZF90eXBlZChk ZXZfcHJpdi0+ZHJtLmRldiwgJmk5MTVfaGRjcF9jb21wb25lbnRfb3BzLAorCQkJCSAgSTkxNV9D T01QT05FTlRfSERDUCk7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVk IGF0IGNvbXBvbmVudCBhZGQoJWQpXG4iLCByZXQpOworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKKwkJZGV2X3ByaXYtPmhkY3BfY29tcF9hZGRlZCA9IGZhbHNlOwor CQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm47CisJ fQorfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3It PmhkY3A7CisJaW50IHJldDsKKworCXJldCA9IGluaXRpYWxpemVfaGRjcF9wb3J0X2RhdGEoY29u bmVjdG9yKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERUJVR19LTVMoIk1laSBoZGNwIGRhdGEgaW5p dCBmYWlsZWRcbiIpOworCQlyZXR1cm47CisJfQogCi0JLyogVE9ETzogTUVJIGludGVyZmFjZSBu ZWVkcyB0byBiZSBpbml0aWFsaXplZCBoZXJlICovCiAJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0g dHJ1ZTsKIH0KIApAQCAtOTE3LDYgKzEyODksMzAgQEAgaW50IGludGVsX2hkY3BfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJcmV0dXJuIHJldDsKIH0KIAordm9p ZCBpbnRlbF9oZGNwX2NvbXBvbmVudF9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKK3sKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwlpZiAo IWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJuOworCX0KKworCWRldl9wcml2LT5oZGNwX2NvbXBf YWRkZWQgPSBmYWxzZTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp OworCisJY29tcG9uZW50X2RlbChkZXZfcHJpdi0+ZHJtLmRldiwgJmk5MTVfaGRjcF9jb21wb25l bnRfb3BzKTsKK30KKwordm9pZCBpbnRlbF9oZGNwX2NsZWFudXAoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQoreworCWlmICghY29ubmVjdG9yLT5oZGNwLnNoaW0pCisJCXJldHVy bjsKKworCW11dGV4X2xvY2soJmNvbm5lY3Rvci0+aGRjcC5tdXRleCk7CisJa2ZyZWUoY29ubmVj dG9yLT5oZGNwLnBvcnRfZGF0YS5zdHJlYW1zKTsKKwltdXRleF91bmxvY2soJmNvbm5lY3Rvci0+ aGRjcC5tdXRleCk7Cit9CisKIHZvaWQgaW50ZWxfaGRjcF9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9zdGF0ZSwKIAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19z dGF0ZSkKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWw=