From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 06/21] drm/i915: Simplify ELSP queue request tracking Date: Mon, 5 Sep 2016 14:04:23 +0100 Message-ID: <20160905130438.31046-7-chris@chris-wilson.co.uk> References: <20160905130438.31046-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C6166E3B4 for ; Mon, 5 Sep 2016 13:04:52 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id l65so5530447wmf.3 for ; Mon, 05 Sep 2016 06:04:52 -0700 (PDT) In-Reply-To: <20160905130438.31046-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org RW11bGF0ZSBIVyB0byB0cmFjayBhbmQgbWFuYWdlIEVMU1AgcXVldWUuIEEgc2V0IG9mIFNXIHBv cnRzIGFyZSBkZWZpbmVkCmFuZCByZXF1ZXN0cyBhcmUgYXNzaWduZWQgdG8gdGhlc2UgcG9ydHMg YmVmb3JlIHN1Ym1pdHRpbmcgdGhlbSB0byBIVy4gVGhpcwpoZWxwcyBpbiBjbGVhbmluZyB1cCBp bmNvbXBsZXRlIHJlcXVlc3RzIGR1cmluZyByZXNldCByZWNvdmVyeSBlYXNpZXIKZXNwZWNpYWxs eSBhZnRlciBlbmdpbmUgcmVzZXQgYnkgZGVjb3VwbGluZyBlbHNwIHF1ZXVlIG1hbmFnZW1lbnQu IFRoaXMKd2lsbCBiZWNvbWUgbW9yZSBjbGVhciBpbiB0aGUgbmV4dCBwYXRjaC4KCkluIHRoZSBl bmdpbmUgcmVzZXQgY2FzZSB3ZSB3YW50IHRvIHJlc3VtZSB3aGVyZSB3ZSBsZWZ0LW9mZiBhZnRl ciBza2lwcGluZwp0aGUgaW5jb21wbGV0ZSBiYXRjaCB3aGljaCByZXF1aXJlcyBjaGVja2luZyB0 aGUgZWxzcCBxdWV1ZSwgcmVtb3ZpbmcKZWxlbWVudCBhbmQgZml4aW5nIGVsc3Bfc3VibWl0dGVk IGNvdW50cyBpbiBzb21lIGNhc2VzLiBJbnN0ZWFkIG9mIGRpcmVjdGx5Cm1hbmlwdWxhdGluZyB0 aGUgZWxzcCBxdWV1ZSBmcm9tIHJlc2V0IHBhdGggd2UgY2FuIGV4YW1pbmUgdGhlc2UgcG9ydHMs IGZpeAp1cCByaW5nYnVmZmVyIHBvaW50ZXJzIHVzaW5nIHRoZSBpbmNvbXBsZXRlIHJlcXVlc3Qg YW5kIHJlc3RhcnQgc3VibWlzc2lvbnMKYWdhaW4gYWZ0ZXIgcmVzZXQuCgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eu a3VvcHBhbGFAaW50ZWwuY29tPgpDYzogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51 eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgpMaW5rOiBodHRwOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9t c2dpZC8xNDcwNDE0NjA3LTMyNDUzLTMtZ2l0LXNlbmQtZW1haWwtYXJ1bi5zaWx1dmVyeUBsaW51 eC5pbnRlbC5jb20KUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgIDEzICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgfCAgIDEgLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oIHwgIDIxICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCA0MDIgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICB8ICAgMiAtCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDcgKy0KIDcgZmlsZXMg Y2hhbmdlZCwgMTg0IGluc2VydGlvbnMoKyksIDI2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDNmZGU1MDc5YjUzNi4uYTU0ZmMwNWI5NTEyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMjA1MSw3ICsyMDUxLDcgQEAgc3RhdGlj IGludCBpOTE1X2V4ZWNsaXN0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCXN0 YXR1c19wb2ludGVyID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKGVuZ2luZSkp OwogCQlzZXFfcHJpbnRmKG0sICJcdFN0YXR1cyBwb2ludGVyOiAweCUwOFhcbiIsIHN0YXR1c19w b2ludGVyKTsKIAotCQlyZWFkX3BvaW50ZXIgPSBlbmdpbmUtPm5leHRfY29udGV4dF9zdGF0dXNf YnVmZmVyOworCQlyZWFkX3BvaW50ZXIgPSBHRU44X0NTQl9SRUFEX1BUUihzdGF0dXNfcG9pbnRl cik7CiAJCXdyaXRlX3BvaW50ZXIgPSBHRU44X0NTQl9XUklURV9QVFIoc3RhdHVzX3BvaW50ZXIp OwogCQlpZiAocmVhZF9wb2ludGVyID4gd3JpdGVfcG9pbnRlcikKIAkJCXdyaXRlX3BvaW50ZXIg Kz0gR0VOOF9DU0JfRU5UUklFUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDI0MDE4MTgx NzFmNS4uYjAwZmI4NTQ4ZDUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI1NzUsNiAr MjU3NSw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9jbGVhbnVwKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3Q7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7CiAKKwkvKiBFbnN1cmUgaXJxIGhh bmRsZXIgZmluaXNoZXMsIGFuZCBub3QgcnVuIGFnYWluLiAqLworCXRhc2tsZXRfa2lsbCgmZW5n aW5lLT5pcnFfdGFza2xldCk7CisKIAkvKiBNYXJrIGFsbCBwZW5kaW5nIHJlcXVlc3RzIGFzIGNv bXBsZXRlIHNvIHRoYXQgYW55IGNvbmN1cnJlbnQKIAkgKiAobG9ja2xlc3MpIGxvb2t1cCBkb2Vz bid0IHRyeSBhbmQgd2FpdCB1cG9uIHRoZSByZXF1ZXN0IGFzIHdlCiAJICogcmVzZXQgaXQuCkBA IC0yNTg4LDEwICsyNTkxLDEyIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9j bGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKi8KIAogCWlmIChpOTE1 LmVuYWJsZV9leGVjbGlzdHMpIHsKLQkJLyogRW5zdXJlIGlycSBoYW5kbGVyIGZpbmlzaGVzIG9y IGlzIGNhbmNlbGxlZC4gKi8KLQkJdGFza2xldF9raWxsKCZlbmdpbmUtPmlycV90YXNrbGV0KTsK LQotCQlpbnRlbF9leGVjbGlzdHNfY2FuY2VsX3JlcXVlc3RzKGVuZ2luZSk7CisJCXNwaW5fbG9j aygmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKKwkJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ZXhl Y2xpc3RfcXVldWUpOworCQlpOTE1X2dlbV9yZXF1ZXN0X3B1dChlbmdpbmUtPmV4ZWNsaXN0X3Bv cnRbMF0ucmVxdWVzdCk7CisJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KGVuZ2luZS0+ZXhlY2xpc3Rf cG9ydFsxXS5yZXF1ZXN0KTsKKwkJbWVtc2V0KGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCwgMCwgc2l6 ZW9mKGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCkpOworCQlzcGluX3VubG9jaygmZW5naW5lLT5leGVj bGlzdF9sb2NrKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVz dC5jCmluZGV4IDljYzA4YTFlNDNjNi4uZWM2MTNmZDVlMDFjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC00MDIsNyArNDAyLDYgQEAgaTkxNV9nZW1fcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJcmVxLT5wcmV2aW91c19j b250ZXh0ID0gTlVMTDsKIAlyZXEtPmZpbGVfcHJpdiA9IE5VTEw7CiAJcmVxLT5iYXRjaCA9IE5V TEw7Ci0JcmVxLT5lbHNwX3N1Ym1pdHRlZCA9IDA7CiAKIAkvKgogCSAqIFJlc2VydmUgc3BhY2Ug aW4gdGhlIHJpbmcgYnVmZmVyIGZvciBhbGwgdGhlIGNvbW1hbmRzIHJlcXVpcmVkIHRvCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKaW5kZXggMmZhYTNiYjRjMzliLi5hMjMx YmQzMThlZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKQEAgLTEz NywyNyArMTM3LDggQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKIAkvKiogZmlsZV9w cml2IGxpc3QgZW50cnkgZm9yIHRoaXMgcmVxdWVzdCAqLwogCXN0cnVjdCBsaXN0X2hlYWQgY2xp ZW50X2xpc3Q7CiAKLQkvKioKLQkgKiBUaGUgRUxTUCBvbmx5IGFjY2VwdHMgdHdvIGVsZW1lbnRz IGF0IGEgdGltZSwgc28gd2UgcXVldWUKLQkgKiBjb250ZXh0L3RhaWwgcGFpcnMgb24gYSBnaXZl biBxdWV1ZSAocmluZy0+ZXhlY2xpc3RfcXVldWUpIHVudGlsIHRoZQotCSAqIGhhcmR3YXJlIGlz IGF2YWlsYWJsZS4gVGhlIHF1ZXVlIHNlcnZlcyBhIGRvdWJsZSBwdXJwb3NlOiB3ZSBhbHNvIHVz ZQotCSAqIGl0IHRvIGtlZXAgdHJhY2sgb2YgdGhlIHVwIHRvIDIgY29udGV4dHMgY3VycmVudGx5 IGluIHRoZSBoYXJkd2FyZQotCSAqICh1c3VhbGx5IG9uZSBpbiBleGVjdXRpb24gYW5kIHRoZSBv dGhlciBxdWV1ZWQgdXAgYnkgdGhlIEdQVSk6IFdlCi0JICogb25seSByZW1vdmUgZWxlbWVudHMg ZnJvbSB0aGUgaGVhZCBvZiB0aGUgcXVldWUgd2hlbiB0aGUgaGFyZHdhcmUKLQkgKiBpbmZvcm1z IHVzIHRoYXQgYW4gZWxlbWVudCBoYXMgYmVlbiBjb21wbGV0ZWQuCi0JICoKLQkgKiBBbGwgYWNj ZXNzZXMgdG8gdGhlIHF1ZXVlIGFyZSBtZWRpYXRlZCBieSBhIHNwaW5sb2NrCi0JICogKHJpbmct PmV4ZWNsaXN0X2xvY2spLgotCSAqLwotCi0JLyoqIEV4ZWNsaXN0IGxpbmsgaW4gdGhlIHN1Ym1p c3Npb24gcXVldWUuKi8KKwkvKiogTGluayBpbiB0aGUgZXhlY2xpc3Qgc3VibWlzc2lvbiBxdWV1 ZSwgZ3VhcmRlZCBieSBleGVjbGlzdF9sb2NrLiAqLwogCXN0cnVjdCBsaXN0X2hlYWQgZXhlY2xp c3RfbGluazsKLQotCS8qKiBFeGVjbGlzdHMgbm8uIG9mIHRpbWVzIHRoaXMgcmVxdWVzdCBoYXMg YmVlbiBzZW50IHRvIHRoZSBFTFNQICovCi0JaW50IGVsc3Bfc3VibWl0dGVkOwotCi0JLyoqIEV4 ZWNsaXN0cyBjb250ZXh0IGhhcmR3YXJlIGlkLiAqLwotCXVuc2lnbmVkIGludCBjdHhfaHdfaWQ7 CiB9OwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGZlbmNlX29wcyBpOTE1X2ZlbmNlX29wczsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggN2JiNzQzZjc5ZDE4Li5hMzM2ODdkMjk0YjUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xNTYsNiArMTU2LDExIEBACiAjZGVmaW5lIEdF TjhfQ1RYX1NUQVRVU19DT01QTEVURQkoMSA8PCA0KQogI2RlZmluZSBHRU44X0NUWF9TVEFUVVNf TElURV9SRVNUT1JFCSgxIDw8IDE1KQogCisjZGVmaW5lIEdFTjhfQ1RYX1NUQVRVU19DT01QTEVU RURfTUFTSyBcCisJIChHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUgfCBcCisJICBHRU44X0NU WF9TVEFUVVNfUFJFRU1QVEVEIHwgXAorCSAgR0VOOF9DVFhfU1RBVFVTX0VMRU1FTlRfU1dJVENI KQorCiAjZGVmaW5lIENUWF9MUklfSEVBREVSXzAJCTB4MDEKICNkZWZpbmUgQ1RYX0NPTlRFWFRf Q09OVFJPTAkJMHgwMgogI2RlZmluZSBDVFhfUklOR19IRUFECQkJMHgwNApAQCAtMjYzLDEyICsy NjgsMTAgQEAgbG9naWNhbF9yaW5nX2luaXRfcGxhdGZvcm1faW52YXJpYW50cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZW5naW5lLT5pOTE1OwogCi0JaWYgKElTX0dFTjgoZGV2X3ByaXYpIHx8IElTX0dFTjko ZGV2X3ByaXYpKQotCQllbmdpbmUtPmlkbGVfbGl0ZV9yZXN0b3JlX3dhID0gfjA7Ci0KLQllbmdp bmUtPmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhID0gKElTX1NLTF9SRVZJRChkZXZfcHJpdiwgMCwg U0tMX1JFVklEX0IwKSB8fAotCQkJCQlJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJ RF9BMSkpICYmCi0JCQkJCShlbmdpbmUtPmlkID09IFZDUyB8fCBlbmdpbmUtPmlkID09IFZDUzIp OworCWVuZ2luZS0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EgPQorCQkoSVNfU0tMX1JFVklEKGRl dl9wcml2LCAwLCBTS0xfUkVWSURfQjApIHx8CisJCSBJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAs IEJYVF9SRVZJRF9BMSkpICYmCisJCShlbmdpbmUtPmlkID09IFZDUyB8fCBlbmdpbmUtPmlkID09 IFZDUzIpOwogCiAJZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0ZSA9IEdFTjhfQ1RYX1ZBTElEOwog CWlmIChJU19HRU44KGRldl9wcml2KSkKQEAgLTM1MSwxMSArMzU0LDExIEBAIGV4ZWNsaXN0c191 cGRhdGVfY29udGV4dF9wZHBzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgdTMyICpyZWdf c3RhdGUpCiAJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMCk7CiB9CiAKLXN0YXRp YyB2b2lkIGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJxKQorc3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpycSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSBycS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZycS0+Y3R4LT5lbmdp bmVbcnEtPmVuZ2luZS0+aWRdOwogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IHJxLT5j dHgtPnBwZ3R0OwotCXVpbnQzMl90ICpyZWdfc3RhdGUgPSBycS0+Y3R4LT5lbmdpbmVbZW5naW5l LT5pZF0ubHJjX3JlZ19zdGF0ZTsKKwl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNfcmVnX3N0YXRl OwogCiAJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBpbnRlbF9yaW5nX29mZnNldChycS0+ cmluZywgcnEtPnRhaWwpOwogCkBAIC0zNjYsMjYgKzM2OSwzNCBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKIAkg Ki8KIAlpZiAocHBndHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYp KQogCQlleGVjbGlzdHNfdXBkYXRlX2NvbnRleHRfcGRwcyhwcGd0dCwgcmVnX3N0YXRlKTsKKwor CXJldHVybiBjZS0+bHJjX2Rlc2M7CiB9CiAKLXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dy aXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLAotCQkJCSBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJxMSkKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcG9ydHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IHJxMC0+ZW5naW5lOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHJxMC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBl bmdpbmUtPmk5MTU7CisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNs aXN0X3BvcnQ7CiAJdTMyIF9faW9tZW0gKmVsc3AgPQogCQlkZXZfcHJpdi0+cmVncyArIGk5MTVf bW1pb19yZWdfb2Zmc2V0KFJJTkdfRUxTUChlbmdpbmUpKTsKIAl1NjQgZGVzY1syXTsKIAotCWlm IChycTEpIHsKLQkJZGVzY1sxXSA9IGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcihycTEtPmN0 eCwgcnExLT5lbmdpbmUpOwotCQlycTEtPmVsc3Bfc3VibWl0dGVkKys7CisJaWYgKCFwb3J0WzBd LmNvdW50KQorCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHBvcnRbMF0ucmVxdWVz dCwKKwkJCQkJCUlOVEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOworCWRlc2NbMF0gPSBleGVjbGlz dHNfdXBkYXRlX2NvbnRleHQocG9ydFswXS5yZXF1ZXN0KTsKKwllbmdpbmUtPnByZWVtcHRfd2Eg PSBwb3J0WzBdLmNvdW50Kys7IC8qIGJkdyBvbmx5PyBmaXhlZCBvbiBza2w/ICovCisKKwlpZiAo cG9ydFsxXS5yZXF1ZXN0KSB7CisJCUdFTV9CVUdfT04ocG9ydFsxXS5jb3VudCk7CisJCWV4ZWNs aXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocG9ydFsxXS5yZXF1ZXN0LAorCQkJCQkJSU5URUxf Q09OVEVYVF9TQ0hFRFVMRV9JTik7CisJCWRlc2NbMV0gPSBleGVjbGlzdHNfdXBkYXRlX2NvbnRl eHQocG9ydFsxXS5yZXF1ZXN0KTsKKwkJcG9ydFsxXS5jb3VudCA9IDE7CiAJfSBlbHNlIHsKIAkJ ZGVzY1sxXSA9IDA7CiAJfQotCi0JZGVzY1swXSA9IGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRv cihycTAtPmN0eCwgcnEwLT5lbmdpbmUpOwotCXJxMC0+ZWxzcF9zdWJtaXR0ZWQrKzsKKwlHRU1f QlVHX09OKGRlc2NbMF0gPT0gZGVzY1sxXSk7CiAKIAkvKiBZb3UgbXVzdCBhbHdheXMgd3JpdGUg Ym90aCBkZXNjcmlwdG9ycyBpbiB0aGUgb3JkZXIgYmVsb3cuICovCiAJd3JpdGVsKHVwcGVyXzMy X2JpdHMoZGVzY1sxXSksIGVsc3ApOwpAQCAtMzk2LDE0MSArNDA3LDEyNSBAQCBzdGF0aWMgdm9p ZCBleGVjbGlzdHNfZWxzcF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxMCwK IAl3cml0ZWwobG93ZXJfMzJfYml0cyhkZXNjWzBdKSwgZWxzcCk7CiB9CiAKLXN0YXRpYyB2b2lk IGV4ZWNsaXN0c19lbHNwX3N1Ym1pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJxMCwKLQkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTEpCitzdGF0 aWMgYm9vbCBjdHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihjb25zdCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJx MC0+aTkxNTsKLQl1bnNpZ25lZCBpbnQgZndfZG9tYWlucyA9IHJxMC0+ZW5naW5lLT5md19kb21h aW5zOwotCi0JZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHJxMCk7Ci0KLQlpZiAocnExKQotCQll eGVjbGlzdHNfdXBkYXRlX2NvbnRleHQocnExKTsKKwlyZXR1cm4gKElTX0VOQUJMRUQoQ09ORklH X0RSTV9JOTE1X0dWVCkgJiYKKwkJY3R4LT5leGVjbGlzdHNfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Np b24pOworfQogCi0Jc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKLQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9ja2VkKGRldl9wcml2LCBmd19kb21haW5zKTsKK3N0 YXRpYyBib29sIGNhbl9tZXJnZV9jdHgoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnBy ZXYsCisJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpuZXh0KQoreworCWlmIChw cmV2ICE9IG5leHQpCisJCXJldHVybiBmYWxzZTsKIAotCWV4ZWNsaXN0c19lbHNwX3dyaXRlKHJx MCwgcnExKTsKKwlpZiAoY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24ocHJldikpCisJCXJldHVy biBmYWxzZTsKIAotCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2X3ByaXYs IGZ3X2RvbWFpbnMpOwotCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsK KwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX3VucXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxMCA9IE5VTEwsICpyZXExID0gTlVMTDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKmN1cnNvciwgKnRtcDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1 cnNvciwgKmxhc3Q7CisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNs aXN0X3BvcnQ7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKKworCWxhc3QgPSBwb3J0LT5yZXF1ZXN0 OworCWlmIChsYXN0KQorCQkvKiBXYUlkbGVMaXRlUmVzdG9yZTpiZHcsc2tsCisJCSAqIEFwcGx5 IHRoZSB3YSBOT09QcyB0byBwcmV2ZW50IHJpbmc6SEVBRCA9PSByZXE6VEFJTAorCQkgKiBhcyB3 ZSByZXN1Ym1pdCB0aGUgcmVxdWVzdC4gU2VlIGdlbjhfZW1pdF9yZXF1ZXN0KCkKKwkJICogZm9y IHdoZXJlIHdlIHByZXBhcmUgdGhlIHBhZGRpbmcgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKKwkJICog cmVxdWVzdC4KKwkJICovCisJCWxhc3QtPnRhaWwgPSBsYXN0LT53YV90YWlsOwogCi0JYXNzZXJ0 X3NwaW5fbG9ja2VkKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOworCUdFTV9CVUdfT04ocG9ydFsx XS5yZXF1ZXN0KTsKIAotCS8qCi0JICogSWYgaXJxcyBhcmUgbm90IGFjdGl2ZSBnZW5lcmF0ZSBh IHdhcm5pbmcgYXMgYmF0Y2hlcyB0aGF0IGZpbmlzaAotCSAqIHdpdGhvdXQgdGhlIGlycXMgbWF5 IGdldCBsb3N0IGFuZCBhIEdQVSBIYW5nIG1heSBvY2N1ci4KKwkvKiBIYXJkd2FyZSBzdWJtaXNz aW9uIGlzIHRocm91Z2ggMiBwb3J0cy4gQ29uY2VwdHVhbGx5IGVhY2ggcG9ydAorCSAqIGhhcyBh IChSSU5HX1NUQVJULCBSSU5HX0hFQUQsIFJJTkdfVEFJTCkgdHVwbGUuIFJJTkdfU1RBUlQgaXMK KwkgKiBzdGF0aWMgZm9yIGEgY29udGV4dCwgYW5kIHVuaXF1ZSB0byBlYWNoLCBzbyB3ZSBvbmx5 IGV4ZWN1dGUKKwkgKiByZXF1ZXN0cyBiZWxvbmdpbmcgdG8gYSBzaW5nbGUgY29udGV4dCBmcm9t IGVhY2ggcmluZy4gUklOR19IRUFECisJICogaXMgbWFpbnRhaW5lZCBieSB0aGUgQ1MgaW4gdGhl IGNvbnRleHQgaW1hZ2UsIGl0IG1hcmtzIHRoZSBwbGFjZQorCSAqIHdoZXJlIGl0IGdvdCB1cCB0 byBsYXN0IHRpbWUsIGFuZCB0aHJvdWdoIFJJTkdfVEFJTCB3ZSB0ZWxsIHRoZSBDUworCSAqIHdo ZXJlIHdlIHdhbnQgdG8gZXhlY3V0ZSB1cCB0byB0aGlzIHRpbWUuCisJICoKKwkgKiBJbiB0aGlz IGxpc3QgdGhlIHJlcXVlc3RzIGFyZSBpbiBvcmRlciBvZiBleGVjdXRpb24uIENvbnNlY3V0aXZl CisJICogcmVxdWVzdHMgZnJvbSB0aGUgc2FtZSBjb250ZXh0IGFyZSBhZGphY2VudCBpbiB0aGUg cmluZ2J1ZmZlci4gV2UKKwkgKiBjYW4gY29tYmluZSB0aGVzZSByZXF1ZXN0cyBpbnRvIGEgc2lu Z2xlIFJJTkdfVEFJTCB1cGRhdGU6CisJICoKKwkgKiAgICAgICAgICAgICAgUklOR19IRUFELi4u cmVxMS4uLnJlcTIKKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4tIFJJ TkdfVEFJTAorCSAqIHNpbmNlIHRvIGV4ZWN1dGUgcmVxMiB0aGUgQ1MgbXVzdCBmaXJzdCBleGVj dXRlIHJlcTEuCisJICoKKwkgKiBPdXIgZ29hbCB0aGVuIGlzIHRvIHBvaW50IGVhY2ggcG9ydCB0 byB0aGUgZW5kIG9mIGEgY29uc2VjdXRpdmUKKwkgKiBzZXF1ZW5jZSBvZiByZXF1ZXN0cyBhcyBi ZWluZyB0aGUgbW9zdCBvcHRpbWFsIChmZXdlc3Qgd2FrZSB1cHMKKwkgKiBhbmQgY29udGV4dCBz d2l0Y2hlcykgc3VibWlzc2lvbi4KIAkgKi8KLQlXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQo ZW5naW5lLT5pOTE1KSk7Ci0KLQkvKiBUcnkgdG8gcmVhZCBpbiBwYWlycyAqLwotCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShjdXJzb3IsIHRtcCwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUsCi0J CQkJIGV4ZWNsaXN0X2xpbmspIHsKLQkJaWYgKCFyZXEwKSB7Ci0JCQlyZXEwID0gY3Vyc29yOwot CQl9IGVsc2UgaWYgKHJlcTAtPmN0eCA9PSBjdXJzb3ItPmN0eCkgewotCQkJLyogU2FtZSBjdHg6 IGlnbm9yZSBmaXJzdCByZXF1ZXN0LCBhcyBzZWNvbmQgcmVxdWVzdAotCQkJICogd2lsbCB1cGRh dGUgdGFpbCBwYXN0IGZpcnN0IHJlcXVlc3QncyB3b3JrbG9hZCAqLwotCQkJY3Vyc29yLT5lbHNw X3N1Ym1pdHRlZCA9IHJlcTAtPmVsc3Bfc3VibWl0dGVkOwotCQkJbGlzdF9kZWwoJnJlcTAtPmV4 ZWNsaXN0X2xpbmspOwotCQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxMCk7Ci0JCQlyZXEwID0g Y3Vyc29yOwotCQl9IGVsc2UgewotCQkJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0dW VCkpIHsKLQkJCQkvKgotCQkJCSAqIHJlcTAgKGFmdGVyIG1lcmdlZCkgY3R4IHJlcXVpcmVzIHNp bmdsZQotCQkJCSAqIHN1Ym1pc3Npb24sIHN0b3AgcGlja2luZwotCQkJCSAqLwotCQkJCWlmIChy ZXEwLT5jdHgtPmV4ZWNsaXN0c19mb3JjZV9zaW5nbGVfc3VibWlzc2lvbikKLQkJCQkJYnJlYWs7 Ci0JCQkJLyoKLQkJCQkgKiByZXEwIGN0eCBkb2Vzbid0IHJlcXVpcmUgc2luZ2xlIHN1Ym1pc3Np b24sCi0JCQkJICogYnV0IG5leHQgcmVxIGN0eCByZXF1aXJlcywgc3RvcCBwaWNraW5nCi0JCQkJ ICovCi0JCQkJaWYgKGN1cnNvci0+Y3R4LT5leGVjbGlzdHNfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Np b24pCi0JCQkJCWJyZWFrOwotCQkJfQotCQkJcmVxMSA9IGN1cnNvcjsKLQkJCVdBUk5fT04ocmVx MS0+ZWxzcF9zdWJtaXR0ZWQpOwotCQkJYnJlYWs7Ci0JCX0KLQl9CiAKLQlpZiAodW5saWtlbHko IXJlcTApKQotCQlyZXR1cm47Ci0KLQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJl cTAsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOwotCi0JaWYgKHJlcTEpCi0JCWV4ZWNsaXN0 c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocmVxMSwKLQkJCQkJCUlOVEVMX0NPTlRFWFRfU0NIRURV TEVfSU4pOwotCi0JaWYgKHJlcTAtPmVsc3Bfc3VibWl0dGVkICYgZW5naW5lLT5pZGxlX2xpdGVf cmVzdG9yZV93YSkgewotCQkvKgotCQkgKiBXYUlkbGVMaXRlUmVzdG9yZTogbWFrZSBzdXJlIHdl IG5ldmVyIGNhdXNlIGEgbGl0ZSByZXN0b3JlCi0JCSAqIHdpdGggSEVBRD09VEFJTC4KKwlzcGlu X2xvY2soJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjdXJz b3IsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLCBleGVjbGlzdF9saW5rKSB7CisJCS8qIENhbiB3 ZSBjb21iaW5lIHRoaXMgcmVxdWVzdCB3aXRoIHRoZSBjdXJyZW50IHBvcnQ/IEl0IGhhcyB0bwor CQkgKiBiZSB0aGUgc2FtZSBjb250ZXh0L3JpbmdidWZmZXIgYW5kIG5vdCBoYXZlIGFueSBleGNl cHRpb25zCisJCSAqIChlLmcuIEdWVCBzYXlpbmcgbmV2ZXIgdG8gY29tYmluZSBjb250ZXh0cyku CiAJCSAqCi0JCSAqIEFwcGx5IHRoZSB3YSBOT09QUyB0byBwcmV2ZW50IHJpbmc6SEVBRCA9PSBy ZXE6VEFJTCBhcyB3ZQotCQkgKiByZXN1Ym1pdCB0aGUgcmVxdWVzdC4gU2VlIGdlbjhfZW1pdF9y ZXF1ZXN0KCkgZm9yIHdoZXJlIHdlCi0JCSAqIHByZXBhcmUgdGhlIHBhZGRpbmcgYWZ0ZXIgdGhl IGVuZCBvZiB0aGUgcmVxdWVzdC4KKwkJICogSWYgd2UgY2FuIGNvbWJpbmUgdGhlIHJlcXVlc3Rz LCB3ZSBjYW4gZXhlY3V0ZSBib3RoIGJ5CisJCSAqIHVwZGF0aW5nIHRoZSBSSU5HX1RBSUwgdG8g cG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgc2Vjb25kCisJCSAqIHJlcXVlc3QsIGFuZCBzbyB3ZSBu ZXZlciBuZWVkIHRvIHRlbGwgdGhlIGhhcmR3YXJlIGFib3V0CisJCSAqIHRoZSBmaXJzdC4KIAkJ ICovCi0JCXJlcTAtPnRhaWwgPSByZXEwLT53YV90YWlsOworCQlpZiAobGFzdCAmJiAhY2FuX21l cmdlX2N0eChjdXJzb3ItPmN0eCwgbGFzdC0+Y3R4KSkgeworCQkJLyogSWYgd2UgYXJlIG9uIHRo ZSBzZWNvbmQgcG9ydCBhbmQgY2Fubm90IGNvbWJpbmUKKwkJCSAqIHRoaXMgcmVxdWVzdCB3aXRo IHRoZSBsYXN0LCB0aGVuIHdlIGFyZSBkb25lLgorCQkJICovCisJCQlpZiAocG9ydCAhPSBlbmdp bmUtPmV4ZWNsaXN0X3BvcnQpCisJCQkJYnJlYWs7CisKKwkJCS8qIElmIEdWVCBvdmVycmlkZXMg dXMgd2Ugb25seSBldmVyIHN1Ym1pdCBwb3J0WzBdLAorCQkJICogbGVhdmluZyBwb3J0WzFdIGVt cHR5LiBOb3RlIHRoYXQgd2UgYWxzbyBoYXZlCisJCQkgKiB0byBiZSBjYXJlZnVsIHRoYXQgd2Ug ZG9uJ3QgcXVldWUgdGhlIHNhbWUKKwkJCSAqIGNvbnRleHQgKGV2ZW4gdGhvdWdoIGEgZGlmZmVy ZW50IHJlcXVlc3QpIHRvCisJCQkgKiB0aGUgc2Vjb25kIHBvcnQuCisJCQkgKi8KKwkJCWlmIChj dHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihjdXJzb3ItPmN0eCkpCisJCQkJYnJlYWs7CisKKwkJ CUdFTV9CVUdfT04obGFzdC0+Y3R4ID09IGN1cnNvci0+Y3R4KTsKKworCQkJaTkxNV9nZW1fcmVx dWVzdF9hc3NpZ24oJnBvcnQtPnJlcXVlc3QsIGxhc3QpOworCQkJcG9ydCsrOworCQl9CisJCWxh c3QgPSBjdXJzb3I7CisJCXN1Ym1pdCA9IHRydWU7CisJfQorCWlmIChzdWJtaXQpIHsKKwkJLyog RGVjb3VwbGUgYWxsIHRoZSByZXF1ZXN0cyBzdWJtaXR0ZWQgZnJvbSB0aGUgcXVldWUgKi8KKwkJ ZW5naW5lLT5leGVjbGlzdF9xdWV1ZS5uZXh0ID0gJmN1cnNvci0+ZXhlY2xpc3RfbGluazsKKwkJ Y3Vyc29yLT5leGVjbGlzdF9saW5rLnByZXYgPSAmZW5naW5lLT5leGVjbGlzdF9xdWV1ZTsKKwor CQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmcG9ydC0+cmVxdWVzdCwgbGFzdCk7CiAJfQorCXNw aW5fdW5sb2NrKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwogCi0JZXhlY2xpc3RzX2Vsc3Bfc3Vi bWl0X2NvbnRleHRzKHJlcTAsIHJlcTEpOworCWlmIChzdWJtaXQpCisJCWV4ZWNsaXN0c19zdWJt aXRfcG9ydHMoZW5naW5lKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludAotZXhlY2xpc3RzX2No ZWNrX3JlbW92ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIGN0 eF9pZCkKK3N0YXRpYyBib29sIGV4ZWNsaXN0c19lbHNwX2lkbGUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqaGVhZF9yZXE7 Ci0KLQlhc3NlcnRfc3Bpbl9sb2NrZWQoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7Ci0KLQloZWFk X3JlcSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSwK LQkJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwKLQkJCQkJICAgIGV4ZWNsaXN0 X2xpbmspOwotCi0JaWYgKFdBUk5fT04oIWhlYWRfcmVxIHx8IChoZWFkX3JlcS0+Y3R4X2h3X2lk ICE9IGN0eF9pZCkpKQotICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLQlXQVJOKGhlYWRfcmVx LT5lbHNwX3N1Ym1pdHRlZCA9PSAwLCAiTmV2ZXIgc3VibWl0dGVkIGhlYWQgcmVxdWVzdFxuIik7 Ci0KLQlpZiAoLS1oZWFkX3JlcS0+ZWxzcF9zdWJtaXR0ZWQgPiAwKQotCQlyZXR1cm4gMDsKLQot CWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UoaGVhZF9yZXEsIElOVEVMX0NPTlRFWFRf U0NIRURVTEVfT1VUKTsKLQotCWxpc3RfZGVsKCZoZWFkX3JlcS0+ZXhlY2xpc3RfbGluayk7Ci0J aTkxNV9nZW1fcmVxdWVzdF9wdXQoaGVhZF9yZXEpOwotCi0JcmV0dXJuIDE7CisJcmV0dXJuICFl bmdpbmUtPmV4ZWNsaXN0X3BvcnRbMF0ucmVxdWVzdDsKIH0KIAotc3RhdGljIHUzMgotZ2V0X2Nv bnRleHRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdW5zaWduZWQgaW50 IHJlYWRfcG9pbnRlciwKLQkJICAgdTMyICpjb250ZXh0X2lkKQorc3RhdGljIGJvb2wgZXhlY2xp c3RzX2Vsc3BfcmVhZHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKLQl1MzIgc3RhdHVz OwotCi0JcmVhZF9wb2ludGVyICU9IEdFTjhfQ1NCX0VOVFJJRVM7Ci0KLQlzdGF0dXMgPSBJOTE1 X1JFQURfRlcoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8oZW5naW5lLCByZWFkX3BvaW50ZXIp KTsKLQotCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpCi0JCXJldHVy biAwOworCWludCBwb3J0OwogCi0JKmNvbnRleHRfaWQgPSBJOTE1X1JFQURfRlcoUklOR19DT05U RVhUX1NUQVRVU19CVUZfSEkoZW5naW5lLAotCQkJCQkJCSAgICAgIHJlYWRfcG9pbnRlcikpOwor CXBvcnQgPSAxOyAvKiB3YWl0IGZvciBhIGZyZWUgc2xvdCAqLworCWlmIChlbmdpbmUtPmRpc2Fi bGVfbGl0ZV9yZXN0b3JlX3dhIHx8IGVuZ2luZS0+cHJlZW1wdF93YSkKKwkJcG9ydCA9IDA7IC8q IHdhaXQgZm9yIEdQVSB0byBiZSBpZGxlIGJlZm9yZSBjb250aW51aW5nICovCiAKLQlyZXR1cm4g c3RhdHVzOworCXJldHVybiAhZW5naW5lLT5leGVjbGlzdF9wb3J0W3BvcnRdLnJlcXVlc3Q7CiB9 CiAKIC8qCkBAIC01NDAsNjcgKzUzNSw1NiBAQCBnZXRfY29udGV4dF9zdGF0dXMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1bnNpZ25lZCBpbnQgcmVhZF9wb2ludGVyLAogc3RhdGlj IHZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIHsKIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKWRh dGE7CisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQ7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwotCXUz MiBzdGF0dXNfcG9pbnRlcjsKLQl1bnNpZ25lZCBpbnQgcmVhZF9wb2ludGVyLCB3cml0ZV9wb2lu dGVyOwotCXUzMiBjc2JbR0VOOF9DU0JfRU5UUklFU11bMl07Ci0JdW5zaWduZWQgaW50IGNzYl9y ZWFkID0gMCwgaTsKLQl1bnNpZ25lZCBpbnQgc3VibWl0X2NvbnRleHRzID0gMDsKIAogCWludGVs X3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBlbmdpbmUtPmZ3X2RvbWFpbnMpOwogCi0J c3RhdHVzX3BvaW50ZXIgPSBJOTE1X1JFQURfRlcoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5n aW5lKSk7Ci0KLQlyZWFkX3BvaW50ZXIgPSBlbmdpbmUtPm5leHRfY29udGV4dF9zdGF0dXNfYnVm ZmVyOwotCXdyaXRlX3BvaW50ZXIgPSBHRU44X0NTQl9XUklURV9QVFIoc3RhdHVzX3BvaW50ZXIp OwotCWlmIChyZWFkX3BvaW50ZXIgPiB3cml0ZV9wb2ludGVyKQotCQl3cml0ZV9wb2ludGVyICs9 IEdFTjhfQ1NCX0VOVFJJRVM7Ci0KLQl3aGlsZSAocmVhZF9wb2ludGVyIDwgd3JpdGVfcG9pbnRl cikgewotCQlpZiAoV0FSTl9PTl9PTkNFKGNzYl9yZWFkID09IEdFTjhfQ1NCX0VOVFJJRVMpKQot CQkJYnJlYWs7Ci0JCWNzYltjc2JfcmVhZF1bMF0gPSBnZXRfY29udGV4dF9zdGF0dXMoZW5naW5l LCArK3JlYWRfcG9pbnRlciwKLQkJCQkJCSAgICAgICZjc2JbY3NiX3JlYWRdWzFdKTsKLQkJY3Ni X3JlYWQrKzsKLQl9Ci0KLQllbmdpbmUtPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyID0gd3Jp dGVfcG9pbnRlciAlIEdFTjhfQ1NCX0VOVFJJRVM7Ci0KLQkvKiBVcGRhdGUgdGhlIHJlYWQgcG9p bnRlciB0byB0aGUgb2xkIHdyaXRlIHBvaW50ZXIuIE1hbnVhbCByaW5nYnVmZmVyCi0JICogbWFu YWdlbWVudCBmdHcgPC9zYXJjYXNtPiAqLwotCUk5MTVfV1JJVEVfRlcoUklOR19DT05URVhUX1NU QVRVU19QVFIoZW5naW5lKSwKLQkJICAgICAgX01BU0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BU Ul9NQVNLLAotCQkJCSAgICBlbmdpbmUtPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyIDw8IDgp KTsKLQotCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBlbmdpbmUtPmZ3X2Rv bWFpbnMpOwotCi0Jc3Bpbl9sb2NrKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOworCWlmICghZXhl Y2xpc3RzX2Vsc3BfaWRsZShlbmdpbmUpKSB7CisJCXUzMiBfX2lvbWVtICpjc2JfbW1pbyA9CisJ CQlkZXZfcHJpdi0+cmVncyArIGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfQ09OVEVYVF9TVEFU VVNfUFRSKGVuZ2luZSkpOworCQl1MzIgX19pb21lbSAqYnVmID0KKwkJCWRldl9wcml2LT5yZWdz ICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8oZW5naW5l LCAwKSk7CisJCXVuc2lnbmVkIGludCBjc2IsIGhlYWQsIHRhaWw7CisKKwkJY3NiID0gcmVhZGwo Y3NiX21taW8pOworCQloZWFkID0gR0VOOF9DU0JfUkVBRF9QVFIoY3NiKTsKKwkJdGFpbCA9IEdF TjhfQ1NCX1dSSVRFX1BUUihjc2IpOworCQlpZiAodGFpbCA8IGhlYWQpCisJCQl0YWlsICs9IEdF TjhfQ1NCX0VOVFJJRVM7CisJCXdoaWxlIChoZWFkIDwgdGFpbCkgeworCQkJdW5zaWduZWQgaW50 IGlkeCA9ICsraGVhZCAlIEdFTjhfQ1NCX0VOVFJJRVM7CisJCQl1bnNpZ25lZCBpbnQgc3RhdHVz ID0gcmVhZGwoYnVmICsgMiAqIGlkeCk7CisKKwkJCWlmICghKHN0YXR1cyAmIEdFTjhfQ1RYX1NU QVRVU19DT01QTEVURURfTUFTSykpCisJCQkJY29udGludWU7CisKKwkJCUdFTV9CVUdfT04ocG9y dFswXS5jb3VudCA9PSAwKTsKKwkJCWlmICgtLXBvcnRbMF0uY291bnQgPT0gMCkgeworCQkJCUdF TV9CVUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCk7CisJCQkJZXhlY2xp c3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShwb3J0WzBdLnJlcXVlc3QsCisJCQkJCQkJCUlOVEVM X0NPTlRFWFRfU0NIRURVTEVfT1VUKTsKKworCQkJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHBvcnRb MF0ucmVxdWVzdCk7CisJCQkJcG9ydFswXSA9IHBvcnRbMV07CisJCQkJbWVtc2V0KCZwb3J0WzFd LCAwLCBzaXplb2YocG9ydFsxXSkpOworCisJCQkJZW5naW5lLT5wcmVlbXB0X3dhID0gZmFsc2U7 CisJCQl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgY3NiX3JlYWQ7IGkrKykgewotCQlpZiAodW5saWtl bHkoY3NiW2ldWzBdICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkpIHsKLQkJCWlmIChjc2Jb aV1bMF0gJiBHRU44X0NUWF9TVEFUVVNfTElURV9SRVNUT1JFKSB7Ci0JCQkJaWYgKGV4ZWNsaXN0 c19jaGVja19yZW1vdmVfcmVxdWVzdChlbmdpbmUsIGNzYltpXVsxXSkpCi0JCQkJCVdBUk4oMSwg IkxpdGUgUmVzdG9yZWQgcmVxdWVzdCByZW1vdmVkIGZyb20gcXVldWVcbiIpOwotCQkJfSBlbHNl Ci0JCQkJV0FSTigxLCAiUHJlZW1wdGlvbiB3aXRob3V0IExpdGUgUmVzdG9yZVxuIik7CisJCQlH RU1fQlVHX09OKHBvcnRbMF0uY291bnQgPT0gMCAmJgorCQkJCSAgICEoc3RhdHVzICYgR0VOOF9D VFhfU1RBVFVTX0FDVElWRV9JRExFKSk7CiAJCX0KIAotCQlpZiAoY3NiW2ldWzBdICYgKEdFTjhf Q1RYX1NUQVRVU19BQ1RJVkVfSURMRSB8Ci0JCSAgICBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9T V0lUQ0gpKQotCQkJc3VibWl0X2NvbnRleHRzICs9Ci0JCQkJZXhlY2xpc3RzX2NoZWNrX3JlbW92 ZV9yZXF1ZXN0KGVuZ2luZSwgY3NiW2ldWzFdKTsKKwkJd3JpdGVsKF9NQVNLRURfRklFTEQoR0VO OF9DU0JfUkVBRF9QVFJfTUFTSywKKwkJCQkgICAgIEdFTjhfQ1NCX1dSSVRFX1BUUihjc2IpIDw8 IDgpLAorCQkgICAgICAgY3NiX21taW8pOwogCX0KIAotCWlmIChzdWJtaXRfY29udGV4dHMpIHsK LQkJaWYgKCFlbmdpbmUtPmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhIHx8Ci0JCSAgICAoY3NiW2ld WzBdICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSkKLQkJCWV4ZWNsaXN0c191bnF1ZXVl KGVuZ2luZSk7Ci0JfQorCWlmIChleGVjbGlzdHNfZWxzcF9yZWFkeShlbmdpbmUpKQorCQlleGVj bGlzdHNfZGVxdWV1ZShlbmdpbmUpOwogCi0Jc3Bpbl91bmxvY2soJmVuZ2luZS0+ZXhlY2xpc3Rf bG9jayk7Ci0KLQlpZiAodW5saWtlbHkoc3VibWl0X2NvbnRleHRzID4gMikpCi0JCURSTV9FUlJP UigiTW9yZSB0aGFuIHR3byBjb250ZXh0IGNvbXBsZXRlIGV2ZW50cz9cbiIpOworCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBlbmdpbmUtPmZ3X2RvbWFpbnMpOwogfQogCiBz dGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtNjA5LDEyICs1OTMsOSBAQCBzdGF0aWMgdm9pZCBleGVjbGlz dHNfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQog CiAJc3Bpbl9sb2NrX2JoKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwogCi0JaTkxNV9nZW1fcmVx dWVzdF9nZXQocmVxdWVzdCk7Ci0JcmVxdWVzdC0+Y3R4X2h3X2lkID0gcmVxdWVzdC0+Y3R4LT5o d19pZDsKLQotCWlmIChsaXN0X2VtcHR5KCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKSkKLQkJdGFz a2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5pcnFfdGFza2xldCk7CiAJbGlzdF9hZGRfdGFpbCgm cmVxdWVzdC0+ZXhlY2xpc3RfbGluaywgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOworCWlmIChl eGVjbGlzdHNfZWxzcF9pZGxlKGVuZ2luZSkpCisJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmVuZ2lu ZS0+aXJxX3Rhc2tsZXQpOwogCiAJc3Bpbl91bmxvY2tfYmgoJmVuZ2luZS0+ZXhlY2xpc3RfbG9j ayk7CiB9CkBAIC03MjEsMjMgKzcwMiw2IEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlyZXR1cm4gMDsKIH0KIAotdm9p ZCBpbnRlbF9leGVjbGlzdHNfY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgKnRtcDsKLQlM SVNUX0hFQUQoY2FuY2VsX2xpc3QpOwotCi0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZlbmdp bmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpKTsKLQotCXNwaW5fbG9ja19iaCgmZW5naW5lLT5l eGVjbGlzdF9sb2NrKTsKLQlsaXN0X3JlcGxhY2VfaW5pdCgmZW5naW5lLT5leGVjbGlzdF9xdWV1 ZSwgJmNhbmNlbF9saXN0KTsKLQlzcGluX3VubG9ja19iaCgmZW5naW5lLT5leGVjbGlzdF9sb2Nr KTsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHRtcCwgJmNhbmNlbF9saXN0LCBl eGVjbGlzdF9saW5rKSB7Ci0JCWxpc3RfZGVsKCZyZXEtPmV4ZWNsaXN0X2xpbmspOwotCQlpOTE1 X2dlbV9yZXF1ZXN0X3B1dChyZXEpOwotCX0KLX0KLQogc3RhdGljIGludCBpbnRlbF9scl9jb250 ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKQEAgLTEyNTgsNyArMTIyMiw2IEBAIHN0YXRpYyB2b2lkIGxy Y19pbml0X2h3cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50IGdl bjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwotCXVuc2ln bmVkIGludCBuZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odzsKIAogCWxyY19pbml0X2h3cyhl bmdpbmUpOwogCkBAIC0xMjY5LDMyICsxMjMyLDcgQEAgc3RhdGljIGludCBnZW44X2luaXRfY29t bW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCUk5MTVfV1JJVEUoUklO R19NT0RFX0dFTjcoZW5naW5lKSwKIAkJICAgX01BU0tFRF9CSVRfRElTQUJMRShHRlhfUkVQTEFZ X01PREUpIHwKIAkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9SVU5fTElTVF9FTkFCTEUpKTsK LQlQT1NUSU5HX1JFQUQoUklOR19NT0RFX0dFTjcoZW5naW5lKSk7Ci0KLQkvKgotCSAqIEluc3Rl YWQgb2YgcmVzZXR0aW5nIHRoZSBDb250ZXh0IFN0YXR1cyBCdWZmZXIgKENTQikgcmVhZCBwb2lu dGVyIHRvCi0JICogemVybywgd2UgbmVlZCB0byByZWFkIHRoZSB3cml0ZSBwb2ludGVyIGZyb20g aGFyZHdhcmUgYW5kIHVzZSBpdHMKLQkgKiB2YWx1ZSBiZWNhdXNlICJ0aGlzIHJlZ2lzdGVyIGlz IHBvd2VyIGNvbnRleHQgc2F2ZSByZXN0b3JlZCIuCi0JICogRWZmZWN0aXZlbHksIHRoZXNlIHN0 YXRlcyBoYXZlIGJlZW4gb2JzZXJ2ZWQ6Ci0JICoKLQkgKiAgICAgIHwgU3VzcGVuZC10by1pZGxl IChmcmVlemUpIHwgU3VzcGVuZC10by1SQU0gKG1lbSkgfAotCSAqIEJEVyAgfCBDU0IgcmVncyBu b3QgcmVzZXQgICAgICAgfCBDU0IgcmVncyByZXNldCAgICAgICB8Ci0JICogQ0hUICB8IENTQiBy ZWdzIG5vdCByZXNldCAgICAgICB8IENTQiByZWdzIG5vdCByZXNldCAgIHwKLQkgKiBTS0wgIHwg ICAgICAgICA/ICAgICAgICAgICAgICAgIHwgICAgICAgICA/ICAgICAgICAgICAgfAotCSAqIEJY VCAgfCAgICAgICAgID8gICAgICAgICAgICAgICAgfCAgICAgICAgID8gICAgICAgICAgICB8Ci0J ICovCi0JbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXJfaHcgPQotCQlHRU44X0NTQl9XUklURV9Q VFIoSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKGVuZ2luZSkpKTsKIAotCS8qCi0J ICogV2hlbiB0aGUgQ1NCIHJlZ2lzdGVycyBhcmUgcmVzZXQgKGFsc28gYWZ0ZXIgcG93ZXItdXAg LyBncHUgcmVzZXQpLAotCSAqIENTQiB3cml0ZSBwb2ludGVyIGlzIHNldCB0byBhbGwgMSdzLCB3 aGljaCBpcyBub3QgdmFsaWQsIHVzZSAnNScgaW4KLQkgKiB0aGlzIHNwZWNpYWwgY2FzZSwgc28g dGhlIGZpcnN0IGVsZW1lbnQgcmVhZCBpcyBDU0JbMF0uCi0JICovCi0JaWYgKG5leHRfY29udGV4 dF9zdGF0dXNfYnVmZmVyX2h3ID09IEdFTjhfQ1NCX1BUUl9NQVNLKQotCQluZXh0X2NvbnRleHRf c3RhdHVzX2J1ZmZlcl9odyA9IChHRU44X0NTQl9FTlRSSUVTIC0gMSk7Ci0KLQllbmdpbmUtPm5l eHRfY29udGV4dF9zdGF0dXNfYnVmZmVyID0gbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXJfaHc7 CiAJRFJNX0RFQlVHX0RSSVZFUigiRXhlY2xpc3RzIGVuYWJsZWQgZm9yICVzXG4iLCBlbmdpbmUt Pm5hbWUpOwogCiAJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7CkBAIC0xNjgw LDEwICsxNjE4LDYgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJfQogCWludGVsX2xyX2NvbnRleHRfdW5waW4oZGV2X3By aXYtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUpOwogCi0JZW5naW5lLT5pZGxlX2xpdGVfcmVzdG9y ZV93YSA9IDA7Ci0JZW5naW5lLT5kaXNhYmxlX2xpdGVfcmVzdG9yZV93YSA9IGZhbHNlOwotCWVu Z2luZS0+Y3R4X2Rlc2NfdGVtcGxhdGUgPSAwOwotCiAJbHJjX2Rlc3Ryb3lfd2FfY3R4X29iaihl bmdpbmUpOwogCWVuZ2luZS0+aTkxNSA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5o CmluZGV4IGE1MmNmNTdkYmQ0MC4uNGQ3MDM0NjUwMGMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaApAQCAtOTcsNiArOTcsNCBAQCBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgIGludCBlbmFibGVf ZXhlY2xpc3RzKTsKIHZvaWQgaW50ZWxfZXhlY2xpc3RzX2VuYWJsZV9zdWJtaXNzaW9uKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKLXZvaWQgaW50ZWxfZXhlY2xpc3RzX2Nh bmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwotCiAjZW5kaWYg LyogX0lOVEVMX0xSQ19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o CmluZGV4IDg0YWVhNTQ5ZGU1ZC4uMjE4MWQwYTQxYTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oCkBAIC0yOTgsMTEgKzI5OCwxNCBAQCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzIHsKIAkvKiBFeGVjbGlzdHMgKi8KIAlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgaXJxX3Rh c2tsZXQ7CiAJc3BpbmxvY2tfdCBleGVjbGlzdF9sb2NrOyAvKiB1c2VkIGluc2lkZSB0YXNrbGV0 LCB1c2Ugc3Bpbl9sb2NrX2JoICovCisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgeworCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CisJCXVuc2lnbmVkIGludCBjb3VudDsKKwl9 IGV4ZWNsaXN0X3BvcnRbMl07CiAJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9xdWV1ZTsKIAl1 bnNpZ25lZCBpbnQgZndfZG9tYWluczsKLQl1bnNpZ25lZCBpbnQgbmV4dF9jb250ZXh0X3N0YXR1 c19idWZmZXI7Ci0JdW5zaWduZWQgaW50IGlkbGVfbGl0ZV9yZXN0b3JlX3dhOwogCWJvb2wgZGlz YWJsZV9saXRlX3Jlc3RvcmVfd2E7CisJYm9vbCBwcmVlbXB0X3dhOwogCXUzMiBjdHhfZGVzY190 ZW1wbGF0ZTsKIAogCS8qKgotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=