From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v2 04/10] drm/i915: Constify power well descriptors Date: Mon, 6 Aug 2018 12:58:37 +0300 Message-ID: <20180806095843.13294-5-imre.deak@intel.com> References: <20180806095843.13294-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 772E76E28C for ; Mon, 6 Aug 2018 09:59:42 +0000 (UTC) In-Reply-To: <20180806095843.13294-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 bGxfZGVzYyBvYmplY3QuCgp2MjoKLSBGaXggY2hlY2twYXRjaCB3YXJuaW5ncyBhYm91dCBtaXNz aW5nIHBhcmFtIG5hbWUgaW4gZm4gZGVjbGFyYXRpb24gYW5kCiAgbGluZXMgb3ZlciA4MCBjaGFy cy4gKFBhdWxvKQotIE1vdmUgY2hlY2sgZm9yIHVuaXF1ZSBJRHMgdG8gX19zZXRfcG93ZXJfd2Vs bHMoKS4KCkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K Q2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgpDYzogSmFuaSBOaWt1 bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJl LmRlYWtAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9u aUBpbnRlbC5jb20+ICh2MSkKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YyAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8 ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDE0ICsr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oICAgIHwgICA0ICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMgfCAyMDUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0KIDcgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGY5Y2UzNWRhNDEyMy4uMjNmMzhi YzI1N2EyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMjg0NSwxMCArMjg0 NSwxMCBAQCBzdGF0aWMgaW50IGk5MTVfcG93ZXJfZG9tYWluX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCiAJCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93 ZXJfZG9tYWluOwogCiAJCXBvd2VyX3dlbGwgPSAmcG93ZXJfZG9tYWlucy0+cG93ZXJfd2VsbHNb aV07Ci0JCXNlcV9wcmludGYobSwgIiUtMjVzICVkXG4iLCBwb3dlcl93ZWxsLT5uYW1lLAorCQlz ZXFfcHJpbnRmKG0sICIlLTI1cyAlZFxuIiwgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSwKIAkJCSAg IHBvd2VyX3dlbGwtPmNvdW50KTsKIAotCQlmb3JfZWFjaF9wb3dlcl9kb21haW4ocG93ZXJfZG9t YWluLCBwb3dlcl93ZWxsLT5kb21haW5zKQorCQlmb3JfZWFjaF9wb3dlcl9kb21haW4ocG93ZXJf ZG9tYWluLCBwb3dlcl93ZWxsLT5kZXNjLT5kb21haW5zKQogCQkJc2VxX3ByaW50ZihtLCAiICAl LTIzcyAlZFxuIiwKIAkJCQkgaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKHBvd2VyX2Rv bWFpbiksCiAJCQkJIHBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbcG93ZXJfZG9tYWlu XSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBlOTJmMzc0NTIxZmMuLmU4ZGY4MTgwYmUz NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC05MjQsNyArOTI0LDkgQEAgc3RhdGljIGlu dCBpOTE1X2RyaXZlcl9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlpbnRlbF91Y19pbml0X2Vhcmx5KGRldl9wcml2KTsKIAlpbnRlbF9wbV9zZXR1cChkZXZf cHJpdik7CiAJaW50ZWxfaW5pdF9kcGlvKGRldl9wcml2KTsKLQlpbnRlbF9wb3dlcl9kb21haW5z X2luaXQoZGV2X3ByaXYpOworCXJldCA9IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChkZXZfcHJp dik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyX3VjOwogCWludGVsX2lycV9pbml0KGRldl9w cml2KTsKIAlpbnRlbF9oYW5nY2hlY2tfaW5pdChkZXZfcHJpdik7CiAJaW50ZWxfaW5pdF9kaXNw bGF5X2hvb2tzKGRldl9wcml2KTsKQEAgLTkzNiw2ICs5MzgsOSBAQCBzdGF0aWMgaW50IGk5MTVf ZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJ cmV0dXJuIDA7CiAKK2Vycl91YzoKKwlpbnRlbF91Y19jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsK KwlpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKIGVycl93b3JrcXVldWVzOgogCWk5 MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsKIGVycl9lbmdpbmVzOgpAQCAtOTUwLDYg Kzk1NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9jbGVhbnVwX2Vh cmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpbnRlbF9pcnFfZmlu aShkZXZfcHJpdik7CisJaW50ZWxfcG93ZXJfZG9tYWluc19jbGVhbnVwKGRldl9wcml2KTsKIAlp bnRlbF91Y19jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKIAlpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5 KGRldl9wcml2KTsKIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAppbmRleCA0YWNhNTM0NDg2M2QuLjg1YWQxOTA5ZjVmMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCkBAIC04NjgsMTMgKzg2OCw5IEBAIHN0cnVjdCBpOTE1X3Bvd2VyX3dl bGxfb3BzIHsKIH07CiAKIC8qIFBvd2VyIHdlbGwgc3RydWN0dXJlIGZvciBoYXN3ZWxsICovCi1z dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsKK3N0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyB7CiAJ Y29uc3QgY2hhciAqbmFtZTsKIAlib29sIGFsd2F5c19vbjsKLQkvKiBwb3dlciB3ZWxsIGVuYWJs ZS9kaXNhYmxlIHVzYWdlIGNvdW50ICovCi0JaW50IGNvdW50OwotCS8qIGNhY2hlZCBodyBlbmFi bGVkIHN0YXRlICovCi0JYm9vbCBod19lbmFibGVkOwogCXU2NCBkb21haW5zOwogCS8qIHVuaXF1 ZSBpZGVudGlmaWVyIGZvciB0aGlzIHBvd2VyIHdlbGwgKi8KIAllbnVtIGk5MTVfcG93ZXJfd2Vs bF9pZCBpZDsKQEAgLTg5Nyw2ICs4OTMsMTQgQEAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCB7CiAJ Y29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgKm9wczsKIH07CiAKK3N0cnVjdCBpOTE1 X3Bvd2VyX3dlbGwgeworCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyAqZGVzYzsK KwkvKiBwb3dlciB3ZWxsIGVuYWJsZS9kaXNhYmxlIHVzYWdlIGNvdW50ICovCisJaW50IGNvdW50 OworCS8qIGNhY2hlZCBodyBlbmFibGVkIHN0YXRlICovCisJYm9vbCBod19lbmFibGVkOworfTsK Kwogc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyB7CiAJLyoKIAkgKiBQb3dlciB3ZWxscyBuZWVk ZWQgZm9yIGluaXRpYWxpemF0aW9uIGF0IGRyaXZlciBpbml0IGFuZCBzdXNwZW5kCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKaW5kZXggMGE3OWE0NmQ1ODA1Li42YTI4YmFjNzExMjgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKQEAgLTMyOSwxMSArMzI5LDExIEBA IHN0cnVjdCBpbnRlbF9saW5rX21fbiB7CiAKICNkZWZpbmUgZm9yX2VhY2hfcG93ZXJfZG9tYWlu X3dlbGwoX19kZXZfcHJpdiwgX19wb3dlcl93ZWxsLCBfX2RvbWFpbl9tYXNrKQlcCiAJZm9yX2Vh Y2hfcG93ZXJfd2VsbChfX2Rldl9wcml2LCBfX3Bvd2VyX3dlbGwpCQkJCVwKLQkJZm9yX2VhY2hf aWYoKF9fcG93ZXJfd2VsbCktPmRvbWFpbnMgJiAoX19kb21haW5fbWFzaykpCisJCWZvcl9lYWNo X2lmKChfX3Bvd2VyX3dlbGwpLT5kZXNjLT5kb21haW5zICYgKF9fZG9tYWluX21hc2spKQogCiAj ZGVmaW5lIGZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsX3JldihfX2Rldl9wcml2LCBfX3Bvd2Vy X3dlbGwsIF9fZG9tYWluX21hc2spIFwKIAlmb3JfZWFjaF9wb3dlcl93ZWxsX3JldihfX2Rldl9w cml2LCBfX3Bvd2VyX3dlbGwpCQkgICAgICAgIFwKLQkJZm9yX2VhY2hfaWYoKF9fcG93ZXJfd2Vs bCktPmRvbWFpbnMgJiAoX19kb21haW5fbWFzaykpCisJCWZvcl9lYWNoX2lmKChfX3Bvd2VyX3dl bGwpLT5kZXNjLT5kb21haW5zICYgKF9fZG9tYWluX21hc2spKQogCiAjZGVmaW5lIGZvcl9lYWNo X25ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShfX3N0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRl LCBfX2kpIFwKIAlmb3IgKChfX2kpID0gMDsgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRl eCAzNTc2YWI1NzM1YjEuLjA2MDFhYmI4YzcxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK QEAgLTE5NDgsNiArMTk0OCw3IEBAIGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpOwogCiAvKiBpbnRlbF9ydW50 aW1lX3BtLmMgKi8KIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKik7Cit2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfY2xlYW51cChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHJlc3VtZSk7CiB2b2lk IGludGVsX3Bvd2VyX2RvbWFpbnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwogdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwppbmRleCAwY2M2 YTg2MWJjZjguLjI2ZTQ4ZmM5NTU0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwpAQCAt NTcsOSArNTcsOSBAQCBzdGF0aWMgYm9vbCBoZGNwX2tleV9sb2FkYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAkvKiBQRzEgKHBvd2VyIHdlbGwgIzEpIG5lZWRzIHRv IGJlIGVuYWJsZWQgKi8KIAlmb3JfZWFjaF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxs KSB7Ci0JCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBpZCkgewotCQkJZW5hYmxlZCA9IHBvd2VyX3dl bGwtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwKLQkJCQkJCQkgICAgICBwb3dlcl93ZWxsKTsK KwkJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlkID09IGlkKSB7CisJCQllbmFibGVkID0gcG93ZXJf d2VsbC0+ZGVzYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LAorCQkJCQkJCQkgICAgcG93ZXJf d2VsbCk7CiAJCQlicmVhazsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYwppbmRleCBiMmQxODJjYzMzMTkuLmE4OTE2MDkwYTg1ZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwpAQCAtMTU5LDE3ICsxNTksMTcgQEAgaW50ZWxfZGlz cGxheV9wb3dlcl9kb21haW5fc3RyKGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9t YWluKQogc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dl cl93ZWxsKQogewotCURSTV9ERUJVR19LTVMoImVuYWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5u YW1lKTsKLQlwb3dlcl93ZWxsLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7CisJ RFJNX0RFQlVHX0tNUygiZW5hYmxpbmcgJXNcbiIsIHBvd2VyX3dlbGwtPmRlc2MtPm5hbWUpOwor CXBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+ZW5hYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKIAlw b3dlcl93ZWxsLT5od19lbmFibGVkID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfcG93 ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkg ICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JRFJNX0RFQlVHX0tN UygiZGlzYWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5uYW1lKTsKKwlEUk1fREVCVUdfS01TKCJk aXNhYmxpbmcgJXNcbiIsIHBvd2VyX3dlbGwtPmRlc2MtPm5hbWUpOwogCXBvd2VyX3dlbGwtPmh3 X2VuYWJsZWQgPSBmYWxzZTsKLQlwb3dlcl93ZWxsLT5vcHMtPmRpc2FibGUoZGV2X3ByaXYsIHBv d2VyX3dlbGwpOworCXBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+ZGlzYWJsZShkZXZfcHJpdiwgcG93 ZXJfd2VsbCk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxfZ2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wb3dlcl93ZWxsX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7CiAJV0FSTighcG93 ZXJfd2VsbC0+Y291bnQsICJVc2UgY291bnQgb24gcG93ZXIgd2VsbCAlcyBpcyBhbHJlYWR5IHpl cm8iLAotCSAgICAgcG93ZXJfd2VsbC0+bmFtZSk7CisJICAgICBwb3dlcl93ZWxsLT5kZXNjLT5u YW1lKTsKIAogCWlmICghLS1wb3dlcl93ZWxsLT5jb3VudCkKIAkJaW50ZWxfcG93ZXJfd2VsbF9k aXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIF9f aW50ZWxfZGlzcGxheV9wb3dlcl9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlpc19lbmFibGVkID0gdHJ1ZTsKIAogCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93 ZWxsX3JldihkZXZfcHJpdiwgcG93ZXJfd2VsbCwgQklUX1VMTChkb21haW4pKSB7Ci0JCWlmIChw b3dlcl93ZWxsLT5hbHdheXNfb24pCisJCWlmIChwb3dlcl93ZWxsLT5kZXNjLT5hbHdheXNfb24p CiAJCQljb250aW51ZTsKIAogCQlpZiAoIXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQpIHsKQEAgLTMy Myw3ICszMjMsNyBAQCBzdGF0aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9wcmVfZGlzYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMgdm9pZCBoc3dfd2FpdF9mb3Jf cG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQogewotCWVudW0gaTkxNV9w b3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7CisJZW51bSBpOTE1X3Bvd2VyX3dlbGxf aWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKIAogCS8qIFRpbWVvdXQgZm9yIFBXMToxMCB1 cywgQVVYOm5vdCBzcGVjaWZpZWQsIG90aGVyIFBXczoyMCB1cy4gKi8KIAlXQVJOX09OKGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LApAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB1 MzIgaHN3X3Bvd2VyX3dlbGxfcmVxdWVzdGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiBzdGF0aWMgdm9pZCBoc3dfd2FpdF9mb3JfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgIHN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dl cl93ZWxsLT5pZDsKKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmRl c2MtPmlkOwogCWJvb2wgZGlzYWJsZWQ7CiAJdTMyIHJlcXM7CiAKQEAgLTM3MCw3ICszNzAsNyBA QCBzdGF0aWMgdm9pZCBoc3dfd2FpdF9mb3JfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJcmV0dXJuOwogCiAJRFJNX0RFQlVHX0tNUygiJXMg Zm9yY2VkIG9uIChiaW9zOiVkIGRyaXZlcjolZCBrdm1yOiVkIGRlYnVnOiVkKVxuIiwKLQkJICAg ICAgcG93ZXJfd2VsbC0+bmFtZSwKKwkJICAgICAgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSwKIAkJ ICAgICAgISEocmVxcyAmIDEpLCAhIShyZXFzICYgMiksICEhKHJlcXMgJiA0KSwgISEocmVxcyAm IDgpKTsKIH0KIApAQCAtMzg2LDggKzM4Niw4IEBAIHN0YXRpYyB2b2lkIGdlbjlfd2FpdF9mb3Jf cG93ZXJfd2VsbF9mdXNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0 aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJCSAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKLQll bnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOwotCWJvb2wgd2FpdF9m dXNlcyA9IHBvd2VyX3dlbGwtPmhzdy5oYXNfZnVzZXM7CisJZW51bSBpOTE1X3Bvd2VyX3dlbGxf aWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKKwlib29sIHdhaXRfZnVzZXMgPSBwb3dlcl93 ZWxsLT5kZXNjLT5oc3cuaGFzX2Z1c2VzOwogCWVudW0gc2tsX3Bvd2VyX2dhdGUgdW5pbml0aWFs aXplZF92YXIocGcpOwogCXUzMiB2YWw7CiAKQEAgLTQyMSwxNyArNDIxLDE5IEBAIHN0YXRpYyB2 b2lkIGhzd19wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJaWYgKHdhaXRfZnVzZXMpCiAJCWdlbjlfd2FpdF9mb3JfcG93ZXJfd2VsbF9mdXNlcyhk ZXZfcHJpdiwgcGcpOwogCi0JaHN3X3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUoZGV2X3ByaXYsIHBv d2VyX3dlbGwtPmhzdy5pcnFfcGlwZV9tYXNrLAotCQkJCSAgIHBvd2VyX3dlbGwtPmhzdy5oYXNf dmdhKTsKKwloc3dfcG93ZXJfd2VsbF9wb3N0X2VuYWJsZShkZXZfcHJpdiwKKwkJCQkgICBwb3dl cl93ZWxsLT5kZXNjLT5oc3cuaXJxX3BpcGVfbWFzaywKKwkJCQkgICBwb3dlcl93ZWxsLT5kZXNj LT5oc3cuaGFzX3ZnYSk7CiB9CiAKIHN0YXRpYyB2b2lkIGhzd19wb3dlcl93ZWxsX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBw b3dlcl93ZWxsLT5pZDsKKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwt PmRlc2MtPmlkOwogCXUzMiB2YWw7CiAKLQloc3dfcG93ZXJfd2VsbF9wcmVfZGlzYWJsZShkZXZf cHJpdiwgcG93ZXJfd2VsbC0+aHN3LmlycV9waXBlX21hc2spOworCWhzd19wb3dlcl93ZWxsX3By ZV9kaXNhYmxlKGRldl9wcml2LAorCQkJCSAgIHBvd2VyX3dlbGwtPmRlc2MtPmhzdy5pcnFfcGlw ZV9tYXNrKTsKIAogCXZhbCA9IEk5MTVfUkVBRChIU1dfUFdSX1dFTExfQ1RMX0RSSVZFUihpZCkp OwogCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0NUTF9EUklWRVIoaWQpLApAQCAtNDQ1LDcgKzQ0 Nyw3IEBAIHN0YXRpYyB2b2lkCiBpY2xfY29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX2VuYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7Ci0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBw b3dlcl93ZWxsLT5pZDsKKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwt PmRlc2MtPmlkOwogCWVudW0gcG9ydCBwb3J0ID0gSUNMX0FVWF9QV19UT19QT1JUKGlkKTsKIAl1 MzIgdmFsOwogCkBAIC00NjIsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQKIGljbF9jb21ib19waHlf YXV4X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJICAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQogewotCWVudW0g aTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7CisJZW51bSBpOTE1X3Bvd2Vy X3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKIAllbnVtIHBvcnQgcG9ydCA9IElD TF9BVVhfUFdfVE9fUE9SVChpZCk7CiAJdTMyIHZhbDsKIApAQCAtNDg0LDcgKzQ4Niw3IEBAIGlj bF9jb21ib19waHlfYXV4X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiBzdGF0aWMgYm9vbCBoc3dfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs ICpwb3dlcl93ZWxsKQogewotCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2Vs bC0+aWQ7CisJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5p ZDsKIAl1MzIgbWFzayA9IEhTV19QV1JfV0VMTF9DVExfUkVRKGlkKSB8IEhTV19QV1JfV0VMTF9D VExfU1RBVEUoaWQpOwogCiAJcmV0dXJuIChJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0NUTF9EUklW RVIoaWQpKSAmIG1hc2spID09IG1hc2s7CkBAIC03MjMsNyArNzI1LDcgQEAgc3RhdGljIHZvaWQg c2tsX2VuYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGlj IHZvaWQgaHN3X3Bvd2VyX3dlbGxfc3luY19odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCQkJICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKLQll bnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOworCWVudW0gaTkxNV9w b3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7CiAJdTMyIG1hc2sgPSBIU1df UFdSX1dFTExfQ1RMX1JFUShpZCk7CiAJdTMyIGJpb3NfcmVxID0gSTkxNV9SRUFEKEhTV19QV1Jf V0VMTF9DVExfQklPUyhpZCkpOwogCkBAIC03NDAsMTkgKzc0MiwxOSBAQCBzdGF0aWMgdm9pZCBo c3dfcG93ZXJfd2VsbF9zeW5jX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IHN0YXRpYyB2b2lkIGJ4dF9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBv d2VyX3dlbGwpCiB7Ci0JYnh0X2RkaV9waHlfaW5pdChkZXZfcHJpdiwgcG93ZXJfd2VsbC0+Ynh0 LnBoeSk7CisJYnh0X2RkaV9waHlfaW5pdChkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ZGVzYy0+Ynh0 LnBoeSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJ4dF9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkgICAgc3RydWN0IGk5MTVf cG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKLQlieHRfZGRpX3BoeV91bmluaXQoZGV2X3ByaXYs IHBvd2VyX3dlbGwtPmJ4dC5waHkpOworCWJ4dF9kZGlfcGh5X3VuaW5pdChkZXZfcHJpdiwgcG93 ZXJfd2VsbC0+ZGVzYy0+Ynh0LnBoeSk7CiB9CiAKIHN0YXRpYyBib29sIGJ4dF9kcGlvX2Ntbl9w b3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKLQlyZXR1cm4gYnh0 X2RkaV9waHlfaXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2VsbC0+Ynh0LnBoeSk7CisJcmV0 dXJuIGJ4dF9kZGlfcGh5X2lzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dlbGwtPmRlc2MtPmJ4 dC5waHkpOwogfQogCiBzdGF0aWMgdm9pZCBieHRfdmVyaWZ5X2RkaV9waHlfcG93ZXJfd2VsbHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtNzYxLDE2ICs3NjMsMTcgQEAg c3RhdGljIHZvaWQgYnh0X3ZlcmlmeV9kZGlfcGh5X3Bvd2VyX3dlbGxzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAogCXBvd2VyX3dlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChk ZXZfcHJpdiwgQlhUX0RQSU9fQ01OX0EpOwogCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+IDApCi0J CWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+Ynh0LnBoeSk7 CisJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ZGVzYy0+ Ynh0LnBoeSk7CiAKIAlwb3dlcl93ZWxsID0gbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIEJY VF9EUElPX0NNTl9CQyk7CiAJaWYgKHBvd2VyX3dlbGwtPmNvdW50ID4gMCkKLQkJYnh0X2RkaV9w aHlfdmVyaWZ5X3N0YXRlKGRldl9wcml2LCBwb3dlcl93ZWxsLT5ieHQucGh5KTsKKwkJYnh0X2Rk aV9waHlfdmVyaWZ5X3N0YXRlKGRldl9wcml2LCBwb3dlcl93ZWxsLT5kZXNjLT5ieHQucGh5KTsK IAogCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewogCQlwb3dlcl93ZWxsID0gbG9va3Vw X3Bvd2VyX3dlbGwoZGV2X3ByaXYsIEdMS19EUElPX0NNTl9DKTsKIAkJaWYgKHBvd2VyX3dlbGwt PmNvdW50ID4gMCkKLQkJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJf d2VsbC0+Ynh0LnBoeSk7CisJCQlieHRfZGRpX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsCisJ CQkJCQkgcG93ZXJfd2VsbC0+ZGVzYy0+Ynh0LnBoeSk7CiAJfQogfQogCkBAIC04NjksNyArODcy LDcgQEAgc3RhdGljIHZvaWQgaTgzMF9waXBlc19wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgdmx2X3NldF9wb3dlcl93ZWxs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgICBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsLCBib29sIGVuYWJsZSkKIHsKLQllbnVtIGk5MTVfcG93 ZXJfd2VsbF9pZCBwb3dlcl93ZWxsX2lkID0gcG93ZXJfd2VsbC0+aWQ7CisJZW51bSBpOTE1X3Bv d2VyX3dlbGxfaWQgcG93ZXJfd2VsbF9pZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwogCXUzMiBt YXNrOwogCXUzMiBzdGF0ZTsKIAl1MzIgY3RybDsKQEAgLTkxNyw3ICs5MjAsNyBAQCBzdGF0aWMg dm9pZCB2bHZfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHN0YXRpYyBib29sIHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2Vy X3dlbGwpCiB7Ci0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgcG93ZXJfd2VsbF9pZCA9IHBvd2Vy X3dlbGwtPmlkOworCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHBvd2VyX3dlbGxfaWQgPSBwb3dl cl93ZWxsLT5kZXNjLT5pZDsKIAlib29sIGVuYWJsZWQgPSBmYWxzZTsKIAl1MzIgbWFzazsKIAl1 MzIgc3RhdGU7CkBAIC0xMTA3LDcgKzExMTAsNyBAQCBsb29rdXBfcG93ZXJfd2VsbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBv d2VyX3dlbGw7CiAKIAkJcG93ZXJfd2VsbCA9ICZwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsc1tp XTsKLQkJaWYgKHBvd2VyX3dlbGwtPmlkID09IHBvd2VyX3dlbGxfaWQpCisJCWlmIChwb3dlcl93 ZWxsLT5kZXNjLT5pZCA9PSBwb3dlcl93ZWxsX2lkKQogCQkJcmV0dXJuIHBvd2VyX3dlbGw7CiAJ fQogCkBAIC0xMTQ2LDcgKzExNDksNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfY2h2X3BoeV9zdGF0 dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJCSAgICAgUEhZX1NUQVRV U19TUExJTkVfTERPKERQSU9fUEhZMSwgRFBJT19DSDAsIDApIHwKIAkJCQkgICAgIFBIWV9TVEFU VVNfU1BMSU5FX0xETyhEUElPX1BIWTEsIERQSU9fQ0gwLCAxKSk7CiAKLQlpZiAoY21uX2JjLT5v cHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKKwlpZiAoY21uX2JjLT5kZXNjLT5v cHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKIAkJcGh5X3N0YXR1cyB8PSBQSFlf UE9XRVJHT09EKERQSU9fUEhZMCk7CiAKIAkJLyogdGhpcyBhc3N1bWVzIG92ZXJyaWRlIGlzIG9u bHkgdXNlZCB0byBlbmFibGUgbGFuZXMgKi8KQEAgLTExODcsNyArMTE5MCw3IEBAIHN0YXRpYyB2 b2lkIGFzc2VydF9jaHZfcGh5X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCQlwaHlfc3RhdHVzIHw9IFBIWV9TVEFUVVNfU1BMSU5FX0xETyhEUElPX1BIWTAsIERQ SU9fQ0gxLCAxKTsKIAl9CiAKLQlpZiAoY21uX2QtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwg Y21uX2QpKSB7CisJaWYgKGNtbl9kLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNt bl9kKSkgewogCQlwaHlfc3RhdHVzIHw9IFBIWV9QT1dFUkdPT0QoRFBJT19QSFkxKTsKIAogCQkv KiB0aGlzIGFzc3VtZXMgb3ZlcnJpZGUgaXMgb25seSB1c2VkIHRvIGVuYWJsZSBsYW5lcyAqLwpA QCAtMTIzMSwxMCArMTIzNCwxMCBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2Vs bF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWVudW0gcGlwZSBw aXBlOwogCXVpbnQzMl90IHRtcDsKIAotCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5pZCAhPSBQ VU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDICYmCi0JCSAgICAgcG93ZXJfd2VsbC0+aWQgIT0g UFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKKwlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+ ZGVzYy0+aWQgIT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQyAmJgorCQkgICAgIHBvd2Vy X3dlbGwtPmRlc2MtPmlkICE9IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fRCk7CiAKLQlpZiAo cG93ZXJfd2VsbC0+aWQgPT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgeworCWlmIChw b3dlcl93ZWxsLT5kZXNjLT5pZCA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7CiAJ CXBpcGUgPSBQSVBFX0E7CiAJCXBoeSA9IERQSU9fUEhZMDsKIAl9IGVsc2UgewpAQCAtMTI2Miw3 ICsxMjY1LDcgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJRFBJT19TVVNfQ0xLX0NPTkZJR19H QVRFX0NMS1JFUTsKIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzI4 LCB0bXApOwogCi0JaWYgKHBvd2VyX3dlbGwtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19D TU5fQkMpIHsKKwlpZiAocG93ZXJfd2VsbC0+ZGVzYy0+aWQgPT0gUFVOSVRfUE9XRVJfV0VMTF9E UElPX0NNTl9CQykgewogCQl0bXAgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBfQ0hW X0NNTl9EVzZfQ0gxKTsKIAkJdG1wIHw9IERQSU9fRFlOUFdSRE9XTkVOX0NIMTsKIAkJdmx2X2Rw aW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXNl9DSDEsIHRtcCk7CkBAIC0xMjkz LDEwICsxMjk2LDEwIEBAIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Rpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogewogCWVudW0gZHBpb19waHkg cGh5OwogCi0JV0FSTl9PTl9PTkNFKHBvd2VyX3dlbGwtPmlkICE9IFBVTklUX1BPV0VSX1dFTExf RFBJT19DTU5fQkMgJiYKLQkJICAgICBwb3dlcl93ZWxsLT5pZCAhPSBQVU5JVF9QT1dFUl9XRUxM X0RQSU9fQ01OX0QpOworCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5kZXNjLT5pZCAhPSBQVU5J VF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDICYmCisJCSAgICAgcG93ZXJfd2VsbC0+ZGVzYy0+aWQg IT0gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKIAotCWlmIChwb3dlcl93ZWxsLT5pZCA9 PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7CisJaWYgKHBvd2VyX3dlbGwtPmRlc2Mt PmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsKIAkJcGh5ID0gRFBJT19QSFkw OwogCQlhc3NlcnRfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBFX0EpOwogCQlhc3NlcnRfcGxs X2Rpc2FibGVkKGRldl9wcml2LCBQSVBFX0IpOwpAQCAtMjA1MSw3ICsyMDU0LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxs X29wcyA9IHsKIAkuaXNfZW5hYmxlZCA9IHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQsCiB9OwogCi1z dGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsW10g PSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGk5eHhfYWx3YXlz X29uX3Bvd2VyX3dlbGxbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdh eXNfb24gPSAxLApAQCAtMjA2OCw3ICsyMDcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGxfb3BzIGk4MzBfcGlwZXNfcG93ZXJfd2VsbF9vcHMgPSB7CiAJLmlzX2VuYWJs ZWQgPSBpODMwX3BpcGVzX3Bvd2VyX3dlbGxfZW5hYmxlZCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qg aTkxNV9wb3dlcl93ZWxsIGk4MzBfcG93ZXJfd2VsbHNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2MgaTgzMF9wb3dlcl93ZWxsc1tdID0gewogCXsKIAkJLm5h bWUgPSAiYWx3YXlzLW9uIiwKIAkJLmFsd2F5c19vbiA9IDEsCkBAIC0yMTA1LDcgKzIxMDgsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgYnh0X2RwaW9fY21uX3Bv d2VyX3dlbGxfb3BzID0gewogCS5pc19lbmFibGVkID0gYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxf ZW5hYmxlZCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGhzd19wb3dlcl93 ZWxsc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBoc3df cG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdheXNf b24gPSAxLApAQCAtMjEyNCw3ICsyMTI3LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dl bGwgaHN3X3Bvd2VyX3dlbGxzW10gPSB7CiAJfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsIGJkd19wb3dlcl93ZWxsc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGxfZGVzYyBiZHdfcG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFs d2F5cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApAQCAtMjE2NSw3ICsyMTY4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzIHZsdl9kcGlvX3Bvd2VyX3dlbGxfb3Bz ID0gewogCS5pc19lbmFibGVkID0gdmx2X3Bvd2VyX3dlbGxfZW5hYmxlZCwKIH07CiAKLXN0YXRp YyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHZsdl9wb3dlcl93ZWxsc1tdID0geworc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyB2bHZfcG93ZXJfd2VsbHNbXSA9IHsKIAl7 CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdheXNfb24gPSAxLApAQCAtMjIyMyw3ICsy MjI2LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgdmx2X3Bvd2VyX3dlbGxzW10g PSB7CiAJfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGNodl9wb3dlcl93 ZWxsc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBjaHZf cG93ZXJfd2VsbHNbXSA9IHsKIAl7CiAJCS5uYW1lID0gImFsd2F5cy1vbiIsCiAJCS5hbHdheXNf b24gPSAxLApAQCAtMjI2MywxMiArMjI2NiwxMiBAQCBib29sIGludGVsX2Rpc3BsYXlfcG93ZXJf d2VsbF9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlib29s IHJldDsKIAogCXBvd2VyX3dlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJf d2VsbF9pZCk7Ci0JcmV0ID0gcG93ZXJfd2VsbC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBw b3dlcl93ZWxsKTsKKwlyZXQgPSBwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2 X3ByaXYsIHBvd2VyX3dlbGwpOwogCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfcG93ZXJfd2VsbF9kZXNjIHNrbF9wb3dlcl93ZWxsc1tdID0gewogCXsKIAkJLm5hbWUg PSAiYWx3YXlzLW9uIiwKIAkJLmFsd2F5c19vbiA9IDEsCkBAIC0yMzM2LDcgKzIzMzksNyBAQCBz dGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBza2xfcG93ZXJfd2VsbHNbXSA9IHsKIAl9LAog fTsKIAotc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgYnh0X3Bvd2VyX3dlbGxzW10gPSB7 CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGJ4dF9wb3dlcl93ZWxs c1tdID0gewogCXsKIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKIAkJLmFsd2F5c19vbiA9IDEsCkBA IC0yMzkwLDcgKzIzOTMsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBieHRfcG93 ZXJfd2VsbHNbXSA9IHsKIAl9LAogfTsKIAotc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwg Z2xrX3Bvd2VyX3dlbGxzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bF9kZXNjIGdsa19wb3dlcl93ZWxsc1tdID0gewogCXsKIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwK IAkJLmFsd2F5c19vbiA9IDEsCkBAIC0yNDkwLDcgKzI0OTMsNyBAQCBzdGF0aWMgc3RydWN0IGk5 MTVfcG93ZXJfd2VsbCBnbGtfcG93ZXJfd2VsbHNbXSA9IHsKIAl9LAogfTsKIAotc3RhdGljIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgY25sX3Bvd2VyX3dlbGxzW10gPSB7CitzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGNubF9wb3dlcl93ZWxsc1tdID0gewogCXsKIAkJ Lm5hbWUgPSAiYWx3YXlzLW9uIiwKIAkJLmFsd2F5c19vbiA9IDEsCkBAIC0yNTk0LDcgKzI1OTcs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgaWNsX2NvbWJvX3Bo eV9hdXhfcG93ZXJfd2VsbF9vcHMgPSB7CiAJLmlzX2VuYWJsZWQgPSBoc3dfcG93ZXJfd2VsbF9l bmFibGVkLAogfTsKIAotc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgaWNsX3Bvd2VyX3dl bGxzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGljbF9w b3dlcl93ZWxsc1tdID0gewogCXsKIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKIAkJLmFsd2F5c19v biA9IDEsCkBAIC0yODA1LDI2ICsyODA4LDM3IEBAIHN0YXRpYyB1aW50MzJfdCBnZXRfYWxsb3dl ZF9kY19tYXNrKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlyZXR1 cm4gbWFzazsKIH0KIAotc3RhdGljIHZvaWQgYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3VuaXF1ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgaW50CitfX3NldF9wb3dl cl93ZWxscyhzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zLAorCQkgIGNv bnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyAqcG93ZXJfd2VsbF9kZXNjcywKKwkJICBp bnQgcG93ZXJfd2VsbF9jb3VudCkKIHsKLQlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dl cl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOwotCXU2NCBwb3dlcl93ZWxsX2lk czsKKwl1NjQgcG93ZXJfd2VsbF9pZHMgPSAwOwogCWludCBpOwogCi0JcG93ZXJfd2VsbF9pZHMg PSAwOwotCWZvciAoaSA9IDA7IGkgPCBwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsX2NvdW50OyBp KyspIHsKLQkJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl9kb21haW5zLT5wb3dl cl93ZWxsc1tpXS5pZDsKKwlwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsX2NvdW50ID0gcG93ZXJf d2VsbF9jb3VudDsKKwlwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxscyA9IGtjYWxsb2MocG93ZXJf d2VsbF9jb3VudCwKKwkJCQkJICAgIHNpemVvZigqcG93ZXJfZG9tYWlucy0+cG93ZXJfd2VsbHMp LAorCQkJCQkgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxs cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IgKGkgPSAwOyBpIDwgcG93ZXJfd2VsbF9jb3Vu dDsgaSsrKSB7CisJCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbF9kZXNj c1tpXS5pZDsKKworCQlwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsc1tpXS5kZXNjID0gJnBvd2Vy X3dlbGxfZGVzY3NbaV07CiAKIAkJV0FSTl9PTihpZCA+PSBzaXplb2YocG93ZXJfd2VsbF9pZHMp ICogOCk7CiAJCVdBUk5fT04ocG93ZXJfd2VsbF9pZHMgJiBCSVRfVUxMKGlkKSk7CiAJCXBvd2Vy X3dlbGxfaWRzIHw9IEJJVF9VTEwoaWQpOwogCX0KKworCXJldHVybiAwOwogfQogCi0jZGVmaW5l IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBfX3Bvd2VyX3dlbGxzKSAoewkJXAotCShw b3dlcl9kb21haW5zKS0+cG93ZXJfd2VsbHMgPSAoX19wb3dlcl93ZWxscyk7CQkJXAotCShwb3dl cl9kb21haW5zKS0+cG93ZXJfd2VsbF9jb3VudCA9IEFSUkFZX1NJWkUoX19wb3dlcl93ZWxscyk7 CVwKLX0pCisjZGVmaW5lIHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBfX3Bvd2VyX3dl bGxfZGVzY3MpIFwKKwlfX3NldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBfX3Bvd2VyX3dl bGxfZGVzY3MsIFwKKwkJCSAgQVJSQVlfU0laRShfX3Bvd2VyX3dlbGxfZGVzY3MpKQogCiAvKioK ICAqIGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdCAtIGluaXRpYWxpemVzIHRoZSBwb3dlciBkb21h aW4gc3RydWN0dXJlcwpAQCAtMjgzNiw2ICsyODUwLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Bv d2VyX3dlbGxfaWRzX3VuaXF1ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBp bnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKIAlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRl dl9wcml2LT5wb3dlcl9kb21haW5zOworCWludCBlcnI7CiAKIAlpOTE1X21vZHBhcmFtcy5kaXNh YmxlX3Bvd2VyX3dlbGwgPQogCQlzYW5pdGl6ZV9kaXNhYmxlX3Bvd2VyX3dlbGxfb3B0aW9uKGRl dl9wcml2LApAQCAtMjg1MiwxNSArMjg2NywxNSBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKiB0aGUgZGlzYWJsaW5n IG9yZGVyIGlzIHJldmVyc2VkLgogCSAqLwogCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkgewot CQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgaWNsX3Bvd2VyX3dlbGxzKTsKKwkJZXJy ID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGljbF9wb3dlcl93ZWxscyk7CiAJfSBl bHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewotCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJf ZG9tYWlucywgaHN3X3Bvd2VyX3dlbGxzKTsKKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2Vy X2RvbWFpbnMsIGhzd19wb3dlcl93ZWxscyk7CiAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBiZHdfcG93ZXJfd2Vs bHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgYmR3X3Bvd2VyX3dl bGxzKTsKIAl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93 ZWxscyhwb3dlcl9kb21haW5zLCBza2xfcG93ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJf d2VsbHMocG93ZXJfZG9tYWlucywgc2tsX3Bvd2VyX3dlbGxzKTsKIAl9IGVsc2UgaWYgKElTX0NB Tk5PTkxBS0UoZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBj bmxfcG93ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywg Y25sX3Bvd2VyX3dlbGxzKTsKIAogCQkvKgogCQkgKiBEREkgYW5kIEF1eCBJTyBhcmUgZ2V0dGlu ZyBlbmFibGVkIGZvciBhbGwgcG9ydHMKQEAgLTI4NzIsMjIgKzI4ODcsMzEgQEAgaW50IGludGVs X3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CQlwb3dlcl9kb21haW5zLT5wb3dlcl93ZWxsX2NvdW50IC09IDI7CiAKIAl9IGVsc2UgaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBi eHRfcG93ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywg Ynh0X3Bvd2VyX3dlbGxzKTsKIAl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7 Ci0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBnbGtfcG93ZXJfd2VsbHMpOworCQll cnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgZ2xrX3Bvd2VyX3dlbGxzKTsKIAl9 IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhw b3dlcl9kb21haW5zLCBjaHZfcG93ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMo cG93ZXJfZG9tYWlucywgY2h2X3Bvd2VyX3dlbGxzKTsKIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCB2bHZfcG93 ZXJfd2VsbHMpOworCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgdmx2X3Bv d2VyX3dlbGxzKTsKIAl9IGVsc2UgaWYgKElTX0k4MzAoZGV2X3ByaXYpKSB7Ci0JCXNldF9wb3dl cl93ZWxscyhwb3dlcl9kb21haW5zLCBpODMwX3Bvd2VyX3dlbGxzKTsKKwkJZXJyID0gc2V0X3Bv d2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGk4MzBfcG93ZXJfd2VsbHMpOwogCX0gZWxzZSB7Ci0J CXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxs KTsKKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGk5eHhfYWx3YXlzX29u X3Bvd2VyX3dlbGwpOwogCX0KIAotCWFzc2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoZGV2X3By aXYpOworCXJldHVybiBlcnI7Cit9CiAKLQlyZXR1cm4gMDsKKy8qKgorICogaW50ZWxfcG93ZXJf ZG9tYWluc19jbGVhbnVwIC0gY2xlYW4gdXAgcG93ZXIgZG9tYWlucyByZXNvdXJjZXMKKyAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqCisgKiBSZWxlYXNlIGFueSByZXNvdXJj ZXMgYWNxdWlyZWQgYnkgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KCkKKyAqLwordm9pZCBpbnRl bF9wb3dlcl9kb21haW5zX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQoreworCWtmcmVlKGRldl9wcml2LT5wb3dlcl9kb21haW5zLnBvd2VyX3dlbGxzKTsKIH0KIAog c3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zeW5jX2h3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKQEAgLTI4OTcsOSArMjkyMSw5IEBAIHN0YXRpYyB2b2lkIGludGVs X3Bvd2VyX2RvbWFpbnNfc3luY19odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAKIAltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKIAlmb3JfZWFjaF9wb3dlcl93 ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsKSB7Ci0JCXBvd2VyX3dlbGwtPm9wcy0+c3luY19odyhk ZXZfcHJpdiwgcG93ZXJfd2VsbCk7Ci0JCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPSBwb3dlcl93 ZWxsLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsCi0JCQkJCQkJCSAgICAgcG93ZXJfd2VsbCk7 CisJCXBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+c3luY19odyhkZXZfcHJpdiwgcG93ZXJfd2VsbCk7 CisJCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPQorCQkJcG93ZXJfd2VsbC0+ZGVzYy0+b3BzLT5p c19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZwb3dl cl9kb21haW5zLT5sb2NrKTsKIH0KQEAgLTMzOTgsNyArMzQyMiw3IEBAIHN0YXRpYyB2b2lkIGNo dl9waHlfY29udHJvbF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkg KiBvdmVycmlkZSBhbmQgc2V0IHRoZSBsYW5lIHBvd2VyZG93biBiaXRzIGFjY2RpbmcgdG8gdGhl CiAJICogY3VycmVudCBsYW5lIHN0YXR1cy4KIAkgKi8KLQlpZiAoY21uX2JjLT5vcHMtPmlzX2Vu YWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKKwlpZiAoY21uX2JjLT5kZXNjLT5vcHMtPmlzX2Vu YWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKIAkJdWludDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFE KERQTEwoUElQRV9BKSk7CiAJCXVuc2lnbmVkIGludCBtYXNrOwogCkBAIC0zNDI5LDcgKzM0NTMs NyBAQCBzdGF0aWMgdm9pZCBjaHZfcGh5X2NvbnRyb2xfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9wcml2LT5jaHZfcGh5X2Fzc2VydFtEUElPX1BIWTBdID0g dHJ1ZTsKIAl9CiAKLQlpZiAoY21uX2QtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2Qp KSB7CisJaWYgKGNtbl9kLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkg ewogCQl1aW50MzJfdCBzdGF0dXMgPSBJOTE1X1JFQUQoRFBJT19QSFlfU1RBVFVTKTsKIAkJdW5z aWduZWQgaW50IG1hc2s7CiAKQEAgLTM0NjUsMTUgKzM0ODksMTUgQEAgc3RhdGljIHZvaWQgdmx2 X2NtbmxhbmVfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlsb29rdXBf cG93ZXJfd2VsbChkZXZfcHJpdiwgUFVOSVRfUE9XRVJfV0VMTF9ESVNQMkQpOwogCiAJLyogSWYg dGhlIGRpc3BsYXkgbWlnaHQgYmUgYWxyZWFkeSBhY3RpdmUgc2tpcCB0aGlzICovCi0JaWYgKGNt bi0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW4pICYmCi0JICAgIGRpc3AyZC0+b3BzLT5p c19lbmFibGVkKGRldl9wcml2LCBkaXNwMmQpICYmCisJaWYgKGNtbi0+ZGVzYy0+b3BzLT5pc19l bmFibGVkKGRldl9wcml2LCBjbW4pICYmCisJICAgIGRpc3AyZC0+ZGVzYy0+b3BzLT5pc19lbmFi bGVkKGRldl9wcml2LCBkaXNwMmQpICYmCiAJICAgIEk5MTVfUkVBRChEUElPX0NUTCkgJiBEUElP X0NNTlJTVCkKIAkJcmV0dXJuOwogCiAJRFJNX0RFQlVHX0tNUygidG9nZ2xpbmcgZGlzcGxheSBQ SFkgc2lkZSByZXNldFxuIik7CiAKIAkvKiBjbW5sYW5lIG5lZWRzIERQTEwgcmVnaXN0ZXJzICov Ci0JZGlzcDJkLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwgZGlzcDJkKTsKKwlkaXNwMmQtPmRlc2Mt Pm9wcy0+ZW5hYmxlKGRldl9wcml2LCBkaXNwMmQpOwogCiAJLyoKIAkgKiBGcm9tIFZMVjJBMF9E UF9lRFBfSERNSV9EUElPX2RyaXZlcl92Ymlvc19ub3Rlc18xMS5kb2N4OgpAQCAtMzQ4Miw3ICsz NTA2LDcgQEAgc3RhdGljIHZvaWQgdmx2X2NtbmxhbmVfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCSAqIFNpbXBseSB1bmdhdGluZyBpc24ndCBlbm91Z2ggdG8gcmVzZXQg dGhlIFBIWSBlbm91Z2ggdG8gZ2V0CiAJICogcG9ydHMgYW5kIGxhbmVzIHJ1bm5pbmcuCiAJICov Ci0JY21uLT5vcHMtPmRpc2FibGUoZGV2X3ByaXYsIGNtbik7CisJY21uLT5kZXNjLT5vcHMtPmRp c2FibGUoZGV2X3ByaXYsIGNtbik7CiB9CiAKIC8qKgpAQCAtMzU5OCw5ICszNjIyLDkgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19kdW1wX2luZm8oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFp bjsKIAogCQlEUk1fREVCVUdfRFJJVkVSKCIlLTI1cyAlZFxuIiwKLQkJCQkgcG93ZXJfd2VsbC0+ bmFtZSwgcG93ZXJfd2VsbC0+Y291bnQpOworCQkJCSBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lLCBw b3dlcl93ZWxsLT5jb3VudCk7CiAKLQkJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFpbiwgcG93 ZXJfd2VsbC0+ZG9tYWlucykKKwkJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFpbiwgcG93ZXJf d2VsbC0+ZGVzYy0+ZG9tYWlucykKIAkJCURSTV9ERUJVR19EUklWRVIoIiAgJS0yM3MgJWRcbiIs CiAJCQkJCSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZG9tYWluKSwKIAkJCQkJIHBv d2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWluXSk7CkBAIC0zNjM2LDIyICszNjYw LDI1IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgKiBhbmQgUFcxIHBvd2VyIHdlbGxzKSBhcmUgdW5k ZXIgRlcgY29udHJvbCwgc28gaWdub3JlIHRoZW0sCiAJCSAqIHNpbmNlIHRoZWlyIHN0YXRlIGNh biBjaGFuZ2UgYXN5bmNocm9ub3VzbHkuCiAJCSAqLwotCQlpZiAoIXBvd2VyX3dlbGwtPmRvbWFp bnMpCisJCWlmICghcG93ZXJfd2VsbC0+ZGVzYy0+ZG9tYWlucykKIAkJCWNvbnRpbnVlOwogCi0J CWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dl bGwpOwotCQlpZiAoKHBvd2VyX3dlbGwtPmNvdW50IHx8IHBvd2VyX3dlbGwtPmFsd2F5c19vbikg IT0gZW5hYmxlZCkKKwkJZW5hYmxlZCA9IHBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+aXNfZW5hYmxl ZChkZXZfcHJpdiwKKwkJCQkJCQkgICAgcG93ZXJfd2VsbCk7CisJCWlmICgocG93ZXJfd2VsbC0+ Y291bnQgfHwgcG93ZXJfd2VsbC0+ZGVzYy0+YWx3YXlzX29uKSAhPQorCQkgICAgZW5hYmxlZCkK IAkJCURSTV9FUlJPUigicG93ZXIgd2VsbCAlcyBzdGF0ZSBtaXNtYXRjaCAocmVmY291bnQgJWQv ZW5hYmxlZCAlZCkiLAotCQkJCSAgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0+Y291bnQs IGVuYWJsZWQpOworCQkJCSAgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSwKKwkJCQkgIHBvd2VyX3dl bGwtPmNvdW50LCBlbmFibGVkKTsKIAogCQlkb21haW5zX2NvdW50ID0gMDsKLQkJZm9yX2VhY2hf cG93ZXJfZG9tYWluKGRvbWFpbiwgcG93ZXJfd2VsbC0+ZG9tYWlucykKKwkJZm9yX2VhY2hfcG93 ZXJfZG9tYWluKGRvbWFpbiwgcG93ZXJfd2VsbC0+ZGVzYy0+ZG9tYWlucykKIAkJCWRvbWFpbnNf Y291bnQgKz0gcG93ZXJfZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtkb21haW5dOwogCiAJCWlm IChwb3dlcl93ZWxsLT5jb3VudCAhPSBkb21haW5zX2NvdW50KSB7CiAJCQlEUk1fRVJST1IoInBv d2VyIHdlbGwgJXMgcmVmY291bnQvZG9tYWluIHJlZmNvdW50IG1pc21hdGNoICIKIAkJCQkgICIo cmVmY291bnQgJWQvZG9tYWlucyByZWZjb3VudCAlZClcbiIsCi0JCQkJICBwb3dlcl93ZWxsLT5u YW1lLCBwb3dlcl93ZWxsLT5jb3VudCwKKwkJCQkgIHBvd2VyX3dlbGwtPmRlc2MtPm5hbWUsIHBv d2VyX3dlbGwtPmNvdW50LAogCQkJCSAgZG9tYWluc19jb3VudCk7CiAJCQlkdW1wX2RvbWFpbl9p bmZvID0gdHJ1ZTsKIAkJfQotLSAKMi4xMy4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK