From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 06/10] drm/i915: Replace pcu_lock with sb_lock Date: Wed, 7 Mar 2018 19:41:58 +0000 Message-ID: <20180307194202.31099-7-chris@chris-wilson.co.uk> References: <20180307194202.31099-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 E44576E214 for ; Wed, 7 Mar 2018 19:42:23 +0000 (UTC) In-Reply-To: <20180307194202.31099-1-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 bHkKZ2l2aW5nIFJQUyBhIGxvY2sgYWxsIG9mIGl0cyBvd24pLgoKU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgIDU1ICsrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMTAgKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc3lzZnMuYyAgICAgICB8ICA0MCArKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jZGNsay5jICAgICAgfCAgMjggLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jICAgIHwgICA2IC0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMgICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAg IHwgMTI3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAgIDggLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3NpZGViYW5kLmMgICB8ICAgNCAtCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9u cygrKSwgMTgwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5k ZXggMjBhNmMwMGE3MzY1Li44MmI4YmZlMjk0MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCkBAIC0xMDc0LDggKzEwNzQsNiBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2lu Zm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewogCQl1MzIgcnBt b2RlY3RsLCBmcmVxX3N0czsKIAotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwot CiAJCXJwbW9kZWN0bCA9IEk5MTVfUkVBRChHRU42X1JQX0NPTlRST0wpOwogCQlzZXFfcHJpbnRm KG0sICJWaWRlbyBUdXJibyBNb2RlOiAlc1xuIiwKIAkJCSAgIHllc25vKHJwbW9kZWN0bCAmIEdF TjZfUlBfTUVESUFfVFVSQk8pKTsKQEAgLTExMTAsNyArMTEwOCw2IEBAIHN0YXRpYyBpbnQgaTkx NV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJc2Vx X3ByaW50ZihtLAogCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwK IAkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPmVmZmljaWVudF9mcmVxKSk7Ci0J CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAl9IGVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNikgewogCQl1MzIgcnBfc3RhdGVfbGltaXRzOwogCQl1MzIgZ3RfcGVy Zl9zdGF0dXM7CkBAIC0xNTI1LDEyICsxNTIyLDkgQEAgc3RhdGljIGludCBnZW42X2RycGNfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJCWdlbjlfcG93ZXJnYXRlX3N0YXR1cyA9IEk5MTVfUkVB RChHRU45X1BXUkdUX0RPTUFJTl9TVEFUVVMpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDw9IDcpIHsKLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8PSA3KQogCQlzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2 LCBHRU42X1BDT0RFX1JFQURfUkM2VklEUywKIAkJCQkgICAgICAgJnJjNnZpZHMpOwotCQltdXRl eF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Ci0JfQogCiAJc2VxX3ByaW50ZihtLCAiUkMx ZSBFbmFibGVkOiAlc1xuIiwKIAkJICAgeWVzbm8ocmNjdGwxICYgR0VONl9SQ19DVExfUkMxZV9F TkFCTEUpKTsKQEAgLTE3OTksMzAgKzE3OTMsMjQgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJl cV90YWJsZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CiAJc3Ry dWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7Ci0JaW50IHJldCA9IDA7 CiAJaW50IGdwdV9mcmVxLCBpYV9mcmVxOwogCXVuc2lnbmVkIGludCBtYXhfZ3B1X2ZyZXEsIG1p bl9ncHVfZnJlcTsKIAogCWlmICghSEFTX0xMQyhkZXZfcHJpdikpCiAJCXJldHVybiAtRU5PREVW OwogCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwotCi0JcmV0ID0gbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCWlmIChyZXQpCi0JCWdvdG8g b3V0OworCW1pbl9ncHVfZnJlcSA9IHJwcy0+bWluX2ZyZXE7CisJbWF4X2dwdV9mcmVxID0gcnBz LT5tYXhfZnJlcTsKIAogCWlmIChJU19HRU45X0JDKGRldl9wcml2KSB8fCBJU19DQU5OT05MQUtF KGRldl9wcml2KSkgewogCQkvKiBDb252ZXJ0IEdUIGZyZXF1ZW5jeSB0byA1MCBIWiB1bml0cyAq LwotCQltaW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCAvIEdFTjlfRlJFUV9T Q0FMRVI7Ci0JCW1heF9ncHVfZnJlcSA9IHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0IC8gR0VOOV9G UkVRX1NDQUxFUjsKLQl9IGVsc2UgewotCQltaW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxX3Nv ZnRsaW1pdDsKLQkJbWF4X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQ7CisJCW1p bl9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOworCQltYXhfZ3B1X2ZyZXEgLz0gR0VOOV9G UkVRX1NDQUxFUjsKIAl9CiAKIAlzZXFfcHV0cyhtLCAiR1BVIGZyZXEgKE1IeilcdEVmZmVjdGl2 ZSBDUFUgZnJlcSAoTUh6KVx0RWZmZWN0aXZlIFJpbmcgZnJlcSAoTUh6KVxuIik7CiAKKwlpbnRl bF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAJZm9yIChncHVfZnJlcSA9IG1pbl9ncHVfZnJl cTsgZ3B1X2ZyZXEgPD0gbWF4X2dwdV9mcmVxOyBncHVfZnJlcSsrKSB7CiAJCWlhX2ZyZXEgPSBn cHVfZnJlcTsKIAkJc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwKQEAgLTE4MzYsMTIg KzE4MjQsOSBAQCBzdGF0aWMgaW50IGk5MTVfcmluZ19mcmVxX3RhYmxlKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqdW51c2VkKQogCQkJICAgKChpYV9mcmVxID4+IDApICYgMHhmZikgKiAxMDAs CiAJCQkgICAoKGlhX2ZyZXEgPj4gOCkgJiAweGZmKSAqIDEwMCk7CiAJfQotCi0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCi1vdXQ6CiAJaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYpOwotCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBp OTE1X29wcmVnaW9uKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQpAQCAtNDE2OSw3 ICs0MTU0LDcgQEAgaTkxNV9tYXhfZnJlcV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAogCURS TV9ERUJVR19EUklWRVIoIk1hbnVhbGx5IHNldHRpbmcgbWF4IGZyZXEgdG8gJWxsdVxuIiwgdmFs KTsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnJwcy0+bG9jayk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNDE4Miw4ICs0MTY3LDggQEAgaTkxNV9tYXhfZnJlcV9z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIAlod19taW4gPSBycHMtPm1pbl9mcmVxOwogCiAJaWYg KHZhbCA8IGh3X21pbiB8fCB2YWwgPiBod19tYXggfHwgdmFsIDwgcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQpIHsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCQlyZXR1cm4g LUVJTlZBTDsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byB1bmxvY2s7CiAJfQogCiAJcnBzLT5t YXhfZnJlcV9zb2Z0bGltaXQgPSB2YWw7CkBAIC00MTkxLDkgKzQxNzYsOSBAQCBpOTE1X21heF9m cmVxX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCWlmIChpbnRlbF9zZXRfcnBzKGRldl9wcml2 LCB2YWwpKQogCQlEUk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gdXBkYXRlIFJQUyB0byBuZXcg c29mdGxpbWl0XG4iKTsKIAotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQot CXJldHVybiAwOwordW5sb2NrOgorCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKKwlyZXR1cm4g cmV0OwogfQogCiBERUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1X21heF9mcmVxX2ZvcHMsCkBA IC00MjI1LDcgKzQyMTAsNyBAQCBpOTE1X21pbl9mcmVxX3NldCh2b2lkICpkYXRhLCB1NjQgdmFs KQogCiAJRFJNX0RFQlVHX0RSSVZFUigiTWFudWFsbHkgc2V0dGluZyBtaW4gZnJlcSB0byAlbGx1 XG4iLCB2YWwpOwogCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+ cGN1X2xvY2spOworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcnBzLT5sb2NrKTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC00MjM5LDggKzQyMjQsOCBAQCBpOTE1X21p bl9mcmVxX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCiAJaWYgKHZhbCA8IGh3X21pbiB8fAog CSAgICB2YWwgPiBod19tYXggfHwgdmFsID4gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpIHsKLQkJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJ cmV0ID0gLUVJTlZBTDsKKwkJZ290byB1bmxvY2s7CiAJfQogCiAJcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQgPSB2YWw7CkBAIC00MjQ4LDkgKzQyMzMsOSBAQCBpOTE1X21pbl9mcmVxX3NldCh2b2lk ICpkYXRhLCB1NjQgdmFsKQogCWlmIChpbnRlbF9zZXRfcnBzKGRldl9wcml2LCB2YWwpKQogCQlE Uk1fREVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gdXBkYXRlIFJQUyB0byBuZXcgc29mdGxpbWl0XG4i KTsKIAotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQotCXJldHVybiAwOwor dW5sb2NrOgorCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKKwlyZXR1cm4gcmV0OwogfQogCiBE RUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1X21pbl9mcmVxX2ZvcHMsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCBhZmM4OWE4ZjQzZTguLjYxZGY4YzMzOGUyMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC05MDAsNiArOTAwLDggQEAgc3RydWN0IGludGVsX3Jwc19laSB7CiB9Owog CiBzdHJ1Y3QgaW50ZWxfcnBzIHsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsKKwogCS8qCiAJICogd29y aywgaW50ZXJydXB0c19lbmFibGVkIGFuZCBwbV9paXIgYXJlIHByb3RlY3RlZCBieQogCSAqIGRl dl9wcml2LT5pcnFfbG9jawpAQCAtMjA1NCwxNCArMjA1Niw2IEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKIAkvKiBDYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBQQ0lJRC4gWW91IG11c3QgYWx3 YXlzIHJlYWQgYSByZWdpc3Rlci4gKi8KIAl1MzIgZWRyYW1fY2FwOwogCi0JLyoKLQkgKiBQcm90 ZWN0cyBSUFMvUkM2IHJlZ2lzdGVyIGFjY2VzcyBhbmQgUENVIGNvbW11bmljYXRpb24uCi0JICog TXVzdCBiZSB0YWtlbiBhZnRlciBzdHJ1Y3RfbXV0ZXggaWYgbmVzdGVkLiBOb3RlIHRoYXQKLQkg KiB0aGlzIGxvY2sgbWF5IGJlIGhlbGQgZm9yIGxvbmcgcGVyaW9kcyBvZiB0aW1lIHdoZW4KLQkg KiB0YWxraW5nIHRvIGh3IC0gc28gb25seSB0YWtlIGl0IHdoZW4gdGFsa2luZyB0byBodyEKLQkg Ki8KLQlzdHJ1Y3QgbXV0ZXggcGN1X2xvY2s7Ci0KIAkvKiBnZW42KyBHVCBQTSBzdGF0ZSAqLwog CXN0cnVjdCBpbnRlbF9nZW42X3Bvd2VyX21nbXQgZ3RfcG07CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCmluZGV4IDYzM2MxODc4NWMxZS4uYzI5MWE4ZWRmY2I5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKQEAgLTEyMDQsNyArMTIwNCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfcG1fcnBzX3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWlmICgocG1faWlyICYgZGV2X3ByaXYtPnBtX3Jw c19ldmVudHMpID09IDAgJiYgIWNsaWVudF9ib29zdCkKIAkJZ290byBvdXQ7CiAKLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7CiAKIAlw bV9paXIgfD0gdmx2X3dhX2MwX2VpKGRldl9wcml2LCBwbV9paXIpOwogCkBAIC0xMjU4LDcgKzEy NTgsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3BtX3Jwc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKIAkJcnBzLT5sYXN0X2FkaiA9IDA7CiAJfQogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cGN1X2xvY2spOworCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKIAogb3V0OgogCS8qIE1h a2Ugc3VyZSBub3QgdG8gY29ycnVwdCBQTUlNUiBzdGF0ZSB1c2VkIGJ5IHJpbmdidWZmZXIgb24g R0VONiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCmluZGV4IDE3YjIwYTM0ZTk5Zi4uMDM1 YjJmYzcyYmQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCkBAIC0yNjIsNyArMjYyLDYg QEAgc3RhdGljIHNzaXplX3QgZ3RfYWN0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rl diwKIAogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAotCW11dGV4X2xvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCXZsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwogCQlmcmVx ID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwpAQCAt MjcyLDcgKzI3MSw2IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVj dCBkZXZpY2UgKmtkZXYsCiAJfSBlbHNlIHsKIAkJZnJlcSA9IGludGVsX2dldF9jYWdmKGRldl9w cml2LCBJOTE1X1JFQUQoR0VONl9SUFNUQVQxKSk7CiAJfQotCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnBjdV9sb2NrKTsKIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKIApAQCAt MzA0LDYgKzMwMiw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3N0b3JlKHN0 cnVjdCBkZXZpY2UgKmtkZXYsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwogCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZk ZXZfcHJpdi0+Z3RfcG0ucnBzOworCWJvb2wgYm9vc3QgPSBmYWxzZTsKIAl1MzIgdmFsOwogCXNz aXplX3QgcmV0OwogCkBAIC0zMTYsOSArMzE1LDE0IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0 X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCiAJaWYgKHZhbCA8IHJwcy0+bWlu X2ZyZXEgfHwgdmFsID4gcnBzLT5tYXhfZnJlcSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRl eF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCXJwcy0+Ym9vc3RfZnJlcSA9IHZhbDsKLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0ZXhfbG9jaygmcnBzLT5sb2Nr KTsKKwlpZiAodmFsICE9IHJwcy0+Ym9vc3RfZnJlcSkgeworCQlycHMtPmJvb3N0X2ZyZXEgPSB2 YWw7CisJCWJvb3N0ID0gYXRvbWljX3JlYWQoJnJwcy0+bnVtX3dhaXRlcnMpOworCX0KKwltdXRl eF91bmxvY2soJnJwcy0+bG9jayk7CisJaWYgKGJvb3N0KQorCQlzY2hlZHVsZV93b3JrKCZycHMt PndvcmspOwogCiAJcmV0dXJuIGNvdW50OwogfQpAQCAtMzU2LDE3ICszNjAsMTQgQEAgc3RhdGlj IHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCiAJCXJl dHVybiByZXQ7CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Ci0KLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7CiAKIAl2 YWwgPSBpbnRlbF9mcmVxX29wY29kZShkZXZfcHJpdiwgdmFsKTsKLQogCWlmICh2YWwgPCBycHMt Pm1pbl9mcmVxIHx8CiAJICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXEgfHwKIAkgICAgdmFsIDwgcnBz LT5taW5fZnJlcV9zb2Z0bGltaXQpIHsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xv Y2spOwotCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Ci0JCXJldHVybiAtRUlOVkFM OworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIHVubG9jazsKIAl9CiAKIAlpZiAodmFsID4gcnBz LT5ycDBfZnJlcSkKQEAgLTM4NCw4ICszODUsOCBAQCBzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJl cV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqa2RldiwKIAkgKiBmcmVxdWVuY3kgcmVxdWVzdCBt YXkgYmUgdW5jaGFuZ2VkLiAqLwogCXJldCA9IGludGVsX3NldF9ycHMoZGV2X3ByaXYsIHZhbCk7 CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Ci0KK3VubG9jazoKKwltdXRl eF91bmxvY2soJnJwcy0+bG9jayk7CiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwog CiAJcmV0dXJuIHJldCA/OiBjb3VudDsKQEAgLTQxNCwxNyArNDE1LDE0IEBAIHN0YXRpYyBzc2l6 ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAogCQlyZXR1cm4g cmV0OwogCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwotCi0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRleF9sb2NrKCZycHMtPmxvY2spOwogCiAJdmFsID0g aW50ZWxfZnJlcV9vcGNvZGUoZGV2X3ByaXYsIHZhbCk7Ci0KIAlpZiAodmFsIDwgcnBzLT5taW5f ZnJlcSB8fAogCSAgICB2YWwgPiBycHMtPm1heF9mcmVxIHx8CiAJICAgIHZhbCA+IHJwcy0+bWF4 X2ZyZXFfc29mdGxpbWl0KSB7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsK LQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJ cmV0ID0gLUVJTlZBTDsKKwkJZ290byB1bmxvY2s7CiAJfQogCiAJcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQgPSB2YWw7CkBAIC00MzgsOCArNDM2LDggQEAgc3RhdGljIHNzaXplX3QgZ3RfbWluX2Zy ZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCiAJICogZnJlcXVlbmN5IHJlcXVlc3Qg bWF5IGJlIHVuY2hhbmdlZC4gKi8KIAlyZXQgPSBpbnRlbF9zZXRfcnBzKGRldl9wcml2LCB2YWwp OwogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCit1bmxvY2s6CisJbXV0 ZXhfdW5sb2NrKCZycHMtPmxvY2spOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsK IAogCXJldHVybiByZXQgPzogY291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwppbmRl eCBlNTNlOGMzNmE1OTEuLmI3NzU4OWQ5ZmIyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY2RjbGsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNs ay5jCkBAIC00NjEsNyArNDYxLDYgQEAgc3RhdGljIHZvaWQgdmx2X2dldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiB7CiAJdTMyIHZhbDsKIAotCW11dGV4X2xvY2so JmRldl9wcml2LT5wY3VfbG9jayk7CiAJdmx2X2lvc2Zfc2JfZ2V0KGRldl9wcml2LAogCQkJQklU KFZMVl9JT1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0ZfU0JfUFVOSVQpKTsKIApAQCAtNDc0LDcg KzQ3Myw2IEBAIHN0YXRpYyB2b2lkIHZsdl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCiAJdmx2X2lvc2Zfc2JfcHV0KGRldl9wcml2LAogCQkJQklUKFZMVl9J T1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0ZfU0JfUFVOSVQpKTsKLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCiAJCWNk Y2xrX3N0YXRlLT52b2x0YWdlX2xldmVsID0gKHZhbCAmIERTUEZSRVFHVUFSX01BU0spID4+CkBA IC01NTEsNyArNTQ5LDYgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlCSVQoVkxWX0lPU0ZfU0JfQlVOSVQpIHwKIAkJCUJJ VChWTFZfSU9TRl9TQl9QVU5JVCkpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKIAl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUEZSRVEpOwog CXZhbCAmPSB+RFNQRlJFUUdVQVJfTUFTSzsKIAl2YWwgfD0gKGNtZCA8PCBEU1BGUkVRR1VBUl9T SElGVCk7CkBAIC01NjEsNyArNTU4LDYgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAgICAgNTApKSB7CiAJCURSTV9FUlJP UigidGltZWQgb3V0IHdhaXRpbmcgZm9yIENEY2xrIGNoYW5nZVxuIik7CiAJfQotCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCWlmIChjZGNsayA9PSA0MDAwMDApIHsKIAkJ dTMyIGRpdmlkZXI7CkBAIC02MzIsNyArNjI4LDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICovCiAJaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QSVBFX0EpOwogCi0JbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogCXZh bCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQRlJFUSk7CkBAIC02NDYs NyArNjQxLDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJfQogCiAJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7Ci0JbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9w cml2KTsKIApAQCAtNzI0LDEwICs3MTgsOCBAQCBzdGF0aWMgdm9pZCBiZHdfc2V0X2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJICJ0cnlpbmcgdG8gY2hhbmdlIGNk Y2xrIGZyZXF1ZW5jeSB3aXRoIGNkY2xrIG5vdCBlbmFibGVkXG4iKSkKIAkJcmV0dXJuOwogCi0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlyZXQgPSBzYW5keWJyaWRnZV9wY29k ZV93cml0ZShkZXZfcHJpdiwKIAkJCQkgICAgICBCRFdfUENPREVfRElTUExBWV9GUkVRX0NIQU5H RV9SRVEsIDB4MCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCWlmIChy ZXQpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaW5mb3JtIHBjb2RlIGFib3V0IGNkY2xrIGNo YW5nZVxuIik7CiAJCXJldHVybjsKQEAgLTc3NiwxMCArNzY4LDggQEAgc3RhdGljIHZvaWQgYmR3 X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlMQ1BMTF9D RF9TT1VSQ0VfRkNMS19ET05FKSA9PSAwLCAxKSkKIAkJRFJNX0VSUk9SKCJTd2l0Y2hpbmcgYmFj ayB0byBMQ1BMTCBmYWlsZWRcbiIpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKIAlzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwgSFNXX1BDT0RFX0RFX1dSSVRF X0ZSRVFfUkVRLAogCQkJCWNkY2xrX3N0YXRlLT52b2x0YWdlX2xldmVsKTsKLQltdXRleF91bmxv Y2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAKIAlJOTE1X1dSSVRFKENEQ0xLX0ZSRVEsIERJVl9S T1VORF9DTE9TRVNUKGNkY2xrLCAxMDAwKSAtIDEpOwogCkBAIC0xMDA3LDEyICs5OTcsMTAgQEAg c3RhdGljIHZvaWQgc2tsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJdTMyIGZyZXFfc2VsZWN0LCBjZGNsa19jdGw7CiAJaW50IHJldDsKIAotCW11dGV4X2xv Y2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJcmV0ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2X3By aXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9MLAogCQkJCVNLTF9DRENMS19QUkVQQVJFX0ZPUl9D SEFOR0UsCiAJCQkJU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0UsCiAJCQkJU0tMX0NEQ0xLX1JF QURZX0ZPUl9DSEFOR0UsIDMpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsK IAlpZiAocmV0KSB7CiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJvdXQgY2Rj bGsgY2hhbmdlICglZClcbiIsCiAJCQkgIHJldCk7CkBAIC0xMDc2LDEwICsxMDY0LDggQEAgc3Rh dGljIHZvaWQgc2tsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJUE9TVElOR19SRUFEKENEQ0xLX0NUTCk7CiAKIAkvKiBpbmZvcm0gUENVIG9mIHRoZSBjaGFu Z2UgKi8KLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXNhbmR5YnJpZGdlX3Bj b2RlX3dyaXRlKGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTCwKIAkJCQljZGNsa19z dGF0ZS0+dm9sdGFnZV9sZXZlbCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2sp OwogCiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKIH0KQEAgLTEzOTEsMTIgKzEzNzcs OSBAQCBzdGF0aWMgdm9pZCBieHRfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkgKiByZXF1aXJlcyB1cyB0byB3YWl0IHVwIHRvIDE1MHVzZWMsIGJ1dCB0aGF0 IGxlYWRzIHRvIHRpbWVvdXRzOwogCSAqIHRoZSAybXMgdXNlZCBoZXJlIGlzIGJhc2VkIG9uIGV4 cGVyaW1lbnQuCiAJICovCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlyZXQg PSBzYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1lb3V0KGRldl9wcml2LAogCQkJCQkgICAgICBI U1dfUENPREVfREVfV1JJVEVfRlJFUV9SRVEsCiAJCQkJCSAgICAgIDB4ODAwMDAwMDAsIDE1MCwg Mik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCiAJaWYgKHJldCkgewog CQlEUk1fRVJST1IoIlBDb2RlIENEQ0xLIGZyZXEgY2hhbmdlIG5vdGlmeSBmYWlsZWQgKGVyciAl ZCwgZnJlcSAlZClcbiIsCiAJCQkgIHJldCwgY2RjbGspOwpAQCAtMTQyNCw3ICsxNDA3LDYgQEAg c3RhdGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCXZhbCB8PSBCWFRfQ0RDTEtfU1NBX1BSRUNIQVJHRV9FTkFCTEU7CiAJSTkxNV9XUklU RShDRENMS19DVEwsIHZhbCk7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwog CS8qCiAJICogVGhlIHRpbWVvdXQgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgMm1zIHVzZWQgaGVyZSBp cyBiYXNlZCBvbgogCSAqIGV4cGVyaW1lbnQuCkBAIC0xNDM0LDggKzE0MTYsNiBAQCBzdGF0aWMg dm9pZCBieHRfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAly ZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1lb3V0KGRldl9wcml2LAogCQkJCQkgICAg ICBIU1dfUENPREVfREVfV1JJVEVfRlJFUV9SRVEsCiAJCQkJCSAgICAgIGNkY2xrX3N0YXRlLT52 b2x0YWdlX2xldmVsLCAxNTAsIDIpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKLQogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJQQ29kZSBDRENMSyBmcmVxIHNldCBmYWls ZWQsIChlcnIgJWQsIGZyZXEgJWQpXG4iLAogCQkJICByZXQsIGNkY2xrKTsKQEAgLTE2NzMsMTIg KzE2NTMsMTAgQEAgc3RhdGljIHZvaWQgY25sX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJdTMyIHZhbCwgZGl2aWRlcjsKIAlpbnQgcmV0OwogCi0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlyZXQgPSBza2xfcGNvZGVfcmVxdWVzdChkZXZf cHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsCiAJCQkJU0tMX0NEQ0xLX1BSRVBBUkVfRk9S X0NIQU5HRSwKIAkJCQlTS0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRSwKIAkJCQlTS0xfQ0RDTEtf UkVBRFlfRk9SX0NIQU5HRSwgMyk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2sp OwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5mb3JtIFBDVSBhYm91dCBj ZGNsayBjaGFuZ2UgKCVkKVxuIiwKIAkJCSAgcmV0KTsKQEAgLTE3MTUsMTAgKzE2OTMsOCBAQCBz dGF0aWMgdm9pZCBjbmxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlJOTE1X1dSSVRFKENEQ0xLX0NUTCwgdmFsKTsKIAogCS8qIGluZm9ybSBQQ1Ugb2YgdGhl IGNoYW5nZSAqLwotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJc2FuZHlicmlk Z2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9MLAogCQkJCWNk Y2xrX3N0YXRlLT52b2x0YWdlX2xldmVsKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3Vf bG9jayk7CiAKIAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwogCkBAIC0xODU0LDEyICsx ODMwLDEwIEBAIHN0YXRpYyB2b2lkIGljbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCXVuc2lnbmVkIGludCB2Y28gPSBjZGNsa19zdGF0ZS0+dmNvOwogCWlu dCByZXQ7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXJldCA9IHNrbF9w Y29kZV9yZXF1ZXN0KGRldl9wcml2LCBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTCwKIAkJCQlTS0xf Q0RDTEtfUFJFUEFSRV9GT1JfQ0hBTkdFLAogCQkJCVNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdF LAogCQkJCVNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdFLCAzKTsKLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBp bmZvcm0gUENVIGFib3V0IGNkY2xrIGNoYW5nZSAoJWQpXG4iLAogCQkJICByZXQpOwpAQCAtMTg3 NiwxMCArMTg1MCw4IEBAIHN0YXRpYyB2b2lkIGljbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCBJQ0xfQ0RDTEtfQ0Qy WF9QSVBFX05PTkUgfAogCQkJICAgICAgc2tsX2NkY2xrX2RlY2ltYWwoY2RjbGspKTsKIAotCW11 dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJLyogVE9ETzogYWRkIHByb3BlciBEVkZT IHN1cHBvcnQuICovCiAJc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIFNLTF9QQ09E RV9DRENMS19DT05UUk9MLCAyKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7 CiAKIAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IGIzY2JlYTE4MjgzZi4uYzI3YmJiNTE3ZjU1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC00OTM0LDEwICs0OTM0LDggQEAgdm9pZCBoc3df ZW5hYmxlX2lwcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlX QVJOX09OKCEoY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmIH5CSVQoUExBTkVfQ1VSU09SKSkp OwogCiAJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKLQkJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBjdV9sb2NrKTsKIAkJV0FSTl9PTihzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJp diwgRElTUExBWV9JUFNfQ09OVFJPTCwKIAkJCQkJCUlQU19FTkFCTEUgfCBJUFNfUENPREVfQ09O VFJPTCkpOwotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJCS8qIFF1b3Rp bmcgQXJ0IFJ1bnlhbjogIml0cyBub3Qgc2FmZSB0byBleHBlY3QgYW55IHBhcnRpY3VsYXIKIAkJ ICogdmFsdWUgaW4gSVBTX0NUTCBiaXQgMzEgYWZ0ZXIgZW5hYmxpbmcgSVBTIHRocm91Z2ggdGhl CiAJCSAqIG1haWxib3guIiBNb3Jlb3ZlciwgdGhlIG1haWxib3ggbWF5IHJldHVybiBhIGJvZ3Vz IHN0YXRlLApAQCAtNDk2Nyw5ICs0OTY1LDcgQEAgdm9pZCBoc3dfZGlzYWJsZV9pcHMoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJCXJldHVybjsKIAogCWlmIChJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9j ayk7CiAJCVdBUk5fT04oc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIERJU1BMQVlf SVBTX0NPTlRST0wsIDApKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwog CQkvKiB3YWl0IGZvciBwY29kZSB0byBmaW5pc2ggZGlzYWJsaW5nIElQUywgd2hpY2ggbWF5IHRh a2UgdXAgdG8gNDJtcyAqLwogCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYs CiAJCQkJCSAgICBJUFNfQ1RMLCBJUFNfRU5BQkxFLCAwLApAQCAtODg0MSwxMSArODgzNyw5IEBA IHN0YXRpYyB1aW50MzJfdCBoc3dfcmVhZF9kY29tcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiBzdGF0aWMgdm9pZCBoc3dfd3JpdGVfZGNvbXAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCB2YWwpCiB7CiAJaWYgKElTX0hBU1dFTEwoZGV2X3By aXYpKSB7Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJCWlmIChzYW5keWJy aWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwgR0VONl9QQ09ERV9XUklURV9EX0NPTVAsCiAJCQkJ CSAgICB2YWwpKQogCQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHdyaXRlIHRvIERfQ09NUFxu Iik7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAl9IGVsc2UgewogCQlJ OTE1X1dSSVRFKERfQ09NUF9CRFcsIHZhbCk7CiAJCVBPU1RJTkdfUkVBRChEX0NPTVBfQkRXKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwppbmRleCAxNGNhNWQzMDU3YTcuLjgxMjU5YTRmYmRm ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwpAQCAtNjgsMTAgKzY4LDggQEAgc3RhdGlj IGludCBpbnRlbF9oZGNwX2xvYWRfa2V5cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJICogZGlmZmVyIGluIHRoZSBrZXkgbG9hZCB0cmlnZ2VyIHByb2Nlc3MgZnJvbSBvdGhl ciBwbGF0Zm9ybXMuCiAJICovCiAJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllM QUtFKGRldl9wcml2KSkgewotCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCQly ZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwKIAkJCQkJICAgICAgU0tMX1BD T0RFX0xPQURfSERDUF9LRVlTLCAxKTsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xv Y2spOwogCQlpZiAocmV0KSB7CiAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWF0ZSBIRENQ IGtleSBsb2FkICglZClcbiIsCiAJCQkgICAgICAgICAgcmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCmluZGV4IDFkNTJiYmYxODYwYS4uMzc2YzdkNGZmOTcyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKQEAgLTMxMCw3ICszMTAsNiBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X21lbW9yeV9kdmZz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCiB7CiAJdTMy IHZhbDsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJdmx2X3B1bml0X2dl dChkZXZfcHJpdik7CiAKIAl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVH X0REUl9TRVRVUDIpOwpAQCAtMzI3LDE0ICszMjYsMTIgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9t ZW1vcnlfZHZmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxl KQogCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5nIGZvciBQdW5pdCBERFIgRFZGUyByZXF1 ZXN0XG4iKTsKIAogCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBjdV9sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQgY2h2X3NldF9tZW1vcnlfcG01KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCiB7CiAJdTMyIHZh bDsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJdmx2X3B1bml0X2dldChk ZXZfcHJpdik7CiAKIAl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RT UEZSRVEpOwpAQCAtMzQ1LDcgKzM0Miw2IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X3Bt NShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQogCXZsdl9w dW5pdF93cml0ZShkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUEZSRVEsIHZhbCk7CiAKIAl2bHZfcHVu aXRfcHV0KGRldl9wcml2KTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiB9 CiAKICNkZWZpbmUgRldfV00odmFsdWUsIHBsYW5lKSBcCkBAIC0yODEwLDExICsyODA2LDkgQEAg c3RhdGljIHZvaWQgaW50ZWxfcmVhZF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAogCQkvKiByZWFkIHRoZSBmaXJzdCBzZXQgb2YgbWVtb3J5IGxhdGVuY2ll c1swOjNdICovCiAJCXZhbCA9IDA7IC8qIGRhdGEwIHRvIGJlIHByb2dyYW1tZWQgdG8gMCBmb3Ig Zmlyc3Qgc2V0ICovCi0JCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJCXJldCA9 IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsCiAJCQkJCSAgICAgR0VOOV9QQ09ERV9S RUFEX01FTV9MQVRFTkNZLAogCQkJCQkgICAgICZ2YWwpOwotCQltdXRleF91bmxvY2soJmRldl9w cml2LT5wY3VfbG9jayk7CiAKIAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJTS0wgTWFpbGJv eCByZWFkIGVycm9yID0gJWRcbiIsIHJldCk7CkBAIC0yODMxLDExICsyODI1LDkgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcmVhZF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAogCQkvKiByZWFkIHRoZSBzZWNvbmQgc2V0IG9mIG1lbW9yeSBsYXRlbmNpZXNbNDo3 XSAqLwogCQl2YWwgPSAxOyAvKiBkYXRhMCB0byBiZSBwcm9ncmFtbWVkIHRvIDEgZm9yIHNlY29u ZCBzZXQgKi8KLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAkJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwKIAkJCQkJICAgICBHRU45X1BDT0RFX1JFQURf TUVNX0xBVEVOQ1ksCiAJCQkJCSAgICAgJnZhbCk7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnBjdV9sb2NrKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJTS0wgTWFpbGJveCByZWFk IGVycm9yID0gJWRcbiIsIHJldCk7CiAJCQlyZXR1cm47CkBAIC0zNjIyLDEzICszNjE0LDEwIEBA IGludGVsX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJ cmV0dXJuIDA7CiAKIAlEUk1fREVCVUdfS01TKCJFbmFibGluZyB0aGUgU0FHVlxuIik7Ci0JbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKLQogCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2Rl X3dyaXRlKGRldl9wcml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwKIAkJCQkgICAgICBHRU45 X1NBR1ZfRU5BQkxFKTsKIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgdGhlIFNBR1Yg d2hlbiBlbmFibGluZyAqLwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAog CS8qCiAJICogU29tZSBza2wgc3lzdGVtcywgcHJlLXJlbGVhc2UgbWFjaGluZXMgaW4gcGFydGlj dWxhciwKQEAgLTM2NTksMTUgKzM2NDgsMTEgQEAgaW50ZWxfZGlzYWJsZV9zYWd2KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJcmV0dXJuIDA7CiAKIAlEUk1fREVCVUdfS01T KCJEaXNhYmxpbmcgdGhlIFNBR1ZcbiIpOwotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9j ayk7Ci0KIAkvKiBic3BlYyBzYXlzIHRvIGtlZXAgcmV0cnlpbmcgZm9yIGF0IGxlYXN0IDEgbXMg Ki8KIAlyZXQgPSBza2xfcGNvZGVfcmVxdWVzdChkZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NP TlRST0wsCiAJCQkJR0VOOV9TQUdWX0RJU0FCTEUsCiAJCQkJR0VOOV9TQUdWX0lTX0RJU0FCTEVE LCBHRU45X1NBR1ZfSVNfRElTQUJMRUQsCiAJCQkJMSk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cGN1X2xvY2spOwotCiAJLyoKIAkgKiBTb21lIHNrbCBzeXN0ZW1zLCBwcmUtcmVsZWFzZSBt YWNoaW5lcyBpbiBwYXJ0aWN1bGFyLAogCSAqIGRvbid0IGFjdHVhbGx5IGhhdmUgYW4gU0FHVi4K QEAgLTU2ODQsNyArNTY2OSw2IEBAIHZvaWQgdmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCXdtLT5sZXZlbCA9IFZMVl9XTV9MRVZFTF9QTTI7CiAKIAlpZiAoSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpIHsKLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKIAkJdmx2X3B1bml0X2dldChkZXZfcHJpdik7CiAKIAkJdmFsID0gdmx2X3B1bml0X3JlYWQo ZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKTsKQEAgLTU3MTYsNyArNTcwMCw2IEBAIHZvaWQg dmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQl9CiAKIAkJdmx2 X3B1bml0X3B1dChkZXZfcHJpdik7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKIAl9CiAKIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewpAQCAtNjMyNCw3ICs2 MzA3LDcgQEAgdm9pZCBnZW42X3Jwc19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJwczsK IAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0ZXhfbG9jaygmcnBzLT5s b2NrKTsKIAlpZiAocnBzLT5lbmFibGVkKSB7CiAJCXU4IGZyZXE7CiAKQEAgLTYzNDcsNyArNjMz MCw3IEBAIHZvaWQgZ2VuNl9ycHNfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCQkJCXJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KSkpCiAJCQlEUk1fREVCVUdfRFJJVkVS KCJGYWlsZWQgdG8gc2V0IGlkbGUgZnJlcXVlbmN5XG4iKTsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+cGN1X2xvY2spOworCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKIH0KIAogdm9p ZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTYz NjEsNyArNjM0NCw3IEBAIHZvaWQgZ2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJICovCiAJZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRzKGRldl9wcml2 KTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0ZXhfbG9jaygmcnBz LT5sb2NrKTsKIAlpZiAocnBzLT5lbmFibGVkKSB7CiAJCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJCXZsdl9zZXRfcnBzX2lkbGUoZGV2 X3ByaXYpOwpAQCAtNjM3MSw3ICs2MzU0LDcgQEAgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJSTkxNV9XUklURShHRU42X1BNSU5UUk1TSywK IAkJCSAgIGdlbjZfc2FuaXRpemVfcnBzX3BtX21hc2soZGV2X3ByaXYsIH4wKSk7CiAJfQotCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRleF91bmxvY2soJnJwcy0+bG9j ayk7CiB9CiAKIHZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCkBA IC02NDEyLDcgKzYzOTUsNyBAQCBpbnQgaW50ZWxfc2V0X3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkKIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3By aXYtPmd0X3BtLnJwczsKIAlpbnQgZXJyOwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3By aXYtPnBjdV9sb2NrKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycHMtPmxvY2spOwogCUdFTV9C VUdfT04odmFsID4gcnBzLT5tYXhfZnJlcSk7CiAJR0VNX0JVR19PTih2YWwgPCBycHMtPm1pbl9m cmVxKTsKIApAQCAtNjkxMSw3ICs2ODk0LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl91cGRhdGVfcmlu Z19mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpbnQgc2NhbGluZ19m YWN0b3IgPSAxODA7CiAJc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3k7CiAKLQlXQVJOX09O KCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5wY3VfbG9jaykpOworCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJnJwcy0+bG9jayk7CiAKIAlwb2xpY3kgPSBjcHVmcmVxX2NwdV9nZXQoMCk7CiAJaWYg KHBvbGljeSkgewpAQCAtNzk4OCw3ICs3OTcxLDcgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vy c2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKIAl9CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2sp OworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7CiAKIAkvKiBJbml0aWFsaXplIFJQUyBsaW1pdHMg KGZvciB1c2Vyc3BhY2UpICovCiAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQpAQCAtODAy OCw3ICs4MDExLDcgQEAgdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogRmluYWxseSBhbGxvdyB1cyB0byBib29zdCB0byBt YXggYnkgZGVmYXVsdCAqLwogCXJwcy0+Ym9vc3RfZnJlcSA9IHJwcy0+bWF4X2ZyZXE7CiAKLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZycHMtPmxv Y2spOwogfQogCiB2b2lkIGludGVsX2NsZWFudXBfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTgwNzAsNyArODA1Myw3IEBAIHZvaWQgaW50ZWxfc2Fu aXRpemVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAog c3RhdGljIGlubGluZSB2b2lkIGludGVsX2Rpc2FibGVfbGxjX3BzdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5wY3VfbG9j ayk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+Z3RfcG0ucnBzLmxvY2spOwogCiAJaWYg KCFpOTE1LT5ndF9wbS5sbGNfcHN0YXRlLmVuYWJsZWQpCiAJCXJldHVybjsKQEAgLTgwODIsNyAr ODA2NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9kaXNhYmxlX2xsY19wc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVf cmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9w cml2LT5ndF9wbS5ycHMubG9jayk7CiAKIAlpZiAoIWRldl9wcml2LT5ndF9wbS5yYzYuZW5hYmxl ZCkKIAkJcmV0dXJuOwpAQCAtODEwMSw3ICs4MDg0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlz YWJsZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiBzdGF0aWMgdm9p ZCBpbnRlbF9kaXNhYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogCiAJaWYgKCFkZXZfcHJpdi0+ Z3RfcG0ucnBzLmVuYWJsZWQpCiAJCXJldHVybjsKQEAgLTgxMjIsMTkgKzgxMDUsMTkgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZGlzYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCiB2b2lkIGludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwor CW11dGV4X2xvY2soJmRldl9wcml2LT5ndF9wbS5ycHMubG9jayk7CiAKIAlpbnRlbF9kaXNhYmxl X3JjNihkZXZfcHJpdik7CiAJaW50ZWxfZGlzYWJsZV9ycHMoZGV2X3ByaXYpOwogCWlmIChIQVNf TExDKGRldl9wcml2KSkKIAkJaW50ZWxfZGlzYWJsZV9sbGNfcHN0YXRlKGRldl9wcml2KTsKIAot CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKKwltdXRleF91bmxvY2soJmRldl9w cml2LT5ndF9wbS5ycHMubG9jayk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmFi bGVfbGxjX3BzdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlsb2NrZGVw X2Fzc2VydF9oZWxkKCZpOTE1LT5wY3VfbG9jayk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkx NS0+Z3RfcG0ucnBzLmxvY2spOwogCiAJaWYgKGk5MTUtPmd0X3BtLmxsY19wc3RhdGUuZW5hYmxl ZCkKIAkJcmV0dXJuOwpAQCAtODE0Niw3ICs4MTI5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGlu dGVsX2VuYWJsZV9sbGNfcHN0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiBz dGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5ndF9wbS5ycHMubG9jayk7CiAKIAlpZiAoZGV2 X3ByaXYtPmd0X3BtLnJjNi5lbmFibGVkKQogCQlyZXR1cm47CkBAIC04MTY5LDcgKzgxNTIsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3BtLnJw czsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wY3VfbG9jayk7CisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmcnBzLT5sb2NrKTsKIAogCWlmIChycHMtPmVuYWJsZWQpCiAJCXJldHVy bjsKQEAgLTgyMDYsNyArODE4OSw3IEBAIHZvaWQgaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKGludGVsX3ZncHVfYWN0aXZl KGRldl9wcml2KSkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2Nr KTsKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogCiAJaWYgKEhBU19S QzYoZGV2X3ByaXYpKQogCQlpbnRlbF9lbmFibGVfcmM2KGRldl9wcml2KTsKQEAgLTgyMTQsNyAr ODE5Nyw3IEBAIHZvaWQgaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKEhBU19MTEMoZGV2X3ByaXYpKQogCQlpbnRlbF9lbmFi bGVfbGxjX3BzdGF0ZShkZXZfcHJpdik7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3Vf bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogfQogCiBz dGF0aWMgdm9pZCBpYnhfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQpAQCAtOTIxNCwyMiArOTE5NywxOSBAQCBzdGF0aWMgaW5saW5lIGludCBnZW43 X2NoZWNrX21haWxib3hfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAl9CiB9CiAKLWludCBzYW5keWJyaWRnZV9wY29kZV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiAqdmFsKQorc3RhdGljIGludCBfX3NhbmR5YnJp ZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJv eCwgdTMyICp2YWwpCiB7CiAJaW50IHN0YXR1czsKIAotCVdBUk5fT04oIW11dGV4X2lzX2xvY2tl ZCgmZGV2X3ByaXYtPnBjdV9sb2NrKSk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYt PnNiX2xvY2spOwogCiAJLyogR0VONl9QQ09ERV8qIGFyZSBvdXRzaWRlIG9mIHRoZSBmb3JjZXdh a2UgZG9tYWluLCB3ZSBjYW4KIAkgKiB1c2UgdGUgZncgSTkxNV9SRUFEIHZhcmlhbnRzIHRvIHJl ZHVjZSB0aGUgYW1vdW50IG9mIHdvcmsKIAkgKiByZXF1aXJlZCB3aGVuIHJlYWRpbmcvd3JpdGlu Zy4KIAkgKi8KIAotCWlmIChJOTE1X1JFQURfRlcoR0VONl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZf UENPREVfUkVBRFkpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigid2FybmluZzogcGNvZGUgKHJlYWQg ZnJvbSBtYm94ICV4KSBtYWlsYm94IGFjY2VzcyBmYWlsZWQgZm9yICVwc1xuIiwKLQkJCQkgbWJv eCwgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKKwlpZiAoSTkxNV9SRUFEX0ZXKEdFTjZf UENPREVfTUFJTEJPWCkgJiBHRU42X1BDT0RFX1JFQURZKQogCQlyZXR1cm4gLUVBR0FJTjsKLQl9 CiAKIAlJOTE1X1dSSVRFX0ZXKEdFTjZfUENPREVfREFUQSwgKnZhbCk7CiAJSTkxNV9XUklURV9G VyhHRU42X1BDT0RFX0RBVEExLCAwKTsKQEAgLTkyMzcsMTEgKzkyMTcsOCBAQCBpbnQgc2FuZHli cmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBt Ym94LCB1MzIgKnZhbAogCiAJaWYgKF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJfZncoZGV2X3By aXYsCiAJCQkJCSBHRU42X1BDT0RFX01BSUxCT1gsIEdFTjZfUENPREVfUkVBRFksIDAsCi0JCQkJ CSA1MDAsIDAsIE5VTEwpKSB7Ci0JCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBwY29k ZSByZWFkIChmcm9tIG1ib3ggJXgpIHRvIGZpbmlzaCBmb3IgJXBzXG4iLAotCQkJICBtYm94LCBf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOworCQkJCQkgNTAwLCAwLCBOVUxMKSkKIAkJcmV0 dXJuIC1FVElNRURPVVQ7Ci0JfQogCiAJKnZhbCA9IEk5MTVfUkVBRF9GVyhHRU42X1BDT0RFX0RB VEEpOwogCUk5MTVfV1JJVEVfRlcoR0VONl9QQ09ERV9EQVRBLCAwKTsKQEAgLTkyNTEsMzMgKzky MjgsMzkgQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyICp2YWwKIAllbHNlCiAJCXN0YXR1cyA9IGdlbjZf Y2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwogCisJcmV0dXJuIHN0YXR1czsKK30KKwor aW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MzIgbWJveCwgdTMyICp2YWwpCit7CisJaW50IHN0YXR1czsKKworCW11dGV4X2xvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKKwlzdGF0dXMgPSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3JlYWQo ZGV2X3ByaXYsIG1ib3gsIHZhbCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 CisKIAlpZiAoc3RhdHVzKSB7CiAJCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBjb2RlIChy ZWFkIGZyb20gbWJveCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAlcHM6ICVkXG4iLAog CQkJCSBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIHN0YXR1cyk7Ci0JCXJldHVy biBzdGF0dXM7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHN0YXR1czsKIH0KIAotaW50IHNh bmR5YnJpZGdlX3Bjb2RlX3dyaXRlX3RpbWVvdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkJCSAgICB1MzIgbWJveCwgdTMyIHZhbCwKLQkJCQkgICAgaW50IGZhc3RfdGlt ZW91dF91cywgaW50IHNsb3dfdGltZW91dF9tcykKK3N0YXRpYyBpbnQgX19zYW5keWJyaWRnZV9w Y29kZV93cml0ZV90aW1lb3V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CQkJICAgICB1MzIgbWJveCwgdTMyIHZhbCwKKwkJCQkJICAgICBpbnQgZmFzdF90aW1lb3V0X3Vz LAorCQkJCQkgICAgIGludCBzbG93X3RpbWVvdXRfbXMpCiB7CiAJaW50IHN0YXR1czsKIAotCVdB Uk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnBjdV9sb2NrKSk7Ci0KIAkvKiBHRU42 X1BDT0RFXyogYXJlIG91dHNpZGUgb2YgdGhlIGZvcmNld2FrZSBkb21haW4sIHdlIGNhbgogCSAq IHVzZSB0ZSBmdyBJOTE1X1JFQUQgdmFyaWFudHMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2Ygd29y awogCSAqIHJlcXVpcmVkIHdoZW4gcmVhZGluZy93cml0aW5nLgogCSAqLwogCi0JaWYgKEk5MTVf UkVBRF9GVyhHRU42X1BDT0RFX01BSUxCT1gpICYgR0VONl9QQ09ERV9SRUFEWSkgewotCQlEUk1f REVCVUdfRFJJVkVSKCJ3YXJuaW5nOiBwY29kZSAod3JpdGUgb2YgMHglMDh4IHRvIG1ib3ggJXgp IG1haWxib3ggYWNjZXNzIGZhaWxlZCBmb3IgJXBzXG4iLAotCQkJCSB2YWwsIG1ib3gsIF9fYnVp bHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CisJaWYgKEk5MTVfUkVBRF9GVyhHRU42X1BDT0RFX01B SUxCT1gpICYgR0VONl9QQ09ERV9SRUFEWSkKIAkJcmV0dXJuIC1FQUdBSU47Ci0JfQogCiAJSTkx NV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEsIHZhbCk7CiAJSTkxNV9XUklURV9GVyhHRU42X1BD T0RFX0RBVEExLCAwKTsKQEAgLTkyODYsMTEgKzkyNjksOCBAQCBpbnQgc2FuZHlicmlkZ2VfcGNv ZGVfd3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYg KF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJfZncoZGV2X3ByaXYsCiAJCQkJCSBHRU42X1BDT0RF X01BSUxCT1gsIEdFTjZfUENPREVfUkVBRFksIDAsCiAJCQkJCSBmYXN0X3RpbWVvdXRfdXMsIHNs b3dfdGltZW91dF9tcywKLQkJCQkJIE5VTEwpKSB7Ci0JCURSTV9FUlJPUigidGltZW91dCB3YWl0 aW5nIGZvciBwY29kZSB3cml0ZSBvZiAweCUwOHggdG8gbWJveCAleCB0byBmaW5pc2ggZm9yICVw c1xuIiwKLQkJCSAgdmFsLCBtYm94LCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOworCQkJ CQkgTlVMTCkpCiAJCXJldHVybiAtRVRJTUVET1VUOwotCX0KIAogCUk5MTVfV1JJVEVfRlcoR0VO Nl9QQ09ERV9EQVRBLCAwKTsKIApAQCAtOTI5OSwxMyArOTI3OSwyOCBAQCBpbnQgc2FuZHlicmlk Z2VfcGNvZGVfd3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJZWxzZQogCQlzdGF0dXMgPSBnZW42X2NoZWNrX21haWxib3hfc3RhdHVzKGRldl9wcml2KTsK IAorCXJldHVybiBzdGF0dXM7Cit9CisKK2ludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZV90aW1l b3V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgdTMyIG1ib3gs IHUzMiB2YWwsCisJCQkJICAgIGludCBmYXN0X3RpbWVvdXRfdXMsCisJCQkJICAgIGludCBzbG93 X3RpbWVvdXRfbXMpCit7CisJaW50IHN0YXR1czsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKKwlzdGF0dXMgPSBfX3NhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlX3RpbWVvdXQoZGV2 X3ByaXYsIG1ib3gsIHZhbCwKKwkJCQkJCSAgIGZhc3RfdGltZW91dF91cywKKwkJCQkJCSAgIHNs b3dfdGltZW91dF9tcyk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7CisKIAlp ZiAoc3RhdHVzKSB7CiAJCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBjb2RlICh3cml0ZSBv ZiAweCUwOHggdG8gbWJveCAleCkgbWFpbGJveCBhY2Nlc3MgZmFpbGVkIGZvciAlcHM6ICVkXG4i LAogCQkJCSB2YWwsIG1ib3gsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgc3RhdHVzKTsK LQkJcmV0dXJuIHN0YXR1czsKIAl9CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gc3RhdHVzOwogfQog CiBzdGF0aWMgYm9vbCBza2xfcGNvZGVfdHJ5X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgbWJveCwKQEAgLTkzMTQsNyArOTMwOSw3IEBAIHN0YXRpYyBib29s IHNrbF9wY29kZV90cnlfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiBtYm94LAogewogCXUzMiB2YWwgPSByZXF1ZXN0OwogCi0JKnN0YXR1cyA9IHNhbmR5YnJp ZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIG1ib3gsICZ2YWwpOworCSpzdGF0dXMgPSBfX3NhbmR5 YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIG1ib3gsICZ2YWwpOwogCiAJcmV0dXJuICpzdGF0 dXMgfHwgKCh2YWwgJiByZXBseV9tYXNrKSA9PSByZXBseSk7CiB9CkBAIC05MzQ0LDcgKzkzMzks NyBAQCBpbnQgc2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MzIgbWJveCwgdTMyIHJlcXVlc3QsCiAJdTMyIHN0YXR1czsKIAlpbnQgcmV0OwogCi0J V0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cGN1X2xvY2spKTsKKwltdXRleF9s b2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7CiAKICNkZWZpbmUgQ09ORCBza2xfcGNvZGVfdHJ5X3Jl cXVlc3QoZGV2X3ByaXYsIG1ib3gsIHJlcXVlc3QsIHJlcGx5X21hc2ssIHJlcGx5LCBcCiAJCQkJ ICAgJnN0YXR1cykKQEAgLTkzODAsNiArOTM3NSw3IEBAIGludCBza2xfcGNvZGVfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgcmVxdWVzdCwK IAlwcmVlbXB0X2VuYWJsZSgpOwogCiBvdXQ6CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2Jf bG9jayk7CiAJcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKICN1bmRlZiBDT05ECiB9CkBAIC05 NDQ5LDggKzk0NDUsNyBAQCBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKQogCiB2b2lkIGludGVsX3BtX3NldHVwKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQltdXRleF9pbml0KCZkZXZfcHJpdi0+cGN1 X2xvY2spOwotCisJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmd0X3BtLnJwcy5sb2NrKTsKIAlhdG9t aWNfc2V0KCZkZXZfcHJpdi0+Z3RfcG0ucnBzLm51bV93YWl0ZXJzLCAwKTsKIAogCWRldl9wcml2 LT5ydW50aW1lX3BtLnN1c3BlbmRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCmluZGV4IDA2OWI2YTMwNDY4Zi4uMmNjNjRmMGZkYTU3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCkBAIC04MTUsNyArODE1LDYgQEAgc3RhdGlj IHZvaWQgdmx2X3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlzdGF0ZSA9IGVuYWJsZSA/IFBVTklUX1BXUkdUX1BXUl9PTihwb3dlcl93ZWxsX2lkKSA6 CiAJCQkgUFVOSVRfUFdSR1RfUFdSX0dBVEUocG93ZXJfd2VsbF9pZCk7CiAKLQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXZsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwogCiAjZGVm aW5lIENPTkQgXApAQCAtODM4LDcgKzgzNyw2IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfcG93ZXJf d2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIG91dDoKIAl2bHZfcHVu aXRfcHV0KGRldl9wcml2KTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiB9 CiAKIHN0YXRpYyB2b2lkIHZsdl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCkBAIC04NjUsNyArODYzLDYgQEAgc3RhdGljIGJvb2wgdmx2X3Bvd2Vy X3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJbWFzayA9 IFBVTklUX1BXUkdUX01BU0socG93ZXJfd2VsbF9pZCk7CiAJY3RybCA9IFBVTklUX1BXUkdUX1BX Ul9PTihwb3dlcl93ZWxsX2lkKTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7 CiAJdmx2X3B1bml0X2dldChkZXZfcHJpdik7CiAKIAlzdGF0ZSA9IHZsdl9wdW5pdF9yZWFkKGRl dl9wcml2LCBQVU5JVF9SRUdfUFdSR1RfU1RBVFVTKSAmIG1hc2s7CkBAIC04ODYsNyArODgzLDYg QEAgc3RhdGljIGJvb2wgdmx2X3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJV0FSTl9PTihjdHJsICE9IHN0YXRlKTsKIAogCXZsdl9wdW5pdF9w dXQoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCXJl dHVybiBlbmFibGVkOwogfQpAQCAtMTM5OCw3ICsxMzk0LDYgQEAgc3RhdGljIGJvb2wgY2h2X3Bp cGVfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAlib29sIGVuYWJsZWQ7CiAJdTMyIHN0YXRlLCBjdHJsOwogCi0JbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBjdV9sb2NrKTsKIAl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogCXN0YXRlID0gdmx2 X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKSAmIERQX1NTU19NQVNLKHBp cGUpOwpAQCAtMTQxNyw3ICsxNDEyLDYgQEAgc3RhdGljIGJvb2wgY2h2X3BpcGVfcG93ZXJfd2Vs bF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlXQVJOX09OKGN0 cmwgPDwgMTYgIT0gc3RhdGUpOwogCiAJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7Ci0JbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCiAJcmV0dXJuIGVuYWJsZWQ7CiB9CkBAIC0x NDMyLDcgKzE0MjYsNiBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X3BpcGVfcG93ZXJfd2VsbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlzdGF0ZSA9IGVuYWJsZSA/IERQX1NT U19QV1JfT04ocGlwZSkgOiBEUF9TU1NfUFdSX0dBVEUocGlwZSk7CiAKLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cGN1X2xvY2spOwogCXZsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwogCiAjZGVmaW5l IENPTkQgXApAQCAtMTQ1NSw3ICsxNDQ4LDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9waXBlX3Bv d2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiBvdXQ6CiAJdmx2 X3B1bml0X3B1dChkZXZfcHJpdik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2sp OwogfQogCiBzdGF0aWMgdm9pZCBjaHZfcGlwZV9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zaWRlYmFuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQu YwppbmRleCBkYzNiNDkxYjRkMDAuLjJkNGU0OGU5ZTFkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zaWRlYmFuZC5jCkBAIC0xNDIsOCArMTQyLDYgQEAgdTMyIHZsdl9wdW5pdF9yZWFkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpCiB7CiAJdTMyIHZhbCA9 IDA7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCiAJdmx2 X3NpZGViYW5kX3J3KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5JVCwK IAkJCVNCX0NSUkREQV9OUCwgYWRkciwgJnZhbCk7CiAKQEAgLTE1Miw4ICsxNTAsNiBAQCB1MzIg dmx2X3B1bml0X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRk cikKIAogaW50IHZsdl9wdW5pdF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUzMiBhZGRyLCB1MzIgdmFsKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2 LT5wY3VfbG9jayk7Ci0KIAlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KGRldl9wcml2LCBQQ0lfREVW Rk4oMCwgMCksIElPU0ZfUE9SVF9QVU5JVCwKIAkJCSAgICAgICBTQl9DUldSREFfTlAsIGFkZHIs ICZ2YWwpOwogfQotLSAKMi4xNi4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK