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 11:46:16 +0000 Message-ID: <20181203114617.6938-7-tvrtko.ursulin@linux.intel.com> References: <20181203114617.6938-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B37E89DFD for ; Mon, 3 Dec 2018 11:46:29 +0000 (UTC) In-Reply-To: <20181203114617.6938-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+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICB8 ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAxNSAt CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgIHwgICA2ICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29y a2Fyb3VuZHMuYyB8IDMzNCArKysrKysrKysrKy0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaCB8ICAgNSArLQogOSBmaWxlcyBjaGFuZ2VkLCAxNjgg aW5zZXJ0aW9ucygrKSwgMjEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKaW5kZXggMTI5YjlhNmY4MzA5Li4zOGRjZWUxY2EwNjIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCkBAIC0zMzc1LDEzICszMzc1LDE1IEBAIHN0YXRpYyBpbnQgaTkxNV9z aGFyZWRfZHBsbHNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAogc3Rh dGljIGludCBpOTE1X3dhX3JlZ2lzdGVycyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKIHsKLQlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyAqd2EgPSAmbm9kZV90b19pOTE1KG0tPnBy aXZhdGUpLT53b3JrYXJvdW5kczsKLQlpbnQgaTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKKwljb25zdCBzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwgPSAmaTkxNS0+ZW5naW5lW1JDU10tPmN0eF93YV9saXN0OworCXN0cnVjdCBpOTE1 X3dhICp3YTsKKwl1bnNpZ25lZCBpbnQgaTsKIAotCXNlcV9wcmludGYobSwgIldvcmthcm91bmRz IGFwcGxpZWQ6ICVkXG4iLCB3YS0+Y291bnQpOwotCWZvciAoaSA9IDA7IGkgPCB3YS0+Y291bnQ7 ICsraSkKKwlzZXFfcHJpbnRmKG0sICJXb3JrYXJvdW5kcyBhcHBsaWVkOiAldVxuIiwgd2FsLT5j b3VudCk7CisJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7IGkgPCB3YWwtPmNvdW50OyBpKyss IHdhKyspCiAJCXNlcV9wcmludGYobSwgIjB4JVg6IDB4JTA4WCwgbWFzazogMHglMDhYXG4iLAot CQkJICAgd2EtPnJlZ1tpXS5hZGRyLCB3YS0+cmVnW2ldLnZhbHVlLCB3YS0+cmVnW2ldLm1hc2sp OworCQkJICAgaTkxNV9tbWlvX3JlZ19vZmZzZXQod2EtPnJlZyksIHdhLT52YWwsIHdhLT5tYXNr KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggOWRkYmNjMWYz NTU0Li40NDNlMDhmNDczNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTE4OSwyMCAr MTE4OSw2IEBAIHN0cnVjdCBpOTE1X2Zyb250YnVmZmVyX3RyYWNraW5nIHsKIAl1bnNpZ25lZCBm bGlwX2JpdHM7CiB9OwogCi1zdHJ1Y3QgaTkxNV93YV9yZWcgewotCXUzMiBhZGRyOwotCXUzMiB2 YWx1ZTsKLQkvKiBiaXRtYXNrIHJlcHJlc2VudGluZyBXQSBiaXRzICovCi0JdTMyIG1hc2s7Ci19 OwotCi0jZGVmaW5lIEk5MTVfTUFYX1dBX1JFR1MgMTYKLQotc3RydWN0IGk5MTVfd29ya2Fyb3Vu ZHMgewotCXN0cnVjdCBpOTE1X3dhX3JlZyByZWdbSTkxNV9NQVhfV0FfUkVHU107Ci0JdTMyIGNv dW50OwotfTsKLQogc3RydWN0IGk5MTVfdmlydHVhbF9ncHUgewogCWJvb2wgYWN0aXZlOwogCXUz MiBjYXBzOwpAQCAtMTY1Miw3ICsxNjM4LDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewog CiAJaW50IGRwaW9fcGh5X2lvc2ZfcG9ydFtJOTE1X05VTV9QSFlTX1ZMVl07CiAKLQlzdHJ1Y3Qg aTkxNV93b3JrYXJvdW5kcyB3b3JrYXJvdW5kczsKIAlzdHJ1Y3QgaTkxNV93YV9saXN0IGd0X3dh X2xpc3Q7CiAKIAlzdHJ1Y3QgaTkxNV9mcm9udGJ1ZmZlcl90cmFja2luZyBmYl90cmFja2luZzsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCBiOTc5NjNkYjAyODcu LjM3MWMwNzA4NzA5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpA QCAtNTM1LDE2ICs1MzUsMTIgQEAgc3RhdGljIGJvb2wgbmVlZHNfcHJlZW1wdF9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7Ci0JaW50IHJldDsKIAogCS8qIFJlYXNzdXJlIG91cnNlbHZlcyB3ZSBhcmUg b25seSBjYWxsZWQgb25jZSAqLwogCUdFTV9CVUdfT04oZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0 KTsKIAlHRU1fQlVHX09OKGRldl9wcml2LT5wcmVlbXB0X2NvbnRleHQpOwogCi0JcmV0ID0gaW50 ZWxfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7Ci0KKwlpbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2EoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKTsK IAlpbml0X2NvbnRleHRzKGRldl9wcml2KTsKIAogCS8qIGxvd2VzdCBwcmlvcml0eTsgaWRsZSB0 YXNrICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDQ5NjQ2MmQ3 N2ViYy4uNmI0MjdiYzUyZjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YwpAQCAtNzI0LDYgKzcyNCw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWk5MTVfdGltZWxpbmVfZmluaSgmZW5n aW5lLT50aW1lbGluZSk7CiAKKwlpbnRlbF93YV9saXN0X2ZyZWUoJmVuZ2luZS0+Y3R4X3dhX2xp c3QpOwogCWludGVsX3dhX2xpc3RfZnJlZSgmZW5naW5lLT53YV9saXN0KTsKIAlpbnRlbF93YV9s aXN0X2ZyZWUoJmVuZ2luZS0+d2hpdGVsaXN0KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK aW5kZXggYWY2MWEzY2Y5Y2I4Li43ZGU3YWE0NzE1ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCkBAIC0yMDc4LDcgKzIwNzgsNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4 dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaW50ZWxf Y3R4X3dvcmthcm91bmRzX2VtaXQocnEpOworCXJldCA9IGludGVsX2VuZ2luZV9lbWl0X2N0eF93 YShycSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDI4YWUxZTQzNmVhNi4uMDI2YmRhMmI2ZGY5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC02NDksNyArNjQ5LDcgQEAgc3Rh dGljIGludCBpbnRlbF9yY3NfY3R4X2luaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7CiAJ aW50IHJldDsKIAotCXJldCA9IGludGVsX2N0eF93b3JrYXJvdW5kc19lbWl0KHJxKTsKKwlyZXQg PSBpbnRlbF9lbmdpbmVfZW1pdF9jdHhfd2EocnEpOwogCWlmIChyZXQgIT0gMCkKIAkJcmV0dXJu IHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDkxYTc1 MGU5MGRjNC4uOGY5ODVjMzVlYzkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCkBAIC00NTIsNiArNDUyLDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAKIAlz dHJ1Y3QgaW50ZWxfaHdfc3RhdHVzX3BhZ2Ugc3RhdHVzX3BhZ2U7CiAJc3RydWN0IGk5MTVfY3R4 X3dvcmthcm91bmRzIHdhX2N0eDsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0IGN0eF93YV9saXN0Owog CXN0cnVjdCBpOTE1X3dhX2xpc3Qgd2FfbGlzdDsKIAlzdHJ1Y3QgaTkxNV93YV9saXN0IHdoaXRl bGlzdDsKIAlzdHJ1Y3QgaTkxNV92bWEgKnNjcmF0Y2g7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfd29ya2Fyb3VuZHMuYwppbmRleCAwMzUwNTEzYmY3ZjcuLmVlMjIwYTAzMTc0MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC01Nyw2MSArNTcsODcgQEAg c3RhdGljIHZvaWQgd2FfaW5pdF9maW5pc2goc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogewog CWlmICh3YWwtPmNvdW50KQogCQlEUk1fREVCVUdfRFJJVkVSKCJJbml0aWFsaXplZCAldSAlcyB3 b3JrYXJvdW5kc1xuIiwKLQkJCQkgd2FsLT5jb3VudCwgd2FsLT5uYW1lKTsKKwkJCQkgd2FsLT53 YV9jb3VudCwgd2FsLT5uYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgd2FfYWRkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAotCQkgICBpOTE1X3JlZ190IHJlZywgY29uc3QgdTMyIG1hc2ss IGNvbnN0IHUzMiB2YWwpCitzdGF0aWMgdm9pZCBfd2FfYWRkKHN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCwgY29uc3Qgc3RydWN0IGk5MTVfd2EgKndhKQogewotCXN0cnVjdCBpOTE1X3dvcmthcm91 bmRzICp3YSA9ICZpOTE1LT53b3JrYXJvdW5kczsKLQl1bnNpZ25lZCBpbnQgc3RhcnQgPSAwLCBl bmQgPSB3YS0+Y291bnQ7Ci0JdW5zaWduZWQgaW50IGFkZHIgPSBpOTE1X21taW9fcmVnX29mZnNl dChyZWcpOwotCXN0cnVjdCBpOTE1X3dhX3JlZyAqcjsKKwl1bnNpZ25lZCBpbnQgYWRkciA9IGk5 MTVfbW1pb19yZWdfb2Zmc2V0KHdhLT5yZWcpOworCXVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVu ZCA9IHdhbC0+Y291bnQ7CisJY29uc3QgdW5zaWduZWQgaW50IGdyb3cgPSAxIDw8IDQ7CisJc3Ry dWN0IGk5MTVfd2EgKndhXzsKKworCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoZ3JvdykpOwor CisJaWYgKElTX0FMSUdORUQod2FsLT5jb3VudCwgZ3JvdykpIHsgLyogRWl0aGVyIHVuaW5pdGlh bGl6ZWQgb3IgZnVsbC4gKi8KKwkJc3RydWN0IGk5MTVfd2EgKmxpc3Q7CisKKwkJbGlzdCA9IGtj YWxsb2MoQUxJR04od2FsLT5jb3VudCArIDEsIGdyb3cpLCBzaXplb2YoKndhKSwKKwkJCSAgICAg ICBHRlBfS0VSTkVMKTsKKwkJaWYgKCFsaXN0KSB7CisJCQlEUk1fRVJST1IoIk5vIHNwYWNlIGZv ciB3b3JrYXJvdW5kIGluaXQhXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmICh3YWwtPmxp c3QpCisJCQltZW1jcHkobGlzdCwgd2FsLT5saXN0LCBzaXplb2YoKndhKSAqIHdhbC0+Y291bnQp OworCisJCXdhbC0+bGlzdCA9IGxpc3Q7CisJfQogCiAJd2hpbGUgKHN0YXJ0IDwgZW5kKSB7CiAJ CXVuc2lnbmVkIGludCBtaWQgPSBzdGFydCArIChlbmQgLSBzdGFydCkgLyAyOwogCi0JCWlmICh3 YS0+cmVnW21pZF0uYWRkciA8IGFkZHIpIHsKKwkJaWYgKGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdh bC0+bGlzdFttaWRdLnJlZykgPCBhZGRyKSB7CiAJCQlzdGFydCA9IG1pZCArIDE7Ci0JCX0gZWxz ZSBpZiAod2EtPnJlZ1ttaWRdLmFkZHIgPiBhZGRyKSB7CisJCX0gZWxzZSBpZiAoaTkxNV9tbWlv X3JlZ19vZmZzZXQod2FsLT5saXN0W21pZF0ucmVnKSA+IGFkZHIpIHsKIAkJCWVuZCA9IG1pZDsK IAkJfSBlbHNlIHsKLQkJCXIgPSAmd2EtPnJlZ1ttaWRdOworCQkJd2FfID0gJndhbC0+bGlzdFtt aWRdOwogCi0JCQlpZiAoKG1hc2sgJiB+ci0+bWFzaykgPT0gMCkgeworCQkJaWYgKCh3YS0+bWFz ayAmIH53YV8tPm1hc2spID09IDApIHsKIAkJCQlEUk1fRVJST1IoIkRpc2NhcmRpbmcgb3Zlcndy aXR0ZW4gdy9hIGZvciByZWcgJTA0eCAobWFzazogJTA4eCwgdmFsdWU6ICUwOHgpXG4iLAotCQkJ CQkgIGFkZHIsIHItPm1hc2ssIHItPnZhbHVlKTsKKwkJCQkJICBpOTE1X21taW9fcmVnX29mZnNl dCh3YV8tPnJlZyksCisJCQkJCSAgd2FfLT5tYXNrLCB3YV8tPnZhbCk7CiAKLQkJCQlyLT52YWx1 ZSAmPSB+bWFzazsKKwkJCQl3YV8tPnZhbCAmPSB+d2EtPm1hc2s7CiAJCQl9CiAKLQkJCXItPnZh bHVlIHw9IHZhbDsKLQkJCXItPm1hc2sgIHw9IG1hc2s7CisJCQl3YWwtPndhX2NvdW50Kys7CisJ CQl3YV8tPnZhbCB8PSB3YS0+dmFsOworCQkJd2FfLT5tYXNrIHw9IHdhLT5tYXNrOwogCQkJcmV0 dXJuOwogCQl9CiAJfQogCi0JaWYgKFdBUk5fT05fT05DRSh3YS0+Y291bnQgPj0gSTkxNV9NQVhf V0FfUkVHUykpIHsKLQkJRFJNX0VSUk9SKCJEcm9wcGluZyB3L2EgZm9yIHJlZyAlMDR4IChtYXNr OiAlMDh4LCB2YWx1ZTogJTA4eClcbiIsCi0JCQkgIGFkZHIsIG1hc2ssIHZhbCk7Ci0JCXJldHVy bjsKLQl9CisJd2FsLT53YV9jb3VudCsrOworCXdhXyA9ICZ3YWwtPmxpc3Rbd2FsLT5jb3VudCsr XTsKKwkqd2FfID0gKndhOwogCi0JciA9ICZ3YS0+cmVnW3dhLT5jb3VudCsrXTsKLQlyLT5hZGRy ICA9IGFkZHI7Ci0Jci0+dmFsdWUgPSB2YWw7Ci0Jci0+bWFzayAgPSBtYXNrOwotCi0Jd2hpbGUg KHItLSA+IHdhLT5yZWcpIHsKLQkJR0VNX0JVR19PTihyWzBdLmFkZHIgPT0gclsxXS5hZGRyKTsK LQkJaWYgKHJbMV0uYWRkciA+IHJbMF0uYWRkcikKKwl3aGlsZSAod2FfLS0gPiB3YWwtPmxpc3Qp IHsKKwkJR0VNX0JVR19PTihpOTE1X21taW9fcmVnX29mZnNldCh3YV9bMF0ucmVnKSA9PQorCQkJ ICAgaTkxNV9tbWlvX3JlZ19vZmZzZXQod2FfWzFdLnJlZykpOworCQlpZiAoaTkxNV9tbWlvX3Jl Z19vZmZzZXQod2FfWzFdLnJlZykgPgorCQkgICAgaTkxNV9tbWlvX3JlZ19vZmZzZXQod2FfWzBd LnJlZykpCiAJCQlicmVhazsKIAotCQlzd2FwKHJbMV0sIHJbMF0pOworCQlzd2FwKHdhX1sxXSwg d2FfWzBdKTsKIAl9CiB9CiAKLSNkZWZpbmUgV0FfUkVHKGFkZHIsIG1hc2ssIHZhbCkgd2FfYWRk KGRldl9wcml2LCAoYWRkciksIChtYXNrKSwgKHZhbCkpCitzdGF0aWMgdm9pZAorX193YV9hZGQo c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIG1hc2ssIHUzMiB2 YWwpCit7CisJc3RydWN0IGk5MTVfd2Egd2EgPSB7CisJCS5yZWcgPSByZWcsCisJCS5tYXNrID0g bWFzaywKKwkJLnZhbCA9IHZhbAorCX07CisKKwlfd2FfYWRkKHdhbCwgJndhKTsKK30KKworI2Rl ZmluZSBXQV9SRUcoYWRkciwgbWFzaywgdmFsKSBfX3dhX2FkZCh3YWwsIChhZGRyKSwgKG1hc2sp LCAodmFsKSkKIAogI2RlZmluZSBXQV9TRVRfQklUX01BU0tFRChhZGRyLCBtYXNrKSBcCiAJV0Ff UkVHKGFkZHIsIChtYXNrKSwgX01BU0tFRF9CSVRfRU5BQkxFKG1hc2spKQpAQCAtMTIyLDggKzE0 OCwxMCBAQCBzdGF0aWMgdm9pZCB3YV9hZGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CiAjZGVmaW5lIFdBX1NFVF9GSUVMRF9NQVNLRUQoYWRkciwgbWFzaywgdmFsdWUpIFwKIAlXQV9S RUcoYWRkciwgKG1hc2spLCBfTUFTS0VEX0ZJRUxEKG1hc2ssIHZhbHVlKSkKIAotc3RhdGljIGlu dCBnZW44X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKK3N0YXRpYyB2b2lkIGdlbjhfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogeworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdp bmUtPmN0eF93YV9saXN0OworCiAJV0FfU0VUX0JJVF9NQVNLRUQoSU5TVFBNLCBJTlNUUE1fRk9S Q0VfT1JERVJJTkcpOwogCiAJLyogV2FEaXNhYmxlQXN5bmNGbGlwUGVyZk1vZGU6YmR3LGNodiAq LwpAQCAtMTY3LDE3ICsxOTUsMTQgQEAgc3RhdGljIGludCBnZW44X2N0eF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlXQV9TRVRfRklFTERfTUFT S0VEKEdFTjdfR1RfTU9ERSwKIAkJCSAgICBHRU42X1dJWl9IQVNISU5HX01BU0ssCiAJCQkgICAg R0VONl9XSVpfSEFTSElOR18xNng0KTsKLQotCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGJk d19jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CitzdGF0aWMgdm9pZCBiZHdfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogewotCWludCByZXQ7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+ Y3R4X3dhX2xpc3Q7CiAKLQlyZXQgPSBnZW44X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2 KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCWdlbjhfY3R4X3dvcmthcm91bmRzX2luaXQo ZW5naW5lKTsKIAogCS8qIFdhRGlzYWJsZVRocmVhZFN0YWxsRG9wQ2xvY2tHYXRpbmc6YmR3IChw cmUtcHJvZHVjdGlvbikgKi8KIAlXQV9TRVRfQklUX01BU0tFRChHRU44X1JPV19DSElDS0VOLCBT VEFMTF9ET1BfR0FUSU5HX0RJU0FCTEUpOwpAQCAtMTk3LDMxICsyMjIsMjggQEAgc3RhdGljIGlu dCBiZHdfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQkJICAvKiBXYUZvcmNlQ29udGV4dFNhdmVSZXN0b3JlTm9uQ29oZXJlbnQ6YmR3ICov CiAJCQkgIEhEQ19GT1JDRV9DT05URVhUX1NBVkVfUkVTVE9SRV9OT05fQ09IRVJFTlQgfAogCQkJ ICAvKiBXYURpc2FibGVGZW5jZURlc3RpbmF0aW9uVG9TTE06YmR3IChwcmUtcHJvZCkgKi8KLQkJ CSAgKElTX0JEV19HVDMoZGV2X3ByaXYpID8gSERDX0ZFTkNFX0RFU1RfU0xNX0RJU0FCTEUgOiAw KSk7Ci0KLQlyZXR1cm4gMDsKKwkJCSAgKElTX0JEV19HVDMoaTkxNSkgPyBIRENfRkVOQ0VfREVT VF9TTE1fRElTQUJMRSA6IDApKTsKIH0KIAotc3RhdGljIGludCBjaHZfY3R4X3dvcmthcm91bmRz X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgY2h2 X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsK LQlpbnQgcmV0OworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9s aXN0OwogCi0JcmV0ID0gZ2VuOF9jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKKwlnZW44X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7 CiAKIAkvKiBXYURpc2FibGVUaHJlYWRTdGFsbERvcENsb2NrR2F0aW5nOmNodiAqLwogCVdBX1NF VF9CSVRfTUFTS0VEKEdFTjhfUk9XX0NISUNLRU4sIFNUQUxMX0RPUF9HQVRJTkdfRElTQUJMRSk7 CiAKIAkvKiBJbXByb3ZlIEhpWiB0aHJvdWdocHV0IG9uIENIVi4gKi8KIAlXQV9TRVRfQklUX01B U0tFRChISVpfQ0hJQ0tFTiwgQ0hWX0haXzhYOF9NT0RFX0lOXzFYKTsKLQotCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50IGdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5p dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaWYgKEhBU19MTEMoZGV2X3By aXYpKSB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJ c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CisKKwlpZiAo SEFTX0xMQyhpOTE1KSkgewogCQkvKiBXYUNvbXByZXNzZWRSZXNvdXJjZVNhbXBsZXJQYmVNZWRp YU5ld0hhc2hNb2RlOnNrbCxrYmwKIAkJICoKIAkJICogTXVzdCBtYXRjaCBEaXNwbGF5IEVuZ2lu ZS4gU2VlCkBAIC0yNDAsNyArMjYyLDcgQEAgc3RhdGljIGludCBnZW45X2N0eF93b3JrYXJvdW5k c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAgUEFSVElBTF9J TlNUUlVDVElPTl9TSE9PVERPV05fRElTQUJMRSk7CiAKIAkvKiBTeW5jaW5nIGRlcGVuZGVuY2ll cyBiZXR3ZWVuIGNhbWVyYSBhbmQgZ3JhcGhpY3M6c2tsLGJ4dCxrYmwgKi8KLQlpZiAoIUlTX0NP RkZFRUxBS0UoZGV2X3ByaXYpKQorCWlmICghSVNfQ09GRkVFTEFLRShpOTE1KSkKIAkJV0FfU0VU X0JJVF9NQVNLRUQoSEFMRl9TTElDRV9DSElDS0VOMywKIAkJCQkgIEdFTjlfRElTQUJMRV9PQ0xf T09CX1NVUFBSRVNTX0xPR0lDKTsKIApAQCAtMjgzLDkgKzMwNSw3IEBAIHN0YXRpYyBpbnQgZ2Vu OV9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJCQkgIEhEQ19GT1JDRV9OT05fQ09IRVJFTlQpOwogCiAJLyogV2FEaXNhYmxlU2FtcGxlclBv d2VyQnlwYXNzRm9yU09QaW5nUG9uZzpza2wsYnh0LGtibCxjZmwgKi8KLQlpZiAoSVNfU0tZTEFL RShkZXZfcHJpdikgfHwKLQkgICAgSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NP RkZFRUxBS0UoZGV2X3ByaXYpKQorCWlmIChJU19TS1lMQUtFKGk5MTUpIHx8IElTX0tBQllMQUtF KGk5MTUpIHx8IElTX0NPRkZFRUxBS0UoaTkxNSkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKEhBTEZf U0xJQ0VfQ0hJQ0tFTjMsCiAJCQkJICBHRU44X1NBTVBMRVJfUE9XRVJfQllQQVNTX0RJUyk7CiAK QEAgLTMxMiwxNCArMzMyLDE0IEBAIHN0YXRpYyBpbnQgZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgICAgR0VOOV9QUkVFTVBU X0dQR1BVX0NPTU1BTkRfTEVWRUwpOwogCiAJLyogV2FDbGVhckhJWl9XTV9DSElDS0VOMzpieHQs Z2xrICovCi0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQorCWlmIChJU19HRU45X0xQKGk5MTUp KQogCQlXQV9TRVRfQklUX01BU0tFRChHRU45X1dNX0NISUNLRU4zLCBHRU45X0ZBQ1RPUl9JTl9D TFJfVkFMX0hJWik7Ci0KLQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBza2xfdHVuZV9pel9o YXNoaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIHNr bF90dW5lX2l6X2hhc2hpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogeworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1 X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OwogCXU4IHZhbHNbM10gPSB7IDAs IDAsIDAgfTsKIAl1bnNpZ25lZCBpbnQgaTsKIApAQCAtMzMwLDcgKzM1MCw3IEBAIHN0YXRpYyBp bnQgc2tsX3R1bmVfaXpfaGFzaGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJCSAqIE9ubHkgY29uc2lkZXIgc2xpY2VzIHdoZXJlIG9uZSwgYW5kIG9ubHkgb25lLCBzdWJz bGljZSBoYXMgNwogCQkgKiBFVXMKIAkJICovCi0JCWlmICghaXNfcG93ZXJfb2ZfMihJTlRFTF9J TkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV83ZXVbaV0pKQorCQlpZiAoIWlzX3Bvd2VyX29m XzIoSU5URUxfSU5GTyhpOTE1KS0+c3NldS5zdWJzbGljZV83ZXVbaV0pKQogCQkJY29udGludWU7 CiAKIAkJLyoKQEAgLTMzOSwxMiArMzU5LDEyIEBAIHN0YXRpYyBpbnQgc2tsX3R1bmVfaXpfaGFz aGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqCiAJCSAqIC0+ICAg IDAgPD0gc3MgPD0gMzsKIAkJICovCi0JCXNzID0gZmZzKElOVEVMX0lORk8oZGV2X3ByaXYpLT5z c2V1LnN1YnNsaWNlXzdldVtpXSkgLSAxOworCQlzcyA9IGZmcyhJTlRFTF9JTkZPKGk5MTUpLT5z c2V1LnN1YnNsaWNlXzdldVtpXSkgLSAxOwogCQl2YWxzW2ldID0gMyAtIHNzOwogCX0KIAogCWlm ICh2YWxzWzBdID09IDAgJiYgdmFsc1sxXSA9PSAwICYmIHZhbHNbMl0gPT0gMCkKLQkJcmV0dXJu IDA7CisJCXJldHVybjsKIAogCS8qIFR1bmUgSVogaGFzaGluZy4gU2VlIGludGVsX2RldmljZV9p bmZvX3J1bnRpbWVfaW5pdCgpICovCiAJV0FfU0VUX0ZJRUxEX01BU0tFRChHRU43X0dUX01PREUs CkBAIC0zNTQsMjggKzM3NCwxOSBAQCBzdGF0aWMgaW50IHNrbF90dW5lX2l6X2hhc2hpbmcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICAgIEdFTjlfSVpfSEFTSElORygy LCB2YWxzWzJdKSB8CiAJCQkgICAgR0VOOV9JWl9IQVNISU5HKDEsIHZhbHNbMV0pIHwKIAkJCSAg ICBHRU45X0laX0hBU0hJTkcoMCwgdmFsc1swXSkpOwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRp YyBpbnQgc2tsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3N0YXRpYyB2b2lkIHNrbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW50IHJldDsKLQotCXJldCA9IGdlbjlfY3R4X3dv cmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQly ZXR1cm4gc2tsX3R1bmVfaXpfaGFzaGluZyhkZXZfcHJpdik7CisJZ2VuOV9jdHhfd29ya2Fyb3Vu ZHNfaW5pdChlbmdpbmUpOworCXNrbF90dW5lX2l6X2hhc2hpbmcoZW5naW5lKTsKIH0KIAotc3Rh dGljIGludCBieHRfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQorc3RhdGljIHZvaWQgYnh0X2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpbnQgcmV0OworCXN0cnVjdCBpOTE1X3dhX2xp c3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OwogCi0JcmV0ID0gZ2VuOV9jdHhfd29ya2Fy b3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlnZW45X2N0 eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CiAKIAkvKiBXYURpc2FibGVUaHJlYWRTdGFsbERv cENsb2NrR2F0aW5nOmJ4dCAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjhfUk9XX0NISUNLRU4s CkBAIC0zODQsNTIgKzM5NSw0MSBAQCBzdGF0aWMgaW50IGJ4dF9jdHhfd29ya2Fyb3VuZHNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogV2FUb0VuYWJsZUh3Rml4 Rm9yUHVzaENvbnN0SFdCdWc6Ynh0ICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoQ09NTU9OX1NMSUNF X0NISUNLRU4yLAogCQkJICBHRU44X1NCRV9ESVNBQkxFX1JFUExBWV9CVUZfT1BUSU1JWkFUSU9O KTsKLQotCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGtibF9jdHhfd29ya2Fyb3VuZHNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBrYmxfY3R4 X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlu dCByZXQ7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJ c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CiAKLQlyZXQg PSBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OworCWdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKIAogCS8qIFdhVG9F bmFibGVId0ZpeEZvclB1c2hDb25zdEhXQnVnOmtibCAqLwotCWlmIChJU19LQkxfUkVWSUQoZGV2 X3ByaXYsIEtCTF9SRVZJRF9DMCwgUkVWSURfRk9SRVZFUikpCisJaWYgKElTX0tCTF9SRVZJRChp OTE1LCBLQkxfUkVWSURfQzAsIFJFVklEX0ZPUkVWRVIpKQogCQlXQV9TRVRfQklUX01BU0tFRChD T01NT05fU0xJQ0VfQ0hJQ0tFTjIsCiAJCQkJICBHRU44X1NCRV9ESVNBQkxFX1JFUExBWV9CVUZf T1BUSU1JWkFUSU9OKTsKIAogCS8qIFdhRGlzYWJsZVNiZUNhY2hlRGlzcGF0Y2hQb3J0U2hhcmlu ZzprYmwgKi8KIAlXQV9TRVRfQklUX01BU0tFRChHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tFTjEsCiAJ CQkgIEdFTjdfU0JFX1NTX0NBQ0hFX0RJU1BBVENIX1BPUlRfU0hBUklOR19ESVNBQkxFKTsKLQot CXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGdsa19jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBnbGtfY3R4X3dvcmth cm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWludCByZXQ7 CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CiAKLQly ZXQgPSBnZW45X2N0eF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCWdlbjlfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lKTsKIAogCS8qIFdh VG9FbmFibGVId0ZpeEZvclB1c2hDb25zdEhXQnVnOmdsayAqLwogCVdBX1NFVF9CSVRfTUFTS0VE KENPTU1PTl9TTElDRV9DSElDS0VOMiwKIAkJCSAgR0VOOF9TQkVfRElTQUJMRV9SRVBMQVlfQlVG X09QVElNSVpBVElPTik7Ci0KLQlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjZmxfY3R4X3dv cmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGlj IHZvaWQgY2ZsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKLQlpbnQgcmV0OworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUt PmN0eF93YV9saXN0OwogCi0JcmV0ID0gZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJp dik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlnZW45X2N0eF93b3JrYXJvdW5kc19pbml0 KGVuZ2luZSk7CiAKIAkvKiBXYVRvRW5hYmxlSHdGaXhGb3JQdXNoQ29uc3RIV0J1ZzpjZmwgKi8K IAlXQV9TRVRfQklUX01BU0tFRChDT01NT05fU0xJQ0VfQ0hJQ0tFTjIsCkBAIC00MzgsMTggKzQz OCwxOSBAQCBzdGF0aWMgaW50IGNmbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogV2FEaXNhYmxlU2JlQ2FjaGVEaXNwYXRjaFBvcnRT aGFyaW5nOmNmbCAqLwogCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjdfSEFMRl9TTElDRV9DSElDS0VO MSwKIAkJCSAgR0VON19TQkVfU1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUp OwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY25sX2N0eF93b3JrYXJvdW5kc19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGNubF9jdHhf d29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVf d2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CisKIAkvKiBXYUZvcmNlQ29udGV4 dFNhdmVSZXN0b3JlTm9uQ29oZXJlbnQ6Y25sICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoQ05MX0hE Q19DSElDS0VOMCwKIAkJCSAgSERDX0ZPUkNFX0NPTlRFWFRfU0FWRV9SRVNUT1JFX05PTl9DT0hF UkVOVCk7CiAKIAkvKiBXYVRocm90dGxlRVVQZXJmVG9Bdm9pZFREQmFja1ByZXNzdXJlOmNubChw cmUtcHJvZCkgKi8KLQlpZiAoSVNfQ05MX1JFVklEKGRldl9wcml2LCBDTkxfUkVWSURfQjAsIENO TF9SRVZJRF9CMCkpCisJaWYgKElTX0NOTF9SRVZJRChpOTE1LCBDTkxfUkVWSURfQjAsIENOTF9S RVZJRF9CMCkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjhfUk9XX0NISUNLRU4sIFRIUk9UVExF XzEyXzUpOwogCiAJLyogV2FEaXNhYmxlUmVwbGF5QnVmZmVyQmFua0FyYml0cmF0aW9uT3B0aW1p emF0aW9uOmNubCAqLwpAQCAtNDU3LDcgKzQ1OCw3IEBAIHN0YXRpYyBpbnQgY25sX2N0eF93b3Jr YXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAgR0VO OF9TQkVfRElTQUJMRV9SRVBMQVlfQlVGX09QVElNSVpBVElPTik7CiAKIAkvKiBXYURpc2FibGVF bmhhbmNlZFNCRVZlcnRleENhY2hpbmc6Y25sIChwcmUtcHJvZCkgKi8KLQlpZiAoSVNfQ05MX1JF VklEKGRldl9wcml2LCAwLCBDTkxfUkVWSURfQjApKQorCWlmIChJU19DTkxfUkVWSUQoaTkxNSwg MCwgQ05MX1JFVklEX0IwKSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoQ09NTU9OX1NMSUNFX0NISUNL RU4yLAogCQkJCSAgR0VOOF9DU0MyX1NCRV9WVUVfQ0FDSEVfQ09OU0VSVkFUSVZFKTsKIApAQCAt NDc3LDE2ICs0NzgsMTcgQEAgc3RhdGljIGludCBjbmxfY3R4X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJLyogV2FEaXNhYmxlRWFybHlFT1Q6 Y25sICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoR0VOOF9ST1dfQ0hJQ0tFTiwgRElTQUJMRV9FQVJM WV9FT1QpOwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaWNsX2N0eF93b3JrYXJvdW5k c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGlj bF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0 IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+Y3R4X3dhX2xpc3Q7CisKIAkvKiBXYV8xNjA0 MzcwNTg1OmljbCAocHJlLXByb2QpCiAJICogRm9ybWVybHkga25vd24gYXMgV2FQdXNoQ29uc3Rh bnREZXJlZmVyZW5jZUhvbGREaXNhYmxlCiAJICovCi0JaWYgKElTX0lDTF9SRVZJRChkZXZfcHJp diwgSUNMX1JFVklEX0EwLCBJQ0xfUkVWSURfQjApKQorCWlmIChJU19JQ0xfUkVWSUQoaTkxNSwg SUNMX1JFVklEX0EwLCBJQ0xfUkVWSURfQjApKQogCQlXQV9TRVRfQklUX01BU0tFRChHRU43X1JP V19DSElDS0VOMiwKIAkJCQkgIFBVU0hfQ09OU1RBTlRfREVSRUZfRElTQUJMRSk7CiAKQEAgLTUw Miw3ICs1MDQsNyBAQCBzdGF0aWMgaW50IGljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogV2FfMjAwNjYxMTA0NzppY2wgKHByZS1w cm9kKQogCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhRGlzYWJsZUltcHJvdmVkVGRsQ2xrR2F0aW5n CiAJICovCi0JaWYgKElTX0lDTF9SRVZJRChkZXZfcHJpdiwgSUNMX1JFVklEX0EwLCBJQ0xfUkVW SURfQTApKQorCWlmIChJU19JQ0xfUkVWSUQoaTkxNSwgSUNMX1JFVklEX0EwLCBJQ0xfUkVWSURf QTApKQogCQlXQV9TRVRfQklUX01BU0tFRChHRU43X1JPV19DSElDS0VOMiwKIAkJCQkgIEdFTjEx X1RETF9DTE9DS19HQVRJTkdfRklYX0RJU0FCTEUpOwogCkBAIC01MTEsNzAgKzUxMyw2NyBAQCBz dGF0aWMgaW50IGljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJCQkgIEdFTjExX1NUQVRFX0NBQ0hFX1JFRElSRUNUX1RPX0NTKTsKIAog CS8qIFdhXzIwMDY2NjUxNzM6aWNsIChwcmUtcHJvZCkgKi8KLQlpZiAoSVNfSUNMX1JFVklEKGRl dl9wcml2LCBJQ0xfUkVWSURfQTAsIElDTF9SRVZJRF9BMCkpCisJaWYgKElTX0lDTF9SRVZJRChp OTE1LCBJQ0xfUkVWSURfQTAsIElDTF9SRVZJRF9BMCkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKEdF TjExX0NPTU1PTl9TTElDRV9DSElDS0VOMywKIAkJCQkgIEdFTjExX0JMRU5EX0VNQl9GSVhfRElT QUJMRV9JTl9SQ0MpOwotCi0JcmV0dXJuIDA7CiB9CiAKLWludCBpbnRlbF9jdHhfd29ya2Fyb3Vu ZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit2b2lkIGludGVsX2Vu Z2luZV9pbml0X2N0eF93YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaW50 IGVyciA9IDA7Ci0KLQlkZXZfcHJpdi0+d29ya2Fyb3VuZHMuY291bnQgPSAwOwotCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA4KQotCQllcnIgPSAwOwotCWVsc2UgaWYgKElTX0JST0FEV0VM TChkZXZfcHJpdikpCi0JCWVyciA9IGJkd19jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7 Ci0JZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCWVyciA9IGNodl9jdHhfd29y a2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikp Ci0JCWVyciA9IHNrbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Ci0JZWxzZSBpZiAo SVNfQlJPWFRPTihkZXZfcHJpdikpCi0JCWVyciA9IGJ4dF9jdHhfd29ya2Fyb3VuZHNfaW5pdChk ZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQotCQllcnIgPSBrYmxf Y3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKQotCQllcnIgPSBnbGtfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwot CWVsc2UgaWYgKElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKQotCQllcnIgPSBjZmxfY3R4X3dvcmth cm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYp KQotCQllcnIgPSBjbmxfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYg KElTX0lDRUxBS0UoZGV2X3ByaXYpKQotCQllcnIgPSBpY2xfY3R4X3dvcmthcm91bmRzX2luaXQo ZGV2X3ByaXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1 OworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPmN0eF93YV9saXN0OworCisJ d2FfaW5pdF9zdGFydCh3YWwsICJjb250ZXh0Iik7CisKKwlpZiAoSU5URUxfR0VOKGk5MTUpIDwg OCkKKwkJcmV0dXJuOworCWVsc2UgaWYgKElTX0JST0FEV0VMTChpOTE1KSkKKwkJYmR3X2N0eF93 b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CisJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhpOTE1KSkK KwkJY2h2X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CisJZWxzZSBpZiAoSVNfU0tZTEFL RShpOTE1KSkKKwkJc2tsX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CisJZWxzZSBpZiAo SVNfQlJPWFRPTihpOTE1KSkKKwkJYnh0X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7CisJ ZWxzZSBpZiAoSVNfS0FCWUxBS0UoaTkxNSkpCisJCWtibF9jdHhfd29ya2Fyb3VuZHNfaW5pdChl bmdpbmUpOworCWVsc2UgaWYgKElTX0dFTUlOSUxBS0UoaTkxNSkpCisJCWdsa19jdHhfd29ya2Fy b3VuZHNfaW5pdChlbmdpbmUpOworCWVsc2UgaWYgKElTX0NPRkZFRUxBS0UoaTkxNSkpCisJCWNm bF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOworCWVsc2UgaWYgKElTX0NBTk5PTkxBS0Uo aTkxNSkpCisJCWNubF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOworCWVsc2UgaWYgKElT X0lDRUxBS0UoaTkxNSkpCisJCWljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUpOwogCWVs c2UKLQkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihkZXZfcHJpdikpOwotCWlmIChlcnIpCi0JCXJl dHVybiBlcnI7CisJCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oaTkxNSkpOwogCi0JRFJNX0RFQlVH X0RSSVZFUigiTnVtYmVyIG9mIGNvbnRleHQgc3BlY2lmaWMgdy9hOiAlZFxuIiwKLQkJCSBkZXZf cHJpdi0+d29ya2Fyb3VuZHMuY291bnQpOwotCXJldHVybiAwOworCXdhX2luaXRfZmluaXNoKHdh bCk7CiB9CiAKLWludCBpbnRlbF9jdHhfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKK2ludCBpbnRlbF9lbmdpbmVfZW1pdF9jdHhfd2Eoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCiB7Ci0Jc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcnEtPmk5MTUtPndvcmth cm91bmRzOworCXN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZycS0+ZW5naW5lLT5jdHhfd2Ff bGlzdDsKKwlzdHJ1Y3QgaTkxNV93YSAqd2E7CisJdW5zaWduZWQgaW50IGk7CiAJdTMyICpjczsK LQlpbnQgcmV0LCBpOworCWludCByZXQ7CiAKLQlpZiAody0+Y291bnQgPT0gMCkKKwlpZiAod2Fs LT5jb3VudCA9PSAwKQogCQlyZXR1cm4gMDsKIAogCXJldCA9IHJxLT5lbmdpbmUtPmVtaXRfZmx1 c2gocnEsIEVNSVRfQkFSUklFUik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWNzID0g aW50ZWxfcmluZ19iZWdpbihycSwgKHctPmNvdW50ICogMiArIDIpKTsKKwljcyA9IGludGVsX3Jp bmdfYmVnaW4ocnEsICh3YWwtPmNvdW50ICogMiArIDIpKTsKIAlpZiAoSVNfRVJSKGNzKSkKIAkJ cmV0dXJuIFBUUl9FUlIoY3MpOwogCi0JKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5j b3VudCk7Ci0JZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKyspIHsKLQkJKmNzKysgPSB3LT5y ZWdbaV0uYWRkcjsKLQkJKmNzKysgPSB3LT5yZWdbaV0udmFsdWU7CisJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTSh3YWwtPmNvdW50KTsKKwlmb3IgKGkgPSAwLCB3YSA9IHdhbC0+bGlzdDsg aSA8IHdhbC0+Y291bnQ7IGkrKywgd2ErKykgeworCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zm c2V0KHdhLT5yZWcpOworCQkqY3MrKyA9IHdhLT52YWw7CiAJfQogCSpjcysrID0gTUlfTk9PUDsK IApAQCAtNTg3LDMzICs1ODYsNiBAQCBpbnQgaW50ZWxfY3R4X3dvcmthcm91bmRzX2VtaXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkCi13YWxf YWRkKHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgY29uc3Qgc3RydWN0IGk5MTVfd2EgKndhKQot ewotCWNvbnN0IHVuc2lnbmVkIGludCBncm93ID0gMSA8PCA0OwotCi0JR0VNX0JVR19PTighaXNf cG93ZXJfb2ZfMihncm93KSk7Ci0KLQlpZiAoSVNfQUxJR05FRCh3YWwtPmNvdW50LCBncm93KSkg eyAvKiBFaXRoZXIgdW5pbml0aWFsaXplZCBvciBmdWxsLiAqLwotCQlzdHJ1Y3QgaTkxNV93YSAq bGlzdDsKLQotCQlsaXN0ID0ga2NhbGxvYyhBTElHTih3YWwtPmNvdW50ICsgMSwgZ3JvdyksIHNp emVvZigqd2EpLAotCQkJICAgICAgIEdGUF9LRVJORUwpOwotCQlpZiAoIWxpc3QpIHsKLQkJCURS TV9FUlJPUigiTm8gc3BhY2UgZm9yIHdvcmthcm91bmQgaW5pdCFcbiIpOwotCQkJcmV0dXJuOwot CQl9Ci0KLQkJaWYgKHdhbC0+bGlzdCkKLQkJCW1lbWNweShsaXN0LCB3YWwtPmxpc3QsIHNpemVv Zigqd2EpICogd2FsLT5jb3VudCk7Ci0KLQkJd2FsLT5saXN0ID0gbGlzdDsKLQl9Ci0KLQltZW1j cHkoJndhbC0+bGlzdFt3YWwtPmNvdW50XSwgd2EsIHNpemVvZigqd2EpKTsKLQl3YWwtPmNvdW50 Kys7Ci19Ci0KIHN0YXRpYyB2b2lkCiB3YV9tYXNrZWRfZW4oc3RydWN0IGk5MTVfd2FfbGlzdCAq d2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKIHsKQEAgLTYyMyw3ICs1OTUsNyBAQCB3YV9t YXNrZWRfZW4oc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIHZh bCkKIAkJLnZhbCA9IF9NQVNLRURfQklUX0VOQUJMRSh2YWwpCiAJfTsKIAotCXdhbF9hZGQod2Fs LCAmd2EpOworCV93YV9hZGQod2FsLCAmd2EpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjM2LDcg KzYwOCw3IEBAIHdhX3dyaXRlX21hc2tlZF9vcihzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwsIGk5 MTVfcmVnX3QgcmVnLCB1MzIgbWFzaywKIAkJLnZhbCA9IHZhbAogCX07CiAKLQl3YWxfYWRkKHdh bCwgJndhKTsKKwlfd2FfYWRkKHdhbCwgJndhKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEwMjAs NyArOTkyLDcgQEAgd2hpdGVsaXN0X3JlZyhzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwsIGk5MTVf cmVnX3QgcmVnKQogCWlmIChHRU1fREVCVUdfV0FSTl9PTih3YWwtPmNvdW50ID49IFJJTkdfTUFY X05PTlBSSVZfU0xPVFMpKQogCQlyZXR1cm47CiAKLQl3YWxfYWRkKHdhbCwgJndhKTsKKwlfd2Ff YWRkKHdhbCwgJndhKTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuOV93aGl0ZWxpc3RfYnVpbGQoc3Ry dWN0IGk5MTVfd2FfbGlzdCAqdykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3dvcmthcm91bmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5k cy5oCmluZGV4IGJjNmFhNTAzZjZjNi4uNjUxMDRhMGJmN2E0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3dvcmthcm91bmRzLmgKQEAgLTE4LDYgKzE4LDcgQEAgc3RydWN0IGk5MTVfd2Eg ewogc3RydWN0IGk5MTVfd2FfbGlzdCB7CiAJY29uc3QgY2hhcgkqbmFtZTsKIAl1bnNpZ25lZCBp bnQgCWNvdW50OworCXVuc2lnbmVkIGludAl3YV9jb3VudDsKIAlzdHJ1Y3QgaTkxNV93YQkqbGlz dDsKIH07CiAKQEAgLTI3LDggKzI4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX3dhX2xp c3RfZnJlZShzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJbWVtc2V0KHdhbCwgMCwgc2l6ZW9m KCp3YWwpKTsKIH0KIAotaW50IGludGVsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci1pbnQgaW50ZWxfY3R4X3dvcmthcm91bmRzX2VtaXQo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwordm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2Eo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK2ludCBpbnRlbF9lbmdpbmVfZW1pdF9j dHhfd2Eoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogCiB2b2lkIGludGVsX2d0X2luaXRfd29y a2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxf Z3RfYXBwbHlfd29ya2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK LS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==