From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915: Replace pcu_lock with sb_lock Date: Thu, 8 Mar 2018 19:49:02 +0000 Message-ID: <20180308194902.3226-1-chris@chris-wilson.co.uk> References: <20180307194202.31099-7-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 94C506EB1B for ; Thu, 8 Mar 2018 19:49:13 +0000 (UTC) In-Reply-To: <20180307194202.31099-7-chris@chris-wilson.co.uk> 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 V2Ugbm93IGhhdmUgdHdvIGxvY2tzIGZvciBzaWRlYmFuZCBhY2Nlc3MuIFRoZSBnZW5lcmFsIG9u ZSBjb3ZlcmluZwpzaWRlYmFuZCBhY2Nlc3MgYWNyb3NzIGFsbCBnZW5lcmF0aW9uLCBzYl9sb2Nr LCBhbmQgYSBzcGVjaWZpYyBvbmUKY292ZXJpbmcgc2lkZWJhbmQgYWNjZXNzIHZpYSB0aGUgcHVu aXQgb24gdmx2L2Nodi4gQWZ0ZXIgbGlmdGluZyB0aGUKc2JfbG9jayBhcm91bmQgdGhlIHB1bml0 IGludG8gdGhlIGNhbGxlcnMsIHRoZSBwY3VfbG9jayBpcyBub3cgcmVkdWRhbnQKYW5kIGNhbiBi ZSBzZXBhcmF0ZWQgZnJvbSBpdHMgb3RoZXIgdXNlIHRvIHJlZ3VsYXRlIFJQUyAoZXNzZW50aWFs bHkKZ2l2aW5nIFJQUyBhIGxvY2sgYWxsIG9mIGl0cyBvd24pLgoKdjI6IEV4dHJhY3QgYSBjb3Vw bGUgb2YgbWlub3IgYnVnIGZpeGVzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgICAgIHwgIDQ3ICsrKystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCAgICAgICAgIHwgIDEwICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAg ICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAg fCAgMzIgKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICAgICB8 ICAyOCAtLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAg IDYgLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyAgICAgICB8ICAgMiAtCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgfCAxMjcgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYyB8ICAgOCAtLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYyAgIHwg ICA0IC0KIDEwIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDE3NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDhlNzgyMGY5NDM1OC4uOTcw NTNlMGFmZTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTA3NCw4ICsx MDc0LDYgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqdW51c2VkKQogCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwg SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJdTMyIHJwbW9kZWN0bCwgZnJlcV9zdHM7CiAK LQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQogCQlycG1vZGVjdGwgPSBJOTE1 X1JFQUQoR0VONl9SUF9DT05UUk9MKTsKIAkJc2VxX3ByaW50ZihtLCAiVmlkZW8gVHVyYm8gTW9k ZTogJXNcbiIsCiAJCQkgICB5ZXNubyhycG1vZGVjdGwgJiBHRU42X1JQX01FRElBX1RVUkJPKSk7 CkBAIC0xMTEwLDcgKzExMDgsNiBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCXNlcV9wcmludGYobSwKIAkJCSAgICJl ZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCiAJCQkgICBpbnRlbF9ncHVfZnJl cShkZXZfcHJpdiwgcnBzLT5lZmZpY2llbnRfZnJlcSkpOwotCQltdXRleF91bmxvY2soJmRldl9w cml2LT5wY3VfbG9jayk7CiAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsK IAkJdTMyIHJwX3N0YXRlX2xpbWl0czsKIAkJdTMyIGd0X3BlcmZfc3RhdHVzOwpAQCAtMTUyNSwx MiArMTUyMiw5IEBAIHN0YXRpYyBpbnQgZ2VuNl9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICpt KQogCQlnZW45X3Bvd2VyZ2F0ZV9zdGF0dXMgPSBJOTE1X1JFQUQoR0VOOV9QV1JHVF9ET01BSU5f U1RBVFVTKTsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA3KSB7Ci0JCW11dGV4 X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0g NykKIAkJc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgR0VONl9QQ09ERV9SRUFEX1JD NlZJRFMsCiAJCQkJICAgICAgICZyYzZ2aWRzKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cGN1X2xvY2spOwotCX0KIAogCXNlcV9wcmludGYobSwgIlJDMWUgRW5hYmxlZDogJXNcbiIsCiAJ CSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNfQ1RMX1JDMWVfRU5BQkxFKSk7CkBAIC0xODAxLDE3 ICsxNzk1LDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX2ZyZXFfdGFibGUoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2 LT5ndF9wbS5ycHM7CiAJdW5zaWduZWQgaW50IG1heF9ncHVfZnJlcSwgbWluX2dwdV9mcmVxOwog CWludCBncHVfZnJlcSwgaWFfZnJlcTsKLQlpbnQgcmV0OwogCiAJaWYgKCFIQVNfTExDKGRldl9w cml2KSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7Ci0KLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wY3VfbG9j ayk7Ci0JaWYgKHJldCkKLQkJZ290byBvdXQ7Ci0KIAltaW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9m cmVxOwogCW1heF9ncHVfZnJlcSA9IHJwcy0+bWF4X2ZyZXE7CiAJaWYgKElTX0dFTjlfQkMoZGV2 X3ByaXYpIHx8IElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7CkBAIC0xODIyLDYgKzE4MDksNyBA QCBzdGF0aWMgaW50IGk5MTVfcmluZ19mcmVxX3RhYmxlKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqdW51c2VkKQogCiAJc2VxX3B1dHMobSwgIkdQVSBmcmVxIChNSHopXHRFZmZlY3RpdmUgQ1BV IGZyZXEgKE1IeilcdEVmZmVjdGl2ZSBSaW5nIGZyZXEgKE1IeilcbiIpOwogCisJaW50ZWxfcnVu dGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCWZvciAoZ3B1X2ZyZXEgPSBtaW5fZ3B1X2ZyZXE7IGdw dV9mcmVxIDw9IG1heF9ncHVfZnJlcTsgZ3B1X2ZyZXErKykgewogCQlpYV9mcmVxID0gZ3B1X2Zy ZXE7CiAJCXNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsCkBAIC0xODM1LDEyICsxODIz LDkgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKIAkJCSAgICgoaWFfZnJlcSA+PiAwKSAmIDB4ZmYpICogMTAwLAogCQkJ ICAgKChpYV9mcmVxID4+IDgpICYgMHhmZikgKiAxMDApOwogCX0KLQotCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQotb3V0OgogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKLQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9v cHJlZ2lvbihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKQEAgLTQxNzgsNyArNDE2 Myw3IEBAIGk5MTVfbWF4X2ZyZXFfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiAKIAlEUk1fREVC VUdfRFJJVkVSKCJNYW51YWxseSBzZXR0aW5nIG1heCBmcmVxIHRvICVsbHVcbiIsIHZhbCk7CiAK LQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wY3VfbG9jayk7CisJ cmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZycHMtPmxvY2spOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKQEAgLTQxOTEsOCArNDE3Niw4IEBAIGk5MTVfbWF4X2ZyZXFfc2V0KHZv aWQgKmRhdGEsIHU2NCB2YWwpCiAJaHdfbWluID0gcnBzLT5taW5fZnJlcTsKIAogCWlmICh2YWwg PCBod19taW4gfHwgdmFsID4gaHdfbWF4IHx8IHZhbCA8IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0 KSB7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQkJcmV0dXJuIC1FSU5W QUw7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gdW5sb2NrOwogCX0KIAogCXJwcy0+bWF4X2Zy ZXFfc29mdGxpbWl0ID0gdmFsOwpAQCAtNDIwMCw5ICs0MTg1LDkgQEAgaTkxNV9tYXhfZnJlcV9z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAlpZiAoaW50ZWxfc2V0X3JwcyhkZXZfcHJpdiwgdmFs KSkKIAkJRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHVwZGF0ZSBSUFMgdG8gbmV3IHNvZnRs aW1pdFxuIik7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Ci0KLQlyZXR1 cm4gMDsKK3VubG9jazoKKwltdXRleF91bmxvY2soJnJwcy0+bG9jayk7CisJcmV0dXJuIHJldDsK IH0KIAogREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9tYXhfZnJlcV9mb3BzLApAQCAtNDIz NCw3ICs0MjE5LDcgQEAgaTkxNV9taW5fZnJlcV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAog CURSTV9ERUJVR19EUklWRVIoIk1hbnVhbGx5IHNldHRpbmcgbWluIGZyZXEgdG8gJWxsdVxuIiwg dmFsKTsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBjdV9s b2NrKTsKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnJwcy0+bG9jayk7CiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNDI0OCw4ICs0MjMzLDggQEAgaTkxNV9taW5fZnJl cV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAogCWlmICh2YWwgPCBod19taW4gfHwKIAkgICAg dmFsID4gaHdfbWF4IHx8IHZhbCA+IHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KSB7Ci0JCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldCA9 IC1FSU5WQUw7CisJCWdvdG8gdW5sb2NrOwogCX0KIAogCXJwcy0+bWluX2ZyZXFfc29mdGxpbWl0 ID0gdmFsOwpAQCAtNDI1Nyw5ICs0MjQyLDkgQEAgaTkxNV9taW5fZnJlcV9zZXQodm9pZCAqZGF0 YSwgdTY0IHZhbCkKIAlpZiAoaW50ZWxfc2V0X3JwcyhkZXZfcHJpdiwgdmFsKSkKIAkJRFJNX0RF QlVHX0RSSVZFUigiZmFpbGVkIHRvIHVwZGF0ZSBSUFMgdG8gbmV3IHNvZnRsaW1pdFxuIik7CiAK LQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Ci0KLQlyZXR1cm4gMDsKK3VubG9j azoKKwltdXRleF91bmxvY2soJnJwcy0+bG9jayk7CisJcmV0dXJuIHJldDsKIH0KIAogREVGSU5F X1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9taW5fZnJlcV9mb3BzLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggYjI5NDRhNjE5ZjEyLi5kNzgyNzUyNjMxNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaApAQCAtOTAwLDYgKzkwMCw4IEBAIHN0cnVjdCBpbnRlbF9ycHNfZWkgewogfTsKIAogc3Ry dWN0IGludGVsX3JwcyB7CisJc3RydWN0IG11dGV4IGxvY2s7CisKIAkvKgogCSAqIHdvcmssIGlu dGVycnVwdHNfZW5hYmxlZCBhbmQgcG1faWlyIGFyZSBwcm90ZWN0ZWQgYnkKIAkgKiBkZXZfcHJp di0+aXJxX2xvY2sKQEAgLTIwNTQsMTQgKzIwNTYsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7CiAJLyogQ2Fubm90IGJlIGRldGVybWluZWQgYnkgUENJSUQuIFlvdSBtdXN0IGFsd2F5cyBy ZWFkIGEgcmVnaXN0ZXIuICovCiAJdTMyIGVkcmFtX2NhcDsKIAotCS8qCi0JICogUHJvdGVjdHMg UlBTL1JDNiByZWdpc3RlciBhY2Nlc3MgYW5kIFBDVSBjb21tdW5pY2F0aW9uLgotCSAqIE11c3Qg YmUgdGFrZW4gYWZ0ZXIgc3RydWN0X211dGV4IGlmIG5lc3RlZC4gTm90ZSB0aGF0Ci0JICogdGhp cyBsb2NrIG1heSBiZSBoZWxkIGZvciBsb25nIHBlcmlvZHMgb2YgdGltZSB3aGVuCi0JICogdGFs a2luZyB0byBodyAtIHNvIG9ubHkgdGFrZSBpdCB3aGVuIHRhbGtpbmcgdG8gaHchCi0JICovCi0J c3RydWN0IG11dGV4IHBjdV9sb2NrOwotCiAJLyogZ2VuNisgR1QgUE0gc3RhdGUgKi8KIAlzdHJ1 Y3QgaW50ZWxfZ2VuNl9wb3dlcl9tZ210IGd0X3BtOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpp bmRleCBiYWJmODFjZjY2OGIuLjAzOTc5MTI0NjFiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3BtX3Jwc193b3JrKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKIAlpZiAoKHBtX2lpciAmIGRldl9wcml2LT5wbV9ycHNfZXZl bnRzKSA9PSAwICYmICFjbGllbnRfYm9vc3QpCiAJCWdvdG8gb3V0OwogCi0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRleF9sb2NrKCZycHMtPmxvY2spOwogCiAJcG1faWly IHw9IHZsdl93YV9jMF9laShkZXZfcHJpdiwgcG1faWlyKTsKIApAQCAtMTI1OCw3ICsxMjU4LDcg QEAgc3RhdGljIHZvaWQgZ2VuNl9wbV9ycHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAJCXJwcy0+bGFzdF9hZGogPSAwOwogCX0KIAotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBj dV9sb2NrKTsKKwltdXRleF91bmxvY2soJnJwcy0+bG9jayk7CiAKIG91dDoKIAkvKiBNYWtlIHN1 cmUgbm90IHRvIGNvcnJ1cHQgUE1JTVIgc3RhdGUgdXNlZCBieSByaW5nYnVmZmVyIG9uIEdFTjYg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwppbmRleCAwNTE5ZTAwYjM3MjAuLmM5ODM3NWJh NzliNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwpAQCAtMjYyLDcgKzI2Miw2IEBAIHN0 YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCiAK IAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJp di0+cGN1X2xvY2spOwogCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewogCQl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAkJZnJlcSA9IHZs dl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTKTsKQEAgLTI3Miw3 ICsyNzEsNiBAQCBzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2 aWNlICprZGV2LAogCX0gZWxzZSB7CiAJCWZyZXEgPSBpbnRlbF9nZXRfY2FnZihkZXZfcHJpdiwg STkxNV9SRUFEKEdFTjZfUlBTVEFUMSkpOwogCX0KLQltdXRleF91bmxvY2soJmRldl9wcml2LT5w Y3VfbG9jayk7CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiAKQEAgLTMxNywx MiArMzE1LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3N0b3JlKHN0cnVj dCBkZXZpY2UgKmtkZXYsCiAJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwgdmFsID4gcnBzLT5t YXhfZnJlcSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1 X2xvY2spOworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7CiAJaWYgKHZhbCAhPSBycHMtPmJvb3N0 X2ZyZXEpIHsKIAkJcnBzLT5ib29zdF9mcmVxID0gdmFsOwogCQlib29zdCA9IGF0b21pY19yZWFk KCZycHMtPm51bV93YWl0ZXJzKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xv Y2spOworCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKIAlpZiAoYm9vc3QpCiAJCXNjaGVkdWxl X3dvcmsoJnJwcy0+d29yayk7CiAKQEAgLTM2MiwxNyArMzYwLDE0IEBAIHN0YXRpYyBzc2l6ZV90 IGd0X21heF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAogCQlyZXR1cm4gcmV0 OwogCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwotCi0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRleF9sb2NrKCZycHMtPmxvY2spOwogCiAJdmFsID0gaW50 ZWxfZnJlcV9vcGNvZGUoZGV2X3ByaXYsIHZhbCk7Ci0KIAlpZiAodmFsIDwgcnBzLT5taW5fZnJl cSB8fAogCSAgICB2YWwgPiBycHMtPm1heF9mcmVxIHx8CiAJICAgIHZhbCA8IHJwcy0+bWluX2Zy ZXFfc29mdGxpbWl0KSB7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQkJ aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0 ID0gLUVJTlZBTDsKKwkJZ290byB1bmxvY2s7CiAJfQogCiAJaWYgKHZhbCA+IHJwcy0+cnAwX2Zy ZXEpCkBAIC0zOTAsOCArMzg1LDggQEAgc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0 b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCiAJICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVu Y2hhbmdlZC4gKi8KIAlyZXQgPSBpbnRlbF9zZXRfcnBzKGRldl9wcml2LCB2YWwpOwogCi0JbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCit1bmxvY2s6CisJbXV0ZXhfdW5sb2Nr KCZycHMtPmxvY2spOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKIAogCXJldHVy biByZXQgPzogY291bnQ7CkBAIC00MjAsMTcgKzQxNSwxNCBAQCBzdGF0aWMgc3NpemVfdCBndF9t aW5fZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqa2RldiwKIAkJcmV0dXJuIHJldDsKIAog CWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKLQotCW11dGV4X2xvY2soJmRldl9wcml2 LT5wY3VfbG9jayk7CisJbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsKIAogCXZhbCA9IGludGVsX2Zy ZXFfb3Bjb2RlKGRldl9wcml2LCB2YWwpOwotCiAJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwK IAkgICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAogCSAgICB2YWwgPiBycHMtPm1heF9mcmVxX3Nv ZnRsaW1pdCkgewotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Ci0JCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldCA9IC1F SU5WQUw7CisJCWdvdG8gdW5sb2NrOwogCX0KIAogCXJwcy0+bWluX2ZyZXFfc29mdGxpbWl0ID0g dmFsOwpAQCAtNDQ0LDggKzQzNiw4IEBAIHN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9z dG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAogCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1 bmNoYW5nZWQuICovCiAJcmV0ID0gaW50ZWxfc2V0X3JwcyhkZXZfcHJpdiwgdmFsKTsKIAotCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQordW5sb2NrOgorCW11dGV4X3VubG9j aygmcnBzLT5sb2NrKTsKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiAKIAlyZXR1 cm4gcmV0ID86IGNvdW50OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKaW5kZXggZTUzZThj MzZhNTkxLi5iNzc1ODlkOWZiMmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwpAQCAt NDYxLDcgKzQ2MSw2IEBAIHN0YXRpYyB2b2lkIHZsdl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogewogCXUzMiB2YWw7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJp di0+cGN1X2xvY2spOwogCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwKIAkJCUJJVChWTFZfSU9T Rl9TQl9DQ0spIHwgQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7CiAKQEAgLTQ3NCw3ICs0NzMsNiBA QCBzdGF0aWMgdm9pZCB2bHZfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAogCXZsdl9pb3NmX3NiX3B1dChkZXZfcHJpdiwKIAkJCUJJVChWTFZfSU9TRl9TQl9D Q0spIHwgQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cGN1X2xvY2spOwogCiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQogCQljZGNsa19zdGF0 ZS0+dm9sdGFnZV9sZXZlbCA9ICh2YWwgJiBEU1BGUkVRR1VBUl9NQVNLKSA+PgpAQCAtNTUxLDcg KzU0OSw2IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkJQklUKFZMVl9JT1NGX1NCX0JVTklUKSB8CiAJCQlCSVQoVkxWX0lP U0ZfU0JfUFVOSVQpKTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJdmFs ID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKTsKIAl2YWwgJj0g fkRTUEZSRVFHVUFSX01BU0s7CiAJdmFsIHw9IChjbWQgPDwgRFNQRlJFUUdVQVJfU0hJRlQpOwpA QCAtNTYxLDcgKzU1OCw2IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgIDUwKSkgewogCQlEUk1fRVJST1IoInRpbWVk IG91dCB3YWl0aW5nIGZvciBDRGNsayBjaGFuZ2VcbiIpOwogCX0KLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAKIAlpZiAoY2RjbGsgPT0gNDAwMDAwKSB7CiAJCXUzMiBkaXZp ZGVyOwpAQCAtNjMyLDcgKzYyOCw2IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqLwogCWludGVsX2Rpc3BsYXlfcG93ZXJf Z2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUElQRV9BKTsKIAotCW11dGV4X2xvY2soJmRldl9w cml2LT5wY3VfbG9jayk7CiAJdmx2X3B1bml0X2dldChkZXZfcHJpdik7CiAKIAl2YWwgPSB2bHZf cHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUEZSRVEpOwpAQCAtNjQ2LDcgKzY0MSw2 IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCX0KIAogCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7CiAK QEAgLTcyNCwxMCArNzE4LDggQEAgc3RhdGljIHZvaWQgYmR3X3NldF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAidHJ5aW5nIHRvIGNoYW5nZSBjZGNsayBmcmVx dWVuY3kgd2l0aCBjZGNsayBub3QgZW5hYmxlZFxuIikpCiAJCXJldHVybjsKIAotCW11dGV4X2xv Y2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUo ZGV2X3ByaXYsCiAJCQkJICAgICAgQkRXX1BDT0RFX0RJU1BMQVlfRlJFUV9DSEFOR0VfUkVRLCAw eDApOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlpZiAocmV0KSB7CiAJ CURSTV9FUlJPUigiZmFpbGVkIHRvIGluZm9ybSBwY29kZSBhYm91dCBjZGNsayBjaGFuZ2VcbiIp OwogCQlyZXR1cm47CkBAIC03NzYsMTAgKzc2OCw4IEBAIHN0YXRpYyB2b2lkIGJkd19zZXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJTENQTExfQ0RfU09VUkNF X0ZDTEtfRE9ORSkgPT0gMCwgMSkpCiAJCURSTV9FUlJPUigiU3dpdGNoaW5nIGJhY2sgdG8gTENQ TEwgZmFpbGVkXG4iKTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEhTV19QQ09ERV9ERV9XUklURV9GUkVRX1JF USwKIAkJCQljZGNsa19zdGF0ZS0+dm9sdGFnZV9sZXZlbCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+cGN1X2xvY2spOwogCiAJSTkxNV9XUklURShDRENMS19GUkVRLCBESVZfUk9VTkRfQ0xP U0VTVChjZGNsaywgMTAwMCkgLSAxKTsKIApAQCAtMTAwNywxMiArOTk3LDEwIEBAIHN0YXRpYyB2 b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXUz MiBmcmVxX3NlbGVjdCwgY2RjbGtfY3RsOwogCWludCByZXQ7CiAKLQltdXRleF9sb2NrKCZkZXZf cHJpdi0+cGN1X2xvY2spOwogCXJldCA9IHNrbF9wY29kZV9yZXF1ZXN0KGRldl9wcml2LCBTS0xf UENPREVfQ0RDTEtfQ09OVFJPTCwKIAkJCQlTS0xfQ0RDTEtfUFJFUEFSRV9GT1JfQ0hBTkdFLAog CQkJCVNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdFLAogCQkJCVNLTF9DRENMS19SRUFEWV9GT1Jf Q0hBTkdFLCAzKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJaWYgKHJl dCkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbmZvcm0gUENVIGFib3V0IGNkY2xrIGNoYW5n ZSAoJWQpXG4iLAogCQkJICByZXQpOwpAQCAtMTA3NiwxMCArMTA2NCw4IEBAIHN0YXRpYyB2b2lk IHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCVBPU1RJ TkdfUkVBRChDRENMS19DVEwpOwogCiAJLyogaW5mb3JtIFBDVSBvZiB0aGUgY2hhbmdlICovCi0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlzYW5keWJyaWRnZV9wY29kZV93cml0 ZShkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsCiAJCQkJY2RjbGtfc3RhdGUtPnZv bHRhZ2VfbGV2ZWwpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCWlu dGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7CiB9CkBAIC0xMzkxLDEyICsxMzc3LDkgQEAgc3Rh dGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJICogcmVxdWlyZXMgdXMgdG8gd2FpdCB1cCB0byAxNTB1c2VjLCBidXQgdGhhdCBsZWFkcyB0 byB0aW1lb3V0czsKIAkgKiB0aGUgMm1zIHVzZWQgaGVyZSBpcyBiYXNlZCBvbiBleHBlcmltZW50 LgogCSAqLwotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJcmV0ID0gc2FuZHli cmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChkZXZfcHJpdiwKIAkJCQkJICAgICAgSFNXX1BDT0RF X0RFX1dSSVRFX0ZSRVFfUkVRLAogCQkJCQkgICAgICAweDgwMDAwMDAwLCAxNTAsIDIpOwotCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQogCWlmIChyZXQpIHsKIAkJRFJNX0VS Uk9SKCJQQ29kZSBDRENMSyBmcmVxIGNoYW5nZSBub3RpZnkgZmFpbGVkIChlcnIgJWQsIGZyZXEg JWQpXG4iLAogCQkJICByZXQsIGNkY2xrKTsKQEAgLTE0MjQsNyArMTQwNyw2IEBAIHN0YXRpYyB2 b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl2 YWwgfD0gQlhUX0NEQ0xLX1NTQV9QUkVDSEFSR0VfRU5BQkxFOwogCUk5MTVfV1JJVEUoQ0RDTEtf Q1RMLCB2YWwpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAkvKgogCSAq IFRoZSB0aW1lb3V0IGlzbid0IHNwZWNpZmllZCwgdGhlIDJtcyB1c2VkIGhlcmUgaXMgYmFzZWQg b24KIAkgKiBleHBlcmltZW50LgpAQCAtMTQzNCw4ICsxNDE2LDYgQEAgc3RhdGljIHZvaWQgYnh0 X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChkZXZfcHJpdiwKIAkJCQkJICAgICAgSFNXX1BD T0RFX0RFX1dSSVRFX0ZSRVFfUkVRLAogCQkJCQkgICAgICBjZGNsa19zdGF0ZS0+dm9sdGFnZV9s ZXZlbCwgMTUwLCAyKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Ci0KIAlp ZiAocmV0KSB7CiAJCURSTV9FUlJPUigiUENvZGUgQ0RDTEsgZnJlcSBzZXQgZmFpbGVkLCAoZXJy ICVkLCBmcmVxICVkKVxuIiwKIAkJCSAgcmV0LCBjZGNsayk7CkBAIC0xNjczLDEyICsxNjUzLDEw IEBAIHN0YXRpYyB2b2lkIGNubF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCXUzMiB2YWwsIGRpdmlkZXI7CiAJaW50IHJldDsKIAotCW11dGV4X2xvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAJcmV0ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2X3ByaXYsIFNL TF9QQ09ERV9DRENMS19DT05UUk9MLAogCQkJCVNLTF9DRENMS19QUkVQQVJFX0ZPUl9DSEFOR0Us CiAJCQkJU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0UsCiAJCQkJU0tMX0NEQ0xLX1JFQURZX0ZP Ul9DSEFOR0UsIDMpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlpZiAo cmV0KSB7CiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJvdXQgY2RjbGsgY2hh bmdlICglZClcbiIsCiAJCQkgIHJldCk7CkBAIC0xNzE1LDEwICsxNjkzLDggQEAgc3RhdGljIHZv aWQgY25sX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJSTkx NV9XUklURShDRENMS19DVEwsIHZhbCk7CiAKIAkvKiBpbmZvcm0gUENVIG9mIHRoZSBjaGFuZ2Ug Ki8KLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXNhbmR5YnJpZGdlX3Bjb2Rl X3dyaXRlKGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTCwKIAkJCQljZGNsa19zdGF0 ZS0+dm9sdGFnZV9sZXZlbCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwog CiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKIApAQCAtMTg1NCwxMiArMTgzMCwxMCBA QCBzdGF0aWMgdm9pZCBpY2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAl1bnNpZ25lZCBpbnQgdmNvID0gY2RjbGtfc3RhdGUtPnZjbzsKIAlpbnQgcmV0Owog Ci0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlyZXQgPSBza2xfcGNvZGVfcmVx dWVzdChkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsCiAJCQkJU0tMX0NEQ0xLX1BS RVBBUkVfRk9SX0NIQU5HRSwKIAkJCQlTS0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRSwKIAkJCQlT S0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRSwgMyk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cGN1X2xvY2spOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5mb3JtIFBD VSBhYm91dCBjZGNsayBjaGFuZ2UgKCVkKVxuIiwKIAkJCSAgcmV0KTsKQEAgLTE4NzYsMTAgKzE4 NTAsOCBAQCBzdGF0aWMgdm9pZCBpY2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlJOTE1X1dSSVRFKENEQ0xLX0NUTCwgSUNMX0NEQ0xLX0NEMlhfUElQRV9O T05FIHwKIAkJCSAgICAgIHNrbF9jZGNsa19kZWNpbWFsKGNkY2xrKSk7CiAKLQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCS8qIFRPRE86IGFkZCBwcm9wZXIgRFZGUyBzdXBwb3J0 LiAqLwogCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtf Q09OVFJPTCwgMik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCiAJaW50 ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCA3Mzg3MjI1ODM0ZTAuLmUyMzMwMTFlZTRjZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtNDkzNCwxMCArNDkzNCw4IEBAIHZvaWQgaHN3X2VuYWJsZV9p cHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJV0FSTl9PTigh KGNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJiB+QklUKFBMQU5FX0NVUlNPUikpKTsKIAogCWlm IChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3Vf bG9jayk7CiAJCVdBUk5fT04oc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIERJU1BM QVlfSVBTX0NPTlRST0wsCiAJCQkJCQlJUFNfRU5BQkxFIHwgSVBTX1BDT0RFX0NPTlRST0wpKTsK LQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCQkvKiBRdW90aW5nIEFydCBS dW55YW46ICJpdHMgbm90IHNhZmUgdG8gZXhwZWN0IGFueSBwYXJ0aWN1bGFyCiAJCSAqIHZhbHVl IGluIElQU19DVEwgYml0IDMxIGFmdGVyIGVuYWJsaW5nIElQUyB0aHJvdWdoIHRoZQogCQkgKiBt YWlsYm94LiIgTW9yZW92ZXIsIHRoZSBtYWlsYm94IG1heSByZXR1cm4gYSBib2d1cyBzdGF0ZSwK QEAgLTQ5NjcsOSArNDk2NSw3IEBAIHZvaWQgaHN3X2Rpc2FibGVfaXBzKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQlyZXR1cm47CiAKIAlpZiAoSVNfQlJPQURX RUxMKGRldl9wcml2KSkgewotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCQlX QVJOX09OKHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBESVNQTEFZX0lQU19DT05U Uk9MLCAwKSk7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAkJLyogd2Fp dCBmb3IgcGNvZGUgdG8gZmluaXNoIGRpc2FibGluZyBJUFMsIHdoaWNoIG1heSB0YWtlIHVwIHRv IDQybXMgKi8KIAkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAogCQkJCQkg ICAgSVBTX0NUTCwgSVBTX0VOQUJMRSwgMCwKQEAgLTg4NDEsMTEgKzg4MzcsOSBAQCBzdGF0aWMg dWludDMyX3QgaHN3X3JlYWRfZGNvbXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogc3RhdGljIHZvaWQgaHN3X3dyaXRlX2Rjb21wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdWludDMyX3QgdmFsKQogewogCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewot CQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCQlpZiAoc2FuZHlicmlkZ2VfcGNv ZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjZfUENPREVfV1JJVEVfRF9DT01QLAogCQkJCQkgICAgdmFs KSkKIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byB3cml0ZSB0byBEX0NPTVBcbiIpOwotCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJfSBlbHNlIHsKIAkJSTkxNV9XUklU RShEX0NPTVBfQkRXLCB2YWwpOwogCQlQT1NUSU5HX1JFQUQoRF9DT01QX0JEVyk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMKaW5kZXggMTRjYTVkMzA1N2E3Li44MTI1OWE0ZmJkZmQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKQEAgLTY4LDEwICs2OCw4IEBAIHN0YXRpYyBpbnQgaW50 ZWxfaGRjcF9sb2FkX2tleXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAq IGRpZmZlciBpbiB0aGUga2V5IGxvYWQgdHJpZ2dlciBwcm9jZXNzIGZyb20gb3RoZXIgcGxhdGZv cm1zLgogCSAqLwogCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZf cHJpdikpIHsKLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAkJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsCiAJCQkJCSAgICAgIFNLTF9QQ09ERV9MT0FE X0hEQ1BfS0VZUywgMSk7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAkJ aWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhdGUgSERDUCBrZXkgbG9h ZCAoJWQpXG4iLAogCQkJICAgICAgICAgIHJldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRl eCAwOGRkMzk5MDYzM2MuLmI1NTZlYTMyMzljYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBA IC0zMTAsNyArMzEwLDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9tZW1vcnlfZHZmcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQogewogCXUzMiB2YWw7CiAK LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXZsdl9wdW5pdF9nZXQoZGV2X3By aXYpOwogCiAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19ERFJfU0VU VVAyKTsKQEAgLTMyNywxNCArMzI2LDEyIEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X2R2 ZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGVuYWJsZSkKIAkJRFJN X0VSUk9SKCJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgUHVuaXQgRERSIERWRlMgcmVxdWVzdFxuIik7 CiAKIAl2bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5w Y3VfbG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X3BtNShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQogewogCXUzMiB2YWw7CiAKLQlt dXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXZsdl9wdW5pdF9nZXQoZGV2X3ByaXYp OwogCiAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKTsK QEAgLTM0NSw3ICszNDIsNiBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X21lbW9yeV9wbTUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGVuYWJsZSkKIAl2bHZfcHVuaXRfd3Jp dGUoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRLCB2YWwpOwogCiAJdmx2X3B1bml0X3B1dChk ZXZfcHJpdik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogfQogCiAjZGVm aW5lIEZXX1dNKHZhbHVlLCBwbGFuZSkgXApAQCAtMjgxMCwxMSArMjgwNiw5IEBAIHN0YXRpYyB2 b2lkIGludGVsX3JlYWRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAKIAkJLyogcmVhZCB0aGUgZmlyc3Qgc2V0IG9mIG1lbW9yeSBsYXRlbmNpZXNbMDozXSAq LwogCQl2YWwgPSAwOyAvKiBkYXRhMCB0byBiZSBwcm9ncmFtbWVkIHRvIDAgZm9yIGZpcnN0IHNl dCAqLwotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCQlyZXQgPSBzYW5keWJy aWRnZV9wY29kZV9yZWFkKGRldl9wcml2LAogCQkJCQkgICAgIEdFTjlfUENPREVfUkVBRF9NRU1f TEFURU5DWSwKIAkJCQkJICAgICAmdmFsKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1 X2xvY2spOwogCiAJCWlmIChyZXQpIHsKIAkJCURSTV9FUlJPUigiU0tMIE1haWxib3ggcmVhZCBl cnJvciA9ICVkXG4iLCByZXQpOwpAQCAtMjgzMSwxMSArMjgyNSw5IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3JlYWRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAK IAkJLyogcmVhZCB0aGUgc2Vjb25kIHNldCBvZiBtZW1vcnkgbGF0ZW5jaWVzWzQ6N10gKi8KIAkJ dmFsID0gMTsgLyogZGF0YTAgdG8gYmUgcHJvZ3JhbW1lZCB0byAxIGZvciBzZWNvbmQgc2V0ICov Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJCXJldCA9IHNhbmR5YnJpZGdl X3Bjb2RlX3JlYWQoZGV2X3ByaXYsCiAJCQkJCSAgICAgR0VOOV9QQ09ERV9SRUFEX01FTV9MQVRF TkNZLAogCQkJCQkgICAgICZ2YWwpOwotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9j ayk7CiAJCWlmIChyZXQpIHsKIAkJCURSTV9FUlJPUigiU0tMIE1haWxib3ggcmVhZCBlcnJvciA9 ICVkXG4iLCByZXQpOwogCQkJcmV0dXJuOwpAQCAtMzYyMiwxMyArMzYxNCwxMCBAQCBpbnRlbF9l bmFibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybiAw OwogCiAJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgdGhlIFNBR1ZcbiIpOwotCW11dGV4X2xvY2so JmRldl9wcml2LT5wY3VfbG9jayk7Ci0KIAlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShk ZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCiAJCQkJICAgICAgR0VOOV9TQUdWX0VO QUJMRSk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBTQUdWIHdoZW4gZW5h YmxpbmcgKi8KLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAKIAkvKgogCSAq IFNvbWUgc2tsIHN5c3RlbXMsIHByZS1yZWxlYXNlIG1hY2hpbmVzIGluIHBhcnRpY3VsYXIsCkBA IC0zNjU5LDE1ICszNjQ4LDExIEBAIGludGVsX2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybiAwOwogCiAJRFJNX0RFQlVHX0tNUygiRGlzYWJs aW5nIHRoZSBTQUdWXG4iKTsKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCiAJ LyogYnNwZWMgc2F5cyB0byBrZWVwIHJldHJ5aW5nIGZvciBhdCBsZWFzdCAxIG1zICovCiAJcmV0 ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAog CQkJCUdFTjlfU0FHVl9ESVNBQkxFLAogCQkJCUdFTjlfU0FHVl9JU19ESVNBQkxFRCwgR0VOOV9T QUdWX0lTX0RJU0FCTEVELAogCQkJCTEpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9s b2NrKTsKLQogCS8qCiAJICogU29tZSBza2wgc3lzdGVtcywgcHJlLXJlbGVhc2UgbWFjaGluZXMg aW4gcGFydGljdWxhciwKIAkgKiBkb24ndCBhY3R1YWxseSBoYXZlIGFuIFNBR1YuCkBAIC01Njg0 LDcgKzU2NjksNiBAQCB2b2lkIHZsdl93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAl3bS0+bGV2ZWwgPSBWTFZfV01fTEVWRUxfUE0yOwogCiAJaWYgKElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKSB7Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJCXZs dl9wdW5pdF9nZXQoZGV2X3ByaXYpOwogCiAJCXZhbCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2 LCBQVU5JVF9SRUdfRFNQRlJFUSk7CkBAIC01NzE2LDcgKzU3MDAsNiBAQCB2b2lkIHZsdl93bV9n ZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJfQogCiAJCXZsdl9wdW5pdF9w dXQoZGV2X3ByaXYpOwotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJfQog CiAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKQEAgLTYzMjQsNyArNjMwNyw3IEBA IHZvaWQgZ2VuNl9ycHNfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 CiAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CiAKLQltdXRl eF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7CiAJ aWYgKHJwcy0+ZW5hYmxlZCkgewogCQl1OCBmcmVxOwogCkBAIC02MzQ3LDcgKzYzMzAsNyBAQCB2 b2lkIGdlbjZfcnBzX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJ CQlycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkpKQogCQkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVk IHRvIHNldCBpZGxlIGZyZXF1ZW5jeVxuIik7CiAJfQotCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnBjdV9sb2NrKTsKKwltdXRleF91bmxvY2soJnJwcy0+bG9jayk7CiB9CiAKIHZvaWQgZ2VuNl9y cHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCkBAIC02MzYxLDcgKzYz NDQsNyBAQCB2b2lkIGdlbjZfcnBzX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCSAqLwogCWdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7CiAKLQlt dXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7 CiAJaWYgKHJwcy0+ZW5hYmxlZCkgewogCQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwg SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCQl2bHZfc2V0X3Jwc19pZGxlKGRldl9wcml2KTsK QEAgLTYzNzEsNyArNjM1NCw3IEBAIHZvaWQgZ2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCUk5MTVfV1JJVEUoR0VONl9QTUlOVFJNU0ssCiAJCQkgICBn ZW42X3Nhbml0aXplX3Jwc19wbV9tYXNrKGRldl9wcml2LCB+MCkpOwogCX0KLQltdXRleF91bmxv Y2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZycHMtPmxvY2spOwogfQog CiB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLApAQCAtNjQxMiw3 ICs2Mzk1LDcgQEAgaW50IGludGVsX3NldF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1OCB2YWwpCiAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9w bS5ycHM7CiAJaW50IGVycjsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wY3Vf bG9jayk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcnBzLT5sb2NrKTsKIAlHRU1fQlVHX09OKHZh bCA+IHJwcy0+bWF4X2ZyZXEpOwogCUdFTV9CVUdfT04odmFsIDwgcnBzLT5taW5fZnJlcSk7CiAK QEAgLTY5MTEsNyArNjg5NCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfdXBkYXRlX3JpbmdfZnJlcShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50IHNjYWxpbmdfZmFjdG9yID0g MTgwOwogCXN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5OwogCi0JV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZkZXZfcHJpdi0+cGN1X2xvY2spKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZy cHMtPmxvY2spOwogCiAJcG9saWN5ID0gY3B1ZnJlcV9jcHVfZ2V0KDApOwogCWlmIChwb2xpY3kp IHsKQEAgLTc5ODcsNyArNzk3MCw3IEBAIHZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7CiAJfQogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRl eF9sb2NrKCZycHMtPmxvY2spOwogCiAJLyogSW5pdGlhbGl6ZSBSUFMgbGltaXRzIChmb3IgdXNl cnNwYWNlKSAqLwogCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKQEAgLTgwMjcsNyArODAx MCw3IEBAIHZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCS8qIEZpbmFsbHkgYWxsb3cgdXMgdG8gYm9vc3QgdG8gbWF4IGJ5IGRl ZmF1bHQgKi8KIAlycHMtPmJvb3N0X2ZyZXEgPSBycHMtPm1heF9mcmVxOwogCi0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKIH0K IAogdm9pZCBpbnRlbF9jbGVhbnVwX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCkBAIC04MDY5LDcgKzgwNTIsNyBAQCB2b2lkIGludGVsX3Nhbml0aXplX2d0 X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIHN0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9kaXNhYmxlX2xsY19wc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+cGN1X2xvY2spOworCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmd0X3BtLnJwcy5sb2NrKTsKIAogCWlmICghaTkxNS0+ Z3RfcG0ubGxjX3BzdGF0ZS5lbmFibGVkKQogCQlyZXR1cm47CkBAIC04MDgxLDcgKzgwNjQsNyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZGlzYWJsZV9sbGNfcHN0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQogCiBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3JjNihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+Z3Rf cG0ucnBzLmxvY2spOwogCiAJaWYgKCFkZXZfcHJpdi0+Z3RfcG0ucmM2LmVuYWJsZWQpCiAJCXJl dHVybjsKQEAgLTgxMDAsNyArODA4Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcmM2 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGljIHZvaWQgaW50ZWxf ZGlzYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wY3VfbG9jayk7CisJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZGV2X3ByaXYtPmd0X3BtLnJwcy5sb2NrKTsKIAogCWlmICghZGV2X3ByaXYtPmd0X3BtLnJw cy5lbmFibGVkKQogCQlyZXR1cm47CkBAIC04MTIxLDE5ICs4MTA0LDE5IEBAIHN0YXRpYyB2b2lk IGludGVsX2Rpc2FibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAog dm9pZCBpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7Ci0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRleF9s b2NrKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogCiAJaW50ZWxfZGlzYWJsZV9yYzYoZGV2 X3ByaXYpOwogCWludGVsX2Rpc2FibGVfcnBzKGRldl9wcml2KTsKIAlpZiAoSEFTX0xMQyhkZXZf cHJpdikpCiAJCWludGVsX2Rpc2FibGVfbGxjX3BzdGF0ZShkZXZfcHJpdik7CiAKLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z3Rf cG0ucnBzLmxvY2spOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5hYmxlX2xsY19w c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JbG9ja2RlcF9hc3NlcnRf aGVsZCgmaTkxNS0+cGN1X2xvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmd0X3Bt LnJwcy5sb2NrKTsKIAogCWlmIChpOTE1LT5ndF9wbS5sbGNfcHN0YXRlLmVuYWJsZWQpCiAJCXJl dHVybjsKQEAgLTgxNDUsNyArODEyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmFi bGVfbGxjX3BzdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogc3RhdGljIHZv aWQgaW50ZWxfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogCiAJaWYgKGRldl9wcml2LT5n dF9wbS5yYzYuZW5hYmxlZCkKIAkJcmV0dXJuOwpAQCAtODE2OCw3ICs4MTUxLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiB7CiAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CiAKLQls b2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJnJwcy0+bG9jayk7CiAKIAlpZiAocnBzLT5lbmFibGVkKQogCQlyZXR1cm47CkBAIC04 MjA1LDcgKzgxODgsNyBAQCB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJp dikpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPmd0X3BtLnJwcy5sb2NrKTsKIAogCWlmIChIQVNfUkM2KGRldl9w cml2KSkKIAkJaW50ZWxfZW5hYmxlX3JjNihkZXZfcHJpdik7CkBAIC04MjEzLDcgKzgxOTYsNyBA QCB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCWlmIChIQVNfTExDKGRldl9wcml2KSkKIAkJaW50ZWxfZW5hYmxlX2xsY19w c3RhdGUoZGV2X3ByaXYpOwogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwor CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmd0X3BtLnJwcy5sb2NrKTsKIH0KIAogc3RhdGljIHZv aWQgaWJ4X2luaXRfY2xvY2tfZ2F0aW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKQEAgLTkyMTgsMjIgKzkyMDEsMTkgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuN19jaGVja19t YWlsYm94X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogfQog Ci1pbnQgc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiBtYm94LCB1MzIgKnZhbCkKK3N0YXRpYyBpbnQgX19zYW5keWJyaWRnZV9wY29k ZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAq dmFsKQogewogCWludCBzdGF0dXM7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9w cml2LT5wY3VfbG9jaykpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5zYl9sb2Nr KTsKIAogCS8qIEdFTjZfUENPREVfKiBhcmUgb3V0c2lkZSBvZiB0aGUgZm9yY2V3YWtlIGRvbWFp biwgd2UgY2FuCiAJICogdXNlIHRlIGZ3IEk5MTVfUkVBRCB2YXJpYW50cyB0byByZWR1Y2UgdGhl IGFtb3VudCBvZiB3b3JrCiAJICogcmVxdWlyZWQgd2hlbiByZWFkaW5nL3dyaXRpbmcuCiAJICov CiAKLQlpZiAoSTkxNV9SRUFEX0ZXKEdFTjZfUENPREVfTUFJTEJPWCkgJiBHRU42X1BDT0RFX1JF QURZKSB7Ci0JCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBjb2RlIChyZWFkIGZyb20gbWJv eCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAlcHNcbiIsCi0JCQkJIG1ib3gsIF9fYnVp bHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CisJaWYgKEk5MTVfUkVBRF9GVyhHRU42X1BDT0RFX01B SUxCT1gpICYgR0VONl9QQ09ERV9SRUFEWSkKIAkJcmV0dXJuIC1FQUdBSU47Ci0JfQogCiAJSTkx NV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEsICp2YWwpOwogCUk5MTVfV1JJVEVfRlcoR0VONl9Q Q09ERV9EQVRBMSwgMCk7CkBAIC05MjQxLDExICs5MjIxLDggQEAgaW50IHNhbmR5YnJpZGdlX3Bj b2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMy ICp2YWwKIAogCWlmIChfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyX2Z3KGRldl9wcml2LAogCQkJ CQkgR0VONl9QQ09ERV9NQUlMQk9YLCBHRU42X1BDT0RFX1JFQURZLCAwLAotCQkJCQkgNTAwLCAw LCBOVUxMKSkgewotCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgcGNvZGUgcmVhZCAo ZnJvbSBtYm94ICV4KSB0byBmaW5pc2ggZm9yICVwc1xuIiwKLQkJCSAgbWJveCwgX19idWlsdGlu X3JldHVybl9hZGRyZXNzKDApKTsKKwkJCQkJIDUwMCwgMCwgTlVMTCkpCiAJCXJldHVybiAtRVRJ TUVET1VUOwotCX0KIAogCSp2YWwgPSBJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9EQVRBKTsKIAlJ OTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQSwgMCk7CkBAIC05MjU1LDMzICs5MjMyLDM5IEBA IGludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsCiAJZWxzZQogCQlzdGF0dXMgPSBnZW42X2NoZWNrX21h aWxib3hfc3RhdHVzKGRldl9wcml2KTsKIAorCXJldHVybiBzdGF0dXM7Cit9CisKK2ludCBzYW5k eWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IG1ib3gsIHUzMiAqdmFsKQoreworCWludCBzdGF0dXM7CisKKwltdXRleF9sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7CisJc3RhdHVzID0gX19zYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2 LCBtYm94LCB2YWwpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOworCiAJaWYg KHN0YXR1cykgewogCQlEUk1fREVCVUdfRFJJVkVSKCJ3YXJuaW5nOiBwY29kZSAocmVhZCBmcm9t IG1ib3ggJXgpIG1haWxib3ggYWNjZXNzIGZhaWxlZCBmb3IgJXBzOiAlZFxuIiwKIAkJCQkgbWJv eCwgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBzdGF0dXMpOwotCQlyZXR1cm4gc3RhdHVz OwogCX0KIAotCXJldHVybiAwOworCXJldHVybiBzdGF0dXM7CiB9CiAKLWludCBzYW5keWJyaWRn ZV9wY29kZV93cml0ZV90aW1lb3V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK LQkJCQkgICAgdTMyIG1ib3gsIHUzMiB2YWwsCi0JCQkJICAgIGludCBmYXN0X3RpbWVvdXRfdXMs IGludCBzbG93X3RpbWVvdXRfbXMpCitzdGF0aWMgaW50IF9fc2FuZHlicmlkZ2VfcGNvZGVfd3Jp dGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCSAgICAg dTMyIG1ib3gsIHUzMiB2YWwsCisJCQkJCSAgICAgaW50IGZhc3RfdGltZW91dF91cywKKwkJCQkJ ICAgICBpbnQgc2xvd190aW1lb3V0X21zKQogewogCWludCBzdGF0dXM7CiAKLQlXQVJOX09OKCFt dXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5wY3VfbG9jaykpOwotCiAJLyogR0VONl9QQ09ERV8q IGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JjZXdha2UgZG9tYWluLCB3ZSBjYW4KIAkgKiB1c2UgdGUg ZncgSTkxNV9SRUFEIHZhcmlhbnRzIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHdvcmsKIAkgKiBy ZXF1aXJlZCB3aGVuIHJlYWRpbmcvd3JpdGluZy4KIAkgKi8KIAotCWlmIChJOTE1X1JFQURfRlco R0VONl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZfUENPREVfUkVBRFkpIHsKLQkJRFJNX0RFQlVHX0RS SVZFUigid2FybmluZzogcGNvZGUgKHdyaXRlIG9mIDB4JTA4eCB0byBtYm94ICV4KSBtYWlsYm94 IGFjY2VzcyBmYWlsZWQgZm9yICVwc1xuIiwKLQkJCQkgdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCkpOworCWlmIChJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAm IEdFTjZfUENPREVfUkVBRFkpCiAJCXJldHVybiAtRUFHQUlOOwotCX0KIAogCUk5MTVfV1JJVEVf RlcoR0VONl9QQ09ERV9EQVRBLCB2YWwpOwogCUk5MTVfV1JJVEVfRlcoR0VONl9QQ09ERV9EQVRB MSwgMCk7CkBAIC05MjkwLDExICs5MjczLDggQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRl X3RpbWVvdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlmIChfX2ludGVs X3dhaXRfZm9yX3JlZ2lzdGVyX2Z3KGRldl9wcml2LAogCQkJCQkgR0VONl9QQ09ERV9NQUlMQk9Y LCBHRU42X1BDT0RFX1JFQURZLCAwLAogCQkJCQkgZmFzdF90aW1lb3V0X3VzLCBzbG93X3RpbWVv dXRfbXMsCi0JCQkJCSBOVUxMKSkgewotCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3Ig cGNvZGUgd3JpdGUgb2YgMHglMDh4IHRvIG1ib3ggJXggdG8gZmluaXNoIGZvciAlcHNcbiIsCi0J CQkgIHZhbCwgbWJveCwgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKKwkJCQkJIE5VTEwp KQogCQlyZXR1cm4gLUVUSU1FRE9VVDsKLQl9CiAKIAlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVf REFUQSwgMCk7CiAKQEAgLTkzMDMsMTMgKzkyODMsMjggQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2Rl X3dyaXRlX3RpbWVvdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWVsc2UK IAkJc3RhdHVzID0gZ2VuNl9jaGVja19tYWlsYm94X3N0YXR1cyhkZXZfcHJpdik7CiAKKwlyZXR1 cm4gc3RhdHVzOworfQorCitpbnQgc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgIHUzMiBtYm94LCB1MzIgdmFs LAorCQkJCSAgICBpbnQgZmFzdF90aW1lb3V0X3VzLAorCQkJCSAgICBpbnQgc2xvd190aW1lb3V0 X21zKQoreworCWludCBzdGF0dXM7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 CisJc3RhdHVzID0gX19zYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1lb3V0KGRldl9wcml2LCBt Ym94LCB2YWwsCisJCQkJCQkgICBmYXN0X3RpbWVvdXRfdXMsCisJCQkJCQkgICBzbG93X3RpbWVv dXRfbXMpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOworCiAJaWYgKHN0YXR1 cykgewogCQlEUk1fREVCVUdfRFJJVkVSKCJ3YXJuaW5nOiBwY29kZSAod3JpdGUgb2YgMHglMDh4 IHRvIG1ib3ggJXgpIG1haWxib3ggYWNjZXNzIGZhaWxlZCBmb3IgJXBzOiAlZFxuIiwKIAkJCQkg dmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIHN0YXR1cyk7Ci0JCXJldHVy biBzdGF0dXM7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHN0YXR1czsKIH0KIAogc3RhdGlj IGJvb2wgc2tsX3Bjb2RlX3RyeV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIG1ib3gsCkBAIC05MzE4LDcgKzkzMTMsNyBAQCBzdGF0aWMgYm9vbCBza2xfcGNv ZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJv eCwKIHsKIAl1MzIgdmFsID0gcmVxdWVzdDsKIAotCSpzdGF0dXMgPSBzYW5keWJyaWRnZV9wY29k ZV9yZWFkKGRldl9wcml2LCBtYm94LCAmdmFsKTsKKwkqc3RhdHVzID0gX19zYW5keWJyaWRnZV9w Y29kZV9yZWFkKGRldl9wcml2LCBtYm94LCAmdmFsKTsKIAogCXJldHVybiAqc3RhdHVzIHx8ICgo dmFsICYgcmVwbHlfbWFzaykgPT0gcmVwbHkpOwogfQpAQCAtOTM0OCw3ICs5MzQzLDcgQEAgaW50 IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IG1ib3gsIHUzMiByZXF1ZXN0LAogCXUzMiBzdGF0dXM7CiAJaW50IHJldDsKIAotCVdBUk5fT04o IW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBjdV9sb2NrKSk7CisJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnNiX2xvY2spOwogCiAjZGVmaW5lIENPTkQgc2tsX3Bjb2RlX3RyeV9yZXF1ZXN0KGRl dl9wcml2LCBtYm94LCByZXF1ZXN0LCByZXBseV9tYXNrLCByZXBseSwgXAogCQkJCSAgICZzdGF0 dXMpCkBAIC05Mzg0LDYgKzkzNzksNyBAQCBpbnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyIHJlcXVlc3QsCiAJcHJlZW1w dF9lbmFibGUoKTsKIAogb3V0OgorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwog CXJldHVybiByZXQgPyByZXQgOiBzdGF0dXM7CiAjdW5kZWYgQ09ORAogfQpAQCAtOTQ1Myw4ICs5 NDQ5LDcgQEAgaW50IGludGVsX2ZyZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaW50IHZhbCkKIAogdm9pZCBpbnRlbF9wbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBjdV9sb2NrKTsK LQorCW11dGV4X2luaXQoJmRldl9wcml2LT5ndF9wbS5ycHMubG9jayk7CiAJYXRvbWljX3NldCgm ZGV2X3ByaXYtPmd0X3BtLnJwcy5udW1fd2FpdGVycywgMCk7CiAKIAlkZXZfcHJpdi0+cnVudGlt ZV9wbS5zdXNwZW5kZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwppbmRleCAwNjliNmEzMDQ2OGYuLjJjYzY0ZjBmZGE1NyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYwpAQCAtODE1LDcgKzgxNSw2IEBAIHN0YXRpYyB2b2lkIHZs dl9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3Rh dGUgPSBlbmFibGUgPyBQVU5JVF9QV1JHVF9QV1JfT04ocG93ZXJfd2VsbF9pZCkgOgogCQkJIFBV TklUX1BXUkdUX1BXUl9HQVRFKHBvd2VyX3dlbGxfaWQpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBjdV9sb2NrKTsKIAl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogI2RlZmluZSBDT05E IFwKQEAgLTgzOCw3ICs4MzcsNiBAQCBzdGF0aWMgdm9pZCB2bHZfc2V0X3Bvd2VyX3dlbGwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiBvdXQ6CiAJdmx2X3B1bml0X3B1dChk ZXZfcHJpdik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogfQogCiBzdGF0 aWMgdm9pZCB2bHZfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LApAQCAtODY1LDcgKzg2Myw2IEBAIHN0YXRpYyBib29sIHZsdl9wb3dlcl93ZWxsX2Vu YWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCW1hc2sgPSBQVU5JVF9Q V1JHVF9NQVNLKHBvd2VyX3dlbGxfaWQpOwogCWN0cmwgPSBQVU5JVF9QV1JHVF9QV1JfT04ocG93 ZXJfd2VsbF9pZCk7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXZsdl9w dW5pdF9nZXQoZGV2X3ByaXYpOwogCiAJc3RhdGUgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwg UFVOSVRfUkVHX1BXUkdUX1NUQVRVUykgJiBtYXNrOwpAQCAtODg2LDcgKzg4Myw2IEBAIHN0YXRp YyBib29sIHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCVdBUk5fT04oY3RybCAhPSBzdGF0ZSk7CiAKIAl2bHZfcHVuaXRfcHV0KGRldl9w cml2KTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAKIAlyZXR1cm4gZW5h YmxlZDsKIH0KQEAgLTEzOTgsNyArMTM5NCw2IEBAIHN0YXRpYyBib29sIGNodl9waXBlX3Bvd2Vy X3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJYm9vbCBl bmFibGVkOwogCXUzMiBzdGF0ZSwgY3RybDsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3Vf bG9jayk7CiAJdmx2X3B1bml0X2dldChkZXZfcHJpdik7CiAKIAlzdGF0ZSA9IHZsdl9wdW5pdF9y ZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQRlJFUSkgJiBEUF9TU1NfTUFTSyhwaXBlKTsKQEAg LTE0MTcsNyArMTQxMiw2IEBAIHN0YXRpYyBib29sIGNodl9waXBlX3Bvd2VyX3dlbGxfZW5hYmxl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJV0FSTl9PTihjdHJsIDw8IDE2 ICE9IHN0YXRlKTsKIAogCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCXJldHVybiBlbmFibGVkOwogfQpAQCAtMTQzMiw3ICsx NDI2LDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9waXBlX3Bvd2VyX3dlbGwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJc3RhdGUgPSBlbmFibGUgPyBEUF9TU1NfUFdSX09O KHBpcGUpIDogRFBfU1NTX1BXUl9HQVRFKHBpcGUpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnBjdV9sb2NrKTsKIAl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogI2RlZmluZSBDT05EIFwK QEAgLTE0NTUsNyArMTQ0OCw2IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfcGlwZV9wb3dlcl93ZWxs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogb3V0OgogCXZsdl9wdW5pdF9w dXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIH0KIAog c3RhdGljIHZvaWQgY2h2X3BpcGVfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c2lkZWJhbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKaW5kZXgg ZGMzYjQ5MWI0ZDAwLi4yZDRlNDhlOWUxZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3NpZGViYW5kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lk ZWJhbmQuYwpAQCAtMTQyLDggKzE0Miw2IEBAIHUzMiB2bHZfcHVuaXRfcmVhZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKQogewogCXUzMiB2YWwgPSAwOwogCi0J bG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQogCXZsdl9zaWRlYmFu ZF9ydyhkZXZfcHJpdiwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfUFVOSVQsCiAJCQlTQl9D UlJEREFfTlAsIGFkZHIsICZ2YWwpOwogCkBAIC0xNTIsOCArMTUwLDYgQEAgdTMyIHZsdl9wdW5p dF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpCiAKIGlu dCB2bHZfcHVuaXRfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg YWRkciwgdTMyIHZhbCkKIHsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cGN1X2xv Y2spOwotCiAJcmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhkZXZfcHJpdiwgUENJX0RFVkZOKDAsIDAp LCBJT1NGX1BPUlRfUFVOSVQsCiAJCQkgICAgICAgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsK IH0KLS0gCjIuMTYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==