From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 6/7] drm/i915: Fuse per-context workaround handling with the common framework Date: Mon, 3 Dec 2018 13:33:57 +0000 Message-ID: <20181203133357.10341-1-tvrtko.ursulin@linux.intel.com> References: <20181203125014.3219-7-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3ED5E6E015 for ; Mon, 3 Dec 2018 13:34:01 +0000 (UTC) In-Reply-To: <20181203125014.3219-7-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkNvbnZlcnQg dGhlIHBlciBjb250ZXh0IHdvcmthcm91bmQgaGFuZGxpbmcgY29kZSB0byBydW4gYWdhaW5zdCB0 aGUgbmV3bHkKaW50cm9kdWNlZCBjb21tb24gd29ya2Fyb3VuZCBmcmFtZXdvcmsgYW5kIGZ1c2Ug dGhlIHR3byB0byB1c2UgdGhlCmV4aXN0aW5nIHNtYXJ0ZXIgbGlzdCBhZGQgaGVscGVyLCB0aGUg b25lIHdoaWNoIGRvZXMgdGhlIHNvcnRlZCBpbnNlcnQgYW5kCm1lcmdlcyByZWdpc3RlcnMgd2hl cmUgcG9zc2libGUuCgpUaGlzIGNvbXBsZXRlcyBtaWdyYXRpb24gb2YgYWxsIGZvdXIgY2xhc3Nl cyBvZiB3b3JrYXJvdW5kcyBvbnRvIHRoZQpjb21tb24gZnJhbWV3b3JrLgoKRXhpc3RpbmcgbWFj cm9zIGFyZSBrZXB0IHVudG91Y2hlZCBmb3Igc21hbGxlciBjb2RlIGNodXJuLgoKdjI6CiAqIFJl bmFtZSB0byBsaXN0IG5hbWUgY3R4X3dhX2xpc3QgYW5kIG1vdmUgZnJvbSBkZXZfcHJpdiB0byBl bmdpbmUuCgp2MzoKICogQVBJIHJlbmFtZSBhbmQgcGFyYW1ldGVycyB0d2Vha2luZy4gKENocmlz IFdpbHNvbikKClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgIHwgIDEy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwgIDE1IC0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgfCAgIDYgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJv dW5kcy5jIHwgMzMzICsrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF93b3JrYXJvdW5kcy5oIHwgICA1ICstCiA5IGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNl cnRpb25zKCspLCAyMDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YwppbmRleCAxMjliOWE2ZjgzMDkuLjM4ZGNlZTFjYTA2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKQEAgLTMzNzUsMTMgKzMzNzUsMTUgQEAgc3RhdGljIGludCBpOTE1X3NoYXJl ZF9kcGxsc19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiBzdGF0aWMg aW50IGk5MTVfd2FfcmVnaXN0ZXJzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQog ewotCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3YSA9ICZub2RlX3RvX2k5MTUobS0+cHJpdmF0 ZSktPndvcmthcm91bmRzOwotCWludCBpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOworCWNvbnN0IHN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCA9ICZpOTE1LT5lbmdpbmVbUkNTXS0+Y3R4X3dhX2xpc3Q7CisJc3RydWN0IGk5MTVfd2Eg KndhOworCXVuc2lnbmVkIGludCBpOwogCi0Jc2VxX3ByaW50ZihtLCAiV29ya2Fyb3VuZHMgYXBw bGllZDogJWRcbiIsIHdhLT5jb3VudCk7Ci0JZm9yIChpID0gMDsgaSA8IHdhLT5jb3VudDsgKytp KQorCXNlcV9wcmludGYobSwgIldvcmthcm91bmRzIGFwcGxpZWQ6ICV1XG4iLCB3YWwtPmNvdW50 KTsKKwlmb3IgKGkgPSAwLCB3YSA9IHdhbC0+bGlzdDsgaSA8IHdhbC0+Y291bnQ7IGkrKywgd2Er KykKIAkJc2VxX3ByaW50ZihtLCAiMHglWDogMHglMDhYLCBtYXNrOiAweCUwOFhcbiIsCi0JCQkg ICB3YS0+cmVnW2ldLmFkZHIsIHdhLT5yZWdbaV0udmFsdWUsIHdhLT5yZWdbaV0ubWFzayk7CisJ CQkgICBpOTE1X21taW9fcmVnX29mZnNldCh3YS0+cmVnKSwgd2EtPnZhbCwgd2EtPm1hc2spOwog CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA5ZGRiY2MxZjM1NTQu LjQ0M2UwOGY0NzM2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xMTg5LDIwICsxMTg5 LDYgQEAgc3RydWN0IGk5MTVfZnJvbnRidWZmZXJfdHJhY2tpbmcgewogCXVuc2lnbmVkIGZsaXBf Yml0czsKIH07CiAKLXN0cnVjdCBpOTE1X3dhX3JlZyB7Ci0JdTMyIGFkZHI7Ci0JdTMyIHZhbHVl OwotCS8qIGJpdG1hc2sgcmVwcmVzZW50aW5nIFdBIGJpdHMgKi8KLQl1MzIgbWFzazsKLX07Ci0K LSNkZWZpbmUgSTkxNV9NQVhfV0FfUkVHUyAxNgotCi1zdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyB7 Ci0Jc3RydWN0IGk5MTVfd2FfcmVnIHJlZ1tJOTE1X01BWF9XQV9SRUdTXTsKLQl1MzIgY291bnQ7 Ci19OwotCiBzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSB7CiAJYm9vbCBhY3RpdmU7CiAJdTMyIGNh cHM7CkBAIC0xNjUyLDcgKzE2MzgsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlp bnQgZHBpb19waHlfaW9zZl9wb3J0W0k5MTVfTlVNX1BIWVNfVkxWXTsKIAotCXN0cnVjdCBpOTE1 X3dvcmthcm91bmRzIHdvcmthcm91bmRzOwogCXN0cnVjdCBpOTE1X3dhX2xpc3QgZ3Rfd2FfbGlz dDsKIAogCXN0cnVjdCBpOTE1X2Zyb250YnVmZmVyX3RyYWNraW5nIGZiX3RyYWNraW5nOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGI5Nzk2M2RiMDI4Ny4uMzcx YzA3MDg3MDk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC01 MzUsMTYgKzUzNSwxMiBAQCBzdGF0aWMgYm9vbCBuZWVkc19wcmVlbXB0X2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiBpbnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eDsKLQlpbnQgcmV0OwogCiAJLyogUmVhc3N1cmUgb3Vyc2VsdmVzIHdlIGFyZSBvbmx5 IGNhbGxlZCBvbmNlICovCiAJR0VNX0JVR19PTihkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQpOwog CUdFTV9CVUdfT04oZGV2X3ByaXYtPnByZWVtcHRfY29udGV4dCk7CiAKLQlyZXQgPSBpbnRlbF9j dHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK LQorCWludGVsX2VuZ2luZV9pbml0X2N0eF93YShkZXZfcHJpdi0+ZW5naW5lW1JDU10pOwogCWlu aXRfY29udGV4dHMoZGV2X3ByaXYpOwogCiAJLyogbG93ZXN0IHByaW9yaXR5OyBpZGxlIHRhc2sg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggNDk2NDYyZDc3ZWJj Li42YjQyN2JjNTJmNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBA IC03MjQsNiArNzI0LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJaTkxNV90aW1lbGluZV9maW5pKCZlbmdpbmUt PnRpbWVsaW5lKTsKIAorCWludGVsX3dhX2xpc3RfZnJlZSgmZW5naW5lLT5jdHhfd2FfbGlzdCk7 CiAJaW50ZWxfd2FfbGlzdF9mcmVlKCZlbmdpbmUtPndhX2xpc3QpOwogCWludGVsX3dhX2xpc3Rf ZnJlZSgmZW5naW5lLT53aGl0ZWxpc3QpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRl eCBhZjYxYTNjZjljYjguLjdkZTdhYTQ3MTVmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK QEAgLTIwNzgsNyArMjA3OCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3Jjc19jb250ZXh0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewogCWludCByZXQ7CiAKLQlyZXQgPSBpbnRlbF9jdHhf d29ya2Fyb3VuZHNfZW1pdChycSk7CisJcmV0ID0gaW50ZWxfZW5naW5lX2VtaXRfY3R4X3dhKHJx KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKaW5kZXggMjhhZTFlNDM2ZWE2Li4wMjZiZGEyYjZkZjkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTY0OSw3ICs2NDksNyBAQCBzdGF0aWMg aW50IGludGVsX3Jjc19jdHhfaW5pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlpbnQg cmV0OwogCi0JcmV0ID0gaW50ZWxfY3R4X3dvcmthcm91bmRzX2VtaXQocnEpOworCXJldCA9IGlu dGVsX2VuZ2luZV9lbWl0X2N0eF93YShycSk7CiAJaWYgKHJldCAhPSAwKQogCQlyZXR1cm4gcmV0 OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggOTFhNzUwZTkw ZGM0Li44Zjk4NWMzNWVjOTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAogCXN0cnVj dCBpbnRlbF9od19zdGF0dXNfcGFnZSBzdGF0dXNfcGFnZTsKIAlzdHJ1Y3QgaTkxNV9jdHhfd29y a2Fyb3VuZHMgd2FfY3R4OworCXN0cnVjdCBpOTE1X3dhX2xpc3QgY3R4X3dhX2xpc3Q7CiAJc3Ry dWN0IGk5MTVfd2FfbGlzdCB3YV9saXN0OwogCXN0cnVjdCBpOTE1X3dhX2xpc3Qgd2hpdGVsaXN0 OwogCXN0cnVjdCBpOTE1X3ZtYSAqc2NyYXRjaDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 b3JrYXJvdW5kcy5jCmluZGV4IGQ5MjBhNjI1NmM4My4uZTUyYmQzZjVkNTI2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKQEAgLTU5LDYxICs1OSw4NyBAQCBzdGF0 aWMgdm9pZCB3YV9pbml0X2ZpbmlzaChzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCXJldHVy bjsKIAogCURSTV9ERUJVR19EUklWRVIoIkluaXRpYWxpemVkICV1ICVzIHdvcmthcm91bmRzXG4i LAotCQkJIHdhbC0+Y291bnQsIHdhbC0+bmFtZSk7CisJCQkgd2FsLT53YV9jb3VudCwgd2FsLT5u YW1lKTsKIH0KIAotc3RhdGljIHZvaWQgd2FfYWRkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAotCQkgICBpOTE1X3JlZ190IHJlZywgY29uc3QgdTMyIG1hc2ssIGNvbnN0IHUzMiB2YWwp CitzdGF0aWMgdm9pZCBfd2FfYWRkKHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgY29uc3Qgc3Ry dWN0IGk5MTVfd2EgKndhKQogewotCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3YSA9ICZpOTE1 LT53b3JrYXJvdW5kczsKLQl1bnNpZ25lZCBpbnQgc3RhcnQgPSAwLCBlbmQgPSB3YS0+Y291bnQ7 Ci0JdW5zaWduZWQgaW50IGFkZHIgPSBpOTE1X21taW9fcmVnX29mZnNldChyZWcpOwotCXN0cnVj dCBpOTE1X3dhX3JlZyAqcjsKKwl1bnNpZ25lZCBpbnQgYWRkciA9IGk5MTVfbW1pb19yZWdfb2Zm c2V0KHdhLT5yZWcpOworCXVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVuZCA9IHdhbC0+Y291bnQ7 CisJY29uc3QgdW5zaWduZWQgaW50IGdyb3cgPSAxIDw8IDQ7CisJc3RydWN0IGk5MTVfd2EgKndh XzsKKworCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoZ3JvdykpOworCisJaWYgKElTX0FMSUdO RUQod2FsLT5jb3VudCwgZ3JvdykpIHsgLyogRWl0aGVyIHVuaW5pdGlhbGl6ZWQgb3IgZnVsbC4g Ki8KKwkJc3RydWN0IGk5MTVfd2EgKmxpc3Q7CisKKwkJbGlzdCA9IGttYWxsb2NfYXJyYXkoQUxJ R04od2FsLT5jb3VudCArIDEsIGdyb3cpLCBzaXplb2YoKndhKSwKKwkJCQkgICAgIEdGUF9LRVJO RUwpOworCQlpZiAoIWxpc3QpIHsKKwkJCURSTV9FUlJPUigiTm8gc3BhY2UgZm9yIHdvcmthcm91 bmQgaW5pdCFcbiIpOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKHdhbC0+bGlzdCkKKwkJCW1l bWNweShsaXN0LCB3YWwtPmxpc3QsIHNpemVvZigqd2EpICogd2FsLT5jb3VudCk7CisKKwkJd2Fs LT5saXN0ID0gbGlzdDsKKwl9CiAKIAl3aGlsZSAoc3RhcnQgPCBlbmQpIHsKIAkJdW5zaWduZWQg aW50IG1pZCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CiAKLQkJaWYgKHdhLT5yZWdbbWlk XS5hZGRyIDwgYWRkcikgeworCQlpZiAoaTkxNV9tbWlvX3JlZ19vZmZzZXQod2FsLT5saXN0W21p ZF0ucmVnKSA8IGFkZHIpIHsKIAkJCXN0YXJ0ID0gbWlkICsgMTsKLQkJfSBlbHNlIGlmICh3YS0+ cmVnW21pZF0uYWRkciA+IGFkZHIpIHsKKwkJfSBlbHNlIGlmIChpOTE1X21taW9fcmVnX29mZnNl dCh3YWwtPmxpc3RbbWlkXS5yZWcpID4gYWRkcikgewogCQkJZW5kID0gbWlkOwogCQl9IGVsc2Ug ewotCQkJciA9ICZ3YS0+cmVnW21pZF07CisJCQl3YV8gPSAmd2FsLT5saXN0W21pZF07CiAKLQkJ CWlmICgobWFzayAmIH5yLT5tYXNrKSA9PSAwKSB7CisJCQlpZiAoKHdhLT5tYXNrICYgfndhXy0+ bWFzaykgPT0gMCkgewogCQkJCURSTV9FUlJPUigiRGlzY2FyZGluZyBvdmVyd3JpdHRlbiB3L2Eg Zm9yIHJlZyAlMDR4IChtYXNrOiAlMDh4LCB2YWx1ZTogJTA4eClcbiIsCi0JCQkJCSAgYWRkciwg ci0+bWFzaywgci0+dmFsdWUpOworCQkJCQkgIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdhXy0+cmVn KSwKKwkJCQkJICB3YV8tPm1hc2ssIHdhXy0+dmFsKTsKIAotCQkJCXItPnZhbHVlICY9IH5tYXNr OworCQkJCXdhXy0+dmFsICY9IH53YS0+bWFzazsKIAkJCX0KIAotCQkJci0+dmFsdWUgfD0gdmFs OwotCQkJci0+bWFzayAgfD0gbWFzazsKKwkJCXdhbC0+d2FfY291bnQrKzsKKwkJCXdhXy0+dmFs IHw9IHdhLT52YWw7CisJCQl3YV8tPm1hc2sgfD0gd2EtPm1hc2s7CiAJCQlyZXR1cm47CiAJCX0K IAl9CiAKLQlpZiAoV0FSTl9PTl9PTkNFKHdhLT5jb3VudCA+PSBJOTE1X01BWF9XQV9SRUdTKSkg ewotCQlEUk1fRVJST1IoIkRyb3BwaW5nIHcvYSBmb3IgcmVnICUwNHggKG1hc2s6ICUwOHgsIHZh bHVlOiAlMDh4KVxuIiwKLQkJCSAgYWRkciwgbWFzaywgdmFsKTsKLQkJcmV0dXJuOwotCX0KKwl3 YWwtPndhX2NvdW50Kys7CisJd2FfID0gJndhbC0+bGlzdFt3YWwtPmNvdW50KytdOworCSp3YV8g PSAqd2E7CiAKLQlyID0gJndhLT5yZWdbd2EtPmNvdW50KytdOwotCXItPmFkZHIgID0gYWRkcjsK LQlyLT52YWx1ZSA9IHZhbDsKLQlyLT5tYXNrICA9IG1hc2s7Ci0KLQl3aGlsZSAoci0tID4gd2Et PnJlZykgewotCQlHRU1fQlVHX09OKHJbMF0uYWRkciA9PSByWzFdLmFkZHIpOwotCQlpZiAoclsx XS5hZGRyID4gclswXS5hZGRyKQorCXdoaWxlICh3YV8tLSA+IHdhbC0+bGlzdCkgeworCQlHRU1f QlVHX09OKGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdhX1swXS5yZWcpID09CisJCQkgICBpOTE1X21t aW9fcmVnX29mZnNldCh3YV9bMV0ucmVnKSk7CisJCWlmIChpOTE1X21taW9fcmVnX29mZnNldCh3 YV9bMV0ucmVnKSA+CisJCSAgICBpOTE1X21taW9fcmVnX29mZnNldCh3YV9bMF0ucmVnKSkKIAkJ CWJyZWFrOwogCi0JCXN3YXAoclsxXSwgclswXSk7CisJCXN3YXAod2FfWzFdLCB3YV9bMF0pOwog CX0KIH0KIAotI2RlZmluZSBXQV9SRUcoYWRkciwgbWFzaywgdmFsKSB3YV9hZGQoZGV2X3ByaXYs IChhZGRyKSwgKG1hc2spLCAodmFsKSkKK3N0YXRpYyB2b2lkCitfX3dhX2FkZChzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLCB1MzIgbWFzaywgdTMyIHZhbCkKK3sKKwlz dHJ1Y3QgaTkxNV93YSB3YSA9IHsKKwkJLnJlZyA9IHJlZywKKwkJLm1hc2sgPSBtYXNrLAorCQku dmFsID0gdmFsCisJfTsKKworCV93YV9hZGQod2FsLCAmd2EpOworfQorCisjZGVmaW5lIFdBX1JF RyhhZGRyLCBtYXNrLCB2YWwpIF9fd2FfYWRkKHdhbCwgKGFkZHIpLCAobWFzayksICh2YWwpKQog CiAjZGVmaW5lIFdBX1NFVF9CSVRfTUFTS0VEKGFkZHIsIG1hc2spIFwKIAlXQV9SRUcoYWRkciwg KG1hc2spLCBfTUFTS0VEX0JJVF9FTkFCTEUobWFzaykpCkBAIC0xMjQsOCArMTUwLDEwIEBAIHN0 YXRpYyB2b2lkIHdhX2FkZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKICNkZWZpbmUg V0FfU0VUX0ZJRUxEX01BU0tFRChhZGRyLCBtYXNrLCB2YWx1ZSkgXAogCVdBX1JFRyhhZGRyLCAo bWFzayksIF9NQVNLRURfRklFTEQobWFzaywgdmFsdWUpKQogCi1zdGF0aWMgaW50IGdlbjhfY3R4 X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3Rh dGljIHZvaWQgZ2VuOF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dh X2xpc3Q7CisKIAlXQV9TRVRfQklUX01BU0tFRChJTlNUUE0sIElOU1RQTV9GT1JDRV9PUkRFUklO Ryk7CiAKIAkvKiBXYURpc2FibGVBc3luY0ZsaXBQZXJmTW9kZTpiZHcsY2h2ICovCkBAIC0xNjks MTcgKzE5NywxNCBAQCBzdGF0aWMgaW50IGdlbjhfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCVdBX1NFVF9GSUVMRF9NQVNLRUQoR0VON19H VF9NT0RFLAogCQkJICAgIEdFTjZfV0laX0hBU0hJTkdfTUFTSywKIAkJCSAgICBHRU42X1dJWl9I QVNISU5HXzE2eDQpOwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgYmR3X2N0eF93b3Jr YXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2 b2lkIGJkd19jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7Ci0JaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2lu ZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlz dDsKIAotCXJldCA9IGdlbjhfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7CisJZ2VuOF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOwog CiAJLyogV2FEaXNhYmxlVGhyZWFkU3RhbGxEb3BDbG9ja0dhdGluZzpiZHcgKHByZS1wcm9kdWN0 aW9uKSAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjhfUk9XX0NISUNLRU4sIFNUQUxMX0RPUF9H QVRJTkdfRElTQUJMRSk7CkBAIC0xOTksMzEgKzIyNCwyOCBAQCBzdGF0aWMgaW50IGJkd19jdHhf d29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkg IC8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3RvcmVOb25Db2hlcmVudDpiZHcgKi8KIAkJCSAgSERD X0ZPUkNFX0NPTlRFWFRfU0FWRV9SRVNUT1JFX05PTl9DT0hFUkVOVCB8CiAJCQkgIC8qIFdhRGlz YWJsZUZlbmNlRGVzdGluYXRpb25Ub1NMTTpiZHcgKHByZS1wcm9kKSAqLwotCQkJICAoSVNfQkRX X0dUMyhkZXZfcHJpdikgPyBIRENfRkVOQ0VfREVTVF9TTE1fRElTQUJMRSA6IDApKTsKLQotCXJl dHVybiAwOworCQkJICAoSVNfQkRXX0dUMyhpOTE1KSA/IEhEQ19GRU5DRV9ERVNUX1NMTV9ESVNB QkxFIDogMCkpOwogfQogCi1zdGF0aWMgaW50IGNodl9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBjaHZfY3R4X3dvcmth cm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWludCByZXQ7 CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CiAKLQly ZXQgPSBnZW44X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCWdlbjhfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKIAogCS8qIFdh RGlzYWJsZVRocmVhZFN0YWxsRG9wQ2xvY2tHYXRpbmc6Y2h2ICovCiAJV0FfU0VUX0JJVF9NQVNL RUQoR0VOOF9ST1dfQ0hJQ0tFTiwgU1RBTExfRE9QX0dBVElOR19ESVNBQkxFKTsKIAogCS8qIElt cHJvdmUgSGlaIHRocm91Z2hwdXQgb24gQ0hWLiAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKEhJWl9D SElDS0VOLCBDSFZfSFpfOFg4X01PREVfSU5fMVgpOwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRp YyBpbnQgZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpZiAoSEFTX0xMQyhkZXZfcHJpdikpIHsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKKworCWlmIChIQVNfTExDKGk5 MTUpKSB7CiAJCS8qIFdhQ29tcHJlc3NlZFJlc291cmNlU2FtcGxlclBiZU1lZGlhTmV3SGFzaE1v ZGU6c2tsLGtibAogCQkgKgogCQkgKiBNdXN0IG1hdGNoIERpc3BsYXkgRW5naW5lLiBTZWUKQEAg LTI0Miw3ICsyNjQsNyBAQCBzdGF0aWMgaW50IGdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICBQQVJUSUFMX0lOU1RSVUNUSU9O X1NIT09URE9XTl9ESVNBQkxFKTsKIAogCS8qIFN5bmNpbmcgZGVwZW5kZW5jaWVzIGJldHdlZW4g Y2FtZXJhIGFuZCBncmFwaGljczpza2wsYnh0LGtibCAqLwotCWlmICghSVNfQ09GRkVFTEFLRShk ZXZfcHJpdikpCisJaWYgKCFJU19DT0ZGRUVMQUtFKGk5MTUpKQogCQlXQV9TRVRfQklUX01BU0tF RChIQUxGX1NMSUNFX0NISUNLRU4zLAogCQkJCSAgR0VOOV9ESVNBQkxFX09DTF9PT0JfU1VQUFJF U1NfTE9HSUMpOwogCkBAIC0yODUsOSArMzA3LDcgQEAgc3RhdGljIGludCBnZW45X2N0eF93b3Jr YXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAgSERD X0ZPUkNFX05PTl9DT0hFUkVOVCk7CiAKIAkvKiBXYURpc2FibGVTYW1wbGVyUG93ZXJCeXBhc3NG b3JTT1BpbmdQb25nOnNrbCxieHQsa2JsLGNmbCAqLwotCWlmIChJU19TS1lMQUtFKGRldl9wcml2 KSB8fAotCSAgICBJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKLQkgICAgSVNfQ09GRkVFTEFLRShk ZXZfcHJpdikpCisJaWYgKElTX1NLWUxBS0UoaTkxNSkgfHwgSVNfS0FCWUxBS0UoaTkxNSkgfHwg SVNfQ09GRkVFTEFLRShpOTE1KSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoSEFMRl9TTElDRV9DSElD S0VOMywKIAkJCQkgIEdFTjhfU0FNUExFUl9QT1dFUl9CWVBBU1NfRElTKTsKIApAQCAtMzE0LDE0 ICszMzQsMTQgQEAgc3RhdGljIGludCBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAgICBHRU45X1BSRUVNUFRfR1BHUFVfQ09N TUFORF9MRVZFTCk7CiAKIAkvKiBXYUNsZWFySElaX1dNX0NISUNLRU4zOmJ4dCxnbGsgKi8KLQlp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCisJaWYgKElTX0dFTjlfTFAoaTkxNSkpCiAJCVdBX1NF VF9CSVRfTUFTS0VEKEdFTjlfV01fQ0hJQ0tFTjMsIEdFTjlfRkFDVE9SX0lOX0NMUl9WQUxfSEla KTsKLQotCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHNrbF90dW5lX2l6X2hhc2hpbmcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgc2tsX3R1bmVfaXpf aGFzaGluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAq d2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CiAJdTggdmFsc1szXSA9IHsgMCwgMCwgMCB9Owog CXVuc2lnbmVkIGludCBpOwogCkBAIC0zMzIsNyArMzUyLDcgQEAgc3RhdGljIGludCBza2xfdHVu ZV9pel9oYXNoaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJICogT25s eSBjb25zaWRlciBzbGljZXMgd2hlcmUgb25lLCBhbmQgb25seSBvbmUsIHN1YnNsaWNlIGhhcyA3 CiAJCSAqIEVVcwogCQkgKi8KLQkJaWYgKCFpc19wb3dlcl9vZl8yKElOVEVMX0lORk8oZGV2X3By aXYpLT5zc2V1LnN1YnNsaWNlXzdldVtpXSkpCisJCWlmICghaXNfcG93ZXJfb2ZfMihJTlRFTF9J TkZPKGk5MTUpLT5zc2V1LnN1YnNsaWNlXzdldVtpXSkpCiAJCQljb250aW51ZTsKIAogCQkvKgpA QCAtMzQxLDEyICszNjEsMTIgQEAgc3RhdGljIGludCBza2xfdHVuZV9pel9oYXNoaW5nKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJICoKIAkJICogLT4gICAgMCA8PSBzcyA8 PSAzOwogCQkgKi8KLQkJc3MgPSBmZnMoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xp Y2VfN2V1W2ldKSAtIDE7CisJCXNzID0gZmZzKElOVEVMX0lORk8oaTkxNSktPnNzZXUuc3Vic2xp Y2VfN2V1W2ldKSAtIDE7CiAJCXZhbHNbaV0gPSAzIC0gc3M7CiAJfQogCiAJaWYgKHZhbHNbMF0g PT0gMCAmJiB2YWxzWzFdID09IDAgJiYgdmFsc1syXSA9PSAwKQotCQlyZXR1cm4gMDsKKwkJcmV0 dXJuOwogCiAJLyogVHVuZSBJWiBoYXNoaW5nLiBTZWUgaW50ZWxfZGV2aWNlX2luZm9fcnVudGlt ZV9pbml0KCkgKi8KIAlXQV9TRVRfRklFTERfTUFTS0VEKEdFTjdfR1RfTU9ERSwKQEAgLTM1Niwy OCArMzc2LDE5IEBAIHN0YXRpYyBpbnQgc2tsX3R1bmVfaXpfaGFzaGluZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgICAgR0VOOV9JWl9IQVNISU5HKDIsIHZhbHNbMl0p IHwKIAkJCSAgICBHRU45X0laX0hBU0hJTkcoMSwgdmFsc1sxXSkgfAogCQkJICAgIEdFTjlfSVpf SEFTSElORygwLCB2YWxzWzBdKSk7Ci0KLQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBza2xf Y3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor c3RhdGljIHZvaWQgc2tsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKLQlpbnQgcmV0OwotCi0JcmV0ID0gZ2VuOV9jdHhfd29ya2Fyb3VuZHNf aW5pdChkZXZfcHJpdik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiBza2xf dHVuZV9pel9oYXNoaW5nKGRldl9wcml2KTsKKwlnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KGVu Z2luZSk7CisJc2tsX3R1bmVfaXpfaGFzaGluZyhlbmdpbmUpOwogfQogCi1zdGF0aWMgaW50IGJ4 dF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CitzdGF0aWMgdm9pZCBieHRfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogewotCWludCByZXQ7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0g JmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CiAKLQlyZXQgPSBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0 KGRldl9wcml2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCWdlbjlfY3R4X3dvcmthcm91 bmRzX2luaXQoZW5naW5lKTsKIAogCS8qIFdhRGlzYWJsZVRocmVhZFN0YWxsRG9wQ2xvY2tHYXRp bmc6Ynh0ICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoR0VOOF9ST1dfQ0hJQ0tFTiwKQEAgLTM4Niw1 MiArMzk3LDQxIEBAIHN0YXRpYyBpbnQgYnh0X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkvKiBXYVRvRW5hYmxlSHdGaXhGb3JQdXNoQ29u c3RIV0J1ZzpieHQgKi8KIAlXQV9TRVRfQklUX01BU0tFRChDT01NT05fU0xJQ0VfQ0hJQ0tFTjIs CiAJCQkgIEdFTjhfU0JFX0RJU0FCTEVfUkVQTEFZX0JVRl9PUFRJTUlaQVRJT04pOwotCi0JcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQga2JsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGtibF9jdHhfd29ya2Fyb3Vu ZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW50IHJldDsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKIAotCXJldCA9IGdlbjlfY3R4 X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJ Z2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOwogCiAJLyogV2FUb0VuYWJsZUh3Rml4 Rm9yUHVzaENvbnN0SFdCdWc6a2JsICovCi0JaWYgKElTX0tCTF9SRVZJRChkZXZfcHJpdiwgS0JM X1JFVklEX0MwLCBSRVZJRF9GT1JFVkVSKSkKKwlpZiAoSVNfS0JMX1JFVklEKGk5MTUsIEtCTF9S RVZJRF9DMCwgUkVWSURfRk9SRVZFUikpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKENPTU1PTl9TTElD RV9DSElDS0VOMiwKIAkJCQkgIEdFTjhfU0JFX0RJU0FCTEVfUkVQTEFZX0JVRl9PUFRJTUlaQVRJ T04pOwogCiAJLyogV2FEaXNhYmxlU2JlQ2FjaGVEaXNwYXRjaFBvcnRTaGFyaW5nOmtibCAqLwog CVdBX1NFVF9CSVRfTUFTS0VEKEdFTjdfSEFMRl9TTElDRV9DSElDS0VOMSwKIAkJCSAgR0VON19T QkVfU1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUpOwotCi0JcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgZ2xrX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGdsa19jdHhfd29ya2Fyb3VuZHNfaW5p dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW50IHJldDsKKwlzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKIAotCXJldCA9IGdlbjlf Y3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOwogCiAJLyogV2FUb0VuYWJsZUh3 Rml4Rm9yUHVzaENvbnN0SFdCdWc6Z2xrICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoQ09NTU9OX1NM SUNFX0NISUNLRU4yLAogCQkJICBHRU44X1NCRV9ESVNBQkxFX1JFUExBWV9CVUZfT1BUSU1JWkFU SU9OKTsKLQotCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNmbF9jdHhfd29ya2Fyb3VuZHNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBjZmxf Y3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewot CWludCByZXQ7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xp c3Q7CiAKLQlyZXQgPSBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OworCWdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsK IAogCS8qIFdhVG9FbmFibGVId0ZpeEZvclB1c2hDb25zdEhXQnVnOmNmbCAqLwogCVdBX1NFVF9C SVRfTUFTS0VEKENPTU1PTl9TTElDRV9DSElDS0VOMiwKQEAgLTQ0MCwxOCArNDQwLDE5IEBAIHN0 YXRpYyBpbnQgY2ZsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkvKiBXYURpc2FibGVTYmVDYWNoZURpc3BhdGNoUG9ydFNoYXJpbmc6Y2Zs ICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoR0VON19IQUxGX1NMSUNFX0NISUNLRU4xLAogCQkJICBH RU43X1NCRV9TU19DQUNIRV9ESVNQQVRDSF9QT1JUX1NIQVJJTkdfRElTQUJMRSk7Ci0KLQlyZXR1 cm4gMDsKIH0KIAotc3RhdGljIGludCBjbmxfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgY25sX2N0eF93b3JrYXJvdW5k c19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3 YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKKwogCS8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3Rv cmVOb25Db2hlcmVudDpjbmwgKi8KIAlXQV9TRVRfQklUX01BU0tFRChDTkxfSERDX0NISUNLRU4w LAogCQkJICBIRENfRk9SQ0VfQ09OVEVYVF9TQVZFX1JFU1RPUkVfTk9OX0NPSEVSRU5UKTsKIAog CS8qIFdhVGhyb3R0bGVFVVBlcmZUb0F2b2lkVERCYWNrUHJlc3N1cmU6Y25sKHByZS1wcm9kKSAq LwotCWlmIChJU19DTkxfUkVWSUQoZGV2X3ByaXYsIENOTF9SRVZJRF9CMCwgQ05MX1JFVklEX0Iw KSkKKwlpZiAoSVNfQ05MX1JFVklEKGk5MTUsIENOTF9SRVZJRF9CMCwgQ05MX1JFVklEX0IwKSkK IAkJV0FfU0VUX0JJVF9NQVNLRUQoR0VOOF9ST1dfQ0hJQ0tFTiwgVEhST1RUTEVfMTJfNSk7CiAK IAkvKiBXYURpc2FibGVSZXBsYXlCdWZmZXJCYW5rQXJiaXRyYXRpb25PcHRpbWl6YXRpb246Y25s ICovCkBAIC00NTksNyArNDYwLDcgQEAgc3RhdGljIGludCBjbmxfY3R4X3dvcmthcm91bmRzX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICBHRU44X1NCRV9ESVNB QkxFX1JFUExBWV9CVUZfT1BUSU1JWkFUSU9OKTsKIAogCS8qIFdhRGlzYWJsZUVuaGFuY2VkU0JF VmVydGV4Q2FjaGluZzpjbmwgKHByZS1wcm9kKSAqLwotCWlmIChJU19DTkxfUkVWSUQoZGV2X3By aXYsIDAsIENOTF9SRVZJRF9CMCkpCisJaWYgKElTX0NOTF9SRVZJRChpOTE1LCAwLCBDTkxfUkVW SURfQjApKQogCQlXQV9TRVRfQklUX01BU0tFRChDT01NT05fU0xJQ0VfQ0hJQ0tFTjIsCiAJCQkJ ICBHRU44X0NTQzJfU0JFX1ZVRV9DQUNIRV9DT05TRVJWQVRJVkUpOwogCkBAIC00NzksMTYgKzQ4 MCwxNyBAQCBzdGF0aWMgaW50IGNubF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAkvKiBXYURpc2FibGVFYXJseUVPVDpjbmwgKi8KIAlX QV9TRVRfQklUX01BU0tFRChHRU44X1JPV19DSElDS0VOLCBESVNBQkxFX0VBUkxZX0VPVCk7Ci0K LQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpY2xfY3R4X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaWNsX2N0eF93b3Jr YXJvdW5kc19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKKwogCS8qIFdhXzE2MDQzNzA1ODU6aWNs IChwcmUtcHJvZCkKIAkgKiBGb3JtZXJseSBrbm93biBhcyBXYVB1c2hDb25zdGFudERlcmVmZXJl bmNlSG9sZERpc2FibGUKIAkgKi8KLQlpZiAoSVNfSUNMX1JFVklEKGRldl9wcml2LCBJQ0xfUkVW SURfQTAsIElDTF9SRVZJRF9CMCkpCisJaWYgKElTX0lDTF9SRVZJRChpOTE1LCBJQ0xfUkVWSURf QTAsIElDTF9SRVZJRF9CMCkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjdfUk9XX0NISUNLRU4y LAogCQkJCSAgUFVTSF9DT05TVEFOVF9ERVJFRl9ESVNBQkxFKTsKIApAQCAtNTA0LDcgKzUwNiw3 IEBAIHN0YXRpYyBpbnQgaWNsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAkvKiBXYV8yMDA2NjExMDQ3OmljbCAocHJlLXByb2QpCiAJICog Rm9ybWVybHkga25vd24gYXMgV2FEaXNhYmxlSW1wcm92ZWRUZGxDbGtHYXRpbmcKIAkgKi8KLQlp ZiAoSVNfSUNMX1JFVklEKGRldl9wcml2LCBJQ0xfUkVWSURfQTAsIElDTF9SRVZJRF9BMCkpCisJ aWYgKElTX0lDTF9SRVZJRChpOTE1LCBJQ0xfUkVWSURfQTAsIElDTF9SRVZJRF9BMCkpCiAJCVdB X1NFVF9CSVRfTUFTS0VEKEdFTjdfUk9XX0NISUNLRU4yLAogCQkJCSAgR0VOMTFfVERMX0NMT0NL X0dBVElOR19GSVhfRElTQUJMRSk7CiAKQEAgLTUxMyw3MCArNTE1LDY3IEBAIHN0YXRpYyBpbnQg aWNsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAkJCSAgR0VOMTFfU1RBVEVfQ0FDSEVfUkVESVJFQ1RfVE9fQ1MpOwogCiAJLyogV2FfMjAw NjY2NTE3MzppY2wgKHByZS1wcm9kKSAqLwotCWlmIChJU19JQ0xfUkVWSUQoZGV2X3ByaXYsIElD TF9SRVZJRF9BMCwgSUNMX1JFVklEX0EwKSkKKwlpZiAoSVNfSUNMX1JFVklEKGk5MTUsIElDTF9S RVZJRF9BMCwgSUNMX1JFVklEX0EwKSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoR0VOMTFfQ09NTU9O X1NMSUNFX0NISUNLRU4zLAogCQkJCSAgR0VOMTFfQkxFTkRfRU1CX0ZJWF9ESVNBQkxFX0lOX1JD Qyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAotaW50IGludGVsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRf Y3R4X3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpbnQgZXJyID0gMDsK LQotCWRldl9wcml2LT53b3JrYXJvdW5kcy5jb3VudCA9IDA7Ci0KLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDgpCi0JCWVyciA9IDA7Ci0JZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2 KSkKLQkJZXJyID0gYmR3X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQllbHNlIGlm IChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKLQkJZXJyID0gY2h2X2N0eF93b3JrYXJvdW5kc19p bml0KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkKLQkJZXJyID0g c2tsX2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19CUk9YVE9O KGRldl9wcml2KSkKLQkJZXJyID0gYnh0X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsK LQllbHNlIGlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpCi0JCWVyciA9IGtibF9jdHhfd29ya2Fy b3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp Ci0JCWVyciA9IGdsa19jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JZWxzZSBpZiAo SVNfQ09GRkVFTEFLRShkZXZfcHJpdikpCi0JCWVyciA9IGNmbF9jdHhfd29ya2Fyb3VuZHNfaW5p dChkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCi0JCWVyciA9 IGNubF9jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfSUNFTEFL RShkZXZfcHJpdikpCi0JCWVyciA9IGljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0 IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CisKKwl3YV9pbml0X3N0 YXJ0KHdhbCwgImNvbnRleHQiKTsKKworCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA4KQorCQlyZXR1 cm47CisJZWxzZSBpZiAoSVNfQlJPQURXRUxMKGk5MTUpKQorCQliZHdfY3R4X3dvcmthcm91bmRz X2luaXQoZW5naW5lKTsKKwllbHNlIGlmIChJU19DSEVSUllWSUVXKGk5MTUpKQorCQljaHZfY3R4 X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKKwllbHNlIGlmIChJU19TS1lMQUtFKGk5MTUpKQor CQlza2xfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKKwllbHNlIGlmIChJU19CUk9YVE9O KGk5MTUpKQorCQlieHRfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKKwllbHNlIGlmIChJ U19LQUJZTEFLRShpOTE1KSkKKwkJa2JsX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CisJ ZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShpOTE1KSkKKwkJZ2xrX2N0eF93b3JrYXJvdW5kc19pbml0 KGVuZ2luZSk7CisJZWxzZSBpZiAoSVNfQ09GRkVFTEFLRShpOTE1KSkKKwkJY2ZsX2N0eF93b3Jr YXJvdW5kc19pbml0KGVuZ2luZSk7CisJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShpOTE1KSkKKwkJ Y25sX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CisJZWxzZSBpZiAoSVNfSUNFTEFLRShp OTE1KSkKKwkJaWNsX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CiAJZWxzZQotCQlNSVNT SU5HX0NBU0UoSU5URUxfR0VOKGRldl9wcml2KSk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsK KwkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7CiAKLQlEUk1fREVCVUdfRFJJVkVSKCJO dW1iZXIgb2YgY29udGV4dCBzcGVjaWZpYyB3L2E6ICVkXG4iLAotCQkJIGRldl9wcml2LT53b3Jr YXJvdW5kcy5jb3VudCk7Ci0JcmV0dXJuIDA7CisJd2FfaW5pdF9maW5pc2god2FsKTsKIH0KIAot aW50IGludGVsX2N0eF93b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQor aW50IGludGVsX2VuZ2luZV9lbWl0X2N0eF93YShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsK LQlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyAqdyA9ICZycS0+aTkxNS0+d29ya2Fyb3VuZHM7CisJ c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJnJxLT5lbmdpbmUtPmN0eF93YV9saXN0OworCXN0 cnVjdCBpOTE1X3dhICp3YTsKKwl1bnNpZ25lZCBpbnQgaTsKIAl1MzIgKmNzOwotCWludCByZXQs IGk7CisJaW50IHJldDsKIAotCWlmICh3LT5jb3VudCA9PSAwKQorCWlmICh3YWwtPmNvdW50ID09 IDApCiAJCXJldHVybiAwOwogCiAJcmV0ID0gcnEtPmVuZ2luZS0+ZW1pdF9mbHVzaChycSwgRU1J VF9CQVJSSUVSKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JY3MgPSBpbnRlbF9yaW5n X2JlZ2luKHJxLCAody0+Y291bnQgKiAyICsgMikpOworCWNzID0gaW50ZWxfcmluZ19iZWdpbihy cSwgKHdhbC0+Y291bnQgKiAyICsgMikpOwogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRS X0VSUihjcyk7CiAKLQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKHctPmNvdW50KTsKLQlm b3IgKGkgPSAwOyBpIDwgdy0+Y291bnQ7IGkrKykgewotCQkqY3MrKyA9IHctPnJlZ1tpXS5hZGRy OwotCQkqY3MrKyA9IHctPnJlZ1tpXS52YWx1ZTsKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJf SU1NKHdhbC0+Y291bnQpOworCWZvciAoaSA9IDAsIHdhID0gd2FsLT5saXN0OyBpIDwgd2FsLT5j b3VudDsgaSsrLCB3YSsrKSB7CisJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQod2EtPnJl Zyk7CisJCSpjcysrID0gd2EtPnZhbDsKIAl9CiAJKmNzKysgPSBNSV9OT09QOwogCkBAIC01ODks MzIgKzU4OCw2IEBAIGludCBpbnRlbF9jdHhfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLXdhbF9hZGQoc3RydWN0 IGk5MTVfd2FfbGlzdCAqd2FsLCBjb25zdCBzdHJ1Y3QgaTkxNV93YSAqd2EpCi17Ci0JY29uc3Qg dW5zaWduZWQgaW50IGdyb3cgPSAxIDw8IDQ7Ci0KLQlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8y KGdyb3cpKTsKLQotCWlmIChJU19BTElHTkVEKHdhbC0+Y291bnQsIGdyb3cpKSB7IC8qIEVpdGhl ciB1bmluaXRpYWxpemVkIG9yIGZ1bGwuICovCi0JCXN0cnVjdCBpOTE1X3dhICpsaXN0OwotCi0J CWxpc3QgPSBrbWFsbG9jX2FycmF5KEFMSUdOKHdhbC0+Y291bnQgKyAxLCBncm93KSwgc2l6ZW9m KCp3YSksCi0JCQkJICAgICBHRlBfS0VSTkVMKTsKLQkJaWYgKCFsaXN0KSB7Ci0JCQlEUk1fRVJS T1IoIk5vIHNwYWNlIGZvciB3b3JrYXJvdW5kIGluaXQhXG4iKTsKLQkJCXJldHVybjsKLQkJfQot Ci0JCWlmICh3YWwtPmxpc3QpCi0JCQltZW1jcHkobGlzdCwgd2FsLT5saXN0LCBzaXplb2YoKndh KSAqIHdhbC0+Y291bnQpOwotCi0JCXdhbC0+bGlzdCA9IGxpc3Q7Ci0JfQotCi0Jd2FsLT5saXN0 W3dhbC0+Y291bnQrK10gPSAqd2E7Ci19Ci0KIHN0YXRpYyB2b2lkCiB3YV9tYXNrZWRfZW4oc3Ry dWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKIHsKQEAgLTYy NCw3ICs1OTcsNyBAQCB3YV9tYXNrZWRfZW4oc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1 X3JlZ190IHJlZywgdTMyIHZhbCkKIAkJLnZhbCA9IF9NQVNLRURfQklUX0VOQUJMRSh2YWwpCiAJ fTsKIAotCXdhbF9hZGQod2FsLCAmd2EpOworCV93YV9hZGQod2FsLCAmd2EpOwogfQogCiBzdGF0 aWMgdm9pZApAQCAtNjM3LDcgKzYxMCw3IEBAIHdhX3dyaXRlX21hc2tlZF9vcihzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLCB1MzIgbWFzaywKIAkJLnZhbCA9IHZhbAog CX07CiAKLQl3YWxfYWRkKHdhbCwgJndhKTsKKwlfd2FfYWRkKHdhbCwgJndhKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTEwMjEsNyArOTk0LDcgQEAgd2hpdGVsaXN0X3JlZyhzdHJ1Y3QgaTkxNV93 YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnKQogCWlmIChHRU1fREVCVUdfV0FSTl9PTih3YWwt PmNvdW50ID49IFJJTkdfTUFYX05PTlBSSVZfU0xPVFMpKQogCQlyZXR1cm47CiAKLQl3YWxfYWRk KHdhbCwgJndhKTsKKwlfd2FfYWRkKHdhbCwgJndhKTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuOV93 aGl0ZWxpc3RfYnVpbGQoc3RydWN0IGk5MTVfd2FfbGlzdCAqdykKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF93b3JrYXJvdW5kcy5oCmluZGV4IDNmOTliZmNiNGEwMy4uN2M3MzQ3MTRiMDVlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKQEAgLTE5LDYgKzE5LDcg QEAgc3RydWN0IGk5MTVfd2FfbGlzdCB7CiAJY29uc3QgY2hhcgkqbmFtZTsKIAlzdHJ1Y3QgaTkx NV93YQkqbGlzdDsKIAl1bnNpZ25lZCBpbnQJY291bnQ7CisJdW5zaWduZWQgaW50CXdhX2NvdW50 OwogfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGludGVsX3dhX2xpc3RfZnJlZShzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwpCkBAIC0yNyw4ICsyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF93YV9saXN0X2ZyZWUoc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCW1lbXNldCh3YWwsIDAs IHNpemVvZigqd2FsKSk7CiB9CiAKLWludCBpbnRlbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotaW50IGludGVsX2N0eF93b3JrYXJvdW5k c19lbWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRf Y3R4X3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CitpbnQgaW50ZWxfZW5naW5l X2VtaXRfY3R4X3dhKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKIAogdm9pZCBpbnRlbF9ndF9p bml0X3dvcmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lk IGludGVsX2d0X2FwcGx5X3dvcmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=