From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: [PATCH v1 3/7] drm: sti: make planes use atomic_print_state instead of debugfs Date: Tue, 5 Jun 2018 15:54:03 +0200 Message-ID: <20180605135407.20214-4-benjamin.gaignard@linaro.org> References: <20180605135407.20214-1-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1BC516EDCB for ; Tue, 5 Jun 2018 13:54:28 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id x6-v6so5111203wmc.3 for ; Tue, 05 Jun 2018 06:54:28 -0700 (PDT) In-Reply-To: <20180605135407.20214-1-benjamin.gaignard@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: gustavo@padovan.org, maarten.lankhorst@linux.intel.com, seanpaul@chromium.org, airlied@linux.ie, vincent.abriou@st.com Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Q29udmVydCBhbGwgc3RpIHBsYW5lcyB0byBhdG9taWNfcHJpbnRfc3RhdGUgdXNhZ2UgcmF0aGVy IHRoYW4gdXNlIGEgZGVidWdmcwplbnRyeS4KClNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWdu YXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBsaW5hcm8ub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9z dGkvc3RpX2N1cnNvci5jIHwgIDY1ICsrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9zdGkv c3RpX2dkcC5jICAgIHwgMTk2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaHF2ZHAuYyAgfCAxNDkgKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMoKyksIDI2NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jdXJzb3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2N1cnNvci5jCmluZGV4IGRmMGEyODJiOTYxNS4u NjlmNmIxMDkxNDIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jdXJzb3Iu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jdXJzb3IuYwpAQCAtNzQsNzIgKzc0LDU3 IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBjdXJzb3Jfc3VwcG9ydGVkX2Zvcm1hdHNbXSA9IHsK IAogI2RlZmluZSB0b19zdGlfY3Vyc29yKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3Qgc3RpX2N1 cnNvciwgcGxhbmUpCiAKLSNkZWZpbmUgREJHRlNfRFVNUChyZWcpIHNlcV9wcmludGYocywgIlxu ICAlLTI1cyAweCUwOFgiLCAjcmVnLCBcCisjZGVmaW5lIERCR0ZTX0RVTVAocmVnKSBkcm1fcHJp bnRmKHAsICJcblx0XHQlLTI1cyAweCUwOFgiLCAjcmVnLCBcCiAJCQkJICAgcmVhZGwoY3Vyc29y LT5yZWdzICsgcmVnKSkKIAotc3RhdGljIHZvaWQgY3Vyc29yX2RiZ192cG8oc3RydWN0IHNlcV9m aWxlICpzLCB1MzIgdmFsKQorc3RhdGljIHZvaWQgY3Vyc29yX2RiZ192cG8oc3RydWN0IGRybV9w cmludGVyICpwLCB1MzIgdmFsKQogewotCXNlcV9wcmludGYocywgIlx0eGRvOiU0ZFx0eWRvOiU0 ZCIsIHZhbCAmIDB4MEZGRiwgKHZhbCA+PiAxNikgJiAweDBGRkYpOworCWRybV9wcmludGYocCwg Ilx0eGRvOiU0ZFx0eWRvOiU0ZCIsIHZhbCAmIDB4MEZGRiwgKHZhbCA+PiAxNikgJiAweDBGRkYp OwogfQogCi1zdGF0aWMgdm9pZCBjdXJzb3JfZGJnX3NpemUoc3RydWN0IHNlcV9maWxlICpzLCB1 MzIgdmFsKQorc3RhdGljIHZvaWQgY3Vyc29yX2RiZ19zaXplKHN0cnVjdCBkcm1fcHJpbnRlciAq cCwgdTMyIHZhbCkKIHsKLQlzZXFfcHJpbnRmKHMsICJcdCVkIHggJWQiLCB2YWwgJiAweDA3RkYs ICh2YWwgPj4gMTYpICYgMHgwN0ZGKTsKKwlkcm1fcHJpbnRmKHAsICJcdCVkIHggJWQiLCB2YWwg JiAweDA3RkYsICh2YWwgPj4gMTYpICYgMHgwN0ZGKTsKIH0KIAotc3RhdGljIHZvaWQgY3Vyc29y X2RiZ19wbWwoc3RydWN0IHNlcV9maWxlICpzLAorc3RhdGljIHZvaWQgY3Vyc29yX2RiZ19wbWwo c3RydWN0IGRybV9wcmludGVyICpwLAogCQkJICAgc3RydWN0IHN0aV9jdXJzb3IgKmN1cnNvciwg dTMyIHZhbCkKIHsKIAlpZiAoY3Vyc29yLT5waXhtYXAucGFkZHIgPT0gdmFsKQotCQlzZXFfcHJp bnRmKHMsICJcdFZpcnQgQDogJXAiLCBjdXJzb3ItPnBpeG1hcC5iYXNlKTsKKwkJZHJtX3ByaW50 ZihwLCAiXHRWaXJ0IEA6ICVwSyIsIGN1cnNvci0+cGl4bWFwLmJhc2UpOwogfQogCi1zdGF0aWMg dm9pZCBjdXJzb3JfZGJnX2NtbChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCitzdGF0aWMgdm9pZCBjdXJz b3JfZGJnX2NtbChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCiAJCQkgICBzdHJ1Y3Qgc3RpX2N1cnNv ciAqY3Vyc29yLCB1MzIgdmFsKQogewogCWlmIChjdXJzb3ItPmNsdXRfcGFkZHIgPT0gdmFsKQot CQlzZXFfcHJpbnRmKHMsICJcdFZpcnQgQDogJXAiLCBjdXJzb3ItPmNsdXQpOworCQlkcm1fcHJp bnRmKHAsICJcdFZpcnQgQDogJXBLIiwgY3Vyc29yLT5jbHV0KTsKIH0KIAotc3RhdGljIGludCBj dXJzb3JfZGJnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQorc3RhdGljIHZv aWQgc3RpX2N1cnNvcl9wbGFuZV9wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCisJ CQkJCSBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJt X2luZm9fbm9kZSAqbm9kZSA9IHMtPnByaXZhdGU7Ci0Jc3RydWN0IHN0aV9jdXJzb3IgKmN1cnNv ciA9IChzdHJ1Y3Qgc3RpX2N1cnNvciAqKW5vZGUtPmluZm9fZW50LT5kYXRhOworCXN0cnVjdCBz dGlfcGxhbmUgKnBsYW5lID0gdG9fc3RpX3BsYW5lKHN0YXRlLT5wbGFuZSk7CisJc3RydWN0IHN0 aV9jdXJzb3IgKmN1cnNvciA9IHRvX3N0aV9jdXJzb3IocGxhbmUpOwogCi0Jc2VxX3ByaW50Zihz LCAiJXM6ICh2YWRkciA9IDB4JXApIiwKKwlkcm1fcHJpbnRmKHAsICJcdCVzOiAodmFkZHIgPSAw eCVwSykiLAogCQkgICBzdGlfcGxhbmVfdG9fc3RyKCZjdXJzb3ItPnBsYW5lKSwgY3Vyc29yLT5y ZWdzKTsKIAogCURCR0ZTX0RVTVAoQ1VSX0NUTCk7CiAJREJHRlNfRFVNUChDVVJfVlBPKTsKLQlj dXJzb3JfZGJnX3ZwbyhzLCByZWFkbChjdXJzb3ItPnJlZ3MgKyBDVVJfVlBPKSk7CisJY3Vyc29y X2RiZ192cG8ocCwgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1ZQTykpOwogCURCR0ZTX0RVTVAo Q1VSX1BNTCk7Ci0JY3Vyc29yX2RiZ19wbWwocywgY3Vyc29yLCByZWFkbChjdXJzb3ItPnJlZ3Mg KyBDVVJfUE1MKSk7CisJY3Vyc29yX2RiZ19wbWwocCwgY3Vyc29yLCByZWFkbChjdXJzb3ItPnJl Z3MgKyBDVVJfUE1MKSk7CiAJREJHRlNfRFVNUChDVVJfUE1QKTsKIAlEQkdGU19EVU1QKENVUl9T SVpFKTsKLQljdXJzb3JfZGJnX3NpemUocywgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1NJWkUp KTsKKwljdXJzb3JfZGJnX3NpemUocCwgcmVhZGwoY3Vyc29yLT5yZWdzICsgQ1VSX1NJWkUpKTsK IAlEQkdGU19EVU1QKENVUl9DTUwpOwotCWN1cnNvcl9kYmdfY21sKHMsIGN1cnNvciwgcmVhZGwo Y3Vyc29yLT5yZWdzICsgQ1VSX0NNTCkpOworCWN1cnNvcl9kYmdfY21sKHAsIGN1cnNvciwgcmVh ZGwoY3Vyc29yLT5yZWdzICsgQ1VSX0NNTCkpOwogCURCR0ZTX0RVTVAoQ1VSX0FXUyk7CiAJREJH RlNfRFVNUChDVVJfQVdFKTsKLQlzZXFfcHV0YyhzLCAnXG4nKTsKLQlyZXR1cm4gMDsKLX0KLQot c3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGN1cnNvcl9kZWJ1Z2ZzX2ZpbGVzW10gPSB7Ci0J eyAiY3Vyc29yIiwgY3Vyc29yX2RiZ19zaG93LCAwLCBOVUxMIH0sCi19OwotCi1zdGF0aWMgaW50 IGN1cnNvcl9kZWJ1Z2ZzX2luaXQoc3RydWN0IHN0aV9jdXJzb3IgKmN1cnNvciwKLQkJCSAgICAg ICBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKLXsKLQl1bnNpZ25lZCBpbnQgaTsKIAotCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN1cnNvcl9kZWJ1Z2ZzX2ZpbGVzKTsgaSsrKQotCQljdXJz b3JfZGVidWdmc19maWxlc1tpXS5kYXRhID0gY3Vyc29yOwotCi0JcmV0dXJuIGRybV9kZWJ1Z2Zz X2NyZWF0ZV9maWxlcyhjdXJzb3JfZGVidWdmc19maWxlcywKLQkJCQkJQVJSQVlfU0laRShjdXJz b3JfZGVidWdmc19maWxlcyksCi0JCQkJCW1pbm9yLT5kZWJ1Z2ZzX3Jvb3QsIG1pbm9yKTsKKwlk cm1fcHJpbnRmKHAsICJcdCVzJXNcbiIsCisJCSAgIHBsYW5lLT5mcHNfaW5mby5mcHNfc3RyLCBw bGFuZS0+ZnBzX2luZm8uZmlwc19zdHIpOwogfQogCiBzdGF0aWMgdm9pZCBzdGlfY3Vyc29yX2Fy Z2I4ODg4X3RvX2NsdXQ4KHN0cnVjdCBzdGlfY3Vyc29yICpjdXJzb3IsIHUzMiAqc3JjKQpAQCAt MzM2LDE0ICszMjEsNiBAQCBzdGF0aWMgdm9pZCBzdGlfY3Vyc29yX2Rlc3Ryb3koc3RydWN0IGRy bV9wbGFuZSAqZHJtX3BsYW5lKQogCWRybV9wbGFuZV9jbGVhbnVwKGRybV9wbGFuZSk7CiB9CiAK LXN0YXRpYyBpbnQgc3RpX2N1cnNvcl9sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1fcGxhbmUgKmRy bV9wbGFuZSkKLXsKLQlzdHJ1Y3Qgc3RpX3BsYW5lICpwbGFuZSA9IHRvX3N0aV9wbGFuZShkcm1f cGxhbmUpOwotCXN0cnVjdCBzdGlfY3Vyc29yICpjdXJzb3IgPSB0b19zdGlfY3Vyc29yKHBsYW5l KTsKLQotCXJldHVybiBjdXJzb3JfZGVidWdmc19pbml0KGN1cnNvciwgZHJtX3BsYW5lLT5kZXYt PnByaW1hcnkpOwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBzdGlf Y3Vyc29yX3BsYW5lX2hlbHBlcnNfZnVuY3MgPSB7CiAJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9t aWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKIAkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVs cGVyX2Rpc2FibGVfcGxhbmUsCkBAIC0zNTEsNyArMzI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfZnVuY3Mgc3RpX2N1cnNvcl9wbGFuZV9oZWxwZXJzX2Z1bmNzID0gewogCS5y ZXNldCA9IHN0aV9wbGFuZV9yZXNldCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAotCS5sYXRlX3JlZ2lz dGVyID0gc3RpX2N1cnNvcl9sYXRlX3JlZ2lzdGVyLAorCS5hdG9taWNfcHJpbnRfc3RhdGUgPSBz dGlfY3Vyc29yX3BsYW5lX3ByaW50X3N0YXRlLAogfTsKIAogc3RydWN0IGRybV9wbGFuZSAqc3Rp X2N1cnNvcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9nZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2dk cC5jCmluZGV4IDQ5ODEzZDM0YmRmMC4uNTU3ODliYWU3MmMxIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vc3RpL3N0aV9nZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9nZHAu YwpAQCAtMTM5LDQyICsxMzksNDIgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGdkcF9zdXBwb3J0 ZWRfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRfUkdCODg4LAogfTsKIAotI2RlZmluZSBEQkdG U19EVU1QKHJlZykgc2VxX3ByaW50ZihzLCAiXG4gICUtMjVzIDB4JTA4WCIsICNyZWcsIFwKKyNk ZWZpbmUgREJHRlNfRFVNUChyZWcpIGRybV9wcmludGYocCwgIlxuXHRcdCUtMjVzIDB4JTA4WCIs ICNyZWcsIFwKIAkJCQkgICByZWFkbChnZHAtPnJlZ3MgKyByZWcgIyMgX09GRlNFVCkpCiAKLXN0 YXRpYyB2b2lkIGdkcF9kYmdfY3RsKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IHZhbCkKK3N0YXRp YyB2b2lkIGdkcF9kYmdfY3RsKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgaW50IHZhbCkKIHsKIAlp bnQgaTsKIAotCXNlcV9wdXRzKHMsICJcdENvbG9yOiIpOworCWRybV9wcmludGYocCwgIlx0Q29s b3I6Iik7CiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ2RwX2Zvcm1hdF90b19zdHIpOyBp KyspIHsKIAkJaWYgKGdkcF9mb3JtYXRfdG9fc3RyW2ldLmZvcm1hdCA9PSAodmFsICYgMHgxRikp IHsKLQkJCXNlcV9wdXRzKHMsIGdkcF9mb3JtYXRfdG9fc3RyW2ldLm5hbWUpOworCQkJZHJtX3By aW50ZihwLCBnZHBfZm9ybWF0X3RvX3N0cltpXS5uYW1lKTsKIAkJCWJyZWFrOwogCQl9CiAJfQog CWlmIChpID09IEFSUkFZX1NJWkUoZ2RwX2Zvcm1hdF90b19zdHIpKQotCQlzZXFfcHV0cyhzLCAi PFVOS05PV04+Iik7CisJCWRybV9wcmludGYocCwgIjxVTktOT1dOPiIpOwogCi0Jc2VxX3ByaW50 ZihzLCAiXHRXYWl0TmV4dFZzeW5jOiVkIiwgdmFsICYgV0FJVF9ORVhUX1ZTWU5DID8gMSA6IDAp OworCWRybV9wcmludGYocCwgIlx0V2FpdE5leHRWc3luYzolZCIsIHZhbCAmIFdBSVRfTkVYVF9W U1lOQyA/IDEgOiAwKTsKIH0KIAotc3RhdGljIHZvaWQgZ2RwX2RiZ192cG8oc3RydWN0IHNlcV9m aWxlICpzLCBpbnQgdmFsKQorc3RhdGljIHZvaWQgZ2RwX2RiZ192cG8oc3RydWN0IGRybV9wcmlu dGVyICpwLCBpbnQgdmFsKQogewotCXNlcV9wcmludGYocywgIlx0eGRvOiU0ZFx0eWRvOiU0ZCIs IHZhbCAmIDB4RkZGRiwgKHZhbCA+PiAxNikgJiAweEZGRkYpOworCWRybV9wcmludGYocCwgIlx0 eGRvOiU0ZFx0eWRvOiU0ZCIsIHZhbCAmIDB4RkZGRiwgKHZhbCA+PiAxNikgJiAweEZGRkYpOwog fQogCi1zdGF0aWMgdm9pZCBnZHBfZGJnX3ZwcyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCB2YWwp CitzdGF0aWMgdm9pZCBnZHBfZGJnX3ZwcyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGludCB2YWwp CiB7Ci0Jc2VxX3ByaW50ZihzLCAiXHR4ZHM6JTRkXHR5ZHM6JTRkIiwgdmFsICYgMHhGRkZGLCAo dmFsID4+IDE2KSAmIDB4RkZGRik7CisJZHJtX3ByaW50ZihwLCAiXHR4ZHM6JTRkXHR5ZHM6JTRk IiwgdmFsICYgMHhGRkZGLCAodmFsID4+IDE2KSAmIDB4RkZGRik7CiB9CiAKLXN0YXRpYyB2b2lk IGdkcF9kYmdfc2l6ZShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCB2YWwpCitzdGF0aWMgdm9pZCBn ZHBfZGJnX3NpemUoc3RydWN0IGRybV9wcmludGVyICpwLCBpbnQgdmFsKQogewotCXNlcV9wcmlu dGYocywgIlx0JWQgeCAlZCIsIHZhbCAmIDB4RkZGRiwgKHZhbCA+PiAxNikgJiAweEZGRkYpOwor CWRybV9wcmludGYocCwgIlx0JWQgeCAlZCIsIHZhbCAmIDB4RkZGRiwgKHZhbCA+PiAxNikgJiAw eEZGRkYpOwogfQogCi1zdGF0aWMgdm9pZCBnZHBfZGJnX252bihzdHJ1Y3Qgc2VxX2ZpbGUgKnMs IHN0cnVjdCBzdGlfZ2RwICpnZHAsIGludCB2YWwpCitzdGF0aWMgdm9pZCBnZHBfZGJnX252bihz dHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCBzdGlfZ2RwICpnZHAsIGludCB2YWwpCiB7CiAJ dm9pZCAqYmFzZSA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGk7CkBAIC0xOTEsMTU3ICsxOTEsOTMg QEAgc3RhdGljIHZvaWQgZ2RwX2RiZ19udm4oc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3Qgc3Rp X2dkcCAqZ2RwLCBpbnQgdmFsKQogCX0KIAogCWlmIChiYXNlKQotCQlzZXFfcHJpbnRmKHMsICJc dFZpcnQgQDogJXAiLCBiYXNlKTsKKwkJZHJtX3ByaW50ZihwLCAiXHRWaXJ0IEA6ICVwSyIsIGJh c2UpOwogfQogCi1zdGF0aWMgdm9pZCBnZHBfZGJnX3BwdChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGlu dCB2YWwpCitzdGF0aWMgdm9pZCBnZHBfZGJnX3BwdChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGlu dCB2YWwpCiB7CiAJaWYgKHZhbCAmIEdBTV9HRFBfUFBUX0lHTk9SRSkKLQkJc2VxX3B1dHMocywg Ilx0Tm90IGRpc3BsYXllZCBvbiBtaXhlciEiKTsKKwkJZHJtX3ByaW50ZihwLCAiXHROb3QgZGlz cGxheWVkIG9uIG1peGVyISIpOwogfQogCi1zdGF0aWMgdm9pZCBnZHBfZGJnX21zdChzdHJ1Y3Qg c2VxX2ZpbGUgKnMsIGludCB2YWwpCitzdGF0aWMgdm9pZCBnZHBfZGJnX21zdChzdHJ1Y3QgZHJt X3ByaW50ZXIgKnAsIGludCB2YWwpCiB7CiAJaWYgKHZhbCAmIDEpCi0JCXNlcV9wdXRzKHMsICJc dEJVRkZFUiBVTkRFUkZMT1chIik7CisJCWRybV9wcmludGYocCwgIlx0QlVGRkVSIFVOREVSRkxP VyEiKTsKIH0KIAotc3RhdGljIGludCBnZHBfZGJnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2 b2lkICpkYXRhKQorc3RhdGljIGludCBnZHBfZGJnX3Nob3coc3RydWN0IGRybV9wcmludGVyICpw LCBzdHJ1Y3Qgc3RpX2dkcCAqZ2RwKQogewotCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0g cy0+cHJpdmF0ZTsKLQlzdHJ1Y3Qgc3RpX2dkcCAqZ2RwID0gKHN0cnVjdCBzdGlfZ2RwICopbm9k ZS0+aW5mb19lbnQtPmRhdGE7Ci0Jc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lID0gJmdkcC0+ cGxhbmUuZHJtX3BsYW5lOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQotCWRybV9tb2Rlc2V0 X2xvY2soJmRybV9wbGFuZS0+bXV0ZXgsIE5VTEwpOwotCWNydGMgPSBkcm1fcGxhbmUtPnN0YXRl LT5jcnRjOwotCWRybV9tb2Rlc2V0X3VubG9jaygmZHJtX3BsYW5lLT5tdXRleCk7Ci0KLQlzZXFf cHJpbnRmKHMsICIlczogKHZhZGRyID0gMHglcCkiLAorCWRybV9wcmludGYocCwgIlx0JXM6ICh2 YWRkciA9IDB4JXBLKSIsCiAJCSAgIHN0aV9wbGFuZV90b19zdHIoJmdkcC0+cGxhbmUpLCBnZHAt PnJlZ3MpOwogCiAJREJHRlNfRFVNUChHQU1fR0RQX0NUTCk7Ci0JZ2RwX2RiZ19jdGwocywgcmVh ZGwoZ2RwLT5yZWdzICsgR0FNX0dEUF9DVExfT0ZGU0VUKSk7CisJZ2RwX2RiZ19jdGwocCwgcmVh ZGwoZ2RwLT5yZWdzICsgR0FNX0dEUF9DVExfT0ZGU0VUKSk7CiAJREJHRlNfRFVNUChHQU1fR0RQ X0FHQyk7CiAJREJHRlNfRFVNUChHQU1fR0RQX1ZQTyk7Ci0JZ2RwX2RiZ192cG8ocywgcmVhZGwo Z2RwLT5yZWdzICsgR0FNX0dEUF9WUE9fT0ZGU0VUKSk7CisJZ2RwX2RiZ192cG8ocCwgcmVhZGwo Z2RwLT5yZWdzICsgR0FNX0dEUF9WUE9fT0ZGU0VUKSk7CiAJREJHRlNfRFVNUChHQU1fR0RQX1ZQ Uyk7Ci0JZ2RwX2RiZ192cHMocywgcmVhZGwoZ2RwLT5yZWdzICsgR0FNX0dEUF9WUFNfT0ZGU0VU KSk7CisJZ2RwX2RiZ192cHMocCwgcmVhZGwoZ2RwLT5yZWdzICsgR0FNX0dEUF9WUFNfT0ZGU0VU KSk7CiAJREJHRlNfRFVNUChHQU1fR0RQX1BNTCk7CiAJREJHRlNfRFVNUChHQU1fR0RQX1BNUCk7 CiAJREJHRlNfRFVNUChHQU1fR0RQX1NJWkUpOwotCWdkcF9kYmdfc2l6ZShzLCByZWFkbChnZHAt PnJlZ3MgKyBHQU1fR0RQX1NJWkVfT0ZGU0VUKSk7CisJZ2RwX2RiZ19zaXplKHAsIHJlYWRsKGdk cC0+cmVncyArIEdBTV9HRFBfU0laRV9PRkZTRVQpKTsKIAlEQkdGU19EVU1QKEdBTV9HRFBfTlZO KTsKLQlnZHBfZGJnX252bihzLCBnZHAsIHJlYWRsKGdkcC0+cmVncyArIEdBTV9HRFBfTlZOX09G RlNFVCkpOworCWdkcF9kYmdfbnZuKHAsIGdkcCwgcmVhZGwoZ2RwLT5yZWdzICsgR0FNX0dEUF9O Vk5fT0ZGU0VUKSk7CiAJREJHRlNfRFVNUChHQU1fR0RQX0tFWTEpOwogCURCR0ZTX0RVTVAoR0FN X0dEUF9LRVkyKTsKIAlEQkdGU19EVU1QKEdBTV9HRFBfUFBUKTsKLQlnZHBfZGJnX3BwdChzLCBy ZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX1BQVF9PRkZTRVQpKTsKKwlnZHBfZGJnX3BwdChwLCBy ZWFkbChnZHAtPnJlZ3MgKyBHQU1fR0RQX1BQVF9PRkZTRVQpKTsKIAlEQkdGU19EVU1QKEdBTV9H RFBfQ01MKTsKIAlEQkdGU19EVU1QKEdBTV9HRFBfTVNUKTsKLQlnZHBfZGJnX21zdChzLCByZWFk bChnZHAtPnJlZ3MgKyBHQU1fR0RQX01TVF9PRkZTRVQpKTsKLQotCXNlcV9wdXRzKHMsICJcblxu Iik7Ci0JaWYgKCFjcnRjKQotCQlzZXFfcHV0cyhzLCAiICBOb3QgY29ubmVjdGVkIHRvIGFueSBE Uk0gQ1JUQ1xuIik7Ci0JZWxzZQotCQlzZXFfcHJpbnRmKHMsICIgIENvbm5lY3RlZCB0byBEUk0g Q1JUQyAjJWQgKCVzKVxuIiwKLQkJCSAgIGNydGMtPmJhc2UuaWQsIHN0aV9taXhlcl90b19zdHIo dG9fc3RpX21peGVyKGNydGMpKSk7CisJZ2RwX2RiZ19tc3QocCwgcmVhZGwoZ2RwLT5yZWdzICsg R0FNX0dEUF9NU1RfT0ZGU0VUKSk7CiAKKwlkcm1fcHJpbnRmKHAsICJcbiIpOwogCXJldHVybiAw OwogfQogCi1zdGF0aWMgdm9pZCBnZHBfbm9kZV9kdW1wX25vZGUoc3RydWN0IHNlcV9maWxlICpz LCBzdHJ1Y3Qgc3RpX2dkcF9ub2RlICpub2RlKQorc3RhdGljIHZvaWQgZ2RwX25vZGVfZHVtcF9u b2RlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHN0aV9nZHBfbm9kZSAqbm9kZSkKIHsK LQlzZXFfcHJpbnRmKHMsICJcdEA6MHglcCIsIG5vZGUpOwotCXNlcV9wcmludGYocywgIlxuXHRD VEwgIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfY3RsKTsKLQlnZHBfZGJnX2N0bChzLCBub2RlLT5n YW1fZ2RwX2N0bCk7Ci0Jc2VxX3ByaW50ZihzLCAiXG5cdEFHQyAgMHglMDhYIiwgbm9kZS0+Z2Ft X2dkcF9hZ2MpOwotCXNlcV9wcmludGYocywgIlxuXHRWUE8gIDB4JTA4WCIsIG5vZGUtPmdhbV9n ZHBfdnBvKTsKLQlnZHBfZGJnX3ZwbyhzLCBub2RlLT5nYW1fZ2RwX3Zwbyk7Ci0Jc2VxX3ByaW50 ZihzLCAiXG5cdFZQUyAgMHglMDhYIiwgbm9kZS0+Z2FtX2dkcF92cHMpOwotCWdkcF9kYmdfdnBz KHMsIG5vZGUtPmdhbV9nZHBfdnBzKTsKLQlzZXFfcHJpbnRmKHMsICJcblx0UE1MICAweCUwOFgi LCBub2RlLT5nYW1fZ2RwX3BtbCk7Ci0Jc2VxX3ByaW50ZihzLCAiXG5cdFBNUCAgMHglMDhYIiwg bm9kZS0+Z2FtX2dkcF9wbXApOwotCXNlcV9wcmludGYocywgIlxuXHRTSVpFIDB4JTA4WCIsIG5v ZGUtPmdhbV9nZHBfc2l6ZSk7Ci0JZ2RwX2RiZ19zaXplKHMsIG5vZGUtPmdhbV9nZHBfc2l6ZSk7 Ci0Jc2VxX3ByaW50ZihzLCAiXG5cdE5WTiAgMHglMDhYIiwgbm9kZS0+Z2FtX2dkcF9udm4pOwot CXNlcV9wcmludGYocywgIlxuXHRLRVkxIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfa2V5MSk7Ci0J c2VxX3ByaW50ZihzLCAiXG5cdEtFWTIgMHglMDhYIiwgbm9kZS0+Z2FtX2dkcF9rZXkyKTsKLQlz ZXFfcHJpbnRmKHMsICJcblx0UFBUICAweCUwOFgiLCBub2RlLT5nYW1fZ2RwX3BwdCk7Ci0JZ2Rw X2RiZ19wcHQocywgbm9kZS0+Z2FtX2dkcF9wcHQpOwotCXNlcV9wcmludGYocywgIlxuXHRDTUwg IDB4JTA4WFxuIiwgbm9kZS0+Z2FtX2dkcF9jbWwpOworCWRybV9wcmludGYocCwgIlx0QDoweCVw SyIsIG5vZGUpOworCWRybV9wcmludGYocCwgIlxuXHRcdENUTCAgMHglMDhYIiwgbm9kZS0+Z2Ft X2dkcF9jdGwpOworCWdkcF9kYmdfY3RsKHAsIG5vZGUtPmdhbV9nZHBfY3RsKTsKKwlkcm1fcHJp bnRmKHAsICJcblx0XHRBR0MgIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfYWdjKTsKKwlkcm1fcHJp bnRmKHAsICJcblx0XHRWUE8gIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfdnBvKTsKKwlnZHBfZGJn X3ZwbyhwLCBub2RlLT5nYW1fZ2RwX3Zwbyk7CisJZHJtX3ByaW50ZihwLCAiXG5cdFx0VlBTICAw eCUwOFgiLCBub2RlLT5nYW1fZ2RwX3Zwcyk7CisJZ2RwX2RiZ192cHMocCwgbm9kZS0+Z2FtX2dk cF92cHMpOworCWRybV9wcmludGYocCwgIlxuXHRcdFBNTCAgMHglMDhYIiwgbm9kZS0+Z2FtX2dk cF9wbWwpOworCWRybV9wcmludGYocCwgIlxuXHRcdFBNUCAgMHglMDhYIiwgbm9kZS0+Z2FtX2dk cF9wbXApOworCWRybV9wcmludGYocCwgIlxuXHRcdFNJWkUgMHglMDhYIiwgbm9kZS0+Z2FtX2dk cF9zaXplKTsKKwlnZHBfZGJnX3NpemUocCwgbm9kZS0+Z2FtX2dkcF9zaXplKTsKKwlkcm1fcHJp bnRmKHAsICJcblx0XHROVk4gIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfbnZuKTsKKwlkcm1fcHJp bnRmKHAsICJcblx0XHRLRVkxIDB4JTA4WCIsIG5vZGUtPmdhbV9nZHBfa2V5MSk7CisJZHJtX3By aW50ZihwLCAiXG5cdFx0S0VZMiAweCUwOFgiLCBub2RlLT5nYW1fZ2RwX2tleTIpOworCWRybV9w cmludGYocCwgIlxuXHRcdFBQVCAgMHglMDhYIiwgbm9kZS0+Z2FtX2dkcF9wcHQpOworCWdkcF9k YmdfcHB0KHAsIG5vZGUtPmdhbV9nZHBfcHB0KTsKKwlkcm1fcHJpbnRmKHAsICJcblx0XHRDTUwg IDB4JTA4WFxuIiwgbm9kZS0+Z2FtX2dkcF9jbWwpOwogfQogCi1zdGF0aWMgaW50IGdkcF9ub2Rl X2RiZ19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqYXJnKQorc3RhdGljIHZvaWQgc3Rp X2dkcF9wbGFuZV9wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCisJCQkJICAgICAg Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9pbmZv X25vZGUgKm5vZGUgPSBzLT5wcml2YXRlOwotCXN0cnVjdCBzdGlfZ2RwICpnZHAgPSAoc3RydWN0 IHN0aV9nZHAgKilub2RlLT5pbmZvX2VudC0+ZGF0YTsKKwlzdHJ1Y3Qgc3RpX3BsYW5lICpwbGFu ZSA9IHRvX3N0aV9wbGFuZShzdGF0ZS0+cGxhbmUpOworCXN0cnVjdCBzdGlfZ2RwICpnZHAgPSB0 b19zdGlfZ2RwKHBsYW5lKTsKIAl1bnNpZ25lZCBpbnQgYjsKIAotCWZvciAoYiA9IDA7IGIgPCBH RFBfTk9ERV9OQl9CQU5LOyBiKyspIHsKLQkJc2VxX3ByaW50ZihzLCAiXG4lc1slZF0udG9wIiwg c3RpX3BsYW5lX3RvX3N0cigmZ2RwLT5wbGFuZSksIGIpOwotCQlnZHBfbm9kZV9kdW1wX25vZGUo cywgZ2RwLT5ub2RlX2xpc3RbYl0udG9wX2ZpZWxkKTsKLQkJc2VxX3ByaW50ZihzLCAiXG4lc1sl ZF0uYnRtIiwgc3RpX3BsYW5lX3RvX3N0cigmZ2RwLT5wbGFuZSksIGIpOwotCQlnZHBfbm9kZV9k dW1wX25vZGUocywgZ2RwLT5ub2RlX2xpc3RbYl0uYnRtX2ZpZWxkKTsKLQl9Ci0KLQlyZXR1cm4g MDsKLX0KLQotc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGdkcDBfZGVidWdmc19maWxlc1td ID0gewotCXsgImdkcDAiLCBnZHBfZGJnX3Nob3csIDAsIE5VTEwgfSwKLQl7ICJnZHAwX25vZGUi LCBnZHBfbm9kZV9kYmdfc2hvdywgMCwgTlVMTCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBkcm1f aW5mb19saXN0IGdkcDFfZGVidWdmc19maWxlc1tdID0gewotCXsgImdkcDEiLCBnZHBfZGJnX3No b3csIDAsIE5VTEwgfSwKLQl7ICJnZHAxX25vZGUiLCBnZHBfbm9kZV9kYmdfc2hvdywgMCwgTlVM TCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGdkcDJfZGVidWdmc19maWxl c1tdID0gewotCXsgImdkcDIiLCBnZHBfZGJnX3Nob3csIDAsIE5VTEwgfSwKLQl7ICJnZHAyX25v ZGUiLCBnZHBfbm9kZV9kYmdfc2hvdywgMCwgTlVMTCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBk cm1faW5mb19saXN0IGdkcDNfZGVidWdmc19maWxlc1tdID0gewotCXsgImdkcDMiLCBnZHBfZGJn X3Nob3csIDAsIE5VTEwgfSwKLQl7ICJnZHAzX25vZGUiLCBnZHBfbm9kZV9kYmdfc2hvdywgMCwg TlVMTCB9LAotfTsKLQotc3RhdGljIGludCBnZHBfZGVidWdmc19pbml0KHN0cnVjdCBzdGlfZ2Rw ICpnZHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQotewotCXVuc2lnbmVkIGludCBpOwotCXN0 cnVjdCBkcm1faW5mb19saXN0ICpnZHBfZGVidWdmc19maWxlczsKLQlpbnQgbmJfZmlsZXM7CisJ Z2RwX2RiZ19zaG93KHAsIGdkcCk7CiAKLQlzd2l0Y2ggKGdkcC0+cGxhbmUuZGVzYykgewotCWNh c2UgU1RJX0dEUF8wOgotCQlnZHBfZGVidWdmc19maWxlcyA9IGdkcDBfZGVidWdmc19maWxlczsK LQkJbmJfZmlsZXMgPSBBUlJBWV9TSVpFKGdkcDBfZGVidWdmc19maWxlcyk7Ci0JCWJyZWFrOwot CWNhc2UgU1RJX0dEUF8xOgotCQlnZHBfZGVidWdmc19maWxlcyA9IGdkcDFfZGVidWdmc19maWxl czsKLQkJbmJfZmlsZXMgPSBBUlJBWV9TSVpFKGdkcDFfZGVidWdmc19maWxlcyk7Ci0JCWJyZWFr OwotCWNhc2UgU1RJX0dEUF8yOgotCQlnZHBfZGVidWdmc19maWxlcyA9IGdkcDJfZGVidWdmc19m aWxlczsKLQkJbmJfZmlsZXMgPSBBUlJBWV9TSVpFKGdkcDJfZGVidWdmc19maWxlcyk7Ci0JCWJy ZWFrOwotCWNhc2UgU1RJX0dEUF8zOgotCQlnZHBfZGVidWdmc19maWxlcyA9IGdkcDNfZGVidWdm c19maWxlczsKLQkJbmJfZmlsZXMgPSBBUlJBWV9TSVpFKGdkcDNfZGVidWdmc19maWxlcyk7Ci0J CWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldHVybiAtRUlOVkFMOworCWZvciAoYiA9IDA7IGIgPCBH RFBfTk9ERV9OQl9CQU5LOyBiKyspIHsKKwkJZHJtX3ByaW50ZihwLCAiXHQlc1slZF0udG9wXG4i LAorCQkJICAgc3RpX3BsYW5lX3RvX3N0cigmZ2RwLT5wbGFuZSksIGIpOworCQlnZHBfbm9kZV9k dW1wX25vZGUocCwgZ2RwLT5ub2RlX2xpc3RbYl0udG9wX2ZpZWxkKTsKKwkJZHJtX3ByaW50Zihw LCAiXHQlc1slZF0uYnRtXG4iLAorCQkJICAgc3RpX3BsYW5lX3RvX3N0cigmZ2RwLT5wbGFuZSks IGIpOworCQlnZHBfbm9kZV9kdW1wX25vZGUocCwgZ2RwLT5ub2RlX2xpc3RbYl0uYnRtX2ZpZWxk KTsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgbmJfZmlsZXM7IGkrKykKLQkJZ2RwX2RlYnVnZnNf ZmlsZXNbaV0uZGF0YSA9IGdkcDsKLQotCXJldHVybiBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMo Z2RwX2RlYnVnZnNfZmlsZXMsCi0JCQkJCW5iX2ZpbGVzLAotCQkJCQltaW5vci0+ZGVidWdmc19y b290LCBtaW5vcik7CisJZHJtX3ByaW50ZihwLCAiXHQlcyVzXG4iLAorCQkgICBwbGFuZS0+ZnBz X2luZm8uZnBzX3N0ciwgcGxhbmUtPmZwc19pbmZvLmZpcHNfc3RyKTsKIH0KIAogc3RhdGljIGlu dCBzdGlfZ2RwX2ZvdXJjYzJmb3JtYXQoaW50IGZvdXJjYykKQEAgLTg4NywxNCArODIzLDYgQEAg c3RhdGljIHZvaWQgc3RpX2dkcF9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSkK IAlkcm1fcGxhbmVfY2xlYW51cChkcm1fcGxhbmUpOwogfQogCi1zdGF0aWMgaW50IHN0aV9nZHBf bGF0ZV9yZWdpc3RlcihzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUpCi17Ci0Jc3RydWN0IHN0 aV9wbGFuZSAqcGxhbmUgPSB0b19zdGlfcGxhbmUoZHJtX3BsYW5lKTsKLQlzdHJ1Y3Qgc3RpX2dk cCAqZ2RwID0gdG9fc3RpX2dkcChwbGFuZSk7Ci0KLQlyZXR1cm4gZ2RwX2RlYnVnZnNfaW5pdChn ZHAsIGRybV9wbGFuZS0+ZGV2LT5wcmltYXJ5KTsKLX0KLQogc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfZnVuY3Mgc3RpX2dkcF9wbGFuZV9oZWxwZXJzX2Z1bmNzID0gewogCS51cGRhdGVf cGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCiAJLmRpc2FibGVfcGxhbmUg PSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLApAQCAtOTAyLDcgKzgzMCw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0aV9nZHBfcGxhbmVfaGVscGVyc19m dW5jcyA9IHsKIAkucmVzZXQgPSBzdGlfcGxhbmVfcmVzZXQsCiAJLmF0b21pY19kdXBsaWNhdGVf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21p Y19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwK LQkubGF0ZV9yZWdpc3RlciA9IHN0aV9nZHBfbGF0ZV9yZWdpc3RlciwKKwkuYXRvbWljX3ByaW50 X3N0YXRlID0gc3RpX2dkcF9wbGFuZV9wcmludF9zdGF0ZSwKIH07CiAKIHN0cnVjdCBkcm1fcGxh bmUgKnN0aV9nZHBfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaHF2ZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkv c3RpX2hxdmRwLmMKaW5kZXggMTA2YmU4YzRlNThiLi5mMjE4ZjYzNjk2NmMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hxdmRwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3N0 aS9zdGlfaHF2ZHAuYwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgc3RpX2hxdmRwX2dl dF9uZXh0X2NtZChzdHJ1Y3Qgc3RpX2hxdmRwICpocXZkcCkKIAlyZXR1cm4gLTE7CiB9CiAKLSNk ZWZpbmUgREJHRlNfRFVNUChyZWcpIHNlcV9wcmludGYocywgIlxuICAlLTI1cyAweCUwOFgiLCAj cmVnLCBcCisjZGVmaW5lIERCR0ZTX0RVTVAocmVnKSBkcm1fcHJpbnRmKHAsICJcblx0XHQlLTI1 cyAweCUwOFgiLCAjcmVnLCBcCiAJCQkJICAgcmVhZGwoaHF2ZHAtPnJlZ3MgKyByZWcpKQogCiBz dGF0aWMgY29uc3QgY2hhciAqaHF2ZHBfZGJnX2dldF9sdXQodTMyICpjb2VmKQpAQCAtNDY5LDk5 ICs0NjksMTAwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpocXZkcF9kYmdfZ2V0X2x1dCh1MzIgKmNv ZWYpCiAJcmV0dXJuICI8VU5LTk9XTj4iOwogfQogCi1zdGF0aWMgdm9pZCBocXZkcF9kYmdfZHVt cF9jbWQoc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3Qgc3RpX2hxdmRwX2NtZCAqYykKK3N0YXRp YyB2b2lkIGhxdmRwX2RiZ19kdW1wX2NtZChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCBz dGlfaHF2ZHBfY21kICpjKQogewogCWludCBzcmNfdywgc3JjX2gsIGRzdF93LCBkc3RfaDsKIAot CXNlcV9wdXRzKHMsICJcblx0VE9QOiIpOwotCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgMHgl MDhYIiwgIkNvbmZpZyIsIGMtPnRvcC5jb25maWcpOworCWRybV9wcmludGYocCwgIlxuXHRUT1A6 Iik7CisJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiQ29uZmlnIiwgYy0+dG9w LmNvbmZpZyk7CiAJc3dpdGNoIChjLT50b3AuY29uZmlnKSB7CiAJY2FzZSBUT1BfQ09ORklHX1BS T0dSRVNTSVZFOgotCQlzZXFfcHV0cyhzLCAiXHRQcm9ncmVzc2l2ZSIpOworCQlkcm1fcHJpbnRm KHAsICJcdFByb2dyZXNzaXZlIik7CiAJCWJyZWFrOwogCWNhc2UgVE9QX0NPTkZJR19JTlRFUl9U T1A6Ci0JCXNlcV9wdXRzKHMsICJcdEludGVybGFjZWQsIHRvcCBmaWVsZCIpOworCQlkcm1fcHJp bnRmKHAsICJcdEludGVybGFjZWQsIHRvcCBmaWVsZCIpOwogCQlicmVhazsKIAljYXNlIFRPUF9D T05GSUdfSU5URVJfQlRNOgotCQlzZXFfcHV0cyhzLCAiXHRJbnRlcmxhY2VkLCBib3R0b20gZmll bGQiKTsKKwkJZHJtX3ByaW50ZihwLCAiXHRJbnRlcmxhY2VkLCBib3R0b20gZmllbGQiKTsKIAkJ YnJlYWs7CiAJZGVmYXVsdDoKLQkJc2VxX3B1dHMocywgIlx0PFVOS05PV04+Iik7CisJCWRybV9w cmludGYocCwgIlx0PFVOS05PV04+Iik7CiAJCWJyZWFrOwogCX0KIAotCXNlcV9wcmludGYocywg IlxuXHQgJS0yMHMgMHglMDhYIiwgIk1lbUZvcm1hdCIsIGMtPnRvcC5tZW1fZm9ybWF0KTsKLQlz ZXFfcHJpbnRmKHMsICJcblx0ICUtMjBzIDB4JTA4WCIsICJDdXJyZW50WSIsIGMtPnRvcC5jdXJy ZW50X2x1bWEpOwotCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkN1cnJlbnRD IiwgYy0+dG9wLmN1cnJlbnRfY2hyb21hKTsKLQlzZXFfcHJpbnRmKHMsICJcblx0ICUtMjBzIDB4 JTA4WCIsICJZU3JjUGl0Y2giLCBjLT50b3AubHVtYV9zcmNfcGl0Y2gpOwotCXNlcV9wcmludGYo cywgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkNTcmNQaXRjaCIsCisJZHJtX3ByaW50ZihwLCAiXG5c dCAlLTIwcyAweCUwOFgiLCAiTWVtRm9ybWF0IiwgYy0+dG9wLm1lbV9mb3JtYXQpOworCWRybV9w cmludGYocCwgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkN1cnJlbnRZIiwgYy0+dG9wLmN1cnJlbnRf bHVtYSk7CisJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiQ3VycmVudEMiLCBj LT50b3AuY3VycmVudF9jaHJvbWEpOworCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMgMHglMDhY IiwgIllTcmNQaXRjaCIsIGMtPnRvcC5sdW1hX3NyY19waXRjaCk7CisJZHJtX3ByaW50ZihwLCAi XG5cdCAlLTIwcyAweCUwOFgiLCAiQ1NyY1BpdGNoIiwKIAkJICAgYy0+dG9wLmNocm9tYV9zcmNf cGl0Y2gpOwotCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgMHglMDhYIiwgIklucHV0RnJhbWVT aXplIiwKKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIDB4JTA4WCIsICJJbnB1dEZyYW1lU2l6 ZSIsCiAJCSAgIGMtPnRvcC5pbnB1dF9mcmFtZV9zaXplKTsKLQlzZXFfcHJpbnRmKHMsICJcdCVk eCVkIiwKKwlkcm1fcHJpbnRmKHAsICJcdCVkeCVkIiwKIAkJICAgYy0+dG9wLmlucHV0X2ZyYW1l X3NpemUgJiAweDAwMDBGRkZGLAogCQkgICBjLT50b3AuaW5wdXRfZnJhbWVfc2l6ZSA+PiAxNik7 Ci0Jc2VxX3ByaW50ZihzLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiSW5wdXRWaWV3cG9ydFNpemUi LAorCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMgMHglMDhYIiwgIklucHV0Vmlld3BvcnRTaXpl IiwKIAkJICAgYy0+dG9wLmlucHV0X3ZpZXdwb3J0X3NpemUpOwogCXNyY193ID0gYy0+dG9wLmlu cHV0X3ZpZXdwb3J0X3NpemUgJiAweDAwMDBGRkZGOwogCXNyY19oID0gYy0+dG9wLmlucHV0X3Zp ZXdwb3J0X3NpemUgPj4gMTY7Ci0Jc2VxX3ByaW50ZihzLCAiXHQlZHglZCIsIHNyY193LCBzcmNf aCk7CisJZHJtX3ByaW50ZihwLCAiXHQlZHglZCIsIHNyY193LCBzcmNfaCk7CiAKLQlzZXFfcHV0 cyhzLCAiXG5cdEhWU1JDOiIpOwotCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgMHglMDhYIiwg Ik91dHB1dFBpY3R1cmVTaXplIiwKKwlkcm1fcHJpbnRmKHAsICJcblx0SFZTUkM6Iik7CisJZHJt X3ByaW50ZihwLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiT3V0cHV0UGljdHVyZVNpemUiLAogCQkg ICBjLT5odnNyYy5vdXRwdXRfcGljdHVyZV9zaXplKTsKIAlkc3RfdyA9IGMtPmh2c3JjLm91dHB1 dF9waWN0dXJlX3NpemUgJiAweDAwMDBGRkZGOwogCWRzdF9oID0gYy0+aHZzcmMub3V0cHV0X3Bp Y3R1cmVfc2l6ZSA+PiAxNjsKLQlzZXFfcHJpbnRmKHMsICJcdCVkeCVkIiwgZHN0X3csIGRzdF9o KTsKLQlzZXFfcHJpbnRmKHMsICJcblx0ICUtMjBzIDB4JTA4WCIsICJQYXJhbUN0cmwiLCBjLT5o dnNyYy5wYXJhbV9jdHJsKTsKKwlkcm1fcHJpbnRmKHAsICJcdCVkeCVkIiwgZHN0X3csIGRzdF9o KTsKKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIDB4JTA4WCIsICJQYXJhbUN0cmwiLCBjLT5o dnNyYy5wYXJhbV9jdHJsKTsKIAotCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgJXMiLCAieWhf Y29lZiIsCisJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIwcyAlcyIsICJ5aF9jb2VmIiwKIAkJICAg aHF2ZHBfZGJnX2dldF9sdXQoYy0+aHZzcmMueWhfY29lZikpOwotCXNlcV9wcmludGYocywgIlxu XHQgJS0yMHMgJXMiLCAiY2hfY29lZiIsCisJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIwcyAlcyIs ICJjaF9jb2VmIiwKIAkJICAgaHF2ZHBfZGJnX2dldF9sdXQoYy0+aHZzcmMuY2hfY29lZikpOwot CXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgJXMiLCAieXZfY29lZiIsCisJZHJtX3ByaW50Zihw LCAiXG5cdCAlLTIwcyAlcyIsICJ5dl9jb2VmIiwKIAkJICAgaHF2ZHBfZGJnX2dldF9sdXQoYy0+ aHZzcmMueXZfY29lZikpOwotCXNlcV9wcmludGYocywgIlxuXHQgJS0yMHMgJXMiLCAiY3ZfY29l ZiIsCisJZHJtX3ByaW50ZihwLCAiXG5cdCAlLTIwcyAlcyIsICJjdl9jb2VmIiwKIAkJICAgaHF2 ZHBfZGJnX2dldF9sdXQoYy0+aHZzcmMuY3ZfY29lZikpOwogCi0Jc2VxX3ByaW50ZihzLCAiXG5c dCAlLTIwcyIsICJTY2FsZUgiKTsKKwlkcm1fcHJpbnRmKHAsICJcblx0ICUtMjBzIiwgIlNjYWxl SCIpOwogCWlmIChkc3RfdyA+IHNyY193KQotCQlzZXFfcHJpbnRmKHMsICIgJWQvMSIsIGRzdF93 IC8gc3JjX3cpOworCQlkcm1fcHJpbnRmKHAsICIgJWQvMSIsIGRzdF93IC8gc3JjX3cpOwogCWVs c2UKLQkJc2VxX3ByaW50ZihzLCAiIDEvJWQiLCBzcmNfdyAvIGRzdF93KTsKKwkJZHJtX3ByaW50 ZihwLCAiIDEvJWQiLCBzcmNfdyAvIGRzdF93KTsKIAotCXNlcV9wcmludGYocywgIlxuXHQgJS0y MHMiLCAidFNjYWxlViIpOworCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMiLCAidFNjYWxlViIp OwogCWlmIChkc3RfaCA+IHNyY19oKQotCQlzZXFfcHJpbnRmKHMsICIgJWQvMSIsIGRzdF9oIC8g c3JjX2gpOworCQlkcm1fcHJpbnRmKHAsICIgJWQvMSIsIGRzdF9oIC8gc3JjX2gpOwogCWVsc2UK LQkJc2VxX3ByaW50ZihzLCAiIDEvJWQiLCBzcmNfaCAvIGRzdF9oKTsKKwkJZHJtX3ByaW50Zihw LCAiIDEvJWQiLCBzcmNfaCAvIGRzdF9oKTsKIAotCXNlcV9wdXRzKHMsICJcblx0Q1NESToiKTsK LQlzZXFfcHJpbnRmKHMsICJcblx0ICUtMjBzIDB4JTA4WFx0IiwgIkNvbmZpZyIsIGMtPmNzZGku Y29uZmlnKTsKKwlkcm1fcHJpbnRmKHAsICJcblx0Q1NESToiKTsKKwlkcm1fcHJpbnRmKHAsICJc blx0ICUtMjBzIDB4JTA4WFx0IiwgIkNvbmZpZyIsIGMtPmNzZGkuY29uZmlnKTsKIAlzd2l0Y2gg KGMtPmNzZGkuY29uZmlnKSB7CiAJY2FzZSBDU0RJX0NPTkZJR19QUk9HOgotCQlzZXFfcHV0cyhz LCAiQnlwYXNzIik7CisJCWRybV9wcmludGYocCwgIkJ5cGFzcyIpOwogCQlicmVhazsKIAljYXNl IENTRElfQ09ORklHX0lOVEVSX0RJUjoKLQkJc2VxX3B1dHMocywgIkRlaW50ZXJsYWNlLCBkaXJl Y3Rpb25hbCIpOworCQlkcm1fcHJpbnRmKHAsICJEZWludGVybGFjZSwgZGlyZWN0aW9uYWwiKTsK IAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJc2VxX3B1dHMocywgIjxVTktOT1dOPiIpOworCQlkcm1f cHJpbnRmKHAsICI8VU5LTk9XTj4iKTsKIAkJYnJlYWs7CiAJfQogCi0Jc2VxX3ByaW50ZihzLCAi XG5cdCAlLTIwcyAweCUwOFgiLCAiQ29uZmlnMiIsIGMtPmNzZGkuY29uZmlnMik7Ci0Jc2VxX3By aW50ZihzLCAiXG5cdCAlLTIwcyAweCUwOFgiLCAiRGNkaUNvbmZpZyIsIGMtPmNzZGkuZGNkaV9j b25maWcpOworCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkNvbmZpZzIiLCBj LT5jc2RpLmNvbmZpZzIpOworCWRybV9wcmludGYocCwgIlxuXHQgJS0yMHMgMHglMDhYIiwgIkRj ZGlDb25maWciLCBjLT5jc2RpLmRjZGlfY29uZmlnKTsKIH0KIAotc3RhdGljIGludCBocXZkcF9k Ymdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCitzdGF0aWMgdm9pZCBzdGlf aHF2ZHBfcGxhbmVfcHJpbnRfc3RhdGUoc3RydWN0IGRybV9wcmludGVyICpwLAorCQkJCQljb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2luZm9fbm9k ZSAqbm9kZSA9IHMtPnByaXZhdGU7Ci0Jc3RydWN0IHN0aV9ocXZkcCAqaHF2ZHAgPSAoc3RydWN0 IHN0aV9ocXZkcCAqKW5vZGUtPmluZm9fZW50LT5kYXRhOworCXN0cnVjdCBzdGlfcGxhbmUgKnBs YW5lID0gdG9fc3RpX3BsYW5lKHN0YXRlLT5wbGFuZSk7CisJc3RydWN0IHN0aV9ocXZkcCAqaHF2 ZHAgPSB0b19zdGlfaHF2ZHAocGxhbmUpOwogCWludCBjbWQsIGNtZF9vZmZzZXQsIGluZm94cDcw OwogCXZvaWQgKnZpcnQ7CiAKLQlzZXFfcHJpbnRmKHMsICIlczogKHZhZGRyID0gMHglcCkiLAor CWRybV9wcmludGYocCwgIlx0JXM6ICh2YWRkciA9IDB4JXBLKSIsCiAJCSAgIHN0aV9wbGFuZV90 b19zdHIoJmhxdmRwLT5wbGFuZSksIGhxdmRwLT5yZWdzKTsKIAogCURCR0ZTX0RVTVAoSFFWRFBf TUJYX0lSUV9UT19YUDcwKTsKQEAgLTU2OSw4MCArNTcwLDY0IEBAIHN0YXRpYyBpbnQgaHF2ZHBf ZGJnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQogCURCR0ZTX0RVTVAoSFFW RFBfTUJYX0lSUV9UT19IT1NUKTsKIAlEQkdGU19EVU1QKEhRVkRQX01CWF9JTkZPX1hQNzApOwog CWluZm94cDcwID0gcmVhZGwoaHF2ZHAtPnJlZ3MgKyBIUVZEUF9NQlhfSU5GT19YUDcwKTsKLQlz ZXFfcHV0cyhzLCAiXHRGaXJtd2FyZSBzdGF0ZTogIik7CisJZHJtX3ByaW50ZihwLCAiXHRGaXJt d2FyZSBzdGF0ZTogIik7CiAJaWYgKGluZm94cDcwICYgSU5GT19YUDcwX0ZXX1JFQURZKQotCQlz ZXFfcHV0cyhzLCAiaWRsZSBhbmQgcmVhZHkiKTsKKwkJZHJtX3ByaW50ZihwLCAiaWRsZSBhbmQg cmVhZHkiKTsKIAllbHNlIGlmIChpbmZveHA3MCAmIElORk9fWFA3MF9GV19QUk9DRVNTSU5HKQot CQlzZXFfcHV0cyhzLCAicHJvY2Vzc2luZyBhIHBpY3R1cmUiKTsKKwkJZHJtX3ByaW50ZihwLCAi cHJvY2Vzc2luZyBhIHBpY3R1cmUiKTsKIAllbHNlIGlmIChpbmZveHA3MCAmIElORk9fWFA3MF9G V19JTklUUVVFVUVTKQotCQlzZXFfcHV0cyhzLCAicHJvZ3JhbW1pbmcgcXVldWVzIik7CisJCWRy bV9wcmludGYocCwgInByb2dyYW1taW5nIHF1ZXVlcyIpOwogCWVsc2UKLQkJc2VxX3B1dHMocywg Ik5PVCBSRUFEWSIpOworCQlkcm1fcHJpbnRmKHAsICJOT1QgUkVBRFkiKTsKIAogCURCR0ZTX0RV TVAoSFFWRFBfTUJYX1NXX1JFU0VUX0NUUkwpOwogCURCR0ZTX0RVTVAoSFFWRFBfTUJYX1NUQVJU VVBfQ1RSTDEpOwogCWlmIChyZWFkbChocXZkcC0+cmVncyArIEhRVkRQX01CWF9TVEFSVFVQX0NU UkwxKQogCQkJCQkmIFNUQVJUVVBfQ1RSTDFfUlNUX0RPTkUpCi0JCXNlcV9wdXRzKHMsICJcdFJl c2V0IGlzIGRvbmUiKTsKKwkJZHJtX3ByaW50ZihwLCAiXHRSZXNldCBpcyBkb25lIik7CiAJZWxz ZQotCQlzZXFfcHV0cyhzLCAiXHRSZXNldCBpcyBOT1QgZG9uZSIpOworCQlkcm1fcHJpbnRmKHAs ICJcdFJlc2V0IGlzIE5PVCBkb25lIik7CiAJREJHRlNfRFVNUChIUVZEUF9NQlhfU1RBUlRVUF9D VFJMMik7CiAJaWYgKHJlYWRsKGhxdmRwLT5yZWdzICsgSFFWRFBfTUJYX1NUQVJUVVBfQ1RSTDIp CiAJCQkJCSYgU1RBUlRVUF9DVFJMMl9GRVRDSF9FTikKLQkJc2VxX3B1dHMocywgIlx0RmV0Y2gg aXMgZW5hYmxlZCIpOworCQlkcm1fcHJpbnRmKHAsICJcdEZldGNoIGlzIGVuYWJsZWQiKTsKIAll bHNlCi0JCXNlcV9wdXRzKHMsICJcdEZldGNoIGlzIE5PVCBlbmFibGVkIik7CisJCWRybV9wcmlu dGYocCwgIlx0RmV0Y2ggaXMgTk9UIGVuYWJsZWQiKTsKIAlEQkdGU19EVU1QKEhRVkRQX01CWF9H UF9TVEFUVVMpOwogCURCR0ZTX0RVTVAoSFFWRFBfTUJYX05FWFRfQ01EKTsKIAlEQkdGU19EVU1Q KEhRVkRQX01CWF9DVVJSRU5UX0NNRCk7CiAJREJHRlNfRFVNUChIUVZEUF9NQlhfU09GVF9WU1lO Qyk7CiAJaWYgKCEocmVhZGwoaHF2ZHAtPnJlZ3MgKyBIUVZEUF9NQlhfU09GVF9WU1lOQykgJiAz KSkKLQkJc2VxX3B1dHMocywgIlx0SFcgVnN5bmMiKTsKKwkJZHJtX3ByaW50ZihwLCAiXHRIVyBW c3luYyIpOwogCWVsc2UKLQkJc2VxX3B1dHMocywgIlx0U1cgVnN5bmMgPyE/ISIpOworCQlkcm1f cHJpbnRmKHAsICJcdFNXIFZzeW5jID8hPyEiKTsKIAogCS8qIExhc3QgY29tbWFuZCAqLwogCWNt ZCA9IHJlYWRsKGhxdmRwLT5yZWdzICsgSFFWRFBfTUJYX0NVUlJFTlRfQ01EKTsKIAljbWRfb2Zm c2V0ID0gc3RpX2hxdmRwX2dldF9jdXJyX2NtZChocXZkcCk7CiAJaWYgKGNtZF9vZmZzZXQgPT0g LTEpIHsKLQkJc2VxX3B1dHMocywgIlxuXG4gIExhc3QgY29tbWFuZDogdW5rbm93biIpOworCQlk cm1fcHJpbnRmKHAsICJcblxuXHRcdExhc3QgY29tbWFuZDogdW5rbm93biIpOwogCX0gZWxzZSB7 CiAJCXZpcnQgPSBocXZkcC0+aHF2ZHBfY21kICsgY21kX29mZnNldDsKLQkJc2VxX3ByaW50Zihz LCAiXG5cbiAgTGFzdCBjb21tYW5kOiBhZGRyZXNzIEAgMHgleCAoMHglcCkiLAorCQlkcm1fcHJp bnRmKHAsICJcblxuXHRcdExhc3QgY29tbWFuZDogYWRkcmVzcyBAIDB4JXggKDB4JXApIiwKIAkJ CSAgIGNtZCwgdmlydCk7Ci0JCWhxdmRwX2RiZ19kdW1wX2NtZChzLCAoc3RydWN0IHN0aV9ocXZk cF9jbWQgKil2aXJ0KTsKKwkJaHF2ZHBfZGJnX2R1bXBfY21kKHAsIChzdHJ1Y3Qgc3RpX2hxdmRw X2NtZCAqKXZpcnQpOwogCX0KIAogCS8qIE5leHQgY29tbWFuZCAqLwogCWNtZCA9IHJlYWRsKGhx dmRwLT5yZWdzICsgSFFWRFBfTUJYX05FWFRfQ01EKTsKIAljbWRfb2Zmc2V0ID0gc3RpX2hxdmRw X2dldF9uZXh0X2NtZChocXZkcCk7CiAJaWYgKGNtZF9vZmZzZXQgPT0gLTEpIHsKLQkJc2VxX3B1 dHMocywgIlxuXG4gIE5leHQgY29tbWFuZDogdW5rbm93biIpOworCQlkcm1fcHJpbnRmKHAsICJc blxuXHRcdE5leHQgY29tbWFuZDogdW5rbm93biIpOwogCX0gZWxzZSB7CiAJCXZpcnQgPSBocXZk cC0+aHF2ZHBfY21kICsgY21kX29mZnNldDsKLQkJc2VxX3ByaW50ZihzLCAiXG5cbiAgTmV4dCBj b21tYW5kIGFkZHJlc3M6IEAgMHgleCAoMHglcCkiLAorCQlkcm1fcHJpbnRmKHAsICJcblxuXHRc dE5leHQgY29tbWFuZCBhZGRyZXNzOiBAIDB4JXggKDB4JXApIiwKIAkJCSAgIGNtZCwgdmlydCk7 Ci0JCWhxdmRwX2RiZ19kdW1wX2NtZChzLCAoc3RydWN0IHN0aV9ocXZkcF9jbWQgKil2aXJ0KTsK KwkJaHF2ZHBfZGJnX2R1bXBfY21kKHAsIChzdHJ1Y3Qgc3RpX2hxdmRwX2NtZCAqKXZpcnQpOwog CX0KIAotCXNlcV9wdXRjKHMsICdcbicpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgc3RydWN0 IGRybV9pbmZvX2xpc3QgaHF2ZHBfZGVidWdmc19maWxlc1tdID0gewotCXsgImhxdmRwIiwgaHF2 ZHBfZGJnX3Nob3csIDAsIE5VTEwgfSwKLX07Ci0KLXN0YXRpYyBpbnQgaHF2ZHBfZGVidWdmc19p bml0KHN0cnVjdCBzdGlfaHF2ZHAgKmhxdmRwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKLXsK LQl1bnNpZ25lZCBpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhxdmRwX2Rl YnVnZnNfZmlsZXMpOyBpKyspCi0JCWhxdmRwX2RlYnVnZnNfZmlsZXNbaV0uZGF0YSA9IGhxdmRw OwotCi0JcmV0dXJuIGRybV9kZWJ1Z2ZzX2NyZWF0ZV9maWxlcyhocXZkcF9kZWJ1Z2ZzX2ZpbGVz LAotCQkJCQlBUlJBWV9TSVpFKGhxdmRwX2RlYnVnZnNfZmlsZXMpLAotCQkJCQltaW5vci0+ZGVi dWdmc19yb290LCBtaW5vcik7CisJZHJtX3ByaW50ZihwLCAiXHQlcyVzXG4iLAorCQkgICBwbGFu ZS0+ZnBzX2luZm8uZnBzX3N0ciwgcGxhbmUtPmZwc19pbmZvLmZpcHNfc3RyKTsKIH0KIAogLyoq CkBAIC0xMjY0LDE0ICsxMjQ5LDYgQEAgc3RhdGljIHZvaWQgc3RpX2hxdmRwX2Rlc3Ryb3koc3Ry dWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lKQogCWRybV9wbGFuZV9jbGVhbnVwKGRybV9wbGFuZSk7 CiB9CiAKLXN0YXRpYyBpbnQgc3RpX2hxdmRwX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRybV9wbGFu ZSAqZHJtX3BsYW5lKQotewotCXN0cnVjdCBzdGlfcGxhbmUgKnBsYW5lID0gdG9fc3RpX3BsYW5l KGRybV9wbGFuZSk7Ci0Jc3RydWN0IHN0aV9ocXZkcCAqaHF2ZHAgPSB0b19zdGlfaHF2ZHAocGxh bmUpOwotCi0JcmV0dXJuIGhxdmRwX2RlYnVnZnNfaW5pdChocXZkcCwgZHJtX3BsYW5lLT5kZXYt PnByaW1hcnkpOwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBzdGlf aHF2ZHBfcGxhbmVfaGVscGVyc19mdW5jcyA9IHsKIAkudXBkYXRlX3BsYW5lID0gZHJtX2F0b21p Y19oZWxwZXJfdXBkYXRlX3BsYW5lLAogCS5kaXNhYmxlX3BsYW5lID0gZHJtX2F0b21pY19oZWxw ZXJfZGlzYWJsZV9wbGFuZSwKQEAgLTEyNzksNyArMTI1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX2Z1bmNzIHN0aV9ocXZkcF9wbGFuZV9oZWxwZXJzX2Z1bmNzID0gewogCS5y ZXNldCA9IHN0aV9wbGFuZV9yZXNldCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAotCS5sYXRlX3JlZ2lz dGVyID0gc3RpX2hxdmRwX2xhdGVfcmVnaXN0ZXIsCisJLmF0b21pY19wcmludF9zdGF0ZSA9IHN0 aV9ocXZkcF9wbGFuZV9wcmludF9zdGF0ZSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5l ICpzdGlfaHF2ZHBfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAotLSAKMi4xNS4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK