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 12:50:13 +0000 Message-ID: <20181203125014.3219-7-tvrtko.ursulin@linux.intel.com> References: <20181203125014.3219-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0AB7689D46 for ; Mon, 3 Dec 2018 12:50:27 +0000 (UTC) In-Reply-To: <20181203125014.3219-1-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 dW5kcy5jIHwgMzM0ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF93b3JrYXJvdW5kcy5oIHwgICA1ICstCiA5IGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNl cnRpb25zKCspLCAyMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt 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 b3JrYXJvdW5kcy5jCmluZGV4IDU2OTA3MzExMzQ5ZS4uNTNhNmQ2MzI3MDIwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKQEAgLTU5LDYxICs1OSw4NyBAQCBzdGF0 aWMgdm9pZCB3YV9pbml0X2ZpbmlzaChzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCXJldHVy bjsKIAogCURSTV9ERUJVR19EUklWRVIoIkluaXRpYWxpemVkICV1ICVzIHdvcmthcm91bmRzXG4i LAotCQkJIHdhbC0+Y291bnQsIHdhbC0+bmFtZSk7CisJCQkgd2FsLT53YV9jb3VudCwgd2FsLT5u YW1lKTsKIH0KIAotc3RhdGljIHZvaWQgd2FfYWRkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAotCQkgICBpOTE1X3JlZ190IHJlZywgY29uc3QgdTMyIG1hc2ssIGNvbnN0IHUzMiB2YWwp CitzdGF0aWMgdm9pZCBfd2FfYWRkKHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgY29uc3Qgc3Ry dWN0IGk5MTVfd2EgKndhKQogewotCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3YSA9ICZpOTE1 LT53b3JrYXJvdW5kczsKLQl1bnNpZ25lZCBpbnQgc3RhcnQgPSAwLCBlbmQgPSB3YS0+Y291bnQ7 Ci0JdW5zaWduZWQgaW50IGFkZHIgPSBpOTE1X21taW9fcmVnX29mZnNldChyZWcpOwotCXN0cnVj dCBpOTE1X3dhX3JlZyAqcjsKKwl1bnNpZ25lZCBpbnQgYWRkciA9IGk5MTVfbW1pb19yZWdfb2Zm c2V0KHdhLT5yZWcpOworCXVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVuZCA9IHdhbC0+Y291bnQ7 CisJY29uc3QgdW5zaWduZWQgaW50IGdyb3cgPSAxIDw8IDQ7CisJc3RydWN0IGk5MTVfd2EgKndh XzsKKworCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoZ3JvdykpOworCisJaWYgKElTX0FMSUdO RUQod2FsLT5jb3VudCwgZ3JvdykpIHsgLyogRWl0aGVyIHVuaW5pdGlhbGl6ZWQgb3IgZnVsbC4g Ki8KKwkJc3RydWN0IGk5MTVfd2EgKmxpc3Q7CisKKwkJbGlzdCA9IGttYWxsb2MoQUxJR04od2Fs LT5jb3VudCArIDEsIGdyb3cpICogc2l6ZW9mKCp3YSksCisJCQkgICAgICAgR0ZQX0tFUk5FTCk7 CisJCWlmICghbGlzdCkgeworCQkJRFJNX0VSUk9SKCJObyBzcGFjZSBmb3Igd29ya2Fyb3VuZCBp bml0IVxuIik7CisJCQlyZXR1cm47CisJCX0KKworCQlpZiAod2FsLT5saXN0KQorCQkJbWVtY3B5 KGxpc3QsIHdhbC0+bGlzdCwgc2l6ZW9mKCp3YSkgKiB3YWwtPmNvdW50KTsKKworCQl3YWwtPmxp c3QgPSBsaXN0OworCX0KIAogCXdoaWxlIChzdGFydCA8IGVuZCkgewogCQl1bnNpZ25lZCBpbnQg bWlkID0gc3RhcnQgKyAoZW5kIC0gc3RhcnQpIC8gMjsKIAotCQlpZiAod2EtPnJlZ1ttaWRdLmFk ZHIgPCBhZGRyKSB7CisJCWlmIChpOTE1X21taW9fcmVnX29mZnNldCh3YWwtPmxpc3RbbWlkXS5y ZWcpIDwgYWRkcikgewogCQkJc3RhcnQgPSBtaWQgKyAxOwotCQl9IGVsc2UgaWYgKHdhLT5yZWdb bWlkXS5hZGRyID4gYWRkcikgeworCQl9IGVsc2UgaWYgKGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdh bC0+bGlzdFttaWRdLnJlZykgPiBhZGRyKSB7CiAJCQllbmQgPSBtaWQ7CiAJCX0gZWxzZSB7Ci0J CQlyID0gJndhLT5yZWdbbWlkXTsKKwkJCXdhXyA9ICZ3YWwtPmxpc3RbbWlkXTsKIAotCQkJaWYg KChtYXNrICYgfnItPm1hc2spID09IDApIHsKKwkJCWlmICgod2EtPm1hc2sgJiB+d2FfLT5tYXNr KSA9PSAwKSB7CiAJCQkJRFJNX0VSUk9SKCJEaXNjYXJkaW5nIG92ZXJ3cml0dGVuIHcvYSBmb3Ig cmVnICUwNHggKG1hc2s6ICUwOHgsIHZhbHVlOiAlMDh4KVxuIiwKLQkJCQkJICBhZGRyLCByLT5t YXNrLCByLT52YWx1ZSk7CisJCQkJCSAgaTkxNV9tbWlvX3JlZ19vZmZzZXQod2FfLT5yZWcpLAor CQkJCQkgIHdhXy0+bWFzaywgd2FfLT52YWwpOwogCi0JCQkJci0+dmFsdWUgJj0gfm1hc2s7CisJ CQkJd2FfLT52YWwgJj0gfndhLT5tYXNrOwogCQkJfQogCi0JCQlyLT52YWx1ZSB8PSB2YWw7Ci0J CQlyLT5tYXNrICB8PSBtYXNrOworCQkJd2FsLT53YV9jb3VudCsrOworCQkJd2FfLT52YWwgfD0g d2EtPnZhbDsKKwkJCXdhXy0+bWFzayB8PSB3YS0+bWFzazsKIAkJCXJldHVybjsKIAkJfQogCX0K IAotCWlmIChXQVJOX09OX09OQ0Uod2EtPmNvdW50ID49IEk5MTVfTUFYX1dBX1JFR1MpKSB7Ci0J CURSTV9FUlJPUigiRHJvcHBpbmcgdy9hIGZvciByZWcgJTA0eCAobWFzazogJTA4eCwgdmFsdWU6 ICUwOHgpXG4iLAotCQkJICBhZGRyLCBtYXNrLCB2YWwpOwotCQlyZXR1cm47Ci0JfQorCXdhbC0+ d2FfY291bnQrKzsKKwl3YV8gPSAmd2FsLT5saXN0W3dhbC0+Y291bnQrK107CisJKndhXyA9ICp3 YTsKIAotCXIgPSAmd2EtPnJlZ1t3YS0+Y291bnQrK107Ci0Jci0+YWRkciAgPSBhZGRyOwotCXIt PnZhbHVlID0gdmFsOwotCXItPm1hc2sgID0gbWFzazsKLQotCXdoaWxlIChyLS0gPiB3YS0+cmVn KSB7Ci0JCUdFTV9CVUdfT04oclswXS5hZGRyID09IHJbMV0uYWRkcik7Ci0JCWlmIChyWzFdLmFk ZHIgPiByWzBdLmFkZHIpCisJd2hpbGUgKHdhXy0tID4gd2FsLT5saXN0KSB7CisJCUdFTV9CVUdf T04oaTkxNV9tbWlvX3JlZ19vZmZzZXQod2FfWzBdLnJlZykgPT0KKwkJCSAgIGk5MTVfbW1pb19y ZWdfb2Zmc2V0KHdhX1sxXS5yZWcpKTsKKwkJaWYgKGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdhX1sx XS5yZWcpID4KKwkJICAgIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdhX1swXS5yZWcpKQogCQkJYnJl YWs7CiAKLQkJc3dhcChyWzFdLCByWzBdKTsKKwkJc3dhcCh3YV9bMV0sIHdhX1swXSk7CiAJfQog fQogCi0jZGVmaW5lIFdBX1JFRyhhZGRyLCBtYXNrLCB2YWwpIHdhX2FkZChkZXZfcHJpdiwgKGFk ZHIpLCAobWFzayksICh2YWwpKQorc3RhdGljIHZvaWQKK19fd2FfYWRkKHN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbCwgaTkxNV9yZWdfdCByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKQoreworCXN0cnVj dCBpOTE1X3dhIHdhID0geworCQkucmVnID0gcmVnLAorCQkubWFzayA9IG1hc2ssCisJCS52YWwg PSB2YWwKKwl9OworCisJX3dhX2FkZCh3YWwsICZ3YSk7Cit9CisKKyNkZWZpbmUgV0FfUkVHKGFk ZHIsIG1hc2ssIHZhbCkgX193YV9hZGQod2FsLCAoYWRkciksIChtYXNrKSwgKHZhbCkpCiAKICNk ZWZpbmUgV0FfU0VUX0JJVF9NQVNLRUQoYWRkciwgbWFzaykgXAogCVdBX1JFRyhhZGRyLCAobWFz ayksIF9NQVNLRURfQklUX0VOQUJMRShtYXNrKSkKQEAgLTEyNCw4ICsxNTAsMTAgQEAgc3RhdGlj IHZvaWQgd2FfYWRkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogI2RlZmluZSBXQV9T RVRfRklFTERfTUFTS0VEKGFkZHIsIG1hc2ssIHZhbHVlKSBcCiAJV0FfUkVHKGFkZHIsIChtYXNr KSwgX01BU0tFRF9GSUVMRChtYXNrLCB2YWx1ZSkpCiAKLXN0YXRpYyBpbnQgZ2VuOF9jdHhfd29y a2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMg dm9pZCBnZW44X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlz dDsKKwogCVdBX1NFVF9CSVRfTUFTS0VEKElOU1RQTSwgSU5TVFBNX0ZPUkNFX09SREVSSU5HKTsK IAogCS8qIFdhRGlzYWJsZUFzeW5jRmxpcFBlcmZNb2RlOmJkdyxjaHYgKi8KQEAgLTE2OSwxNyAr MTk3LDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJV0FfU0VUX0ZJRUxEX01BU0tFRChHRU43X0dUX01P REUsCiAJCQkgICAgR0VONl9XSVpfSEFTSElOR19NQVNLLAogCQkJICAgIEdFTjZfV0laX0hBU0hJ TkdfMTZ4NCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBiZHdfY3R4X3dvcmthcm91 bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQg YmR3X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKLQlpbnQgcmV0OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5p OTE1OworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0Owog Ci0JcmV0ID0gZ2VuOF9jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JaWYgKHJldCkK LQkJcmV0dXJuIHJldDsKKwlnZW44X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CiAKIAkv KiBXYURpc2FibGVUaHJlYWRTdGFsbERvcENsb2NrR2F0aW5nOmJkdyAocHJlLXByb2R1Y3Rpb24p ICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoR0VOOF9ST1dfQ0hJQ0tFTiwgU1RBTExfRE9QX0dBVElO R19ESVNBQkxFKTsKQEAgLTE5OSwzMSArMjI0LDI4IEBAIHN0YXRpYyBpbnQgYmR3X2N0eF93b3Jr YXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAgLyog V2FGb3JjZUNvbnRleHRTYXZlUmVzdG9yZU5vbkNvaGVyZW50OmJkdyAqLwogCQkJICBIRENfRk9S Q0VfQ09OVEVYVF9TQVZFX1JFU1RPUkVfTk9OX0NPSEVSRU5UIHwKIAkJCSAgLyogV2FEaXNhYmxl RmVuY2VEZXN0aW5hdGlvblRvU0xNOmJkdyAocHJlLXByb2QpICovCi0JCQkgIChJU19CRFdfR1Qz KGRldl9wcml2KSA/IEhEQ19GRU5DRV9ERVNUX1NMTV9ESVNBQkxFIDogMCkpOwotCi0JcmV0dXJu IDA7CisJCQkgIChJU19CRFdfR1QzKGk5MTUpID8gSERDX0ZFTkNFX0RFU1RfU0xNX0RJU0FCTEUg OiAwKSk7CiB9CiAKLXN0YXRpYyBpbnQgY2h2X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGNodl9jdHhfd29ya2Fyb3Vu ZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW50IHJldDsKKwlz dHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKIAotCXJldCA9 IGdlbjhfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7CisJZ2VuOF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOwogCiAJLyogV2FEaXNh YmxlVGhyZWFkU3RhbGxEb3BDbG9ja0dhdGluZzpjaHYgKi8KIAlXQV9TRVRfQklUX01BU0tFRChH RU44X1JPV19DSElDS0VOLCBTVEFMTF9ET1BfR0FUSU5HX0RJU0FCTEUpOwogCiAJLyogSW1wcm92 ZSBIaVogdGhyb3VnaHB1dCBvbiBDSFYuICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoSElaX0NISUNL RU4sIENIVl9IWl84WDhfTU9ERV9JTl8xWCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKK3N0YXRpYyB2b2lkIGdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlmIChIQVNfTExDKGRldl9wcml2KSkgeworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OworCisJaWYgKEhBU19MTEMoaTkxNSkp IHsKIAkJLyogV2FDb21wcmVzc2VkUmVzb3VyY2VTYW1wbGVyUGJlTWVkaWFOZXdIYXNoTW9kZTpz a2wsa2JsCiAJCSAqCiAJCSAqIE11c3QgbWF0Y2ggRGlzcGxheSBFbmdpbmUuIFNlZQpAQCAtMjQy LDcgKzI2NCw3IEBAIHN0YXRpYyBpbnQgZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgIFBBUlRJQUxfSU5TVFJVQ1RJT05fU0hP T1RET1dOX0RJU0FCTEUpOwogCiAJLyogU3luY2luZyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBjYW1l cmEgYW5kIGdyYXBoaWNzOnNrbCxieHQsa2JsICovCi0JaWYgKCFJU19DT0ZGRUVMQUtFKGRldl9w cml2KSkKKwlpZiAoIUlTX0NPRkZFRUxBS0UoaTkxNSkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKEhB TEZfU0xJQ0VfQ0hJQ0tFTjMsCiAJCQkJICBHRU45X0RJU0FCTEVfT0NMX09PQl9TVVBQUkVTU19M T0dJQyk7CiAKQEAgLTI4NSw5ICszMDcsNyBAQCBzdGF0aWMgaW50IGdlbjlfY3R4X3dvcmthcm91 bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICBIRENfRk9S Q0VfTk9OX0NPSEVSRU5UKTsKIAogCS8qIFdhRGlzYWJsZVNhbXBsZXJQb3dlckJ5cGFzc0ZvclNP UGluZ1Bvbmc6c2tsLGJ4dCxrYmwsY2ZsICovCi0JaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8 Ci0JICAgIElTX0tBQllMQUtFKGRldl9wcml2KSB8fAotCSAgICBJU19DT0ZGRUVMQUtFKGRldl9w cml2KSkKKwlpZiAoSVNfU0tZTEFLRShpOTE1KSB8fCBJU19LQUJZTEFLRShpOTE1KSB8fCBJU19D T0ZGRUVMQUtFKGk5MTUpKQogCQlXQV9TRVRfQklUX01BU0tFRChIQUxGX1NMSUNFX0NISUNLRU4z LAogCQkJCSAgR0VOOF9TQU1QTEVSX1BPV0VSX0JZUEFTU19ESVMpOwogCkBAIC0zMTQsMTQgKzMz NCwxNCBAQCBzdGF0aWMgaW50IGdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICAgIEdFTjlfUFJFRU1QVF9HUEdQVV9DT01NQU5E X0xFVkVMKTsKIAogCS8qIFdhQ2xlYXJISVpfV01fQ0hJQ0tFTjM6Ynh0LGdsayAqLwotCWlmIChJ U19HRU45X0xQKGRldl9wcml2KSkKKwlpZiAoSVNfR0VOOV9MUChpOTE1KSkKIAkJV0FfU0VUX0JJ VF9NQVNLRUQoR0VOOV9XTV9DSElDS0VOMywgR0VOOV9GQUNUT1JfSU5fQ0xSX1ZBTF9ISVopOwot Ci0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgc2tsX3R1bmVfaXpfaGFzaGluZyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBza2xfdHVuZV9pel9oYXNo aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwg PSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKIAl1OCB2YWxzWzNdID0geyAwLCAwLCAwIH07CiAJdW5z aWduZWQgaW50IGk7CiAKQEAgLTMzMiw3ICszNTIsNyBAQCBzdGF0aWMgaW50IHNrbF90dW5lX2l6 X2hhc2hpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgKiBPbmx5IGNv bnNpZGVyIHNsaWNlcyB3aGVyZSBvbmUsIGFuZCBvbmx5IG9uZSwgc3Vic2xpY2UgaGFzIDcKIAkJ ICogRVVzCiAJCSAqLwotCQlpZiAoIWlzX3Bvd2VyX29mXzIoSU5URUxfSU5GTyhkZXZfcHJpdikt PnNzZXUuc3Vic2xpY2VfN2V1W2ldKSkKKwkJaWYgKCFpc19wb3dlcl9vZl8yKElOVEVMX0lORk8o aTkxNSktPnNzZXUuc3Vic2xpY2VfN2V1W2ldKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qCkBAIC0z NDEsMTIgKzM2MSwxMiBAQCBzdGF0aWMgaW50IHNrbF90dW5lX2l6X2hhc2hpbmcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgKgogCQkgKiAtPiAgICAwIDw9IHNzIDw9IDM7 CiAJCSAqLwotCQlzcyA9IGZmcyhJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV83 ZXVbaV0pIC0gMTsKKwkJc3MgPSBmZnMoSU5URUxfSU5GTyhpOTE1KS0+c3NldS5zdWJzbGljZV83 ZXVbaV0pIC0gMTsKIAkJdmFsc1tpXSA9IDMgLSBzczsKIAl9CiAKIAlpZiAodmFsc1swXSA9PSAw ICYmIHZhbHNbMV0gPT0gMCAmJiB2YWxzWzJdID09IDApCi0JCXJldHVybiAwOworCQlyZXR1cm47 CiAKIAkvKiBUdW5lIElaIGhhc2hpbmcuIFNlZSBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2lu aXQoKSAqLwogCVdBX1NFVF9GSUVMRF9NQVNLRUQoR0VON19HVF9NT0RFLApAQCAtMzU2LDI4ICsz NzYsMTkgQEAgc3RhdGljIGludCBza2xfdHVuZV9pel9oYXNoaW5nKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAkJCSAgICBHRU45X0laX0hBU0hJTkcoMiwgdmFsc1syXSkgfAog CQkJICAgIEdFTjlfSVpfSEFTSElORygxLCB2YWxzWzFdKSB8CiAJCQkgICAgR0VOOV9JWl9IQVNI SU5HKDAsIHZhbHNbMF0pKTsKLQotCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHNrbF9jdHhf d29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0 aWMgdm9pZCBza2xfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogewotCWludCByZXQ7Ci0KLQlyZXQgPSBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0 KGRldl9wcml2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHNrbF90dW5l X2l6X2hhc2hpbmcoZGV2X3ByaXYpOworCWdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5l KTsKKwlza2xfdHVuZV9pel9oYXNoaW5nKGVuZ2luZSk7CiB9CiAKLXN0YXRpYyBpbnQgYnh0X2N0 eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0 YXRpYyB2b2lkIGJ4dF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7Ci0JaW50IHJldDsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZW5n aW5lLT5jdHhfd2FfbGlzdDsKIAotCXJldCA9IGdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2 X3ByaXYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJZ2VuOV9jdHhfd29ya2Fyb3VuZHNf aW5pdChlbmdpbmUpOwogCiAJLyogV2FEaXNhYmxlVGhyZWFkU3RhbGxEb3BDbG9ja0dhdGluZzpi eHQgKi8KIAlXQV9TRVRfQklUX01BU0tFRChHRU44X1JPV19DSElDS0VOLApAQCAtMzg2LDUyICsz OTcsNDEgQEAgc3RhdGljIGludCBieHRfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCS8qIFdhVG9FbmFibGVId0ZpeEZvclB1c2hDb25zdEhX QnVnOmJ4dCAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKENPTU1PTl9TTElDRV9DSElDS0VOMiwKIAkJ CSAgR0VOOF9TQkVfRElTQUJMRV9SRVBMQVlfQlVGX09QVElNSVpBVElPTik7Ci0KLQlyZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBrYmxfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQga2JsX2N0eF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpbnQgcmV0OworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OwogCi0JcmV0ID0gZ2VuOV9jdHhfd29y a2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlnZW45 X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CiAKIAkvKiBXYVRvRW5hYmxlSHdGaXhGb3JQ dXNoQ29uc3RIV0J1ZzprYmwgKi8KLQlpZiAoSVNfS0JMX1JFVklEKGRldl9wcml2LCBLQkxfUkVW SURfQzAsIFJFVklEX0ZPUkVWRVIpKQorCWlmIChJU19LQkxfUkVWSUQoaTkxNSwgS0JMX1JFVklE X0MwLCBSRVZJRF9GT1JFVkVSKSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoQ09NTU9OX1NMSUNFX0NI SUNLRU4yLAogCQkJCSAgR0VOOF9TQkVfRElTQUJMRV9SRVBMQVlfQlVGX09QVElNSVpBVElPTik7 CiAKIAkvKiBXYURpc2FibGVTYmVDYWNoZURpc3BhdGNoUG9ydFNoYXJpbmc6a2JsICovCiAJV0Ff U0VUX0JJVF9NQVNLRUQoR0VON19IQUxGX1NMSUNFX0NISUNLRU4xLAogCQkJICBHRU43X1NCRV9T U19DQUNIRV9ESVNQQVRDSF9QT1JUX1NIQVJJTkdfRElTQUJMRSk7Ci0KLQlyZXR1cm4gMDsKIH0K IAotc3RhdGljIGludCBnbGtfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgZ2xrX2N0eF93b3JrYXJvdW5kc19pbml0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpbnQgcmV0OworCXN0cnVjdCBpOTE1 X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OwogCi0JcmV0ID0gZ2VuOV9jdHhf d29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwln ZW45X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CiAKIAkvKiBXYVRvRW5hYmxlSHdGaXhG b3JQdXNoQ29uc3RIV0J1ZzpnbGsgKi8KIAlXQV9TRVRfQklUX01BU0tFRChDT01NT05fU0xJQ0Vf Q0hJQ0tFTjIsCiAJCQkgIEdFTjhfU0JFX0RJU0FCTEVfUkVQTEFZX0JVRl9PUFRJTUlaQVRJT04p OwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY2ZsX2N0eF93b3JrYXJvdW5kc19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGNmbF9jdHhf d29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW50 IHJldDsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsK IAotCXJldCA9IGdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOwogCiAJ LyogV2FUb0VuYWJsZUh3Rml4Rm9yUHVzaENvbnN0SFdCdWc6Y2ZsICovCiAJV0FfU0VUX0JJVF9N QVNLRUQoQ09NTU9OX1NMSUNFX0NISUNLRU4yLApAQCAtNDQwLDE4ICs0NDAsMTkgQEAgc3RhdGlj IGludCBjZmxfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCS8qIFdhRGlzYWJsZVNiZUNhY2hlRGlzcGF0Y2hQb3J0U2hhcmluZzpjZmwgKi8K IAlXQV9TRVRfQklUX01BU0tFRChHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tFTjEsCiAJCQkgIEdFTjdf U0JFX1NTX0NBQ0hFX0RJU1BBVENIX1BPUlRfU0hBUklOR19ESVNBQkxFKTsKLQotCXJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IGNubF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBjbmxfY3R4X3dvcmthcm91bmRzX2lu aXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogeworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9 ICZlbmdpbmUtPmN0eF93YV9saXN0OworCiAJLyogV2FGb3JjZUNvbnRleHRTYXZlUmVzdG9yZU5v bkNvaGVyZW50OmNubCAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKENOTF9IRENfQ0hJQ0tFTjAsCiAJ CQkgIEhEQ19GT1JDRV9DT05URVhUX1NBVkVfUkVTVE9SRV9OT05fQ09IRVJFTlQpOwogCiAJLyog V2FUaHJvdHRsZUVVUGVyZlRvQXZvaWRUREJhY2tQcmVzc3VyZTpjbmwocHJlLXByb2QpICovCi0J aWYgKElTX0NOTF9SRVZJRChkZXZfcHJpdiwgQ05MX1JFVklEX0IwLCBDTkxfUkVWSURfQjApKQor CWlmIChJU19DTkxfUkVWSUQoaTkxNSwgQ05MX1JFVklEX0IwLCBDTkxfUkVWSURfQjApKQogCQlX QV9TRVRfQklUX01BU0tFRChHRU44X1JPV19DSElDS0VOLCBUSFJPVFRMRV8xMl81KTsKIAogCS8q IFdhRGlzYWJsZVJlcGxheUJ1ZmZlckJhbmtBcmJpdHJhdGlvbk9wdGltaXphdGlvbjpjbmwgKi8K QEAgLTQ1OSw3ICs0NjAsNyBAQCBzdGF0aWMgaW50IGNubF9jdHhfd29ya2Fyb3VuZHNfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgIEdFTjhfU0JFX0RJU0FCTEVf UkVQTEFZX0JVRl9PUFRJTUlaQVRJT04pOwogCiAJLyogV2FEaXNhYmxlRW5oYW5jZWRTQkVWZXJ0 ZXhDYWNoaW5nOmNubCAocHJlLXByb2QpICovCi0JaWYgKElTX0NOTF9SRVZJRChkZXZfcHJpdiwg MCwgQ05MX1JFVklEX0IwKSkKKwlpZiAoSVNfQ05MX1JFVklEKGk5MTUsIDAsIENOTF9SRVZJRF9C MCkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKENPTU1PTl9TTElDRV9DSElDS0VOMiwKIAkJCQkgIEdF TjhfQ1NDMl9TQkVfVlVFX0NBQ0hFX0NPTlNFUlZBVElWRSk7CiAKQEAgLTQ3OSwxNiArNDgwLDE3 IEBAIHN0YXRpYyBpbnQgY25sX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAogCS8qIFdhRGlzYWJsZUVhcmx5RU9UOmNubCAqLwogCVdBX1NF VF9CSVRfTUFTS0VEKEdFTjhfUk9XX0NISUNLRU4sIERJU0FCTEVfRUFSTFlfRU9UKTsKLQotCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IGljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBpY2xfY3R4X3dvcmthcm91 bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogeworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OworCiAJLyogV2FfMTYwNDM3MDU4NTppY2wgKHBy ZS1wcm9kKQogCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhUHVzaENvbnN0YW50RGVyZWZlcmVuY2VI b2xkRGlzYWJsZQogCSAqLwotCWlmIChJU19JQ0xfUkVWSUQoZGV2X3ByaXYsIElDTF9SRVZJRF9B MCwgSUNMX1JFVklEX0IwKSkKKwlpZiAoSVNfSUNMX1JFVklEKGk5MTUsIElDTF9SRVZJRF9BMCwg SUNMX1JFVklEX0IwKSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoR0VON19ST1dfQ0hJQ0tFTjIsCiAJ CQkJICBQVVNIX0NPTlNUQU5UX0RFUkVGX0RJU0FCTEUpOwogCkBAIC01MDQsNyArNTA2LDcgQEAg c3RhdGljIGludCBpY2xfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCS8qIFdhXzIwMDY2MTEwNDc6aWNsIChwcmUtcHJvZCkKIAkgKiBGb3Jt ZXJseSBrbm93biBhcyBXYURpc2FibGVJbXByb3ZlZFRkbENsa0dhdGluZwogCSAqLwotCWlmIChJ U19JQ0xfUkVWSUQoZGV2X3ByaXYsIElDTF9SRVZJRF9BMCwgSUNMX1JFVklEX0EwKSkKKwlpZiAo SVNfSUNMX1JFVklEKGk5MTUsIElDTF9SRVZJRF9BMCwgSUNMX1JFVklEX0EwKSkKIAkJV0FfU0VU X0JJVF9NQVNLRUQoR0VON19ST1dfQ0hJQ0tFTjIsCiAJCQkJICBHRU4xMV9URExfQ0xPQ0tfR0FU SU5HX0ZJWF9ESVNBQkxFKTsKIApAQCAtNTEzLDcwICs1MTUsNjcgQEAgc3RhdGljIGludCBpY2xf Y3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CQkJICBHRU4xMV9TVEFURV9DQUNIRV9SRURJUkVDVF9UT19DUyk7CiAKIAkvKiBXYV8yMDA2NjY1 MTczOmljbCAocHJlLXByb2QpICovCi0JaWYgKElTX0lDTF9SRVZJRChkZXZfcHJpdiwgSUNMX1JF VklEX0EwLCBJQ0xfUkVWSURfQTApKQorCWlmIChJU19JQ0xfUkVWSUQoaTkxNSwgSUNMX1JFVklE X0EwLCBJQ0xfUkVWSURfQTApKQogCQlXQV9TRVRfQklUX01BU0tFRChHRU4xMV9DT01NT05fU0xJ Q0VfQ0hJQ0tFTjMsCiAJCQkJICBHRU4xMV9CTEVORF9FTUJfRklYX0RJU0FCTEVfSU5fUkNDKTsK LQotCXJldHVybiAwOwogfQogCi1pbnQgaW50ZWxfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQordm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9jdHhf d2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWludCBlcnIgPSAwOwotCi0J ZGV2X3ByaXYtPndvcmthcm91bmRzLmNvdW50ID0gMDsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgOCkKLQkJZXJyID0gMDsKLQllbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQot CQllcnIgPSBiZHdfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKQotCQllcnIgPSBjaHZfY3R4X3dvcmthcm91bmRzX2luaXQo ZGV2X3ByaXYpOwotCWVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQotCQllcnIgPSBza2xf Y3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElTX0JST1hUT04oZGV2 X3ByaXYpKQotCQllcnIgPSBieHRfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWVs c2UgaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSkKLQkJZXJyID0ga2JsX2N0eF93b3JrYXJvdW5k c19pbml0KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkKLQkJ ZXJyID0gZ2xrX2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19D T0ZGRUVMQUtFKGRldl9wcml2KSkKLQkJZXJyID0gY2ZsX2N0eF93b3JrYXJvdW5kc19pbml0KGRl dl9wcml2KTsKLQllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKLQkJZXJyID0gY25s X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19JQ0VMQUtFKGRl dl9wcml2KSkKLQkJZXJyID0gaWNsX2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKKworCXdhX2luaXRfc3RhcnQo d2FsLCAiY29udGV4dCIpOworCisJaWYgKElOVEVMX0dFTihpOTE1KSA8IDgpCisJCXJldHVybjsK KwllbHNlIGlmIChJU19CUk9BRFdFTEwoaTkxNSkpCisJCWJkd19jdHhfd29ya2Fyb3VuZHNfaW5p dChlbmdpbmUpOworCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoaTkxNSkpCisJCWNodl9jdHhfd29y a2Fyb3VuZHNfaW5pdChlbmdpbmUpOworCWVsc2UgaWYgKElTX1NLWUxBS0UoaTkxNSkpCisJCXNr bF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOworCWVsc2UgaWYgKElTX0JST1hUT04oaTkx NSkpCisJCWJ4dF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOworCWVsc2UgaWYgKElTX0tB QllMQUtFKGk5MTUpKQorCQlrYmxfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKKwllbHNl IGlmIChJU19HRU1JTklMQUtFKGk5MTUpKQorCQlnbGtfY3R4X3dvcmthcm91bmRzX2luaXQoZW5n aW5lKTsKKwllbHNlIGlmIChJU19DT0ZGRUVMQUtFKGk5MTUpKQorCQljZmxfY3R4X3dvcmthcm91 bmRzX2luaXQoZW5naW5lKTsKKwllbHNlIGlmIChJU19DQU5OT05MQUtFKGk5MTUpKQorCQljbmxf Y3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKKwllbHNlIGlmIChJU19JQ0VMQUtFKGk5MTUp KQorCQlpY2xfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKIAllbHNlCi0JCU1JU1NJTkdf Q0FTRShJTlRFTF9HRU4oZGV2X3ByaXYpKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCQlN SVNTSU5HX0NBU0UoSU5URUxfR0VOKGk5MTUpKTsKIAotCURSTV9ERUJVR19EUklWRVIoIk51bWJl ciBvZiBjb250ZXh0IHNwZWNpZmljIHcvYTogJWRcbiIsCi0JCQkgZGV2X3ByaXYtPndvcmthcm91 bmRzLmNvdW50KTsKLQlyZXR1cm4gMDsKKwl3YV9pbml0X2ZpbmlzaCh3YWwpOwogfQogCi1pbnQg aW50ZWxfY3R4X3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCitpbnQg aW50ZWxfZW5naW5lX2VtaXRfY3R4X3dhKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewotCXN0 cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJxLT5pOTE1LT53b3JrYXJvdW5kczsKKwlzdHJ1 Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmcnEtPmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CisJc3RydWN0 IGk5MTVfd2EgKndhOworCXVuc2lnbmVkIGludCBpOwogCXUzMiAqY3M7Ci0JaW50IHJldCwgaTsK KwlpbnQgcmV0OwogCi0JaWYgKHctPmNvdW50ID09IDApCisJaWYgKHdhbC0+Y291bnQgPT0gMCkK IAkJcmV0dXJuIDA7CiAKIAlyZXQgPSBycS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJxLCBFTUlUX0JB UlJJRVIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQljcyA9IGludGVsX3JpbmdfYmVn aW4ocnEsICh3LT5jb3VudCAqIDIgKyAyKSk7CisJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCAo d2FsLT5jb3VudCAqIDIgKyAyKSk7CiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVybiBQVFJfRVJS KGNzKTsKIAotCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpOwotCWZvciAo aSA9IDA7IGkgPCB3LT5jb3VudDsgaSsrKSB7Ci0JCSpjcysrID0gdy0+cmVnW2ldLmFkZHI7Ci0J CSpjcysrID0gdy0+cmVnW2ldLnZhbHVlOworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0o d2FsLT5jb3VudCk7CisJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7IGkgPCB3YWwtPmNvdW50 OyBpKyssIHdhKyspIHsKKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldCh3YS0+cmVnKTsK KwkJKmNzKysgPSB3YS0+dmFsOwogCX0KIAkqY3MrKyA9IE1JX05PT1A7CiAKQEAgLTU4OSwzMyAr NTg4LDYgQEAgaW50IGludGVsX2N0eF93b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZAotd2FsX2FkZChzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwsIGNvbnN0IHN0cnVjdCBpOTE1X3dhICp3YSkKLXsKLQljb25zdCB1bnNp Z25lZCBpbnQgZ3JvdyA9IDEgPDwgNDsKLQotCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoZ3Jv dykpOwotCi0JaWYgKElTX0FMSUdORUQod2FsLT5jb3VudCwgZ3JvdykpIHsgLyogRWl0aGVyIHVu aW5pdGlhbGl6ZWQgb3IgZnVsbC4gKi8KLQkJc3RydWN0IGk5MTVfd2EgKmxpc3Q7Ci0KLQkJbGlz dCA9IGttYWxsb2MoQUxJR04od2FsLT5jb3VudCArIDEsIGdyb3cpICogc2l6ZW9mKCp3YSksCi0J CQkgICAgICAgR0ZQX0tFUk5FTCk7Ci0JCWlmICghbGlzdCkgewotCQkJRFJNX0VSUk9SKCJObyBz cGFjZSBmb3Igd29ya2Fyb3VuZCBpbml0IVxuIik7Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQlpZiAo d2FsLT5saXN0KQotCQkJbWVtY3B5KGxpc3QsIHdhbC0+bGlzdCwgc2l6ZW9mKCp3YSkgKiB3YWwt PmNvdW50KTsKLQotCQl3YWwtPmxpc3QgPSBsaXN0OwotCX0KLQotCi0Jd2FsLT5saXN0W3dhbC0+ Y291bnQrK10gPSAqd2E7Ci19Ci0KIHN0YXRpYyB2b2lkCiB3YV9tYXNrZWRfZW4oc3RydWN0IGk5 MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKIHsKQEAgLTYyNSw3ICs1 OTcsNyBAQCB3YV9tYXNrZWRfZW4oc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190 IHJlZywgdTMyIHZhbCkKIAkJLnZhbCA9IF9NQVNLRURfQklUX0VOQUJMRSh2YWwpCiAJfTsKIAot CXdhbF9hZGQod2FsLCAmd2EpOworCV93YV9hZGQod2FsLCAmd2EpOwogfQogCiBzdGF0aWMgdm9p ZApAQCAtNjM4LDcgKzYxMCw3IEBAIHdhX3dyaXRlX21hc2tlZF9vcihzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLCB1MzIgbWFzaywKIAkJLnZhbCA9IHZhbAogCX07CiAK LQl3YWxfYWRkKHdhbCwgJndhKTsKKwlfd2FfYWRkKHdhbCwgJndhKTsKIH0KIAogc3RhdGljIHZv aWQKQEAgLTEwMjIsNyArOTk0LDcgQEAgd2hpdGVsaXN0X3JlZyhzdHJ1Y3QgaTkxNV93YV9saXN0 ICp3YWwsIGk5MTVfcmVnX3QgcmVnKQogCWlmIChHRU1fREVCVUdfV0FSTl9PTih3YWwtPmNvdW50 ID49IFJJTkdfTUFYX05PTlBSSVZfU0xPVFMpKQogCQlyZXR1cm47CiAKLQl3YWxfYWRkKHdhbCwg JndhKTsKKwlfd2FfYWRkKHdhbCwgJndhKTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuOV93aGl0ZWxp c3RfYnVpbGQoc3RydWN0IGk5MTVfd2FfbGlzdCAqdykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF93b3JrYXJvdW5kcy5oCmluZGV4IDNmOTliZmNiNGEwMy4uN2M3MzQ3MTRiMDVlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKQEAgLTE5LDYgKzE5LDcgQEAgc3Ry dWN0IGk5MTVfd2FfbGlzdCB7CiAJY29uc3QgY2hhcgkqbmFtZTsKIAlzdHJ1Y3QgaTkxNV93YQkq bGlzdDsKIAl1bnNpZ25lZCBpbnQJY291bnQ7CisJdW5zaWduZWQgaW50CXdhX2NvdW50OwogfTsK IAogc3RhdGljIGlubGluZSB2b2lkIGludGVsX3dhX2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwpCkBAIC0yNyw4ICsyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF93YV9s aXN0X2ZyZWUoc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCW1lbXNldCh3YWwsIDAsIHNpemVv Zigqd2FsKSk7CiB9CiAKLWludCBpbnRlbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotaW50IGludGVsX2N0eF93b3JrYXJvdW5kc19lbWl0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRfY3R4X3dh KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CitpbnQgaW50ZWxfZW5naW5lX2VtaXRf Y3R4X3dhKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKIAogdm9pZCBpbnRlbF9ndF9pbml0X3dv cmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVs X2d0X2FwcGx5X3dvcmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=