From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH v8 4/6] drm/i915: Interrupt driven fences Date: Thu, 12 May 2016 22:06:34 +0100 Message-ID: <1463087196-11688-5-git-send-email-John.C.Harrison@Intel.com> References: <1463087196-11688-1-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 1CE4E6E983 for ; Thu, 12 May 2016 21:06:46 +0000 (UTC) In-Reply-To: <1463087196-11688-1-git-send-email-John.C.Harrison@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 RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KClRoZSBpbnRl bmRlZCB1c2FnZSBtb2RlbCBmb3Igc3RydWN0IGZlbmNlIGlzIHRoYXQgdGhlIHNpZ25hbGxlZCBz dGF0dXMKc2hvdWxkIGJlIHNldCBvbiBkZW1hbmQgcmF0aGVyIHRoYW4gcG9sbGVkLiBUaGF0IGlz LCB0aGVyZSBzaG91bGQgbm90CmJlIGEgbmVlZCBmb3IgYSAnc2lnbmFsZWQnIGZ1bmN0aW9uIHRv IGJlIGNhbGxlZCBldmVyeXRpbWUgdGhlIHN0YXR1cwppcyBxdWVyaWVkLiBJbnN0ZWFkLCAnc29t ZXRoaW5nJyBzaG91bGQgYmUgZG9uZSB0byBlbmFibGUgYSBzaWduYWwKY2FsbGJhY2sgZnJvbSB0 aGUgaGFyZHdhcmUgd2hpY2ggd2lsbCB1cGRhdGUgdGhlIHN0YXRlIGRpcmVjdGx5LiBJbgp0aGUg Y2FzZSBvZiByZXF1ZXN0cywgdGhpcyBpcyB0aGUgc2Vxbm8gdXBkYXRlIGludGVycnVwdC4gVGhl IGlkZWEgaXMKdGhhdCB0aGlzIGNhbGxiYWNrIHdpbGwgb25seSBiZSBlbmFibGVkIG9uIGRlbWFu ZCB3aGVuIHNvbWV0aGluZwphY3R1YWxseSB0cmllcyB0byB3YWl0IG9uIHRoZSBmZW5jZS4KClRo aXMgY2hhbmdlIHJlbW92ZXMgdGhlIHBvbGxpbmcgdGVzdCBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0 aGUgY2FsbGJhY2sKc2NoZW1lLiBFYWNoIGZlbmNlIGlzIGFkZGVkIHRvIGEgJ3BsZWFzZSBwb2tl IG1lJyBsaXN0IGF0IHRoZSBzdGFydCBvZgppOTE1X2FkZF9yZXF1ZXN0KCkuIFRoZSBpbnRlcnJ1 cHQgaGFuZGxlciB0aGVuIHNjYW5zIHRocm91Z2ggdGhlICdwb2tlCm1lJyBsaXN0IHdoZW4gYSBu ZXcgc2Vxbm8gcG9wcyBvdXQgYW5kIHNpZ25hbHMgYW55IG1hdGNoaW5nCmZlbmNlL3JlcXVlc3Qu IFRoZSBmZW5jZSBpcyB0aGVuIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCBzbyB0aGUgZW50aXJlCnJl cXVlc3Qgc3RhY2sgZG9lcyBub3QgbmVlZCB0byBiZSBzY2FubmVkIGV2ZXJ5IHRpbWUuIE5vdGUg dGhhdCB0aGUKZmVuY2UgaXMgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlIHRoZSBjb21tYW5kcyB0 byBnZW5lcmF0ZSB0aGUgc2Vxbm8KaW50ZXJydXB0IGFyZSBhZGRlZCB0byB0aGUgcmluZy4gVGh1 cyB0aGUgc2VxdWVuY2UgaXMgZ3VhcmFudGVlZCB0byBiZQpyYWNlIGZyZWUgaWYgdGhlIGludGVy cnVwdCBpcyBhbHJlYWR5IGVuYWJsZWQuCgpOb3RlIHRoYXQgdGhlIGludGVycnVwdCBpcyBvbmx5 IGVuYWJsZWQgb24gZGVtYW5kIChpLmUuIHdoZW4KX193YWl0X3JlcXVlc3QoKSBpcyBjYWxsZWQp LiBUaHVzIHRoZXJlIGlzIHN0aWxsIGEgcG90ZW50aWFsIHJhY2Ugd2hlbgplbmFibGluZyB0aGUg aW50ZXJydXB0IGFzIHRoZSByZXF1ZXN0IG1heSBhbHJlYWR5IGhhdmUgY29tcGxldGVkLgpIb3dl dmVyLCB0aGlzIGlzIHNpbXBseSBzb2x2ZWQgYnkgY2FsbGluZyB0aGUgaW50ZXJydXB0IHByb2Nl c3NpbmcKY29kZSBpbW1lZGlhdGVseSBhZnRlciBlbmFibGluZyB0aGUgaW50ZXJydXB0IGFuZCB0 aGVyZWJ5IGNoZWNraW5nIGZvcgphbHJlYWR5IGNvbXBsZXRlZCByZXF1ZXN0cy4KCkxhc3RseSwg dGhlIHJpbmcgY2xlYW4gdXAgY29kZSBoYXMgdGhlIHBvc3NpYmlsaXR5IHRvIGNhbmNlbApvdXRz dGFuZGluZyByZXF1ZXN0cyAoZS5nLiBiZWNhdXNlIFREUiBoYXMgcmVzZXQgdGhlIHJpbmcpLiBU aGVzZQpyZXF1ZXN0cyB3aWxsIG5ldmVyIGdldCBzaWduYWxsZWQgYW5kIHNvIG11c3QgYmUgcmVt b3ZlZCBmcm9tIHRoZQpzaWduYWwgbGlzdCBtYW51YWxseS4gVGhpcyBpcyBkb25lIGJ5IHNldHRp bmcgYSAnY2FuY2VsbGVkJyBmbGFnIGFuZAp0aGVuIGNhbGxpbmcgdGhlIHJlZ3VsYXIgbm90aWZ5 L3JldGlyZSBjb2RlIHBhdGggcmF0aGVyIHRoYW4KYXR0ZW1wdGluZyB0byBkdXBsaWNhdGUgdGhl IGxpc3QgbWFuaXB1bGF0YXRpb24gYW5kIGNsZWFuIHVwIGNvZGUgaW4KbXVsdGlwbGUgcGxhY2Vz LiBUaGlzIGFsc28gYXZvaWQgYW55IHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZQpjYW5jZWxsYXRp b24gcmVxdWVzdCBtaWdodCBvY2N1ciBhZnRlci9kdXJpbmcgdGhlIGNvbXBsZXRpb24gaW50ZXJy dXB0CmFjdHVhbGx5IGFycml2aW5nLgoKdjI6IFVwZGF0ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Yg dGhlIHJlcXVlc3QgdW5yZWZlcmVuY2Ugbm8gbG9uZ2VyCnJlcXVpcmluZyB0aGUgbXV0ZXggbG9j ay4KCnYzOiBNb3ZlIHRoZSBzaWduYWwgbGlzdCBwcm9jZXNzaW5nIGFyb3VuZCB0byBwcmV2ZW50 IHVuc3VibWl0dGVkCnJlcXVlc3RzIGJlaW5nIGFkZGVkIHRvIHRoZSBsaXN0LiBUaGlzIHdhcyBv Y2N1cnJpbmcgb24gQW5kcm9pZApiZWNhdXNlIHRoZSBuYXRpdmUgc3luYyBpbXBsZW1lbnRhdGlv biBjYWxscyB0aGUKZmVuY2UtPmVuYWJsZV9zaWduYWxsaW5nIEFQSSBpbW1lZGlhdGVseSBvbiBm ZW5jZSBjcmVhdGlvbi4KClVwZGF0ZWQgYWZ0ZXIgcmV2aWV3IGNvbW1lbnRzIGJ5IFR2cnRrbyBV cnN1bGluLiBSZW5hbWVkIGxpc3Qgbm9kZXMgdG8KJ2xpbmsnIGluc3RlYWQgb2YgJ2xpc3QnLiBB ZGRlZCBzdXBwb3J0IGZvciByZXR1cm5pbmcgYW4gZXJyb3IgY29kZSBvbgphIGNhbmNlbGxlZCBm ZW5jZS4gVXBkYXRlIGxpc3QgcHJvY2Vzc2luZyB0byBiZSBtb3JlIGVmZmljaWVudC9zYWZlcgp3 aXRoIHJlc3BlY3QgdG8gc3BpbmxvY2tzLgoKdjU6IE1hZGUgaTkxNV9nZW1fcmVxdWVzdF9zdWJt aXQgYSBzdGF0aWMgYXMgaXQgaXMgb25seSBldmVyIGNhbGxlZApmcm9tIG9uZSBwbGFjZS4KCkZp eGVkIHVwIHRoZSBsb3cgbGF0ZW5jeSB3YWl0IG9wdGltaXNhdGlvbi4gVGhlIHRpbWUgZGVsYXkg YmV0d2VlbiB0aGUKc2Vxbm8gdmFsdWUgYmVpbmcgdG8gbWVtb3J5IGFuZCB0aGUgZHJpdmUncyBJ U1IgcnVubmluZyBjYW4gYmUKc2lnbmlmaWNhbnQsIGF0IGxlYXN0IGZvciB0aGUgd2FpdCByZXF1 ZXN0IG1pY3JvLWJlbmNobWFyay4gVGhpcyBjYW4KYmUgZ3JlYXRseSBpbXByb3ZlZCBieSBleHBs aWNpdGx5IGNoZWNraW5nIGZvciBzZXFubyB1cGRhdGVzIGluIHRoZQpwcmUtd2FpdCBidXN5IHBv bGwgbG9vcC4gQWxzbyBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24gY29tbWVudHMgdG8gdGhlCmJ1 c3kgcG9sbCBjb2RlLgoKRml4ZWQgdXAgc3VwcG9ydCBmb3IgdGhlIGZha2luZyBvZiBsb3N0IGlu dGVycnVwdHMKKHRlc3RfaXJxX3JpbmdzL21pc3NlZF9pcnFfcmluZ3MpLiBUaGF0IGlzLCB0aGVy ZSBpcyBhbiBJR1QgdGVzdCB0aGF0CnRlbGxzIHRoZSBkcml2ZXIgdG8gbG9vc2UgaW50ZXJydXB0 cyBkZWxpYmVyYXRlbHkgYW5kIHRoZW4gY2hlY2sgdGhhdApldmVyeXRoaW5nIHN0aWxsIHdvcmtz IGFzIGV4cGVjdGVkIChhbGJlaXQgbXVjaCBzbG93ZXIpLgoKVXBkYXRlcyBmcm9tIHJldmlldyBj b21tZW50czogdXNlIG5vbiBJUlEtc2F2ZSBzcGlubG9ja2luZywgZWFybHkgZXhpdApvbiBXQVJO IGFuZCBpbXByb3ZlZCBjb21tZW50cyAoVHZydGtvIFVyc3VsaW4pLgoKdjY6IFVwZGF0ZWQgdG8g bmV3ZXIgbmlndGhseSBhbmQgcmVzb2x2ZWQgY29uZmxpY3RzIGFyb3VuZCB0aGUKd2FpdF9yZXF1 ZXN0IGJ1c3kgc3BpbiBvcHRpbWlzYXRpb24uIEFsc28gZml4ZWQgYSByYWNlIGNvbmRpdGlvbgpi ZXR3ZWVuIHRoaXMgZWFybHkgZXhpdCBwYXRoIGFuZCB0aGUgcmVndWxhciBjb21wbGV0aW9uIHBh dGguCgp2NzogVXBkYXRlZCB0byBuZXdlciBuaWdodGx5IC0gbG90cyBvZiByaW5nIC0+IGVuZ2lu ZSByZW5hbWluZyBwbHVzIGFuCmludGVyZmFjZSBjaGFuZ2Ugb24gZ2V0X3NlcW5vKCkuIEFsc28g YWRkZWQgYSBsaXN0X2VtcHR5KCkgY2hlY2sKYmVmb3JlIGFjcXVyaW5nIHNwaW5sb2NrcyBhbmQg ZG9pbmcgbGlzdCBwcm9jZXNzaW5nLgoKdjg6IFVwZGF0ZWQgdG8gbmV3ZXIgbmlnaHRseSAtIGNo YW5nZXMgdG8gcmVxdWVzdCBjbGVhbiB1cCBjb2RlIG1lYW4Kbm9uIG9mIHRoZSBkZWZlcnJlZCBm cmVlIG1lc3MgaXMgbmVlZGVkIGFueSBtb3JlLgoKRm9yOiBWSVotNTE5MApTaWduZWQtb2ZmLWJ5 OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICB8IDIzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMoKyks IDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDQzM2Q5OWEuLjNh ZGFjNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjI3OCw2ICsyMjc4LDEwIEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiAJICovCiAJc3RydWN0IGZlbmNlIGZlbmNlOwog CXN0cnVjdCByY3VfaGVhZCByY3VfaGVhZDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9saW5r OworCWJvb2wgY2FuY2VsbGVkOworCWJvb2wgaXJxX2VuYWJsZWQ7CisJYm9vbCBzaWduYWxfcmVx dWVzdGVkOwogCiAJLyoqIE9uIFdoaWNoIHJpbmcgdGhpcyByZXF1ZXN0IHdhcyBnZW5lcmF0ZWQg Ki8KIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKQEAgLTIzNzksNiArMjM4Myw5IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKiBfX211c3RfY2hlY2sKIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cit2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKKwkJCQkgICAgICAgYm9vbCBmZW5jZV9sb2NrZWQpOwordm9pZCBpOTE1 X2dlbV9yZXF1ZXN0X25vdGlmeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGZl bmNlX2xvY2tlZCk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCmluZGV4IDk1OGVkY2IuLjY2Njk1MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpA QCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgogI2luY2x1ZGUgPGxpbnV4 L2RtYS1idWYuaD4KIAorc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOworCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmpl Y3RfZmx1c2hfZ3R0X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KTsKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9jcHVfd3JpdGVfZG9tYWluKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogc3RhdGljIHZvaWQKQEAgLTEyMzgsOSAr MTI0MCw4IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTVfZ2VtX3Jl cXVlc3RfZ2V0X2VuZ2luZShyZXEpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUt PmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwotCWNvbnN0IGJvb2wgaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MgPQotCQlBQ0NFU1NfT05DRShk ZXZfcHJpdi0+Z3B1X2Vycm9yLnRlc3RfaXJxX3JpbmdzKSAmIGludGVsX2VuZ2luZV9mbGFnKGVu Z2luZSk7CiAJaW50IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/IFRBU0tfSU5URVJSVVBUSUJMRSA6 IFRBU0tfVU5JTlRFUlJVUFRJQkxFOworCXVpbnQzMl90IHNlcW5vOwogCURFRklORV9XQUlUKHdh aXQpOwogCXVuc2lnbmVkIGxvbmcgdGltZW91dF9leHBpcmU7CiAJczY0IGJlZm9yZSA9IDA7IC8q IE9ubHkgdG8gc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCkBAIC0xMjQ4LDkgKzEyNDks NiBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKIAogCVdBUk4oIWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdiksICJJUlFzIGRpc2Fi bGVkIik7CiAKLQlpZiAobGlzdF9lbXB0eSgmcmVxLT5saXN0KSkKLQkJcmV0dXJuIDA7Ci0KIAlp ZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTEy NzYsMTUgKzEyNzQsMTcgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0X2JlZ2luKHJl cSk7CiAKIAkvKiBPcHRpbWlzdGljIHNwaW4gZm9yIHRoZSBuZXh0IGppZmZpZSBiZWZvcmUgdG91 Y2hpbmcgSVJRcyAqLwotCXJldCA9IF9faTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSk7Ci0J aWYgKHJldCA9PSAwKQotCQlnb3RvIG91dDsKLQotCWlmICghaXJxX3Rlc3RfaW5fcHJvZ3Jlc3Mg JiYgV0FSTl9PTighZW5naW5lLT5pcnFfZ2V0KGVuZ2luZSkpKSB7Ci0JCXJldCA9IC1FTk9ERVY7 Ci0JCWdvdG8gb3V0OworCWlmIChyZXEtPnNlcW5vKSB7CisJCXJldCA9IF9faTkxNV9zcGluX3Jl cXVlc3QocmVxLCBzdGF0ZSk7CisJCWlmIChyZXQgPT0gMCkKKwkJCWdvdG8gb3V0OwogCX0KIAor CS8qCisJICogRW5hYmxlIGludGVycnVwdCBjb21wbGV0aW9uIG9mIHRoZSByZXF1ZXN0LgorCSAq LworCWZlbmNlX2VuYWJsZV9zd19zaWduYWxpbmcoJnJlcS0+ZmVuY2UpOworCiAJZm9yICg7Oykg ewogCQlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKIApAQCAtMTMwNyw2ICsxMzA3LDIxIEBAIGlu dCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAog CQkJYnJlYWs7CiAJCX0KIAorCQlpZiAocmVxLT5zZXFubykgeworCQkJLyoKKwkJCSAqIFRoZXJl IGlzIHF1aXRlIGEgbG90IG9mIGxhdGVuY3kgaW4gdGhlIHVzZXIgaW50ZXJydXB0CisJCQkgKiBw YXRoLiBTbyBkbyBhbiBleHBsaWNpdCBzZXFubyBjaGVjayBhbmQgcG90ZW50aWFsbHkKKwkJCSAq IHJlbW92ZSBhbGwgdGhhdCBkZWxheS4KKwkJCSAqLworCQkJaWYgKHJlcS0+ZW5naW5lLT5pcnFf c2Vxbm9fYmFycmllcikKKwkJCQlyZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIocmVxLT5l bmdpbmUpOworCQkJc2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOworCQkJaWYgKGk5 MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNlcW5vKSkgeworCQkJCXJldCA9IDA7CisJCQkJ YnJlYWs7CisJCQl9CisJCX0KKwogCQlpZiAoc2lnbmFsX3BlbmRpbmdfc3RhdGUoc3RhdGUsIGN1 cnJlbnQpKSB7CiAJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CiAJCQlicmVhazsKQEAgLTEzMzMsMTQg KzEzNDgsMzIgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAJCQlkZXN0cm95X3RpbWVyX29uX3N0YWNrKCZ0aW1lcik7CiAJCX0KIAl9 Ci0JaWYgKCFpcnFfdGVzdF9pbl9wcm9ncmVzcykKLQkJZW5naW5lLT5pcnFfcHV0KGVuZ2luZSk7 CiAKIAlmaW5pc2hfd2FpdCgmZW5naW5lLT5pcnFfcXVldWUsICZ3YWl0KTsKIAogb3V0OgogCXRy YWNlX2k5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9lbmQocmVxKTsKIAorCWlmICgocmV0ID09IDApICYm IChyZXEtPnNlcW5vKSkgeworCQlpZiAocmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQor CQkJcmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKHJlcS0+ZW5naW5lKTsKKwkJc2Vxbm8g PSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOworCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vx bm8sIHJlcS0+c2Vxbm8pICYmCisJCSAgICAhaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx KSkgeworCQkJLyoKKwkJCSAqIE1ha2Ugc3VyZSB0aGUgcmVxdWVzdCBpcyBtYXJrZWQgYXMgY29t cGxldGVkIGJlZm9yZQorCQkJICogcmV0dXJuaW5nLiBOQjogTmVlZCB0byBhY3F1aXJlIHRoZSBz cGlubG9jayBhcm91bmQKKwkJCSAqIHRoZSB3aG9sZSBjYWxsIHRvIGF2b2lkIGEgcmFjZSBjb25k aXRpb24gd2l0aCB0aGUKKwkJCSAqIGludGVycnVwdCBoYW5kbGVyIGlzIHJ1bm5pbmcgY29uY3Vy cmVudGx5IGFuZCBjb3VsZAorCQkJICogY2F1c2UgdGhpcyBpbnZvY2F0aW9uIHRvIGVhcmx5IGV4 aXQgZXZlbiB0aG91Z2ggdGhlCisJCQkgKiByZXF1ZXN0IGhhcyBub3QgYWN0dWFsbHkgYmVlbiBm dWxseSBwcm9jZXNzZWQgeWV0LgorCQkJICovCisJCQlzcGluX2xvY2tfaXJxKCZyZXEtPmVuZ2lu ZS0+ZmVuY2VfbG9jayk7CisJCQlpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShyZXEtPmVuZ2luZSwg dHJ1ZSk7CisJCQlzcGluX3VubG9ja19pcnEoJnJlcS0+ZW5naW5lLT5mZW5jZV9sb2NrKTsKKwkJ fQorCX0KKwogCWlmICh0aW1lb3V0KSB7CiAJCXM2NCB0cmVzID0gKnRpbWVvdXQgLSAoa3RpbWVf Z2V0X3Jhd19ucygpIC0gYmVmb3JlKTsKIApAQCAtMTQwNiw2ICsxNDM5LDExIEBAIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKIHsKIAl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShyZXF1ZXN0KTsKIAor CWlmIChyZXF1ZXN0LT5pcnFfZW5hYmxlZCkgeworCQlyZXF1ZXN0LT5lbmdpbmUtPmlycV9wdXQo cmVxdWVzdC0+ZW5naW5lKTsKKwkJcmVxdWVzdC0+aXJxX2VuYWJsZWQgPSBmYWxzZTsKKwl9CisK IAkvKiBXZSBrbm93IHRoZSBHUFUgbXVzdCBoYXZlIHJlYWQgdGhlIHJlcXVlc3QgdG8gaGF2ZQog CSAqIHNlbnQgdXMgdGhlIHNlcW5vICsgaW50ZXJydXB0LCBzbyB1c2UgdGhlIHBvc2l0aW9uCiAJ ICogb2YgdGFpbCBvZiB0aGUgcmVxdWVzdCB0byB1cGRhdGUgdGhlIGxhc3Qga25vd24gcG9zaXRp b24KQEAgLTE0MTksNiArMTQ1NywyMiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3Jl dGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJbGlzdF9kZWxfaW5p dCgmcmVxdWVzdC0+bGlzdCk7CiAJaTkxNV9nZW1fcmVxdWVzdF9yZW1vdmVfZnJvbV9jbGllbnQo cmVxdWVzdCk7CiAKKwkvKgorCSAqIEluIGNhc2UgdGhlIHJlcXVlc3QgaXMgc3RpbGwgaW4gdGhl IHNpZ25hbCBwZW5kaW5nIGxpc3QsCisJICogZS5nLiBkdWUgdG8gYmVpbmcgY2FuY2VsbGVkIGJ5 IFREUiwgcHJlZW1wdGlvbiwgZXRjLgorCSAqLworCWlmICghbGlzdF9lbXB0eSgmcmVxdWVzdC0+ c2lnbmFsX2xpbmspKSB7CisJCS8qCisJCSAqIFRoZSByZXF1ZXN0IG11c3QgYmUgbWFya2VkIGFz IGNhbmNlbGxlZCBhbmQgdGhlIHVuZGVybHlpbmcKKwkJICogZmVuY2UgYXMgZmFpbGVkLiBOQjog VGhlcmUgaXMgbm8gZXhwbGljaXQgZmVuY2UgZmFpbCBBUEksCisJCSAqIHRoZXJlIGlzIG9ubHkg YSBtYW51YWwgcG9rZSBhbmQgc2lnbmFsLgorCQkgKi8KKwkJcmVxdWVzdC0+Y2FuY2VsbGVkID0g dHJ1ZTsKKwkJLyogSG93IHRvIHByb3BhZ2F0ZSB0byBhbnkgYXNzb2NpYXRlZCBzeW5jX2ZlbmNl Pz8/ICovCisJCXJlcXVlc3QtPmZlbmNlLnN0YXR1cyA9IC1FSU87CisJCWZlbmNlX3NpZ25hbF9s b2NrZWQoJnJlcXVlc3QtPmZlbmNlKTsKKwl9CisKIAlpZiAocmVxdWVzdC0+cHJldmlvdXNfY29u dGV4dCkgewogCQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQogCQkJaW50ZWxfbHJfY29udGV4 dF91bnBpbihyZXF1ZXN0LT5wcmV2aW91c19jb250ZXh0LApAQCAtMjY1MCw2ICsyNzA0LDEyIEBA IHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCwKIAkgKi8KIAlyZXF1ZXN0LT5wb3N0Zml4ID0gaW50ZWxfcmluZ19nZXRfdGFpbChyaW5n YnVmKTsKIAorCS8qCisJICogQWRkIHRoZSBmZW5jZSB0byB0aGUgcGVuZGluZyBsaXN0IGJlZm9y ZSBlbWl0dGluZyB0aGUgY29tbWFuZHMgdG8KKwkgKiBnZW5lcmF0ZSBhIHNlcW5vIG5vdGlmaWNh dGlvbiBpbnRlcnJ1cHQuCisJICovCisJaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQocmVxdWVzdCk7 CisKIAlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQogCQlyZXQgPSBlbmdpbmUtPmVtaXRfcmVx dWVzdChyZXF1ZXN0KTsKIAllbHNlIHsKQEAgLTI3MzUsMjUgKzI3OTUsMTQxIEBAIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKIAogCXJlcSA9IGNvbnRhaW5lcl9vZihyZXFf ZmVuY2UsIHR5cGVvZigqcmVxKSwgZmVuY2UpOworCisJV0FSTl9PTihyZXEtPmlycV9lbmFibGVk KTsKKwogCWNhbGxfcmN1KCZyZXEtPnJjdV9oZWFkLCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWVfcmN1 KTsKIH0KIAotc3RhdGljIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVfc2lnbmFsaW5nKHN0 cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQorLyoKKyAqIFRoZSByZXF1ZXN0IGlzIGFib3V0IHRvIGJl IHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUgc28gYWRkIHRoZSBmZW5jZSB0bworICogdGhlIGxp c3Qgb2Ygc2lnbmFsYWJsZSBmZW5jZXMuCisgKgorICogTkI6IFRoaXMgZG9lcyBub3QgbmVjZXNz YXJpbHkgZW5hYmxlIGludGVycnVwdHMgeWV0LiBUaGF0IG9ubHkgb2NjdXJzIG9uCisgKiBkZW1h bmQgd2hlbiB0aGUgcmVxdWVzdCBpcyBhY3R1YWxseSB3YWl0ZWQgb24uIEhvd2V2ZXIsIGFkZGlu ZyBpdCB0byB0aGUKKyAqIGxpc3QgZWFybHkgZW5zdXJlcyB0aGF0IHRoZXJlIGlzIG5vIHJhY2Ug Y29uZGl0aW9uIHdoZXJlIHRoZSBpbnRlcnJ1cHQKKyAqIGNvdWxkIHBvcCBvdXQgcHJlbWF0dXJl bHkgYW5kIHRodXMgYmUgY29tcGxldGVseSBsb3N0LiBUaGUgcmFjZSBpcyBtZXJlbHkKKyAqIHRo YXQgdGhlIGludGVycnVwdCBtdXN0IGJlIG1hbnVhbGx5IGNoZWNrZWQgZm9yIGFmdGVyIGJlaW5n IGVuYWJsZWQuCisgKi8KK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCS8qIEludGVycnVwdCBkcml2ZW4gZmVu Y2VzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0LiovCi0JV0FSTih0cnVlLCAiVGhpcyBzaG91bGQg bm90IGJlIGNhbGxlZCEiKTsKLQlyZXR1cm4gdHJ1ZTsKKwkvKgorCSAqIEFsd2F5cyBlbmFibGUg c2lnbmFsIHByb2Nlc3NpbmcgZm9yIHRoZSByZXF1ZXN0J3MgZmVuY2Ugb2JqZWN0CisJICogYmVm b3JlIHRoYXQgcmVxdWVzdCBpcyBzdWJtaXR0ZWQgdG8gdGhlIGhhcmR3YXJlLiBUaHVzIHRoZXJl IGlzIG5vCisJICogcmFjZSBjb25kaXRpb24gd2hlcmVieSB0aGUgaW50ZXJydXB0IGNvdWxkIHBv cCBvdXQgYmVmb3JlIHRoZQorCSAqIHJlcXVlc3QgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHNpZ25h bCBsaXN0LiBIZW5jZSBubyBuZWVkIHRvIGNoZWNrCisJICogZm9yIGNvbXBsZXRpb24sIHVuZG8g dGhlIGxpc3QgYWRkIGFuZCByZXR1cm4gZmFsc2UuCisJICovCisJaTkxNV9nZW1fcmVxdWVzdF9y ZWZlcmVuY2UocmVxKTsKKwlzcGluX2xvY2tfaXJxKCZyZXEtPmVuZ2luZS0+ZmVuY2VfbG9jayk7 CisJV0FSTl9PTighbGlzdF9lbXB0eSgmcmVxLT5zaWduYWxfbGluaykpOworCWxpc3RfYWRkX3Rh aWwoJnJlcS0+c2lnbmFsX2xpbmssICZyZXEtPmVuZ2luZS0+ZmVuY2Vfc2lnbmFsX2xpc3QpOwor CXNwaW5fdW5sb2NrX2lycSgmcmVxLT5lbmdpbmUtPmZlbmNlX2xvY2spOworCisJLyoKKwkgKiBO QjogSW50ZXJydXB0cyBhcmUgb25seSBlbmFibGVkIG9uIGRlbWFuZC4gVGh1cyB0aGVyZSBpcyBz dGlsbCBhCisJICogcmFjZSB3aGVyZSB0aGUgcmVxdWVzdCBjb3VsZCBjb21wbGV0ZSBiZWZvcmUg dGhlIGludGVycnVwdCBoYXMKKwkgKiBiZWVuIGVuYWJsZWQuIFRodXMgY2FyZSBtdXN0IGJlIHRh a2VuIGF0IHRoYXQgcG9pbnQuCisJICovCisKKwkvKiBIYXZlIGludGVycnVwdHMgYWxyZWFkeSBi ZWVuIHJlcXVlc3RlZD8gKi8KKwlpZiAocmVxLT5zaWduYWxfcmVxdWVzdGVkKQorCQlpOTE1X2dl bV9yZXF1ZXN0X2VuYWJsZV9pbnRlcnJ1cHQocmVxLCBmYWxzZSk7Cit9CisKKy8qCisgKiBUaGUg cmVxdWVzdCBpcyBiZWluZyBhY3RpdmVseSB3YWl0ZWQgb24sIHNvIGVuYWJsZSBpbnRlcnJ1cHQg YmFzZWQKKyAqIGNvbXBsZXRpb24gc2lnbmFsbGluZy4KKyAqLwordm9pZCBpOTE1X2dlbV9yZXF1 ZXN0X2VuYWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJ CQkJICAgICAgIGJvb2wgZmVuY2VfbG9ja2VkKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocmVxLT5lbmdpbmUtPmRldik7CisJY29uc3QgYm9vbCBpcnFf dGVzdF9pbl9wcm9ncmVzcyA9CisJCUFDQ0VTU19PTkNFKGRldl9wcml2LT5ncHVfZXJyb3IudGVz dF9pcnFfcmluZ3MpICYKKwkJCQkJCWludGVsX2VuZ2luZV9mbGFnKHJlcS0+ZW5naW5lKTsKKwor CWlmIChyZXEtPmlycV9lbmFibGVkKQorCQlyZXR1cm47CisKKwlpZiAoaXJxX3Rlc3RfaW5fcHJv Z3Jlc3MpCisJCXJldHVybjsKKworCWlmICghV0FSTl9PTighcmVxLT5lbmdpbmUtPmlycV9nZXQo cmVxLT5lbmdpbmUpKSkKKwkJcmVxLT5pcnFfZW5hYmxlZCA9IHRydWU7CisKKwkvKgorCSAqIEJl Y2F1c2UgdGhlIGludGVycnVwdCBpcyBvbmx5IGVuYWJsZWQgb24gZGVtYW5kLCB0aGVyZSBpcyBh IHJhY2UKKwkgKiB3aGVyZSB0aGUgaW50ZXJydXB0IGNhbiBmaXJlIGJlZm9yZSBhbnlvbmUgaXMg bG9va2luZyBmb3IgaXQuIFNvCisJICogZG8gYW4gZXhwbGljaXQgY2hlY2sgZm9yIG1pc3NlZCBp bnRlcnJ1cHRzLgorCSAqLworCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+ZW5naW5lLCBm ZW5jZV9sb2NrZWQpOwogfQogCi1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBs ZXRlZChzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKK3N0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVl c3RfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfZmVuY2UsCiAJCQkJ CQkgdHlwZW9mKCpyZXEpLCBmZW5jZSk7CisKKwkvKgorCSAqIE5vIG5lZWQgdG8gYWN0dWFsbHkg ZW5hYmxlIGludGVycnVwdCBiYXNlZCBwcm9jZXNzaW5nIHVudGlsIHRoZQorCSAqIHJlcXVlc3Qg aGFzIGJlZW4gc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZS4gQXQgd2hpY2ggcG9pbnQKKwkgKiAn aTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoKScgaXMgY2FsbGVkLiBTbyBvbmx5IHJlYWxseSBlbmFi bGUKKwkgKiBzaWduYWxsaW5nIGluIHRoZXJlLiBKdXN0IHNldCBhIGZsYWcgdG8gc2F5IHRoYXQg aW50ZXJydXB0cyBhcmUKKwkgKiB3YW50ZWQgd2hlbiB0aGUgcmVxdWVzdCBpcyBldmVudHVhbGx5 IHN1Ym1pdHRlZC4gT24gdGhlIG90aGVyIGhhbmQKKwkgKiBpZiB0aGUgcmVxdWVzdCBoYXMgYWxy ZWFkeSBiZWVuIHN1Ym1pdHRlZCB0aGVuIGludGVycnVwdHMgZG8gbmVlZAorCSAqIHRvIGJlIGVu YWJsZWQgbm93LgorCSAqLworCisJcmVxLT5zaWduYWxfcmVxdWVzdGVkID0gdHJ1ZTsKKworCWlm ICghbGlzdF9lbXB0eSgmcmVxLT5zaWduYWxfbGluaykpCisJCWk5MTVfZ2VtX3JlcXVlc3RfZW5h YmxlX2ludGVycnVwdChyZXEsIHRydWUpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgaTkx NV9nZW1fcmVxdWVzdF9ub3RpZnkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29s IGZlbmNlX2xvY2tlZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgKnJl cV9uZXh0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTMyIHNlcW5vOwogCi0Jc2Vxbm8gPSBy ZXEtPmVuZ2luZS0+Z2V0X3NlcW5vKHJlcS0+ZW5naW5lKTsKKwlpZiAobGlzdF9lbXB0eSgmZW5n aW5lLT5mZW5jZV9zaWduYWxfbGlzdCkpCisJCXJldHVybjsKKworCWlmICghZmVuY2VfbG9ja2Vk KQorCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5mZW5jZV9sb2NrLCBmbGFncyk7CisKKwlp ZiAoZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKKwkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmll cihlbmdpbmUpOworCXNlcW5vID0gZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKTsKKworCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHJlcV9uZXh0LCAmZW5naW5lLT5mZW5jZV9zaWduYWxf bGlzdCwgc2lnbmFsX2xpbmspIHsKKwkJaWYgKCFyZXEtPmNhbmNlbGxlZCkgeworCQkJaWYgKCFp OTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFubykpCisJCQkJYnJlYWs7CisJCX0KKwor CQkvKgorCQkgKiBTdGFydCBieSByZW1vdmluZyB0aGUgZmVuY2UgZnJvbSB0aGUgc2lnbmFsIGxp c3Qgb3RoZXJ3aXNlCisJCSAqIHRoZSByZXRpcmUgY29kZSBjYW4gcnVuIGNvbmN1cnJlbnRseSBh bmQgZ2V0IGNvbmZ1c2VkLgorCQkgKi8KKwkJbGlzdF9kZWxfaW5pdCgmcmVxLT5zaWduYWxfbGlu ayk7CiAKLQlyZXR1cm4gaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pOworCQlp ZiAoIXJlcS0+Y2FuY2VsbGVkKQorCQkJZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcmVxLT5mZW5jZSk7 CisKKwkJaWYgKHJlcS0+aXJxX2VuYWJsZWQpIHsKKwkJCXJlcS0+ZW5naW5lLT5pcnFfcHV0KHJl cS0+ZW5naW5lKTsKKwkJCXJlcS0+aXJxX2VuYWJsZWQgPSBmYWxzZTsKKwkJfQorCisJCWk5MTVf Z2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxKTsKKwl9CisKKwlpZiAoIWZlbmNlX2xvY2tlZCkK KwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5mZW5jZV9sb2NrLCBmbGFncyk7CiB9 CiAKIHN0YXRpYyBjb25zdCBjaGFyICppOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJfbmFtZShz dHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKQEAgLTI3OTYsNyArMjk3Miw2IEBAIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX3JlcXVlc3RfZmVuY2VfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNl LAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZlbmNlX29wcyBpOTE1X2dlbV9yZXF1ZXN0X2ZvcHMg PSB7CiAJLmVuYWJsZV9zaWduYWxpbmcJPSBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxp bmcsCi0JLnNpZ25hbGVkCQk9IGk5MTVfZ2VtX3JlcXVlc3RfaXNfY29tcGxldGVkLAogCS53YWl0 CQkJPSBmZW5jZV9kZWZhdWx0X3dhaXQsCiAJLnJlbGVhc2UJCT0gaTkxNV9nZW1fcmVxdWVzdF9m cmVlLAogCS5nZXRfZHJpdmVyX25hbWUJPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJfbmFt ZSwKQEAgLTI4ODIsNiArMzA1Nyw3IEBAIF9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJcmVxLT5jdHggID0gY3R4OwogCWk5MTVfZ2VtX2Nv bnRleHRfcmVmZXJlbmNlKHJlcS0+Y3R4KTsKIAorCUlOSVRfTElTVF9IRUFEKCZyZXEtPnNpZ25h bF9saW5rKTsKIAlmZW5jZV9pbml0KCZyZXEtPmZlbmNlLCAmaTkxNV9nZW1fcmVxdWVzdF9mb3Bz LCAmZW5naW5lLT5mZW5jZV9sb2NrLAogCQkgICBjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5mZW5j ZV90aW1lbGluZS5mZW5jZV9jb250ZXh0LAogCQkgICBpOTE1X2ZlbmNlX3RpbWVsaW5lX2dldF9u ZXh0X3NlcW5vKCZjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5mZW5jZV90aW1lbGluZSkpOwpAQCAt MzAxNiw2ICszMTkyLDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9jbGVh bnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaTkxNV9nZW1fcmVxdWVz dF9yZXRpcmUocmVxdWVzdCk7CiAJfQogCisJLyoKKwkgKiBUaWR5IHVwIGFueXRoaW5nIGxlZnQg b3Zlci4gVGhpcyBpbmNsdWRlcyBhIGNhbGwgdG8KKwkgKiBpOTE1X2dlbV9yZXF1ZXN0X25vdGlm eSgpIHdoaWNoIHdpbGwgbWFrZSBzdXJlIHRoYXQgYW55IHJlcXVlc3RzCisJICogdGhhdCB3ZXJl IG9uIHRoZSBzaWduYWwgcGVuZGluZyBsaXN0IGdldCBhbHNvIGNsZWFuZWQgdXAuCisJICovCisJ aTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcoZW5naW5lKTsKKwogCS8qIEhhdmluZyBmbHVz aGVkIGFsbCByZXF1ZXN0cyBmcm9tIGFsbCBxdWV1ZXMsIHdlIGtub3cgdGhhdCBhbGwKIAkgKiBy aW5nYnVmZmVycyBtdXN0IG5vdyBiZSBlbXB0eS4gSG93ZXZlciwgc2luY2Ugd2UgZG8gbm90IHJl Y2xhaW0KIAkgKiBhbGwgc3BhY2Ugd2hlbiByZXRpcmluZyB0aGUgcmVxdWVzdCAodG8gcHJldmVu dCBIRUFEcyBjb2xsaWRpbmcKQEAgLTMwNjIsNiArMzI0NSwxMyBAQCBpOTE1X2dlbV9yZXRpcmVf cmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJV0FSTl9P TihpOTE1X3ZlcmlmeV9saXN0cyhlbmdpbmUtPmRldikpOwogCisJLyoKKwkgKiBJZiBuby1vbmUg aGFzIHdhaXRlZCBvbiBhIHJlcXVlc3QgcmVjZW50bHkgdGhlbiBpbnRlcnJ1cHRzIHdpbGwKKwkg KiBub3QgaGF2ZSBiZWVuIGVuYWJsZWQgYW5kIHRodXMgbm8gcmVxdWVzdHMgd2lsbCBldmVyIGJl IG1hcmtlZCBhcworCSAqIGNvbXBsZXRlZC4gU28gZG8gYW4gaW50ZXJydXB0IGNoZWNrIG5vdy4K KwkgKi8KKwlpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShlbmdpbmUsIGZhbHNlKTsKKwogCS8qIFJl dGlyZSByZXF1ZXN0cyBmaXJzdCBhcyB3ZSB1c2UgaXQgYWJvdmUgZm9yIHRoZSBlYXJseSByZXR1 cm4uCiAJICogSWYgd2UgcmV0aXJlIHJlcXVlc3RzIGxhc3QsIHdlIG1heSB1c2UgYSBsYXRlciBz ZXFubyBhbmQgc28gY2xlYXIKIAkgKiB0aGUgcmVxdWVzdHMgbGlzdHMgd2l0aG91dCBjbGVhcmlu ZyB0aGUgYWN0aXZlIGxpc3QsIGxlYWRpbmcgdG8KQEAgLTUwOTgsNiArNTI4OCw3IEBAIGluaXRf ZW5naW5lX2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlJTklUX0xJ U1RfSEVBRCgmZW5naW5lLT5hY3RpdmVfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ cmVxdWVzdF9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5mZW5jZV9zaWduYWxfbGlz dCk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDdhMDc5ODcuLjdjZGQw NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtMTAwMiw2ICsxMDAyLDggQEAgc3RhdGlj IHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXRyYWNl X2k5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KGVuZ2luZSk7CiAJZW5naW5lLT51c2VyX2ludGVycnVw dHMrKzsKIAorCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KGVuZ2luZSwgZmFsc2UpOworCiAJd2Fr ZV91cF9hbGwoJmVuZ2luZS0+aXJxX3F1ZXVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwppbmRleCAxOTlhYTZlLi43ODU4NTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt MTk3NSw2ICsxOTc1LDcgQEAgbG9naWNhbF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVuZ2luZS0+ZGV2ID0gZGV2Owog CUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmFjdGl2ZV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgm ZW5naW5lLT5yZXF1ZXN0X2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmZlbmNlX3Np Z25hbF9saXN0KTsKIAlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5mZW5jZV9sb2NrKTsKIAlpOTE1 X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmZW5naW5lLT5iYXRjaF9wb29sKTsKIAlpbml0X3dh aXRxdWV1ZV9oZWFkKCZlbmdpbmUtPmlycV9xdWV1ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMKaW5kZXggNjcxZTQ5Yy4uYTJjZmQxMCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMjI4Nyw2ICsyMjg3LDcgQEAgc3RhdGljIGludCBp bnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJSU5JVF9MSVNU X0hFQUQoJmVuZ2luZS0+cmVxdWVzdF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5l eGVjbGlzdF9xdWV1ZSk7CiAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+YnVmZmVycyk7CisJSU5J VF9MSVNUX0hFQUQoJmVuZ2luZS0+ZmVuY2Vfc2lnbmFsX2xpc3QpOwogCXNwaW5fbG9ja19pbml0 KCZlbmdpbmUtPmZlbmNlX2xvY2spOwogCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZl bmdpbmUtPmJhdGNoX3Bvb2wpOwogCW1lbXNldChlbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5v LCAwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDUxMGVkNTgu LjExMzY0NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTM0 Nyw2ICszNDcsNyBAQCBzdHJ1Y3QgIGludGVsX2VuZ2luZV9jcyB7CiAJdTMyICgqZ2V0X2NtZF9s ZW5ndGhfbWFzaykodTMyIGNtZF9oZWFkZXIpOwogCiAJc3BpbmxvY2tfdCBmZW5jZV9sb2NrOwor CXN0cnVjdCBsaXN0X2hlYWQgZmVuY2Vfc2lnbmFsX2xpc3Q7CiB9OwogCiBzdGF0aWMgaW5saW5l IGJvb2wKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK