From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI] drm/i915/userptr: Avoid struct_mutex recursion for mmu_invalidate_range_start Date: Tue, 15 Jan 2019 12:17:05 +0000 Message-ID: <20190115121705.23837-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 EF1A26ECC1 for ; Tue, 15 Jan 2019 12:17:08 +0000 (UTC) Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 15228391-1500050 for ; Tue, 15 Jan 2019 12:17:04 +0000 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 U2luY2UgY29tbWl0IDkzMDY1YWM3NTNlNCAoIm1tLCBvb206IGRpc3Rpbmd1aXNoIGJsb2NrYWJs ZSBtb2RlIGZvciBtbXUKbm90aWZpZXJzIikgd2UgaGF2ZSBiZWVuIGFibGUgdG8gcmVwb3J0IGZh aWx1cmUgZnJvbQptbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCB3aGljaCBhbGxvd3MgdXMgdG8g dXNlIGEgdHJ5bG9jayBvbiB0aGUKc3RydWN0X211dGV4IHRvIGF2b2lkIHBvdGVudGlhbCByZWN1 cnNpb24gYW5kIHJlcG9ydCAtRUJVU1kgaW5zdGVhZC4KRnVydGhlcm1vcmUsIHRoaXMgYWxsb3dz IHVzIHRvIHB1bGwgdGhlIHdvcmsgaW50byB0aGUgbWFpbiBjYWxsYmFjayBhbmQKYXZvaWQgdGhl IHNsZWlnaHQtb2YtaGFuZCBpbiB1c2luZyBhIHdvcmtxdWV1ZSB0byBhdm9pZCBsb2NrZGVwLgoK SG93ZXZlciwgbm90IGFsbCBwYXRocyB0byBtbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCBhcmUg cHJlcGFyZWQgdG8KaGFuZGxlIGZhaWx1cmUsIHNvIGluc3RlYWQgb2YgcmVwb3J0aW5nIHRoZSBy ZWN1cnNpb24sIGRlYWwgd2l0aCBpdCBieQpwcm9wYWdhdGluZyB0aGUgZmFpbHVyZSB1cHdhcmRz LCB3aG8gY2FuIGRlY2lkZSB0aGVtc2VsdmVzIHRvIGhhbmRsZSBpdApvciByZXBvcnQgaXQuCgp2 MjogTWFyayB1cCB0aGUgcmVjdXJzaXZlIGxvY2sgYmVoYXZpb3VyIGFuZCBjb21tZW50IG9uIHRo ZSB2YXJpb3VzIHdlYWsKcG9pbnRzLgoKdjM6IEZvbGxvdyBjb21taXQgMzgyNGU0MTk3NWFlICgi ZHJtL2k5MTU6IFVzZSBtdXRleF9sb2NrX2tpbGxhYmxlKCkgZnJvbQppbnNpZGUgdGhlIHNocmlu a2VyIikgYW5kIGFsc28gdXNlIG11dGV4X2xvY2tfa2lsbGVhYmxlKCkuCgpCdWd6aWxsYTogaHR0 cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzc1ClJlZmVyZW5j ZXM6IDkzMDY1YWM3NTNlNCAoIm1tLCBvb206IGRpc3Rpbmd1aXNoIGJsb2NrYWJsZSBtb2RlIGZv ciBtbXUgbm90aWZpZXJzIikKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDQgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICAzMCArKystCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9vYmplY3QuaCAgfCAgIDcgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jIHwgMjIyICsrKysrKysrKysrLS0tLS0tLS0tLS0t LQogNCBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgMTI2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDk1NmMxYzg2ZjkwZC4uZGEwNTVhODZkYjRkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI5MzUsOCArMjkzNSw4IEBAIGVudW0gaTkxNV9t bV9zdWJjbGFzcyB7IC8qIGxvY2tkZXAgc3ViY2xhc3MgZm9yIG9iai0+bW0ubG9jay9zdHJ1Y3Rf bXV0ZXggKi8KIAlJOTE1X01NX1NIUklOS0VSIC8qIGNhbGxlZCAicmVjdXJzaXZlbHkiIGZyb20g ZGlyZWN0LXJlY2xhaW0tZXNxdWUgKi8KIH07CiAKLXZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0 X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJIGVudW0gaTkxNV9t bV9zdWJjbGFzcyBzdWJjbGFzcyk7CitpbnQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJZW51bSBpOTE1X21tX3N1YmNsYXNz IHN1YmNsYXNzKTsKIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfaW52YWxpZGF0ZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIAogZW51bSBpOTE1X21hcF90eXBlIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCmluZGV4IDBiZmVkMzMxNzhlMS4uOTBjMTY3ZjcxMzQ1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKQEAgLTIzMDMsOCArMjMwMyw4IEBAIF9faTkxNV9nZW1fb2JqZWN0X3Vu c2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc3RydWN0IHNnX3Rh YmxlICpwYWdlczsKIAogCXBhZ2VzID0gZmV0Y2hfYW5kX3plcm8oJm9iai0+bW0ucGFnZXMpOwot CWlmICghcGFnZXMpCi0JCXJldHVybiBOVUxMOworCWlmIChJU19FUlJfT1JfTlVMTChwYWdlcykp CisJCXJldHVybiBwYWdlczsKIAogCXNwaW5fbG9jaygmaTkxNS0+bW0ub2JqX2xvY2spOwogCWxp c3RfZGVsKCZvYmotPm1tLmxpbmspOwpAQCAtMjMyOCwyMiArMjMyOCwyMyBAQCBfX2k5MTVfZ2Vt X29iamVjdF91bnNldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXJl dHVybiBwYWdlczsKIH0KIAotdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgZW51bSBpOTE1X21tX3N1YmNsYXNzIHN1 YmNsYXNzKQoraW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAorCQkJCWVudW0gaTkxNV9tbV9zdWJjbGFzcyBzdWJjbGFzcykKIHsK IAlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOworCWludCByZXQ7CiAKIAlpZiAoaTkxNV9nZW1fb2Jq ZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkKLQkJcmV0dXJuOworCQlyZXR1cm4gLUVCVVNZOwog CiAJR0VNX0JVR19PTihvYmotPmJpbmRfY291bnQpOwotCWlmICghaTkxNV9nZW1fb2JqZWN0X2hh c19wYWdlcyhvYmopKQotCQlyZXR1cm47CiAKIAkvKiBNYXkgYmUgY2FsbGVkIGJ5IHNocmlua2Vy IGZyb20gd2l0aGluIGdldF9wYWdlcygpIChvbiBhbm90aGVyIGJvKSAqLwogCW11dGV4X2xvY2tf bmVzdGVkKCZvYmotPm1tLmxvY2ssIHN1YmNsYXNzKTsKLQlpZiAodW5saWtlbHkoYXRvbWljX3Jl YWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KSkpCisJaWYgKHVubGlrZWx5KGF0b21pY19yZWFk KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkpKSB7CisJCXJldCA9IC1FQlVTWTsKIAkJZ290byB1 bmxvY2s7CisJfQogCiAJLyoKIAkgKiAtPnB1dF9wYWdlcyBtaWdodCBuZWVkIHRvIGFsbG9jYXRl IG1lbW9yeSBmb3IgdGhlIGJpdDE3IHN3aXp6bGUKQEAgLTIzNTEsMTEgKzIzNTIsMjQgQEAgdm9p ZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAkgKiBsaXN0cyBlYXJseS4KIAkgKi8KIAlwYWdlcyA9IF9faTkxNV9nZW1fb2JqZWN0 X3Vuc2V0X3BhZ2VzKG9iaik7CisKKwkvKgorCSAqIFhYWCBUZW1wb3JhcnkgaGlqaW54IHRvIGF2 b2lkIHVwZGF0aW5nIGFsbCBiYWNrZW5kcyB0byBoYW5kbGUKKwkgKiBOVUxMIHBhZ2VzLiBJbiB0 aGUgZnV0dXJlLCB3aGVuIHdlIGhhdmUgbW9yZSBhc3luY2hyb25vdXMKKwkgKiBnZXRfcGFnZXMg YmFja2VuZHMgd2Ugc2hvdWxkIGJlIGJldHRlciBhYmxlIHRvIGhhbmRsZSB0aGUKKwkgKiBjYW5j ZWxsYXRpb24gb2YgdGhlIGFzeW5jIHRhc2sgaW4gYSBtb3JlIHVuaWZvcm0gbWFubmVyLgorCSAq LworCWlmICghcGFnZXMgJiYgIWk5MTVfZ2VtX29iamVjdF9uZWVkc19hc3luY19jYW5jZWwob2Jq KSkKKwkJcGFnZXMgPSBFUlJfUFRSKC1FSU5WQUwpOworCiAJaWYgKCFJU19FUlIocGFnZXMpKQog CQlvYmotPm9wcy0+cHV0X3BhZ2VzKG9iaiwgcGFnZXMpOwogCisJcmV0ID0gMDsKIHVubG9jazoK IAltdXRleF91bmxvY2soJm9iai0+bW0ubG9jayk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBib29s IGk5MTVfc2dfdHJpbShzdHJ1Y3Qgc2dfdGFibGUgKm9yaWdfc3QpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX29iamVjdC5oCmluZGV4IGZmM2RhNjQ0NzBkZC4uY2IxYjAxNDRkMjc0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9vYmplY3QuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9vYmplY3QuaApAQCAtNTcsNiArNTcsNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgewogI2RlZmluZSBJOTE1X0dFTV9PQkpFQ1RfSEFT X1NUUlVDVF9QQUdFCUJJVCgwKQogI2RlZmluZSBJOTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJM RQlCSVQoMSkKICNkZWZpbmUgSTkxNV9HRU1fT0JKRUNUX0lTX1BST1hZCUJJVCgyKQorI2RlZmlu ZSBJOTE1X0dFTV9PQkpFQ1RfQVNZTkNfQ0FOQ0VMCUJJVCgzKQogCiAJLyogSW50ZXJmYWNlIGJl dHdlZW4gdGhlIEdFTSBvYmplY3QgYW5kIGl0cyBiYWNraW5nIHN0b3JhZ2UuCiAJICogZ2V0X3Bh Z2VzKCkgaXMgY2FsbGVkIG9uY2UgcHJpb3IgdG8gdGhlIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBz ZXQKQEAgLTM4Nyw2ICszODgsMTIgQEAgaTkxNV9nZW1fb2JqZWN0X2lzX3Byb3h5KGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIG9iai0+b3BzLT5mbGFncyAm IEk5MTVfR0VNX09CSkVDVF9JU19QUk9YWTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCitpOTE1 X2dlbV9vYmplY3RfbmVlZHNfYXN5bmNfY2FuY2VsKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCit7CisJcmV0dXJuIG9iai0+b3BzLT5mbGFncyAmIEk5MTVfR0VNX09CSkVD VF9BU1lOQ19DQU5DRUw7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogaTkxNV9nZW1fb2JqZWN0 X2lzX2FjdGl2ZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCmluZGV4IDFmYjZhN2JiNTA1NC4uYzVm OGNhZDAyZWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2Vy cHRyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCkBAIC00 OSw3NyArNDksNjcgQEAgc3RydWN0IGk5MTVfbW11X25vdGlmaWVyIHsKIAlzdHJ1Y3QgaGxpc3Rf bm9kZSBub2RlOwogCXN0cnVjdCBtbXVfbm90aWZpZXIgbW47CiAJc3RydWN0IHJiX3Jvb3RfY2Fj aGVkIG9iamVjdHM7Ci0Jc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOworCXN0cnVjdCBpOTE1 X21tX3N0cnVjdCAqbW07CiB9OwogCiBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0IHsKIAlzdHJ1Y3Qg aTkxNV9tbXVfbm90aWZpZXIgKm1uOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 CiAJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSBpdDsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7 Ci0Jc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Ci0JYm9vbCBhdHRhY2hlZDsKIH07CiAKLXN0YXRp YyB2b2lkIGNhbmNlbF91c2VycHRyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3N0YXRpYyB2 b2lkIGFkZF9vYmplY3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCiB7Ci0Jc3RydWN0IGk5 MTVfbW11X29iamVjdCAqbW8gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCptbyksIHdvcmsp OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBtby0+b2JqOwotCXN0cnVjdCB3 b3JrX3N0cnVjdCAqYWN0aXZlOwotCi0JLyogQ2FuY2VsIGFueSBhY3RpdmUgd29ya2VyIGFuZCBm b3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAgKi8KLQltdXRleF9sb2NrKCZvYmotPm1tLmxvY2sp OwotCWFjdGl2ZSA9IGZldGNoX2FuZF96ZXJvKCZvYmotPnVzZXJwdHIud29yayk7Ci0JbXV0ZXhf dW5sb2NrKCZvYmotPm1tLmxvY2spOwotCWlmIChhY3RpdmUpCi0JCWdvdG8gb3V0OwotCi0JaTkx NV9nZW1fb2JqZWN0X3dhaXQob2JqLCBJOTE1X1dBSVRfQUxMLCBNQVhfU0NIRURVTEVfVElNRU9V VCwgTlVMTCk7Ci0KLQltdXRleF9sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwot Ci0JLyogV2UgYXJlIGluc2lkZSBhIGt0aHJlYWQgY29udGV4dCBhbmQgY2FuJ3QgYmUgaW50ZXJy dXB0ZWQgKi8KLQlpZiAoaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmopID09IDApCi0JCV9faTkx NV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmosIEk5MTVfTU1fTk9STUFMKTsKLQlXQVJOX09OQ0Uo aTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhvYmopLAotCQkgICJGYWlsZWQgdG8gcmVsZWFzZSBw YWdlczogYmluZF9jb3VudD0lZCwgcGFnZXNfcGluX2NvdW50PSVkLCBwaW5fZ2xvYmFsPSVkXG4i LAotCQkgIG9iai0+YmluZF9jb3VudCwKLQkJICBhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19w aW5fY291bnQpLAotCQkgIG9iai0+cGluX2dsb2JhbCk7Ci0KLQltdXRleF91bmxvY2soJm9iai0+ YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci0KLW91dDoKLQlpOTE1X2dlbV9vYmplY3RfcHV0KG9i aik7CisJR0VNX0JVR19PTighUkJfRU1QVFlfTk9ERSgmbW8tPml0LnJiKSk7CisJaW50ZXJ2YWxf dHJlZV9pbnNlcnQoJm1vLT5pdCwgJm1vLT5tbi0+b2JqZWN0cyk7CiB9CiAKLXN0YXRpYyB2b2lk IGFkZF9vYmplY3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCitzdGF0aWMgdm9pZCBkZWxf b2JqZWN0KHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vKQogewotCWlmIChtby0+YXR0YWNoZWQp CisJaWYgKFJCX0VNUFRZX05PREUoJm1vLT5pdC5yYikpCiAJCXJldHVybjsKIAotCWludGVydmFs X3RyZWVfaW5zZXJ0KCZtby0+aXQsICZtby0+bW4tPm9iamVjdHMpOwotCW1vLT5hdHRhY2hlZCA9 IHRydWU7CisJaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm1vLT5pdCwgJm1vLT5tbi0+b2JqZWN0cyk7 CisJUkJfQ0xFQVJfTk9ERSgmbW8tPml0LnJiKTsKIH0KIAotc3RhdGljIHZvaWQgZGVsX29iamVj dChzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbykKK3N0YXRpYyB2b2lkCitfX2k5MTVfZ2VtX3Vz ZXJwdHJfc2V0X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHZh bHVlKQogewotCWlmICghbW8tPmF0dGFjaGVkKQorCXN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1v ID0gb2JqLT51c2VycHRyLm1tdV9vYmplY3Q7CisKKwkvKgorCSAqIER1cmluZyBtbV9pbnZhbGlk YXRlX3JhbmdlIHdlIG5lZWQgdG8gY2FuY2VsIGFueSB1c2VycHRyIHRoYXQKKwkgKiBvdmVybGFw cyB0aGUgcmFuZ2UgYmVpbmcgaW52YWxpZGF0ZWQuIERvaW5nIHNvIHJlcXVpcmVzIHRoZQorCSAq IHN0cnVjdF9tdXRleCwgYW5kIHRoYXQgcmlza3MgcmVjdXJzaW9uLiBJbiBvcmRlciB0byBjYXVz ZQorCSAqIHJlY3Vyc2lvbiwgdGhlIHVzZXIgbXVzdCBhbGlhcyB0aGUgdXNlcnB0ciBhZGRyZXNz IHNwYWNlIHdpdGgKKwkgKiBhIEdUVCBtbWFwcGluZyAocG9zc2libGUgd2l0aCBhIE1BUF9GSVhF RCkgLSB0aGVuIHdoZW4gd2UgaGF2ZQorCSAqIHRvIGludmFsaWRhdGUgdGhhdCBtbWFwaW5nLCBt bV9pbnZhbGlkYXRlX3JhbmdlIGlzIGNhbGxlZCB3aXRoCisJICogdGhlIHVzZXJwdHIgYWRkcmVz cyAqYW5kKiB0aGUgc3RydWN0X211dGV4IGhlbGQuICBUbyBwcmV2ZW50IHRoYXQKKwkgKiB3ZSBz ZXQgYSBmbGFnIHVuZGVyIHRoZSBpOTE1X21tdV9ub3RpZmllciBzcGlubG9jayB0byBpbmRpY2F0 ZQorCSAqIHdoZXRoZXIgdGhpcyBvYmplY3QgaXMgdmFsaWQuCisJICovCisJaWYgKCFtbykKIAkJ cmV0dXJuOwogCi0JaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm1vLT5pdCwgJm1vLT5tbi0+b2JqZWN0 cyk7Ci0JbW8tPmF0dGFjaGVkID0gZmFsc2U7CisJc3Bpbl9sb2NrKCZtby0+bW4tPmxvY2spOwor CWlmICh2YWx1ZSkKKwkJYWRkX29iamVjdChtbyk7CisJZWxzZQorCQlkZWxfb2JqZWN0KG1vKTsK KwlzcGluX3VubG9jaygmbW8tPm1uLT5sb2NrKTsKIH0KIAotc3RhdGljIGludCBpOTE1X2dlbV91 c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21u LAotCQkJY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCitzdGF0aWMgaW50 Cit1c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAq X21uLAorCQkJCSAgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFuZ2UpCiB7CiAJ c3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9CiAJCWNvbnRhaW5lcl9vZihfbW4sIHN0cnVj dCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwotCXN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vOwog CXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0OwotCUxJU1RfSEVBRChjYW5jZWxsZWQpOwor CXN0cnVjdCBtdXRleCAqdW5sb2NrID0gTlVMTDsKIAl1bnNpZ25lZCBsb25nIGVuZDsKKwlpbnQg cmV0ID0gMDsKIAogCWlmIChSQl9FTVBUWV9ST09UKCZtbi0+b2JqZWN0cy5yYl9yb290KSkKIAkJ cmV0dXJuIDA7CkBAIC0xMzAsMTEgKzEyMCwxNSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3VzZXJw dHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICpfbW4sCiAJ c3Bpbl9sb2NrKCZtbi0+bG9jayk7CiAJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJm1u LT5vYmplY3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7CiAJd2hpbGUgKGl0KSB7CisJCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisKIAkJaWYgKCFyYW5nZS0+YmxvY2thYmxlKSB7Ci0J CQlzcGluX3VubG9jaygmbW4tPmxvY2spOwotCQkJcmV0dXJuIC1FQUdBSU47CisJCQlyZXQgPSAt RUFHQUlOOworCQkJYnJlYWs7CiAJCX0KLQkJLyogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQg bGF0ZSB3aGVuIGRlc3Ryb3lpbmcgdGhlCisKKwkJLyoKKwkJICogVGhlIG1tdV9vYmplY3QgaXMg cmVsZWFzZWQgbGF0ZSB3aGVuIGRlc3Ryb3lpbmcgdGhlCiAJCSAqIEdFTSBvYmplY3Qgc28gaXQg aXMgZW50aXJlbHkgcG9zc2libGUgdG8gZ2FpbiBhCiAJCSAqIHJlZmVyZW5jZSBvbiBhbiBvYmpl Y3QgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZnJlZWQKIAkJICogc2luY2Ugb3VyIHNlcmlhbGlz YXRpb24gaXMgdmlhIHRoZSBzcGlubG9jayBhbmQgbm90CkBAIC0xNDMsMjkgKzEzNyw2MyBAQCBz dGF0aWMgaW50IGk5MTVfZ2VtX3VzZXJwdHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1 Y3QgbW11X25vdGlmaWVyICpfbW4sCiAJCSAqIHVzZS1hZnRlci1mcmVlIHdlIG9ubHkgYWNxdWly ZSBhIHJlZmVyZW5jZSBvbiB0aGUKIAkJICogb2JqZWN0IGlmIGl0IGlzIG5vdCBpbiB0aGUgcHJv Y2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuCiAJCSAqLwotCQltbyA9IGNvbnRhaW5lcl9vZihpdCwg c3RydWN0IGk5MTVfbW11X29iamVjdCwgaXQpOwotCQlpZiAoa3JlZl9nZXRfdW5sZXNzX3plcm8o Jm1vLT5vYmotPmJhc2UucmVmY291bnQpKQotCQkJcXVldWVfd29yayhtbi0+d3EsICZtby0+d29y ayk7CisJCW9iaiA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGk5MTVfbW11X29iamVjdCwgaXQp LT5vYmo7CisJCWlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+YmFzZS5yZWZjb3VudCkp IHsKKwkJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHJhbmdlLT5zdGFydCwgZW5k KTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXNwaW5fdW5sb2NrKCZtbi0+bG9jayk7CisKKwkJaWYg KCF1bmxvY2spIHsKKwkJCXVubG9jayA9ICZtbi0+bW0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXg7 CisKKwkJCXN3aXRjaCAobXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmUodW5sb2NrKSkgeworCQkJZGVm YXVsdDoKKwkJCWNhc2UgTVVURVhfVFJZTE9DS19GQUlMRUQ6CisJCQkJaWYgKCFtdXRleF9sb2Nr X2tpbGxhYmxlX25lc3RlZCh1bmxvY2ssIEk5MTVfTU1fU0hSSU5LRVIpKQorCQkJCQlyZXR1cm4g LUVJTlRSOworCQkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQkJY2FzZSBNVVRFWF9UUllMT0NLX1NV Q0NFU1M6CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgTVVURVhfVFJZTE9DS19SRUNVUlNJVkU6CisJ CQkJdW5sb2NrID0gRVJSX1BUUigtRUVYSVNUKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJ CXJldCA9IGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJ cmV0ID0gX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaiwgSTkxNV9NTV9TSFJJTktFUik7 CisJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gdW5sb2Nr OwogCi0JCWxpc3RfYWRkKCZtby0+bGluaywgJmNhbmNlbGxlZCk7Ci0JCWl0ID0gaW50ZXJ2YWxf dHJlZV9pdGVyX25leHQoaXQsIHJhbmdlLT5zdGFydCwgZW5kKTsKKwkJc3Bpbl9sb2NrKCZtbi0+ bG9jayk7CisKKwkJLyoKKwkJICogQXMgd2UgZG8gbm90ICh5ZXQpIHByb3RlY3QgdGhlIG1tdSBm cm9tIGNvbmN1cnJlbnQgaW5zZXJ0aW9uCisJCSAqIG92ZXIgdGhpcyByYW5nZSwgdGhlcmUgaXMg bm8gZ3VhcmFudGVlIHRoYXQgdGhpcyBzZWFyY2ggd2lsbAorCQkgKiB0ZXJtaW5hdGUgZ2l2ZW4g YSBwYXRob2xvZ2ljIHdvcmtsb2FkLgorCQkgKi8KKwkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJf Zmlyc3QoJm1uLT5vYmplY3RzLCByYW5nZS0+c3RhcnQsIGVuZCk7CiAJfQotCWxpc3RfZm9yX2Vh Y2hfZW50cnkobW8sICZjYW5jZWxsZWQsIGxpbmspCi0JCWRlbF9vYmplY3QobW8pOwogCXNwaW5f dW5sb2NrKCZtbi0+bG9jayk7CiAKLQlpZiAoIWxpc3RfZW1wdHkoJmNhbmNlbGxlZCkpCi0JCWZs dXNoX3dvcmtxdWV1ZShtbi0+d3EpOwordW5sb2NrOgorCWlmICghSVNfRVJSX09SX05VTEwodW5s b2NrKSkKKwkJbXV0ZXhfdW5sb2NrKHVubG9jayk7CisKKwlyZXR1cm4gcmV0OwogCi0JcmV0dXJu IDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyBpOTE1X2dlbV91 c2VycHRyX25vdGlmaWVyID0gewotCS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0gaTkxNV9nZW1f dXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LAorCS5pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0ID0gdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0LAogfTsKIAogc3RhdGljIHN0 cnVjdCBpOTE1X21tdV9ub3RpZmllciAqCi1pOTE1X21tdV9ub3RpZmllcl9jcmVhdGUoc3RydWN0 IG1tX3N0cnVjdCAqbW0pCitpOTE1X21tdV9ub3RpZmllcl9jcmVhdGUoc3RydWN0IGk5MTVfbW1f c3RydWN0ICptbSkKIHsKIAlzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uOwogCkBAIC0xNzYs MTMgKzIwNCw3IEBAIGk5MTVfbW11X25vdGlmaWVyX2NyZWF0ZShzdHJ1Y3QgbW1fc3RydWN0ICpt bSkKIAlzcGluX2xvY2tfaW5pdCgmbW4tPmxvY2spOwogCW1uLT5tbi5vcHMgPSAmaTkxNV9nZW1f dXNlcnB0cl9ub3RpZmllcjsKIAltbi0+b2JqZWN0cyA9IFJCX1JPT1RfQ0FDSEVEOwotCW1uLT53 cSA9IGFsbG9jX3dvcmtxdWV1ZSgiaTkxNS11c2VycHRyLXJlbGVhc2UiLAotCQkJCSBXUV9VTkJP VU5EIHwgV1FfTUVNX1JFQ0xBSU0sCi0JCQkJIDApOwotCWlmIChtbi0+d3EgPT0gTlVMTCkgewot CQlrZnJlZShtbik7Ci0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCX0KKwltbi0+bW0gPSBt bTsKIAogCXJldHVybiBtbjsKIH0KQEAgLTE5MiwxNiArMjE0LDE0IEBAIGk5MTVfZ2VtX3VzZXJw dHJfcmVsZWFzZV9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiB7CiAJc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87CiAKLQltbyA9IG9iai0+dXNlcnB0ci5t bXVfb2JqZWN0OwotCWlmIChtbyA9PSBOVUxMKQorCW1vID0gZmV0Y2hfYW5kX3plcm8oJm9iai0+ dXNlcnB0ci5tbXVfb2JqZWN0KTsKKwlpZiAoIW1vKQogCQlyZXR1cm47CiAKIAlzcGluX2xvY2so Jm1vLT5tbi0+bG9jayk7CiAJZGVsX29iamVjdChtbyk7CiAJc3Bpbl91bmxvY2soJm1vLT5tbi0+ bG9jayk7CiAJa2ZyZWUobW8pOwotCi0Jb2JqLT51c2VycHRyLm1tdV9vYmplY3QgPSBOVUxMOwog fQogCiBzdGF0aWMgc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICoKQEAgLTIxNCw3ICsyMzQsNyBA QCBpOTE1X21tdV9ub3RpZmllcl9maW5kKHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW0pCiAJaWYg KG1uKQogCQlyZXR1cm4gbW47CiAKLQltbiA9IGk5MTVfbW11X25vdGlmaWVyX2NyZWF0ZShtbS0+ bW0pOworCW1uID0gaTkxNV9tbXVfbm90aWZpZXJfY3JlYXRlKG1tKTsKIAlpZiAoSVNfRVJSKG1u KSkKIAkJZXJyID0gUFRSX0VSUihtbik7CiAKQEAgLTIzNywxMCArMjU3LDggQEAgaTkxNV9tbXVf bm90aWZpZXJfZmluZChzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tKQogCW11dGV4X3VubG9jaygm bW0tPmk5MTUtPm1tX2xvY2spOwogCXVwX3dyaXRlKCZtbS0+bW0tPm1tYXBfc2VtKTsKIAotCWlm IChtbiAmJiAhSVNfRVJSKG1uKSkgewotCQlkZXN0cm95X3dvcmtxdWV1ZShtbi0+d3EpOworCWlm IChtbiAmJiAhSVNfRVJSKG1uKSkKIAkJa2ZyZWUobW4pOwotCX0KIAogCXJldHVybiBlcnIgPyBF UlJfUFRSKGVycikgOiBtbS0+bW47CiB9CkBAIC0yNjMsMTQgKzI4MSwxNCBAQCBpOTE1X2dlbV91 c2VycHRyX2luaXRfX21tdV9ub3RpZmllcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCQlyZXR1cm4gUFRSX0VSUihtbik7CiAKIAltbyA9IGt6YWxsb2Moc2l6ZW9mKCptbyksIEdG UF9LRVJORUwpOwotCWlmIChtbyA9PSBOVUxMKQorCWlmICghbW8pCiAJCXJldHVybiAtRU5PTUVN OwogCiAJbW8tPm1uID0gbW47CiAJbW8tPm9iaiA9IG9iajsKIAltby0+aXQuc3RhcnQgPSBvYmot PnVzZXJwdHIucHRyOwogCW1vLT5pdC5sYXN0ID0gb2JqLT51c2VycHRyLnB0ciArIG9iai0+YmFz ZS5zaXplIC0gMTsKLQlJTklUX1dPUksoJm1vLT53b3JrLCBjYW5jZWxfdXNlcnB0cik7CisJUkJf Q0xFQVJfTk9ERSgmbW8tPml0LnJiKTsKIAogCW9iai0+dXNlcnB0ci5tbXVfb2JqZWN0ID0gbW87 CiAJcmV0dXJuIDA7CkBAIC0yODQsMTIgKzMwMiwxNiBAQCBpOTE1X21tdV9ub3RpZmllcl9mcmVl KHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciAqbW4sCiAJCXJldHVybjsKIAogCW1tdV9ub3RpZmll cl91bnJlZ2lzdGVyKCZtbi0+bW4sIG1tKTsKLQlkZXN0cm95X3dvcmtxdWV1ZShtbi0+d3EpOwog CWtmcmVlKG1uKTsKIH0KIAogI2Vsc2UKIAorc3RhdGljIHZvaWQKK19faTkxNV9nZW1fdXNlcnB0 cl9zZXRfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgdmFsdWUp Cit7Cit9CisKIHN0YXRpYyB2b2lkCiBpOTE1X2dlbV91c2VycHRyX3JlbGVhc2VfX21tdV9ub3Rp ZmllcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewpAQCAtNDU4LDQyICs0ODAs NiBAQCBfX2k5MTVfZ2VtX3VzZXJwdHJfYWxsb2NfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKIAlyZXR1cm4gc3Q7CiB9CiAKLXN0YXRpYyBpbnQKLV9faTkxNV9nZW1fdXNl cnB0cl9zZXRfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkgICAg ICBib29sIHZhbHVlKQotewotCWludCByZXQgPSAwOwotCi0JLyogRHVyaW5nIG1tX2ludmFsaWRh dGVfcmFuZ2Ugd2UgbmVlZCB0byBjYW5jZWwgYW55IHVzZXJwdHIgdGhhdAotCSAqIG92ZXJsYXBz IHRoZSByYW5nZSBiZWluZyBpbnZhbGlkYXRlZC4gRG9pbmcgc28gcmVxdWlyZXMgdGhlCi0JICog c3RydWN0X211dGV4LCBhbmQgdGhhdCByaXNrcyByZWN1cnNpb24uIEluIG9yZGVyIHRvIGNhdXNl Ci0JICogcmVjdXJzaW9uLCB0aGUgdXNlciBtdXN0IGFsaWFzIHRoZSB1c2VycHRyIGFkZHJlc3Mg c3BhY2Ugd2l0aAotCSAqIGEgR1RUIG1tYXBwaW5nIChwb3NzaWJsZSB3aXRoIGEgTUFQX0ZJWEVE KSAtIHRoZW4gd2hlbiB3ZSBoYXZlCi0JICogdG8gaW52YWxpZGF0ZSB0aGF0IG1tYXBpbmcsIG1t X2ludmFsaWRhdGVfcmFuZ2UgaXMgY2FsbGVkIHdpdGgKLQkgKiB0aGUgdXNlcnB0ciBhZGRyZXNz ICphbmQqIHRoZSBzdHJ1Y3RfbXV0ZXggaGVsZC4gIFRvIHByZXZlbnQgdGhhdAotCSAqIHdlIHNl dCBhIGZsYWcgdW5kZXIgdGhlIGk5MTVfbW11X25vdGlmaWVyIHNwaW5sb2NrIHRvIGluZGljYXRl Ci0JICogd2hldGhlciB0aGlzIG9iamVjdCBpcyB2YWxpZC4KLQkgKi8KLSNpZiBkZWZpbmVkKENP TkZJR19NTVVfTk9USUZJRVIpCi0JaWYgKG9iai0+dXNlcnB0ci5tbXVfb2JqZWN0ID09IE5VTEwp Ci0JCXJldHVybiAwOwotCi0Jc3Bpbl9sb2NrKCZvYmotPnVzZXJwdHIubW11X29iamVjdC0+bW4t PmxvY2spOwotCS8qIEluIG9yZGVyIHRvIHNlcmlhbGlzZSBnZXRfcGFnZXMgd2l0aCBhbiBvdXRz dGFuZGluZwotCSAqIGNhbmNlbF91c2VycHRyLCB3ZSBtdXN0IGRyb3AgdGhlIHN0cnVjdF9tdXRl eCBhbmQgdHJ5IGFnYWluLgotCSAqLwotCWlmICghdmFsdWUpCi0JCWRlbF9vYmplY3Qob2JqLT51 c2VycHRyLm1tdV9vYmplY3QpOwotCWVsc2UgaWYgKCF3b3JrX3BlbmRpbmcoJm9iai0+dXNlcnB0 ci5tbXVfb2JqZWN0LT53b3JrKSkKLQkJYWRkX29iamVjdChvYmotPnVzZXJwdHIubW11X29iamVj dCk7Ci0JZWxzZQotCQlyZXQgPSAtRUFHQUlOOwotCXNwaW5fdW5sb2NrKCZvYmotPnVzZXJwdHIu bW11X29iamVjdC0+bW4tPmxvY2spOwotI2VuZGlmCi0KLQlyZXR1cm4gcmV0OwotfQotCiBzdGF0 aWMgdm9pZAogX19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IHdvcmtf c3RydWN0ICpfd29yaykKIHsKQEAgLTY3OSw4ICs2NjUsMTEgQEAgaTkxNV9nZW1fdXNlcnB0cl9w dXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzdHJ1Y3Qgc2d0X2l0 ZXIgc2d0X2l0ZXI7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKLQlCVUdfT04ob2JqLT51c2VycHRy LndvcmsgIT0gTlVMTCk7CisJLyogQ2FuY2VsIGFueSBpbmZsaWdodCB3b3JrIGFuZCBmb3JjZSB0 aGVtIHRvIHJlc3RhcnQgdGhlaXIgZ3VwICovCisJb2JqLT51c2VycHRyLndvcmsgPSBOVUxMOwog CV9faTkxNV9nZW1fdXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgZmFsc2UpOworCWlmICghcGFnZXMp CisJCXJldHVybjsKIAogCWlmIChvYmotPm1tLm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEKQog CQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CkBAIC03MTgsNyArNzA3LDggQEAgaTkxNV9nZW1fdXNl cnB0cl9kbWFidWZfZXhwb3J0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fdXNlcnB0 cl9vcHMgPSB7CiAJLmZsYWdzID0gSTkxNV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRSB8Ci0J CSBJOTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJMRSwKKwkJIEk5MTVfR0VNX09CSkVDVF9JU19T SFJJTktBQkxFIHwKKwkJIEk5MTVfR0VNX09CSkVDVF9BU1lOQ19DQU5DRUwsCiAJLmdldF9wYWdl cyA9IGk5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzLAogCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV91 c2VycHRyX3B1dF9wYWdlcywKIAkuZG1hYnVmX2V4cG9ydCA9IGk5MTVfZ2VtX3VzZXJwdHJfZG1h YnVmX2V4cG9ydCwKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==