From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH] drm/i915: Allow control of PSR at runtime through debugfs. Date: Thu, 15 Mar 2018 11:28:27 +0100 Message-ID: <20180315102827.30946-1-maarten.lankhorst@linux.intel.com> References: <20180314215315.GW3945@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5866E6E7FE for ; Thu, 15 Mar 2018 10:28:34 +0000 (UTC) In-Reply-To: <20180314215315.GW3945@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: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Q3VycmVudGx5IHRlc3RzIG1vZGlmeSBpOTE1LmVuYWJsZV9wc3IgYW5kIHRoZW4gZG8gYSBtb2Rl c2V0IGN5Y2xlCnRvIGNoYW5nZSBQU1IuIFdlIGNhbiB3cml0ZSBhIHZhbHVlIHRvIGk5MTVfZWRw X3Bzcl9zdGF0dXMgdG8gZm9yY2UKYSBjZXJ0YWluIHZhbHVlIHdpdGhvdXQgYSBtb2Rlc2V0LgoK VG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB1c2Vyc3BhY2UsIHdlIGFsc28gc3Rp bGwgYWxsb3cKdGhlIG92ZXJyaWRlIHRocm91Z2ggdGhlIG1vZHVsZSBwYXJhbWV0ZXIsIGFuZCBh ZGQgc29tZSB0cmFja2luZwp0byBjaGVjayB3aGV0aGVyIGEgZGVidWdmcyBtb2RlIGlzIHNwZWNp ZmllZC4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gUmVuYW1lIGRldl9wcml2LT5wc3IuZW5hYmxlZCB0 byAuZHAsIGFuZCAuaHdfY29uZmlndXJlZCB0byAuZW5hYmxlZC4KLSBGaXggaTkxNV9wc3JfZGVi dWdmc19tb2RlIHRvIG1hdGNoIHRoZSB3cml0ZXMgdG8gZGVidWdmcy4KLSBSZW5hbWUgX19pOTE1 X2VkcF9wc3Jfd3JpdGUgdG8gaW50ZWxfcHNyX3NldF9kZWJ1Z2ZzX21vZGUsIHNpbXBsaWZ5CiAg aXQgYW5kIG1vdmUgaXQgdG8gaW50ZWxfcHNyLmMuIFRoaXMga2VlcHMgYWxsIGludGVybmFscyBp biBpbnRlbF9wc3IuYwotIFBlcmZvcm0gYW4gaW50ZXJydXB0aWJsZSB3YWl0IGZvciBodyBjb21w bGV0aW9uIG91dHNpZGUgb2YgdGhlIHBzcgogIGxvY2ssIGluc3RlYWQgb2YgYmVpbmcgZm9yY2Vk IHRvIHRyeXdhaXQgYW5kIHJldHVybiAtRUJVU1kuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExh bmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpDYzogUm9kcmlnbyBW aXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jIHwgIDczICsrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICB8 ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICB8IDI2MiArKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2Vy dGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK aW5kZXggNTc0ZmNmMjM0MDA3Li45OGUxNjk2MzZmODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCkBAIC0yNTQ2LDE2ICsyNTQ2LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpwc3Iy X2xpdmVfc3RhdHVzKHUzMiB2YWwpCiAKIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7CiAJdTMyIHBzcnBlcmYgPSAwOwogCXUz MiBzdGF0WzNdOwogCWVudW0gcGlwZSBwaXBlOwogCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwogCWJv b2wgc2lua19zdXBwb3J0OwogCi0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKLQkJcmV0dXJuIC1F Tk9ERVY7Ci0KIAlzaW5rX3N1cHBvcnQgPSBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydDsKIAlz ZXFfcHJpbnRmKG0sICJTaW5rX1N1cHBvcnQ6ICVzXG4iLCB5ZXNubyhzaW5rX3N1cHBvcnQpKTsK IAlpZiAoIXNpbmtfc3VwcG9ydCkKQEAgLTI1NjQsNyArMjU2MSw3IEBAIHN0YXRpYyBpbnQgaTkx NV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJaW50ZWxf cnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsKLQlzZXFfcHJpbnRmKG0sICJFbmFibGVkOiAlc1xuIiwgeWVzbm8oKGJvb2wpZGV2X3By aXYtPnBzci5lbmFibGVkKSk7CisJc2VxX3ByaW50ZihtLCAiRW5hYmxlZDogJXNcbiIsIHllc25v KGRldl9wcml2LT5wc3IuZW5hYmxlZCkpOwogCXNlcV9wcmludGYobSwgIkJ1c3kgZnJvbnRidWZm ZXIgYml0czogMHglMDN4XG4iLAogCQkgICBkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJf Yml0cyk7CiAJc2VxX3ByaW50ZihtLCAiUmUtZW5hYmxlIHdvcmsgc2NoZWR1bGVkOiAlc1xuIiwK QEAgLTI2MzEsNiArMjYyOCw3MCBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgc3Np emVfdCBpOTE1X2VkcF9wc3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191 c2VyICp1YnVmLAorCQkJCSAgc2l6ZV90IGxlbiwgbG9mZl90ICpvZmZwKQoreworCXN0cnVjdCBz ZXFfZmlsZSAqbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOworCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0 eCBjdHg7CisJaW50IHJldCwgdmFsOworCisJaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9y dCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSBrc3RydG9pbnRfZnJvbV91c2VyKHVidWYs IGxlbiwgMTAsICZ2YWwpOworCWlmIChyZXQgPCAwKSB7CisJCWJvb2wgZW5hYmxlOworCQlyZXQg PSBrc3RydG9ib29sX2Zyb21fdXNlcih1YnVmLCBsZW4sICZlbmFibGUpOworCisJCWlmIChyZXQg PCAwKQorCQkJcmV0dXJuIHJldDsKKworCQl2YWwgPSBlbmFibGU7CisJfQorCisJaWYgKHZhbCA8 IC0xIHx8IHZhbCA+IDMpCisJCXJldHVybiAtRUlOVkFMOworCisJaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOworCisJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIERSTV9NT0RF U0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7CisKK3JldHJ5OgorCXJldCA9IGludGVsX3Bzcl9z ZXRfZGVidWdmc19tb2RlKGRldl9wcml2LCAmY3R4LCB2YWwpOworCWlmIChyZXQgPT0gLUVCVVNZ KSB7CisJCXJldCA9IGRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7CisJCWlmICghcmV0KQorCQkJ Z290byByZXRyeTsKKwl9CisKKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOworCWRybV9t b2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKKworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKKworCXJldHVybiByZXQgPzogbGVuOworfQorCitzdGF0aWMgaW50IGk5MTVfZWRwX3Bz cl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGlub2RlLT5pX3ByaXZhdGU7CisKKwlpZiAo IUhBU19QU1IoZGV2X3ByaXYpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBzaW5nbGVf b3BlbihmaWxlLCBpOTE1X2VkcF9wc3Jfc3RhdHVzLCBkZXZfcHJpdik7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5MTVfZWRwX3Bzcl9vcHMgPSB7CisJLm93bmVy ID0gVEhJU19NT0RVTEUsCisJLm9wZW4gPSBpOTE1X2VkcF9wc3Jfb3BlbiwKKwkucmVhZCA9IHNl cV9yZWFkLAorCS5sbHNlZWsgPSBzZXFfbHNlZWssCisJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFz ZSwKKwkud3JpdGUgPSBpOTE1X2VkcF9wc3Jfd3JpdGUKK307CisKIHN0YXRpYyBpbnQgaTkxNV9z aW5rX2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwpAQCAtNDcz NCw3ICs0Nzk1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW5mb19saXN0IGk5MTVfZGVi dWdmc19saXN0W10gPSB7CiAJeyJpOTE1X3N3aXp6bGVfaW5mbyIsIGk5MTVfc3dpenpsZV9pbmZv LCAwfSwKIAl7Imk5MTVfcHBndHRfaW5mbyIsIGk5MTVfcHBndHRfaW5mbywgMH0sCiAJeyJpOTE1 X2xsYyIsIGk5MTVfbGxjLCAwfSwKLQl7Imk5MTVfZWRwX3Bzcl9zdGF0dXMiLCBpOTE1X2VkcF9w c3Jfc3RhdHVzLCAwfSwKIAl7Imk5MTVfc2lua19jcmNfZURQMSIsIGk5MTVfc2lua19jcmMsIDB9 LAogCXsiaTkxNV9lbmVyZ3lfdUoiLCBpOTE1X2VuZXJneV91SiwgMH0sCiAJeyJpOTE1X3J1bnRp bWVfcG1fc3RhdHVzIiwgaTkxNV9ydW50aW1lX3BtX3N0YXR1cywgMH0sCkBAIC00NzYxLDYgKzQ4 MjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdmc19maWxlcyB7CiAJeyJpOTE1 X3dlZGdlZCIsICZpOTE1X3dlZGdlZF9mb3BzfSwKIAl7Imk5MTVfbWF4X2ZyZXEiLCAmaTkxNV9t YXhfZnJlcV9mb3BzfSwKIAl7Imk5MTVfbWluX2ZyZXEiLCAmaTkxNV9taW5fZnJlcV9mb3BzfSwK Kwl7Imk5MTVfZWRwX3Bzcl9zdGF0dXMiLCAmaTkxNV9lZHBfcHNyX29wc30sCiAJeyJpOTE1X2Nh Y2hlX3NoYXJpbmciLCAmaTkxNV9jYWNoZV9zaGFyaW5nX2ZvcHN9LAogCXsiaTkxNV9yaW5nX21p c3NlZF9pcnEiLCAmaTkxNV9yaW5nX21pc3NlZF9pcnFfZm9wc30sCiAJeyJpOTE1X3JpbmdfdGVz dF9pcnEiLCAmaTkxNV9yaW5nX3Rlc3RfaXJxX2ZvcHN9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggYjM5YzVmNjhlZmIyLi45MjYyY2ZiOGFhYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtNTk2LDcgKzU5Niw4IEBAIHN0cnVjdCBpOTE1X2RycnMgewogc3RydWN0IGk5MTVfcHNy IHsKIAlzdHJ1Y3QgbXV0ZXggbG9jazsKIAlib29sIHNpbmtfc3VwcG9ydDsKLQlzdHJ1Y3QgaW50 ZWxfZHAgKmVuYWJsZWQ7CisJYm9vbCBlbmFibGVkOworCXN0cnVjdCBpbnRlbF9kcCAqZHA7CiAJ Ym9vbCBhY3RpdmU7CiAJc3RydWN0IGRlbGF5ZWRfd29yayB3b3JrOwogCXVuc2lnbmVkIGJ1c3lf ZnJvbnRidWZmZXJfYml0czsKQEAgLTYwOCw2ICs2MDksMTQgQEAgc3RydWN0IGk5MTVfcHNyIHsK IAlib29sIGFscG07CiAJYm9vbCBoYXNfaHdfdHJhY2tpbmc7CiAKKwllbnVtIGk5MTVfcHNyX2Rl YnVnZnNfbW9kZSB7CisJCVBTUl9ERUJVR0ZTX01PREVfREVGQVVMVCA9IC0xLAorCQlQU1JfREVC VUdGU19NT0RFX0RJU0FCTEVELAorCQlQU1JfREVCVUdGU19NT0RFX0VOQUJMRUQsCisJCVBTUl9E RUJVR0ZTX01PREVfRU5BQkxFRF9GT1JDRV9MSU5LX1NUQU5EQlksCisJCVBTUl9ERUJVR0ZTX01P REVfRU5BQkxFRF9OT19MSU5LX1NUQU5EQlkKKwl9IGRlYnVnZnNfbW9kZTsKKwogCXZvaWQgKCpl bmFibGVfc291cmNlKShzdHJ1Y3QgaW50ZWxfZHAgKiwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICopOwogCXZvaWQgKCpkaXNhYmxlX3NvdXJjZSkoc3RydWN0IGludGVs X2RwICosCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDFmMGU4ZjFlNDU5NC4uYWYzYzU1 NzhkMmVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTg3Niw2ICsxODc2LDkgQEAg dm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxf cHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJICAgICAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKTsKK2ludCBpbnRlbF9wc3Jfc2V0 X2RlYnVnZnNfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAg ICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsCisJCQkgICAgICAgZW51bSBp OTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9kZSk7CiB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgdW5zaWduZWQgZnJvbnRidWZm ZXJfYml0cywKIAkJCSAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcHNyLmMKaW5kZXggMzE3Y2I0YTEyNjkzLi4zZGMwZWRhOGVmZTAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Bzci5jCkBAIC01Niw2ICs1Niw1MiBAQAogI2luY2x1ZGUgImludGVsX2Rydi5oIgog I2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAKK3N0YXRpYyBib29sIGludGVsX3Bzcl9kZWZhdWx0X2xp bmtfc3RhbmRieShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJLyogT3Zl cnJpZGUgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8KKwlpZiAoaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX3BzciA9PSAyKSB7CisJCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBs aW5rIHN0YW5kYnlcbiIpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlpZiAoaTkxNV9tb2RwYXJh bXMuZW5hYmxlX3BzciA9PSAzKSB7CisJCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBtYWlu IGxpbmsgb2ZmXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIFNldCBsaW5rX3N0YW5k YnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLworCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQorCQkvKiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91 bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50LiAqLworCQlyZXR1cm4gZmFsc2U7CisJZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCisJ CS8qIE9uIFZMViBhbmQgQ0hWIG9ubHkgc3RhbmRieSBtb2RlIGlzIHN1cHBvcnRlZC4gKi8KKwkJ cmV0dXJuIHRydWU7CisJZWxzZQorCQkvKiBGb3IgbmV3IHBsYXRmb3JtcyBsZXQncyByZXNwZWN0 IFZCVCBiYWNrIGFnYWluICovCisJCXJldHVybiBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7 Cit9CisKK3N0YXRpYyBib29sIGdldF9saW5rX3N0YW5kYnlfZm9yX21vZGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICAgIGVudW0gaTkxNV9wc3JfZGVidWdmc19t b2RlIG1vZGUpCit7CisJaWYgKG1vZGUgPT0gUFNSX0RFQlVHRlNfTU9ERV9FTkFCTEVEX0ZPUkNF X0xJTktfU1RBTkRCWSkKKwkJcmV0dXJuIHRydWU7CisJZWxzZSBpZiAobW9kZSA9PSBQU1JfREVC VUdGU19NT0RFX0VOQUJMRURfTk9fTElOS19TVEFOREJZKQorCQlyZXR1cm4gZmFsc2U7CisJZWxz ZQorCQlyZXR1cm4gaW50ZWxfcHNyX2RlZmF1bHRfbGlua19zdGFuZGJ5KGRldl9wcml2KTsKK30K Kworc3RhdGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKGVudW0gaTkxNV9wc3JfZGVidWdmc19t b2RlIG1vZGUpCit7CisJaWYgKG1vZGUgPT0gUFNSX0RFQlVHRlNfTU9ERV9ERUZBVUxUKQorCQly ZXR1cm4gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzcjsKKwllbHNlIGlmIChtb2RlID09IFBTUl9E RUJVR0ZTX01PREVfRElTQUJMRUQpCisJCXJldHVybiBmYWxzZTsKKwllbHNlCisJCXJldHVybiB0 cnVlOworfQorCiBzdGF0aWMgaW5saW5lIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4K IHBzcl9hdXhfZG9tYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CkBAIC01MDIsMTEg KzU0OCw2IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCiAJaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKIAkJcmV0dXJuOwogCi0JaWYgKCFp OTE1X21vZHBhcmFtcy5lbmFibGVfcHNyKSB7Ci0JCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxl IGJ5IGZsYWdcbiIpOwotCQlyZXR1cm47Ci0JfQotCiAJLyoKIAkgKiBIU1cgc3BlYyBleHBsaWNp dGx5IHNheXMgUFNSIGlzIHRpZWQgdG8gcG9ydCBBLgogCSAqIEJEVysgcGxhdGZvcm1zIHdpdGgg RERJIGltcGxlbWVudGF0aW9uIG9mIFBTUiBoYXZlIGRpZmZlcmVudApAQCAtNTU5LDcgKzYwMCwx MSBAQCB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAogCiAJY3J0Y19zdGF0ZS0+aGFzX3BzciA9IHRydWU7CiAJY3J0Y19zdGF0ZS0+aGFzX3Bz cjIgPSBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7Ci0JRFJN X0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsIGNydGNfc3RhdGUtPmhhc19wc3IyID8gIjIi IDogIiIpOworCisJaWYgKHBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+cHNyLmRlYnVnZnNf bW9kZSkpCisJCURSTV9ERUJVR19LTVMoIkVuYWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5o YXNfcHNyMiA/ICIyIiA6ICIiKTsKKwllbHNlCisJCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxl IGJ5IGZsYWdcbiIpOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfYWN0aXZhdGUoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKQEAgLTYxNyw2ICs2NjIsMzggQEAgc3RhdGljIHZvaWQgaHN3 X3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJfQogfQogCitz dGF0aWMgdm9pZCBfX2ludGVsX3Bzcl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQoreworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOwor CisJaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkKKwkJcmV0dXJuOworCisJZGV2X3ByaXYtPnBz ci5lbmFibGVkID0gdHJ1ZTsKKworCWRldl9wcml2LT5wc3Iuc2V0dXBfdnNjKGludGVsX2RwLCBj cnRjX3N0YXRlKTsKKwlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zaW5rKGludGVsX2RwKTsKKwlkZXZf cHJpdi0+cHNyLmVuYWJsZV9zb3VyY2UoaW50ZWxfZHAsIGNydGNfc3RhdGUpOworCisJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCQlpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHAp OworCX0gZWxzZSB7CisJCS8qCisJCSAqIEZJWE1FOiBBY3RpdmF0aW9uIHNob3VsZCBoYXBwZW4g aW1tZWRpYXRlbHkgc2luY2UgdGhpcworCQkgKiBmdW5jdGlvbiBpcyBqdXN0IGNhbGxlZCBhZnRl ciBwaXBlIGlzIGZ1bGx5IHRyYWluZWQgYW5kCisJCSAqIGVuYWJsZWQuCisJCSAqIEhvd2V2ZXIg b24gc29tZSBwbGF0Zm9ybXMgd2UgZmFjZSBpc3N1ZXMgd2hlbiBmaXJzdAorCQkgKiBhY3RpdmF0 aW9uIGZvbGxvd3MgYSBtb2Rlc2V0IHNvIHF1aWNrbHkuCisJCSAqICAgICAtIE9uIFZMVi9DSFYg d2UgZ2V0IGJhbmsgc2NyZWVuIG9uIGZpcnN0IGFjdGl2YXRpb24KKwkJICogICAgIC0gT24gSFNX L0JEVyB3ZSBnZXQgYSByZWNvdmVyYWJsZSBmcm96ZW4gc2NyZWVuIHVudGlsCisJCSAqICAgICAg IG5leHQgZXhpdC1hY3RpdmF0ZSBzZXF1ZW5jZS4KKwkJICovCisJCXNjaGVkdWxlX2RlbGF5ZWRf d29yaygmZGV2X3ByaXYtPnBzci53b3JrLAorCQkJCSAgICAgIG1zZWNzX3RvX2ppZmZpZXMoaW50 ZWxfZHAtPnBhbmVsX3Bvd2VyX2N5Y2xlX2RlbGF5ICogNSkpOworCX0KK30KKwogLyoqCiAgKiBp bnRlbF9wc3JfZW5hYmxlIC0gRW5hYmxlIFBTUgogICogQGludGVsX2RwOiBJbnRlbCBEUApAQCAt NjM5LDcgKzcxNiw3IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAogCiAJV0FSTl9PTihkZXZfcHJpdi0+ZHJycy5kcCk7CiAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKLQlpZiAoZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7CisJaWYgKGRl dl9wcml2LT5wc3IuZHApIHsKIAkJRFJNX0RFQlVHX0tNUygiUFNSIGFscmVhZHkgaW4gdXNlXG4i KTsKIAkJZ290byB1bmxvY2s7CiAJfQpAQCAtNjQ3LDI3ICs3MjQsMTAgQEAgdm9pZCBpbnRlbF9w c3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJZGV2X3ByaXYtPnBzci5wc3Iy X3N1cHBvcnQgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKIAlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJv bnRidWZmZXJfYml0cyA9IDA7CiAKLQlkZXZfcHJpdi0+cHNyLnNldHVwX3ZzYyhpbnRlbF9kcCwg Y3J0Y19zdGF0ZSk7Ci0JZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayhpbnRlbF9kcCk7Ci0JZGV2 X3ByaXYtPnBzci5lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKLQlkZXZfcHJp di0+cHNyLmVuYWJsZWQgPSBpbnRlbF9kcDsKKwlkZXZfcHJpdi0+cHNyLmRwID0gaW50ZWxfZHA7 CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Ci0JCWludGVsX3Bzcl9hY3RpdmF0 ZShpbnRlbF9kcCk7Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogRklYTUU6IEFjdGl2YXRpb24gc2hv dWxkIGhhcHBlbiBpbW1lZGlhdGVseSBzaW5jZSB0aGlzCi0JCSAqIGZ1bmN0aW9uIGlzIGp1c3Qg Y2FsbGVkIGFmdGVyIHBpcGUgaXMgZnVsbHkgdHJhaW5lZCBhbmQKLQkJICogZW5hYmxlZC4KLQkJ ICogSG93ZXZlciBvbiBzb21lIHBsYXRmb3JtcyB3ZSBmYWNlIGlzc3VlcyB3aGVuIGZpcnN0Ci0J CSAqIGFjdGl2YXRpb24gZm9sbG93cyBhIG1vZGVzZXQgc28gcXVpY2tseS4KLQkJICogICAgIC0g T24gVkxWL0NIViB3ZSBnZXQgYmFuayBzY3JlZW4gb24gZmlyc3QgYWN0aXZhdGlvbgotCQkgKiAg ICAgLSBPbiBIU1cvQkRXIHdlIGdldCBhIHJlY292ZXJhYmxlIGZyb3plbiBzY3JlZW4gdW50aWwK LQkJICogICAgICAgbmV4dCBleGl0LWFjdGl2YXRlIHNlcXVlbmNlLgotCQkgKi8KLQkJc2NoZWR1 bGVfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmssCi0JCQkJICAgICAgbXNlY3NfdG9f amlmZmllcyhpbnRlbF9kcC0+cGFuZWxfcG93ZXJfY3ljbGVfZGVsYXkgKiA1KSk7Ci0JfQorCWlm IChwc3JfZ2xvYmFsX2VuYWJsZWQoZGV2X3ByaXYtPnBzci5kZWJ1Z2ZzX21vZGUpKQorCQlfX2lu dGVsX3Bzcl9lbmFibGUoZGV2X3ByaXYsIGNydGNfc3RhdGUpOwogCiB1bmxvY2s6CiAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwpAQCAtNzUyLDYgKzgxMiwyMSBAQCBzdGF0aWMg dm9pZCBoc3dfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlwc3JfYXV4 X2lvX3Bvd2VyX3B1dChpbnRlbF9kcCk7CiB9CiAKK3N0YXRpYyB2b2lkIF9faW50ZWxfcHNyX2Rp c2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCWNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsKKworCWlmICghZGV2X3ByaXYtPnBzci5lbmFi bGVkKQorCQlyZXR1cm47CisKKwlkZXZfcHJpdi0+cHNyLmRpc2FibGVfc291cmNlKGludGVsX2Rw LCBvbGRfY3J0Y19zdGF0ZSk7CisKKwkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovCisJZHJtX2Rw X2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCAwKTsKKwlkZXZfcHJp di0+cHNyLmVuYWJsZWQgPSBmYWxzZTsKK30KKwogLyoqCiAgKiBpbnRlbF9wc3JfZGlzYWJsZSAt IERpc2FibGUgUFNSCiAgKiBAaW50ZWxfZHA6IEludGVsIERQCkBAIC03NzMsMjcgKzg0OCwxMTAg QEAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQly ZXR1cm47CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwotCWlmICghZGV2X3By aXYtPnBzci5lbmFibGVkKSB7CisJaWYgKGludGVsX2RwICE9IGRldl9wcml2LT5wc3IuZHApIHsK IAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCQlyZXR1cm47CiAJfQogCi0J ZGV2X3ByaXYtPnBzci5kaXNhYmxlX3NvdXJjZShpbnRlbF9kcCwgb2xkX2NydGNfc3RhdGUpOwot Ci0JLyogRGlzYWJsZSBQU1Igb24gU2luayAqLwotCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxf ZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgMCk7CisJX19pbnRlbF9wc3JfZGlzYWJsZShkZXZfcHJp diwgb2xkX2NydGNfc3RhdGUpOwogCi0JZGV2X3ByaXYtPnBzci5lbmFibGVkID0gTlVMTDsKKwlk ZXZfcHJpdi0+cHNyLmRwID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9j ayk7CiAKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5wc3Iud29yayk7CiB9 CiAKK3N0YXRpYyBzdHJ1Y3QgZHJtX2NydGMgKgorZmluZF9pZGxlX2NydGNfZm9yX2VuY29kZXIo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4ICpjdHgpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5f aXRlcjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OworCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCWJvb2wg Zm91bmQgPSBmYWxzZTsKKwlpbnQgcmV0OworCisJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVn aW4oZGV2LCAmY29ubl9pdGVyKTsKKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubmVj dG9yLCAmY29ubl9pdGVyKQorCQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyID09 IGVuY29kZXIpIHsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCWJyZWFrOworCQl9CisJZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOworCisJaWYgKFdBUk5fT04oIWZvdW5kKSkK KwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+ Y3J0YzsKKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCisJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNv bW1pdCkKKwkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjb25uZWN0 b3ItPnN0YXRlLT5jb21taXQtPmh3X2RvbmUpOworCWlmICghcmV0ICYmIGNydGMtPnN0YXRlLT5j b21taXQpCisJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmY3J0Yy0+ c3RhdGUtPmNvbW1pdC0+aHdfZG9uZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIEVSUl9QVFIocmV0 KTsKKworCXJldHVybiBjcnRjOworfQorCitpbnQgaW50ZWxfcHNyX3NldF9kZWJ1Z2ZzX21vZGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgIHN0cnVjdCBkcm1f bW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAorCQkJICAgICAgIGVudW0gaTkxNV9wc3JfZGVidWdm c19tb2RlIG1vZGUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJt OworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7 CisJaW50IHJldDsKKwlib29sIGVuYWJsZSwgbGlua19zdGFuZGJ5OworCisJcmV0ID0gZHJtX21v ZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBjdHgpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlsaW5rX3N0YW5kYnkgPSBnZXRfbGlua19zdGFuZGJ5 X2Zvcl9tb2RlKGRldl9wcml2LCBtb2RlKTsKKwllbmFibGUgPSBwc3JfZ2xvYmFsX2VuYWJsZWQo bW9kZSk7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCisJZG8geworCQlp ZiAoIWRldl9wcml2LT5wc3IuZHApIHsKKwkJCWRldl9wcml2LT5wc3IuZGVidWdmc19tb2RlID0g bW9kZTsKKwkJCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gbGlua19zdGFuZGJ5OworCQkJ Z290byBlbmQ7CisJCX0KKwkJZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNy LmRwKS0+YmFzZS5iYXNlOworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisK KwkJY3J0YyA9IGZpbmRfaWRsZV9jcnRjX2Zvcl9lbmNvZGVyKGVuY29kZXIsIGN0eCk7CisJCWlm IChJU19FUlIoY3J0YykpCisJCQlyZXR1cm4gUFRSX0VSUihjcnRjKTsKKworCQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cHNyLmxvY2spOworCX0gd2hpbGUgKGRldl9wcml2LT5wc3IuZHAgIT0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpKTsKKworCWlmICghZW5hYmxlIHx8IGRldl9wcml2LT5wc3Iu bGlua19zdGFuZGJ5ICE9IGxpbmtfc3RhbmRieSkKKwkJX19pbnRlbF9wc3JfZGlzYWJsZShkZXZf cHJpdiwgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOworCisJZGV2X3ByaXYtPnBz ci5kZWJ1Z2ZzX21vZGUgPSBtb2RlOworCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gbGlu a19zdGFuZGJ5OworCisJaWYgKGVuYWJsZSkKKwkJX19pbnRlbF9wc3JfZW5hYmxlKGRldl9wcml2 LCB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7CisKK2VuZDoKKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5wc3IubG9jayk7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIHZvaWQg aW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmRl dl9wcml2KSwgcHNyLndvcmsud29yayk7Ci0Jc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRl dl9wcml2LT5wc3IuZW5hYmxlZDsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3By aXYtPnBzci5kcDsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCktPmJhc2UuYmFzZS5jcnRjOwogCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0Yyhj cnRjKS0+cGlwZTsKIApAQCAtODMzLDExICs5OTEsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNy X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl9CiAJfQogCW11dGV4X2xvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Ci0JaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7Ci0K LQlpZiAoIWludGVsX2RwKQorCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQogCQlnb3RvIHVu bG9jazsKIAorCWludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsKKwogCS8qCiAJICogVGhlIGRl bGF5ZWQgd29yayBjYW4gcmFjZSB3aXRoIGFuIGludmFsaWRhdGUgaGVuY2Ugd2UgbmVlZCB0bwog CSAqIHJlY2hlY2suIFNpbmNlIHBzcl9mbHVzaCBmaXJzdCBjbGVhcnMgdGhpcyBhbmQgdGhlbiBy ZXNjaGVkdWxlcyB3ZQpAQCAtODUzLDcgKzEwMTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9l eGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5lbmFibGVkOworCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGRw X3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5iYXNlLmNydGM7CiAJZW51bSBwaXBlIHBpcGUg PSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwogCXUzMiB2YWw7CkBAIC05MzgsNyArMTA5Niw3 IEBAIHZvaWQgaW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQlyZXR1cm47CiAJfQogCi0JY3J0YyA9IGRwX3RvX2RpZ19wb3J0 KGRldl9wcml2LT5wc3IuZW5hYmxlZCktPmJhc2UuYmFzZS5jcnRjOworCWNydGMgPSBkcF90b19k aWdfcG9ydChkZXZfcHJpdi0+cHNyLmRwKS0+YmFzZS5iYXNlLmNydGM7CiAJcGlwZSA9IHRvX2lu dGVsX2NydGMoY3J0YyktPnBpcGU7CiAKIAlpZiAoZnJvbnRidWZmZXJfYml0cyAmIElOVEVMX0ZS T05UQlVGRkVSX0FMTF9NQVNLKHBpcGUpKSB7CkBAIC05ODQsNyArMTE0Miw3IEBAIHZvaWQgaW50 ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQly ZXR1cm47CiAJfQogCi0JY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZW5hYmxl ZCktPmJhc2UuYmFzZS5jcnRjOworCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNy LmRwKS0+YmFzZS5iYXNlLmNydGM7CiAJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7 CiAKIAlmcm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKHBpcGUp OwpAQCAtMTAyNyw3ICsxMTg1LDcgQEAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlyZXR1cm47CiAJfQogCi0JY3J0YyA9IGRwX3RvX2Rp Z19wb3J0KGRldl9wcml2LT5wc3IuZW5hYmxlZCktPmJhc2UuYmFzZS5jcnRjOworCWNydGMgPSBk cF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmRwKS0+YmFzZS5iYXNlLmNydGM7CiAJcGlwZSA9 IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7CiAKIAlmcm9udGJ1ZmZlcl9iaXRzICY9IElOVEVM X0ZST05UQlVGRkVSX0FMTF9NQVNLKHBpcGUpOwpAQCAtMTA4MSwyNiArMTIzOSw4IEBAIHZvaWQg aW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChp OTE1X21vZHBhcmFtcy5lbmFibGVfcHNyID09IC0xKQogCQlpOTE1X21vZHBhcmFtcy5lbmFibGVf cHNyID0gMDsKIAotCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwot CWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQotCQkv KiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50 LiAqLwotCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOwotCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQotCQkvKiBP biBWTFYgYW5kIENIViBvbmx5IHN0YW5kYnkgbW9kZSBpcyBzdXBwb3J0ZWQuICovCi0JCWRldl9w cml2LT5wc3IubGlua19zdGFuZGJ5ID0gdHJ1ZTsKLQllbHNlCi0JCS8qIEZvciBuZXcgcGxhdGZv cm1zIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8KLQkJZGV2X3ByaXYtPnBzci5saW5r X3N0YW5kYnkgPSBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7Ci0KLQkvKiBPdmVycmlkZSBs aW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwotCWlmIChpOTE1X21vZHBhcmFtcy5l bmFibGVfcHNyID09IDIgJiYgIWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5KSB7Ci0JCURSTV9E RUJVR19LTVMoIlBTUjogRm9yY2luZyBsaW5rIHN0YW5kYnlcbiIpOwotCQlkZXZfcHJpdi0+cHNy Lmxpbmtfc3RhbmRieSA9IHRydWU7Ci0JfQotCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfcHNy ID09IDMgJiYgZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkpIHsKLQkJRFJNX0RFQlVHX0tNUygi UFNSOiBGb3JjaW5nIG1haW4gbGluayBvZmZcbiIpOwotCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3Rh bmRieSA9IGZhbHNlOwotCX0KKwlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGludGVsX3Bz cl9kZWZhdWx0X2xpbmtfc3RhbmRieShkZXZfcHJpdik7CisJZGV2X3ByaXYtPnBzci5kZWJ1Z2Zz X21vZGUgPSBQU1JfREVCVUdGU19NT0RFX0RFRkFVTFQ7CiAKIAlJTklUX0RFTEFZRURfV09SSygm ZGV2X3ByaXYtPnBzci53b3JrLCBpbnRlbF9wc3Jfd29yayk7CiAJbXV0ZXhfaW5pdCgmZGV2X3By aXYtPnBzci5sb2NrKTsKLS0gCjIuMTYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==