From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH 04/10] drm/i915: Constify power well descriptors Date: Fri, 20 Jul 2018 17:14:58 +0300 Message-ID: <20180720141504.22832-5-imre.deak@intel.com> References: <20180720141504.22832-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E2886EFFF for ; Fri, 20 Jul 2018 14:15:57 +0000 (UTC) In-Reply-To: <20180720141504.22832-1-imre.deak@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 Cc: Jani Nikula , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org SXQgbWFrZXMgc2Vuc2UgdG8ga2VlcCB1bmNoYW5naW5nIGRhdGEgY29uc3QuIEV4dHJhY3Qgc3Vj aCBmaWVsZHMgZnJvbQp0aGUgaTkxNV9wb3dlcl93ZWxsIHN0cnVjdCBpbnRvIGEgbmV3IGk5MTVf cG93ZXJfd2VsbF9kZXNjIHN0cnVjdCB0aGF0CndlIGluaXRpYWxpemUgZHVyaW5nIGNvbXBpbGUg dGltZS4gRm9yIHRoZSByZXN0IG9mIHRoZSBkeW5hbWljCmZpZWxkcyBhbGxvY2F0ZSBhbiBhcnJh eSBvZiBpOTE1X3Bvd2VyX3dlbGwgb2JqZWN0cyBpbiBpOTE1IGRldl9wcml2LAphbmQgbGluayB0 byBlYWNoIG9mIHRoZXNlIG9iamVjdHMgdGhlaXIgY29ycmVzcG9uZGluZwppOTE1X3Bvd2VyX3dl bGxfZGVzYyBvYmplY3QuCgpDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+CkNjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KQ2M6 IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEltcmUg RGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg ICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAg IHwgIDE0ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oICAgIHwgICA0 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgfCAgIDEgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAyMDQgKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDk3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggYjNhZWZkNjIzNTU3 Li5lYjI4NGNhYzhmZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yODMz LDEwICsyODMzLDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9wb3dlcl9kb21haW5faW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2Rv bWFpbiBwb3dlcl9kb21haW47CiAKIAkJcG93ZXJfd2VsbCA9ICZwb3dlcl9kb21haW5zLT5wb3dl cl93ZWxsc1tpXTsKLQkJc2VxX3ByaW50ZihtLCAiJS0yNXMgJWRcbiIsIHBvd2VyX3dlbGwtPm5h bWUsCisJCXNlcV9wcmludGYobSwgIiUtMjVzICVkXG4iLCBwb3dlcl93ZWxsLT5kZXNjLT5uYW1l LAogCQkJICAgcG93ZXJfd2VsbC0+Y291bnQpOwogCi0JCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihw b3dlcl9kb21haW4sIHBvd2VyX3dlbGwtPmRvbWFpbnMpCisJCWZvcl9lYWNoX3Bvd2VyX2RvbWFp bihwb3dlcl9kb21haW4sIHBvd2VyX3dlbGwtPmRlc2MtPmRvbWFpbnMpCiAJCQlzZXFfcHJpbnRm KG0sICIgICUtMjNzICVkXG4iLAogCQkJCSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIo cG93ZXJfZG9tYWluKSwKIAkJCQkgcG93ZXJfZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtwb3dl cl9kb21haW5dKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDNjOTg0NTMwZmVmOS4uNTc0 M2RiNDUwMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTkyMiw3ICs5MjIsOSBAQCBz dGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCWludGVsX3VjX2luaXRfZWFybHkoZGV2X3ByaXYpOwogCWludGVsX3BtX3Nl dHVwKGRldl9wcml2KTsKIAlpbnRlbF9pbml0X2RwaW8oZGV2X3ByaXYpOwotCWludGVsX3Bvd2Vy X2RvbWFpbnNfaW5pdChkZXZfcHJpdik7CisJcmV0ID0gaW50ZWxfcG93ZXJfZG9tYWluc19pbml0 KGRldl9wcml2KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfdWM7CiAJaW50ZWxfaXJxX2lu aXQoZGV2X3ByaXYpOwogCWludGVsX2hhbmdjaGVja19pbml0KGRldl9wcml2KTsKIAlpbnRlbF9p bml0X2Rpc3BsYXlfaG9va3MoZGV2X3ByaXYpOwpAQCAtOTM0LDYgKzkzNiw5IEBAIHN0YXRpYyBp bnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAKIAlyZXR1cm4gMDsKIAorZXJyX3VjOgorCWludGVsX3VjX2NsZWFudXBfZWFybHkoZGV2 X3ByaXYpOworCWk5MTVfZ2VtX2NsZWFudXBfZWFybHkoZGV2X3ByaXYpOwogZXJyX3dvcmtxdWV1 ZXM6CiAJaTkxNV93b3JrcXVldWVzX2NsZWFudXAoZGV2X3ByaXYpOwogZXJyX2VuZ2luZXM6CkBA IC05NDgsNiArOTUzLDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX2Ns ZWFudXBfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWludGVs X2lycV9maW5pKGRldl9wcml2KTsKKwlpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAoZGV2X3By aXYpOwogCWludGVsX3VjX2NsZWFudXBfZWFybHkoZGV2X3ByaXYpOwogCWk5MTVfZ2VtX2NsZWFu dXBfZWFybHkoZGV2X3ByaXYpOwogCWk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDRmYjkzNzM5OTQ0MC4uM2FlMjAwYTllOGYxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTg2MiwxMyArODYyLDkgQEAgc3RydWN0IGk5MTVf cG93ZXJfd2VsbF9vcHMgewogfTsKIAogLyogUG93ZXIgd2VsbCBzdHJ1Y3R1cmUgZm9yIGhhc3dl bGwgKi8KLXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgeworc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9k ZXNjIHsKIAljb25zdCBjaGFyICpuYW1lOwogCWJvb2wgYWx3YXlzX29uOwotCS8qIHBvd2VyIHdl bGwgZW5hYmxlL2Rpc2FibGUgdXNhZ2UgY291bnQgKi8KLQlpbnQgY291bnQ7Ci0JLyogY2FjaGVk IGh3IGVuYWJsZWQgc3RhdGUgKi8KLQlib29sIGh3X2VuYWJsZWQ7CiAJdTY0IGRvbWFpbnM7CiAJ LyogdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcG93ZXIgd2VsbCAqLwogCWVudW0gaTkxNV9w b3dlcl93ZWxsX2lkIGlkOwpAQCAtODkxLDYgKzg4NywxNCBAQCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsIHsKIAljb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyAqb3BzOwogfTsKIAorc3Ry dWN0IGk5MTVfcG93ZXJfd2VsbCB7CisJY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNj ICpkZXNjOworCS8qIHBvd2VyIHdlbGwgZW5hYmxlL2Rpc2FibGUgdXNhZ2UgY291bnQgKi8KKwlp bnQgY291bnQ7CisJLyogY2FjaGVkIGh3IGVuYWJsZWQgc3RhdGUgKi8KKwlib29sIGh3X2VuYWJs ZWQ7Cit9OworCiBzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zIHsKIAkvKgogCSAqIFBvd2VyIHdl bGxzIG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24gYXQgZHJpdmVyIGluaXQgYW5kIHN1c3BlbmQK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaAppbmRleCA5MjkyMDAxY2RkMTQuLmE2MjYy ODJkNTkwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaApAQCAtMzIyLDExICsz MjIsMTEgQEAgc3RydWN0IGludGVsX2xpbmtfbV9uIHsKIAogI2RlZmluZSBmb3JfZWFjaF9wb3dl cl9kb21haW5fd2VsbChfX2Rldl9wcml2LCBfX3Bvd2VyX3dlbGwsIF9fZG9tYWluX21hc2spCVwK IAlmb3JfZWFjaF9wb3dlcl93ZWxsKF9fZGV2X3ByaXYsIF9fcG93ZXJfd2VsbCkJCQkJXAotCQlm b3JfZWFjaF9pZigoX19wb3dlcl93ZWxsKS0+ZG9tYWlucyAmIChfX2RvbWFpbl9tYXNrKSkKKwkJ Zm9yX2VhY2hfaWYoKF9fcG93ZXJfd2VsbCktPmRlc2MtPmRvbWFpbnMgJiAoX19kb21haW5fbWFz aykpCiAKICNkZWZpbmUgZm9yX2VhY2hfcG93ZXJfZG9tYWluX3dlbGxfcmV2KF9fZGV2X3ByaXYs IF9fcG93ZXJfd2VsbCwgX19kb21haW5fbWFzaykgXAogCWZvcl9lYWNoX3Bvd2VyX3dlbGxfcmV2 KF9fZGV2X3ByaXYsIF9fcG93ZXJfd2VsbCkJCSAgICAgICAgXAotCQlmb3JfZWFjaF9pZigoX19w b3dlcl93ZWxsKS0+ZG9tYWlucyAmIChfX2RvbWFpbl9tYXNrKSkKKwkJZm9yX2VhY2hfaWYoKF9f cG93ZXJfd2VsbCktPmRlc2MtPmRvbWFpbnMgJiAoX19kb21haW5fbWFzaykpCiAKICNkZWZpbmUg Zm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKF9fc3RhdGUsIHBsYW5lLCBuZXdfcGxh bmVfc3RhdGUsIF9faSkgXAogCWZvciAoKF9faSkgPSAwOyBcCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCmluZGV4IDMyYmUzMDVjMGU4OS4uMjVmOWIwMzVjZmU4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaApAQCAtMTk0Myw2ICsxOTQzLDcgQEAgaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7CiAKIC8qIGlu dGVsX3J1bnRpbWVfcG0uYyAqLwogaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqKTsKK3ZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19jbGVhbnVwKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICopOwogdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHJlc3VtZSk7CiB2b2lk IGludGVsX3Bvd2VyX2RvbWFpbnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsK IHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKaW5kZXggMGNjNmE4NjFiY2Y4 Li4yNmU0OGZjOTU1NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk Y3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKQEAgLTU3LDkgKzU3 LDkgQEAgc3RhdGljIGJvb2wgaGRjcF9rZXlfbG9hZGFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCiAJLyogUEcxIChwb3dlciB3ZWxsICMxKSBuZWVkcyB0byBiZSBlbmFi bGVkICovCiAJZm9yX2VhY2hfcG93ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCkgewotCQlp ZiAocG93ZXJfd2VsbC0+aWQgPT0gaWQpIHsKLQkJCWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5vcHMt PmlzX2VuYWJsZWQoZGV2X3ByaXYsCi0JCQkJCQkJICAgICAgcG93ZXJfd2VsbCk7CisJCWlmIChw b3dlcl93ZWxsLT5kZXNjLT5pZCA9PSBpZCkgeworCQkJZW5hYmxlZCA9IHBvd2VyX3dlbGwtPmRl c2MtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwKKwkJCQkJCQkJICAgIHBvd2VyX3dlbGwpOwog CQkJYnJlYWs7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMK aW5kZXggZjExOWNiZTRmNjFkLi44YjNjMjQxYmVlNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ydW50aW1lX3BtLmMKQEAgLTE1OSwxNyArMTU5LDE3IEBAIGludGVsX2Rpc3BsYXlfcG93 ZXJfZG9tYWluX3N0cihlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKIHN0 YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkK IHsKLQlEUk1fREVCVUdfS01TKCJlbmFibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Ci0J cG93ZXJfd2VsbC0+b3BzLT5lbmFibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOworCURSTV9ERUJV R19LTVMoImVuYWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lKTsKKwlwb3dlcl93 ZWxsLT5kZXNjLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7CiAJcG93ZXJfd2Vs bC0+aHdfZW5hYmxlZCA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxf ZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgICBzdHJ1 Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQogewotCURSTV9ERUJVR19LTVMoImRpc2Fi bGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7CisJRFJNX0RFQlVHX0tNUygiZGlzYWJsaW5n ICVzXG4iLCBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lKTsKIAlwb3dlcl93ZWxsLT5od19lbmFibGVk ID0gZmFsc2U7Ci0JcG93ZXJfd2VsbC0+b3BzLT5kaXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxs KTsKKwlwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmRpc2FibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwp OwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2dldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf cG93ZXJfd2VsbF9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQogewogCVdBUk4oIXBvd2VyX3dlbGwt PmNvdW50LCAiVXNlIGNvdW50IG9uIHBvd2VyIHdlbGwgJXMgaXMgYWxyZWFkeSB6ZXJvIiwKLQkg ICAgIHBvd2VyX3dlbGwtPm5hbWUpOworCSAgICAgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSk7CiAK IAlpZiAoIS0tcG93ZXJfd2VsbC0+Y291bnQpCiAJCWludGVsX3Bvd2VyX3dlbGxfZGlzYWJsZShk ZXZfcHJpdiwgcG93ZXJfd2VsbCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBfX2ludGVsX2Rp c3BsYXlfcG93ZXJfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJaXNfZW5hYmxlZCA9IHRydWU7CiAKIAlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXYo ZGV2X3ByaXYsIHBvd2VyX3dlbGwsIEJJVF9VTEwoZG9tYWluKSkgewotCQlpZiAocG93ZXJfd2Vs bC0+YWx3YXlzX29uKQorCQlpZiAocG93ZXJfd2VsbC0+ZGVzYy0+YWx3YXlzX29uKQogCQkJY29u dGludWU7CiAKIAkJaWYgKCFwb3dlcl93ZWxsLT5od19lbmFibGVkKSB7CkBAIC0zMjMsNyArMzIz LDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxfcHJlX2Rpc2FibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dl bGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgc3Ry dWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKLQllbnVtIGk5MTVfcG93ZXJfd2Vs bF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOworCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0g cG93ZXJfd2VsbC0+ZGVzYy0+aWQ7CiAKIAkvKiBUaW1lb3V0IGZvciBQVzE6MTAgdXMsIEFVWDpu b3Qgc3BlY2lmaWVkLCBvdGhlciBQV3M6MjAgdXMuICovCiAJV0FSTl9PTihpbnRlbF93YWl0X2Zv cl9yZWdpc3RlcihkZXZfcHJpdiwKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdTMyIGhzd19w b3dlcl93ZWxsX3JlcXVlc3RlcnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog c3RhdGljIHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpw b3dlcl93ZWxsKQogewotCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ aWQ7CisJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsK IAlib29sIGRpc2FibGVkOwogCXUzMiByZXFzOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGlj IHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCXJldHVybjsKIAogCURSTV9ERUJVR19LTVMoIiVzIGZvcmNlZCBv biAoYmlvczolZCBkcml2ZXI6JWQga3ZtcjolZCBkZWJ1ZzolZClcbiIsCi0JCSAgICAgIHBvd2Vy X3dlbGwtPm5hbWUsCisJCSAgICAgIHBvd2VyX3dlbGwtPmRlc2MtPm5hbWUsCiAJCSAgICAgICEh KHJlcXMgJiAxKSwgISEocmVxcyAmIDIpLCAhIShyZXFzICYgNCksICEhKHJlcXMgJiA4KSk7CiB9 CiAKQEAgLTM4Niw4ICszODYsOCBAQCBzdGF0aWMgdm9pZCBnZW45X3dhaXRfZm9yX3Bvd2VyX3dl bGxfZnVzZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQg aHN3X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCQkgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JZW51bSBpOTE1 X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKLQlib29sIHdhaXRfZnVzZXMgPSBw b3dlcl93ZWxsLT5oc3cuaGFzX2Z1c2VzOworCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0g cG93ZXJfd2VsbC0+ZGVzYy0+aWQ7CisJYm9vbCB3YWl0X2Z1c2VzID0gcG93ZXJfd2VsbC0+ZGVz Yy0+aHN3Lmhhc19mdXNlczsKIAllbnVtIHNrbF9wb3dlcl9nYXRlIHVuaW5pdGlhbGl6ZWRfdmFy KHBnKTsKIAl1MzIgdmFsOwogCkBAIC00MjEsMTcgKzQyMSwxOSBAQCBzdGF0aWMgdm9pZCBoc3df cG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlm ICh3YWl0X2Z1c2VzKQogCQlnZW45X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZnVzZXMoZGV2X3ByaXYs IHBnKTsKIAotCWhzd19wb3dlcl93ZWxsX3Bvc3RfZW5hYmxlKGRldl9wcml2LCBwb3dlcl93ZWxs LT5oc3cuaXJxX3BpcGVfbWFzaywKLQkJCQkgICBwb3dlcl93ZWxsLT5oc3cuaGFzX3ZnYSk7CisJ aHN3X3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUoZGV2X3ByaXYsCisJCQkJICAgcG93ZXJfd2VsbC0+ ZGVzYy0+aHN3LmlycV9waXBlX21hc2ssCisJCQkJICAgcG93ZXJfd2VsbC0+ZGVzYy0+aHN3Lmhh c192Z2EpOwogfQogCiBzdGF0aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs ICpwb3dlcl93ZWxsKQogewotCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2Vs bC0+aWQ7CisJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5p ZDsKIAl1MzIgdmFsOwogCi0JaHN3X3Bvd2VyX3dlbGxfcHJlX2Rpc2FibGUoZGV2X3ByaXYsIHBv d2VyX3dlbGwtPmhzdy5pcnFfcGlwZV9tYXNrKTsKKwloc3dfcG93ZXJfd2VsbF9wcmVfZGlzYWJs ZShkZXZfcHJpdiwKKwkJCQkgICBwb3dlcl93ZWxsLT5kZXNjLT5oc3cuaXJxX3BpcGVfbWFzayk7 CiAKIAl2YWwgPSBJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0NUTF9EUklWRVIoaWQpKTsKIAlJOTE1 X1dSSVRFKEhTV19QV1JfV0VMTF9DVExfRFJJVkVSKGlkKSwKQEAgLTQ0NSw3ICs0NDcsNyBAQCBz dGF0aWMgdm9pZAogaWNsX2NvbWJvX3BoeV9hdXhfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs ICpwb3dlcl93ZWxsKQogewotCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2Vs bC0+aWQ7CisJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5p ZDsKIAllbnVtIHBvcnQgcG9ydCA9IElDTF9BVVhfUFdfVE9fUE9SVChpZCk7CiAJdTMyIHZhbDsK IApAQCAtNDYyLDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkCiBpY2xfY29tYm9fcGh5X2F1eF9wb3dl cl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAg ICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKLQllbnVtIGk5MTVfcG93 ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOworCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lk IGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7CiAJZW51bSBwb3J0IHBvcnQgPSBJQ0xfQVVYX1BX X1RPX1BPUlQoaWQpOwogCXUzMiB2YWw7CiAKQEAgLTQ4NCw3ICs0ODYsNyBAQCBpY2xfY29tYm9f cGh5X2F1eF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogc3RhdGljIGJvb2wgaHN3X3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJf d2VsbCkKIHsKLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOwor CWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7CiAJdTMy IG1hc2sgPSBIU1dfUFdSX1dFTExfQ1RMX1JFUShpZCkgfCBIU1dfUFdSX1dFTExfQ1RMX1NUQVRF KGlkKTsKIAogCXJldHVybiAoSTkxNV9SRUFEKEhTV19QV1JfV0VMTF9DVExfRFJJVkVSKGlkKSkg JiBtYXNrKSA9PSBtYXNrOwpAQCAtNzIzLDcgKzcyNSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9lbmFi bGVfZGM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHN0YXRpYyB2b2lkIGhz d19wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQkJCSAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JZW51bSBpOTE1 X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKKwllbnVtIGk5MTVfcG93ZXJfd2Vs bF9pZCBpZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwogCXUzMiBtYXNrID0gSFNXX1BXUl9XRUxM X0NUTF9SRVEoaWQpOwogCXUzMiBiaW9zX3JlcSA9IEk5MTVfUkVBRChIU1dfUFdSX1dFTExfQ1RM X0JJT1MoaWQpKTsKIApAQCAtNzQwLDE5ICs3NDIsMTkgQEAgc3RhdGljIHZvaWQgaHN3X3Bvd2Vy X3dlbGxfc3luY19odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMg dm9pZCBieHRfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxs KQogewotCWJ4dF9kZGlfcGh5X2luaXQoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmJ4dC5waHkpOwor CWJ4dF9kZGlfcGh5X2luaXQoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmRlc2MtPmJ4dC5waHkpOwog fQogCiBzdGF0aWMgdm9pZCBieHRfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dl bGwgKnBvd2VyX3dlbGwpCiB7Ci0JYnh0X2RkaV9waHlfdW5pbml0KGRldl9wcml2LCBwb3dlcl93 ZWxsLT5ieHQucGh5KTsKKwlieHRfZGRpX3BoeV91bmluaXQoZGV2X3ByaXYsIHBvd2VyX3dlbGwt PmRlc2MtPmJ4dC5waHkpOwogfQogCiBzdGF0aWMgYm9vbCBieHRfZHBpb19jbW5fcG93ZXJfd2Vs bF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JcmV0dXJuIGJ4dF9kZGlfcGh5 X2lzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmJ4dC5waHkpOworCXJldHVybiBieHRf ZGRpX3BoeV9pc19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsLT5kZXNjLT5ieHQucGh5KTsK IH0KIAogc3RhdGljIHZvaWQgYnh0X3ZlcmlmeV9kZGlfcGh5X3Bvd2VyX3dlbGxzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTc2MSwxNiArNzYzLDE3IEBAIHN0YXRpYyB2 b2lkIGJ4dF92ZXJpZnlfZGRpX3BoeV9wb3dlcl93ZWxscyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAKIAlwb3dlcl93ZWxsID0gbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYs IEJYVF9EUElPX0NNTl9BKTsKIAlpZiAocG93ZXJfd2VsbC0+Y291bnQgPiAwKQotCQlieHRfZGRp X3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmJ4dC5waHkpOworCQlieHRf ZGRpX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmRlc2MtPmJ4dC5waHkp OwogCiAJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2LCBCWFRfRFBJT19D TU5fQkMpOwogCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+IDApCi0JCWJ4dF9kZGlfcGh5X3Zlcmlm eV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+Ynh0LnBoeSk7CisJCWJ4dF9kZGlfcGh5X3Zl cmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ZGVzYy0+Ynh0LnBoeSk7CiAKIAlpZiAo SVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKIAkJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93 ZWxsKGRldl9wcml2LCBHTEtfRFBJT19DTU5fQyk7CiAJCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+ IDApCi0JCQlieHRfZGRpX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmJ4 dC5waHkpOworCQkJYnh0X2RkaV9waHlfdmVyaWZ5X3N0YXRlKGRldl9wcml2LAorCQkJCQkJIHBv d2VyX3dlbGwtPmRlc2MtPmJ4dC5waHkpOwogCX0KIH0KIApAQCAtODY5LDcgKzg3Miw3IEBAIHN0 YXRpYyB2b2lkIGk4MzBfcGlwZXNfcG93ZXJfd2VsbF9zeW5jX2h3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2b2lkIHZsdl9zZXRfcG93ZXJfd2VsbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICAgc3RydWN0IGk5MTVfcG93ZXJf d2VsbCAqcG93ZXJfd2VsbCwgYm9vbCBlbmFibGUpCiB7Ci0JZW51bSBpOTE1X3Bvd2VyX3dlbGxf aWQgcG93ZXJfd2VsbF9pZCA9IHBvd2VyX3dlbGwtPmlkOworCWVudW0gaTkxNV9wb3dlcl93ZWxs X2lkIHBvd2VyX3dlbGxfaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKIAl1MzIgbWFzazsKIAl1 MzIgc3RhdGU7CiAJdTMyIGN0cmw7CkBAIC05MTcsNyArOTIwLDcgQEAgc3RhdGljIHZvaWQgdmx2 X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBz dGF0aWMgYm9vbCB2bHZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQog ewotCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHBvd2VyX3dlbGxfaWQgPSBwb3dlcl93ZWxsLT5p ZDsKKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBwb3dlcl93ZWxsX2lkID0gcG93ZXJfd2VsbC0+ ZGVzYy0+aWQ7CiAJYm9vbCBlbmFibGVkID0gZmFsc2U7CiAJdTMyIG1hc2s7CiAJdTMyIHN0YXRl OwpAQCAtMTEwNyw3ICsxMTEwLDcgQEAgbG9va3VwX3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxs OwogCiAJCXBvd2VyX3dlbGwgPSAmcG93ZXJfZG9tYWlucy0+cG93ZXJfd2VsbHNbaV07Ci0JCWlm IChwb3dlcl93ZWxsLT5pZCA9PSBwb3dlcl93ZWxsX2lkKQorCQlpZiAocG93ZXJfd2VsbC0+ZGVz Yy0+aWQgPT0gcG93ZXJfd2VsbF9pZCkKIAkJCXJldHVybiBwb3dlcl93ZWxsOwogCX0KIApAQCAt MTE0Niw3ICsxMTQ5LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nodl9waHlfc3RhdHVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCQkgICAgIFBIWV9TVEFUVVNfU1BMSU5F X0xETyhEUElPX1BIWTEsIERQSU9fQ0gwLCAwKSB8CiAJCQkJICAgICBQSFlfU1RBVFVTX1NQTElO RV9MRE8oRFBJT19QSFkxLCBEUElPX0NIMCwgMSkpOwogCi0JaWYgKGNtbl9iYy0+b3BzLT5pc19l bmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7CisJaWYgKGNtbl9iYy0+ZGVzYy0+b3BzLT5pc19l bmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7CiAJCXBoeV9zdGF0dXMgfD0gUEhZX1BPV0VSR09P RChEUElPX1BIWTApOwogCiAJCS8qIHRoaXMgYXNzdW1lcyBvdmVycmlkZSBpcyBvbmx5IHVzZWQg dG8gZW5hYmxlIGxhbmVzICovCkBAIC0xMTg3LDcgKzExOTAsNyBAQCBzdGF0aWMgdm9pZCBhc3Nl cnRfY2h2X3BoeV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJ cGh5X3N0YXR1cyB8PSBQSFlfU1RBVFVTX1NQTElORV9MRE8oRFBJT19QSFkwLCBEUElPX0NIMSwg MSk7CiAJfQogCi0JaWYgKGNtbl9kLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkg eworCWlmIChjbW5fZC0+ZGVzYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fZCkpIHsK IAkJcGh5X3N0YXR1cyB8PSBQSFlfUE9XRVJHT09EKERQSU9fUEhZMSk7CiAKIAkJLyogdGhpcyBh c3N1bWVzIG92ZXJyaWRlIGlzIG9ubHkgdXNlZCB0byBlbmFibGUgbGFuZXMgKi8KQEAgLTEyMzEs MTAgKzEyMzQsMTAgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAllbnVtIHBpcGUgcGlwZTsKIAl1 aW50MzJfdCB0bXA7CiAKLQlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+aWQgIT0gUFVOSVRfUE9X RVJfV0VMTF9EUElPX0NNTl9CQyAmJgotCQkgICAgIHBvd2VyX3dlbGwtPmlkICE9IFBVTklUX1BP V0VSX1dFTExfRFBJT19DTU5fRCk7CisJV0FSTl9PTl9PTkNFKHBvd2VyX3dlbGwtPmRlc2MtPmlk ICE9IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMgJiYKKwkJICAgICBwb3dlcl93ZWxsLT5k ZXNjLT5pZCAhPSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0QpOwogCi0JaWYgKHBvd2VyX3dl bGwtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKKwlpZiAocG93ZXJfd2Vs bC0+ZGVzYy0+aWQgPT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgewogCQlwaXBlID0g UElQRV9BOwogCQlwaHkgPSBEUElPX1BIWTA7CiAJfSBlbHNlIHsKQEAgLTEyNjIsNyArMTI2NSw3 IEBAIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCURQSU9fU1VTX0NMS19DT05GSUdfR0FURV9DTEtS RVE7CiAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcyOCwgdG1wKTsK IAotCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7 CisJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5f QkMpIHsKIAkJdG1wID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc2 X0NIMSk7CiAJCXRtcCB8PSBEUElPX0RZTlBXUkRPV05FTl9DSDE7CiAJCXZsdl9kcGlvX3dyaXRl KGRldl9wcml2LCBwaXBlLCBfQ0hWX0NNTl9EVzZfQ0gxLCB0bXApOwpAQCAtMTI5MywxMCArMTI5 NiwxMCBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAllbnVtIGRwaW9fcGh5IHBoeTsKIAot CVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5pZCAhPSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01O X0JDICYmCi0JCSAgICAgcG93ZXJfd2VsbC0+aWQgIT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NN Tl9EKTsKKwlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+ZGVzYy0+aWQgIT0gUFVOSVRfUE9XRVJf V0VMTF9EUElPX0NNTl9CQyAmJgorCQkgICAgIHBvd2VyX3dlbGwtPmRlc2MtPmlkICE9IFBVTklU X1BPV0VSX1dFTExfRFBJT19DTU5fRCk7CiAKLQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gUFVOSVRf UE9XRVJfV0VMTF9EUElPX0NNTl9CQykgeworCWlmIChwb3dlcl93ZWxsLT5kZXNjLT5pZCA9PSBQ VU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7CiAJCXBoeSA9IERQSU9fUEhZMDsKIAkJYXNz ZXJ0X3BsbF9kaXNhYmxlZChkZXZfcHJpdiwgUElQRV9BKTsKIAkJYXNzZXJ0X3BsbF9kaXNhYmxl ZChkZXZfcHJpdiwgUElQRV9CKTsKQEAgLTIwNTEsNyArMjA1NCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9vcHMgPSB7 CiAJLmlzX2VuYWJsZWQgPSB2bHZfcG93ZXJfd2VsbF9lbmFibGVkLAogfTsKIAotc3RhdGljIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbFtdID0geworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBpOXh4X2Fsd2F5c19vbl9wb3dl cl93ZWxsW10gPSB7CiAJewogCQkubmFtZSA9ICJhbHdheXMtb24iLAogCQkuYWx3YXlzX29uID0g MSwKQEAgLTIwNjgsNyArMjA3MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsX29wcyBpODMwX3BpcGVzX3Bvd2VyX3dlbGxfb3BzID0gewogCS5pc19lbmFibGVkID0gaTgz MF9waXBlc19wb3dlcl93ZWxsX2VuYWJsZWQsCiB9OwogCi1zdGF0aWMgc3RydWN0IGk5MTVfcG93 ZXJfd2VsbCBpODMwX3Bvd2VyX3dlbGxzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf cG93ZXJfd2VsbF9kZXNjIGk4MzBfcG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFs d2F5cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApAQCAtMjEwNSw3ICsyMTA4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzIGJ4dF9kcGlvX2Ntbl9wb3dlcl93ZWxs X29wcyA9IHsKIAkuaXNfZW5hYmxlZCA9IGJ4dF9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJsZWQs CiB9OwogCi1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBoc3dfcG93ZXJfd2VsbHNbXSA9 IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2MgaHN3X3Bvd2VyX3dl bGxzW10gPSB7CiAJewogCQkubmFtZSA9ICJhbHdheXMtb24iLAogCQkuYWx3YXlzX29uID0gMSwK QEAgLTIxMjQsNyArMjEyNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGhzd19w b3dlcl93ZWxsc1tdID0gewogCX0sCiB9OwogCi1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bCBiZHdfcG93ZXJfd2VsbHNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsX2Rlc2MgYmR3X3Bvd2VyX3dlbGxzW10gPSB7CiAJewogCQkubmFtZSA9ICJhbHdheXMtb24i LAogCQkuYWx3YXlzX29uID0gMSwKQEAgLTIxNjUsNyArMjE2OCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyB2bHZfZHBpb19wb3dlcl93ZWxsX29wcyA9IHsKIAku aXNfZW5hYmxlZCA9IHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQsCiB9OwogCi1zdGF0aWMgc3RydWN0 IGk5MTVfcG93ZXJfd2VsbCB2bHZfcG93ZXJfd2VsbHNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2Mgdmx2X3Bvd2VyX3dlbGxzW10gPSB7CiAJewogCQkubmFt ZSA9ICJhbHdheXMtb24iLAogCQkuYWx3YXlzX29uID0gMSwKQEAgLTIyMjMsNyArMjIyNiw3IEBA IHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHZsdl9wb3dlcl93ZWxsc1tdID0gewogCX0s CiB9OwogCi1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBjaHZfcG93ZXJfd2VsbHNbXSA9 IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2MgY2h2X3Bvd2VyX3dl bGxzW10gPSB7CiAJewogCQkubmFtZSA9ICJhbHdheXMtb24iLAogCQkuYWx3YXlzX29uID0gMSwK QEAgLTIyNjMsMTIgKzIyNjYsMTIgQEAgYm9vbCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3dlbGxfaXNf ZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJYm9vbCByZXQ7CiAK IAlwb3dlcl93ZWxsID0gbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGxfaWQp OwotCXJldCA9IHBvd2VyX3dlbGwtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2Vs bCk7CisJcmV0ID0gcG93ZXJfd2VsbC0+ZGVzYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBw b3dlcl93ZWxsKTsKIAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dl cl93ZWxsIHNrbF9wb3dlcl93ZWxsc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGxfZGVzYyBza2xfcG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFsd2F5 cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApAQCAtMjMzNiw3ICsyMzM5LDcgQEAgc3RhdGljIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxzW10gPSB7CiAJfSwKIH07CiAKLXN0 YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGJ4dF9wb3dlcl93ZWxsc1tdID0geworc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBieHRfcG93ZXJfd2VsbHNbXSA9IHsK IAl7CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApAQCAtMjM5MCw3 ICsyMzkzLDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgYnh0X3Bvd2VyX3dlbGxz W10gPSB7CiAJfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGdsa19wb3dl cl93ZWxsc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBn bGtfcG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdh eXNfb24gPSAxLApAQCAtMjQ5MCw3ICsyNDkzLDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGwgZ2xrX3Bvd2VyX3dlbGxzW10gPSB7CiAJfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsIGNubF9wb3dlcl93ZWxsc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGxfZGVzYyBjbmxfcG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0g ImFsd2F5cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApAQCAtMjU5NCw3ICsyNTk3LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzIGljbF9jb21ib19waHlfYXV4X3Bv d2VyX3dlbGxfb3BzID0gewogCS5pc19lbmFibGVkID0gaHN3X3Bvd2VyX3dlbGxfZW5hYmxlZCwK IH07CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGljbF9wb3dlcl93ZWxsc1tdID0g eworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBpY2xfcG93ZXJfd2Vs bHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApA QCAtMjgxMyw3ICsyODE2LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3Vu aXF1ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlwb3dlcl93ZWxsX2lk cyA9IDA7CiAJZm9yIChpID0gMDsgaSA8IHBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxfY291bnQ7 IGkrKykgewotCQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX2RvbWFpbnMtPnBv d2VyX3dlbGxzW2ldLmlkOworCQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX2Rv bWFpbnMtPnBvd2VyX3dlbGxzW2ldLmRlc2MtPmlkOwogCiAJCVdBUk5fT04oaWQgPj0gc2l6ZW9m KHBvd2VyX3dlbGxfaWRzKSAqIDgpOwogCQlXQVJOX09OKHBvd2VyX3dlbGxfaWRzICYgQklUX1VM TChpZCkpOwpAQCAtMjgyMSwxMCArMjgyNCwyOCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcG93ZXJf d2VsbF9pZHNfdW5pcXVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl9CiB9 CiAKLSNkZWZpbmUgc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIF9fcG93ZXJfd2VsbHMp ICh7CQlcCi0JKHBvd2VyX2RvbWFpbnMpLT5wb3dlcl93ZWxscyA9IChfX3Bvd2VyX3dlbGxzKTsJ CQlcCi0JKHBvd2VyX2RvbWFpbnMpLT5wb3dlcl93ZWxsX2NvdW50ID0gQVJSQVlfU0laRShfX3Bv d2VyX3dlbGxzKTsJXAotfSkKK3N0YXRpYyBpbnQgX19zZXRfcG93ZXJfd2VsbHMoc3RydWN0IGk5 MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucywKKwkJCSAgICAgY29uc3Qgc3RydWN0IGk5 MTVfcG93ZXJfd2VsbF9kZXNjICpwb3dlcl93ZWxsX2Rlc2NzLAorCQkJICAgICBpbnQgcG93ZXJf d2VsbF9jb3VudCkKK3sKKwlpbnQgaTsKKworCXBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxfY291 bnQgPSBwb3dlcl93ZWxsX2NvdW50OworCXBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxzID0ga2Nh bGxvYyhwb3dlcl93ZWxsX2NvdW50LAorCQkJCQkgICAgIHNpemVvZigqcG93ZXJfZG9tYWlucy0+ cG93ZXJfd2VsbHMpLAorCQkJCQkgICAgIEdGUF9LRVJORUwpOworCWlmICghcG93ZXJfZG9tYWlu cy0+cG93ZXJfd2VsbHMpCisJCXJldHVybiAtRU5PTUVNOworCisJZm9yIChpID0gMDsgaSA8IHBv d2VyX3dlbGxfY291bnQ7IGkrKykKKwkJcG93ZXJfZG9tYWlucy0+cG93ZXJfd2VsbHNbaV0uZGVz YyA9ICZwb3dlcl93ZWxsX2Rlc2NzW2ldOworCisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgc2V0 X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIF9fcG93ZXJfd2VsbF9kZXNjcykgXAorCV9fc2V0 X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIF9fcG93ZXJfd2VsbF9kZXNjcywgXAorCQkJICBB UlJBWV9TSVpFKF9fcG93ZXJfd2VsbF9kZXNjcykpCiAKIC8qKgogICogaW50ZWxfcG93ZXJfZG9t YWluc19pbml0IC0gaW5pdGlhbGl6ZXMgdGhlIHBvd2VyIGRvbWFpbiBzdHJ1Y3R1cmVzCkBAIC0y ODM2LDYgKzI4NTcsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIGludCBpbnRlbF9wb3dlcl9kb21h aW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBp OTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFp bnM7CisJaW50IGVycjsKIAogCWk5MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCA9CiAJ CXNhbml0aXplX2Rpc2FibGVfcG93ZXJfd2VsbF9vcHRpb24oZGV2X3ByaXYsCkBAIC0yODUyLDE1 ICsyODc0LDE1IEBAIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIHRoZSBkaXNhYmxpbmcgb3JkZXIgaXMgcmV2ZXJzZWQu CiAJICovCiAJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhw b3dlcl9kb21haW5zLCBpY2xfcG93ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMo cG93ZXJfZG9tYWlucywgaWNsX3Bvd2VyX3dlbGxzKTsKIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBoc3dfcG93ZXJf d2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgaHN3X3Bvd2Vy X3dlbGxzKTsKIAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKLQkJc2V0X3Bv d2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGJkd19wb3dlcl93ZWxscyk7CisJCWVyciA9IHNldF9w b3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBiZHdfcG93ZXJfd2VsbHMpOwogCX0gZWxzZSBpZiAo SVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMs IHNrbF9wb3dlcl93ZWxscyk7CisJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5z LCBza2xfcG93ZXJfd2VsbHMpOwogCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikp IHsKLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGNubF9wb3dlcl93ZWxscyk7CisJ CWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBjbmxfcG93ZXJfd2VsbHMpOwog CiAJCS8qCiAJCSAqIERESSBhbmQgQXV4IElPIGFyZSBnZXR0aW5nIGVuYWJsZWQgZm9yIGFsbCBw b3J0cwpAQCAtMjg3MiwyMiArMjg5NCwzNCBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCXBvd2VyX2RvbWFpbnMtPnBv d2VyX3dlbGxfY291bnQgLT0gMjsKIAogCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikp IHsKLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGJ4dF9wb3dlcl93ZWxscyk7CisJ CWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBieHRfcG93ZXJfd2VsbHMpOwog CX0gZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKLQkJc2V0X3Bvd2VyX3dlbGxz KHBvd2VyX2RvbWFpbnMsIGdsa19wb3dlcl93ZWxscyk7CisJCWVyciA9IHNldF9wb3dlcl93ZWxs cyhwb3dlcl9kb21haW5zLCBnbGtfcG93ZXJfd2VsbHMpOwogCX0gZWxzZSBpZiAoSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikpIHsKLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGNodl9w b3dlcl93ZWxscyk7CisJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBjaHZf cG93ZXJfd2VsbHMpOwogCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKLQkJ c2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIHZsdl9wb3dlcl93ZWxscyk7CisJCWVyciA9 IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCB2bHZfcG93ZXJfd2VsbHMpOwogCX0gZWxz ZSBpZiAoSVNfSTgzMChkZXZfcHJpdikpIHsKLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFp bnMsIGk4MzBfcG93ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9t YWlucywgaTgzMF9wb3dlcl93ZWxscyk7CiAJfSBlbHNlIHsKLQkJc2V0X3Bvd2VyX3dlbGxzKHBv d2VyX2RvbWFpbnMsIGk5eHhfYWx3YXlzX29uX3Bvd2VyX3dlbGwpOworCQllcnIgPSBzZXRfcG93 ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbCk7CiAJfQog Ci0JYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3VuaXF1ZShkZXZfcHJpdik7CisJaWYgKCFlcnIpCisJ CWFzc2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoZGV2X3ByaXYpOwogCi0JcmV0dXJuIDA7CisJ cmV0dXJuIGVycjsKK30KKworLyoqCisgKiBpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAgLSBj bGVhbiB1cCBwb3dlciBkb21haW5zIHJlc291cmNlcworICogQGRldl9wcml2OiBpOTE1IGRldmlj ZSBpbnN0YW5jZQorICoKKyAqIFJlbGVhc2UgYW55IHJlc291cmNlcyBhY3F1aXJlZCBieSBpbnRl bF9wb3dlcl9kb21haW5zX2luaXQoKQorICovCit2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfY2xl YW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJa2ZyZWUoZGV2X3By aXYtPnBvd2VyX2RvbWFpbnMucG93ZXJfd2VsbHMpOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9w b3dlcl9kb21haW5zX3N5bmNfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpA QCAtMjg5Nyw5ICsyOTMxLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zeW5j X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCW11dGV4X2xvY2soJnBv d2VyX2RvbWFpbnMtPmxvY2spOwogCWZvcl9lYWNoX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2Vy X3dlbGwpIHsKLQkJcG93ZXJfd2VsbC0+b3BzLT5zeW5jX2h3KGRldl9wcml2LCBwb3dlcl93ZWxs KTsKLQkJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9IHBvd2VyX3dlbGwtPm9wcy0+aXNfZW5hYmxl ZChkZXZfcHJpdiwKLQkJCQkJCQkJICAgICBwb3dlcl93ZWxsKTsKKwkJcG93ZXJfd2VsbC0+ZGVz Yy0+b3BzLT5zeW5jX2h3KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKKwkJcG93ZXJfd2VsbC0+aHdf ZW5hYmxlZCA9CisJCQlwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYs IHBvd2VyX3dlbGwpOwogCX0KIAltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwog fQpAQCAtMzQwMiw3ICszNDM2LDcgQEAgc3RhdGljIHZvaWQgY2h2X3BoeV9jb250cm9sX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIG92ZXJyaWRlIGFuZCBzZXQg dGhlIGxhbmUgcG93ZXJkb3duIGJpdHMgYWNjZGluZyB0byB0aGUKIAkgKiBjdXJyZW50IGxhbmUg c3RhdHVzLgogCSAqLwotCWlmIChjbW5fYmMtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21u X2JjKSkgeworCWlmIChjbW5fYmMtPmRlc2MtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21u X2JjKSkgewogCQl1aW50MzJfdCBzdGF0dXMgPSBJOTE1X1JFQUQoRFBMTChQSVBFX0EpKTsKIAkJ dW5zaWduZWQgaW50IG1hc2s7CiAKQEAgLTM0MzMsNyArMzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIGNo dl9waHlfY29udHJvbF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJ ZGV2X3ByaXYtPmNodl9waHlfYXNzZXJ0W0RQSU9fUEhZMF0gPSB0cnVlOwogCX0KIAotCWlmIChj bW5fZC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fZCkpIHsKKwlpZiAoY21uX2QtPmRl c2MtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2QpKSB7CiAJCXVpbnQzMl90IHN0YXR1 cyA9IEk5MTVfUkVBRChEUElPX1BIWV9TVEFUVVMpOwogCQl1bnNpZ25lZCBpbnQgbWFzazsKIApA QCAtMzQ2OSwxNSArMzUwMywxNSBAQCBzdGF0aWMgdm9pZCB2bHZfY21ubGFuZV93YShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2 LCBQVU5JVF9QT1dFUl9XRUxMX0RJU1AyRCk7CiAKIAkvKiBJZiB0aGUgZGlzcGxheSBtaWdodCBi ZSBhbHJlYWR5IGFjdGl2ZSBza2lwIHRoaXMgKi8KLQlpZiAoY21uLT5vcHMtPmlzX2VuYWJsZWQo ZGV2X3ByaXYsIGNtbikgJiYKLQkgICAgZGlzcDJkLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYs IGRpc3AyZCkgJiYKKwlpZiAoY21uLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNt bikgJiYKKwkgICAgZGlzcDJkLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGRpc3Ay ZCkgJiYKIAkgICAgSTkxNV9SRUFEKERQSU9fQ1RMKSAmIERQSU9fQ01OUlNUKQogCQlyZXR1cm47 CiAKIAlEUk1fREVCVUdfS01TKCJ0b2dnbGluZyBkaXNwbGF5IFBIWSBzaWRlIHJlc2V0XG4iKTsK IAogCS8qIGNtbmxhbmUgbmVlZHMgRFBMTCByZWdpc3RlcnMgKi8KLQlkaXNwMmQtPm9wcy0+ZW5h YmxlKGRldl9wcml2LCBkaXNwMmQpOworCWRpc3AyZC0+ZGVzYy0+b3BzLT5lbmFibGUoZGV2X3By aXYsIGRpc3AyZCk7CiAKIAkvKgogCSAqIEZyb20gVkxWMkEwX0RQX2VEUF9IRE1JX0RQSU9fZHJp dmVyX3ZiaW9zX25vdGVzXzExLmRvY3g6CkBAIC0zNDg2LDcgKzM1MjAsNyBAQCBzdGF0aWMgdm9p ZCB2bHZfY21ubGFuZV93YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICog U2ltcGx5IHVuZ2F0aW5nIGlzbid0IGVub3VnaCB0byByZXNldCB0aGUgUEhZIGVub3VnaCB0byBn ZXQKIAkgKiBwb3J0cyBhbmQgbGFuZXMgcnVubmluZy4KIAkgKi8KLQljbW4tPm9wcy0+ZGlzYWJs ZShkZXZfcHJpdiwgY21uKTsKKwljbW4tPmRlc2MtPm9wcy0+ZGlzYWJsZShkZXZfcHJpdiwgY21u KTsKIH0KIAogLyoqCkBAIC0zNjAyLDkgKzM2MzYsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dl cl9kb21haW5zX2R1bXBfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluOwogCiAJCURSTV9ERUJVR19E UklWRVIoIiUtMjVzICVkXG4iLAotCQkJCSBwb3dlcl93ZWxsLT5uYW1lLCBwb3dlcl93ZWxsLT5j b3VudCk7CisJCQkJIHBvd2VyX3dlbGwtPmRlc2MtPm5hbWUsIHBvd2VyX3dlbGwtPmNvdW50KTsK IAotCQlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBwb3dlcl93ZWxsLT5kb21haW5zKQor CQlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBwb3dlcl93ZWxsLT5kZXNjLT5kb21haW5z KQogCQkJRFJNX0RFQlVHX0RSSVZFUigiICAlLTIzcyAlZFxuIiwKIAkJCQkJIGludGVsX2Rpc3Bs YXlfcG93ZXJfZG9tYWluX3N0cihkb21haW4pLAogCQkJCQkgcG93ZXJfZG9tYWlucy0+ZG9tYWlu X3VzZV9jb3VudFtkb21haW5dKTsKQEAgLTM2NDAsMjIgKzM2NzQsMjQgQEAgdm9pZCBpbnRlbF9w b3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCSAqIGFuZCBQVzEgcG93ZXIgd2VsbHMpIGFyZSB1bmRlciBGVyBjb250cm9sLCBzbyBp Z25vcmUgdGhlbSwKIAkJICogc2luY2UgdGhlaXIgc3RhdGUgY2FuIGNoYW5nZSBhc3luY2hyb25v dXNseS4KIAkJICovCi0JCWlmICghcG93ZXJfd2VsbC0+ZG9tYWlucykKKwkJaWYgKCFwb3dlcl93 ZWxsLT5kZXNjLT5kb21haW5zKQogCQkJY29udGludWU7CiAKLQkJZW5hYmxlZCA9IHBvd2VyX3dl bGwtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Ci0JCWlmICgocG93ZXJf d2VsbC0+Y291bnQgfHwgcG93ZXJfd2VsbC0+YWx3YXlzX29uKSAhPSBlbmFibGVkKQorCQllbmFi bGVkID0gcG93ZXJfd2VsbC0+ZGVzYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LAorCQkJCQkJ CSAgICBwb3dlcl93ZWxsKTsKKwkJaWYgKChwb3dlcl93ZWxsLT5jb3VudCB8fCBwb3dlcl93ZWxs LT5kZXNjLT5hbHdheXNfb24pICE9IGVuYWJsZWQpCiAJCQlEUk1fRVJST1IoInBvd2VyIHdlbGwg JXMgc3RhdGUgbWlzbWF0Y2ggKHJlZmNvdW50ICVkL2VuYWJsZWQgJWQpIiwKLQkJCQkgIHBvd2Vy X3dlbGwtPm5hbWUsIHBvd2VyX3dlbGwtPmNvdW50LCBlbmFibGVkKTsKKwkJCQkgIHBvd2VyX3dl bGwtPmRlc2MtPm5hbWUsCisJCQkJICBwb3dlcl93ZWxsLT5jb3VudCwgZW5hYmxlZCk7CiAKIAkJ ZG9tYWluc19jb3VudCA9IDA7Ci0JCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIHBvd2Vy X3dlbGwtPmRvbWFpbnMpCisJCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIHBvd2VyX3dl bGwtPmRlc2MtPmRvbWFpbnMpCiAJCQlkb21haW5zX2NvdW50ICs9IHBvd2VyX2RvbWFpbnMtPmRv bWFpbl91c2VfY291bnRbZG9tYWluXTsKIAogCQlpZiAocG93ZXJfd2VsbC0+Y291bnQgIT0gZG9t YWluc19jb3VudCkgewogCQkJRFJNX0VSUk9SKCJwb3dlciB3ZWxsICVzIHJlZmNvdW50L2RvbWFp biByZWZjb3VudCBtaXNtYXRjaCAiCiAJCQkJICAiKHJlZmNvdW50ICVkL2RvbWFpbnMgcmVmY291 bnQgJWQpXG4iLAotCQkJCSAgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0+Y291bnQsCisJ CQkJICBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lLCBwb3dlcl93ZWxsLT5jb3VudCwKIAkJCQkgIGRv bWFpbnNfY291bnQpOwogCQkJZHVtcF9kb21haW5faW5mbyA9IHRydWU7CiAJCX0KLS0gCjIuMTMu MgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==