From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI 1/2] drm/i915/perf: Wean ourselves off dev_priv Date: Mon, 7 Oct 2019 15:08:11 +0100 Message-ID: <20191007140812.10963-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA59A6E0CC for ; Mon, 7 Oct 2019 14:08:16 +0000 (UTC) Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 18752638-1500050 for ; Mon, 07 Oct 2019 15:08:13 +0100 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 VXNlIHRoZSBsb2NhbCB1bmNvcmUgYWNjZXNzb3JzIGZvciB0aGUgR1QgcmF0aGVyIHRoYW4gdXNp bmcgdGhlIFtub3Qtc29dCm1hZ2ljIGdsb2JhbCBkZXZfcHJpdiBtbWlvIHJvdXRpbmVzLiBJbiB0 aGUgcHJvY2Vzcywgd2UgYWxzbyB0ZWFjaCB0aGUKcGVyZiBzdHJlYW0gdG8gdXNlIGJhY2twb2lu dGVycyB0byB0aGUgaTkxNV9wZXJmIHJhdGhlciB0aGFuIGRpZ2dpbmcgaXQKb3V0IG9mIGRldl9w cml2LgoKdjI6IFJlYmFzZSBvbnRvIGk5MTVfcGVyZl90eXBlcy5oCgpTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFVtZXNoIE5lcmxpZ2Ug UmFtYXBwYSA8dW1lc2gubmVybGlnZS5yYW1hcHBhQGludGVsLmNvbT4KQ2M6IExpb25lbCBMYW5k d2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IExpb25l bCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4gI3YxCi0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgNTYgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAgIHwgNzIxICsrKysrKysrKysrKy0tLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZl90eXBlcy5oIHwgIDczICsrLQogMyBm aWxlcyBjaGFuZ2VkLCA0MjIgaW5zZXJ0aW9ucygrKSwgNDI4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCmluZGV4IDFiOGZkM2EzOGM2Ni4uZGQwZWI4ZGM0NDkxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTEzMzIsNjEgKzEzMzIsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSBydW50aW1lX3BtOwogCi0Jc3Ry dWN0IHsKLQkJYm9vbCBpbml0aWFsaXplZDsKLQotCQlzdHJ1Y3Qga29iamVjdCAqbWV0cmljc19r b2JqOwotCQlzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqc3lzY3RsX2hlYWRlcjsKLQotCQkvKgot CQkgKiBMb2NrIGFzc29jaWF0ZWQgd2l0aCBhZGRpbmcvbW9kaWZ5aW5nL3JlbW92aW5nIE9BIGNv bmZpZ3MKLQkJICogaW4gZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIuCi0JCSAqLwotCQlzdHJ1 Y3QgbXV0ZXggbWV0cmljc19sb2NrOwotCi0JCS8qCi0JCSAqIExpc3Qgb2YgZHluYW1pYyBjb25m aWd1cmF0aW9ucywgeW91IG5lZWQgdG8gaG9sZAotCQkgKiBkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2xvY2sgdG8gYWNjZXNzIGl0LgotCQkgKi8KLQkJc3RydWN0IGlkciBtZXRyaWNzX2lkcjsKLQot CQkvKgotCQkgKiBMb2NrIGFzc29jaWF0ZWQgd2l0aCBhbnl0aGluZyBiZWxvdyB3aXRoaW4gdGhp cyBzdHJ1Y3R1cmUKLQkJICogZXhjZXB0IGV4Y2x1c2l2ZV9zdHJlYW0uCi0JCSAqLwotCQlzdHJ1 Y3QgbXV0ZXggbG9jazsKLQkJc3RydWN0IGxpc3RfaGVhZCBzdHJlYW1zOwotCi0JCS8qCi0JCSAq IFRoZSBzdHJlYW0gY3VycmVudGx5IHVzaW5nIHRoZSBPQSB1bml0LiBJZiBhY2Nlc3NlZAotCQkg KiBvdXRzaWRlIGEgc3lzY2FsbCBhc3NvY2lhdGVkIHRvIGl0cyBmaWxlCi0JCSAqIGRlc2NyaXB0 b3IsIHlvdSBuZWVkIHRvIGhvbGQKLQkJICogZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXguCi0J CSAqLwotCQlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqZXhjbHVzaXZlX3N0cmVhbTsKLQotCQkv KioKLQkJICogRm9yIHJhdGUgbGltaXRpbmcgYW55IG5vdGlmaWNhdGlvbnMgb2Ygc3B1cmlvdXMK LQkJICogaW52YWxpZCBPQSByZXBvcnRzCi0JCSAqLwotCQlzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRl IHNwdXJpb3VzX3JlcG9ydF9yczsKLQotCQlzdHJ1Y3QgaTkxNV9vYV9jb25maWcgdGVzdF9jb25m aWc7Ci0KLQkJdTMyIGdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7Ci0JCXUzMiBjdHhfb2FjdHhjdHJs X29mZnNldDsKLQkJdTMyIGN0eF9mbGV4ZXUwX29mZnNldDsKLQotCQkvKioKLQkJICogVGhlIFJQ VF9JRC9yZWFzb24gZmllbGQgZm9yIEdlbjgrIGluY2x1ZGVzIGEgYml0Ci0JCSAqIHRvIGRldGVy bWluZSBpZiB0aGUgQ1RYIElEIGluIHRoZSByZXBvcnQgaXMgdmFsaWQKLQkJICogYnV0IHRoZSBz cGVjaWZpYyBiaXQgZGlmZmVycyBiZXR3ZWVuIEdlbiA4IGFuZCA5Ci0JCSAqLwotCQl1MzIgZ2Vu OF92YWxpZF9jdHhfYml0OwotCi0JCXN0cnVjdCBpOTE1X29hX29wcyBvcHM7Ci0JCWNvbnN0IHN0 cnVjdCBpOTE1X29hX2Zvcm1hdCAqb2FfZm9ybWF0czsKLQl9IHBlcmY7CisJc3RydWN0IGk5MTVf cGVyZiBwZXJmOwogCiAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdh Y3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KIAlzdHJ1Y3QgaW50ZWxfZ3QgZ3Q7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IDIzMTM4OGQwNmM4Mi4uNWEyNWJiZWI2Yzdh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMzY3LDggKzM2Nyw3IEBAIHN0cnVjdCBw ZXJmX29wZW5fcHJvcGVydGllcyB7CiAKIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBvYV9w b2xsX2NoZWNrX3RpbWVyX2NiKHN0cnVjdCBocnRpbWVyICpocnRpbWVyKTsKIAotc3RhdGljIHZv aWQgZnJlZV9vYV9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJ ICAgc3RydWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcpCitzdGF0aWMgdm9pZCBmcmVlX29h X2NvbmZpZyhzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKIHsKIAlpZiAoIVBUUl9F UlIob2FfY29uZmlnLT5mbGV4X3JlZ3MpKQogCQlrZnJlZShvYV9jb25maWctPmZsZXhfcmVncyk7 CkBAIC0zNzksNTMgKzM3OCw1MiBAQCBzdGF0aWMgdm9pZCBmcmVlX29hX2NvbmZpZyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJa2ZyZWUob2FfY29uZmlnKTsKIH0KIAotc3Rh dGljIHZvaWQgcHV0X29hX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Ci0JCQkgIHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQorc3RhdGljIHZvaWQgcHV0 X29hX2NvbmZpZyhzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKIHsKIAlpZiAoIWF0 b21pY19kZWNfYW5kX3Rlc3QoJm9hX2NvbmZpZy0+cmVmX2NvdW50KSkKIAkJcmV0dXJuOwogCi0J ZnJlZV9vYV9jb25maWcoZGV2X3ByaXYsIG9hX2NvbmZpZyk7CisJZnJlZV9vYV9jb25maWcob2Ff Y29uZmlnKTsKIH0KIAotc3RhdGljIGludCBnZXRfb2FfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKK3N0YXRpYyBpbnQgZ2V0X29hX2NvbmZpZyhzdHJ1Y3QgaTkxNV9w ZXJmICpwZXJmLAogCQkJIGludCBtZXRyaWNzX3NldCwKIAkJCSBzdHJ1Y3QgaTkxNV9vYV9jb25m aWcgKipvdXRfY29uZmlnKQogewogCWludCByZXQ7CiAKIAlpZiAobWV0cmljc19zZXQgPT0gMSkg ewotCQkqb3V0X2NvbmZpZyA9ICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZzsKLQkJYXRvbWlj X2luYygmZGV2X3ByaXYtPnBlcmYudGVzdF9jb25maWcucmVmX2NvdW50KTsKKwkJKm91dF9jb25m aWcgPSAmcGVyZi0+dGVzdF9jb25maWc7CisJCWF0b21pY19pbmMoJnBlcmYtPnRlc3RfY29uZmln LnJlZl9jb3VudCk7CiAJCXJldHVybiAwOwogCX0KIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJy dXB0aWJsZSgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsKKwlyZXQgPSBtdXRleF9sb2Nr X2ludGVycnVwdGlibGUoJnBlcmYtPm1ldHJpY3NfbG9jayk7CiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAotCSpvdXRfY29uZmlnID0gaWRyX2ZpbmQoJmRldl9wcml2LT5wZXJmLm1ldHJpY3Nf aWRyLCBtZXRyaWNzX3NldCk7CisJKm91dF9jb25maWcgPSBpZHJfZmluZCgmcGVyZi0+bWV0cmlj c19pZHIsIG1ldHJpY3Nfc2V0KTsKIAlpZiAoISpvdXRfY29uZmlnKQogCQlyZXQgPSAtRUlOVkFM OwogCWVsc2UKIAkJYXRvbWljX2luYygmKCpvdXRfY29uZmlnKS0+cmVmX2NvdW50KTsKIAotCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsKKwltdXRleF91bmxvY2so JnBlcmYtPm1ldHJpY3NfbG9jayk7CiAKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdTMyIGdl bjhfb2FfaHdfdGFpbF9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBzdHJlYW0tPmd0LT51bmNvcmU7CiAKLQlyZXR1 cm4gSTkxNV9SRUFEKEdFTjhfT0FUQUlMUFRSKSAmIEdFTjhfT0FUQUlMUFRSX01BU0s7CisJcmV0 dXJuIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOF9PQVRBSUxQVFIpICYgR0VOOF9PQVRB SUxQVFJfTUFTSzsKIH0KIAogc3RhdGljIHUzMiBnZW43X29hX2h3X3RhaWxfcmVhZChzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Ci0JdTMyIG9hc3RhdHVzMSA9IEk5MTVfUkVBRChH RU43X09BU1RBVFVTMSk7CisJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gc3RyZWFtLT5n dC0+dW5jb3JlOworCXUzMiBvYXN0YXR1czEgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdF TjdfT0FTVEFUVVMxKTsKIAogCXJldHVybiBvYXN0YXR1czEgJiBHRU43X09BU1RBVFVTMV9UQUlM X01BU0s7CiB9CkBAIC00NTYsNyArNDU0LDYgQEAgc3RhdGljIHUzMiBnZW43X29hX2h3X3RhaWxf cmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogICovCiBzdGF0aWMgYm9vbCBv YV9idWZmZXJfY2hlY2tfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkK IHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2 OwogCWludCByZXBvcnRfc2l6ZSA9IHN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdF9zaXplOwogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgaW50IGFnZWRfaWR4OwpAQCAtNDc5LDcgKzQ3 Niw3IEBAIHN0YXRpYyBib29sIG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZChzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtKQogCWFnZWRfdGFpbCA9IHN0cmVhbS0+b2FfYnVmZmVyLnRhaWxz W2FnZWRfaWR4XS5vZmZzZXQ7CiAJYWdpbmdfdGFpbCA9IHN0cmVhbS0+b2FfYnVmZmVyLnRhaWxz WyFhZ2VkX2lkeF0ub2Zmc2V0OwogCi0JaHdfdGFpbCA9IGRldl9wcml2LT5wZXJmLm9wcy5vYV9o d190YWlsX3JlYWQoc3RyZWFtKTsKKwlod190YWlsID0gc3RyZWFtLT5wZXJmLT5vcHMub2FfaHdf dGFpbF9yZWFkKHN0cmVhbSk7CiAKIAkvKiBUaGUgdGFpbCBwb2ludGVyIGluY3JlYXNlcyBpbiA2 NCBieXRlIGluY3JlbWVudHMsCiAJICogbm90IGluIHJlcG9ydF9zaXplIHN0ZXBzLi4uCkBAIC02 NTUsNyArNjUyLDcgQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkJICBzaXplX3QgY291bnQsCiAJCQkJICBzaXpl X3QgKm9mZnNldCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJl YW0tPmRldl9wcml2OworCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IHN0cmVhbS0+Z3Qt PnVuY29yZTsKIAlpbnQgcmVwb3J0X3NpemUgPSBzdHJlYW0tPm9hX2J1ZmZlci5mb3JtYXRfc2l6 ZTsKIAl1OCAqb2FfYnVmX2Jhc2UgPSBzdHJlYW0tPm9hX2J1ZmZlci52YWRkcjsKIAl1MzIgZ3R0 X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5vYV9idWZmZXIudm1hKTsKQEAgLTc0 MCw3ICs3MzcsNyBAQCBzdGF0aWMgaW50IGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJcmVhc29uID0gKChyZXBvcnQzMlswXSA+PiBPQVJF UE9SVF9SRUFTT05fU0hJRlQpICYKIAkJCSAgT0FSRVBPUlRfUkVBU09OX01BU0spOwogCQlpZiAo cmVhc29uID09IDApIHsKLQkJCWlmIChfX3JhdGVsaW1pdCgmZGV2X3ByaXYtPnBlcmYuc3B1cmlv dXNfcmVwb3J0X3JzKSkKKwkJCWlmIChfX3JhdGVsaW1pdCgmc3RyZWFtLT5wZXJmLT5zcHVyaW91 c19yZXBvcnRfcnMpKQogCQkJCURSTV9OT1RFKCJTa2lwcGluZyBzcHVyaW91cywgaW52YWxpZCBP QSByZXBvcnRcbiIpOwogCQkJY29udGludWU7CiAJCX0KQEAgLTc1NSw3ICs3NTIsNyBAQCBzdGF0 aWMgaW50IGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSwKIAkJICogTm90ZTogdGhhdCB3ZSBkb24ndCBjbGVhciB0aGUgdmFsaWRfY3R4X2JpdCBz byB1c2Vyc3BhY2UgY2FuCiAJCSAqIHVuZGVyc3RhbmQgdGhhdCB0aGUgSUQgaGFzIGJlZW4gc3F1 YXNoZWQgYnkgdGhlIGtlcm5lbC4KIAkJICovCi0JCWlmICghKHJlcG9ydDMyWzBdICYgZGV2X3By aXYtPnBlcmYuZ2VuOF92YWxpZF9jdHhfYml0KSkKKwkJaWYgKCEocmVwb3J0MzJbMF0gJiBzdHJl YW0tPnBlcmYtPmdlbjhfdmFsaWRfY3R4X2JpdCkpCiAJCQljdHhfaWQgPSByZXBvcnQzMlsyXSA9 IElOVkFMSURfQ1RYX0lEOwogCiAJCS8qCkBAIC03ODksNyArNzg2LDcgQEAgc3RhdGljIGludCBn ZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJ CSAqIHN3aXRjaGVzIHNpbmNlIGl0J3Mgbm90LXVuY29tbW9uIGZvciBwZXJpb2RpYyBzYW1wbGVz IHRvCiAJCSAqIGlkZW50aWZ5IGEgc3dpdGNoIGJlZm9yZSBhbnkgJ2NvbnRleHQgc3dpdGNoJyBy ZXBvcnQuCiAJCSAqLwotCQlpZiAoIWRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0tPmN0 eCB8fAorCQlpZiAoIXN0cmVhbS0+cGVyZi0+ZXhjbHVzaXZlX3N0cmVhbS0+Y3R4IHx8CiAJCSAg ICBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZCA9PSBjdHhfaWQgfHwKIAkJICAgIHN0cmVhbS0+b2Ff YnVmZmVyLmxhc3RfY3R4X2lkID09IHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkIHx8CiAJCSAgICBy ZWFzb24gJiBPQVJFUE9SVF9SRUFTT05fQ1RYX1NXSVRDSCkgewpAQCAtNzk4LDcgKzc5NSw3IEBA IHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtLAogCQkJICogV2hpbGUgZmlsdGVyaW5nIGZvciBhIHNpbmdsZSBjb250ZXh0IHdl IGF2b2lkCiAJCQkgKiBsZWFraW5nIHRoZSBJRHMgb2Ygb3RoZXIgY29udGV4dHMuCiAJCQkgKi8K LQkJCWlmIChkZXZfcHJpdi0+cGVyZi5leGNsdXNpdmVfc3RyZWFtLT5jdHggJiYKKwkJCWlmIChz dHJlYW0tPnBlcmYtPmV4Y2x1c2l2ZV9zdHJlYW0tPmN0eCAmJgogCQkJICAgIHN0cmVhbS0+c3Bl Y2lmaWNfY3R4X2lkICE9IGN0eF9pZCkgewogCQkJCXJlcG9ydDMyWzJdID0gSU5WQUxJRF9DVFhf SUQ7CiAJCQl9CkBAIC04MzAsNyArODI3LDggQEAgc3RhdGljIGludCBnZW44X2FwcGVuZF9vYV9y ZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCSAqLwogCQloZWFkICs9 IGd0dF9vZmZzZXQ7CiAKLQkJSTkxNV9XUklURShHRU44X09BSEVBRFBUUiwgaGVhZCAmIEdFTjhf T0FIRUFEUFRSX01BU0spOworCQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU44X09BSEVB RFBUUiwKKwkJCQkgICBoZWFkICYgR0VOOF9PQUhFQURQVFJfTUFTSyk7CiAJCXN0cmVhbS0+b2Ff YnVmZmVyLmhlYWQgPSBoZWFkOwogCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0cmVhbS0+ b2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7CkBAIC04NjQsMTQgKzg2MiwxNCBAQCBzdGF0aWMg aW50IGdlbjhfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJc2l6 ZV90IGNvdW50LAogCQkJc2l6ZV90ICpvZmZzZXQpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUgPSBzdHJlYW0tPmd0LT51bmNvcmU7CiAJdTMyIG9hc3RhdHVzOwogCWludCByZXQ7CiAK IAlpZiAoV0FSTl9PTighc3RyZWFtLT5vYV9idWZmZXIudmFkZHIpKQogCQlyZXR1cm4gLUVJTzsK IAotCW9hc3RhdHVzID0gSTkxNV9SRUFEKEdFTjhfT0FTVEFUVVMpOworCW9hc3RhdHVzID0gaW50 ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU44X09BU1RBVFVTKTsKIAogCS8qCiAJICogV2UgdHJl YXQgT0FCVUZGRVJfT1ZFUkZMT1cgYXMgYSBzaWduaWZpY2FudCBlcnJvcjoKQEAgLTg5NiwxNCAr ODk0LDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJCURSTV9ERUJVRygiT0EgYnVmZmVyIG92ZXJmbG93IChleHBvbmVudCA9ICVk KTogZm9yY2UgcmVzdGFydFxuIiwKIAkJCSAgc3RyZWFtLT5wZXJpb2RfZXhwb25lbnQpOwogCi0J CWRldl9wcml2LT5wZXJmLm9wcy5vYV9kaXNhYmxlKHN0cmVhbSk7Ci0JCWRldl9wcml2LT5wZXJm Lm9wcy5vYV9lbmFibGUoc3RyZWFtKTsKKwkJc3RyZWFtLT5wZXJmLT5vcHMub2FfZGlzYWJsZShz dHJlYW0pOworCQlzdHJlYW0tPnBlcmYtPm9wcy5vYV9lbmFibGUoc3RyZWFtKTsKIAogCQkvKgog CQkgKiBOb3RlOiAub2FfZW5hYmxlKCkgaXMgZXhwZWN0ZWQgdG8gcmUtaW5pdCB0aGUgb2FidWZm ZXIgYW5kCiAJCSAqIHJlc2V0IEdFTjhfT0FTVEFUVVMgZm9yIHVzCiAJCSAqLwotCQlvYXN0YXR1 cyA9IEk5MTVfUkVBRChHRU44X09BU1RBVFVTKTsKKwkJb2FzdGF0dXMgPSBpbnRlbF91bmNvcmVf cmVhZCh1bmNvcmUsIEdFTjhfT0FTVEFUVVMpOwogCX0KIAogCWlmIChvYXN0YXR1cyAmIEdFTjhf T0FTVEFUVVNfUkVQT1JUX0xPU1QpIHsKQEAgLTkxMSw4ICs5MDksOCBAQCBzdGF0aWMgaW50IGdl bjhfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJCSAgICAgICBE Uk1fSTkxNV9QRVJGX1JFQ09SRF9PQV9SRVBPUlRfTE9TVCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1 cm4gcmV0OwotCQlJOTE1X1dSSVRFKEdFTjhfT0FTVEFUVVMsCi0JCQkgICBvYXN0YXR1cyAmIH5H RU44X09BU1RBVFVTX1JFUE9SVF9MT1NUKTsKKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwg R0VOOF9PQVNUQVRVUywKKwkJCQkgICBvYXN0YXR1cyAmIH5HRU44X09BU1RBVFVTX1JFUE9SVF9M T1NUKTsKIAl9CiAKIAlyZXR1cm4gZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhzdHJlYW0sIGJ1Ziwg Y291bnQsIG9mZnNldCk7CkBAIC05NDMsNyArOTQxLDcgQEAgc3RhdGljIGludCBnZW43X2FwcGVu ZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkJICBzaXpl X3QgY291bnQsCiAJCQkJICBzaXplX3QgKm9mZnNldCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9IHN0cmVhbS0+Z3QtPnVuY29yZTsKIAlpbnQgcmVwb3J0X3NpemUgPSBzdHJlYW0t Pm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKIAl1OCAqb2FfYnVmX2Jhc2UgPSBzdHJlYW0tPm9hX2J1 ZmZlci52YWRkcjsKIAl1MzIgZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5v YV9idWZmZXIudm1hKTsKQEAgLTEwMTcsNyArMTAxNSw3IEBAIHN0YXRpYyBpbnQgZ2VuN19hcHBl bmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkgKiBjb3B5 aW5nIGl0IHRvIHVzZXJzcGFjZS4uLgogCQkgKi8KIAkJaWYgKHJlcG9ydDMyWzBdID09IDApIHsK LQkJCWlmIChfX3JhdGVsaW1pdCgmZGV2X3ByaXYtPnBlcmYuc3B1cmlvdXNfcmVwb3J0X3JzKSkK KwkJCWlmIChfX3JhdGVsaW1pdCgmc3RyZWFtLT5wZXJmLT5zcHVyaW91c19yZXBvcnRfcnMpKQog CQkJCURSTV9OT1RFKCJTa2lwcGluZyBzcHVyaW91cywgaW52YWxpZCBPQSByZXBvcnRcbiIpOwog CQkJY29udGludWU7CiAJCX0KQEAgLTEwNDMsOSArMTA0MSw5IEBAIHN0YXRpYyBpbnQgZ2VuN19h cHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkgKi8K IAkJaGVhZCArPSBndHRfb2Zmc2V0OwogCi0JCUk5MTVfV1JJVEUoR0VON19PQVNUQVRVUzIsCi0J CQkgICAoKGhlYWQgJiBHRU43X09BU1RBVFVTMl9IRUFEX01BU0spIHwKLQkJCSAgICBHRU43X09B U1RBVFVTMl9NRU1fU0VMRUNUX0dHVFQpKTsKKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwg R0VON19PQVNUQVRVUzIsCisJCQkJICAgKGhlYWQgJiBHRU43X09BU1RBVFVTMl9IRUFEX01BU0sp IHwKKwkJCQkgICBHRU43X09BU1RBVFVTMl9NRU1fU0VMRUNUX0dHVFQpOwogCQlzdHJlYW0tPm9h X2J1ZmZlci5oZWFkID0gaGVhZDsKIAogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdHJlYW0t Pm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwpAQCAtMTA3NSwyMSArMTA3MywyMSBAQCBzdGF0 aWMgaW50IGdlbjdfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJ c2l6ZV90IGNvdW50LAogCQkJc2l6ZV90ICpvZmZzZXQpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUgPSBzdHJlYW0tPmd0LT51bmNvcmU7CiAJdTMyIG9hc3RhdHVzMTsKIAlpbnQgcmV0 OwogCiAJaWYgKFdBUk5fT04oIXN0cmVhbS0+b2FfYnVmZmVyLnZhZGRyKSkKIAkJcmV0dXJuIC1F SU87CiAKLQlvYXN0YXR1czEgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzEpOworCW9hc3RhdHVz MSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VON19PQVNUQVRVUzEpOwogCiAJLyogWFhY OiBPbiBIYXN3ZWxsIHdlIGRvbid0IGhhdmUgYSBzYWZlIHdheSB0byBjbGVhciBvYXN0YXR1czEK IAkgKiBiaXRzIHdoaWxlIHRoZSBPQSB1bml0IGlzIGVuYWJsZWQgKHdoaWxlIHRoZSB0YWlsIHBv aW50ZXIKIAkgKiBtYXkgYmUgdXBkYXRlZCBhc3luY2hyb25vdXNseSkgc28gd2UgaWdub3JlIHN0 YXR1cyBiaXRzCiAJICogdGhhdCBoYXZlIGFscmVhZHkgYmVlbiByZXBvcnRlZCB0byB1c2Vyc3Bh Y2UuCiAJICovCi0Jb2FzdGF0dXMxICY9IH5kZXZfcHJpdi0+cGVyZi5nZW43X2xhdGNoZWRfb2Fz dGF0dXMxOworCW9hc3RhdHVzMSAmPSB+c3RyZWFtLT5wZXJmLT5nZW43X2xhdGNoZWRfb2FzdGF0 dXMxOwogCiAJLyogV2UgdHJlYXQgT0FCVUZGRVJfT1ZFUkZMT1cgYXMgYSBzaWduaWZpY2FudCBl cnJvcjoKIAkgKgpAQCAtMTEyMCwxMCArMTExOCwxMCBAQCBzdGF0aWMgaW50IGdlbjdfb2FfcmVh ZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlEUk1fREVCVUcoIk9BIGJ1ZmZl ciBvdmVyZmxvdyAoZXhwb25lbnQgPSAlZCk6IGZvcmNlIHJlc3RhcnRcbiIsCiAJCQkgIHN0cmVh bS0+cGVyaW9kX2V4cG9uZW50KTsKIAotCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZGlzYWJsZShz dHJlYW0pOwotCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5hYmxlKHN0cmVhbSk7CisJCXN0cmVh bS0+cGVyZi0+b3BzLm9hX2Rpc2FibGUoc3RyZWFtKTsKKwkJc3RyZWFtLT5wZXJmLT5vcHMub2Ff ZW5hYmxlKHN0cmVhbSk7CiAKLQkJb2FzdGF0dXMxID0gSTkxNV9SRUFEKEdFTjdfT0FTVEFUVVMx KTsKKwkJb2FzdGF0dXMxID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU43X09BU1RBVFVT MSk7CiAJfQogCiAJaWYgKHVubGlrZWx5KG9hc3RhdHVzMSAmIEdFTjdfT0FTVEFUVVMxX1JFUE9S VF9MT1NUKSkgewpAQCAtMTEzMSw3ICsxMTI5LDcgQEAgc3RhdGljIGludCBnZW43X29hX3JlYWQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCQkgICAgICAgRFJNX0k5MTVfUEVS Rl9SRUNPUkRfT0FfUkVQT1JUX0xPU1QpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKLQkJ ZGV2X3ByaXYtPnBlcmYuZ2VuN19sYXRjaGVkX29hc3RhdHVzMSB8PQorCQlzdHJlYW0tPnBlcmYt PmdlbjdfbGF0Y2hlZF9vYXN0YXR1czEgfD0KIAkJCUdFTjdfT0FTVEFUVVMxX1JFUE9SVF9MT1NU OwogCX0KIApAQCAtMTE5Niw5ICsxMTk0LDcgQEAgc3RhdGljIGludCBpOTE1X29hX3JlYWQoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCXNpemVfdCBjb3VudCwKIAkJCXNpemVf dCAqb2Zmc2V0KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVh bS0+ZGV2X3ByaXY7Ci0KLQlyZXR1cm4gZGV2X3ByaXYtPnBlcmYub3BzLnJlYWQoc3RyZWFtLCBi dWYsIGNvdW50LCBvZmZzZXQpOworCXJldHVybiBzdHJlYW0tPnBlcmYtPm9wcy5yZWFkKHN0cmVh bSwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKIH0KIAogc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpvYV9waW5fY29udGV4dChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQpAQCAtMTIz OSwxNCArMTIzNSwxMyBAQCBzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKm9hX3Bpbl9jb250 ZXh0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAgKi8KIHN0YXRpYyBpbnQgb2Ff Z2V0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlOwogCiAJY2UgPSBvYV9waW5fY29udGV4dChzdHJlYW0pOwogCWlm IChJU19FUlIoY2UpKQogCQlyZXR1cm4gUFRSX0VSUihjZSk7CiAKLQlzd2l0Y2ggKElOVEVMX0dF TihpOTE1KSkgeworCXN3aXRjaCAoSU5URUxfR0VOKGNlLT5lbmdpbmUtPmk5MTUpKSB7CiAJY2Fz ZSA3OiB7CiAJCS8qCiAJCSAqIE9uIEhhc3dlbGwgd2UgZG9uJ3QgZG8gYW55IHBvc3QgcHJvY2Vz c2luZyBvZiB0aGUgcmVwb3J0cwpAQCAtMTI2MCw3ICsxMjU1LDcgQEAgc3RhdGljIGludCBvYV9n ZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCWNhc2Ug ODoKIAljYXNlIDk6CiAJY2FzZSAxMDoKLQkJaWYgKFVTRVNfR1VDX1NVQk1JU1NJT04oaTkxNSkp IHsKKwkJaWYgKFVTRVNfR1VDX1NVQk1JU1NJT04oY2UtPmVuZ2luZS0+aTkxNSkpIHsKIAkJCS8q CiAJCQkgKiBXaGVuIHVzaW5nIEd1QywgdGhlIGNvbnRleHQgZGVzY3JpcHRvciB3ZSB3cml0ZSBp bgogCQkJICogaTkxNSBpcyByZWFkIGJ5IEd1QyBhbmQgcmV3cml0dGVuIGJlZm9yZSBpdCdzCkBA IC0xMjk2LDcgKzEyOTEsNyBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJfQogCiAJZGVmYXVsdDoKLQkJTUlTU0lOR19D QVNFKElOVEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oY2UtPmVuZ2lu ZS0+aTkxNSkpOwogCX0KIAogCWNlLT50YWcgPSBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNr OwpAQCAtMTM0MCwzOCArMTMzNSwzOCBAQCBmcmVlX29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQogCiBzdGF0aWMgdm9pZCBpOTE1X29hX3N0cmVhbV9kZXN0cm95KHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9wZXJmICpwZXJm ID0gc3RyZWFtLT5wZXJmOwogCi0JQlVHX09OKHN0cmVhbSAhPSBkZXZfcHJpdi0+cGVyZi5leGNs dXNpdmVfc3RyZWFtKTsKKwlCVUdfT04oc3RyZWFtICE9IHBlcmYtPmV4Y2x1c2l2ZV9zdHJlYW0p OwogCiAJLyoKIAkgKiBVbnNldCBleGNsdXNpdmVfc3RyZWFtIGZpcnN0LCBpdCB3aWxsIGJlIGNo ZWNrZWQgd2hpbGUgZGlzYWJsaW5nCiAJICogdGhlIG1ldHJpYyBzZXQgb24gZ2VuOCsuCiAJICov Ci0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWRldl9wcml2LT5w ZXJmLmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOwotCWRldl9wcml2LT5wZXJmLm9wcy5kaXNhYmxl X21ldHJpY19zZXQoc3RyZWFtKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKKwltdXRleF9sb2NrKCZwZXJmLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlw ZXJmLT5leGNsdXNpdmVfc3RyZWFtID0gTlVMTDsKKwlwZXJmLT5vcHMuZGlzYWJsZV9tZXRyaWNf c2V0KHN0cmVhbSk7CisJbXV0ZXhfdW5sb2NrKCZwZXJmLT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKIAogCWZyZWVfb2FfYnVmZmVyKHN0cmVhbSk7CiAKLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Ci0JaW50ZWxfcnVudGltZV9w bV9wdXQoJmRldl9wcml2LT5ydW50aW1lX3BtLCBzdHJlYW0tPndha2VyZWYpOworCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KHN0cmVhbS0+Z3QtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CisJ aW50ZWxfcnVudGltZV9wbV9wdXQoc3RyZWFtLT5ndC0+dW5jb3JlLT5ycG0sIHN0cmVhbS0+d2Fr ZXJlZik7CiAKIAlpZiAoc3RyZWFtLT5jdHgpCiAJCW9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cmVh bSk7CiAKLQlwdXRfb2FfY29uZmlnKGRldl9wcml2LCBzdHJlYW0tPm9hX2NvbmZpZyk7CisJcHV0 X29hX2NvbmZpZyhzdHJlYW0tPm9hX2NvbmZpZyk7CiAKLQlpZiAoZGV2X3ByaXYtPnBlcmYuc3B1 cmlvdXNfcmVwb3J0X3JzLm1pc3NlZCkgeworCWlmIChwZXJmLT5zcHVyaW91c19yZXBvcnRfcnMu bWlzc2VkKSB7CiAJCURSTV9OT1RFKCIlZCBzcHVyaW91cyBPQSByZXBvcnQgbm90aWNlcyBzdXBw cmVzc2VkIGR1ZSB0byByYXRlbGltaXRpbmdcbiIsCi0JCQkgZGV2X3ByaXYtPnBlcmYuc3B1cmlv dXNfcmVwb3J0X3JzLm1pc3NlZCk7CisJCQkgcGVyZi0+c3B1cmlvdXNfcmVwb3J0X3JzLm1pc3Nl ZCk7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBnZW43X2luaXRfb2FfYnVmZmVyKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBz dHJlYW0tPmd0LT51bmNvcmU7CiAJdTMyIGd0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHN0 cmVhbS0+b2FfYnVmZmVyLnZtYSk7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIApAQCAtMTM4MCwx MyArMTM3NSwxNCBAQCBzdGF0aWMgdm9pZCBnZW43X2luaXRfb2FfYnVmZmVyKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJLyogUHJlLURldkJEVzogT0FCVUZGRVIgbXVzdCBiZSBz ZXQgd2l0aCBjb3VudGVycyBvZmYsCiAJICogYmVmb3JlIE9BU1RBVFVTMSwgYnV0IGFmdGVyIE9B U1RBVFVTMgogCSAqLwotCUk5MTVfV1JJVEUoR0VON19PQVNUQVRVUzIsCi0JCSAgIGd0dF9vZmZz ZXQgfCBHRU43X09BU1RBVFVTMl9NRU1fU0VMRUNUX0dHVFQpOyAvKiBoZWFkICovCisJaW50ZWxf dW5jb3JlX3dyaXRlKHVuY29yZSwgR0VON19PQVNUQVRVUzIsIC8qIGhlYWQgKi8KKwkJCSAgIGd0 dF9vZmZzZXQgfCBHRU43X09BU1RBVFVTMl9NRU1fU0VMRUNUX0dHVFQpOwogCXN0cmVhbS0+b2Ff YnVmZmVyLmhlYWQgPSBndHRfb2Zmc2V0OwogCi0JSTkxNV9XUklURShHRU43X09BQlVGRkVSLCBn dHRfb2Zmc2V0KTsKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU43X09BQlVGRkVSLCBn dHRfb2Zmc2V0KTsKIAotCUk5MTVfV1JJVEUoR0VON19PQVNUQVRVUzEsIGd0dF9vZmZzZXQgfCBP QUJVRkZFUl9TSVpFXzE2TSk7IC8qIHRhaWwgKi8KKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3Jl LCBHRU43X09BU1RBVFVTMSwgLyogdGFpbCAqLworCQkJICAgZ3R0X29mZnNldCB8IE9BQlVGRkVS X1NJWkVfMTZNKTsKIAogCS8qIE1hcmsgdGhhdCB3ZSBuZWVkIHVwZGF0ZWQgdGFpbCBwb2ludGVy cyB0byByZWFkIGZyb20uLi4gKi8KIAlzdHJlYW0tPm9hX2J1ZmZlci50YWlsc1swXS5vZmZzZXQg PSBJTlZBTElEX1RBSUxfUFRSOwpAQCAtMTM5OCw3ICsxMzk0LDcgQEAgc3RhdGljIHZvaWQgZ2Vu N19pbml0X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCSAqIGFs cmVhZHkgc2VlbiBzaW5jZSB0aGV5IGNhbid0IGJlIGNsZWFyZWQgd2hpbGUgcGVyaW9kaWMKIAkg KiBzYW1wbGluZyBpcyBlbmFibGVkLgogCSAqLwotCWRldl9wcml2LT5wZXJmLmdlbjdfbGF0Y2hl ZF9vYXN0YXR1czEgPSAwOworCXN0cmVhbS0+cGVyZi0+Z2VuN19sYXRjaGVkX29hc3RhdHVzMSA9 IDA7CiAKIAkvKiBOQjogYWx0aG91Z2ggdGhlIE9BIGJ1ZmZlciB3aWxsIGluaXRpYWxseSBiZSBh bGxvY2F0ZWQKIAkgKiB6ZXJvZWQgdmlhIHNobWZzIChhbmQgc28gdGhpcyBtZW1zZXQgaXMgcmVk dW5kYW50IHdoZW4KQEAgLTE0MjEsMTcgKzE0MTcsMTcgQEAgc3RhdGljIHZvaWQgZ2VuN19pbml0 X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCiBzdGF0aWMgdm9p ZCBnZW44X2luaXRfb2FfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsK KwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBzdHJlYW0tPmd0LT51bmNvcmU7CiAJdTMy IGd0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHN0cmVhbS0+b2FfYnVmZmVyLnZtYSk7CiAJ dW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZzdHJlYW0tPm9hX2J1 ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwogCi0JSTkxNV9XUklURShHRU44X09BU1RBVFVTLCAwKTsK LQlJOTE1X1dSSVRFKEdFTjhfT0FIRUFEUFRSLCBndHRfb2Zmc2V0KTsKKwlpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBHRU44X09BU1RBVFVTLCAwKTsKKwlpbnRlbF91bmNvcmVfd3JpdGUodW5j b3JlLCBHRU44X09BSEVBRFBUUiwgZ3R0X29mZnNldCk7CiAJc3RyZWFtLT5vYV9idWZmZXIuaGVh ZCA9IGd0dF9vZmZzZXQ7CiAKLQlJOTE1X1dSSVRFKEdFTjhfT0FCVUZGRVJfVURXLCAwKTsKKwlp bnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU44X09BQlVGRkVSX1VEVywgMCk7CiAKIAkvKgog CSAqIFBSTSBzYXlzOgpAQCAtMTQ0MSw5ICsxNDM3LDkgQEAgc3RhdGljIHZvaWQgZ2VuOF9pbml0 X29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCSAqICB0byBlbmFi bGUgcHJvcGVyIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIG92ZXJmbG93CiAJICogIGJpdC4iCiAJICov Ci0JSTkxNV9XUklURShHRU44X09BQlVGRkVSLCBndHRfb2Zmc2V0IHwKKwlpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBHRU44X09BQlVGRkVSLCBndHRfb2Zmc2V0IHwKIAkJICAgT0FCVUZGRVJf U0laRV8xNk0gfCBHRU44X09BQlVGRkVSX01FTV9TRUxFQ1RfR0dUVCk7Ci0JSTkxNV9XUklURShH RU44X09BVEFJTFBUUiwgZ3R0X29mZnNldCAmIEdFTjhfT0FUQUlMUFRSX01BU0spOworCWludGVs X3VuY29yZV93cml0ZSh1bmNvcmUsIEdFTjhfT0FUQUlMUFRSLCBndHRfb2Zmc2V0ICYgR0VOOF9P QVRBSUxQVFJfTUFTSyk7CiAKIAkvKiBNYXJrIHRoYXQgd2UgbmVlZCB1cGRhdGVkIHRhaWwgcG9p bnRlcnMgdG8gcmVhZCBmcm9tLi4uICovCiAJc3RyZWFtLT5vYV9idWZmZXIudGFpbHNbMF0ub2Zm c2V0ID0gSU5WQUxJRF9UQUlMX1BUUjsKQEAgLTE0ODIsNyArMTQ3OCw2IEBAIHN0YXRpYyB2b2lk IGdlbjhfaW5pdF9vYV9idWZmZXIoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHN0 YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0p CiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJvOwotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJc3RydWN0IGk5MTVfdm1hICp2 bWE7CiAJaW50IHJldDsKIApAQCAtMTQ5Miw3ICsxNDg3LDcgQEAgc3RhdGljIGludCBhbGxvY19v YV9idWZmZXIoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAlCVUlMRF9CVUdfT05f Tk9UX1BPV0VSX09GXzIoT0FfQlVGRkVSX1NJWkUpOwogCUJVSUxEX0JVR19PTihPQV9CVUZGRVJf U0laRSA8IFNaXzEyOEsgfHwgT0FfQlVGRkVSX1NJWkUgPiBTWl8xNk0pOwogCi0JYm8gPSBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtKGRldl9wcml2LCBPQV9CVUZGRVJfU0laRSk7CisJYm8g PSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtKHN0cmVhbS0+cGVyZi0+aTkxNSwgT0FfQlVG RkVSX1NJWkUpOwogCWlmIChJU19FUlIoYm8pKSB7CiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFs bG9jYXRlIE9BIGJ1ZmZlclxuIik7CiAJCXJldHVybiBQVFJfRVJSKGJvKTsKQEAgLTE1MzMsNyAr MTUyOCw3IEBAIHN0YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0pCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgY29uZmlnX29hX3Jl Z3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorc3RhdGljIHZvaWQgY29uZmln X29hX3JlZ3Moc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAogCQkJICAgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnICpyZWdzLAogCQkJICAgdTMyIG5fcmVncykKIHsKQEAgLTE1NDIsNyArMTUz Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ19vYV9yZWdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlmb3IgKGkgPSAwOyBpIDwgbl9yZWdzOyBpKyspIHsKIAkJY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnICpyZWcgPSByZWdzICsgaTsKIAotCQlJOTE1X1dSSVRFKHJlZy0+YWRk ciwgcmVnLT52YWx1ZSk7CisJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIHJlZy0+YWRkciwg cmVnLT52YWx1ZSk7CiAJfQogfQogCkBAIC0xNTc1LDcgKzE1NzAsNyBAQCBzdGF0aWMgdm9pZCBk ZWxheV9hZnRlcl9tdXgodm9pZCkKIAogc3RhdGljIGludCBoc3dfZW5hYmxlX21ldHJpY19zZXQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9IHN0cmVhbS0+Z3QtPnVuY29yZTsKIAljb25zdCBzdHJ1Y3QgaTkxNV9vYV9jb25m aWcgKm9hX2NvbmZpZyA9IHN0cmVhbS0+b2FfY29uZmlnOwogCiAJLyoKQEAgLTE1ODgsMTUgKzE1 ODMsMTUgQEAgc3RhdGljIGludCBoc3dfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSkKIAkgKiBjb3VudCB0aGUgZXZlbnRzIGZyb20gbm9uLXJlbmRlciBk b21haW4uIFVuaXQgbGV2ZWwgY2xvY2sKIAkgKiBnYXRpbmcgZm9yIFJDUyBzaG91bGQgYWxzbyBi ZSBkaXNhYmxlZC4KIAkgKi8KLQlJOTE1X1dSSVRFKEdFTjdfTUlTQ0NQQ1RMLCAoSTkxNV9SRUFE KEdFTjdfTUlTQ0NQQ1RMKSAmCi0JCQkJICAgIH5HRU43X0RPUF9DTE9DS19HQVRFX0VOQUJMRSkp OwotCUk5MTVfV1JJVEUoR0VONl9VQ0dDVEwxLCAoSTkxNV9SRUFEKEdFTjZfVUNHQ1RMMSkgfAot CQkJCSAgR0VONl9DU1VOSVRfQ0xPQ0tfR0FURV9ESVNBQkxFKSk7CisJaW50ZWxfdW5jb3JlX3Jt dyh1bmNvcmUsIEdFTjdfTUlTQ0NQQ1RMLAorCQkJIEdFTjdfRE9QX0NMT0NLX0dBVEVfRU5BQkxF LCAwKTsKKwlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgR0VONl9VQ0dDVEwxLAorCQkJIDAsIEdF TjZfQ1NVTklUX0NMT0NLX0dBVEVfRElTQUJMRSk7CiAKLQljb25maWdfb2FfcmVncyhkZXZfcHJp diwgb2FfY29uZmlnLT5tdXhfcmVncywgb2FfY29uZmlnLT5tdXhfcmVnc19sZW4pOworCWNvbmZp Z19vYV9yZWdzKHVuY29yZSwgb2FfY29uZmlnLT5tdXhfcmVncywgb2FfY29uZmlnLT5tdXhfcmVn c19sZW4pOwogCWRlbGF5X2FmdGVyX211eCgpOwogCi0JY29uZmlnX29hX3JlZ3MoZGV2X3ByaXYs IG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3MsCisJY29uZmlnX29hX3JlZ3ModW5jb3JlLCBvYV9j b25maWctPmJfY291bnRlcl9yZWdzLAogCQkgICAgICAgb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVn c19sZW4pOwogCiAJcmV0dXJuIDA7CkBAIC0xNjA0LDE1ICsxNTk5LDE0IEBAIHN0YXRpYyBpbnQg aHN3X2VuYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAK IHN0YXRpYyB2b2lkIGhzd19kaXNhYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJl YW0tPmRldl9wcml2OworCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IHN0cmVhbS0+Z3Qt PnVuY29yZTsKIAotCUk5MTVfV1JJVEUoR0VONl9VQ0dDVEwxLCAoSTkxNV9SRUFEKEdFTjZfVUNH Q1RMMSkgJgotCQkJCSAgfkdFTjZfQ1NVTklUX0NMT0NLX0dBVEVfRElTQUJMRSkpOwotCUk5MTVf V1JJVEUoR0VON19NSVNDQ1BDVEwsIChJOTE1X1JFQUQoR0VON19NSVNDQ1BDVEwpIHwKLQkJCQkg ICAgR0VON19ET1BfQ0xPQ0tfR0FURV9FTkFCTEUpKTsKKwlpbnRlbF91bmNvcmVfcm13KHVuY29y ZSwgR0VONl9VQ0dDVEwxLAorCQkJIEdFTjZfQ1NVTklUX0NMT0NLX0dBVEVfRElTQUJMRSwgMCk7 CisJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIEdFTjdfTUlTQ0NQQ1RMLAorCQkJIDAsIEdFTjdf RE9QX0NMT0NLX0dBVEVfRU5BQkxFKTsKIAotCUk5MTVfV1JJVEUoR0RUX0NISUNLRU5fQklUUywg KEk5MTVfUkVBRChHRFRfQ0hJQ0tFTl9CSVRTKSAmCi0JCQkJICAgICAgfkdUX05PQV9FTkFCTEUp KTsKKwlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgR0RUX0NISUNLRU5fQklUUywgR1RfTk9BX0VO QUJMRSwgMCk7CiB9CiAKIHN0YXRpYyB1MzIgb2FfY29uZmlnX2ZsZXhfcmVnKGNvbnN0IHN0cnVj dCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnLApAQCAtMTY0Nyw5ICsxNjQxLDggQEAgc3RhdGlj IHZvaWQKIGdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChjb25zdCBzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGNlLT5lbmdpbmUtPmk5 MTU7Ci0JdTMyIGN0eF9vYWN0eGN0cmwgPSBpOTE1LT5wZXJmLmN0eF9vYWN0eGN0cmxfb2Zmc2V0 OwotCXUzMiBjdHhfZmxleGV1MCA9IGk5MTUtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0OworCXUz MiBjdHhfb2FjdHhjdHJsID0gc3RyZWFtLT5wZXJmLT5jdHhfb2FjdHhjdHJsX29mZnNldDsKKwl1 MzIgY3R4X2ZsZXhldTAgPSBzdHJlYW0tPnBlcmYtPmN0eF9mbGV4ZXUwX29mZnNldDsKIAkvKiBU aGUgTU1JTyBvZmZzZXRzIGZvciBGbGV4IEVVIHJlZ2lzdGVycyBhcmVuJ3QgY29udGlndW91cyAq LwogCWk5MTVfcmVnX3QgZmxleF9yZWdzW10gPSB7CiAJCUVVX1BFUkZfQ05UTDAsCkBAIC0xNjcy LDcgKzE2NjUsOCBAQCBnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoY29uc3Qgc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAogCQlyZWdfc3RhdGVbY3R4X2ZsZXhldTAgKyBpICogMiArIDFd ID0KIAkJCW9hX2NvbmZpZ19mbGV4X3JlZyhzdHJlYW0tPm9hX2NvbmZpZywgZmxleF9yZWdzW2ld KTsKIAotCXJlZ19zdGF0ZVtDVFhfUl9QV1JfQ0xLX1NUQVRFXSA9IGludGVsX3NzZXVfbWFrZV9y cGNzKGk5MTUsICZjZS0+c3NldSk7CisJcmVnX3N0YXRlW0NUWF9SX1BXUl9DTEtfU1RBVEVdID0K KwkJaW50ZWxfc3NldV9tYWtlX3JwY3MoY2UtPmVuZ2luZS0+aTkxNSwgJmNlLT5zc2V1KTsKIH0K IAogc3RydWN0IGZsZXggewpAQCAtMTgyNyw5ICsxODIxLDkgQEAgc3RhdGljIGludCBnZW44X2Nv bmZpZ3VyZV9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiBzdGF0aWMgaW50 IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtLAogCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykK IHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBzdHJlYW0tPnBlcmYtPmk5MTU7CiAJLyog VGhlIE1NSU8gb2Zmc2V0cyBmb3IgRmxleCBFVSByZWdpc3RlcnMgYXJlbid0IGNvbnRpZ3VvdXMg Ki8KLQljb25zdCB1MzIgY3R4X2ZsZXhldTAgPSBpOTE1LT5wZXJmLmN0eF9mbGV4ZXUwX29mZnNl dDsKKwljb25zdCB1MzIgY3R4X2ZsZXhldTAgPSBzdHJlYW0tPnBlcmYtPmN0eF9mbGV4ZXUwX29m ZnNldDsKICNkZWZpbmUgY3R4X2ZsZXhldU4oTikgKGN0eF9mbGV4ZXUwICsgMiAqIChOKSArIDEp CiAJc3RydWN0IGZsZXggcmVnc1tdID0gewogCQl7CkBAIC0xODM4LDcgKzE4MzIsNyBAQCBzdGF0 aWMgaW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtLAogCQl9LAogCQl7CiAJCQlHRU44X09BQ1RYQ09OVFJPTCwKLQkJCWk5MTUtPnBl cmYuY3R4X29hY3R4Y3RybF9vZmZzZXQgKyAxLAorCQkJc3RyZWFtLT5wZXJmLT5jdHhfb2FjdHhj dHJsX29mZnNldCArIDEsCiAJCQkoKHN0cmVhbS0+cGVyaW9kX2V4cG9uZW50IDw8IEdFTjhfT0Ff VElNRVJfUEVSSU9EX1NISUZUKSB8CiAJCQkgKHN0cmVhbS0+cGVyaW9kaWMgPyBHRU44X09BX1RJ TUVSX0VOQUJMRSA6IDApIHwKIAkJCSBHRU44X09BX0NPVU5URVJfUkVTVU1FKQpAQCAtMTkyMiw3 ICsxOTE2LDcgQEAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAogc3RhdGljIGludCBnZW44X2VuYWJsZV9tZXRy aWNfc2V0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUgPSBzdHJlYW0tPmd0LT51bmNvcmU7CiAJY29uc3Qgc3RydWN0IGk5MTVf b2FfY29uZmlnICpvYV9jb25maWcgPSBzdHJlYW0tPm9hX2NvbmZpZzsKIAlpbnQgcmV0OwogCkBA IC0xOTQ5LDEwICsxOTQzLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF9lbmFibGVfbWV0cmljX3NldChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCSAqIGJlIHJlYWQgYmFjayBmcm9tIGF1 dG9tYXRpY2FsbHkgdHJpZ2dlcmVkIHJlcG9ydHMsIGFzIHBhcnQgb2YgdGhlCiAJICogUlBUX0lE IGZpZWxkLgogCSAqLwotCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDksIDExKSkgewotCQlJ OTE1X1dSSVRFKEdFTjhfT0FfREVCVUcsCi0JCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9P QV9ERUJVR19ESVNBQkxFX0NMS19SQVRJT19SRVBPUlRTIHwKLQkJCQkJICAgICAgR0VOOV9PQV9E RUJVR19JTkNMVURFX0NMS19SQVRJTykpOworCWlmIChJU19HRU5fUkFOR0Uoc3RyZWFtLT5wZXJm LT5pOTE1LCA5LCAxMSkpIHsKKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgR0VOOF9PQV9E RUJVRywKKwkJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0VOOV9PQV9ERUJVR19ESVNBQkxFX0NM S19SQVRJT19SRVBPUlRTIHwKKwkJCQkJCSAgICAgIEdFTjlfT0FfREVCVUdfSU5DTFVERV9DTEtf UkFUSU8pKTsKIAl9CiAKIAkvKgpAQCAtMTk2NCwxMCArMTk1OCwxMCBAQCBzdGF0aWMgaW50IGdl bjhfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JY29uZmlnX29hX3JlZ3MoZGV2X3ByaXYsIG9hX2Nv bmZpZy0+bXV4X3JlZ3MsIG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuKTsKKwljb25maWdfb2FfcmVn cyh1bmNvcmUsIG9hX2NvbmZpZy0+bXV4X3JlZ3MsIG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuKTsK IAlkZWxheV9hZnRlcl9tdXgoKTsKIAotCWNvbmZpZ19vYV9yZWdzKGRldl9wcml2LCBvYV9jb25m aWctPmJfY291bnRlcl9yZWdzLAorCWNvbmZpZ19vYV9yZWdzKHVuY29yZSwgb2FfY29uZmlnLT5i X2NvdW50ZXJfcmVncywKIAkJICAgICAgIG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuKTsK IAogCXJldHVybiAwOwpAQCAtMTk3NSwzMCArMTk2OSwyOCBAQCBzdGF0aWMgaW50IGdlbjhfZW5h YmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAogc3RhdGlj IHZvaWQgZ2VuOF9kaXNhYmxlX21ldHJpY19zZXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRl dl9wcml2OworCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IHN0cmVhbS0+Z3QtPnVuY29y ZTsKIAogCS8qIFJlc2V0IGFsbCBjb250ZXh0cycgc2xpY2VzL3N1YnNsaWNlcyBjb25maWd1cmF0 aW9ucy4gKi8KIAlnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RyZWFtLCBOVUxMKTsKIAot CUk5MTVfV1JJVEUoR0RUX0NISUNLRU5fQklUUywgKEk5MTVfUkVBRChHRFRfQ0hJQ0tFTl9CSVRT KSAmCi0JCQkJICAgICAgfkdUX05PQV9FTkFCTEUpKTsKKwlpbnRlbF91bmNvcmVfcm13KHVuY29y ZSwgR0RUX0NISUNLRU5fQklUUywgR1RfTk9BX0VOQUJMRSwgMCk7CiB9CiAKIHN0YXRpYyB2b2lk IGdlbjEwX2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3By aXY7CisJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gc3RyZWFtLT5ndC0+dW5jb3JlOwog CiAJLyogUmVzZXQgYWxsIGNvbnRleHRzJyBzbGljZXMvc3Vic2xpY2VzIGNvbmZpZ3VyYXRpb25z LiAqLwogCWdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJlYW0sIE5VTEwpOwogCiAJLyog TWFrZSBzdXJlIHdlIGRpc2FibGUgbm9hIHRvIHNhdmUgcG93ZXIuICovCi0JSTkxNV9XUklURShS UE1fQ09ORklHMSwKLQkJICAgSTkxNV9SRUFEKFJQTV9DT05GSUcxKSAmIH5HRU4xMF9HVF9OT0Ff RU5BQkxFKTsKKwlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgUlBNX0NPTkZJRzEsIEdFTjEwX0dU X05PQV9FTkFCTEUsIDApOwogfQogCiBzdGF0aWMgdm9pZCBnZW43X29hX2VuYWJsZShzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gc3RyZWFtLT5ndC0+dW5jb3JlOwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBz dHJlYW0tPmN0eDsKIAl1MzIgY3R4X2lkID0gc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQ7CiAJYm9v bCBwZXJpb2RpYyA9IHN0cmVhbS0+cGVyaW9kaWM7CkBAIC0yMDE2LDE5ICsyMDA4LDE5IEBAIHN0 YXRpYyB2b2lkIGdlbjdfb2FfZW5hYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0p CiAJICovCiAJZ2VuN19pbml0X29hX2J1ZmZlcihzdHJlYW0pOwogCi0JSTkxNV9XUklURShHRU43 X09BQ09OVFJPTCwKLQkJICAgKGN0eF9pZCAmIEdFTjdfT0FDT05UUk9MX0NUWF9NQVNLKSB8Ci0J CSAgIChwZXJpb2RfZXhwb25lbnQgPDwKLQkJICAgIEdFTjdfT0FDT05UUk9MX1RJTUVSX1BFUklP RF9TSElGVCkgfAotCQkgICAocGVyaW9kaWMgPyBHRU43X09BQ09OVFJPTF9USU1FUl9FTkFCTEUg OiAwKSB8Ci0JCSAgIChyZXBvcnRfZm9ybWF0IDw8IEdFTjdfT0FDT05UUk9MX0ZPUk1BVF9TSElG VCkgfAotCQkgICAoY3R4ID8gR0VON19PQUNPTlRST0xfUEVSX0NUWF9FTkFCTEUgOiAwKSB8Ci0J CSAgIEdFTjdfT0FDT05UUk9MX0VOQUJMRSk7CisJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwg R0VON19PQUNPTlRST0wsCisJCQkgICAoY3R4X2lkICYgR0VON19PQUNPTlRST0xfQ1RYX01BU0sp IHwKKwkJCSAgIChwZXJpb2RfZXhwb25lbnQgPDwKKwkJCSAgICBHRU43X09BQ09OVFJPTF9USU1F Ul9QRVJJT0RfU0hJRlQpIHwKKwkJCSAgIChwZXJpb2RpYyA/IEdFTjdfT0FDT05UUk9MX1RJTUVS X0VOQUJMRSA6IDApIHwKKwkJCSAgIChyZXBvcnRfZm9ybWF0IDw8IEdFTjdfT0FDT05UUk9MX0ZP Uk1BVF9TSElGVCkgfAorCQkJICAgKGN0eCA/IEdFTjdfT0FDT05UUk9MX1BFUl9DVFhfRU5BQkxF IDogMCkgfAorCQkJICAgR0VON19PQUNPTlRST0xfRU5BQkxFKTsKIH0KIAogc3RhdGljIHZvaWQg Z2VuOF9vYV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCXN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IHN0cmVhbS0+Z3QtPnVuY29yZTsKIAl1MzIgcmVwb3J0 X2Zvcm1hdCA9IHN0cmVhbS0+b2FfYnVmZmVyLmZvcm1hdDsKIAogCS8qCkBAIC0yMDQ3LDkgKzIw MzksOSBAQCBzdGF0aWMgdm9pZCBnZW44X29hX2VuYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtKQogCSAqIGZpbHRlcmluZyBhbmQgaW5zdGVhZCBmaWx0ZXIgb24gdGhlIGNwdSBi YXNlZCBvbiB0aGUgY29udGV4dC1pZAogCSAqIGZpZWxkIG9mIHJlcG9ydHMKIAkgKi8KLQlJOTE1 X1dSSVRFKEdFTjhfT0FDT05UUk9MLCAocmVwb3J0X2Zvcm1hdCA8PAotCQkJCSAgICBHRU44X09B X1JFUE9SVF9GT1JNQVRfU0hJRlQpIHwKLQkJCQkgICBHRU44X09BX0NPVU5URVJfRU5BQkxFKTsK KwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHRU44X09BQ09OVFJPTCwKKwkJCSAgIChyZXBv cnRfZm9ybWF0IDw8IEdFTjhfT0FfUkVQT1JUX0ZPUk1BVF9TSElGVCkgfAorCQkJICAgR0VOOF9P QV9DT1VOVEVSX0VOQUJMRSk7CiB9CiAKIC8qKgpAQCAtMjA2Myw5ICsyMDU1LDcgQEAgc3RhdGlj IHZvaWQgZ2VuOF9vYV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKICAq Lwogc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZW5hYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3Ry ZWFtLT5kZXZfcHJpdjsKLQotCWRldl9wcml2LT5wZXJmLm9wcy5vYV9lbmFibGUoc3RyZWFtKTsK KwlzdHJlYW0tPnBlcmYtPm9wcy5vYV9lbmFibGUoc3RyZWFtKTsKIAogCWlmIChzdHJlYW0tPnBl cmlvZGljKQogCQlocnRpbWVyX3N0YXJ0KCZzdHJlYW0tPnBvbGxfY2hlY2tfdGltZXIsCkBAIC0y MDc1LDcgKzIwNjUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX3N0cmVhbV9lbmFibGUoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAogc3RhdGljIHZvaWQgZ2VuN19vYV9kaXNhYmxl KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0Jc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlID0gJnN0cmVhbS0+ZGV2X3ByaXYtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUgPSBzdHJlYW0tPmd0LT51bmNvcmU7CiAKIAlpbnRlbF91bmNvcmVfd3JpdGUo dW5jb3JlLCBHRU43X09BQ09OVFJPTCwgMCk7CiAJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVy KHVuY29yZSwKQEAgLTIwODYsNyArMjA3Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjdfb2FfZGlzYWJs ZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCiBzdGF0aWMgdm9pZCBnZW44X29h X2Rpc2FibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUgPSAmc3RyZWFtLT5kZXZfcHJpdi0+dW5jb3JlOworCXN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZSA9IHN0cmVhbS0+Z3QtPnVuY29yZTsKIAogCWludGVsX3VuY29y ZV93cml0ZSh1bmNvcmUsIEdFTjhfT0FDT05UUk9MLCAwKTsKIAlpZiAoaW50ZWxfd2FpdF9mb3Jf cmVnaXN0ZXIodW5jb3JlLApAQCAtMjEwNSw5ICsyMDk1LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9v YV9kaXNhYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAgKi8KIHN0YXRpYyB2 b2lkIGk5MTVfb2Ffc3RyZWFtX2Rpc2FibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9w cml2OwotCi0JZGV2X3ByaXYtPnBlcmYub3BzLm9hX2Rpc2FibGUoc3RyZWFtKTsKKwlzdHJlYW0t PnBlcmYtPm9wcy5vYV9kaXNhYmxlKHN0cmVhbSk7CiAKIAlpZiAoc3RyZWFtLT5wZXJpb2RpYykK IAkJaHJ0aW1lcl9jYW5jZWwoJnN0cmVhbS0+cG9sbF9jaGVja190aW1lcik7CkBAIC0yMTQ0LDcg KzIxMzIsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3Bh cmFtICpwYXJhbSwKIAkJCSAgICAgICBzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMgKnByb3Bz KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3By aXY7CisJc3RydWN0IGk5MTVfcGVyZiAqcGVyZiA9IHN0cmVhbS0+cGVyZjsKIAlpbnQgZm9ybWF0 X3NpemU7CiAJaW50IHJldDsKIApAQCAtMjE1Miw3ICsyMTQwLDcgQEAgc3RhdGljIGludCBpOTE1 X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJICogcmVh c29uIHRoZW4gZG9uJ3QgbGV0IHVzZXJzcGFjZSB0cnkgdGhlaXIgbHVjayB3aXRoIGNvbmZpZwog CSAqIElEcwogCSAqLwotCWlmICghZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKSB7CisJaWYg KCFwZXJmLT5tZXRyaWNzX2tvYmopIHsKIAkJRFJNX0RFQlVHKCJPQSBtZXRyaWNzIHdlcmVuJ3Qg YWR2ZXJ0aXNlZCB2aWEgc3lzZnNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0yMTYy LDcgKzIxNTAsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JaWYgKCFkZXZf cHJpdi0+cGVyZi5vcHMuZW5hYmxlX21ldHJpY19zZXQpIHsKKwlpZiAoIXBlcmYtPm9wcy5lbmFi bGVfbWV0cmljX3NldCkgewogCQlEUk1fREVCVUcoIk9BIHVuaXQgbm90IHN1cHBvcnRlZFxuIik7 CiAJCXJldHVybiAtRU5PREVWOwogCX0KQEAgLTIxNzEsNyArMjE1OSw3IEBAIHN0YXRpYyBpbnQg aTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCSAq IGNvdW50ZXIgcmVwb3J0cyBhbmQgbWFyc2hhbCB0byB0aGUgYXBwcm9wcmlhdGUgY2xpZW50CiAJ ICogd2UgY3VycmVudGx5IG9ubHkgYWxsb3cgZXhjbHVzaXZlIGFjY2VzcwogCSAqLwotCWlmIChk ZXZfcHJpdi0+cGVyZi5leGNsdXNpdmVfc3RyZWFtKSB7CisJaWYgKHBlcmYtPmV4Y2x1c2l2ZV9z dHJlYW0pIHsKIAkJRFJNX0RFQlVHKCJPQSB1bml0IGFscmVhZHkgaW4gdXNlXG4iKTsKIAkJcmV0 dXJuIC1FQlVTWTsKIAl9CkBAIC0yMTgzLDcgKzIxNzEsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ff c3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAogCXN0cmVhbS0+ c2FtcGxlX3NpemUgPSBzaXplb2Yoc3RydWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlcik7 CiAKLQlmb3JtYXRfc2l6ZSA9IGRldl9wcml2LT5wZXJmLm9hX2Zvcm1hdHNbcHJvcHMtPm9hX2Zv cm1hdF0uc2l6ZTsKKwlmb3JtYXRfc2l6ZSA9IHBlcmYtPm9hX2Zvcm1hdHNbcHJvcHMtPm9hX2Zv cm1hdF0uc2l6ZTsKIAogCXN0cmVhbS0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9PQV9SRVBPUlQ7 CiAJc3RyZWFtLT5zYW1wbGVfc2l6ZSArPSBmb3JtYXRfc2l6ZTsKQEAgLTIxOTMsNyArMjE4MSw3 IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtLAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXN0cmVhbS0+b2FfYnVmZmVyLmZvcm1h dCA9Ci0JCWRldl9wcml2LT5wZXJmLm9hX2Zvcm1hdHNbcHJvcHMtPm9hX2Zvcm1hdF0uZm9ybWF0 OworCQlwZXJmLT5vYV9mb3JtYXRzW3Byb3BzLT5vYV9mb3JtYXRdLmZvcm1hdDsKIAogCXN0cmVh bS0+cGVyaW9kaWMgPSBwcm9wcy0+b2FfcGVyaW9kaWM7CiAJaWYgKHN0cmVhbS0+cGVyaW9kaWMp CkBAIC0yMjA3LDcgKzIxOTUsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJfQogCX0KIAotCXJldCA9IGdldF9vYV9j b25maWcoZGV2X3ByaXYsIHByb3BzLT5tZXRyaWNzX3NldCwgJnN0cmVhbS0+b2FfY29uZmlnKTsK KwlyZXQgPSBnZXRfb2FfY29uZmlnKHBlcmYsIHByb3BzLT5tZXRyaWNzX3NldCwgJnN0cmVhbS0+ b2FfY29uZmlnKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVRygiSW52YWxpZCBPQSBjb25maWcg aWQ9JWlcbiIsIHByb3BzLT5tZXRyaWNzX3NldCk7CiAJCWdvdG8gZXJyX2NvbmZpZzsKQEAgLTIy MjUsMjcgKzIyMTMsMjcgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJICogICBJbiBvdXIgY2FzZSB3ZSBhcmUgZXhwZWN0 aW5nIHRoYXQgdGFraW5nIHBtICsgRk9SQ0VXQUtFCiAJICogICByZWZlcmVuY2VzIHdpbGwgZWZm ZWN0aXZlbHkgZGlzYWJsZSBSQzYuCiAJICovCi0Jc3RyZWFtLT53YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsKLQlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX2dldCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CisJc3RyZWFtLT53YWtl cmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoc3RyZWFtLT5ndC0+dW5jb3JlLT5ycG0pOworCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHN0cmVhbS0+Z3QtPnVuY29yZSwgRk9SQ0VXQUtFX0FM TCk7CiAKIAlyZXQgPSBhbGxvY19vYV9idWZmZXIoc3RyZWFtKTsKIAlpZiAocmV0KQogCQlnb3Rv IGVycl9vYV9idWZfYWxsb2M7CiAKLQlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZGV2X3ByaXYtPmRybSk7CisJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUo JnN0cmVhbS0+cGVyZi0+aTkxNS0+ZHJtKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9sb2NrOwog CiAJc3RyZWFtLT5vcHMgPSAmaTkxNV9vYV9zdHJlYW1fb3BzOwotCWRldl9wcml2LT5wZXJmLmV4 Y2x1c2l2ZV9zdHJlYW0gPSBzdHJlYW07CisJcGVyZi0+ZXhjbHVzaXZlX3N0cmVhbSA9IHN0cmVh bTsKIAotCXJldCA9IGRldl9wcml2LT5wZXJmLm9wcy5lbmFibGVfbWV0cmljX3NldChzdHJlYW0p OworCXJldCA9IHBlcmYtPm9wcy5lbmFibGVfbWV0cmljX3NldChzdHJlYW0pOwogCWlmIChyZXQp IHsKIAkJRFJNX0RFQlVHKCJVbmFibGUgdG8gZW5hYmxlIG1ldHJpYyBzZXRcbiIpOwogCQlnb3Rv IGVycl9lbmFibGU7CiAJfQogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7CisJbXV0ZXhfdW5sb2NrKCZzdHJlYW0tPnBlcmYtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwogCiAJaHJ0aW1lcl9pbml0KCZzdHJlYW0tPnBvbGxfY2hlY2tfdGltZXIsCiAJCSAgICAg Q0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKQEAgLTIyNTYsMTggKzIyNDQsMTgg QEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJcmV0dXJuIDA7CiAKIGVycl9lbmFibGU6Ci0JZGV2X3ByaXYtPnBlcmYuZXhj bHVzaXZlX3N0cmVhbSA9IE5VTEw7Ci0JZGV2X3ByaXYtPnBlcmYub3BzLmRpc2FibGVfbWV0cmlj X3NldChzdHJlYW0pOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCXBlcmYtPmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOworCXBlcmYtPm9wcy5kaXNhYmxlX21l dHJpY19zZXQoc3RyZWFtKTsKKwltdXRleF91bmxvY2soJnN0cmVhbS0+cGVyZi0+aTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CiAKIGVycl9sb2NrOgogCWZyZWVfb2FfYnVmZmVyKHN0cmVhbSk7CiAK IGVycl9vYV9idWZfYWxsb2M6Ci0JcHV0X29hX2NvbmZpZyhkZXZfcHJpdiwgc3RyZWFtLT5vYV9j b25maWcpOworCXB1dF9vYV9jb25maWcoc3RyZWFtLT5vYV9jb25maWcpOwogCi0JaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwotCWlu dGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgc3RyZWFtLT53YWtlcmVm KTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChzdHJlYW0tPmd0LT51bmNvcmUsIEZPUkNF V0FLRV9BTEwpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KHN0cmVhbS0+Z3QtPnVuY29yZS0+cnBt LCBzdHJlYW0tPndha2VyZWYpOwogCiBlcnJfY29uZmlnOgogCWlmIChzdHJlYW0tPmN0eCkKQEAg LTIzNTksNyArMjM0Nyw3IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfcGVyZl9yZWFkKHN0cnVjdCBm aWxlICpmaWxlLAogCQkJICAgICAgbG9mZl90ICpwcG9zKQogewogCXN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0gPSBmaWxlLT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9wZXJmICpw ZXJmID0gc3RyZWFtLT5wZXJmOwogCXNzaXplX3QgcmV0OwogCiAJLyogVG8gZW5zdXJlIGl0J3Mg aGFuZGxlZCBjb25zaXN0ZW50bHkgd2Ugc2ltcGx5IHRyZWF0IGFsbCByZWFkcyBvZiBhCkBAIC0y MzgyLDE1ICsyMzcwLDE1IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfcGVyZl9yZWFkKHN0cnVjdCBm aWxlICpmaWxlLAogCQkJaWYgKHJldCkKIAkJCQlyZXR1cm4gcmV0OwogCi0JCQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKKwkJCW11dGV4X2xvY2soJnBlcmYtPmxvY2spOwogCQkJ cmV0ID0gaTkxNV9wZXJmX3JlYWRfbG9ja2VkKHN0cmVhbSwgZmlsZSwKIAkJCQkJCSAgICBidWYs IGNvdW50LCBwcG9zKTsKLQkJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBlcmYubG9jayk7CisJ CQltdXRleF91bmxvY2soJnBlcmYtPmxvY2spOwogCQl9IHdoaWxlIChyZXQgPT0gLUVBR0FJTik7 CiAJfSBlbHNlIHsKLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBlcmYubG9jayk7CisJCW11dGV4 X2xvY2soJnBlcmYtPmxvY2spOwogCQlyZXQgPSBpOTE1X3BlcmZfcmVhZF9sb2NrZWQoc3RyZWFt LCBmaWxlLCBidWYsIGNvdW50LCBwcG9zKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVy Zi5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZwZXJmLT5sb2NrKTsKIAl9CiAKIAkvKiBXZSBhbGxv dyB0aGUgcG9sbCBjaGVja2luZyB0byBzb21ldGltZXMgcmVwb3J0IGZhbHNlIHBvc2l0aXZlIEVQ T0xMSU4KQEAgLTI0MjgsNyArMjQxNiw2IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBv YV9wb2xsX2NoZWNrX3RpbWVyX2NiKHN0cnVjdCBocnRpbWVyICpocnRpbWVyKQogCiAvKioKICAq IGk5MTVfcGVyZl9wb2xsX2xvY2tlZCAtIHBvbGxfd2FpdCgpIHdpdGggYSBzdWl0YWJsZSB3YWl0 IHF1ZXVlIGZvciBzdHJlYW0KLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKICAq IEBzdHJlYW06IEFuIGk5MTUgcGVyZiBzdHJlYW0KICAqIEBmaWxlOiBBbiBpOTE1IHBlcmYgc3Ry ZWFtIGZpbGUKICAqIEB3YWl0OiBwb2xsKCkgc3RhdGUgdGFibGUKQEAgLTI0MzcsMTUgKzI0MjQs MTQgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IG9hX3BvbGxfY2hlY2tfdGltZXJfY2Io c3RydWN0IGhydGltZXIgKmhydGltZXIpCiAgKiAmaTkxNV9wZXJmX3N0cmVhbV9vcHMtPnBvbGxf d2FpdCB0byBjYWxsIHBvbGxfd2FpdCgpIHdpdGggYSB3YWl0IHF1ZXVlIHRoYXQKICAqIHdpbGwg YmUgd29rZW4gZm9yIG5ldyBzdHJlYW0gZGF0YS4KICAqCi0gKiBOb3RlOiBUaGUgJmRybV9pOTE1 X3ByaXZhdGUtPnBlcmYubG9jayBtdXRleCBoYXMgYmVlbiB0YWtlbiB0byBzZXJpYWxpemUKKyAq IE5vdGU6IFRoZSAmcGVyZi0+bG9jayBtdXRleCBoYXMgYmVlbiB0YWtlbiB0byBzZXJpYWxpemUK ICAqIHdpdGggYW55IG5vbi1maWxlLW9wZXJhdGlvbiBkcml2ZXIgaG9va3MuCiAgKgogICogUmV0 dXJuczogYW55IHBvbGwgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHdpdGhvdXQgc2xlZXBpbmcKICAq Lwotc3RhdGljIF9fcG9sbF90IGk5MTVfcGVyZl9wb2xsX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCSAgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSwKLQkJCQkJICBzdHJ1Y3QgZmlsZSAqZmlsZSwKLQkJCQkJICBwb2xsX3RhYmxlICp3YWl0KQor c3RhdGljIF9fcG9sbF90IGk5MTVfcGVyZl9wb2xsX2xvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtLAorCQkJCSAgICAgIHN0cnVjdCBmaWxlICpmaWxlLAorCQkJCSAgICAgIHBv bGxfdGFibGUgKndhaXQpCiB7CiAJX19wb2xsX3QgZXZlbnRzID0gMDsKIApAQCAtMjQ3OSwxMiAr MjQ2NSwxMiBAQCBzdGF0aWMgX19wb2xsX3QgaTkxNV9wZXJmX3BvbGxfbG9ja2VkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBfX3BvbGxfdCBpOTE1X3BlcmZfcG9s bChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKIHsKIAlzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJc3RydWN0IGk5MTVfcGVy ZiAqcGVyZiA9IHN0cmVhbS0+cGVyZjsKIAlfX3BvbGxfdCByZXQ7CiAKLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cGVyZi5sb2NrKTsKLQlyZXQgPSBpOTE1X3BlcmZfcG9sbF9sb2NrZWQoZGV2X3By aXYsIHN0cmVhbSwgZmlsZSwgd2FpdCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5s b2NrKTsKKwltdXRleF9sb2NrKCZwZXJmLT5sb2NrKTsKKwlyZXQgPSBpOTE1X3BlcmZfcG9sbF9s b2NrZWQoc3RyZWFtLCBmaWxlLCB3YWl0KTsKKwltdXRleF91bmxvY2soJnBlcmYtPmxvY2spOwog CiAJcmV0dXJuIHJldDsKIH0KQEAgLTI1NDMsNyArMjUyOSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVf cGVyZl9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogICog QGNtZDogdGhlIGlvY3RsIHJlcXVlc3QKICAqIEBhcmc6IHRoZSBpb2N0bCBkYXRhCiAgKgotICog Tm90ZTogVGhlICZkcm1faTkxNV9wcml2YXRlLT5wZXJmLmxvY2sgbXV0ZXggaGFzIGJlZW4gdGFr ZW4gdG8gc2VyaWFsaXplCisgKiBOb3RlOiBUaGUgJnBlcmYtPmxvY2sgbXV0ZXggaGFzIGJlZW4g dGFrZW4gdG8gc2VyaWFsaXplCiAgKiB3aXRoIGFueSBub24tZmlsZS1vcGVyYXRpb24gZHJpdmVy IGhvb2tzLgogICoKICAqIFJldHVybnM6IHplcm8gb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVy cm9yIGNvZGUuIFJldHVybnMgLUVJTlZBTCBmb3IKQEAgLTI1ODEsMTIgKzI1NjcsMTIgQEAgc3Rh dGljIGxvbmcgaTkxNV9wZXJmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLAogCQkJICAgIHVuc2ln bmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0gPSBmaWxl LT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3Ry ZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmID0gc3RyZWFtLT5wZXJmOwog CWxvbmcgcmV0OwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBlcmYubG9jayk7CisJbXV0ZXhf bG9jaygmcGVyZi0+bG9jayk7CiAJcmV0ID0gaTkxNV9wZXJmX2lvY3RsX2xvY2tlZChzdHJlYW0s IGNtZCwgYXJnKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOworCW11dGV4 X3VubG9jaygmcGVyZi0+bG9jayk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMjU5OCw3ICsyNTg0 LDcgQEAgc3RhdGljIGxvbmcgaTkxNV9wZXJmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLAogICog RnJlZXMgYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGk5MTUgcGVyZiBA c3RyZWFtLCBkaXNhYmxpbmcKICAqIGFueSBhc3NvY2lhdGVkIGRhdGEgY2FwdHVyZSBpbiB0aGUg cHJvY2Vzcy4KICAqCi0gKiBOb3RlOiBUaGUgJmRybV9pOTE1X3ByaXZhdGUtPnBlcmYubG9jayBt dXRleCBoYXMgYmVlbiB0YWtlbiB0byBzZXJpYWxpemUKKyAqIE5vdGU6IFRoZSAmcGVyZi0+bG9j ayBtdXRleCBoYXMgYmVlbiB0YWtlbiB0byBzZXJpYWxpemUKICAqIHdpdGggYW55IG5vbi1maWxl LW9wZXJhdGlvbiBkcml2ZXIgaG9va3MuCiAgKi8KIHN0YXRpYyB2b2lkIGk5MTVfcGVyZl9kZXN0 cm95X2xvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQpAQCAtMjYzMSwxNCAr MjYxNywxNCBAQCBzdGF0aWMgdm9pZCBpOTE1X3BlcmZfZGVzdHJveV9sb2NrZWQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHN0YXRpYyBpbnQgaTkxNV9wZXJmX3JlbGVhc2Uoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCXN0cnVjdCBpOTE1X3BlcmYg KnBlcmYgPSBzdHJlYW0tPnBlcmY7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGVyZi5sb2Nr KTsKKwltdXRleF9sb2NrKCZwZXJmLT5sb2NrKTsKIAlpOTE1X3BlcmZfZGVzdHJveV9sb2NrZWQo c3RyZWFtKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOworCW11dGV4X3Vu bG9jaygmcGVyZi0+bG9jayk7CiAKIAkvKiBSZWxlYXNlIHRoZSByZWZlcmVuY2UgdGhlIHBlcmYg c3RyZWFtIGtlcHQgb24gdGhlIGRyaXZlci4gKi8KLQlkcm1fZGV2X3B1dCgmZGV2X3ByaXYtPmRy bSk7CisJZHJtX2Rldl9wdXQoJnBlcmYtPmk5MTUtPmRybSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTI2NjAsNyArMjY0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZv cHMgPSB7CiAKIC8qKgogICogaTkxNV9wZXJmX29wZW5faW9jdGxfbG9ja2VkIC0gRFJNIGlvY3Rs KCkgZm9yIHVzZXJzcGFjZSB0byBvcGVuIGEgc3RyZWFtIEZECi0gKiBAZGV2X3ByaXY6IGk5MTUg ZGV2aWNlIGluc3RhbmNlCisgKiBAcGVyZjogaTkxNSBwZXJmIGluc3RhbmNlCiAgKiBAcGFyYW06 IFRoZSBvcGVuIHBhcmFtZXRlcnMgcGFzc2VkIHRvICdEUk1fSTkxNV9QRVJGX09QRU5gCiAgKiBA cHJvcHM6IGluZGl2aWR1YWxseSB2YWxpZGF0ZWQgdTY0IHByb3BlcnR5IHZhbHVlIHBhaXJzCiAg KiBAZmlsZTogZHJtIGZpbGUKQEAgLTI2NjgsNyArMjY1NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7CiAgKiBTZWUgaTkxNV9wZXJmX2lvY3RsX29wZW4o KSBmb3IgaW50ZXJmYWNlIGRldGFpbHMuCiAgKgogICogSW1wbGVtZW50cyBmdXJ0aGVyIHN0cmVh bSBjb25maWcgdmFsaWRhdGlvbiBhbmQgc3RyZWFtIGluaXRpYWxpemF0aW9uIG9uCi0gKiBiZWhh bGYgb2YgaTkxNV9wZXJmX29wZW5faW9jdGwoKSB3aXRoIHRoZSAmZHJtX2k5MTVfcHJpdmF0ZS0+ cGVyZi5sb2NrIG11dGV4CisgKiBiZWhhbGYgb2YgaTkxNV9wZXJmX29wZW5faW9jdGwoKSB3aXRo IHRoZSAmcGVyZi0+bG9jayBtdXRleAogICogdGFrZW4gdG8gc2VyaWFsaXplIHdpdGggYW55IG5v bi1maWxlLW9wZXJhdGlvbiBkcml2ZXIgaG9va3MuCiAgKgogICogTm90ZTogYXQgdGhpcyBwb2lu dCB0aGUgQHByb3BzIGhhdmUgb25seSBiZWVuIHZhbGlkYXRlZCBpbiBpc29sYXRpb24gYW5kCkBA IC0yNjgzLDcgKzI2NjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBm b3BzID0gewogICogUmV0dXJuczogemVybyBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3Ig Y29kZS4KICAqLwogc3RhdGljIGludAotaTkxNV9wZXJmX29wZW5faW9jdGxfbG9ja2VkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKK2k5MTVfcGVyZl9vcGVuX2lvY3RsX2xvY2tl ZChzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmLAogCQkJICAgIHN0cnVjdCBkcm1faTkxNV9wZXJmX29w ZW5fcGFyYW0gKnBhcmFtLAogCQkJICAgIHN0cnVjdCBwZXJmX29wZW5fcHJvcGVydGllcyAqcHJv cHMsCiAJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQpAQCAtMjcyMiw3ICsyNzA4LDcgQEAg aTkxNV9wZXJmX29wZW5faW9jdGxfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkgKiBNSV9SRVBPUlRfUEVSRl9DT1VOVCBjb21tYW5kcyBhbmQgc28gY29uc2lkZXIg aXQgYSBwcml2aWxlZ2VkIG9wIHRvCiAJICogZW5hYmxlIHRoZSBPQSB1bml0IGJ5IGRlZmF1bHQu CiAJICovCi0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIHNwZWNpZmljX2N0eCkKKwlpZiAo SVNfSEFTV0VMTChwZXJmLT5pOTE1KSAmJiBzcGVjaWZpY19jdHgpCiAJCXByaXZpbGVnZWRfb3Ag PSBmYWxzZTsKIAogCS8qIFNpbWlsYXIgdG8gcGVyZidzIGtlcm5lbC5wZXJmX3BhcmFub2lkX2Nw dSBzeXNjdGwgb3B0aW9uCkBAIC0yNzQzLDcgKzI3MjksOCBAQCBpOTE1X3BlcmZfb3Blbl9pb2N0 bF9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlnb3RvIGVycl9j dHg7CiAJfQogCi0Jc3RyZWFtLT5kZXZfcHJpdiA9IGRldl9wcml2OworCXN0cmVhbS0+cGVyZiA9 IHBlcmY7CisJc3RyZWFtLT5ndCA9ICZwZXJmLT5pOTE1LT5ndDsKIAlzdHJlYW0tPmN0eCA9IHNw ZWNpZmljX2N0eDsKIAogCXJldCA9IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RyZWFtLCBwYXJhbSwg cHJvcHMpOwpAQCAtMjc1OSw3ICsyNzQ2LDcgQEAgaTkxNV9wZXJmX29wZW5faW9jdGxfbG9ja2Vk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZ290byBlcnJfZmxhZ3M7CiAJ fQogCi0JbGlzdF9hZGQoJnN0cmVhbS0+bGluaywgJmRldl9wcml2LT5wZXJmLnN0cmVhbXMpOwor CWxpc3RfYWRkKCZzdHJlYW0tPmxpbmssICZwZXJmLT5zdHJlYW1zKTsKIAogCWlmIChwYXJhbS0+ ZmxhZ3MgJiBJOTE1X1BFUkZfRkxBR19GRF9DTE9FWEVDKQogCQlmX2ZsYWdzIHw9IE9fQ0xPRVhF QzsKQEAgLTI3NzgsNyArMjc2NSw3IEBAIGk5MTVfcGVyZl9vcGVuX2lvY3RsX2xvY2tlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogVGFrZSBhIHJlZmVyZW5jZSBvbiB0 aGUgZHJpdmVyIHRoYXQgd2lsbCBiZSBrZXB0IHdpdGggc3RyZWFtX2ZkCiAJICogdW50aWwgaXRz IHJlbGVhc2UuCiAJICovCi0JZHJtX2Rldl9nZXQoJmRldl9wcml2LT5kcm0pOworCWRybV9kZXZf Z2V0KCZwZXJmLT5pOTE1LT5kcm0pOwogCiAJcmV0dXJuIHN0cmVhbV9mZDsKIApAQCAtMjc5Niwx NSArMjc4MywxNSBAQCBpOTE1X3BlcmZfb3Blbl9pb2N0bF9sb2NrZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1NjQgb2FfZXhw b25lbnRfdG9fbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZXhwb25l bnQpCitzdGF0aWMgdTY0IG9hX2V4cG9uZW50X3RvX25zKHN0cnVjdCBpOTE1X3BlcmYgKnBlcmYs IGludCBleHBvbmVudCkKIHsKIAlyZXR1cm4gZGl2NjRfdTY0KDEwMDAwMDAwMDBVTEwgKiAoMlVM TCA8PCBleHBvbmVudCksCi0JCQkgMTAwMFVMTCAqIFJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPmNz X3RpbWVzdGFtcF9mcmVxdWVuY3lfa2h6KTsKKwkJCSAxMDAwVUxMICogUlVOVElNRV9JTkZPKHBl cmYtPmk5MTUpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2toeik7CiB9CiAKIC8qKgogICogcmVh ZF9wcm9wZXJ0aWVzX3VubG9ja2VkIC0gdmFsaWRhdGUgKyBjb3B5IHVzZXJzcGFjZSBzdHJlYW0g b3BlbiBwcm9wZXJ0aWVzCi0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCisgKiBA cGVyZjogaTkxNSBwZXJmIGluc3RhbmNlCiAgKiBAdXByb3BzOiBUaGUgYXJyYXkgb2YgdTY0IGtl eSB2YWx1ZSBwYWlycyBnaXZlbiBieSB1c2Vyc3BhY2UKICAqIEBuX3Byb3BzOiBUaGUgbnVtYmVy IG9mIGtleSB2YWx1ZSBwYWlycyBleHBlY3RlZCBpbiBAdXByb3BzCiAgKiBAcHJvcHM6IFRoZSBz dHJlYW0gY29uZmlndXJhdGlvbiBidWlsdCB1cCB3aGlsZSB2YWxpZGF0aW5nIHByb3BlcnRpZXMK QEAgLTI4MTcsNyArMjgwNCw3IEBAIHN0YXRpYyB1NjQgb2FfZXhwb25lbnRfdG9fbnMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZXhwb25lbnQpCiAgKiB3ZSBzaG91bGRu J3QgdmFsaWRhdGUgb3IgYXNzdW1lIGFueXRoaW5nIGFib3V0IG9yZGVyaW5nIGhlcmUuIFRoaXMg ZG9lc24ndAogICogcnVsZSBvdXQgZGVmaW5pbmcgbmV3IHByb3BlcnRpZXMgd2l0aCBvcmRlcmlu ZyByZXF1aXJlbWVudHMgaW4gdGhlIGZ1dHVyZS4KICAqLwotc3RhdGljIGludCByZWFkX3Byb3Bl cnRpZXNfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorc3RhdGlj IGludCByZWFkX3Byb3BlcnRpZXNfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwKIAkJ CQkgICAgdTY0IF9fdXNlciAqdXByb3BzLAogCQkJCSAgICB1MzIgbl9wcm9wcywKIAkJCQkgICAg c3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzICpwcm9wcykKQEAgLTI4ODMsNyArMjg3MCw3IEBA IHN0YXRpYyBpbnQgcmVhZF9wcm9wZXJ0aWVzX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCQkJICB2YWx1ZSk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9 Ci0JCQlpZiAoIWRldl9wcml2LT5wZXJmLm9hX2Zvcm1hdHNbdmFsdWVdLnNpemUpIHsKKwkJCWlm ICghcGVyZi0+b2FfZm9ybWF0c1t2YWx1ZV0uc2l6ZSkgewogCQkJCURSTV9ERUJVRygiVW5zdXBw b3J0ZWQgT0EgcmVwb3J0IGZvcm1hdCAlbGx1XG4iLAogCQkJCQkgIHZhbHVlKTsKIAkJCQlyZXR1 cm4gLUVJTlZBTDsKQEAgLTI5MDQsNyArMjg5MSw3IEBAIHN0YXRpYyBpbnQgcmVhZF9wcm9wZXJ0 aWVzX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAqLwog CiAJCQlCVUlMRF9CVUdfT04oc2l6ZW9mKG9hX3BlcmlvZCkgIT0gOCk7Ci0JCQlvYV9wZXJpb2Qg PSBvYV9leHBvbmVudF90b19ucyhkZXZfcHJpdiwgdmFsdWUpOworCQkJb2FfcGVyaW9kID0gb2Ff ZXhwb25lbnRfdG9fbnMocGVyZiwgdmFsdWUpOwogCiAJCQkvKiBUaGlzIGNoZWNrIGlzIHByaW1h cmlseSB0byBlbnN1cmUgdGhhdCBvYV9wZXJpb2QgPD0KIAkJCSAqIFVJTlQzMl9NQVggKGJlZm9y ZSBwYXNzaW5nIHRvIGRvX2RpdiB3aGljaCBvbmx5CkBAIC0yOTU4LDcgKzI5NDUsNyBAQCBzdGF0 aWMgaW50IHJlYWRfcHJvcGVydGllc191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAgKiBtdXRleCB0byBhdm9pZCBhbiBhd2t3YXJkIGxvY2tkZXAgd2l0aCBtbWFw X3NlbS4KICAqCiAgKiBNb3N0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSBoYW5k bGVkIGJ5Ci0gKiBpOTE1X3BlcmZfb3Blbl9pb2N0bF9sb2NrZWQoKSBhZnRlciB0YWtpbmcgdGhl ICZkcm1faTkxNV9wcml2YXRlLT5wZXJmLmxvY2sKKyAqIGk5MTVfcGVyZl9vcGVuX2lvY3RsX2xv Y2tlZCgpIGFmdGVyIHRha2luZyB0aGUgJnBlcmYtPmxvY2sKICAqIG11dGV4IGZvciBzZXJpYWxp emluZyB3aXRoIGFueSBub24tZmlsZS1vcGVyYXRpb24gZHJpdmVyIGhvb2tzLgogICoKICAqIFJl dHVybjogQSBuZXdseSBvcGVuZWQgaTkxNSBQZXJmIHN0cmVhbSBmaWxlIGRlc2NyaXB0b3Igb3Ig bmVnYXRpdmUKQEAgLTI5NjcsMTMgKzI5NTQsMTMgQEAgc3RhdGljIGludCByZWFkX3Byb3BlcnRp ZXNfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogaW50IGk5MTVf cGVyZl9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkg c3RydWN0IGRybV9maWxlICpmaWxlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGk5MTVfcGVyZiAqcGVyZiA9ICZ0b19p OTE1KGRldiktPnBlcmY7CiAJc3RydWN0IGRybV9pOTE1X3BlcmZfb3Blbl9wYXJhbSAqcGFyYW0g PSBkYXRhOwogCXN0cnVjdCBwZXJmX29wZW5fcHJvcGVydGllcyBwcm9wczsKIAl1MzIga25vd25f b3Blbl9mbGFnczsKIAlpbnQgcmV0OwogCi0JaWYgKCFkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXpl ZCkgeworCWlmICghcGVyZi0+aTkxNSkgewogCQlEUk1fREVCVUcoImk5MTUgcGVyZiBpbnRlcmZh Y2Ugbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW1cbiIpOwogCQlyZXR1cm4gLUVOT1RTVVBQ OwogCX0KQEAgLTI5ODYsMTI0ICsyOTczLDEyNyBAQCBpbnQgaTkxNV9wZXJmX29wZW5faW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JcmV0ID0gcmVhZF9wcm9wZXJ0aWVzX3VubG9ja2VkKGRldl9wcml2LAorCXJldCA9IHJl YWRfcHJvcGVydGllc191bmxvY2tlZChwZXJmLAogCQkJCSAgICAgICB1NjRfdG9fdXNlcl9wdHIo cGFyYW0tPnByb3BlcnRpZXNfcHRyKSwKIAkJCQkgICAgICAgcGFyYW0tPm51bV9wcm9wZXJ0aWVz LAogCQkJCSAgICAgICAmcHJvcHMpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQltdXRl eF9sb2NrKCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKLQlyZXQgPSBpOTE1X3BlcmZfb3Blbl9pb2N0 bF9sb2NrZWQoZGV2X3ByaXYsIHBhcmFtLCAmcHJvcHMsIGZpbGUpOwotCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBlcmYubG9jayk7CisJbXV0ZXhfbG9jaygmcGVyZi0+bG9jayk7CisJcmV0ID0g aTkxNV9wZXJmX29wZW5faW9jdGxfbG9ja2VkKHBlcmYsIHBhcmFtLCAmcHJvcHMsIGZpbGUpOwor CW11dGV4X3VubG9jaygmcGVyZi0+bG9jayk7CiAKIAlyZXR1cm4gcmV0OwogfQogCiAvKioKICAq IGk5MTVfcGVyZl9yZWdpc3RlciAtIGV4cG9zZXMgaTkxNS1wZXJmIHRvIHVzZXJzcGFjZQotICog QGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQorICogQGk5MTU6IGk5MTUgZGV2aWNlIGlu c3RhbmNlCiAgKgogICogSW4gcGFydGljdWxhciBPQSBtZXRyaWMgc2V0cyBhcmUgYWR2ZXJ0aXNl ZCB1bmRlciBhIHN5c2ZzIG1ldHJpY3MvCiAgKiBkaXJlY3RvcnkgYWxsb3dpbmcgdXNlcnNwYWNl IHRvIGVudW1lcmF0ZSB2YWxpZCBJRHMgdGhhdCBjYW4gYmUKICAqIHVzZWQgdG8gb3BlbiBhbiBp OTE1LXBlcmYgc3RyZWFtLgogICovCi12b2lkIGk5MTVfcGVyZl9yZWdpc3RlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit2b2lkIGk5MTVfcGVyZl9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKKwlzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmID0gJmk5 MTUtPnBlcmY7CiAJaW50IHJldDsKIAotCWlmICghZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQp CisJaWYgKCFwZXJmLT5pOTE1KQogCQlyZXR1cm47CiAKIAkvKiBUbyBiZSBzdXJlIHdlJ3JlIHN5 bmNocm9uaXplZCB3aXRoIGFuIGF0dGVtcHRlZAogCSAqIGk5MTVfcGVyZl9vcGVuX2lvY3RsKCk7 IGNvbnNpZGVyaW5nIHRoYXQgd2UgcmVnaXN0ZXIgYWZ0ZXIKIAkgKiBiZWluZyBleHBvc2VkIHRv IHVzZXJzcGFjZS4KIAkgKi8KLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKKwlt dXRleF9sb2NrKCZwZXJmLT5sb2NrKTsKIAotCWRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiA9 CisJcGVyZi0+bWV0cmljc19rb2JqID0KIAkJa29iamVjdF9jcmVhdGVfYW5kX2FkZCgibWV0cmlj cyIsCi0JCQkJICAgICAgICZkZXZfcHJpdi0+ZHJtLnByaW1hcnktPmtkZXYtPmtvYmopOwotCWlm ICghZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKQorCQkJCSAgICAgICAmaTkxNS0+ZHJtLnBy aW1hcnktPmtkZXYtPmtvYmopOworCWlmICghcGVyZi0+bWV0cmljc19rb2JqKQogCQlnb3RvIGV4 aXQ7CiAKLQlzeXNmc19hdHRyX2luaXQoJmRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpY19pZC5hdHRyKTsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Ci0J CWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2ljbChkZXZfcHJpdik7Ci0JfSBlbHNlIGlmIChJ U19DQU5OT05MQUtFKGRldl9wcml2KSkgewotCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19j bmwoZGV2X3ByaXYpOwotCX0gZWxzZSBpZiAoSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpIHsKLQkJ aWYgKElTX0NGTF9HVDIoZGV2X3ByaXYpKQotCQkJaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdf Y2ZsZ3QyKGRldl9wcml2KTsKLQkJaWYgKElTX0NGTF9HVDMoZGV2X3ByaXYpKQotCQkJaTkxNV9w ZXJmX2xvYWRfdGVzdF9jb25maWdfY2ZsZ3QzKGRldl9wcml2KTsKLQl9IGVsc2UgaWYgKElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKSB7Ci0JCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2dsayhk ZXZfcHJpdik7Ci0JfSBlbHNlIGlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKLQkJaWYgKElT X0tCTF9HVDIoZGV2X3ByaXYpKQotCQkJaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfa2JsZ3Qy KGRldl9wcml2KTsKLQkJZWxzZSBpZiAoSVNfS0JMX0dUMyhkZXZfcHJpdikpCi0JCQlpOTE1X3Bl cmZfbG9hZF90ZXN0X2NvbmZpZ19rYmxndDMoZGV2X3ByaXYpOwotCX0gZWxzZSBpZiAoSVNfQlJP WFRPTihkZXZfcHJpdikpIHsKLQkJaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfYnh0KGRldl9w cml2KTsKLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7Ci0JCWlmIChJU19TS0xf R1QyKGRldl9wcml2KSkKLQkJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX3NrbGd0MihkZXZf cHJpdik7Ci0JCWVsc2UgaWYgKElTX1NLTF9HVDMoZGV2X3ByaXYpKQotCQkJaTkxNV9wZXJmX2xv YWRfdGVzdF9jb25maWdfc2tsZ3QzKGRldl9wcml2KTsKLQkJZWxzZSBpZiAoSVNfU0tMX0dUNChk ZXZfcHJpdikpCi0JCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19za2xndDQoZGV2X3ByaXYp OwotCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKLQkJaTkxNV9wZXJmX2xv YWRfdGVzdF9jb25maWdfY2h2KGRldl9wcml2KTsKLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChk ZXZfcHJpdikpIHsKLQkJaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfYmR3KGRldl9wcml2KTsK LQl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Ci0JCWk5MTVfcGVyZl9sb2FkX3Rl c3RfY29uZmlnX2hzdyhkZXZfcHJpdik7Ci19Ci0KLQlpZiAoZGV2X3ByaXYtPnBlcmYudGVzdF9j b25maWcuaWQgPT0gMCkKKwlzeXNmc19hdHRyX2luaXQoJnBlcmYtPnRlc3RfY29uZmlnLnN5c2Zz X21ldHJpY19pZC5hdHRyKTsKKworCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKKwkJaTkx NV9wZXJmX2xvYWRfdGVzdF9jb25maWdfaWNsKGk5MTUpOworCX0gZWxzZSBpZiAoSVNfQ0FOTk9O TEFLRShpOTE1KSkgeworCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19jbmwoaTkxNSk7CisJ fSBlbHNlIGlmIChJU19DT0ZGRUVMQUtFKGk5MTUpKSB7CisJCWlmIChJU19DRkxfR1QyKGk5MTUp KQorCQkJaTkxNV9wZXJmX2xvYWRfdGVzdF9jb25maWdfY2ZsZ3QyKGk5MTUpOworCQlpZiAoSVNf Q0ZMX0dUMyhpOTE1KSkKKwkJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2NmbGd0MyhpOTE1 KTsKKwl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoaTkxNSkpIHsKKwkJaTkxNV9wZXJmX2xvYWRf dGVzdF9jb25maWdfZ2xrKGk5MTUpOworCX0gZWxzZSBpZiAoSVNfS0FCWUxBS0UoaTkxNSkpIHsK KwkJaWYgKElTX0tCTF9HVDIoaTkxNSkpCisJCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19r YmxndDIoaTkxNSk7CisJCWVsc2UgaWYgKElTX0tCTF9HVDMoaTkxNSkpCisJCQlpOTE1X3BlcmZf bG9hZF90ZXN0X2NvbmZpZ19rYmxndDMoaTkxNSk7CisJfSBlbHNlIGlmIChJU19CUk9YVE9OKGk5 MTUpKSB7CisJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2J4dChpOTE1KTsKKwl9IGVsc2Ug aWYgKElTX1NLWUxBS0UoaTkxNSkpIHsKKwkJaWYgKElTX1NLTF9HVDIoaTkxNSkpCisJCQlpOTE1 X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19za2xndDIoaTkxNSk7CisJCWVsc2UgaWYgKElTX1NLTF9H VDMoaTkxNSkpCisJCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19za2xndDMoaTkxNSk7CisJ CWVsc2UgaWYgKElTX1NLTF9HVDQoaTkxNSkpCisJCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZp Z19za2xndDQoaTkxNSk7CisJfSBlbHNlIGlmIChJU19DSEVSUllWSUVXKGk5MTUpKSB7CisJCWk5 MTVfcGVyZl9sb2FkX3Rlc3RfY29uZmlnX2NodihpOTE1KTsKKwl9IGVsc2UgaWYgKElTX0JST0FE V0VMTChpOTE1KSkgeworCQlpOTE1X3BlcmZfbG9hZF90ZXN0X2NvbmZpZ19iZHcoaTkxNSk7CisJ fSBlbHNlIGlmIChJU19IQVNXRUxMKGk5MTUpKSB7CisJCWk5MTVfcGVyZl9sb2FkX3Rlc3RfY29u ZmlnX2hzdyhpOTE1KTsKKwl9CisKKwlpZiAocGVyZi0+dGVzdF9jb25maWcuaWQgPT0gMCkKIAkJ Z290byBzeXNmc19lcnJvcjsKIAotCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosCi0JCQkJICZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZpZy5zeXNm c19tZXRyaWMpOworCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChwZXJmLT5tZXRyaWNzX2tvYmos CisJCQkJICZwZXJmLT50ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMpOwogCWlmIChyZXQpCiAJCWdv dG8gc3lzZnNfZXJyb3I7CiAKLQlhdG9taWNfc2V0KCZkZXZfcHJpdi0+cGVyZi50ZXN0X2NvbmZp Zy5yZWZfY291bnQsIDEpOworCWF0b21pY19zZXQoJnBlcmYtPnRlc3RfY29uZmlnLnJlZl9jb3Vu dCwgMSk7CiAKIAlnb3RvIGV4aXQ7CiAKIHN5c2ZzX2Vycm9yOgotCWtvYmplY3RfcHV0KGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaik7Ci0JZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqID0g TlVMTDsKKwlrb2JqZWN0X3B1dChwZXJmLT5tZXRyaWNzX2tvYmopOworCXBlcmYtPm1ldHJpY3Nf a29iaiA9IE5VTEw7CiAKIGV4aXQ6Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5sb2Nr KTsKKwltdXRleF91bmxvY2soJnBlcmYtPmxvY2spOwogfQogCiAvKioKICAqIGk5MTVfcGVyZl91 bnJlZ2lzdGVyIC0gaGlkZSBpOTE1LXBlcmYgZnJvbSB1c2Vyc3BhY2UKLSAqIEBkZXZfcHJpdjog aTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQogICoK ICAqIGk5MTUtcGVyZiBzdGF0ZSBjbGVhbnVwIGlzIHNwbGl0IHVwIGludG8gYW4gJ3VucmVnaXN0 ZXInIGFuZAogICogJ2RlaW5pdCcgcGhhc2Ugd2hlcmUgdGhlIGludGVyZmFjZSBpcyBmaXJzdCBo aWRkZW4gZnJvbQogICogdXNlcnNwYWNlIGJ5IGk5MTVfcGVyZl91bnJlZ2lzdGVyKCkgYmVmb3Jl IGNsZWFuaW5nIHVwCiAgKiByZW1haW5pbmcgc3RhdGUgaW4gaTkxNV9wZXJmX2ZpbmkoKS4KICAq Lwotdm9pZCBpOTE1X3BlcmZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCit2b2lkIGk5MTVfcGVyZl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQogewotCWlmICghZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKQorCXN0cnVjdCBp OTE1X3BlcmYgKnBlcmYgPSAmaTkxNS0+cGVyZjsKKworCWlmICghcGVyZi0+bWV0cmljc19rb2Jq KQogCQlyZXR1cm47CiAKLQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLAotCQkJICAgJmRldl9wcml2LT5wZXJmLnRlc3RfY29uZmlnLnN5c2ZzX21ldHJpYyk7 CisJc3lzZnNfcmVtb3ZlX2dyb3VwKHBlcmYtPm1ldHJpY3Nfa29iaiwKKwkJCSAgICZwZXJmLT50 ZXN0X2NvbmZpZy5zeXNmc19tZXRyaWMpOwogCi0Ja29iamVjdF9wdXQoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqKTsKLQlkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmogPSBOVUxMOworCWtv YmplY3RfcHV0KHBlcmYtPm1ldHJpY3Nfa29iaik7CisJcGVyZi0+bWV0cmljc19rb2JqID0gTlVM TDsKIH0KIAotc3RhdGljIGJvb2wgZ2VuOF9pc192YWxpZF9mbGV4X2FkZHIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKK3N0YXRpYyBib29sIGdlbjhfaXNfdmFs aWRfZmxleF9hZGRyKHN0cnVjdCBpOTE1X3BlcmYgKnBlcmYsIHUzMiBhZGRyKQogewogCXN0YXRp YyBjb25zdCBpOTE1X3JlZ190IGZsZXhfZXVfcmVnc1tdID0gewogCQlFVV9QRVJGX0NOVEwwLApA QCAtMzEyMyw3ICszMTEzLDcgQEAgc3RhdGljIGJvb2wgZ2VuOF9pc192YWxpZF9mbGV4X2FkZHIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKIAlyZXR1cm4gZmFs c2U7CiB9CiAKLXN0YXRpYyBib29sIGdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKK3N0YXRpYyBib29sIGdlbjdf aXNfdmFsaWRfYl9jb3VudGVyX2FkZHIoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwgdTMyIGFkZHIp CiB7CiAJcmV0dXJuIChhZGRyID49IGk5MTVfbW1pb19yZWdfb2Zmc2V0KE9BU1RBUlRUUklHMSkg JiYKIAkJYWRkciA8PSBpOTE1X21taW9fcmVnX29mZnNldChPQVNUQVJUVFJJRzgpKSB8fApAQCAt MzEzMyw3ICszMTIzLDcgQEAgc3RhdGljIGJvb2wgZ2VuN19pc192YWxpZF9iX2NvdW50ZXJfYWRk cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMgogCQkgYWRkciA8PSBpOTE1 X21taW9fcmVnX29mZnNldChPQUNFQzdfMSkpOwogfQogCi1zdGF0aWMgYm9vbCBnZW43X2lzX3Zh bGlkX211eF9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIp CitzdGF0aWMgYm9vbCBnZW43X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBpOTE1X3BlcmYgKnBl cmYsIHUzMiBhZGRyKQogewogCXJldHVybiBhZGRyID09IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEhB TEZfU0xJQ0VfQ0hJQ0tFTjIpIHx8CiAJCShhZGRyID49IGk5MTVfbW1pb19yZWdfb2Zmc2V0KE1J Q1JPX0JQMF8wKSAmJgpAQCAtMzE0NCwzNCArMzEzNCwzNCBAQCBzdGF0aWMgYm9vbCBnZW43X2lz X3ZhbGlkX211eF9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFk ZHIpCiAJCSBhZGRyIDw9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KE9BX1BFUkZNQVRSSVhfSEkpKTsK IH0KIAotc3RhdGljIGJvb2wgZ2VuOF9pc192YWxpZF9tdXhfYWRkcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKQorc3RhdGljIGJvb2wgZ2VuOF9pc192YWxpZF9t dXhfYWRkcihzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmLCB1MzIgYWRkcikKIHsKLQlyZXR1cm4gZ2Vu N19pc192YWxpZF9tdXhfYWRkcihkZXZfcHJpdiwgYWRkcikgfHwKKwlyZXR1cm4gZ2VuN19pc192 YWxpZF9tdXhfYWRkcihwZXJmLCBhZGRyKSB8fAogCQlhZGRyID09IGk5MTVfbW1pb19yZWdfb2Zm c2V0KFdBSVRfRk9SX1JDNl9FWElUKSB8fAogCQkoYWRkciA+PSBpOTE1X21taW9fcmVnX29mZnNl dChSUE1fQ09ORklHMCkgJiYKIAkJIGFkZHIgPD0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoTk9BX0NP TkZJRyg4KSkpOwogfQogCi1zdGF0aWMgYm9vbCBnZW4xMF9pc192YWxpZF9tdXhfYWRkcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKQorc3RhdGljIGJvb2wgZ2Vu MTBfaXNfdmFsaWRfbXV4X2FkZHIoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwgdTMyIGFkZHIpCiB7 Ci0JcmV0dXJuIGdlbjhfaXNfdmFsaWRfbXV4X2FkZHIoZGV2X3ByaXYsIGFkZHIpIHx8CisJcmV0 dXJuIGdlbjhfaXNfdmFsaWRfbXV4X2FkZHIocGVyZiwgYWRkcikgfHwKIAkJYWRkciA9PSBpOTE1 X21taW9fcmVnX29mZnNldChHRU4xMF9OT0FfV1JJVEVfSElHSCkgfHwKIAkJKGFkZHIgPj0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoT0FfUEVSRkNOVDNfTE8pICYmCiAJCSBhZGRyIDw9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KE9BX1BFUkZDTlQ0X0hJKSk7CiB9CiAKLXN0YXRpYyBib29sIGhzd19pc192 YWxpZF9tdXhfYWRkcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRy KQorc3RhdGljIGJvb2wgaHN3X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBpOTE1X3BlcmYgKnBl cmYsIHUzMiBhZGRyKQogewotCXJldHVybiBnZW43X2lzX3ZhbGlkX211eF9hZGRyKGRldl9wcml2 LCBhZGRyKSB8fAorCXJldHVybiBnZW43X2lzX3ZhbGlkX211eF9hZGRyKHBlcmYsIGFkZHIpIHx8 CiAJCShhZGRyID49IDB4MjUxMDAgJiYgYWRkciA8PSAweDJGRjkwKSB8fAogCQkoYWRkciA+PSBp OTE1X21taW9fcmVnX29mZnNldChIU1dfTUJWSUQyX05PQTApICYmCiAJCSBhZGRyIDw9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEhTV19NQlZJRDJfTk9BOSkpIHx8CiAJCWFkZHIgPT0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoSFNXX01CVklEMl9NSVNSMCk7CiB9CiAKLXN0YXRpYyBib29sIGNodl9pc192 YWxpZF9tdXhfYWRkcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRy KQorc3RhdGljIGJvb2wgY2h2X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBpOTE1X3BlcmYgKnBl cmYsIHUzMiBhZGRyKQogewotCXJldHVybiBnZW43X2lzX3ZhbGlkX211eF9hZGRyKGRldl9wcml2 LCBhZGRyKSB8fAorCXJldHVybiBnZW43X2lzX3ZhbGlkX211eF9hZGRyKHBlcmYsIGFkZHIpIHx8 CiAJCShhZGRyID49IDB4MTgyMzAwICYmIGFkZHIgPD0gMHgxODIzQTQpOwogfQogCkBAIC0zMTk0 LDggKzMxODQsOCBAQCBzdGF0aWMgdTMyIG1hc2tfcmVnX3ZhbHVlKHUzMiByZWcsIHUzMiB2YWwp CiAJcmV0dXJuIHZhbDsKIH0KIAotc3RhdGljIHN0cnVjdCBpOTE1X29hX3JlZyAqYWxsb2Nfb2Ff cmVncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCSBib29sICgqaXNf dmFsaWQpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpLAorc3Rh dGljIHN0cnVjdCBpOTE1X29hX3JlZyAqYWxsb2Nfb2FfcmVncyhzdHJ1Y3QgaTkxNV9wZXJmICpw ZXJmLAorCQkJCQkgYm9vbCAoKmlzX3ZhbGlkKShzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmLCB1MzIg YWRkciksCiAJCQkJCSB1MzIgX191c2VyICpyZWdzLAogCQkJCQkgdTMyIG5fcmVncykKIHsKQEAg LTMyMjUsNyArMzIxNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9vYV9yZWcgKmFsbG9jX29hX3Jl Z3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpZiAoZXJyKQogCQkJZ290 byBhZGRyX2VycjsKIAotCQlpZiAoIWlzX3ZhbGlkKGRldl9wcml2LCBhZGRyKSkgeworCQlpZiAo IWlzX3ZhbGlkKHBlcmYsIGFkZHIpKSB7CiAJCQlEUk1fREVCVUcoIkludmFsaWQgb2FfcmVnIGFk ZHJlc3M6ICVYXG4iLCBhZGRyKTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCQlnb3RvIGFkZHJfZXJy OwpAQCAtMzI1OCw3ICszMjQ4LDcgQEAgc3RhdGljIHNzaXplX3Qgc2hvd19keW5hbWljX2lkKHN0 cnVjdCBkZXZpY2UgKmRldiwKIAlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgb2FfY29uZmln LT5pZCk7CiB9CiAKLXN0YXRpYyBpbnQgY3JlYXRlX2R5bmFtaWNfb2Ffc3lzZnNfZW50cnkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorc3RhdGljIGludCBjcmVhdGVfZHluYW1p Y19vYV9zeXNmc19lbnRyeShzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmLAogCQkJCQkgc3RydWN0IGk5 MTVfb2FfY29uZmlnICpvYV9jb25maWcpCiB7CiAJc3lzZnNfYXR0cl9pbml0KCZvYV9jb25maWct PnN5c2ZzX21ldHJpY19pZC5hdHRyKTsKQEAgLTMyNzMsNyArMzI2Myw3IEBAIHN0YXRpYyBpbnQg Y3JlYXRlX2R5bmFtaWNfb2Ffc3lzZnNfZW50cnkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCW9hX2NvbmZpZy0+c3lzZnNfbWV0cmljLm5hbWUgPSBvYV9jb25maWctPnV1aWQ7 CiAJb2FfY29uZmlnLT5zeXNmc19tZXRyaWMuYXR0cnMgPSBvYV9jb25maWctPmF0dHJzOwogCi0J cmV0dXJuIHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosCisJ cmV0dXJuIHN5c2ZzX2NyZWF0ZV9ncm91cChwZXJmLT5tZXRyaWNzX2tvYmosCiAJCQkJICAmb2Ff Y29uZmlnLT5zeXNmc19tZXRyaWMpOwogfQogCkBAIC0zMjkzLDE3ICszMjgzLDE3IEBAIHN0YXRp YyBpbnQgY3JlYXRlX2R5bmFtaWNfb2Ffc3lzZnNfZW50cnkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogaW50IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxl KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJc3RydWN0IGk5MTVfcGVyZiAqcGVyZiA9ICZ0b19pOTE1KGRldiktPnBlcmY7CiAJc3Ry dWN0IGRybV9pOTE1X3BlcmZfb2FfY29uZmlnICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgaTkxNV9v YV9jb25maWcgKm9hX2NvbmZpZywgKnRtcDsKIAlpbnQgZXJyLCBpZDsKIAotCWlmICghZGV2X3By aXYtPnBlcmYuaW5pdGlhbGl6ZWQpIHsKKwlpZiAoIXBlcmYtPmk5MTUpIHsKIAkJRFJNX0RFQlVH KCJpOTE1IHBlcmYgaW50ZXJmYWNlIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgc3lzdGVtXG4iKTsK IAkJcmV0dXJuIC1FTk9UU1VQUDsKIAl9CiAKLQlpZiAoIWRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaikgeworCWlmICghcGVyZi0+bWV0cmljc19rb2JqKSB7CiAJCURSTV9ERUJVRygiT0EgbWV0 cmljcyB3ZXJlbid0IGFkdmVydGlzZWQgdmlhIHN5c2ZzXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQpAQCAtMzM0MSw4ICszMzMxLDggQEAgaW50IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlvYV9jb25maWctPm11eF9y ZWdzX2xlbiA9IGFyZ3MtPm5fbXV4X3JlZ3M7CiAJb2FfY29uZmlnLT5tdXhfcmVncyA9Ci0JCWFs bG9jX29hX3JlZ3MoZGV2X3ByaXYsCi0JCQkgICAgICBkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFs aWRfbXV4X3JlZywKKwkJYWxsb2Nfb2FfcmVncyhwZXJmLAorCQkJICAgICAgcGVyZi0+b3BzLmlz X3ZhbGlkX211eF9yZWcsCiAJCQkgICAgICB1NjRfdG9fdXNlcl9wdHIoYXJncy0+bXV4X3JlZ3Nf cHRyKSwKIAkJCSAgICAgIGFyZ3MtPm5fbXV4X3JlZ3MpOwogCkBAIC0zMzU0LDggKzMzNDQsOCBA QCBpbnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAogCW9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuID0gYXJncy0+bl9i b29sZWFuX3JlZ3M7CiAJb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVncyA9Ci0JCWFsbG9jX29hX3Jl Z3MoZGV2X3ByaXYsCi0JCQkgICAgICBkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfYl9jb3Vu dGVyX3JlZywKKwkJYWxsb2Nfb2FfcmVncyhwZXJmLAorCQkJICAgICAgcGVyZi0+b3BzLmlzX3Zh bGlkX2JfY291bnRlcl9yZWcsCiAJCQkgICAgICB1NjRfdG9fdXNlcl9wdHIoYXJncy0+Ym9vbGVh bl9yZWdzX3B0ciksCiAJCQkgICAgICBhcmdzLT5uX2Jvb2xlYW5fcmVncyk7CiAKQEAgLTMzNjUs NyArMzM1NSw3IEBAIGludCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlnb3RvIHJlZ19lcnI7CiAJfQogCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA4KSB7CisJaWYgKElOVEVMX0dFTihwZXJmLT5pOTE1KSA8IDgpIHsK IAkJaWYgKGFyZ3MtPm5fZmxleF9yZWdzICE9IDApIHsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCQln b3RvIHJlZ19lcnI7CkBAIC0zMzczLDggKzMzNjMsOCBAQCBpbnQgaTkxNV9wZXJmX2FkZF9jb25m aWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAl9IGVsc2Ugewog CQlvYV9jb25maWctPmZsZXhfcmVnc19sZW4gPSBhcmdzLT5uX2ZsZXhfcmVnczsKIAkJb2FfY29u ZmlnLT5mbGV4X3JlZ3MgPQotCQkJYWxsb2Nfb2FfcmVncyhkZXZfcHJpdiwKLQkJCQkgICAgICBk ZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfZmxleF9yZWcsCisJCQlhbGxvY19vYV9yZWdzKHBl cmYsCisJCQkJICAgICAgcGVyZi0+b3BzLmlzX3ZhbGlkX2ZsZXhfcmVnLAogCQkJCSAgICAgIHU2 NF90b191c2VyX3B0cihhcmdzLT5mbGV4X3JlZ3NfcHRyKSwKIAkJCQkgICAgICBhcmdzLT5uX2Zs ZXhfcmVncyk7CiAKQEAgLTMzODUsMTQgKzMzNzUsMTQgQEAgaW50IGk5MTVfcGVyZl9hZGRfY29u ZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCX0KIAl9CiAK LQllcnIgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wZXJmLm1ldHJpY3Nf bG9jayk7CisJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZwZXJmLT5tZXRyaWNzX2xv Y2spOwogCWlmIChlcnIpCiAJCWdvdG8gcmVnX2VycjsKIAogCS8qIFdlIHNob3VsZG4ndCBoYXZl IHRvbyBtYW55IGNvbmZpZ3MsIHNvIHRoaXMgaXRlcmF0aW9uIHNob3VsZG4ndCBiZQogCSAqIHRv byBjb3N0bHkuCiAJICovCi0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2lkciwgdG1wLCBpZCkgeworCWlkcl9mb3JfZWFjaF9lbnRyeSgmcGVyZi0+bWV0cmljc19p ZHIsIHRtcCwgaWQpIHsKIAkJaWYgKCFzdHJjbXAodG1wLT51dWlkLCBvYV9jb25maWctPnV1aWQp KSB7CiAJCQlEUk1fREVCVUcoIk9BIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgdXVp ZFxuIik7CiAJCQllcnIgPSAtRUFERFJJTlVTRTsKQEAgLTM0MDAsMTQgKzMzOTAsMTQgQEAgaW50 IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCX0KIAl9CiAKLQllcnIgPSBjcmVhdGVfZHluYW1pY19vYV9zeXNmc19lbnRyeShk ZXZfcHJpdiwgb2FfY29uZmlnKTsKKwllcnIgPSBjcmVhdGVfZHluYW1pY19vYV9zeXNmc19lbnRy eShwZXJmLCBvYV9jb25maWcpOwogCWlmIChlcnIpIHsKIAkJRFJNX0RFQlVHKCJGYWlsZWQgdG8g Y3JlYXRlIHN5c2ZzIGVudHJ5IGZvciBPQSBjb25maWdcbiIpOwogCQlnb3RvIHN5c2ZzX2VycjsK IAl9CiAKIAkvKiBDb25maWcgaWQgMCBpcyBpbnZhbGlkLCBpZCAxIGZvciBrZXJuZWwgc3RvcmVk IHRlc3QgY29uZmlnLiAqLwotCW9hX2NvbmZpZy0+aWQgPSBpZHJfYWxsb2MoJmRldl9wcml2LT5w ZXJmLm1ldHJpY3NfaWRyLAorCW9hX2NvbmZpZy0+aWQgPSBpZHJfYWxsb2MoJnBlcmYtPm1ldHJp Y3NfaWRyLAogCQkJCSAgb2FfY29uZmlnLCAyLAogCQkJCSAgMCwgR0ZQX0tFUk5FTCk7CiAJaWYg KG9hX2NvbmZpZy0+aWQgPCAwKSB7CkBAIC0zNDE2LDE2ICszNDA2LDE2IEBAIGludCBpOTE1X3Bl cmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQlnb3RvIHN5c2ZzX2VycjsKIAl9CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLm1l dHJpY3NfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZwZXJmLT5tZXRyaWNzX2xvY2spOwogCiAJRFJN X0RFQlVHKCJBZGRlZCBjb25maWcgJXMgaWQ9JWlcbiIsIG9hX2NvbmZpZy0+dXVpZCwgb2FfY29u ZmlnLT5pZCk7CiAKIAlyZXR1cm4gb2FfY29uZmlnLT5pZDsKIAogc3lzZnNfZXJyOgotCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsKKwltdXRleF91bmxvY2soJnBl cmYtPm1ldHJpY3NfbG9jayk7CiByZWdfZXJyOgotCXB1dF9vYV9jb25maWcoZGV2X3ByaXYsIG9h X2NvbmZpZyk7CisJcHV0X29hX2NvbmZpZyhvYV9jb25maWcpOwogCURSTV9ERUJVRygiRmFpbGVk IHRvIGFkZCBuZXcgT0EgY29uZmlnXG4iKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzQ0NCwxMiAr MzQzNCwxMiBAQCBpbnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIGludCBpOTE1X3BlcmZfcmVtb3ZlX2NvbmZpZ19pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgc3RydWN0IGRybV9maWxl ICpmaWxlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGk5MTVfcGVyZiAqcGVyZiA9ICZ0b19pOTE1KGRldiktPnBlcmY7 CiAJdTY0ICphcmcgPSBkYXRhOwogCXN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnOwog CWludCByZXQ7CiAKLQlpZiAoIWRldl9wcml2LT5wZXJmLmluaXRpYWxpemVkKSB7CisJaWYgKCFw ZXJmLT5pOTE1KSB7CiAJCURSTV9ERUJVRygiaTkxNSBwZXJmIGludGVyZmFjZSBub3QgYXZhaWxh YmxlIGZvciB0aGlzIHN5c3RlbVxuIik7CiAJCXJldHVybiAtRU5PVFNVUFA7CiAJfQpAQCAtMzQ1 OSwxMSArMzQ0OSwxMSBAQCBpbnQgaTkxNV9wZXJmX3JlbW92ZV9jb25maWdfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCi0J cmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xv Y2spOworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcGVyZi0+bWV0cmljc19sb2Nr KTsKIAlpZiAocmV0KQogCQlnb3RvIGxvY2tfZXJyOwogCi0Jb2FfY29uZmlnID0gaWRyX2ZpbmQo JmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLCAqYXJnKTsKKwlvYV9jb25maWcgPSBpZHJfZmlu ZCgmcGVyZi0+bWV0cmljc19pZHIsICphcmcpOwogCWlmICghb2FfY29uZmlnKSB7CiAJCURSTV9E RUJVRygiRmFpbGVkIHRvIHJlbW92ZSB1bmtub3duIE9BIGNvbmZpZ1xuIik7CiAJCXJldCA9IC1F Tk9FTlQ7CkBAIC0zNDcyLDE3ICszNDYyLDE3IEBAIGludCBpOTE1X3BlcmZfcmVtb3ZlX2NvbmZp Z19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJR0VNX0JVR19P TigqYXJnICE9IG9hX2NvbmZpZy0+aWQpOwogCi0Jc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwKKwlzeXNmc19yZW1vdmVfZ3JvdXAocGVyZi0+bWV0cmljc19r b2JqLAogCQkJICAgJm9hX2NvbmZpZy0+c3lzZnNfbWV0cmljKTsKIAotCWlkcl9yZW1vdmUoJmRl dl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLCAqYXJnKTsKKwlpZHJfcmVtb3ZlKCZwZXJmLT5tZXRy aWNzX2lkciwgKmFyZyk7CiAKIAlEUk1fREVCVUcoIlJlbW92ZWQgY29uZmlnICVzIGlkPSVpXG4i LCBvYV9jb25maWctPnV1aWQsIG9hX2NvbmZpZy0+aWQpOwogCi0JcHV0X29hX2NvbmZpZyhkZXZf cHJpdiwgb2FfY29uZmlnKTsKKwlwdXRfb2FfY29uZmlnKG9hX2NvbmZpZyk7CiAKIGNvbmZpZ19l cnI6Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2spOworCW11dGV4 X3VubG9jaygmcGVyZi0+bWV0cmljc19sb2NrKTsKIGxvY2tfZXJyOgogCXJldHVybiByZXQ7CiB9 CkBAIC0zNTMxLDEwMyArMzUyMSwxMDQgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgZGV2X3Jv b3RbXSA9IHsKIAogLyoqCiAgKiBpOTE1X3BlcmZfaW5pdCAtIGluaXRpYWxpemUgaTkxNS1wZXJm IHN0YXRlIG9uIG1vZHVsZSBsb2FkCi0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNl CisgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKICAqCiAgKiBJbml0aWFsaXplcyBpOTE1 LXBlcmYgc3RhdGUgd2l0aG91dCBleHBvc2luZyBhbnl0aGluZyB0byB1c2Vyc3BhY2UuCiAgKgog ICogTm90ZTogaTkxNS1wZXJmIGluaXRpYWxpemF0aW9uIGlzIHNwbGl0IGludG8gYW4gJ2luaXQn IGFuZCAncmVnaXN0ZXInCiAgKiBwaGFzZSB3aXRoIHRoZSBpOTE1X3BlcmZfcmVnaXN0ZXIoKSBl eHBvc2luZyBzdGF0ZSB0byB1c2Vyc3BhY2UuCiAgKi8KLXZvaWQgaTkxNV9wZXJmX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQotewotCWlmIChJU19IQVNXRUxMKGRldl9w cml2KSkgewotCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9Ci0J CQlnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOwotCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNf dmFsaWRfbXV4X3JlZyA9Ci0JCQloc3dfaXNfdmFsaWRfbXV4X2FkZHI7Ci0JCWRldl9wcml2LT5w ZXJmLm9wcy5pc192YWxpZF9mbGV4X3JlZyA9IE5VTEw7Ci0JCWRldl9wcml2LT5wZXJmLm9wcy5l bmFibGVfbWV0cmljX3NldCA9IGhzd19lbmFibGVfbWV0cmljX3NldDsKLQkJZGV2X3ByaXYtPnBl cmYub3BzLmRpc2FibGVfbWV0cmljX3NldCA9IGhzd19kaXNhYmxlX21ldHJpY19zZXQ7Ci0JCWRl dl9wcml2LT5wZXJmLm9wcy5vYV9lbmFibGUgPSBnZW43X29hX2VuYWJsZTsKLQkJZGV2X3ByaXYt PnBlcmYub3BzLm9hX2Rpc2FibGUgPSBnZW43X29hX2Rpc2FibGU7Ci0JCWRldl9wcml2LT5wZXJm Lm9wcy5yZWFkID0gZ2VuN19vYV9yZWFkOwotCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfaHdfdGFp bF9yZWFkID0KLQkJCWdlbjdfb2FfaHdfdGFpbF9yZWFkOwotCi0JCWRldl9wcml2LT5wZXJmLm9h X2Zvcm1hdHMgPSBoc3dfb2FfZm9ybWF0czsKLQl9IGVsc2UgaWYgKEhBU19MT0dJQ0FMX1JJTkdf Q09OVEVYVFMoZGV2X3ByaXYpKSB7Cit2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpOTE1X3BlcmYgKnBlcmYgPSAmaTkxNS0+cGVy ZjsKKworCS8qIFhYWCBjb25zdCBzdHJ1Y3QgaTkxNV9wZXJmX29wcyEgKi8KKworCWlmIChJU19I QVNXRUxMKGk5MTUpKSB7CisJCXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0gZ2Vu N19pc192YWxpZF9iX2NvdW50ZXJfYWRkcjsKKwkJcGVyZi0+b3BzLmlzX3ZhbGlkX211eF9yZWcg PSBoc3dfaXNfdmFsaWRfbXV4X2FkZHI7CisJCXBlcmYtPm9wcy5pc192YWxpZF9mbGV4X3JlZyA9 IE5VTEw7CisJCXBlcmYtPm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGhzd19lbmFibGVfbWV0cmlj X3NldDsKKwkJcGVyZi0+b3BzLmRpc2FibGVfbWV0cmljX3NldCA9IGhzd19kaXNhYmxlX21ldHJp Y19zZXQ7CisJCXBlcmYtPm9wcy5vYV9lbmFibGUgPSBnZW43X29hX2VuYWJsZTsKKwkJcGVyZi0+ b3BzLm9hX2Rpc2FibGUgPSBnZW43X29hX2Rpc2FibGU7CisJCXBlcmYtPm9wcy5yZWFkID0gZ2Vu N19vYV9yZWFkOworCQlwZXJmLT5vcHMub2FfaHdfdGFpbF9yZWFkID0gZ2VuN19vYV9od190YWls X3JlYWQ7CisKKwkJcGVyZi0+b2FfZm9ybWF0cyA9IGhzd19vYV9mb3JtYXRzOworCX0gZWxzZSBp ZiAoSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhpOTE1KSkgewogCQkvKiBOb3RlOiB0aGF0IGFs dGhvdWdoIHdlIGNvdWxkIHRoZW9yZXRpY2FsbHkgYWxzbyBzdXBwb3J0IHRoZQogCQkgKiBsZWdh Y3kgcmluZ2J1ZmZlciBtb2RlIG9uIEJEVyAoYW5kIGVhcmxpZXIgaXRlcmF0aW9ucyBvZgogCQkg KiB0aGlzIGRyaXZlciwgYmVmb3JlIHVwc3RyZWFtaW5nIGRpZCB0aGlzKSBpdCBkaWRuJ3Qgc2Vl bQogCQkgKiB3b3J0aCB0aGUgY29tcGxleGl0eSB0byBtYWludGFpbiBub3cgdGhhdCBCRFcrIGVu YWJsZQogCQkgKiBleGVjbGlzdCBtb2RlIGJ5IGRlZmF1bHQuCiAJCSAqLwotCQlkZXZfcHJpdi0+ cGVyZi5vYV9mb3JtYXRzID0gZ2VuOF9wbHVzX29hX2Zvcm1hdHM7CisJCXBlcmYtPm9hX2Zvcm1h dHMgPSBnZW44X3BsdXNfb2FfZm9ybWF0czsKIAotCQlkZXZfcHJpdi0+cGVyZi5vcHMub2FfZW5h YmxlID0gZ2VuOF9vYV9lbmFibGU7Ci0JCWRldl9wcml2LT5wZXJmLm9wcy5vYV9kaXNhYmxlID0g Z2VuOF9vYV9kaXNhYmxlOwotCQlkZXZfcHJpdi0+cGVyZi5vcHMucmVhZCA9IGdlbjhfb2FfcmVh ZDsKLQkJZGV2X3ByaXYtPnBlcmYub3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdlbjhfb2FfaHdfdGFp bF9yZWFkOworCQlwZXJmLT5vcHMub2FfZW5hYmxlID0gZ2VuOF9vYV9lbmFibGU7CisJCXBlcmYt Pm9wcy5vYV9kaXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOworCQlwZXJmLT5vcHMucmVhZCA9IGdl bjhfb2FfcmVhZDsKKwkJcGVyZi0+b3BzLm9hX2h3X3RhaWxfcmVhZCA9IGdlbjhfb2FfaHdfdGFp bF9yZWFkOwogCi0JCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDgsIDkpKSB7Ci0JCQlkZXZf cHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9CisJCWlmIChJU19HRU5fUkFO R0UoaTkxNSwgOCwgOSkpIHsKKwkJCXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0K IAkJCQlnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOwotCQkJZGV2X3ByaXYtPnBlcmYub3Bz LmlzX3ZhbGlkX211eF9yZWcgPQorCQkJcGVyZi0+b3BzLmlzX3ZhbGlkX211eF9yZWcgPQogCQkJ CWdlbjhfaXNfdmFsaWRfbXV4X2FkZHI7Ci0JCQlkZXZfcHJpdi0+cGVyZi5vcHMuaXNfdmFsaWRf ZmxleF9yZWcgPQorCQkJcGVyZi0+b3BzLmlzX3ZhbGlkX2ZsZXhfcmVnID0KIAkJCQlnZW44X2lz X3ZhbGlkX2ZsZXhfYWRkcjsKIAotCQkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Ci0J CQkJZGV2X3ByaXYtPnBlcmYub3BzLmlzX3ZhbGlkX211eF9yZWcgPQorCQkJaWYgKElTX0NIRVJS WVZJRVcoaTkxNSkpIHsKKwkJCQlwZXJmLT5vcHMuaXNfdmFsaWRfbXV4X3JlZyA9CiAJCQkJCWNo dl9pc192YWxpZF9tdXhfYWRkcjsKIAkJCX0KIAotCQkJZGV2X3ByaXYtPnBlcmYub3BzLmVuYWJs ZV9tZXRyaWNfc2V0ID0gZ2VuOF9lbmFibGVfbWV0cmljX3NldDsKLQkJCWRldl9wcml2LT5wZXJm Lm9wcy5kaXNhYmxlX21ldHJpY19zZXQgPSBnZW44X2Rpc2FibGVfbWV0cmljX3NldDsKKwkJCXBl cmYtPm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7CisJCQlw ZXJmLT5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gZ2VuOF9kaXNhYmxlX21ldHJpY19zZXQ7CiAK LQkJCWlmIChJU19HRU4oZGV2X3ByaXYsIDgpKSB7Ci0JCQkJZGV2X3ByaXYtPnBlcmYuY3R4X29h Y3R4Y3RybF9vZmZzZXQgPSAweDEyMDsKLQkJCQlkZXZfcHJpdi0+cGVyZi5jdHhfZmxleGV1MF9v ZmZzZXQgPSAweDJjZTsKKwkJCWlmIChJU19HRU4oaTkxNSwgOCkpIHsKKwkJCQlwZXJmLT5jdHhf b2FjdHhjdHJsX29mZnNldCA9IDB4MTIwOworCQkJCXBlcmYtPmN0eF9mbGV4ZXUwX29mZnNldCA9 IDB4MmNlOwogCi0JCQkJZGV2X3ByaXYtPnBlcmYuZ2VuOF92YWxpZF9jdHhfYml0ID0gQklUKDI1 KTsKKwkJCQlwZXJmLT5nZW44X3ZhbGlkX2N0eF9iaXQgPSBCSVQoMjUpOwogCQkJfSBlbHNlIHsK LQkJCQlkZXZfcHJpdi0+cGVyZi5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTI4OwotCQkJCWRl dl9wcml2LT5wZXJmLmN0eF9mbGV4ZXUwX29mZnNldCA9IDB4M2RlOworCQkJCXBlcmYtPmN0eF9v YWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjg7CisJCQkJcGVyZi0+Y3R4X2ZsZXhldTBfb2Zmc2V0ID0g MHgzZGU7CiAKLQkJCQlkZXZfcHJpdi0+cGVyZi5nZW44X3ZhbGlkX2N0eF9iaXQgPSBCSVQoMTYp OworCQkJCXBlcmYtPmdlbjhfdmFsaWRfY3R4X2JpdCA9IEJJVCgxNik7CiAJCQl9Ci0JCX0gZWxz ZSBpZiAoSVNfR0VOX1JBTkdFKGRldl9wcml2LCAxMCwgMTEpKSB7Ci0JCQlkZXZfcHJpdi0+cGVy Zi5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3JlZyA9CisJCX0gZWxzZSBpZiAoSVNfR0VOX1JBTkdF KGk5MTUsIDEwLCAxMSkpIHsKKwkJCXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0K IAkJCQlnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOwotCQkJZGV2X3ByaXYtPnBlcmYub3Bz LmlzX3ZhbGlkX211eF9yZWcgPQorCQkJcGVyZi0+b3BzLmlzX3ZhbGlkX211eF9yZWcgPQogCQkJ CWdlbjEwX2lzX3ZhbGlkX211eF9hZGRyOwotCQkJZGV2X3ByaXYtPnBlcmYub3BzLmlzX3ZhbGlk X2ZsZXhfcmVnID0KKwkJCXBlcmYtPm9wcy5pc192YWxpZF9mbGV4X3JlZyA9CiAJCQkJZ2VuOF9p c192YWxpZF9mbGV4X2FkZHI7CiAKLQkJCWRldl9wcml2LT5wZXJmLm9wcy5lbmFibGVfbWV0cmlj X3NldCA9IGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7Ci0JCQlkZXZfcHJpdi0+cGVyZi5vcHMuZGlz YWJsZV9tZXRyaWNfc2V0ID0gZ2VuMTBfZGlzYWJsZV9tZXRyaWNfc2V0OworCQkJcGVyZi0+b3Bz LmVuYWJsZV9tZXRyaWNfc2V0ID0gZ2VuOF9lbmFibGVfbWV0cmljX3NldDsKKwkJCXBlcmYtPm9w cy5kaXNhYmxlX21ldHJpY19zZXQgPSBnZW4xMF9kaXNhYmxlX21ldHJpY19zZXQ7CiAKLQkJCWlm IChJU19HRU4oZGV2X3ByaXYsIDEwKSkgewotCQkJCWRldl9wcml2LT5wZXJmLmN0eF9vYWN0eGN0 cmxfb2Zmc2V0ID0gMHgxMjg7Ci0JCQkJZGV2X3ByaXYtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0 ID0gMHgzZGU7CisJCQlpZiAoSVNfR0VOKGk5MTUsIDEwKSkgeworCQkJCXBlcmYtPmN0eF9vYWN0 eGN0cmxfb2Zmc2V0ID0gMHgxMjg7CisJCQkJcGVyZi0+Y3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgz ZGU7CiAJCQl9IGVsc2UgewotCQkJCWRldl9wcml2LT5wZXJmLmN0eF9vYWN0eGN0cmxfb2Zmc2V0 ID0gMHgxMjQ7Ci0JCQkJZGV2X3ByaXYtPnBlcmYuY3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHg3OGU7 CisJCQkJcGVyZi0+Y3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyNDsKKwkJCQlwZXJmLT5jdHhf ZmxleGV1MF9vZmZzZXQgPSAweDc4ZTsKIAkJCX0KLQkJCWRldl9wcml2LT5wZXJmLmdlbjhfdmFs aWRfY3R4X2JpdCA9IEJJVCgxNik7CisJCQlwZXJmLT5nZW44X3ZhbGlkX2N0eF9iaXQgPSBCSVQo MTYpOwogCQl9CiAJfQogCi0JaWYgKGRldl9wcml2LT5wZXJmLm9wcy5lbmFibGVfbWV0cmljX3Nl dCkgewotCQlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnBlcmYuc3RyZWFtcyk7Ci0JCW11dGV4 X2luaXQoJmRldl9wcml2LT5wZXJmLmxvY2spOworCWlmIChwZXJmLT5vcHMuZW5hYmxlX21ldHJp Y19zZXQpIHsKKwkJSU5JVF9MSVNUX0hFQUQoJnBlcmYtPnN0cmVhbXMpOworCQltdXRleF9pbml0 KCZwZXJmLT5sb2NrKTsKIAogCQlvYV9zYW1wbGVfcmF0ZV9oYXJkX2xpbWl0ID0gMTAwMCAqCi0J CQkoUlVOVElNRV9JTkZPKGRldl9wcml2KS0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9raHogLyAy KTsKLQkJZGV2X3ByaXYtPnBlcmYuc3lzY3RsX2hlYWRlciA9IHJlZ2lzdGVyX3N5c2N0bF90YWJs ZShkZXZfcm9vdCk7CisJCQkoUlVOVElNRV9JTkZPKGk5MTUpLT5jc190aW1lc3RhbXBfZnJlcXVl bmN5X2toeiAvIDIpOworCQlwZXJmLT5zeXNjdGxfaGVhZGVyID0gcmVnaXN0ZXJfc3lzY3RsX3Rh YmxlKGRldl9yb290KTsKIAotCQltdXRleF9pbml0KCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xv Y2spOwotCQlpZHJfaW5pdCgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIpOworCQltdXRleF9p bml0KCZwZXJmLT5tZXRyaWNzX2xvY2spOworCQlpZHJfaW5pdCgmcGVyZi0+bWV0cmljc19pZHIp OwogCiAJCS8qIFdlIHNldCB1cCBzb21lIHJhdGVsaW1pdCBzdGF0ZSB0byBwb3RlbnRpYWxseSB0 aHJvdHRsZSBhbnkKIAkJICogX05PVEVTIGFib3V0IHNwdXJpb3VzLCBpbnZhbGlkIE9BIHJlcG9y dHMgd2hpY2ggd2UgZG9uJ3QKQEAgLTM2MzksNDQgKzM2MzAsNDAgQEAgdm9pZCBpOTE1X3BlcmZf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqCiAJCSAqIFVzaW5n IHRoZSBzYW1lIGxpbWl0aW5nIGZhY3RvcnMgYXMgcHJpbnRrX3JhdGVsaW1pdCgpCiAJCSAqLwot CQlyYXRlbGltaXRfc3RhdGVfaW5pdCgmZGV2X3ByaXYtPnBlcmYuc3B1cmlvdXNfcmVwb3J0X3Jz LAotCQkJCSAgICAgNSAqIEhaLCAxMCk7CisJCXJhdGVsaW1pdF9zdGF0ZV9pbml0KCZwZXJmLT5z cHVyaW91c19yZXBvcnRfcnMsIDUgKiBIWiwgMTApOwogCQkvKiBTaW5jZSB3ZSB1c2UgYSBEUk1f Tk9URSBmb3Igc3B1cmlvdXMgcmVwb3J0cyBpdCB3b3VsZCBiZQogCQkgKiBpbmNvbnNpc3RlbnQg dG8gbGV0IF9fcmF0ZWxpbWl0KCkgYXV0b21hdGljYWxseSBwcmludCBhCiAJCSAqIHdhcm5pbmcg Zm9yIHRocm90dGxpbmcuCiAJCSAqLwotCQlyYXRlbGltaXRfc2V0X2ZsYWdzKCZkZXZfcHJpdi0+ cGVyZi5zcHVyaW91c19yZXBvcnRfcnMsCisJCXJhdGVsaW1pdF9zZXRfZmxhZ3MoJnBlcmYtPnNw dXJpb3VzX3JlcG9ydF9ycywKIAkJCQkgICAgUkFURUxJTUlUX01TR19PTl9SRUxFQVNFKTsKIAot CQlkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCA9IHRydWU7CisJCXBlcmYtPmk5MTUgPSBpOTE1 OwogCX0KIH0KIAogc3RhdGljIGludCBkZXN0cm95X2NvbmZpZyhpbnQgaWQsIHZvaWQgKnAsIHZv aWQgKmRhdGEpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsK LQlzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZyA9IHA7Ci0KLQlwdXRfb2FfY29uZmln KGRldl9wcml2LCBvYV9jb25maWcpOwotCisJcHV0X29hX2NvbmZpZyhwKTsKIAlyZXR1cm4gMDsK IH0KIAogLyoqCiAgKiBpOTE1X3BlcmZfZmluaSAtIENvdW50ZXIgcGFydCB0byBpOTE1X3BlcmZf aW5pdCgpCi0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCisgKiBAaTkxNTogaTkx NSBkZXZpY2UgaW5zdGFuY2UKICAqLwotdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit2b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogewotCWlmICghZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQpCi0J CXJldHVybjsKKwlzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmID0gJmk5MTUtPnBlcmY7CiAKLQlpZHJf Zm9yX2VhY2goJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLCBkZXN0cm95X2NvbmZpZywgZGV2 X3ByaXYpOwotCWlkcl9kZXN0cm95KCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2lkcik7CisJaWYg KCFwZXJmLT5pOTE1KQorCQlyZXR1cm47CiAKLQl1bnJlZ2lzdGVyX3N5c2N0bF90YWJsZShkZXZf cHJpdi0+cGVyZi5zeXNjdGxfaGVhZGVyKTsKKwlpZHJfZm9yX2VhY2goJnBlcmYtPm1ldHJpY3Nf aWRyLCBkZXN0cm95X2NvbmZpZywgcGVyZik7CisJaWRyX2Rlc3Ryb3koJnBlcmYtPm1ldHJpY3Nf aWRyKTsKIAotCW1lbXNldCgmZGV2X3ByaXYtPnBlcmYub3BzLCAwLCBzaXplb2YoZGV2X3ByaXYt PnBlcmYub3BzKSk7CisJdW5yZWdpc3Rlcl9zeXNjdGxfdGFibGUocGVyZi0+c3lzY3RsX2hlYWRl cik7CiAKLQlkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCA9IGZhbHNlOworCW1lbXNldCgmcGVy Zi0+b3BzLCAwLCBzaXplb2YocGVyZi0+b3BzKSk7CisJcGVyZi0+aTkxNSA9IE5VTEw7CiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmZfdHlwZXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZl90eXBlcy5oCmluZGV4IGVkY2FiMmRmNzRmYi4uM2M2 MjQ2MDY0YTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmZfdHlw ZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmZfdHlwZXMuaApAQCAtMTIs NiArMTIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9wb2xs Lmg+CiAjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgog I2luY2x1ZGUgPGxpbnV4L3V1aWQuaD4KICNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CiAKQEAgLTEy NCw5ICsxMjUsMTQgQEAgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW1fb3BzIHsKICAqLwogc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gewogCS8qKgotCSAqIEBkZXZfcHJpdjogaTkxNSBkcm0gZGV2aWNl CisJICogQHBlcmY6IGk5MTVfcGVyZiBiYWNrcG9pbnRlcgogCSAqLwotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmOworCisJLyoqCisJ ICogQGd0OiBpbnRlbF9ndCBjb250YWluZXIKKwkgKi8KKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0Owog CiAJLyoqCiAJICogQGxpbms6IExpbmtzIHRoZSBzdHJlYW0gaW50byBgYCZkcm1faTkxNV9wcml2 YXRlLT5zdHJlYW1zYGAKQEAgLTI2NiwyMCArMjcyLDE5IEBAIHN0cnVjdCBpOTE1X29hX29wcyB7 CiAJICogQGlzX3ZhbGlkX2JfY291bnRlcl9yZWc6IFZhbGlkYXRlcyByZWdpc3RlcidzIGFkZHJl c3MgZm9yCiAJICogcHJvZ3JhbW1pbmcgYm9vbGVhbiBjb3VudGVycyBmb3IgYSBwYXJ0aWN1bGFy IHBsYXRmb3JtLgogCSAqLwotCWJvb2wgKCppc192YWxpZF9iX2NvdW50ZXJfcmVnKShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgICAgIHUzMiBhZGRyKTsKKwlib29s ICgqaXNfdmFsaWRfYl9jb3VudGVyX3JlZykoc3RydWN0IGk5MTVfcGVyZiAqcGVyZiwgdTMyIGFk ZHIpOwogCiAJLyoqCiAJICogQGlzX3ZhbGlkX211eF9yZWc6IFZhbGlkYXRlcyByZWdpc3Rlcidz IGFkZHJlc3MgZm9yIHByb2dyYW1taW5nIG11eAogCSAqIGZvciBhIHBhcnRpY3VsYXIgcGxhdGZv cm0uCiAJICovCi0JYm9vbCAoKmlzX3ZhbGlkX211eF9yZWcpKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpOworCWJvb2wgKCppc192YWxpZF9tdXhfcmVnKShzdHJ1 Y3QgaTkxNV9wZXJmICpwZXJmLCB1MzIgYWRkcik7CiAKIAkvKioKIAkgKiBAaXNfdmFsaWRfZmxl eF9yZWc6IFZhbGlkYXRlcyByZWdpc3RlcidzIGFkZHJlc3MgZm9yIHByb2dyYW1taW5nCiAJICog ZmxleCBFVSBmaWx0ZXJpbmcgZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybS4KIAkgKi8KLQlib29s ICgqaXNfdmFsaWRfZmxleF9yZWcpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTMyIGFkZHIpOworCWJvb2wgKCppc192YWxpZF9mbGV4X3JlZykoc3RydWN0IGk5MTVfcGVyZiAq cGVyZiwgdTMyIGFkZHIpOwogCiAJLyoqCiAJICogQGVuYWJsZV9tZXRyaWNfc2V0OiBTZWxlY3Rz IGFuZCBhcHBsaWVzIGFueSBNVVggY29uZmlndXJhdGlvbiB0byBzZXQKQEAgLTMyNCw0ICszMjks NjAgQEAgc3RydWN0IGk5MTVfb2Ffb3BzIHsKIAl1MzIgKCpvYV9od190YWlsX3JlYWQpKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pOwogfTsKIAorc3RydWN0IGk5MTVfcGVyZiB7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CisKKwlzdHJ1Y3Qga29iamVjdCAqbWV0cmlj c19rb2JqOworCXN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpzeXNjdGxfaGVhZGVyOworCisJLyoK KwkgKiBMb2NrIGFzc29jaWF0ZWQgd2l0aCBhZGRpbmcvbW9kaWZ5aW5nL3JlbW92aW5nIE9BIGNv bmZpZ3MKKwkgKiBpbiBkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2lkci4KKwkgKi8KKwlzdHJ1Y3Qg bXV0ZXggbWV0cmljc19sb2NrOworCisJLyoKKwkgKiBMaXN0IG9mIGR5bmFtaWMgY29uZmlndXJh dGlvbnMsIHlvdSBuZWVkIHRvIGhvbGQKKwkgKiBkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2sg dG8gYWNjZXNzIGl0LgorCSAqLworCXN0cnVjdCBpZHIgbWV0cmljc19pZHI7CisKKwkvKgorCSAq IExvY2sgYXNzb2NpYXRlZCB3aXRoIGFueXRoaW5nIGJlbG93IHdpdGhpbiB0aGlzIHN0cnVjdHVy ZQorCSAqIGV4Y2VwdCBleGNsdXNpdmVfc3RyZWFtLgorCSAqLworCXN0cnVjdCBtdXRleCBsb2Nr OworCXN0cnVjdCBsaXN0X2hlYWQgc3RyZWFtczsKKworCS8qCisJICogVGhlIHN0cmVhbSBjdXJy ZW50bHkgdXNpbmcgdGhlIE9BIHVuaXQuIElmIGFjY2Vzc2VkCisJICogb3V0c2lkZSBhIHN5c2Nh bGwgYXNzb2NpYXRlZCB0byBpdHMgZmlsZQorCSAqIGRlc2NyaXB0b3IsIHlvdSBuZWVkIHRvIGhv bGQKKwkgKiBkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleC4KKwkgKi8KKwlzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqZXhjbHVzaXZlX3N0cmVhbTsKKworCS8qKgorCSAqIEZvciByYXRlIGxpbWl0 aW5nIGFueSBub3RpZmljYXRpb25zIG9mIHNwdXJpb3VzCisJICogaW52YWxpZCBPQSByZXBvcnRz CisJICovCisJc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSBzcHVyaW91c19yZXBvcnRfcnM7CisKKwlz dHJ1Y3QgaTkxNV9vYV9jb25maWcgdGVzdF9jb25maWc7CisKKwl1MzIgZ2VuN19sYXRjaGVkX29h c3RhdHVzMTsKKwl1MzIgY3R4X29hY3R4Y3RybF9vZmZzZXQ7CisJdTMyIGN0eF9mbGV4ZXUwX29m ZnNldDsKKworCS8qKgorCSAqIFRoZSBSUFRfSUQvcmVhc29uIGZpZWxkIGZvciBHZW44KyBpbmNs dWRlcyBhIGJpdAorCSAqIHRvIGRldGVybWluZSBpZiB0aGUgQ1RYIElEIGluIHRoZSByZXBvcnQg aXMgdmFsaWQKKwkgKiBidXQgdGhlIHNwZWNpZmljIGJpdCBkaWZmZXJzIGJldHdlZW4gR2VuIDgg YW5kIDkKKwkgKi8KKwl1MzIgZ2VuOF92YWxpZF9jdHhfYml0OworCisJc3RydWN0IGk5MTVfb2Ff b3BzIG9wczsKKwljb25zdCBzdHJ1Y3QgaTkxNV9vYV9mb3JtYXQgKm9hX2Zvcm1hdHM7Cit9Owor CiAjZW5kaWYgLyogX0k5MTVfUEVSRl9UWVBFU19IXyAqLwotLSAKMi4yMy4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=