From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: [PATCH 06/10] drm/i915: Name structure in dev_priv that contains RPS/RC6 state as "pm" Date: Wed, 4 Oct 2017 19:37:21 +0530 Message-ID: <1507126045-24526-7-git-send-email-sagar.a.kamble@intel.com> References: <1507126045-24526-1-git-send-email-sagar.a.kamble@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 94D6C6E6F0 for ; Wed, 4 Oct 2017 14:04:13 +0000 (UTC) In-Reply-To: <1507126045-24526-1-git-send-email-sagar.a.kamble@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 List-Id: intel-gfx@lists.freedesktop.org UHJlcGFyZWQgc3Vic3RydWN0dXJlIHJwcyBmb3IgUlBTIHJlbGF0ZWQgc3RhdGUuIGF1dG9lbmFi bGVfd29yayBhbmQKcGN1X2xvY2sgYXJlIHVzZWQgZm9yIFJDNiBoZW5jZSB0aGV5IGFyZSBkZWZp bmVkIG91dHNpZGUgcnBzIHN0cnVjdHVyZS4KUmVuYW1lZCB0aGUgUlBTIGxvY2sgYXMgcGN1X2xv Y2suCgp2MjogUmViYXNlLgoKU2lnbmVkLW9mZi1ieTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2Fy LmEua2FtYmxlQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgpDYzogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgpDYzogSm9vbmFzIExh aHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogUmFk b3NsYXcgU3p3aWNodGVuYmVyZyA8cmFkb3NsYXcuc3p3aWNodGVuYmVyZ0BpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgMTE3ICsrKysr LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICB8ICAgMiAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDEyICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgICAgfCAgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgOCArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDg2ICsrKy0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICAgICB8ICA3MCArKystLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICAgICAgICB8ICA0MCArKy0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgICAgICAgIHwgMzYzICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgICAgfCAgMTYgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMgICAgICB8ICAgNiArLQogMTMg ZmlsZXMgY2hhbmdlZCwgMzc5IGluc2VydGlvbnMoKyksIDM1NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDE3ZDI1ZjkuLmFhMTExNTYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xMDI2LDYgKzEwMjYsNyBAQCBzdGF0aWMgaW50 IGk5MTVfZXJyb3Jfc3RhdGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAq ZmlsZSkKIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBu b2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9w cml2LT5wbS5ycHM7CiAJaW50IHJldCA9IDA7CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZf cHJpdik7CkBAIC0xMDQzLDcgKzEwNDQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2lu Zm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewogCQl1MzIgcnBt b2RlY3RsLCBmcmVxX3N0czsKIAotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2sp OworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJCXJwbW9kZWN0bCA9 IEk5MTVfUkVBRChHRU42X1JQX0NPTlRST0wpOwogCQlzZXFfcHJpbnRmKG0sICJWaWRlbyBUdXJi byBNb2RlOiAlc1xuIiwKQEAgLTEwNjIsMjEgKzEwNjMsMjEgQEAgc3RhdGljIGludCBpOTE1X2Zy ZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQkJICAgaW50 ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIChmcmVxX3N0cyA+PiA4KSAmIDB4ZmYpKTsKIAogCQlzZXFf cHJpbnRmKG0sICJjdXJyZW50IEdQVSBmcmVxOiAlZCBNSHpcbiIsCi0JCQkgICBpbnRlbF9ncHVf ZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkpOworCQkJICAgaW50ZWxfZ3B1 X2ZyZXEoZGV2X3ByaXYsIHJwcy0+Y3VyX2ZyZXEpKTsKIAogCQlzZXFfcHJpbnRmKG0sICJtYXgg R1BVIGZyZXE6ICVkIE1IelxuIiwKLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZf cHJpdi0+cnBzLm1heF9mcmVxKSk7CisJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBz LT5tYXhfZnJlcSkpOwogCiAJCXNlcV9wcmludGYobSwgIm1pbiBHUFUgZnJlcTogJWQgTUh6XG4i LAotCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWluX2ZyZXEp KTsKKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1pbl9mcmVxKSk7CiAKIAkJ c2VxX3ByaW50ZihtLCAiaWRsZSBHUFUgZnJlcTogJWQgTUh6XG4iLAotCQkJICAgaW50ZWxfZ3B1 X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKSk7CisJCQkgICBpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwgcnBzLT5pZGxlX2ZyZXEpKTsKIAogCQlzZXFfcHJpbnRmKG0sCiAJ CQkgICAiZWZmaWNpZW50IChSUGUpIGZyZXF1ZW5jeTogJWQgTUh6XG4iLAotCQkJICAgaW50ZWxf Z3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEpKTsKLQkJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCQkJICAgaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cG0ucGN1X2xvY2spOwogCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7 CiAJCXUzMiBycF9zdGF0ZV9saW1pdHM7CiAJCXUzMiBndF9wZXJmX3N0YXR1czsKQEAgLTExNTYs NyArMTE1Nyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJc2VxX3ByaW50ZihtLCAiUE0gSUVSPTB4JTA4eCBJTVI9 MHglMDh4IElTUj0weCUwOHggSUlSPTB4JTA4eCwgTUFTSz0weCUwOHhcbiIsCiAJCQkgICBwbV9p ZXIsIHBtX2ltciwgcG1faXNyLCBwbV9paXIsIHBtX21hc2spOwogCQlzZXFfcHJpbnRmKG0sICJw bV9pbnRybXNrX21iejogMHglMDh4XG4iLAotCQkJICAgZGV2X3ByaXYtPnJwcy5wbV9pbnRybXNr X21ieik7CisJCQkgICBycHMtPnBtX2ludHJtc2tfbWJ6KTsKIAkJc2VxX3ByaW50ZihtLCAiR1Rf UEVSRl9TVEFUVVM6IDB4JTA4eFxuIiwgZ3RfcGVyZl9zdGF0dXMpOwogCQlzZXFfcHJpbnRmKG0s ICJSZW5kZXIgcC1zdGF0ZSByYXRpbzogJWRcbiIsCiAJCQkgICAoZ3RfcGVyZl9zdGF0dXMgJiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5ID8gMHgxZmYwMCA6IDB4ZmYwMCkpID4+IDgpOwpAQCAt MTE3Niw4ICsxMTc3LDcgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQkJICAgcnBjdXJ1cCwgR1RfUE1fSU5URVJWQUxf VE9fVVMoZGV2X3ByaXYsIHJwY3VydXApKTsKIAkJc2VxX3ByaW50ZihtLCAiUlAgUFJFViBVUDog JWQgKCVkdXMpXG4iLAogCQkJICAgcnBwcmV2dXAsIEdUX1BNX0lOVEVSVkFMX1RPX1VTKGRldl9w cml2LCBycHByZXZ1cCkpOwotCQlzZXFfcHJpbnRmKG0sICJVcCB0aHJlc2hvbGQ6ICVkJSVcbiIs Ci0JCQkgICBkZXZfcHJpdi0+cnBzLnVwX3RocmVzaG9sZCk7CisJCXNlcV9wcmludGYobSwgIlVw IHRocmVzaG9sZDogJWQlJVxuIiwgcnBzLT51cF90aHJlc2hvbGQpOwogCiAJCXNlcV9wcmludGYo bSwgIlJQIENVUiBET1dOIEVJOiAlZCAoJWR1cylcbiIsCiAJCQkgICBycGRvd25laSwgR1RfUE1f SU5URVJWQUxfVE9fVVMoZGV2X3ByaXYsIHJwZG93bmVpKSk7CkBAIC0xMTg1LDggKzExODUsNyBA QCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCiAJCQkgICBycGN1cmRvd24sIEdUX1BNX0lOVEVSVkFMX1RPX1VTKGRldl9wcml2 LCBycGN1cmRvd24pKTsKIAkJc2VxX3ByaW50ZihtLCAiUlAgUFJFViBET1dOOiAlZCAoJWR1cylc biIsCiAJCQkgICBycHByZXZkb3duLCBHVF9QTV9JTlRFUlZBTF9UT19VUyhkZXZfcHJpdiwgcnBw cmV2ZG93bikpOwotCQlzZXFfcHJpbnRmKG0sICJEb3duIHRocmVzaG9sZDogJWQlJVxuIiwKLQkJ CSAgIGRldl9wcml2LT5ycHMuZG93bl90aHJlc2hvbGQpOworCQlzZXFfcHJpbnRmKG0sICJEb3du IHRocmVzaG9sZDogJWQlJVxuIiwgcnBzLT5kb3duX3RocmVzaG9sZCk7CiAKIAkJbWF4X2ZyZXEg PSAoSVNfR0VOOV9MUChkZXZfcHJpdikgPyBycF9zdGF0ZV9jYXAgPj4gMCA6CiAJCQkgICAgcnBf c3RhdGVfY2FwID4+IDE2KSAmIDB4ZmY7CkBAIC0xMjA4LDIyICsxMjA3LDIyIEBAIHN0YXRpYyBp bnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK IAkJc2VxX3ByaW50ZihtLCAiTWF4IG5vbi1vdmVyY2xvY2tlZCAoUlAwKSBmcmVxdWVuY3k6ICVk TUh6XG4iLAogCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIG1heF9mcmVxKSk7CiAJCXNl cV9wcmludGYobSwgIk1heCBvdmVyY2xvY2tlZCBmcmVxdWVuY3k6ICVkTUh6XG4iLAotCQkJICAg aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWF4X2ZyZXEpKTsKKwkJCSAg IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1heF9mcmVxKSk7CiAKIAkJc2VxX3ByaW50 ZihtLCAiQ3VycmVudCBmcmVxOiAlZCBNSHpcbiIsCi0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZf cHJpdiwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkpOworCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2 X3ByaXYsIHJwcy0+Y3VyX2ZyZXEpKTsKIAkJc2VxX3ByaW50ZihtLCAiQWN0dWFsIGZyZXE6ICVk IE1IelxuIiwgY2FnZik7CiAJCXNlcV9wcmludGYobSwgIklkbGUgZnJlcTogJWQgTUh6XG4iLAot CQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKSk7 CisJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5pZGxlX2ZyZXEpKTsKIAkJc2Vx X3ByaW50ZihtLCAiTWluIGZyZXE6ICVkIE1IelxuIiwKLQkJCSAgIGludGVsX2dwdV9mcmVxKGRl dl9wcml2LCBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxKSk7CisJCQkgICBpbnRlbF9ncHVfZnJlcShk ZXZfcHJpdiwgcnBzLT5taW5fZnJlcSkpOwogCQlzZXFfcHJpbnRmKG0sICJCb29zdCBmcmVxOiAl ZCBNSHpcbiIsCi0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5i b29zdF9mcmVxKSk7CisJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5ib29zdF9m cmVxKSk7CiAJCXNlcV9wcmludGYobSwgIk1heCBmcmVxOiAlZCBNSHpcbiIsCi0JCQkgICBpbnRl bF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSkpOworCQkJICAgaW50 ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+bWF4X2ZyZXEpKTsKIAkJc2VxX3ByaW50ZihtLAog CQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKLQkJCSAgIGludGVs X2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSk7CisJCQkg ICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5lZmZpY2llbnRfZnJlcSkpOwogCX0gZWxz ZSB7CiAJCXNlcV9wdXRzKG0sICJubyBQLXN0YXRlIGluZm8gYXZhaWxhYmxlXG4iKTsKIAl9CkBA IC0xNTExLDkgKzE1MTAsOSBAQCBzdGF0aWMgaW50IGdlbjZfZHJwY19pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSkKIAkJZ2VuOV9wb3dlcmdhdGVfc3RhdHVzID0gSTkxNV9SRUFEKEdFTjlfUFdSR1Rf RE9NQUlOX1NUQVRVUyk7CiAJfQogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2Nr KTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCXNhbmR5YnJpZGdlX3Bj b2RlX3JlYWQoZGV2X3ByaXYsIEdFTjZfUENPREVfUkVBRF9SQzZWSURTLCAmcmM2dmlkcyk7Ci0J bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCXNlcV9wcmludGYobSwgIlJDMWUgRW5hYmxlZDogJXNc biIsCiAJCSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNfQ1RMX1JDMWVfRU5BQkxFKSk7CkBAIC0x Nzg4LDE5ICsxNzg3LDE5IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX2ZyZXFfdGFibGUoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZf cHJpdik7CiAKLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5ycHMu aHdfbG9jayk7CisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cG0u cGN1X2xvY2spOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCiAJaWYgKElTX0dFTjlfQkMoZGV2 X3ByaXYpIHx8IElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7CiAJCS8qIENvbnZlcnQgR1QgZnJl cXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCiAJCW1pbl9ncHVfZnJlcSA9Ci0JCQlkZXZfcHJpdi0+ cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCAvIEdFTjlfRlJFUV9TQ0FMRVI7CisJCQlkZXZfcHJpdi0+ cG0ucnBzLm1pbl9mcmVxX3NvZnRsaW1pdCAvIEdFTjlfRlJFUV9TQ0FMRVI7CiAJCW1heF9ncHVf ZnJlcSA9Ci0JCQlkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCAvIEdFTjlfRlJFUV9T Q0FMRVI7CisJCQlkZXZfcHJpdi0+cG0ucnBzLm1heF9mcmVxX3NvZnRsaW1pdCAvIEdFTjlfRlJF UV9TQ0FMRVI7CiAJfSBlbHNlIHsKLQkJbWluX2dwdV9mcmVxID0gZGV2X3ByaXYtPnJwcy5taW5f ZnJlcV9zb2Z0bGltaXQ7Ci0JCW1heF9ncHVfZnJlcSA9IGRldl9wcml2LT5ycHMubWF4X2ZyZXFf c29mdGxpbWl0OworCQltaW5fZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+cG0ucnBzLm1pbl9mcmVxX3Nv ZnRsaW1pdDsKKwkJbWF4X2dwdV9mcmVxID0gZGV2X3ByaXYtPnBtLnJwcy5tYXhfZnJlcV9zb2Z0 bGltaXQ7CiAJfQogCiAJc2VxX3B1dHMobSwgIkdQVSBmcmVxIChNSHopXHRFZmZlY3RpdmUgQ1BV IGZyZXEgKE1IeilcdEVmZmVjdGl2ZSBSaW5nIGZyZXEgKE1IeilcbiIpOwpAQCAtMTgxOSw3ICsx ODE4LDcgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKIAkJCSAgICgoaWFfZnJlcSA+PiA4KSAmIDB4ZmYpICogMTAwKTsK IAl9CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiBvdXQ6CiAJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOwpAQCAtMjI1MywyNSArMjI1MiwyNiBAQCBzdGF0aWMgaW50IGk5MTVfcnBz X2Jvb3N0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CisJc3RydWN0IGludGVsX3Jw cyAqcnBzID0gJmRldl9wcml2LT5wbS5ycHM7CiAJc3RydWN0IGRybV9maWxlICpmaWxlOwogCi0J c2VxX3ByaW50ZihtLCAiUlBTIGVuYWJsZWQ/ICVkXG4iLCBkZXZfcHJpdi0+cnBzLmVuYWJsZWQp OworCXNlcV9wcmludGYobSwgIlJQUyBlbmFibGVkPyAlZFxuIiwgcnBzLT5lbmFibGVkKTsKIAlz ZXFfcHJpbnRmKG0sICJHUFUgYnVzeT8gJXMgWyVkIHJlcXVlc3RzXVxuIiwKIAkJICAgeWVzbm8o ZGV2X3ByaXYtPmd0LmF3YWtlKSwgZGV2X3ByaXYtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7CiAJc2Vx X3ByaW50ZihtLCAiQ1BVIHdhaXRpbmc/ICVkXG4iLCBjb3VudF9pcnFfd2FpdGVycyhkZXZfcHJp dikpOwogCXNlcV9wcmludGYobSwgIkJvb3N0cyBvdXRzdGFuZGluZz8gJWRcbiIsCi0JCSAgIGF0 b21pY19yZWFkKCZkZXZfcHJpdi0+cnBzLm51bV93YWl0ZXJzKSk7CisJCSAgIGF0b21pY19yZWFk KCZycHMtPm51bV93YWl0ZXJzKSk7CiAJc2VxX3ByaW50ZihtLCAiRnJlcXVlbmN5IHJlcXVlc3Rl ZCAlZFxuIiwKLQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuY3Vy X2ZyZXEpKTsKKwkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+Y3VyX2ZyZXEpKTsK IAlzZXFfcHJpbnRmKG0sICIgIG1pbiBoYXJkOiVkLCBzb2Z0OiVkOyBtYXggc29mdDolZCwgaGFy ZDolZFxuIiwKLQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWlu X2ZyZXEpLAotCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5taW5f ZnJlcV9zb2Z0bGltaXQpLAotCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYt PnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQpLAotCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwg ZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSkpOworCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwg cnBzLT5taW5fZnJlcSksCisJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1pbl9m cmVxX3NvZnRsaW1pdCksCisJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1heF9m cmVxX3NvZnRsaW1pdCksCisJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1heF9m cmVxKSk7CiAJc2VxX3ByaW50ZihtLCAiICBpZGxlOiVkLCBlZmZpY2llbnQ6JWQsIGJvb3N0OiVk XG4iLAotCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5pZGxlX2Zy ZXEpLAotCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5lZmZpY2ll bnRfZnJlcSksCi0JCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmJv b3N0X2ZyZXEpKTsKKwkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+aWRsZV9mcmVx KSwKKwkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpLAor CQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5ib29zdF9mcmVxKSk7CiAKIAltdXRl eF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVy c2UoZmlsZSwgJmRldi0+ZmlsZWxpc3QsIGxoZWFkKSB7CkBAIC0yMjg3LDExICsyMjg3LDExIEBA IHN0YXRpYyBpbnQgaTkxNV9ycHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KmRhdGEpCiAJCXJjdV9yZWFkX3VubG9jaygpOwogCX0KIAlzZXFfcHJpbnRmKG0sICJLZXJuZWwg KGFub255bW91cykgYm9vc3RzOiAlZFxuIiwKLQkJICAgYXRvbWljX3JlYWQoJmRldl9wcml2LT5y cHMuYm9vc3RzKSk7CisJCSAgIGF0b21pY19yZWFkKCZycHMtPmJvb3N0cykpOwogCW11dGV4X3Vu bG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA2ICYmCi0JICAgIGRldl9wcml2LT5ycHMuZW5hYmxlZCAmJgorCSAgICBycHMtPmVuYWJsZWQg JiYKIAkgICAgZGV2X3ByaXYtPmd0LmFjdGl2ZV9yZXF1ZXN0cykgewogCQl1MzIgcnB1cCwgcnB1 cGVpOwogCQl1MzIgcnBkb3duLCBycGRvd25laTsKQEAgLTIzMDQsMTMgKzIzMDQsMTMgQEAgc3Rh dGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKIAkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp OwogCiAJCXNlcV9wcmludGYobSwgIlxuUlBTIEF1dG90dW5pbmcgKGN1cnJlbnQgXCIlc1wiIHdp bmRvdyk6XG4iLAotCQkJICAgcnBzX3Bvd2VyX3RvX3N0cihkZXZfcHJpdi0+cnBzLnBvd2VyKSk7 CisJCQkgICBycHNfcG93ZXJfdG9fc3RyKHJwcy0+cG93ZXIpKTsKIAkJc2VxX3ByaW50ZihtLCAi ICBBdmcuIHVwOiAlZCUlIFthYm92ZSB0aHJlc2hvbGQ/ICVkJSVdXG4iLAogCQkJICAgcnB1cCAm JiBycHVwZWkgPyAxMDAgKiBycHVwIC8gcnB1cGVpIDogMCwKLQkJCSAgIGRldl9wcml2LT5ycHMu dXBfdGhyZXNob2xkKTsKKwkJCSAgIHJwcy0+dXBfdGhyZXNob2xkKTsKIAkJc2VxX3ByaW50Ziht LCAiICBBdmcuIGRvd246ICVkJSUgW2JlbG93IHRocmVzaG9sZD8gJWQlJV1cbiIsCiAJCQkgICBy cGRvd24gJiYgcnBkb3duZWkgPyAxMDAgKiBycGRvd24gLyBycGRvd25laSA6IDAsCi0JCQkgICBk ZXZfcHJpdi0+cnBzLmRvd25fdGhyZXNob2xkKTsKKwkJCSAgIHJwcy0+ZG93bl90aHJlc2hvbGQp OwogCX0gZWxzZSB7CiAJCXNlcV9wdXRzKG0sICJcblJQUyBBdXRvdHVuaW5nIGluYWN0aXZlXG4i KTsKIAl9CkBAIC00MzkxLDcgKzQzOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5j eV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCiAJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCSp2YWwgPSBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQp OworCSp2YWwgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnBtLnJwcy5tYXhf ZnJlcV9zb2Z0bGltaXQpOwogCXJldHVybiAwOwogfQogCkBAIC00Mzk5LDYgKzQzOTksNyBAQCBz dGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29u c3QgY2hhciBfX3VzZXIgKnVidWYsCiBpOTE1X21heF9mcmVxX3NldCh2b2lkICpkYXRhLCB1NjQg dmFsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7CisJc3Ry dWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5wbS5ycHM7CiAJdTMyIGh3X21heCwgaHdf bWluOwogCWludCByZXQ7CiAKQEAgLTQ0MDcsNyArNDQwOCw3IEBAIHN0YXRpYyBzc2l6ZV90IGN1 cl93bV9sYXRlbmN5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAq dWJ1ZiwKIAogCURSTV9ERUJVR19EUklWRVIoIk1hbnVhbGx5IHNldHRpbmcgbWF4IGZyZXEgdG8g JWxsdVxuIiwgdmFsKTsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3By aXYtPnJwcy5od19sb2NrKTsKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9w cml2LT5wbS5wY3VfbG9jayk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNDQxNiwy MCArNDQxNywyMCBAQCBzdGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCiAJICovCiAJdmFsID0gaW50ZWxf ZnJlcV9vcGNvZGUoZGV2X3ByaXYsIHZhbCk7CiAKLQlod19tYXggPSBkZXZfcHJpdi0+cnBzLm1h eF9mcmVxOwotCWh3X21pbiA9IGRldl9wcml2LT5ycHMubWluX2ZyZXE7CisJaHdfbWF4ID0gcnBz LT5tYXhfZnJlcTsKKwlod19taW4gPSBycHMtPm1pbl9mcmVxOwogCi0JaWYgKHZhbCA8IGh3X21p biB8fCB2YWwgPiBod19tYXggfHwgdmFsIDwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGlt aXQpIHsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCWlmICh2YWwg PCBod19taW4gfHwgdmFsID4gaHdfbWF4IHx8IHZhbCA8IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0 KSB7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAkJcmV0dXJuIC1F SU5WQUw7CiAJfQogCi0JZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQgPSB2YWw7CisJ cnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQgPSB2YWw7CiAKIAlpZiAoaW50ZWxfc2V0X3JwcyhkZXZf cHJpdiwgdmFsKSkKIAkJRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHVwZGF0ZSBSUFMgdG8g bmV3IHNvZnRsaW1pdFxuIik7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC00NDQ2LDcgKzQ0NDcsNyBAQCBzdGF0aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93 cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCiAJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA2KQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCSp2YWwgPSBpbnRl bF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQpOwor CSp2YWwgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnBtLnJwcy5taW5fZnJl cV9zb2Z0bGltaXQpOwogCXJldHVybiAwOwogfQogCkBAIC00NDYyLDcgKzQ0NjMsNyBAQCBzdGF0 aWMgc3NpemVfdCBjdXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qg Y2hhciBfX3VzZXIgKnVidWYsCiAKIAlEUk1fREVCVUdfRFJJVkVSKCJNYW51YWxseSBzZXR0aW5n IG1pbiBmcmVxIHRvICVsbHVcbiIsIHZhbCk7CiAKLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1 cHRpYmxlKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKQEAgLTQ0NzEsMjEgKzQ0NzIsMjEgQEAgc3RhdGljIHNzaXplX3QgY3VyX3dtX2xhdGVuY3lf d3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAogCSAqLwog CXZhbCA9IGludGVsX2ZyZXFfb3Bjb2RlKGRldl9wcml2LCB2YWwpOwogCi0JaHdfbWF4ID0gZGV2 X3ByaXYtPnJwcy5tYXhfZnJlcTsKLQlod19taW4gPSBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxOwor CWh3X21heCA9IGRldl9wcml2LT5wbS5ycHMubWF4X2ZyZXE7CisJaHdfbWluID0gZGV2X3ByaXYt PnBtLnJwcy5taW5fZnJlcTsKIAogCWlmICh2YWwgPCBod19taW4gfHwKLQkgICAgdmFsID4gaHdf bWF4IHx8IHZhbCA+IGRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KSB7Ci0JCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkgICAgdmFsID4gaHdfbWF4IHx8IHZh bCA+IGRldl9wcml2LT5wbS5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KSB7CisJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JZGV2 X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7CisJZGV2X3ByaXYtPnBtLnJwcy5t aW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7CiAKIAlpZiAoaW50ZWxfc2V0X3JwcyhkZXZfcHJpdiwg dmFsKSkKIAkJRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHVwZGF0ZSBSUFMgdG8gbmV3IHNv ZnRsaW1pdFxuIik7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJcmV0dXJuIDA7CiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBkYjA1YTZkLi4yMjcxYWIyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKQEAgLTI0ODEsNyArMjQ4MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGlt ZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCWludCByZXQ7CiAKLQlpZiAoV0FSTl9PTl9PTkNF KCEoZGV2X3ByaXYtPnJwcy5lbmFibGVkICYmIGludGVsX2VuYWJsZV9yYzYoKSkpKQorCWlmIChX QVJOX09OX09OQ0UoIShkZXZfcHJpdi0+cG0ucnBzLmVuYWJsZWQgJiYgaW50ZWxfZW5hYmxlX3Jj NigpKSkpCiAJCXJldHVybiAtRU5PREVWOwogCiAJaWYgKFdBUk5fT05fT05DRSghSEFTX1JVTlRJ TUVfUE0oZGV2X3ByaXYpKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDhhZmI1MjguLjRk ODFiNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTMxMSw3ICsxMzExLDcgQEAgc3Ry dWN0IGludGVsX3Jwc19laSB7CiAJdTMyIG1lZGlhX2MwOwogfTsKIAotc3RydWN0IGludGVsX2dl bjZfcG93ZXJfbWdtdCB7CitzdHJ1Y3QgaW50ZWxfcnBzIHsKIAkvKgogCSAqIHdvcmssIGludGVy cnVwdHNfZW5hYmxlZCBhbmQgcG1faWlyIGFyZSBwcm90ZWN0ZWQgYnkKIAkgKiBkZXZfcHJpdi0+ aXJxX2xvY2sKQEAgLTEzNTIsMTIgKzEzNTIsMTYgQEAgc3RydWN0IGludGVsX2dlbjZfcG93ZXJf bWdtdCB7CiAJZW51bSB7IExPV19QT1dFUiwgQkVUV0VFTiwgSElHSF9QT1dFUiB9IHBvd2VyOwog CiAJYm9vbCBlbmFibGVkOwotCXN0cnVjdCBkZWxheWVkX3dvcmsgYXV0b2VuYWJsZV93b3JrOwog CWF0b21pY190IG51bV93YWl0ZXJzOwogCWF0b21pY190IGJvb3N0czsKIAogCS8qIG1hbnVhbCB3 YSByZXNpZGVuY3kgY2FsY3VsYXRpb25zICovCiAJc3RydWN0IGludGVsX3Jwc19laSBlaTsKK307 CisKK3N0cnVjdCBpbnRlbF9nZW42X3Bvd2VyX21nbXQgeworCXN0cnVjdCBpbnRlbF9ycHMgcnBz OworCXN0cnVjdCBkZWxheWVkX3dvcmsgYXV0b2VuYWJsZV93b3JrOwogCiAJLyoKIAkgKiBQcm90 ZWN0cyBSUFMvUkM2IHJlZ2lzdGVyIGFjY2VzcyBhbmQgUENVIGNvbW11bmljYXRpb24uCkBAIC0x MzY1LDcgKzEzNjksNyBAQCBzdHJ1Y3QgaW50ZWxfZ2VuNl9wb3dlcl9tZ210IHsKIAkgKiB0aGlz IGxvY2sgbWF5IGJlIGhlbGQgZm9yIGxvbmcgcGVyaW9kcyBvZiB0aW1lIHdoZW4KIAkgKiB0YWxr aW5nIHRvIGh3IC0gc28gb25seSB0YWtlIGl0IHdoZW4gdGFsa2luZyB0byBodyEKIAkgKi8KLQlz dHJ1Y3QgbXV0ZXggaHdfbG9jazsKKwlzdHJ1Y3QgbXV0ZXggcGN1X2xvY2s7CiB9OwogCiAvKiBk ZWZpbmVkIGludGVsX3BtLmMgKi8KQEAgLTI0MDgsNyArMjQxMiw3IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIHsKIAl1MzIgZWRyYW1fY2FwOwogCiAJLyogZ2VuNisgcnBzIHN0YXRlICovCi0J c3RydWN0IGludGVsX2dlbjZfcG93ZXJfbWdtdCBycHM7CisJc3RydWN0IGludGVsX2dlbjZfcG93 ZXJfbWdtdCBwbTsKIAogCS8qIGlsay1vbmx5IGlwcy9ycHMgc3RhdGUuIEV2ZXJ5dGhpbmcgaW4g aGVyZSBpcyBwcm90ZWN0ZWQgYnkgdGhlIGdsb2JhbAogCSAqIG1jaGRldl9sb2NrIGluIGludGVs X3BtLmMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwppbmRleCA0ZWIx YTc2Li5hMDM1MmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBA IC00MTYsNyArNDE2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCiAJc3Bpbl9sb2NrX2lycSgmcmVx dWVzdC0+bG9jayk7CiAJaWYgKHJlcXVlc3QtPndhaXRib29zdCkKLQkJYXRvbWljX2RlYygmcmVx dWVzdC0+aTkxNS0+cnBzLm51bV93YWl0ZXJzKTsKKwkJYXRvbWljX2RlYygmcmVxdWVzdC0+aTkx NS0+cG0ucnBzLm51bV93YWl0ZXJzKTsKIAlkbWFfZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcmVxdWVz dC0+ZmVuY2UpOwogCXNwaW5fdW5sb2NrX2lycSgmcmVxdWVzdC0+bG9jayk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCAwNGYxMjgxLi5jZTk5OTRj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xMTA1 LDggKzExMDUsOCBAQCBzdGF0aWMgdm9pZCBndWNfaW50ZXJydXB0c19jYXB0dXJlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKiBIZXJlIHdlIENMRUFSIFJFRElSRUNUX1RP X0dVQyBiaXQgaW4gcG1faW50cm1za19tYnosIHdoaWNoIHdpbGwKIAkgKiByZXN1bHQgaW4gdGhl IHJlZ2lzdGVyIGJpdCBiZWluZyBsZWZ0IFNFVCEKIAkgKi8KLQlkZXZfcHJpdi0+cnBzLnBtX2lu dHJtc2tfbWJ6IHw9IEFSQVRfRVhQSVJFRF9JTlRSTVNLOwotCWRldl9wcml2LT5ycHMucG1faW50 cm1za19tYnogJj0gfkdFTjhfUE1JTlRSX0RJU0FCTEVfUkVESVJFQ1RfVE9fR1VDOworCWRldl9w cml2LT5wbS5ycHMucG1faW50cm1za19tYnogfD0gQVJBVF9FWFBJUkVEX0lOVFJNU0s7CisJZGV2 X3ByaXYtPnBtLnJwcy5wbV9pbnRybXNrX21ieiAmPSB+R0VOOF9QTUlOVFJfRElTQUJMRV9SRURJ UkVDVF9UT19HVUM7CiB9CiAKIHN0YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTEyOSw4ICsxMTI5LDggQEAgc3Rh dGljIHZvaWQgZ3VjX2ludGVycnVwdHNfcmVsZWFzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJSTkxNV9XUklURShHVUNfVkNTMl9WQ1MxX0lFUiwgMCk7CiAJSTkxNV9XUklU RShHVUNfV0RfVkVDU19JRVIsIDApOwogCi0JZGV2X3ByaXYtPnJwcy5wbV9pbnRybXNrX21ieiB8 PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNUX1RPX0dVQzsKLQlkZXZfcHJpdi0+cnBzLnBt X2ludHJtc2tfbWJ6ICY9IH5BUkFUX0VYUElSRURfSU5UUk1TSzsKKwlkZXZfcHJpdi0+cG0ucnBz LnBtX2ludHJtc2tfbWJ6IHw9IEdFTjhfUE1JTlRSX0RJU0FCTEVfUkVESVJFQ1RfVE9fR1VDOwor CWRldl9wcml2LT5wbS5ycHMucG1faW50cm1za19tYnogJj0gfkFSQVRfRVhQSVJFRF9JTlRSTVNL OwogfQogCiBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggOWNiYzY4Zi4uY2Vm Mzc5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC00MDQsMTkgKzQwNCwxOSBAQCB2b2lk IGdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewogCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAJZ2VuNl9yZXNl dF9wbV9paXIoZGV2X3ByaXYsIGRldl9wcml2LT5wbV9ycHNfZXZlbnRzKTsKLQlkZXZfcHJpdi0+ cnBzLnBtX2lpciA9IDA7CisJZGV2X3ByaXYtPnBtLnJwcy5wbV9paXIgPSAwOwogCXNwaW5fdW5s b2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIH0KIAogdm9pZCBnZW42X2VuYWJsZV9ycHNf aW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaWYgKFJF QURfT05DRShkZXZfcHJpdi0+cnBzLmludGVycnVwdHNfZW5hYmxlZCkpCisJaWYgKFJFQURfT05D RShkZXZfcHJpdi0+cG0ucnBzLmludGVycnVwdHNfZW5hYmxlZCkpCiAJCXJldHVybjsKIAogCXNw aW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Ci0JV0FSTl9PTl9PTkNFKGRldl9wcml2 LT5ycHMucG1faWlyKTsKKwlXQVJOX09OX09OQ0UoZGV2X3ByaXYtPnBtLnJwcy5wbV9paXIpOwog CVdBUk5fT05fT05DRShJOTE1X1JFQUQoZ2VuNl9wbV9paXIoZGV2X3ByaXYpKSAmIGRldl9wcml2 LT5wbV9ycHNfZXZlbnRzKTsKLQlkZXZfcHJpdi0+cnBzLmludGVycnVwdHNfZW5hYmxlZCA9IHRy dWU7CisJZGV2X3ByaXYtPnBtLnJwcy5pbnRlcnJ1cHRzX2VuYWJsZWQgPSB0cnVlOwogCWdlbjZf ZW5hYmxlX3BtX2lycShkZXZfcHJpdiwgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpOwogCiAJc3Bp bl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwpAQCAtNDI0LDExICs0MjQsMTEgQEAg dm9pZCBnZW42X2VuYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAKIHZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlpZiAoIVJFQURfT05DRShkZXZfcHJpdi0+cnBz LmludGVycnVwdHNfZW5hYmxlZCkpCisJaWYgKCFSRUFEX09OQ0UoZGV2X3ByaXYtPnBtLnJwcy5p bnRlcnJ1cHRzX2VuYWJsZWQpKQogCQlyZXR1cm47CiAKIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJp di0+aXJxX2xvY2spOwotCWRldl9wcml2LT5ycHMuaW50ZXJydXB0c19lbmFibGVkID0gZmFsc2U7 CisJZGV2X3ByaXYtPnBtLnJwcy5pbnRlcnJ1cHRzX2VuYWJsZWQgPSBmYWxzZTsKIAogCUk5MTVf V1JJVEUoR0VONl9QTUlOVFJNU0ssIGdlbjZfc2FuaXRpemVfcnBzX3BtX21hc2soZGV2X3ByaXYs IH4wdSkpOwogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBnZW42X2Rpc2FibGVfcnBzX2ludGVy cnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIHdlIHdpbGwgcmVz ZXQgdGhlIEdQVSB0byBtaW5pbXVtIGZyZXF1ZW5jaWVzLCBzbyB0aGUgY3VycmVudAogCSAqIHN0 YXRlIG9mIHRoZSB3b3JrZXIgY2FuIGJlIGRpc2NhcmRlZC4KIAkgKi8KLQljYW5jZWxfd29ya19z eW5jKCZkZXZfcHJpdi0+cnBzLndvcmspOworCWNhbmNlbF93b3JrX3N5bmMoJmRldl9wcml2LT5w bS5ycHMud29yayk7CiAJZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7CiB9CiAK QEAgLTExMTksMTIgKzExMTksMTIgQEAgc3RhdGljIHZvaWQgdmx2X2MwX3JlYWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiB2b2lkIGdlbjZfcnBzX3Jlc2V0X2VpKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQltZW1zZXQoJmRldl9wcml2LT5ycHMu ZWksIDAsIHNpemVvZihkZXZfcHJpdi0+cnBzLmVpKSk7CisJbWVtc2V0KCZkZXZfcHJpdi0+cG0u cnBzLmVpLCAwLCBzaXplb2YoZGV2X3ByaXYtPnBtLnJwcy5laSkpOwogfQogCiBzdGF0aWMgdTMy IHZsdl93YV9jMF9laShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwbV9p aXIpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX3Jwc19laSAqcHJldiA9ICZkZXZfcHJpdi0+cnBz LmVpOworCWNvbnN0IHN0cnVjdCBpbnRlbF9ycHNfZWkgKnByZXYgPSAmZGV2X3ByaXYtPnBtLnJw cy5laTsKIAlzdHJ1Y3QgaW50ZWxfcnBzX2VpIG5vdzsKIAl1MzIgZXZlbnRzID0gMDsKIApAQCAt MTE1MSwyOCArMTE1MSwyOSBAQCBzdGF0aWMgdTMyIHZsdl93YV9jMF9laShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwbV9paXIpCiAJCWMwID0gbWF4KHJlbmRlciwgbWVk aWEpOwogCQljMCAqPSAxMDAwICogMTAwIDw8IDg7IC8qIHRvIHVzZWNzIGFuZCBzY2FsZSB0byB0 aHJlc2hvbGQlICovCiAKLQkJaWYgKGMwID4gdGltZSAqIGRldl9wcml2LT5ycHMudXBfdGhyZXNo b2xkKQorCQlpZiAoYzAgPiB0aW1lICogZGV2X3ByaXYtPnBtLnJwcy51cF90aHJlc2hvbGQpCiAJ CQlldmVudHMgPSBHRU42X1BNX1JQX1VQX1RIUkVTSE9MRDsKLQkJZWxzZSBpZiAoYzAgPCB0aW1l ICogZGV2X3ByaXYtPnJwcy5kb3duX3RocmVzaG9sZCkKKwkJZWxzZSBpZiAoYzAgPCB0aW1lICog ZGV2X3ByaXYtPnBtLnJwcy5kb3duX3RocmVzaG9sZCkKIAkJCWV2ZW50cyA9IEdFTjZfUE1fUlBf RE9XTl9USFJFU0hPTEQ7CiAJfQogCi0JZGV2X3ByaXYtPnJwcy5laSA9IG5vdzsKKwlkZXZfcHJp di0+cG0ucnBzLmVpID0gbm93OwogCXJldHVybiBldmVudHM7CiB9CiAKIHN0YXRpYyB2b2lkIGdl bjZfcG1fcnBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSwgcnBzLndvcmspOworCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUsIHBtLnJwcy53b3JrKTsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAm ZGV2X3ByaXYtPnBtLnJwczsKIAlib29sIGNsaWVudF9ib29zdCA9IGZhbHNlOwogCWludCBuZXdf ZGVsYXksIGFkaiwgbWluLCBtYXg7CiAJdTMyIHBtX2lpciA9IDA7CiAKIAlzcGluX2xvY2tfaXJx KCZkZXZfcHJpdi0+aXJxX2xvY2spOwotCWlmIChkZXZfcHJpdi0+cnBzLmludGVycnVwdHNfZW5h YmxlZCkgewotCQlwbV9paXIgPSBmZXRjaF9hbmRfemVybygmZGV2X3ByaXYtPnJwcy5wbV9paXIp OwotCQljbGllbnRfYm9vc3QgPSBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPnJwcy5udW1fd2FpdGVy cyk7CisJaWYgKHJwcy0+aW50ZXJydXB0c19lbmFibGVkKSB7CisJCXBtX2lpciA9IGZldGNoX2Fu ZF96ZXJvKCZycHMtPnBtX2lpcik7CisJCWNsaWVudF9ib29zdCA9IGF0b21pY19yZWFkKCZycHMt Pm51bV93YWl0ZXJzKTsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2sp OwogCkBAIC0xMTgxLDE4ICsxMTgyLDE4IEBAIHN0YXRpYyB2b2lkIGdlbjZfcG1fcnBzX3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWlmICgocG1faWlyICYgZGV2X3ByaXYtPnBtX3Jw c19ldmVudHMpID09IDAgJiYgIWNsaWVudF9ib29zdCkKIAkJZ290byBvdXQ7CiAKLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5w Y3VfbG9jayk7CiAKIAlwbV9paXIgfD0gdmx2X3dhX2MwX2VpKGRldl9wcml2LCBwbV9paXIpOwog Ci0JYWRqID0gZGV2X3ByaXYtPnJwcy5sYXN0X2FkajsKLQluZXdfZGVsYXkgPSBkZXZfcHJpdi0+ cnBzLmN1cl9mcmVxOwotCW1pbiA9IGRldl9wcml2LT5ycHMubWluX2ZyZXFfc29mdGxpbWl0Owot CW1heCA9IGRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0OworCWFkaiA9IHJwcy0+bGFz dF9hZGo7CisJbmV3X2RlbGF5ID0gcnBzLT5jdXJfZnJlcTsKKwltaW4gPSBycHMtPm1pbl9mcmVx X3NvZnRsaW1pdDsKKwltYXggPSBycHMtPm1heF9mcmVxX3NvZnRsaW1pdDsKIAlpZiAoY2xpZW50 X2Jvb3N0KQotCQltYXggPSBkZXZfcHJpdi0+cnBzLm1heF9mcmVxOwotCWlmIChjbGllbnRfYm9v c3QgJiYgbmV3X2RlbGF5IDwgZGV2X3ByaXYtPnJwcy5ib29zdF9mcmVxKSB7Ci0JCW5ld19kZWxh eSA9IGRldl9wcml2LT5ycHMuYm9vc3RfZnJlcTsKKwkJbWF4ID0gcnBzLT5tYXhfZnJlcTsKKwlp ZiAoY2xpZW50X2Jvb3N0ICYmIG5ld19kZWxheSA8IHJwcy0+Ym9vc3RfZnJlcSkgeworCQluZXdf ZGVsYXkgPSBycHMtPmJvb3N0X2ZyZXE7CiAJCWFkaiA9IDA7CiAJfSBlbHNlIGlmIChwbV9paXIg JiBHRU42X1BNX1JQX1VQX1RIUkVTSE9MRCkgewogCQlpZiAoYWRqID4gMCkKQEAgLTEyMDAsMTUg KzEyMDEsMTUgQEAgc3RhdGljIHZvaWQgZ2VuNl9wbV9ycHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCiAJCWVsc2UgLyogQ0hWIG5lZWRzIGV2ZW4gZW5jb2RlIHZhbHVlcyAqLwogCQkJ YWRqID0gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgPyAyIDogMTsKIAotCQlpZiAobmV3X2RlbGF5 ID49IGRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KQorCQlpZiAobmV3X2RlbGF5ID49 IHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KQogCQkJYWRqID0gMDsKIAl9IGVsc2UgaWYgKGNsaWVu dF9ib29zdCkgewogCQlhZGogPSAwOwogCX0gZWxzZSBpZiAocG1faWlyICYgR0VONl9QTV9SUF9E T1dOX1RJTUVPVVQpIHsKLQkJaWYgKGRldl9wcml2LT5ycHMuY3VyX2ZyZXEgPiBkZXZfcHJpdi0+ cnBzLmVmZmljaWVudF9mcmVxKQotCQkJbmV3X2RlbGF5ID0gZGV2X3ByaXYtPnJwcy5lZmZpY2ll bnRfZnJlcTsKLQkJZWxzZSBpZiAoZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSA+IGRldl9wcml2LT5y cHMubWluX2ZyZXFfc29mdGxpbWl0KQotCQkJbmV3X2RlbGF5ID0gZGV2X3ByaXYtPnJwcy5taW5f ZnJlcV9zb2Z0bGltaXQ7CisJCWlmIChycHMtPmN1cl9mcmVxID4gcnBzLT5lZmZpY2llbnRfZnJl cSkKKwkJCW5ld19kZWxheSA9IHJwcy0+ZWZmaWNpZW50X2ZyZXE7CisJCWVsc2UgaWYgKHJwcy0+ Y3VyX2ZyZXEgPiBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkKKwkJCW5ld19kZWxheSA9IHJwcy0+ bWluX2ZyZXFfc29mdGxpbWl0OwogCQlhZGogPSAwOwogCX0gZWxzZSBpZiAocG1faWlyICYgR0VO Nl9QTV9SUF9ET1dOX1RIUkVTSE9MRCkgewogCQlpZiAoYWRqIDwgMCkKQEAgLTEyMTYsMTMgKzEy MTcsMTMgQEAgc3RhdGljIHZvaWQgZ2VuNl9wbV9ycHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiAJCWVsc2UgLyogQ0hWIG5lZWRzIGV2ZW4gZW5jb2RlIHZhbHVlcyAqLwogCQkJYWRq ID0gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgPyAtMiA6IC0xOwogCi0JCWlmIChuZXdfZGVsYXkg PD0gZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQpCisJCWlmIChuZXdfZGVsYXkgPD0g cnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpCiAJCQlhZGogPSAwOwogCX0gZWxzZSB7IC8qIHVua25v d24gZXZlbnQgKi8KIAkJYWRqID0gMDsKIAl9CiAKLQlkZXZfcHJpdi0+cnBzLmxhc3RfYWRqID0g YWRqOworCXJwcy0+bGFzdF9hZGogPSBhZGo7CiAKIAkvKiBzeXNmcyBmcmVxdWVuY3kgaW50ZXJm YWNlcyBtYXkgaGF2ZSBzbnVjayBpbiB3aGlsZSBzZXJ2aWNpbmcgdGhlCiAJICogaW50ZXJydXB0 CkBAIC0xMjMyLDE1ICsxMjMzLDE1IEBAIHN0YXRpYyB2b2lkIGdlbjZfcG1fcnBzX3dvcmsoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiAJaWYgKGludGVsX3NldF9ycHMoZGV2X3ByaXYsIG5l d19kZWxheSkpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHNldCBuZXcgR1BVIGZy ZXF1ZW5jeVxuIik7Ci0JCWRldl9wcml2LT5ycHMubGFzdF9hZGogPSAwOworCQlycHMtPmxhc3Rf YWRqID0gMDsKIAl9CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiBvdXQ6CiAJLyogTWFrZSBz dXJlIG5vdCB0byBjb3JydXB0IFBNSU1SIHN0YXRlIHVzZWQgYnkgcmluZ2J1ZmZlciBvbiBHRU42 ICovCiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKLQlpZiAoZGV2X3ByaXYt PnJwcy5pbnRlcnJ1cHRzX2VuYWJsZWQpCisJaWYgKHJwcy0+aW50ZXJydXB0c19lbmFibGVkKQog CQlnZW42X3VubWFza19wbV9pcnEoZGV2X3ByaXYsIGRldl9wcml2LT5wbV9ycHNfZXZlbnRzKTsK IAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiB9CkBAIC0xNzIzLDEyICsx NzI0LDE0IEBAIHN0YXRpYyB2b2lkIGk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogICogdGhlIHdvcmsgcXVldWUuICovCiBzdGF0aWMg dm9pZCBnZW42X3Jwc19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUzMiBwbV9paXIpCiB7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5w bS5ycHM7CisKIAlpZiAocG1faWlyICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpIHsKIAkJc3Bp bl9sb2NrKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCQlnZW42X21hc2tfcG1faXJxKGRldl9wcml2 LCBwbV9paXIgJiBkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyk7Ci0JCWlmIChkZXZfcHJpdi0+cnBz LmludGVycnVwdHNfZW5hYmxlZCkgewotCQkJZGV2X3ByaXYtPnJwcy5wbV9paXIgfD0gcG1faWly ICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHM7Ci0JCQlzY2hlZHVsZV93b3JrKCZkZXZfcHJpdi0+ cnBzLndvcmspOworCQlpZiAocnBzLT5pbnRlcnJ1cHRzX2VuYWJsZWQpIHsKKwkJCXJwcy0+cG1f aWlyIHw9IHBtX2lpciAmIGRldl9wcml2LT5wbV9ycHNfZXZlbnRzOworCQkJc2NoZWR1bGVfd29y aygmcnBzLT53b3JrKTsKIAkJfQogCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPmlycV9sb2NrKTsK IAl9CkBAIC00MDAwLDExICs0MDAzLDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTY1X2lycV9o YW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAm ZGV2X3ByaXYtPmRybTsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPnBtLnJw czsKIAlpbnQgaTsKIAogCWludGVsX2hwZF9pbml0X3dvcmsoZGV2X3ByaXYpOwogCi0JSU5JVF9X T1JLKCZkZXZfcHJpdi0+cnBzLndvcmssIGdlbjZfcG1fcnBzX3dvcmspOworCUlOSVRfV09SSygm cnBzLT53b3JrLCBnZW42X3BtX3Jwc193b3JrKTsKIAogCUlOSVRfV09SSygmZGV2X3ByaXYtPmwz X3Bhcml0eS5lcnJvcl93b3JrLCBpdnlicmlkZ2VfcGFyaXR5X3dvcmspOwogCWZvciAoaSA9IDA7 IGkgPCBNQVhfTDNfU0xJQ0VTOyArK2kpCkBAIC00MDIwLDcgKzQwMjQsNyBAQCB2b2lkIGludGVs X2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAllbHNlCiAJCWRl dl9wcml2LT5wbV9ycHNfZXZlbnRzID0gR0VONl9QTV9SUFNfRVZFTlRTOwogCi0JZGV2X3ByaXYt PnJwcy5wbV9pbnRybXNrX21ieiA9IDA7CisJcnBzLT5wbV9pbnRybXNrX21ieiA9IDA7CiAKIAkv KgogCSAqIFNOQixJVkIsSFNXIGNhbiB3aGlsZSBWTFYsQ0hWIG1heSBoYXJkIGhhbmcgb24gbG9v cGluZyBiYXRjaGJ1ZmZlcgpAQCAtNDAyOSwxMCArNDAzMywxMCBAQCB2b2lkIGludGVsX2lycV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKiBUT0RPOiB2ZXJpZnkg aWYgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBvbiBWTFYsQ0hWLgogCSAqLwogCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDw9IDcpCi0JCWRldl9wcml2LT5ycHMucG1faW50cm1za19tYnogfD0gR0VO Nl9QTV9SUF9VUF9FSV9FWFBJUkVEOworCQlycHMtPnBtX2ludHJtc2tfbWJ6IHw9IEdFTjZfUE1f UlBfVVBfRUlfRVhQSVJFRDsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCi0JCWRl dl9wcml2LT5ycHMucG1faW50cm1za19tYnogfD0gR0VOOF9QTUlOVFJfRElTQUJMRV9SRURJUkVD VF9UT19HVUM7CisJCXJwcy0+cG1faW50cm1za19tYnogfD0gR0VOOF9QTUlOVFJfRElTQUJMRV9S RURJUkVDVF9UT19HVUM7CiAKIAlpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKIAkJLyogR2VuMiBk b2Vzbid0IGhhdmUgYSBoYXJkd2FyZSBmcmFtZSBjb3VudGVyICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmMKaW5kZXggZDYxYzg3Mi4uYzE2ZTkwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lz ZnMuYwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9z aG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X2xvY2so JmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCXUzMiBmcmVxOwogCQlmcmVxID0gdmx2X3B1 bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwpAQCAtMjYxLDcgKzI2 MSw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2Ug KmtkZXYsCiAJCQlyZXQgPSAocnBzdGF0ICYgR0VONl9DQUdGX01BU0spID4+IEdFTjZfQ0FHRl9T SElGVDsKIAkJcmV0ID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJldCk7CiAJfQotCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5wbS5wY3VfbG9jayk7CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiAKQEAg LTI3NSw3ICsyNzUsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9jdXJfZnJlcV9taHpfc2hvdyhzdHJ1 Y3QgZGV2aWNlICprZGV2LAogCiAJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRc biIsCiAJCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKLQkJCQkgICAgICAgZGV2X3ByaXYtPnJw cy5jdXJfZnJlcSkpOworCQkJCSAgICAgICBkZXZfcHJpdi0+cG0ucnBzLmN1cl9mcmVxKSk7CiB9 CiAKIHN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKQEAgLTI4NCw3 ICsyODQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21oel9zaG93KHN0cnVjdCBk ZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidQogCiAJcmV0dXJuIHNucHJpbnRmKGJ1 ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCiAJCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKLQkJCQkg ICAgICAgZGV2X3ByaXYtPnJwcy5ib29zdF9mcmVxKSk7CisJCQkJICAgICAgIGRldl9wcml2LT5w bS5ycHMuYm9vc3RfZnJlcSkpOwogfQogCiBzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21o el9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LApAQCAtMzAxLDEyICszMDEsMTIgQEAgc3RhdGlj IHNzaXplX3QgZ3RfYm9vc3RfZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqa2RldiwKIAog CS8qIFZhbGlkYXRlIGFnYWluc3QgKHN0YXRpYykgaGFyZHdhcmUgbGltaXRzICovCiAJdmFsID0g aW50ZWxfZnJlcV9vcGNvZGUoZGV2X3ByaXYsIHZhbCk7Ci0JaWYgKHZhbCA8IGRldl9wcml2LT5y cHMubWluX2ZyZXEgfHwgdmFsID4gZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSkKKwlpZiAodmFsIDwg ZGV2X3ByaXYtPnBtLnJwcy5taW5fZnJlcSB8fCB2YWwgPiBkZXZfcHJpdi0+cG0ucnBzLm1heF9m cmVxKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdf bG9jayk7Ci0JZGV2X3ByaXYtPnJwcy5ib29zdF9mcmVxID0gdmFsOwotCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xv Y2spOworCWRldl9wcml2LT5wbS5ycHMuYm9vc3RfZnJlcSA9IHZhbDsKKwltdXRleF91bmxvY2so JmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC0zMTgsNyAr MzE4LDcgQEAgc3RhdGljIHNzaXplX3Qgdmx2X3JwZV9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZp Y2UgKmtkZXYsCiAKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwKIAkJ CWludGVsX2dwdV9mcmVxKGRldl9wcml2LAotCQkJCSAgICAgICBkZXZfcHJpdi0+cnBzLmVmZmlj aWVudF9mcmVxKSk7CisJCQkJICAgICAgIGRldl9wcml2LT5wbS5ycHMuZWZmaWNpZW50X2ZyZXEp KTsKIH0KIAogc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmlj ZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKQEAgLTMy Nyw3ICszMjcsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJlcV9taHpfc2hvdyhzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQogCiAJcmV0dXJuIHNucHJpbnRm KGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCiAJCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKLQkJ CQkgICAgICAgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQpKTsKKwkJCQkgICAgICAg ZGV2X3ByaXYtPnBtLnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQpKTsKIH0KIAogc3RhdGljIHNzaXpl X3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCkBAIC0zNDQsMzQg KzM0NCwzNCBAQCBzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJlcV9taHpfc3RvcmUoc3RydWN0IGRl dmljZSAqa2RldiwKIAogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAotCW11dGV4 X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBt LnBjdV9sb2NrKTsKIAogCXZhbCA9IGludGVsX2ZyZXFfb3Bjb2RlKGRldl9wcml2LCB2YWwpOwog Ci0JaWYgKHZhbCA8IGRldl9wcml2LT5ycHMubWluX2ZyZXEgfHwKLQkgICAgdmFsID4gZGV2X3By aXYtPnJwcy5tYXhfZnJlcSB8fAotCSAgICB2YWwgPCBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3Nv ZnRsaW1pdCkgewotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJaWYg KHZhbCA8IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXEgfHwKKwkgICAgdmFsID4gZGV2X3ByaXYt PnBtLnJwcy5tYXhfZnJlcSB8fAorCSAgICB2YWwgPCBkZXZfcHJpdi0+cG0ucnBzLm1pbl9mcmVx X3NvZnRsaW1pdCkgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAJ CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQog Ci0JaWYgKHZhbCA+IGRldl9wcml2LT5ycHMucnAwX2ZyZXEpCisJaWYgKHZhbCA+IGRldl9wcml2 LT5wbS5ycHMucnAwX2ZyZXEpCiAJCURSTV9ERUJVRygiVXNlciByZXF1ZXN0ZWQgb3ZlcmNsb2Nr aW5nIHRvICVkXG4iLAogCQkJICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgdmFsKSk7CiAKLQlk ZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKKwlkZXZfcHJpdi0+cG0ucnBz Lm1heF9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKIAotCXZhbCA9IGNsYW1wX3QoaW50LCBkZXZfcHJp di0+cnBzLmN1cl9mcmVxLAotCQkgICAgICBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1p dCwKLQkJICAgICAgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQpOworCXZhbCA9IGNs YW1wX3QoaW50LCBkZXZfcHJpdi0+cG0ucnBzLmN1cl9mcmVxLAorCQkgICAgICBkZXZfcHJpdi0+ cG0ucnBzLm1pbl9mcmVxX3NvZnRsaW1pdCwKKwkJICAgICAgZGV2X3ByaXYtPnBtLnJwcy5tYXhf ZnJlcV9zb2Z0bGltaXQpOwogCiAJLyogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJvY2Vz cyB0aGUgbmV3IG1heF9kZWxheSBhbmQKIAkgKiB1cGRhdGUgdGhlIGludGVycnVwdCBsaW1pdHMg YW5kIFBNSU5UUk1TSyBldmVuIHRob3VnaAogCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1 bmNoYW5nZWQuICovCiAJcmV0ID0gaW50ZWxfc2V0X3JwcyhkZXZfcHJpdiwgdmFsKTsKIAotCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF91bmxvY2soJmRldl9w cml2LT5wbS5wY3VfbG9jayk7CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiAK QEAgLTM4NCw3ICszODQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc2hvdyhz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQogCiAJcmV0dXJuIHNu cHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCiAJCQlpbnRlbF9ncHVfZnJlcShkZXZfcHJp diwKLQkJCQkgICAgICAgZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQpKTsKKwkJCQkg ICAgICAgZGV2X3ByaXYtPnBtLnJwcy5taW5fZnJlcV9zb2Z0bGltaXQpKTsKIH0KIAogc3RhdGlj IHNzaXplX3QgZ3RfbWluX2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCkBAIC00 MDEsMzAgKzQwMSwzMCBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc3RvcmUoc3Ry dWN0IGRldmljZSAqa2RldiwKIAogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAot CW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBtLnBjdV9sb2NrKTsKIAogCXZhbCA9IGludGVsX2ZyZXFfb3Bjb2RlKGRldl9wcml2LCB2 YWwpOwogCi0JaWYgKHZhbCA8IGRldl9wcml2LT5ycHMubWluX2ZyZXEgfHwKLQkgICAgdmFsID4g ZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSB8fAotCSAgICB2YWwgPiBkZXZfcHJpdi0+cnBzLm1heF9m cmVxX3NvZnRsaW1pdCkgewotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7 CisJaWYgKHZhbCA8IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXEgfHwKKwkgICAgdmFsID4gZGV2 X3ByaXYtPnBtLnJwcy5tYXhfZnJlcSB8fAorCSAgICB2YWwgPiBkZXZfcHJpdi0+cG0ucnBzLm1h eF9mcmVxX3NvZnRsaW1pdCkgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wbS5wY3VfbG9j ayk7CiAJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCi0JZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7CisJZGV2X3By aXYtPnBtLnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7CiAKLQl2YWwgPSBjbGFtcF90KGlu dCwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSwKLQkJICAgICAgZGV2X3ByaXYtPnJwcy5taW5fZnJl cV9zb2Z0bGltaXQsCi0JCSAgICAgIGRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KTsK Kwl2YWwgPSBjbGFtcF90KGludCwgZGV2X3ByaXYtPnBtLnJwcy5jdXJfZnJlcSwKKwkJICAgICAg ZGV2X3ByaXYtPnBtLnJwcy5taW5fZnJlcV9zb2Z0bGltaXQsCisJCSAgICAgIGRldl9wcml2LT5w bS5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KTsKIAogCS8qIFdlIHN0aWxsIG5lZWQgKl9zZXRfcnBz IHRvIHByb2Nlc3MgdGhlIG5ldyBtaW5fZGVsYXkgYW5kCiAJICogdXBkYXRlIHRoZSBpbnRlcnJ1 cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKIAkgKiBmcmVxdWVuY3kgcmVxdWVz dCBtYXkgYmUgdW5jaGFuZ2VkLiAqLwogCXJldCA9IGludGVsX3NldF9ycHMoZGV2X3ByaXYsIHZh bCk7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2 X3ByaXYpOwogCkBAIC00NTEsMTEgKzQ1MSwxMSBAQCBzdGF0aWMgc3NpemVfdCBndF9ycF9taHpf c2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cgog CXUzMiB2YWw7CiAKIAlpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6KQotCQl2 YWwgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5ycDBfZnJlcSk7CisJ CXZhbCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cG0ucnBzLnJwMF9mcmVx KTsKIAllbHNlIGlmIChhdHRyID09ICZkZXZfYXR0cl9ndF9SUDFfZnJlcV9taHopCi0JCXZhbCA9 IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLnJwMV9mcmVxKTsKKwkJdmFs ID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5wbS5ycHMucnAxX2ZyZXEpOwog CWVsc2UgaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oeikKLQkJdmFsID0gaW50 ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWluX2ZyZXEpOworCQl2YWwgPSBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnBtLnJwcy5taW5fZnJlcSk7CiAJZWxz ZQogCQlCVUcoKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2Rj bGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKaW5kZXggODdmYzQyYi4u NmNmN2VlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCkBAIC01MDMsNyArNTAzLDcg QEAgc3RhdGljIHZvaWQgdmx2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJZWxzZQogCQljbWQgPSAwOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5o d19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCXZhbCA9IHZs dl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQRlJFUSk7CiAJdmFsICY9IH5EU1BG UkVRR1VBUl9NQVNLOwogCXZhbCB8PSAoY21kIDw8IERTUEZSRVFHVUFSX1NISUZUKTsKQEAgLTUx Myw3ICs1MTMsNyBAQCBzdGF0aWMgdm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJICAgICA1MCkpIHsKIAkJRFJNX0VSUk9SKCJ0aW1lZCBvdXQg d2FpdGluZyBmb3IgQ0RjbGsgY2hhbmdlXG4iKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsK IAogCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKIApAQCAtNTkwLDcgKzU5MCw3IEBA IHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCSAqLwogCWNtZCA9IERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5ocGxsX2ZyZXEg PDwgMSwgY2RjbGspIC0gMTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7 CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAl2YWwgPSB2bHZfcHVuaXRf cmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUEZSRVEpOwogCXZhbCAmPSB+RFNQRlJFUUdVQVJf TUFTS19DSFY7CiAJdmFsIHw9IChjbWQgPDwgRFNQRlJFUUdVQVJfU0hJRlRfQ0hWKTsKQEAgLTYw MCw3ICs2MDAsNyBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJICAgICA1MCkpIHsKIAkJRFJNX0VSUk9SKCJ0aW1lZCBvdXQg d2FpdGluZyBmb3IgQ0RjbGsgY2hhbmdlXG4iKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsK IAogCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7CiAKQEAgLTY1NiwxMCArNjU2LDEwIEBA IHN0YXRpYyB2b2lkIGJkd19zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkgInRyeWluZyB0byBjaGFuZ2UgY2RjbGsgZnJlcXVlbmN5IHdpdGggY2RjbGsgbm90 IGVuYWJsZWRcbiIpKQogCQlyZXR1cm47CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOworCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsCiAJCQkJICAgICAgQkRXX1BDT0RFX0RJU1BM QVlfRlJFUV9DSEFOR0VfUkVRLCAweDApOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5o d19sb2NrKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAJaWYgKHJl dCkgewogCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbmZvcm0gcGNvZGUgYWJvdXQgY2RjbGsgY2hh bmdlXG4iKTsKIAkJcmV0dXJuOwpAQCAtNzEyLDkgKzcxMiw5IEBAIHN0YXRpYyB2b2lkIGJkd19z ZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJTENQTExfQ0Rf U09VUkNFX0ZDTEtfRE9ORSkgPT0gMCwgMSkpCiAJCURSTV9FUlJPUigiU3dpdGNoaW5nIGJhY2sg dG8gTENQTEwgZmFpbGVkXG4iKTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAlzYW5keWJyaWRnZV9w Y29kZV93cml0ZShkZXZfcHJpdiwgSFNXX1BDT0RFX0RFX1dSSVRFX0ZSRVFfUkVRLCBkYXRhKTsK LQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJSTkxNV9XUklURShDRENMS19GUkVRLCBESVZfUk9V TkRfQ0xPU0VTVChjZGNsaywgMTAwMCkgLSAxKTsKIApAQCAtOTI4LDEyICs5MjgsMTIgQEAgc3Rh dGljIHZvaWQgc2tsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAKIAlXQVJOX09OKChjZGNsayA9PSAyNDAwMCkgIT0gKHZjbyA9PSAwKSk7CiAKLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5w Y3VfbG9jayk7CiAJcmV0ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2X3ByaXYsIFNLTF9QQ09ERV9D RENMS19DT05UUk9MLAogCQkJCVNLTF9DRENMS19QUkVQQVJFX0ZPUl9DSEFOR0UsCiAJCQkJU0tM X0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0UsCiAJCQkJU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0Us IDMpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoIkZh aWxlZCB0byBpbmZvcm0gUENVIGFib3V0IGNkY2xrIGNoYW5nZSAoJWQpXG4iLAogCQkJICByZXQp OwpAQCAtOTc1LDkgKzk3NSw5IEBAIHN0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCVBPU1RJTkdfUkVBRChDRENMS19DVEwpOwogCiAJ LyogaW5mb3JtIFBDVSBvZiB0aGUgY2hhbmdlICovCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJw cy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCXNhbmR5 YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTCwgcGN1 X2Fjayk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCWludGVsX3VwZGF0ZV9jZGNsayhkZXZf cHJpdik7CiB9CkBAIC0xMjY4LDEwICsxMjY4LDEwIEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAogCS8qIEluZm9ybSBw b3dlciBjb250cm9sbGVyIG9mIHVwY29taW5nIGZyZXF1ZW5jeSBjaGFuZ2UgKi8KLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5w Y3VfbG9jayk7CiAJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEhTV19Q Q09ERV9ERV9XUklURV9GUkVRX1JFUSwKIAkJCQkgICAgICAweDgwMDAwMDAwKTsKLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cG0ucGN1X2xvY2spOwogCiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoIlBDb2RlIENEQ0xLIGZy ZXEgY2hhbmdlIG5vdGlmeSBmYWlsZWQgKGVyciAlZCwgZnJlcSAlZClcbiIsCkBAIC0xMzAwLDEw ICsxMzAwLDEwIEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQl2YWwgfD0gQlhUX0NEQ0xLX1NTQV9QUkVDSEFSR0VfRU5BQkxF OwogCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCB2YWwpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCXJl dCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBIU1dfUENPREVfREVfV1JJVEVf RlJFUV9SRVEsCiAJCQkJICAgICAgRElWX1JPVU5EX1VQKGNkY2xrLCAyNTAwMCkpOwotCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5wbS5wY3VfbG9jayk7CiAKIAlpZiAocmV0KSB7CiAJCURSTV9FUlJPUigiUENvZGUgQ0RDTEsg ZnJlcSBzZXQgZmFpbGVkLCAoZXJyICVkLCBmcmVxICVkKVxuIiwKQEAgLTE1MTgsMTIgKzE1MTgs MTIgQEAgc3RhdGljIHZvaWQgY25sX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJdTMyIHZhbCwgZGl2aWRlciwgcGN1X2FjazsKIAlpbnQgcmV0OwogCi0JbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cG0ucGN1X2xvY2spOwogCXJldCA9IHNrbF9wY29kZV9yZXF1ZXN0KGRldl9wcml2LCBTS0xfUENP REVfQ0RDTEtfQ09OVFJPTCwKIAkJCQlTS0xfQ0RDTEtfUFJFUEFSRV9GT1JfQ0hBTkdFLAogCQkJ CVNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdFLAogCQkJCVNLTF9DRENMS19SRUFEWV9GT1JfQ0hB TkdFLCAzKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gaW5mb3JtIFBDVSBhYm91dCBjZGNsayBjaGFuZ2UgKCVkKVxuIiwKIAkJCSAg cmV0KTsKQEAgLTE1NzUsOSArMTU3NSw5IEBAIHN0YXRpYyB2b2lkIGNubF9zZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCB2 YWwpOwogCiAJLyogaW5mb3JtIFBDVSBvZiB0aGUgY2hhbmdlICovCi0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2sp OwogCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09O VFJPTCwgcGN1X2Fjayk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwor CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCWludGVsX3VwZGF0ZV9j ZGNsayhkZXZfcHJpdik7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXgg YzRiMjI0YS4uY2NmMjVkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAt NDk1NSwxMCArNDk1NSwxMCBAQCB2b2lkIGhzd19lbmFibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQogCiAJYXNzZXJ0X3BsYW5lX2VuYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBsYW5lKTsK IAlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCQlX QVJOX09OKHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBESVNQTEFZX0lQU19DT05U Uk9MLAogCQkJCQkJSVBTX0VOQUJMRSB8IElQU19QQ09ERV9DT05UUk9MKSk7Ci0JCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cG0ucGN1X2xvY2spOwogCQkvKiBRdW90aW5nIEFydCBSdW55YW46ICJpdHMgbm90IHNhZmUgdG8g ZXhwZWN0IGFueSBwYXJ0aWN1bGFyCiAJCSAqIHZhbHVlIGluIElQU19DVEwgYml0IDMxIGFmdGVy IGVuYWJsaW5nIElQUyB0aHJvdWdoIHRoZQogCQkgKiBtYWlsYm94LiIgTW9yZW92ZXIsIHRoZSBt YWlsYm94IG1heSByZXR1cm4gYSBib2d1cyBzdGF0ZSwKQEAgLTQ5ODgsOSArNDk4OCw5IEBAIHZv aWQgaHN3X2Rpc2FibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCiAJYXNzZXJ0X3Bs YW5lX2VuYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBsYW5lKTsKIAlpZiAoSVNfQlJPQURXRUxMKGRl dl9wcml2KSkgewotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCQltdXRl eF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCQlXQVJOX09OKHNhbmR5YnJpZGdlX3Bj b2RlX3dyaXRlKGRldl9wcml2LCBESVNQTEFZX0lQU19DT05UUk9MLCAwKSk7Ci0JCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cG0ucGN1X2xvY2spOwogCQkvKiB3YWl0IGZvciBwY29kZSB0byBmaW5pc2ggZGlzYWJsaW5nIElQ Uywgd2hpY2ggbWF5IHRha2UgdXAgdG8gNDJtcyAqLwogCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoZGV2X3ByaXYsCiAJCQkJCSAgICBJUFNfQ1RMLCBJUFNfRU5BQkxFLCAwLApAQCAtODg0 NiwxMSArODg0NiwxMSBAQCBzdGF0aWMgdWludDMyX3QgaHN3X3JlYWRfZGNvbXAoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGljIHZvaWQgaHN3X3dyaXRlX2Rjb21wKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWludDMyX3QgdmFsKQogewogCWlmIChJ U19IQVNXRUxMKGRldl9wcml2KSkgewotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xv Y2spOworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCQlpZiAoc2FuZHli cmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjZfUENPREVfV1JJVEVfRF9DT01QLAogCQkJ CQkgICAgdmFsKSkKIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byB3cml0ZSB0byBEX0NPTVBc biIpOwotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAl9IGVsc2UgewogCQlJOTE1X1dSSVRFKERf Q09NUF9CRFcsIHZhbCk7CiAJCVBPU1RJTkdfUkVBRChEX0NPTVBfQkRXKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKaW5kZXggYjViZmRkZC4uYzI4ZTY5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgaW50ZWxfcGNoX2ZpZm9fdW5kZXJydW5f aXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIGlu bGluZSB1MzIgZ2VuNl9zYW5pdGl6ZV9ycHNfcG1fbWFzayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKIAkJCQkJICAgIHUzMiBtYXNrKQogewotCXJldHVybiBtYXNrICYgfmk5 MTUtPnJwcy5wbV9pbnRybXNrX21iejsKKwlyZXR1cm4gbWFzayAmIH5pOTE1LT5wbS5ycHMucG1f aW50cm1za19tYno7CiB9CiAKIHZvaWQgaW50ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVw dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCmluZGV4IGZlYjM4ZWUuLjJmYzRiZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAt MzIyLDcgKzMyMiw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X2R2ZnMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGVuYWJsZSkKIHsKIAl1MzIgdmFsOwogCi0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJp di0+cG0ucGN1X2xvY2spOwogCiAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklU X1JFR19ERFJfU0VUVVAyKTsKIAlpZiAoZW5hYmxlKQpAQCAtMzM3LDE0ICszMzcsMTQgQEAgc3Rh dGljIHZvaWQgY2h2X3NldF9tZW1vcnlfZHZmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGJvb2wgZW5hYmxlKQogCQkgICAgICBGT1JDRV9ERFJfRlJFUV9SRVFfQUNLKSA9PSAw LCAzKSkKIAkJRFJNX0VSUk9SKCJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgUHVuaXQgRERSIERWRlMg cmVxdWVzdFxuIik7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBj aHZfc2V0X21lbW9yeV9wbTUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29s IGVuYWJsZSkKIHsKIAl1MzIgdmFsOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJdmFsID0gdmx2 X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKTsKIAlpZiAoZW5hYmxlKQpA QCAtMzUzLDcgKzM1Myw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X3BtNShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQogCQl2YWwgJj0gfkRTUF9N QVhGSUZPX1BNNV9FTkFCTEU7CiAJdmx2X3B1bml0X3dyaXRlKGRldl9wcml2LCBQVU5JVF9SRUdf RFNQRlJFUSwgdmFsKTsKIAotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsK KwltdXRleF91bmxvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiB9CiAKICNkZWZpbmUgRldf V00odmFsdWUsIHBsYW5lKSBcCkBAIC0yNzkwLDExICsyNzkwLDExIEBAIHN0YXRpYyB2b2lkIGlu dGVsX3JlYWRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAK IAkJLyogcmVhZCB0aGUgZmlyc3Qgc2V0IG9mIG1lbW9yeSBsYXRlbmNpZXNbMDozXSAqLwogCQl2 YWwgPSAwOyAvKiBkYXRhMCB0byBiZSBwcm9ncmFtbWVkIHRvIDAgZm9yIGZpcnN0IHNldCAqLwot CQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCQltdXRleF9sb2NrKCZkZXZf cHJpdi0+cG0ucGN1X2xvY2spOwogCQlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9w cml2LAogCQkJCQkgICAgIEdFTjlfUENPREVfUkVBRF9NRU1fTEFURU5DWSwKIAkJCQkJICAgICAm dmFsKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAKIAkJaWYgKHJldCkgewogCQkJRFJNX0VS Uk9SKCJTS0wgTWFpbGJveCByZWFkIGVycm9yID0gJWRcbiIsIHJldCk7CkBAIC0yODExLDExICsy ODExLDExIEBAIHN0YXRpYyB2b2lkIGludGVsX3JlYWRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAkJLyogcmVhZCB0aGUgc2Vjb25kIHNldCBvZiBtZW1v cnkgbGF0ZW5jaWVzWzQ6N10gKi8KIAkJdmFsID0gMTsgLyogZGF0YTAgdG8gYmUgcHJvZ3JhbW1l ZCB0byAxIGZvciBzZWNvbmQgc2V0ICovCi0JCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdf bG9jayk7CisJCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAJCXJldCA9IHNh bmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsCiAJCQkJCSAgICAgR0VOOV9QQ09ERV9SRUFE X01FTV9MQVRFTkNZLAogCQkJCQkgICAgICZ2YWwpOwotCQltdXRleF91bmxvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsK IAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJTS0wgTWFpbGJveCByZWFkIGVycm9yID0gJWRc biIsIHJldCk7CiAJCQlyZXR1cm47CkBAIC0zNjA4LDEzICszNjA4LDEzIEBAIHN0YXRpYyBib29s IHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp CiAJCXJldHVybiAwOwogCiAJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgdGhlIFNBR1ZcbiIpOwot CW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBtLnBjdV9sb2NrKTsKIAogCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9w cml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwKIAkJCQkgICAgICBHRU45X1NBR1ZfRU5BQkxF KTsKIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgdGhlIFNBR1Ygd2hlbiBlbmFibGlu ZyAqLwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAKIAkvKgogCSAqIFNvbWUgc2tsIHN5c3RlbXMs IHByZS1yZWxlYXNlIG1hY2hpbmVzIGluIHBhcnRpY3VsYXIsCkBAIC0zNjQ1LDE0ICszNjQ1LDE0 IEBAIHN0YXRpYyBib29sIHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUpCiAJCXJldHVybiAwOwogCiAJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5n IHRoZSBTQUdWXG4iKTsKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11 dGV4X2xvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAKIAkvKiBic3BlYyBzYXlzIHRvIGtl ZXAgcmV0cnlpbmcgZm9yIGF0IGxlYXN0IDEgbXMgKi8KIAlyZXQgPSBza2xfcGNvZGVfcmVxdWVz dChkZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCiAJCQkJR0VOOV9TQUdWX0RJU0FC TEUsCiAJCQkJR0VOOV9TQUdWX0lTX0RJU0FCTEVELCBHRU45X1NBR1ZfSVNfRElTQUJMRUQsCiAJ CQkJMSk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCS8qCiAJICogU29tZSBza2wgc3lzdGVt cywgcHJlLXJlbGVhc2UgbWFjaGluZXMgaW4gcGFydGljdWxhciwKQEAgLTU2MTksNyArNTYxOSw3 IEBAIHZvaWQgdmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXdt LT5sZXZlbCA9IFZMVl9XTV9MRVZFTF9QTTI7CiAKIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpIHsKLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCQl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZf cHJpdiwgUFVOSVRfUkVHX0RTUEZSRVEpOwogCQlpZiAodmFsICYgRFNQX01BWEZJRk9fUE01X0VO QUJMRSkKQEAgLTU2NDksNyArNTY0OSw3IEBAIHZvaWQgdmx2X3dtX2dldF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJCXdtLT5sZXZlbCA9IFZMVl9XTV9MRVZFTF9ERFJfRFZG UzsKIAkJfQogCi0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCX0KIAogCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBjcnRjKSB7CkBAIC01OTg5LDEzICs1OTg5LDEzIEBAIHN0YXRpYyB1MzIgaW50 ZWxfcnBzX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkK IAkgKiBmcmVxdWVuY3ksIGlmIHRoZSBkb3duIHRocmVzaG9sZCBleHBpcmVzIGluIHRoYXQgd2lu ZG93IHdlIHdpbGwgbm90CiAJICogcmVjZWl2ZSBhIGRvd24gaW50ZXJydXB0LiAqLwogCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKLQkJbGltaXRzID0gKGRldl9wcml2LT5ycHMubWF4 X2ZyZXFfc29mdGxpbWl0KSA8PCAyMzsKLQkJaWYgKHZhbCA8PSBkZXZfcHJpdi0+cnBzLm1pbl9m cmVxX3NvZnRsaW1pdCkKLQkJCWxpbWl0cyB8PSAoZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0 bGltaXQpIDw8IDE0OworCQlsaW1pdHMgPSAoZGV2X3ByaXYtPnBtLnJwcy5tYXhfZnJlcV9zb2Z0 bGltaXQpIDw8IDIzOworCQlpZiAodmFsIDw9IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXFfc29m dGxpbWl0KQorCQkJbGltaXRzIHw9IChkZXZfcHJpdi0+cG0ucnBzLm1pbl9mcmVxX3NvZnRsaW1p dCkgPDwgMTQ7CiAJfSBlbHNlIHsKLQkJbGltaXRzID0gZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9z b2Z0bGltaXQgPDwgMjQ7Ci0JCWlmICh2YWwgPD0gZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0 bGltaXQpCi0JCQlsaW1pdHMgfD0gZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQgPDwg MTY7CisJCWxpbWl0cyA9IGRldl9wcml2LT5wbS5ycHMubWF4X2ZyZXFfc29mdGxpbWl0IDw8IDI0 OworCQlpZiAodmFsIDw9IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXFfc29mdGxpbWl0KQorCQkJ bGltaXRzIHw9IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXFfc29mdGxpbWl0IDw8IDE2OwogCX0K IAogCXJldHVybiBsaW1pdHM7CkBAIC02MDAzLDM5ICs2MDAzLDQwIEBAIHN0YXRpYyB1MzIgaW50 ZWxfcnBzX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkK IAogc3RhdGljIHZvaWQgZ2VuNl9zZXRfcnBzX3RocmVzaG9sZHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1OCB2YWwpCiB7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRl dl9wcml2LT5wbS5ycHM7CiAJaW50IG5ld19wb3dlcjsKIAl1MzIgdGhyZXNob2xkX3VwID0gMCwg dGhyZXNob2xkX2Rvd24gPSAwOyAvKiBpbiAlICovCiAJdTMyIGVpX3VwID0gMCwgZWlfZG93biA9 IDA7CiAKLQluZXdfcG93ZXIgPSBkZXZfcHJpdi0+cnBzLnBvd2VyOwotCXN3aXRjaCAoZGV2X3By aXYtPnJwcy5wb3dlcikgeworCW5ld19wb3dlciA9IHJwcy0+cG93ZXI7CisJc3dpdGNoIChycHMt PnBvd2VyKSB7CiAJY2FzZSBMT1dfUE9XRVI6Ci0JCWlmICh2YWwgPiBkZXZfcHJpdi0+cnBzLmVm ZmljaWVudF9mcmVxICsgMSAmJgotCQkgICAgdmFsID4gZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkK KwkJaWYgKHZhbCA+IHJwcy0+ZWZmaWNpZW50X2ZyZXEgKyAxICYmCisJCSAgICB2YWwgPiBycHMt PmN1cl9mcmVxKQogCQkJbmV3X3Bvd2VyID0gQkVUV0VFTjsKIAkJYnJlYWs7CiAKIAljYXNlIEJF VFdFRU46Ci0JCWlmICh2YWwgPD0gZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSAmJgotCQkg ICAgdmFsIDwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkKKwkJaWYgKHZhbCA8PSBycHMtPmVmZmlj aWVudF9mcmVxICYmCisJCSAgICB2YWwgPCBycHMtPmN1cl9mcmVxKQogCQkJbmV3X3Bvd2VyID0g TE9XX1BPV0VSOwotCQllbHNlIGlmICh2YWwgPj0gZGV2X3ByaXYtPnJwcy5ycDBfZnJlcSAmJgot CQkJIHZhbCA+IGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpCisJCWVsc2UgaWYgKHZhbCA+PSBycHMt PnJwMF9mcmVxICYmCisJCQkgdmFsID4gcnBzLT5jdXJfZnJlcSkKIAkJCW5ld19wb3dlciA9IEhJ R0hfUE9XRVI7CiAJCWJyZWFrOwogCiAJY2FzZSBISUdIX1BPV0VSOgotCQlpZiAodmFsIDwgKGRl dl9wcml2LT5ycHMucnAxX2ZyZXEgKyBkZXZfcHJpdi0+cnBzLnJwMF9mcmVxKSA+PiAxICYmCi0J CSAgICB2YWwgPCBkZXZfcHJpdi0+cnBzLmN1cl9mcmVxKQorCQlpZiAodmFsIDwgKHJwcy0+cnAx X2ZyZXEgKyBycHMtPnJwMF9mcmVxKSA+PiAxICYmCisJCSAgICB2YWwgPCBycHMtPmN1cl9mcmVx KQogCQkJbmV3X3Bvd2VyID0gQkVUV0VFTjsKIAkJYnJlYWs7CiAJfQogCS8qIE1heC9taW4gYmlu cyBhcmUgc3BlY2lhbCAqLwotCWlmICh2YWwgPD0gZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0 bGltaXQpCisJaWYgKHZhbCA8PSBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkKIAkJbmV3X3Bvd2Vy ID0gTE9XX1BPV0VSOwotCWlmICh2YWwgPj0gZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGlt aXQpCisJaWYgKHZhbCA+PSBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkKIAkJbmV3X3Bvd2VyID0g SElHSF9QT1dFUjsKLQlpZiAobmV3X3Bvd2VyID09IGRldl9wcml2LT5ycHMucG93ZXIpCisJaWYg KG5ld19wb3dlciA9PSBycHMtPnBvd2VyKQogCQlyZXR1cm47CiAKIAkvKiBOb3RlIHRoZSB1bml0 cyBoZXJlIGFyZSBub3QgZXhhY3RseSAxdXMsIGJ1dCAxMjgwbnMuICovCkBAIC02MDk4LDEwICs2 MDk5LDEwIEBAIHN0YXRpYyB2b2lkIGdlbjZfc2V0X3Jwc190aHJlc2hvbGRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKQogCQkgICBHRU42X1JQX0RPV05fSURMRV9B VkcpOwogCiBza2lwX2h3X3dyaXRlOgotCWRldl9wcml2LT5ycHMucG93ZXIgPSBuZXdfcG93ZXI7 Ci0JZGV2X3ByaXYtPnJwcy51cF90aHJlc2hvbGQgPSB0aHJlc2hvbGRfdXA7Ci0JZGV2X3ByaXYt PnJwcy5kb3duX3RocmVzaG9sZCA9IHRocmVzaG9sZF9kb3duOwotCWRldl9wcml2LT5ycHMubGFz dF9hZGogPSAwOworCXJwcy0+cG93ZXIgPSBuZXdfcG93ZXI7CisJcnBzLT51cF90aHJlc2hvbGQg PSB0aHJlc2hvbGRfdXA7CisJcnBzLT5kb3duX3RocmVzaG9sZCA9IHRocmVzaG9sZF9kb3duOwor CXJwcy0+bGFzdF9hZGogPSAwOwogfQogCiBzdGF0aWMgdTMyIGdlbjZfcnBzX3BtX21hc2soc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCB2YWwpCkBAIC02MTA5LDkgKzYxMTAs OSBAQCBzdGF0aWMgdTMyIGdlbjZfcnBzX3BtX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1OCB2YWwpCiAJdTMyIG1hc2sgPSAwOwogCiAJLyogV2UgdXNlIFVQX0VJX0VY UElSRUQgaW50ZXJ1cHRzIGZvciBib3RoIHVwL2Rvd24gaW4gbWFudWFsIG1vZGUgKi8KLQlpZiAo dmFsID4gZGV2X3ByaXYtPnJwcy5taW5fZnJlcV9zb2Z0bGltaXQpCisJaWYgKHZhbCA+IGRldl9w cml2LT5wbS5ycHMubWluX2ZyZXFfc29mdGxpbWl0KQogCQltYXNrIHw9IEdFTjZfUE1fUlBfVVBf RUlfRVhQSVJFRCB8IEdFTjZfUE1fUlBfRE9XTl9USFJFU0hPTEQgfCBHRU42X1BNX1JQX0RPV05f VElNRU9VVDsKLQlpZiAodmFsIDwgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQpCisJ aWYgKHZhbCA8IGRldl9wcml2LT5wbS5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KQogCQltYXNrIHw9 IEdFTjZfUE1fUlBfVVBfRUlfRVhQSVJFRCB8IEdFTjZfUE1fUlBfVVBfVEhSRVNIT0xEOwogCiAJ bWFzayAmPSBkZXZfcHJpdi0+cG1fcnBzX2V2ZW50czsKQEAgLTYxMjcsNyArNjEyOCw3IEBAIHN0 YXRpYyBpbnQgZ2VuNl9zZXRfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTggdmFsKQogCS8qIG1pbi9tYXggZGVsYXkgbWF5IHN0aWxsIGhhdmUgYmVlbiBtb2RpZmllZCBz byBiZSBzdXJlIHRvCiAJICogd3JpdGUgdGhlIGxpbWl0cyB2YWx1ZS4KIAkgKi8KLQlpZiAodmFs ICE9IGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpIHsKKwlpZiAodmFsICE9IGRldl9wcml2LT5wbS5y cHMuY3VyX2ZyZXEpIHsKIAkJZ2VuNl9zZXRfcnBzX3RocmVzaG9sZHMoZGV2X3ByaXYsIHZhbCk7 CiAKIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKQEAgLTYxNDksNyArNjE1MCw3IEBA IHN0YXRpYyBpbnQgZ2VuNl9zZXRfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTggdmFsKQogCUk5MTVfV1JJVEUoR0VONl9SUF9JTlRFUlJVUFRfTElNSVRTLCBpbnRlbF9y cHNfbGltaXRzKGRldl9wcml2LCB2YWwpKTsKIAlJOTE1X1dSSVRFKEdFTjZfUE1JTlRSTVNLLCBn ZW42X3Jwc19wbV9tYXNrKGRldl9wcml2LCB2YWwpKTsKIAotCWRldl9wcml2LT5ycHMuY3VyX2Zy ZXEgPSB2YWw7CisJZGV2X3ByaXYtPnBtLnJwcy5jdXJfZnJlcSA9IHZhbDsKIAl0cmFjZV9pbnRl bF9ncHVfZnJlcV9jaGFuZ2UoaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHZhbCkpOwogCiAJcmV0 dXJuIDA7CkBAIC02MTY1LDcgKzYxNjYsNyBAQCBzdGF0aWMgaW50IHZhbGxleXZpZXdfc2V0X3Jw cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkKIAogCUk5MTVfV1JJ VEUoR0VONl9QTUlOVFJNU0ssIGdlbjZfcnBzX3BtX21hc2soZGV2X3ByaXYsIHZhbCkpOwogCi0J aWYgKHZhbCAhPSBkZXZfcHJpdi0+cnBzLmN1cl9mcmVxKSB7CisJaWYgKHZhbCAhPSBkZXZfcHJp di0+cG0ucnBzLmN1cl9mcmVxKSB7CiAJCWVyciA9IHZsdl9wdW5pdF93cml0ZShkZXZfcHJpdiwg UFVOSVRfUkVHX0dQVV9GUkVRX1JFUSwgdmFsKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7 CkBAIC02MTczLDcgKzYxNzQsNyBAQCBzdGF0aWMgaW50IHZhbGxleXZpZXdfc2V0X3JwcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkKIAkJZ2VuNl9zZXRfcnBzX3Ro cmVzaG9sZHMoZGV2X3ByaXYsIHZhbCk7CiAJfQogCi0JZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSA9 IHZhbDsKKwlkZXZfcHJpdi0+cG0ucnBzLmN1cl9mcmVxID0gdmFsOwogCXRyYWNlX2ludGVsX2dw dV9mcmVxX2NoYW5nZShpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgdmFsKSk7CiAKIAlyZXR1cm4g MDsKQEAgLTYxODgsMTAgKzYxODksMTAgQEAgc3RhdGljIGludCB2YWxsZXl2aWV3X3NldF9ycHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCB2YWwpCiAqLwogc3RhdGljIHZv aWQgdmx2X3NldF9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 Ci0JdTMyIHZhbCA9IGRldl9wcml2LT5ycHMuaWRsZV9mcmVxOworCXUzMiB2YWwgPSBkZXZfcHJp di0+cG0ucnBzLmlkbGVfZnJlcTsKIAlpbnQgZXJyOwogCi0JaWYgKGRldl9wcml2LT5ycHMuY3Vy X2ZyZXEgPD0gdmFsKQorCWlmIChkZXZfcHJpdi0+cG0ucnBzLmN1cl9mcmVxIDw9IHZhbCkKIAkJ cmV0dXJuOwogCiAJLyogVGhlIHB1bml0IGRlbGF5cyB0aGUgd3JpdGUgb2YgdGhlIGZyZXF1ZW5j eSBhbmQgdm9sdGFnZSB1bnRpbCBpdApAQCAtNjIxNiwzMCArNjIxNywzMiBAQCBzdGF0aWMgdm9p ZCB2bHZfc2V0X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAog dm9pZCBnZW42X3Jwc19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwotCWlmIChkZXZfcHJpdi0+cnBz LmVuYWJsZWQpIHsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPnBtLnJwczsK KworCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CisJaWYgKHJwcy0+ZW5hYmxl ZCkgewogCQl1OCBmcmVxOwogCiAJCWlmIChkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyAmIEdFTjZf UE1fUlBfVVBfRUlfRVhQSVJFRCkKIAkJCWdlbjZfcnBzX3Jlc2V0X2VpKGRldl9wcml2KTsKIAkJ STkxNV9XUklURShHRU42X1BNSU5UUk1TSywKLQkJCSAgIGdlbjZfcnBzX3BtX21hc2soZGV2X3By aXYsIGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpKTsKKwkJCSAgIGdlbjZfcnBzX3BtX21hc2soZGV2 X3ByaXYsIHJwcy0+Y3VyX2ZyZXEpKTsKIAogCQlnZW42X2VuYWJsZV9ycHNfaW50ZXJydXB0cyhk ZXZfcHJpdik7CiAKIAkJLyogVXNlIHRoZSB1c2VyJ3MgZGVzaXJlZCBmcmVxdWVuY3kgYXMgYSBn dWlkZSwgYnV0IGZvciBiZXR0ZXIKIAkJICogcGVyZm9ybWFuY2UsIGp1bXAgZGlyZWN0bHkgdG8g UlBlIGFzIG91ciBzdGFydGluZyBmcmVxdWVuY3kuCiAJCSAqLwotCQlmcmVxID0gbWF4KGRldl9w cml2LT5ycHMuY3VyX2ZyZXEsCi0JCQkgICBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKTsK KwkJZnJlcSA9IG1heChycHMtPmN1cl9mcmVxLAorCQkJICAgcnBzLT5lZmZpY2llbnRfZnJlcSk7 CiAKIAkJaWYgKGludGVsX3NldF9ycHMoZGV2X3ByaXYsCiAJCQkJICBjbGFtcChmcmVxLAotCQkJ CQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCwKLQkJCQkJZGV2X3ByaXYtPnJwcy5t YXhfZnJlcV9zb2Z0bGltaXQpKSkKKwkJCQkJcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQsCisJCQkJ CXJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KSkpCiAJCQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQg dG8gc2V0IGlkbGUgZnJlcXVlbmN5XG4iKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIH0K IAogdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK QEAgLTYyNTEsMTcgKzYyNTQsMTcgQEAgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkgKi8KIAlnZW42X2Rpc2FibGVfcnBzX2ludGVycnVwdHMo ZGV2X3ByaXYpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKLQlpZiAo ZGV2X3ByaXYtPnJwcy5lbmFibGVkKSB7CisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBtLnBjdV9s b2NrKTsKKwlpZiAoZGV2X3ByaXYtPnBtLnJwcy5lbmFibGVkKSB7CiAJCWlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJCXZsdl9zZXRfcnBz X2lkbGUoZGV2X3ByaXYpOwogCQllbHNlCi0JCQlnZW42X3NldF9ycHMoZGV2X3ByaXYsIGRldl9w cml2LT5ycHMuaWRsZV9mcmVxKTsKLQkJZGV2X3ByaXYtPnJwcy5sYXN0X2FkaiA9IDA7CisJCQln ZW42X3NldF9ycHMoZGV2X3ByaXYsIGRldl9wcml2LT5wbS5ycHMuaWRsZV9mcmVxKTsKKwkJZGV2 X3ByaXYtPnBtLnJwcy5sYXN0X2FkaiA9IDA7CiAJCUk5MTVfV1JJVEUoR0VONl9QTUlOVFJNU0ss CiAJCQkgICBnZW42X3Nhbml0aXplX3Jwc19wbV9tYXNrKGRldl9wcml2LCB+MCkpOwogCX0KLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+cG0ucGN1X2xvY2spOwogfQogCiB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcnEsCkBAIC02Mjc0LDEzICs2Mjc3LDEzIEBAIHZvaWQgZ2VuNl9y cHNfYm9vc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSwKIAkvKiBUaGlzIGlzIGlu dGVudGlvbmFsbHkgcmFjeSEgV2UgcGVlayBhdCB0aGUgc3RhdGUgaGVyZSwgdGhlbgogCSAqIHZh bGlkYXRlIGluc2lkZSB0aGUgUlBTIHdvcmtlci4KIAkgKi8KLQlpZiAoIWk5MTUtPnJwcy5lbmFi bGVkKQorCWlmICghaTkxNS0+cG0ucnBzLmVuYWJsZWQpCiAJCXJldHVybjsKIAogCWJvb3N0ID0g ZmFsc2U7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJnJxLT5sb2NrLCBmbGFncyk7CiAJaWYgKCFycS0+ d2FpdGJvb3N0ICYmICFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpIHsKLQkJYXRvbWlj X2luYygmaTkxNS0+cnBzLm51bV93YWl0ZXJzKTsKKwkJYXRvbWljX2luYygmaTkxNS0+cG0ucnBz Lm51bV93YWl0ZXJzKTsKIAkJcnEtPndhaXRib29zdCA9IHRydWU7CiAJCWJvb3N0ID0gdHJ1ZTsK IAl9CkBAIC02Mjg4LDIyICs2MjkxLDIyIEBAIHZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpycSwKIAlpZiAoIWJvb3N0KQogCQlyZXR1cm47CiAKLQlpZiAo UkVBRF9PTkNFKGk5MTUtPnJwcy5jdXJfZnJlcSkgPCBpOTE1LT5ycHMuYm9vc3RfZnJlcSkKLQkJ c2NoZWR1bGVfd29yaygmaTkxNS0+cnBzLndvcmspOworCWlmIChSRUFEX09OQ0UoaTkxNS0+cG0u cnBzLmN1cl9mcmVxKSA8IGk5MTUtPnBtLnJwcy5ib29zdF9mcmVxKQorCQlzY2hlZHVsZV93b3Jr KCZpOTE1LT5wbS5ycHMud29yayk7CiAKLQlhdG9taWNfaW5jKHJwcyA/ICZycHMtPmJvb3N0cyA6 ICZpOTE1LT5ycHMuYm9vc3RzKTsKKwlhdG9taWNfaW5jKHJwcyA/ICZycHMtPmJvb3N0cyA6ICZp OTE1LT5wbS5ycHMuYm9vc3RzKTsKIH0KIAogaW50IGludGVsX3NldF9ycHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCB2YWwpCiB7CiAJaW50IGVycjsKIAotCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Ci0JR0VNX0JVR19PTih2YWwgPiBk ZXZfcHJpdi0+cnBzLm1heF9mcmVxKTsKLQlHRU1fQlVHX09OKHZhbCA8IGRldl9wcml2LT5ycHMu bWluX2ZyZXEpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wbS5wY3VfbG9jayk7 CisJR0VNX0JVR19PTih2YWwgPiBkZXZfcHJpdi0+cG0ucnBzLm1heF9mcmVxKTsKKwlHRU1fQlVH X09OKHZhbCA8IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXEpOwogCi0JaWYgKCFkZXZfcHJpdi0+ cnBzLmVuYWJsZWQpIHsKLQkJZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSA9IHZhbDsKKwlpZiAoIWRl dl9wcml2LT5wbS5ycHMuZW5hYmxlZCkgeworCQlkZXZfcHJpdi0+cG0ucnBzLmN1cl9mcmVxID0g dmFsOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTY0OTAsMTkgKzY0OTMsMTkgQEAgc3RhdGljIHZv aWQgZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJLyogc3RhdGljIHZhbHVlcyBmcm9tIEhXOiBSUDAgPiBSUDEgPiBSUG4gKG1pbl9m cmVxKSAqLwogCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewogCQl1MzIgcnBfc3RhdGVfY2Fw ID0gSTkxNV9SRUFEKEJYVF9SUF9TVEFURV9DQVApOwotCQlkZXZfcHJpdi0+cnBzLnJwMF9mcmVx ID0gKHJwX3N0YXRlX2NhcCA+PiAxNikgJiAweGZmOwotCQlkZXZfcHJpdi0+cnBzLnJwMV9mcmVx ID0gKHJwX3N0YXRlX2NhcCA+PiAgOCkgJiAweGZmOwotCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVx ID0gKHJwX3N0YXRlX2NhcCA+PiAgMCkgJiAweGZmOworCQlkZXZfcHJpdi0+cG0ucnBzLnJwMF9m cmVxID0gKHJwX3N0YXRlX2NhcCA+PiAxNikgJiAweGZmOworCQlkZXZfcHJpdi0+cG0ucnBzLnJw MV9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgOCkgJiAweGZmOworCQlkZXZfcHJpdi0+cG0ucnBz Lm1pbl9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgMCkgJiAweGZmOwogCX0gZWxzZSB7CiAJCXUz MiBycF9zdGF0ZV9jYXAgPSBJOTE1X1JFQUQoR0VONl9SUF9TVEFURV9DQVApOwotCQlkZXZfcHJp di0+cnBzLnJwMF9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgMCkgJiAweGZmOwotCQlkZXZfcHJp di0+cnBzLnJwMV9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgOCkgJiAweGZmOwotCQlkZXZfcHJp di0+cnBzLm1pbl9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAxNikgJiAweGZmOworCQlkZXZfcHJp di0+cG0ucnBzLnJwMF9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgMCkgJiAweGZmOworCQlkZXZf cHJpdi0+cG0ucnBzLnJwMV9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAgOCkgJiAweGZmOworCQlk ZXZfcHJpdi0+cG0ucnBzLm1pbl9mcmVxID0gKHJwX3N0YXRlX2NhcCA+PiAxNikgJiAweGZmOwog CX0KIAkvKiBod19tYXggPSBSUDAgdW50aWwgd2UgY2hlY2sgZm9yIG92ZXJjbG9ja2luZyAqLwot CWRldl9wcml2LT5ycHMubWF4X2ZyZXEgPSBkZXZfcHJpdi0+cnBzLnJwMF9mcmVxOworCWRldl9w cml2LT5wbS5ycHMubWF4X2ZyZXEgPSBkZXZfcHJpdi0+cG0ucnBzLnJwMF9mcmVxOwogCi0JZGV2 X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSA9IGRldl9wcml2LT5ycHMucnAxX2ZyZXE7CisJZGV2 X3ByaXYtPnBtLnJwcy5lZmZpY2llbnRfZnJlcSA9IGRldl9wcml2LT5wbS5ycHMucnAxX2ZyZXE7 CiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwK IAkgICAgSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwgSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsK IAkJdTMyIGRkY2Nfc3RhdHVzID0gMDsKQEAgLTY1MTAsMzMgKzY1MTMsMzMgQEAgc3RhdGljIHZv aWQgZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJCWlmIChzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2LAogCQkJCQkgICBI U1dfUENPREVfRFlOQU1JQ19EVVRZX0NZQ0xFX0NPTlRST0wsCiAJCQkJCSAgICZkZGNjX3N0YXR1 cykgPT0gMCkKLQkJCWRldl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEgPQorCQkJZGV2X3ByaXYt PnBtLnJwcy5lZmZpY2llbnRfZnJlcSA9CiAJCQkJY2xhbXBfdCh1OCwKIAkJCQkJKChkZGNjX3N0 YXR1cyA+PiA4KSAmIDB4ZmYpLAotCQkJCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxLAotCQkJCQlk ZXZfcHJpdi0+cnBzLm1heF9mcmVxKTsKKwkJCQkJZGV2X3ByaXYtPnBtLnJwcy5taW5fZnJlcSwK KwkJCQkJZGV2X3ByaXYtPnBtLnJwcy5tYXhfZnJlcSk7CiAJfQogCiAJaWYgKElTX0dFTjlfQkMo ZGV2X3ByaXYpIHx8IElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7CiAJCS8qIFN0b3JlIHRoZSBm cmVxdWVuY3kgdmFsdWVzIGluIDE2LjY2IE1IWiB1bml0cywgd2hpY2ggaXMKIAkJICogdGhlIG5h dHVyYWwgaGFyZHdhcmUgdW5pdCBmb3IgU0tMCiAJCSAqLwotCQlkZXZfcHJpdi0+cnBzLnJwMF9m cmVxICo9IEdFTjlfRlJFUV9TQ0FMRVI7Ci0JCWRldl9wcml2LT5ycHMucnAxX2ZyZXEgKj0gR0VO OV9GUkVRX1NDQUxFUjsKLQkJZGV2X3ByaXYtPnJwcy5taW5fZnJlcSAqPSBHRU45X0ZSRVFfU0NB TEVSOwotCQlkZXZfcHJpdi0+cnBzLm1heF9mcmVxICo9IEdFTjlfRlJFUV9TQ0FMRVI7Ci0JCWRl dl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEgKj0gR0VOOV9GUkVRX1NDQUxFUjsKKwkJZGV2X3By aXYtPnBtLnJwcy5ycDBfZnJlcSAqPSBHRU45X0ZSRVFfU0NBTEVSOworCQlkZXZfcHJpdi0+cG0u cnBzLnJwMV9mcmVxICo9IEdFTjlfRlJFUV9TQ0FMRVI7CisJCWRldl9wcml2LT5wbS5ycHMubWlu X2ZyZXEgKj0gR0VOOV9GUkVRX1NDQUxFUjsKKwkJZGV2X3ByaXYtPnBtLnJwcy5tYXhfZnJlcSAq PSBHRU45X0ZSRVFfU0NBTEVSOworCQlkZXZfcHJpdi0+cG0ucnBzLmVmZmljaWVudF9mcmVxICo9 IEdFTjlfRlJFUV9TQ0FMRVI7CiAJfQogfQogCiBzdGF0aWMgdm9pZCByZXNldF9ycHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgICBpbnQgKCpzZXQpKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICosIHU4KSkKIHsKLQl1OCBmcmVxID0gZGV2X3ByaXYtPnJwcy5jdXJf ZnJlcTsKKwl1OCBmcmVxID0gZGV2X3ByaXYtPnBtLnJwcy5jdXJfZnJlcTsKIAogCS8qIGZvcmNl IGEgcmVzZXQgKi8KLQlkZXZfcHJpdi0+cnBzLnBvd2VyID0gLTE7Ci0JZGV2X3ByaXYtPnJwcy5j dXJfZnJlcSA9IC0xOworCWRldl9wcml2LT5wbS5ycHMucG93ZXIgPSAtMTsKKwlkZXZfcHJpdi0+ cG0ucnBzLmN1cl9mcmVxID0gLTE7CiAKIAlpZiAoc2V0KGRldl9wcml2LCBmcmVxKSkKIAkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gcmVzZXQgUlBTIHRvIGluaXRpYWwgdmFsdWVzXG4iKTsKQEAgLTY1 NDksNyArNjU1Miw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAkvKiBQcm9ncmFtIGRlZmF1bHRzIGFuZCB0aHJlc2hv bGRzIGZvciBSUFMqLwogCUk5MTVfV1JJVEUoR0VONl9SQ19WSURFT19GUkVRLAotCQlHRU45X0ZS RVFVRU5DWShkZXZfcHJpdi0+cnBzLnJwMV9mcmVxKSk7CisJCUdFTjlfRlJFUVVFTkNZKGRldl9w cml2LT5wbS5ycHMucnAxX2ZyZXEpKTsKIAogCS8qIDEgc2Vjb25kIHRpbWVvdXQqLwogCUk5MTVf V1JJVEUoR0VONl9SUF9ET1dOX1RJTUVPVVQsCkBAIC02NjY4LDE2ICs2NjcxLDE2IEBAIHN0YXRp YyB2b2lkIGdlbjhfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAKIAkvKiAxIFByb2dyYW0gZGVmYXVsdHMgYW5kIHRocmVzaG9sZHMgZm9yIFJQUyovCiAJSTkx NV9XUklURShHRU42X1JQTlNXUkVRLAotCQkgICBIU1dfRlJFUVVFTkNZKGRldl9wcml2LT5ycHMu cnAxX2ZyZXEpKTsKKwkJICAgSFNXX0ZSRVFVRU5DWShkZXZfcHJpdi0+cG0ucnBzLnJwMV9mcmVx KSk7CiAJSTkxNV9XUklURShHRU42X1JDX1ZJREVPX0ZSRVEsCi0JCSAgIEhTV19GUkVRVUVOQ1ko ZGV2X3ByaXYtPnJwcy5ycDFfZnJlcSkpOworCQkgICBIU1dfRlJFUVVFTkNZKGRldl9wcml2LT5w bS5ycHMucnAxX2ZyZXEpKTsKIAkvKiBOQjogRG9jcyBzYXkgMXMsIGFuZCAxMDAwMDAwIC0gd2hp Y2ggYXJlbid0IGVxdWl2YWxlbnQgKi8KIAlJOTE1X1dSSVRFKEdFTjZfUlBfRE9XTl9USU1FT1VU LCAxMDAwMDAwMDAgLyAxMjgpOyAvKiAxIHNlY29uZCB0aW1lb3V0ICovCiAKIAkvKiBEb2NzIHJl Y29tbWVuZCA5MDBNSHosIGFuZCAzMDAgTUh6IHJlc3BlY3RpdmVseSAqLwogCUk5MTVfV1JJVEUo R0VONl9SUF9JTlRFUlJVUFRfTElNSVRTLAotCQkgICBkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3Nv ZnRsaW1pdCA8PCAyNCB8Ci0JCSAgIGRldl9wcml2LT5ycHMubWluX2ZyZXFfc29mdGxpbWl0IDw8 IDE2KTsKKwkJICAgZGV2X3ByaXYtPnBtLnJwcy5tYXhfZnJlcV9zb2Z0bGltaXQgPDwgMjQgfAor CQkgICBkZXZfcHJpdi0+cG0ucnBzLm1pbl9mcmVxX3NvZnRsaW1pdCA8PCAxNik7CiAKIAlJOTE1 X1dSSVRFKEdFTjZfUlBfVVBfVEhSRVNIT0xELCA3NjAwMDAwIC8gMTI4KTsgLyogNzZtcyBidXN5 bmVzcyBwZXIgRUksIDkwJSAqLwogCUk5MTVfV1JJVEUoR0VONl9SUF9ET1dOX1RIUkVTSE9MRCwg MzEzMDAwMDAgLyAxMjgpOyAvKiAzMTNtcyBidXN5bmVzcyBwZXIgRUksIDcwJSovCkBAIC02NzA5 LDcgKzY3MTIsNyBAQCBzdGF0aWMgdm9pZCBnZW42X2VuYWJsZV9yYzYoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCWludCByYzZfbW9kZTsKIAlpbnQgcmV0OwogCi0JV0FSTl9P TighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spKTsKKwlXQVJOX09OKCFt dXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5wbS5wY3VfbG9jaykpOwogCiAJSTkxNV9XUklURShH RU42X1JDX1NUQVRFLCAwKTsKIApAQCAtNjc4NCw3ICs2Nzg3LDcgQEAgc3RhdGljIHZvaWQgZ2Vu Nl9lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGlj IHZvaWQgZ2VuNl9lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IHsKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9jaykpOwor CVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKSk7CiAKIAkv KiBIZXJlIGJlZ2lucyBhIG1hZ2ljIHNlcXVlbmNlIG9mIHJlZ2lzdGVyIHdyaXRlcyB0byBlbmFi bGUKIAkgKiBhdXRvLWRvd25jbG9ja2luZy4KQEAgLTY4MTIsNyArNjgxNSw3IEBAIHN0YXRpYyB2 b2lkIGdlbjZfdXBkYXRlX3JpbmdfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJaW50IHNjYWxpbmdfZmFjdG9yID0gMTgwOwogCXN0cnVjdCBjcHVmcmVxX3BvbGljeSAq cG9saWN5OwogCi0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cnBzLmh3X2xv Y2spKTsKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5wbS5wY3VfbG9jaykp OwogCiAJcG9saWN5ID0gY3B1ZnJlcV9jcHVfZ2V0KDApOwogCWlmIChwb2xpY3kpIHsKQEAgLTY4 MzUsMTEgKzY4MzgsMTEgQEAgc3RhdGljIHZvaWQgZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWlmIChJU19HRU45X0JDKGRldl9wcml2 KSB8fCBJU19DQU5OT05MQUtFKGRldl9wcml2KSkgewogCQkvKiBDb252ZXJ0IEdUIGZyZXF1ZW5j eSB0byA1MCBIWiB1bml0cyAqLwotCQltaW5fZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+cnBzLm1pbl9m cmVxIC8gR0VOOV9GUkVRX1NDQUxFUjsKLQkJbWF4X2dwdV9mcmVxID0gZGV2X3ByaXYtPnJwcy5t YXhfZnJlcSAvIEdFTjlfRlJFUV9TQ0FMRVI7CisJCW1pbl9ncHVfZnJlcSA9IGRldl9wcml2LT5w bS5ycHMubWluX2ZyZXEgLyBHRU45X0ZSRVFfU0NBTEVSOworCQltYXhfZ3B1X2ZyZXEgPSBkZXZf cHJpdi0+cG0ucnBzLm1heF9mcmVxIC8gR0VOOV9GUkVRX1NDQUxFUjsKIAl9IGVsc2UgewotCQlt aW5fZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxOwotCQltYXhfZ3B1X2ZyZXEgPSBk ZXZfcHJpdi0+cnBzLm1heF9mcmVxOworCQltaW5fZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+cG0ucnBz Lm1pbl9mcmVxOworCQltYXhfZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+cG0ucnBzLm1heF9mcmVxOwog CX0KIAogCS8qCkBAIC03MDkwLDE3ICs3MDkzLDE4IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdf Y2xlYW51cF9wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGlj IHZvaWQgdmx2X2luaXRfZ3BsbF9yZWZfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiB7Ci0JZGV2X3ByaXYtPnJwcy5ncGxsX3JlZl9mcmVxID0KKwlkZXZfcHJpdi0+cG0u cnBzLmdwbGxfcmVmX2ZyZXEgPQogCQl2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgIkdQTEwg cmVmIiwKIAkJCQkgIENDS19HUExMX0NMT0NLX0NPTlRST0wsCiAJCQkJICBkZXZfcHJpdi0+Y3pj bGtfZnJlcSk7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHUExMIHJlZmVyZW5jZSBmcmVxOiAlZCBr SHpcbiIsCi0JCQkgZGV2X3ByaXYtPnJwcy5ncGxsX3JlZl9mcmVxKTsKKwkJCSBkZXZfcHJpdi0+ cG0ucnBzLmdwbGxfcmVmX2ZyZXEpOwogfQogCiBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2luaXRf Z3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKKwlzdHJ1 Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPnBtLnJwczsKIAl1MzIgdmFsOwogCiAJdmFs bGV5dmlld19zZXR1cF9wY3R4KGRldl9wcml2KTsKQEAgLTcxMjIsMzAgKzcxMjYsMzEgQEAgc3Rh dGljIHZvaWQgdmFsbGV5dmlld19pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJfQogCURSTV9ERUJVR19EUklWRVIoIkREUiBzcGVlZDogJWQgTUh6 XG4iLCBkZXZfcHJpdi0+bWVtX2ZyZXEpOwogCi0JZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSA9IHZh bGxleXZpZXdfcnBzX21heF9mcmVxKGRldl9wcml2KTsKLQlkZXZfcHJpdi0+cnBzLnJwMF9mcmVx ID0gZGV2X3ByaXYtPnJwcy5tYXhfZnJlcTsKKwlycHMtPm1heF9mcmVxID0gdmFsbGV5dmlld19y cHNfbWF4X2ZyZXEoZGV2X3ByaXYpOworCXJwcy0+cnAwX2ZyZXEgPSBycHMtPm1heF9mcmVxOwog CURSTV9ERUJVR19EUklWRVIoIm1heCBHUFUgZnJlcTogJWQgTUh6ICgldSlcbiIsCi0JCQkgaW50 ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWF4X2ZyZXEpLAotCQkJIGRldl9w cml2LT5ycHMubWF4X2ZyZXEpOworCQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1h eF9mcmVxKSwKKwkJCSBycHMtPm1heF9mcmVxKTsKIAotCWRldl9wcml2LT5ycHMuZWZmaWNpZW50 X2ZyZXEgPSB2YWxsZXl2aWV3X3Jwc19ycGVfZnJlcShkZXZfcHJpdik7CisJcnBzLT5lZmZpY2ll bnRfZnJlcSA9IHZhbGxleXZpZXdfcnBzX3JwZV9mcmVxKGRldl9wcml2KTsKIAlEUk1fREVCVUdf RFJJVkVSKCJSUGUgR1BVIGZyZXE6ICVkIE1IeiAoJXUpXG4iLAotCQkJIGludGVsX2dwdV9mcmVx KGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSwKLQkJCSBkZXZfcHJpdi0+ cnBzLmVmZmljaWVudF9mcmVxKTsKKwkJCSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5l ZmZpY2llbnRfZnJlcSksCisJCQkgcnBzLT5lZmZpY2llbnRfZnJlcSk7CiAKLQlkZXZfcHJpdi0+ cnBzLnJwMV9mcmVxID0gdmFsbGV5dmlld19ycHNfZ3Vhcl9mcmVxKGRldl9wcml2KTsKKwlycHMt PnJwMV9mcmVxID0gdmFsbGV5dmlld19ycHNfZ3Vhcl9mcmVxKGRldl9wcml2KTsKIAlEUk1fREVC VUdfRFJJVkVSKCJSUDEoR3VhciBGcmVxKSBHUFUgZnJlcTogJWQgTUh6ICgldSlcbiIsCi0JCQkg aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMucnAxX2ZyZXEpLAotCQkJIGRl dl9wcml2LT5ycHMucnAxX2ZyZXEpOworCQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMt PnJwMV9mcmVxKSwKKwkJCSBycHMtPnJwMV9mcmVxKTsKIAotCWRldl9wcml2LT5ycHMubWluX2Zy ZXEgPSB2YWxsZXl2aWV3X3Jwc19taW5fZnJlcShkZXZfcHJpdik7CisJcnBzLT5taW5fZnJlcSA9 IHZhbGxleXZpZXdfcnBzX21pbl9mcmVxKGRldl9wcml2KTsKIAlEUk1fREVCVUdfRFJJVkVSKCJt aW4gR1BVIGZyZXE6ICVkIE1IeiAoJXUpXG4iLAotCQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2 LCBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxKSwKLQkJCSBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxKTsK KwkJCSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5taW5fZnJlcSksCisJCQkgcnBzLT5t aW5fZnJlcSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogeworCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZkZXZfcHJpdi0+cG0ucnBzOwogCXUzMiB2YWw7CiAKIAljaGVycnl2aWV3X3NldHVw X3BjdHgoZGV2X3ByaXYpOwpAQCAtNzE2NiwzMSArNzE3MSwyOSBAQCBzdGF0aWMgdm9pZCBjaGVy cnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAl9CiAJRFJNX0RFQlVHX0RSSVZFUigiRERSIHNwZWVkOiAlZCBNSHpcbiIsIGRldl9wcml2 LT5tZW1fZnJlcSk7CiAKLQlkZXZfcHJpdi0+cnBzLm1heF9mcmVxID0gY2hlcnJ5dmlld19ycHNf bWF4X2ZyZXEoZGV2X3ByaXYpOwotCWRldl9wcml2LT5ycHMucnAwX2ZyZXEgPSBkZXZfcHJpdi0+ cnBzLm1heF9mcmVxOworCXJwcy0+bWF4X2ZyZXEgPSBjaGVycnl2aWV3X3Jwc19tYXhfZnJlcShk ZXZfcHJpdik7CisJcnBzLT5ycDBfZnJlcSA9IHJwcy0+bWF4X2ZyZXE7CiAJRFJNX0RFQlVHX0RS SVZFUigibWF4IEdQVSBmcmVxOiAlZCBNSHogKCV1KVxuIiwKLQkJCSBpbnRlbF9ncHVfZnJlcShk ZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSksCi0JCQkgZGV2X3ByaXYtPnJwcy5tYXhf ZnJlcSk7CisJCQkgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+bWF4X2ZyZXEpLAorCQkJ IHJwcy0+bWF4X2ZyZXEpOwogCi0JZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSA9IGNoZXJy eXZpZXdfcnBzX3JwZV9mcmVxKGRldl9wcml2KTsKKwlycHMtPmVmZmljaWVudF9mcmVxID0gY2hl cnJ5dmlld19ycHNfcnBlX2ZyZXEoZGV2X3ByaXYpOwogCURSTV9ERUJVR19EUklWRVIoIlJQZSBH UFUgZnJlcTogJWQgTUh6ICgldSlcbiIsCi0JCQkgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRl dl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEpLAotCQkJIGRldl9wcml2LT5ycHMuZWZmaWNpZW50 X2ZyZXEpOworCQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPmVmZmljaWVudF9mcmVx KSwKKwkJCSBycHMtPmVmZmljaWVudF9mcmVxKTsKIAotCWRldl9wcml2LT5ycHMucnAxX2ZyZXEg PSBjaGVycnl2aWV3X3Jwc19ndWFyX2ZyZXEoZGV2X3ByaXYpOworCXJwcy0+cnAxX2ZyZXEgPSBj aGVycnl2aWV3X3Jwc19ndWFyX2ZyZXEoZGV2X3ByaXYpOwogCURSTV9ERUJVR19EUklWRVIoIlJQ MShHdWFyKSBHUFUgZnJlcTogJWQgTUh6ICgldSlcbiIsCi0JCQkgaW50ZWxfZ3B1X2ZyZXEoZGV2 X3ByaXYsIGRldl9wcml2LT5ycHMucnAxX2ZyZXEpLAotCQkJIGRldl9wcml2LT5ycHMucnAxX2Zy ZXEpOworCQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPnJwMV9mcmVxKSwKKwkJCSBy cHMtPnJwMV9mcmVxKTsKIAotCWRldl9wcml2LT5ycHMubWluX2ZyZXEgPSBjaGVycnl2aWV3X3Jw c19taW5fZnJlcShkZXZfcHJpdik7CisJcnBzLT5taW5fZnJlcSA9IGNoZXJyeXZpZXdfcnBzX21p bl9mcmVxKGRldl9wcml2KTsKIAlEUk1fREVCVUdfRFJJVkVSKCJtaW4gR1BVIGZyZXE6ICVkIE1I eiAoJXUpXG4iLAotCQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1p bl9mcmVxKSwKLQkJCSBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxKTsKKwkJCSBpbnRlbF9ncHVfZnJl cShkZXZfcHJpdiwgcnBzLT5taW5fZnJlcSksCisJCQkgcnBzLT5taW5fZnJlcSk7CiAKLQlXQVJO X09OQ0UoKGRldl9wcml2LT5ycHMubWF4X2ZyZXEgfAotCQkgICBkZXZfcHJpdi0+cnBzLmVmZmlj aWVudF9mcmVxIHwKLQkJICAgZGV2X3ByaXYtPnJwcy5ycDFfZnJlcSB8Ci0JCSAgIGRldl9wcml2 LT5ycHMubWluX2ZyZXEpICYgMSwKKwlXQVJOX09OQ0UoKHJwcy0+bWF4X2ZyZXEgfCBycHMtPmVm ZmljaWVudF9mcmVxIHwgcnBzLT5ycDFfZnJlcSB8CisJCSAgIHJwcy0+bWluX2ZyZXEpICYgMSwK IAkJICAiT2RkIEdQVSBmcmVxIHZhbHVlc1xuIik7CiB9CiAKQEAgLTcyMDUsNyArNzIwOCw3IEBA IHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJdTMyIGd0Zmlmb2RiZywg cmM2X21vZGUgPSAwLCBwY2JyOwogCi0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spKTsKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5w bS5wY3VfbG9jaykpOwogCiAJZ3RmaWZvZGJnID0gSTkxNV9SRUFEKEdURklGT0RCRykgJiB+KEdU X0ZJRk9fU0JERURJQ0FURV9GUkVFX0VOVFJZX0NIViB8CiAJCQkJCSAgICAgR1RfRklGT19GUkVF X0VOVFJJRVNfQ0hWKTsKQEAgLTcyNTksNyArNzI2Miw3IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZp ZXdfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMy IHZhbDsKIAotCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnJwcy5od19sb2Nr KSk7CisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spKTsK IAogCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp OwpAQCAtNzMwNiw3ICs3MzA5LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19lbmFibGVfcmM2 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKIAl1MzIgZ3RmaWZvZGJnLCByYzZfbW9kZSA9IDA7CiAKLQlXQVJOX09OKCFtdXRleF9p c19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9jaykpOworCVdBUk5fT04oIW11dGV4X2lzX2xv Y2tlZCgmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKSk7CiAKIAl2YWxsZXl2aWV3X2NoZWNrX3BjdHgo ZGV2X3ByaXYpOwogCkBAIC03MzUzLDcgKzczNTYsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3 X2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXUzMiB2 YWw7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9jaykp OworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKSk7CiAK IAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CiAK QEAgLTc1ODAsNyArNzU4Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faTkxNV9nZnhfdmFs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJm1jaGRldl9sb2NrKTsKIAotCXB4dmlkID0gSTkxNV9SRUFEKFBYVkZSRVEoZGV2X3ByaXYt PnJwcy5jdXJfZnJlcSkpOworCXB4dmlkID0gSTkxNV9SRUFEKFBYVkZSRVEoZGV2X3ByaXYtPnBt LnJwcy5jdXJfZnJlcSkpOwogCXB4dmlkID0gKHB4dmlkID4+IDI0KSAmIDB4N2Y7CiAJZXh0X3Yg PSBwdmlkX3RvX2V4dHZpZChkZXZfcHJpdiwgcHh2aWQpOwogCkBAIC03ODY3LDYgKzc4NzAsOCBA QCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Vtb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCiB2b2lkIGludGVsX2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYt PnBtLnJwczsKKwogCS8qCiAJICogUlBNIGRlcGVuZHMgb24gUkM2IHRvIHNhdmUgcmVzdG9yZSB0 aGUgR1QgSFcgY29udGV4dCwgc28gbWFrZSBSQzYgYQogCSAqIHJlcXVpcmVtZW50LgpAQCAtNzg3 Nyw3ICs3ODgyLDcgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwotCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCS8qIEluaXRpYWxpemUgUlBTIGxp bWl0cyAoZm9yIHVzZXJzcGFjZSkgKi8KIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCkBA IC03ODg4LDE2ICs3ODkzLDE2IEBAIHZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlnZW42X2luaXRfcnBzX2ZyZXF1ZW5jaWVz KGRldl9wcml2KTsKIAogCS8qIERlcml2ZSBpbml0aWFsIHVzZXIgcHJlZmVyZW5jZXMvbGltaXRz IGZyb20gdGhlIGhhcmR3YXJlIGxpbWl0cyAqLwotCWRldl9wcml2LT5ycHMuaWRsZV9mcmVxID0g ZGV2X3ByaXYtPnJwcy5taW5fZnJlcTsKLQlkZXZfcHJpdi0+cnBzLmN1cl9mcmVxID0gZGV2X3By aXYtPnJwcy5pZGxlX2ZyZXE7CisJcnBzLT5pZGxlX2ZyZXEgPSBycHMtPm1pbl9mcmVxOworCXJw cy0+Y3VyX2ZyZXEgPSBycHMtPmlkbGVfZnJlcTsKIAotCWRldl9wcml2LT5ycHMubWF4X2ZyZXFf c29mdGxpbWl0ID0gZGV2X3ByaXYtPnJwcy5tYXhfZnJlcTsKLQlkZXZfcHJpdi0+cnBzLm1pbl9m cmVxX3NvZnRsaW1pdCA9IGRldl9wcml2LT5ycHMubWluX2ZyZXE7CisJcnBzLT5tYXhfZnJlcV9z b2Z0bGltaXQgPSBycHMtPm1heF9mcmVxOworCXJwcy0+bWluX2ZyZXFfc29mdGxpbWl0ID0gcnBz LT5taW5fZnJlcTsKIAogCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKQotCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCA9CisJCXJwcy0+ bWluX2ZyZXFfc29mdGxpbWl0ID0KIAkJCW1heF90KGludCwKLQkJCSAgICAgIGRldl9wcml2LT5y cHMuZWZmaWNpZW50X2ZyZXEsCisJCQkgICAgICBycHMtPmVmZmljaWVudF9mcmVxLAogCQkJICAg ICAgaW50ZWxfZnJlcV9vcGNvZGUoZGV2X3ByaXYsIDQ1MCkpOwogCiAJLyogQWZ0ZXIgc2V0dGlu ZyBtYXgtc29mdGxpbWl0LCBmaW5kIHRoZSBvdmVyY2xvY2sgbWF4IGZyZXEgKi8KQEAgLTc5MDgs MTYgKzc5MTMsMTYgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYs IEdFTjZfUkVBRF9PQ19QQVJBTVMsICZwYXJhbXMpOwogCQlpZiAocGFyYW1zICYgQklUKDMxKSkg eyAvKiBPQyBzdXBwb3J0ZWQgKi8KIAkJCURSTV9ERUJVR19EUklWRVIoIk92ZXJjbG9ja2luZyBz dXBwb3J0ZWQsIG1heDogJWRNSHosIG92ZXJjbG9jazogJWRNSHpcbiIsCi0JCQkJCSAoZGV2X3By aXYtPnJwcy5tYXhfZnJlcSAmIDB4ZmYpICogNTAsCisJCQkJCSAocnBzLT5tYXhfZnJlcSAmIDB4 ZmYpICogNTAsCiAJCQkJCSAocGFyYW1zICYgMHhmZikgKiA1MCk7Ci0JCQlkZXZfcHJpdi0+cnBz Lm1heF9mcmVxID0gcGFyYW1zICYgMHhmZjsKKwkJCXJwcy0+bWF4X2ZyZXEgPSBwYXJhbXMgJiAw eGZmOwogCQl9CiAJfQogCiAJLyogRmluYWxseSBhbGxvdyB1cyB0byBib29zdCB0byBtYXggYnkg ZGVmYXVsdCAqLwotCWRldl9wcml2LT5ycHMuYm9vc3RfZnJlcSA9IGRldl9wcml2LT5ycHMubWF4 X2ZyZXE7CisJcnBzLT5ib29zdF9mcmVxID0gcnBzLT5tYXhfZnJlcTsKIAotCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wbS5w Y3VfbG9jayk7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAK IAlpbnRlbF9hdXRvZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7CkBAIC03OTQ1LDcgKzc5 NTAsNyBAQCB2b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCiAJCXJldHVy bjsKIAotCWlmIChjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5ycHMuYXV0b2Vu YWJsZV93b3JrKSkKKwlpZiAoY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+cG0u YXV0b2VuYWJsZV93b3JrKSkKIAkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCiAJ LyogZ2VuNl9ycHNfaWRsZSgpIHdpbGwgYmUgY2FsbGVkIGxhdGVyIHRvIGRpc2FibGUgaW50ZXJy dXB0cyAqLwpAQCAtNzk1Myw3ICs3OTU4LDcgQEAgdm9pZCBpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vy c2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIHZvaWQgaW50ZWxfc2Fu aXRpemVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlkZXZfcHJpdi0+cnBzLmVuYWJsZWQgPSB0cnVlOyAvKiBmb3JjZSBkaXNhYmxpbmcgKi8KKwlk ZXZfcHJpdi0+cG0ucnBzLmVuYWJsZWQgPSB0cnVlOyAvKiBmb3JjZSBkaXNhYmxpbmcgKi8KIAlp bnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7CiAKIAlnZW42X3Jlc2V0X3Jwc19p bnRlcnJ1cHRzKGRldl9wcml2KTsKQEAgLTc5NjEsMTAgKzc5NjYsMTAgQEAgdm9pZCBpbnRlbF9z YW5pdGl6ZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CiB2b2lkIGludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHsKLQlpZiAoIVJFQURfT05DRShkZXZfcHJpdi0+cnBzLmVuYWJsZWQpKQor CWlmICghUkVBRF9PTkNFKGRldl9wcml2LT5wbS5ycHMuZW5hYmxlZCkpCiAJCXJldHVybjsKIAot CW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBtLnBjdV9sb2NrKTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJ Z2VuOV9kaXNhYmxlX3JjNihkZXZfcHJpdik7CkBAIC03OTgyLDggKzc5ODcsOCBAQCB2b2lkIGlu dGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAkJaXJvbmxha2VfZGlzYWJsZV9kcnBzKGRldl9wcml2KTsKIAl9CiAKLQlkZXZfcHJpdi0+ cnBzLmVuYWJsZWQgPSBmYWxzZTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7CisJZGV2X3ByaXYtPnBtLnJwcy5lbmFibGVkID0gZmFsc2U7CisJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogfQogCiB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dlcnNh dmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtNzk5MSwxNCArNzk5Niwx NCBAQCB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCS8qIFdlIHNob3VsZG4ndCBiZSBkaXNhYmxpbmcgYXMgd2Ugc3VibWl0 LCBzbyB0aGlzIHNob3VsZCBiZSBsZXNzCiAJICogcmFjeSB0aGFuIGl0IGFwcGVhcnMhCiAJICov Ci0JaWYgKFJFQURfT05DRShkZXZfcHJpdi0+cnBzLmVuYWJsZWQpKQorCWlmIChSRUFEX09OQ0Uo ZGV2X3ByaXYtPnBtLnJwcy5lbmFibGVkKSkKIAkJcmV0dXJuOwogCiAJLyogUG93ZXJzYXZpbmcg aXMgY29udHJvbGxlZCBieSB0aGUgaG9zdCB3aGVuIGluc2lkZSBhIFZNICovCiAJaWYgKGludGVs X3ZncHVfYWN0aXZlKGRldl9wcml2KSkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmZGV2X3By aXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwog CiAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCWNoZXJyeXZpZXdfZW5hYmxlX3Jj NihkZXZfcHJpdik7CkBAIC04MDI0LDI0ICs4MDI5LDI0IEBAIHZvaWQgaW50ZWxfZW5hYmxlX2d0 X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWludGVsX2lu aXRfZW1vbihkZXZfcHJpdik7CiAJfQogCi0JV0FSTl9PTihkZXZfcHJpdi0+cnBzLm1heF9mcmVx IDwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcSk7Ci0JV0FSTl9PTihkZXZfcHJpdi0+cnBzLmlkbGVf ZnJlcSA+IGRldl9wcml2LT5ycHMubWF4X2ZyZXEpOworCVdBUk5fT04oZGV2X3ByaXYtPnBtLnJw cy5tYXhfZnJlcSA8IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXEpOworCVdBUk5fT04oZGV2X3By aXYtPnBtLnJwcy5pZGxlX2ZyZXEgPiBkZXZfcHJpdi0+cG0ucnBzLm1heF9mcmVxKTsKIAotCVdB Uk5fT04oZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSA8IGRldl9wcml2LT5ycHMubWluX2Zy ZXEpOwotCVdBUk5fT04oZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSA+IGRldl9wcml2LT5y cHMubWF4X2ZyZXEpOworCVdBUk5fT04oZGV2X3ByaXYtPnBtLnJwcy5lZmZpY2llbnRfZnJlcSA8 IGRldl9wcml2LT5wbS5ycHMubWluX2ZyZXEpOworCVdBUk5fT04oZGV2X3ByaXYtPnBtLnJwcy5l ZmZpY2llbnRfZnJlcSA+IGRldl9wcml2LT5wbS5ycHMubWF4X2ZyZXEpOwogCi0JZGV2X3ByaXYt PnJwcy5lbmFibGVkID0gdHJ1ZTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7CisJZGV2X3ByaXYtPnBtLnJwcy5lbmFibGVkID0gdHJ1ZTsKKwltdXRleF91bmxvY2soJmRl dl9wcml2LT5wbS5wY3VfbG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIF9faW50ZWxfYXV0b2VuYWJs ZV9ndF9wb3dlcnNhdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmRl dl9wcml2KSwgcnBzLmF1dG9lbmFibGVfd29yay53b3JrKTsKKwkJY29udGFpbmVyX29mKHdvcmss IHR5cGVvZigqZGV2X3ByaXYpLCBwbS5hdXRvZW5hYmxlX3dvcmsud29yayk7CiAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmNzOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwog Ci0JaWYgKFJFQURfT05DRShkZXZfcHJpdi0+cnBzLmVuYWJsZWQpKQorCWlmIChSRUFEX09OQ0Uo ZGV2X3ByaXYtPnBtLnJwcy5lbmFibGVkKSkKIAkJZ290byBvdXQ7CiAKIAlyY3MgPSBkZXZfcHJp di0+ZW5naW5lW1JDU107CkBAIC04MDcxLDcgKzgwNzYsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVs X2F1dG9lbmFibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogdm9p ZCBpbnRlbF9hdXRvZW5hYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7Ci0JaWYgKFJFQURfT05DRShkZXZfcHJpdi0+cnBzLmVuYWJsZWQpKQorCWlm IChSRUFEX09OQ0UoZGV2X3ByaXYtPnBtLnJwcy5lbmFibGVkKSkKIAkJcmV0dXJuOwogCiAJaWYg KElTX0lST05MQUtFX00oZGV2X3ByaXYpKSB7CkBAIC04MDkxLDcgKzgwOTYsNyBAQCB2b2lkIGlu dGVsX2F1dG9lbmFibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAkJICogcnVudGltZSByZXN1bWUgaXQncyBuZWNlc3NhcnkpLgogCQkgKi8KIAkJaWYg KHF1ZXVlX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsCi0JCQkJICAgICAgICZkZXZfcHJpdi0+ cnBzLmF1dG9lbmFibGVfd29yaywKKwkJCQkgICAgICAgJmRldl9wcml2LT5wbS5hdXRvZW5hYmxl X3dvcmssCiAJCQkJICAgICAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKSkKIAkJCWlu dGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVzdW1lKGRldl9wcml2KTsKIAl9CkBAIC05MTIwLDcgKzkx MjUsNyBAQCBpbnQgc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgKnZhbAogewogCWludCBzdGF0dXM7CiAKLQlXQVJO X09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9jaykpOworCVdBUk5fT04o IW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKSk7CiAKIAkvKiBHRU42X1BD T0RFXyogYXJlIG91dHNpZGUgb2YgdGhlIGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgogCSAqIHVz ZSB0ZSBmdyBJOTE1X1JFQUQgdmFyaWFudHMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2Ygd29yawpA QCAtOTE2Nyw3ICs5MTcyLDcgQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAlpbnQgc3RhdHVzOwogCi0JV0FSTl9PTigh bXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spKTsKKwlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmRldl9wcml2LT5wbS5wY3VfbG9jaykpOwogCiAJLyogR0VONl9QQ09ERV8q IGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JjZXdha2UgZG9tYWluLCB3ZSBjYW4KIAkgKiB1c2UgdGUg ZncgSTkxNV9SRUFEIHZhcmlhbnRzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHdvcmsKQEAgLTky NDQsNyArOTI0OSw3IEBAIGludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCwKIAl1MzIgc3RhdHVzOwogCWlu dCByZXQ7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9j aykpOworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKSk7 CiAKICNkZWZpbmUgQ09ORCBza2xfcGNvZGVfdHJ5X3JlcXVlc3QoZGV2X3ByaXYsIG1ib3gsIHJl cXVlc3QsIHJlcGx5X21hc2ssIHJlcGx5LCBcCiAJCQkJICAgJnN0YXR1cykKQEAgLTkyODYsMzEg KzkyOTEsMzkgQEAgaW50IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiByZXF1ZXN0LAogCiBzdGF0aWMgaW50IGJ5dF9ncHVf ZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpCiB7CisJc3Ry dWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5wbS5ycHM7CisKIAkvKgogCSAqIE4gPSB2 YWwgLSAweGI3CiAJICogU2xvdyA9IEZhc3QgPSBHUExMIHJlZiAqIE4KIAkgKi8KLQlyZXR1cm4g RElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPnJwcy5ncGxsX3JlZl9mcmVxICogKHZhbCAtIDB4 YjcpLCAxMDAwKTsKKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QocnBzLT5ncGxsX3JlZl9mcmVx ICogKHZhbCAtIDB4YjcpLCAxMDAwKTsKIH0KIAogc3RhdGljIGludCBieXRfZnJlcV9vcGNvZGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKQogewotCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVCgxMDAwICogdmFsLCBkZXZfcHJpdi0+cnBzLmdwbGxfcmVmX2ZyZXEp ICsgMHhiNzsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPnBtLnJwczsKKwor CXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCgxMDAwICogdmFsLCBycHMtPmdwbGxfcmVmX2ZyZXEp ICsgMHhiNzsKIH0KIAogc3RhdGljIGludCBjaHZfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKQogeworCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZk ZXZfcHJpdi0+cG0ucnBzOworCiAJLyoKIAkgKiBOID0gdmFsIC8gMgogCSAqIENVIChzbG93KSA9 IENVMnggKGZhc3QpIC8gMiA9IEdQTEwgcmVmICogTiAvIDIKIAkgKi8KLQlyZXR1cm4gRElWX1JP VU5EX0NMT1NFU1QoZGV2X3ByaXYtPnJwcy5ncGxsX3JlZl9mcmVxICogdmFsLCAyICogMiAqIDEw MDApOworCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChycHMtPmdwbGxfcmVmX2ZyZXEgKiB2YWws IDIgKiAyICogMTAwMCk7CiB9CiAKIHN0YXRpYyBpbnQgY2h2X2ZyZXFfb3Bjb2RlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCkKIHsKKwlzdHJ1Y3QgaW50ZWxfcnBz ICpycHMgPSAmZGV2X3ByaXYtPnBtLnJwczsKKwogCS8qIENIViBuZWVkcyBldmVuIHZhbHVlcyAq LwotCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCgyICogMTAwMCAqIHZhbCwgZGV2X3ByaXYtPnJw cy5ncGxsX3JlZl9mcmVxKSAqIDI7CisJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKDIgKiAxMDAw ICogdmFsLCBycHMtPmdwbGxfcmVmX2ZyZXEpICogMjsKIH0KIAogaW50IGludGVsX2dwdV9mcmVx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCkKQEAgLTkzNDEsMTEg KzkzNTQsMTEgQEAgaW50IGludGVsX2ZyZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IHZhbCkKIAogdm9pZCBpbnRlbF9wbV9zZXR1cChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKKwltdXRleF9pbml0KCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCi0JSU5JVF9ERUxB WUVEX1dPUksoJmRldl9wcml2LT5ycHMuYXV0b2VuYWJsZV93b3JrLAorCUlOSVRfREVMQVlFRF9X T1JLKCZkZXZfcHJpdi0+cG0uYXV0b2VuYWJsZV93b3JrLAogCQkJICBfX2ludGVsX2F1dG9lbmFi bGVfZ3RfcG93ZXJzYXZlKTsKLQlhdG9taWNfc2V0KCZkZXZfcHJpdi0+cnBzLm51bV93YWl0ZXJz LCAwKTsKKwlhdG9taWNfc2V0KCZkZXZfcHJpdi0+cG0ucnBzLm51bV93YWl0ZXJzLCAwKTsKIAog CWRldl9wcml2LT5ycG0uc3VzcGVuZGVkID0gZmFsc2U7CiAJYXRvbWljX3NldCgmZGV2X3ByaXYt PnJwbS53YWtlcmVmX2NvdW50LCAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwppbmRleCA4NGM5NDdhLi4xNDE1NGU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCkBAIC03ODUsNyArNzg1LDcgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9wb3dl cl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzdGF0ZSA9IGVuYWJs ZSA/IFBVTklUX1BXUkdUX1BXUl9PTihwb3dlcl93ZWxsX2lkKSA6CiAJCQkgUFVOSVRfUFdSR1Rf UFdSX0dBVEUocG93ZXJfd2VsbF9pZCk7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOworCW11dGV4X2xvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiAKICNkZWZpbmUg Q09ORCBcCiAJKCh2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX1BXUkdUX1NUQVRV UykgJiBtYXNrKSA9PSBzdGF0ZSkKQEAgLTgwNiw3ICs4MDYsNyBAQCBzdGF0aWMgdm9pZCB2bHZf c2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogI3VuZGVm IENPTkQKIAogb3V0OgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5wbS5wY3VfbG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIHZs dl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBA IC04MzMsNyArODMzLDcgQEAgc3RhdGljIGJvb2wgdmx2X3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJbWFzayA9IFBVTklUX1BXUkdUX01BU0so cG93ZXJfd2VsbF9pZCk7CiAJY3RybCA9IFBVTklUX1BXUkdUX1BXUl9PTihwb3dlcl93ZWxsX2lk KTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCXN0YXRlID0gdmx2X3B1bml0X3JlYWQoZGV2X3By aXYsIFBVTklUX1JFR19QV1JHVF9TVEFUVVMpICYgbWFzazsKIAkvKgpAQCAtODUyLDcgKzg1Miw3 IEBAIHN0YXRpYyBib29sIHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCWN0cmwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRf UkVHX1BXUkdUX0NUUkwpICYgbWFzazsKIAlXQVJOX09OKGN0cmwgIT0gc3RhdGUpOwogCi0JbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnBtLnBjdV9sb2NrKTsKIAogCXJldHVybiBlbmFibGVkOwogfQpAQCAtMTM2NCw3ICsxMzY0 LDcgQEAgc3RhdGljIGJvb2wgY2h2X3BpcGVfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlib29sIGVuYWJsZWQ7CiAJdTMyIHN0YXRlLCBjdHJs OwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAJc3RhdGUgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJp diwgUFVOSVRfUkVHX0RTUEZSRVEpICYgRFBfU1NTX01BU0socGlwZSk7CiAJLyoKQEAgLTEzODEs NyArMTM4MSw3IEBAIHN0YXRpYyBib29sIGNodl9waXBlX3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJY3RybCA9IHZsdl9wdW5pdF9yZWFkKGRl dl9wcml2LCBQVU5JVF9SRUdfRFNQRlJFUSkgJiBEUF9TU0NfTUFTSyhwaXBlKTsKIAlXQVJOX09O KGN0cmwgPDwgMTYgIT0gc3RhdGUpOwogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKTsKIAogCXJldHVy biBlbmFibGVkOwogfQpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9w aXBlX3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJc3Rh dGUgPSBlbmFibGUgPyBEUF9TU1NfUFdSX09OKHBpcGUpIDogRFBfU1NTX1BXUl9HQVRFKHBpcGUp OwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogCiAjZGVmaW5lIENPTkQgXAogCSgodmx2X3B1bml0X3Jl YWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKSAmIERQX1NTU19NQVNLKHBpcGUpKSA9PSBz dGF0ZSkKQEAgLTE0MTcsNyArMTQxNyw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfcGlwZV9wb3dl cl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICN1bmRlZiBDT05ECiAK IG91dDoKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cG0ucGN1X2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBjaHZfcGlwZV9w b3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwppbmRleCA3ZDk3MWNiLi42YTcxYTU0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKQEAgLTgxLDcgKzgxLDcgQEAgdTMyIHZs dl9wdW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIp CiB7CiAJdTMyIHZhbCA9IDA7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2 LT5ycHMuaHdfbG9jaykpOworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBt LnBjdV9sb2NrKSk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7CiAJdmx2X3Np ZGViYW5kX3J3KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5JVCwKQEAg LTk1LDcgKzk1LDcgQEAgaW50IHZsdl9wdW5pdF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHUzMiBhZGRyLCB1MzIgdmFsKQogewogCWludCBlcnI7CiAKLQlXQVJOX09O KCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9jaykpOworCVdBUk5fT04oIW11 dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBtLnBjdV9sb2NrKSk7CiAKIAltdXRleF9sb2NrKCZk ZXZfcHJpdi0+c2JfbG9jayk7CiAJZXJyID0gdmx2X3NpZGViYW5kX3J3KGRldl9wcml2LCBQQ0lf REVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5JVCwKQEAgLTEyNSw3ICsxMjUsNyBAQCB1MzIgdmx2 X25jX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBhZGRyKQogewog CXUzMiB2YWwgPSAwOwogCi0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cnBz Lmh3X2xvY2spKTsKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5wbS5wY3Vf bG9jaykpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwogCXZsdl9zaWRlYmFu ZF9ydyhkZXZfcHJpdiwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfTkMsCi0tIAoxLjkuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==