From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH v9 4/6] drm/i915: Interrupt driven fences Date: Wed, 1 Jun 2016 18:07:26 +0100 Message-ID: <1464800848-36672-5-git-send-email-John.C.Harrison@Intel.com> References: <1464800848-36672-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 6EA706EA01 for ; Wed, 1 Jun 2016 17:08:31 +0000 (UTC) In-Reply-To: <1464800848-36672-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 cmVlIG1lc3MgaXMgbmVlZGVkIGFueSBtb3JlLgoKdjk6IE1vdmVkIHRoZSByZXF1ZXN0IGNvbXBs ZXRpb24gcHJvY2Vzc2luZyBvdXQgb2YgdGhlIGludGVycnVwdApoYW5kbGVyIGFuZCBpbnRvIGEg d29ya2VyIHRocmVhZCAoQ2hyaXMgV2lsc29uKS4KCkZvcjogVklaLTUxOTAKU2lnbmVkLW9mZi1i eTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KQ2M6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMgICAgICAgICB8ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgIDExICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j ICAgICAgICAgfCAyNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaCB8ICAgMyArCiA3IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCAyMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCAwN2VkYWVkLi5mOGY2MGJi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTEwMTksOSArMTAxOSwxMyBAQCBzdGF0aWMg aW50IGk5MTVfd29ya3F1ZXVlc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlpZiAoZGV2X3ByaXYtPndxID09IE5VTEwpCiAJCWdvdG8gb3V0X2VycjsKIAorCWRldl9w cml2LT5yZXFfd3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgiaTkxNS1ycSIsIDApOworCWlm IChkZXZfcHJpdi0+cmVxX3dxID09IE5VTEwpCisJCWdvdG8gb3V0X2ZyZWVfd3E7CisKIAlkZXZf cHJpdi0+aG90cGx1Zy5kcF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWRwIiwg MCk7CiAJaWYgKGRldl9wcml2LT5ob3RwbHVnLmRwX3dxID09IE5VTEwpCi0JCWdvdG8gb3V0X2Zy ZWVfd3E7CisJCWdvdG8gb3V0X2ZyZWVfcmVxX3dxOwogCiAJZGV2X3ByaXYtPmdwdV9lcnJvci5o YW5nY2hlY2tfd3EgPQogCQlhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgiaTkxNS1oYW5nY2hlY2si LCAwKTsKQEAgLTEwMzIsNiArMTAzNiw4IEBAIHN0YXRpYyBpbnQgaTkxNV93b3JrcXVldWVzX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiBvdXRfZnJlZV9kcF93cToK IAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+aG90cGx1Zy5kcF93cSk7CitvdXRfZnJlZV9y ZXFfd3E6CisJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPnJlcV93cSk7CiBvdXRfZnJlZV93 cToKIAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwogb3V0X2VycjoKQEAgLTEwNDQs NiArMTA1MCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJp di0+Z3B1X2Vycm9yLmhhbmdjaGVja193cSk7CiAJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYt PmhvdHBsdWcuZHBfd3EpOworCWRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT5yZXFfd3EpOwog CWRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT53cSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IDY5YzM0MTIuLjVhN2YyNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt MTg1MSw2ICsxODUxLDkgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCSAqLwogCXN0cnVj dCB3b3JrcXVldWVfc3RydWN0ICp3cTsKIAorCS8qIFdvcmsgcXVldWUgZm9yIHJlcXVlc3QgY29t cGxldGlvbiBwcm9jZXNzaW5nICovCisJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnJlcV93cTsK KwogCS8qIERpc3BsYXkgZnVuY3Rpb25zICovCiAJc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVu Y3MgZGlzcGxheTsKIApAQCAtMjM1OSw2ICsyMzYyLDEwIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCB7CiAJICovCiAJc3RydWN0IGZlbmNlIGZlbmNlOwogCXN0cnVjdCByY3VfaGVhZCBy Y3VfaGVhZDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9saW5rOworCWJvb2wgY2FuY2VsbGVk OworCWJvb2wgaXJxX2VuYWJsZWQ7CisJYm9vbCBzaWduYWxfcmVxdWVzdGVkOwogCiAJLyoqIE9u IFdoaWNoIHJpbmcgdGhpcyByZXF1ZXN0IHdhcyBnZW5lcmF0ZWQgKi8KIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNTsKQEAgLTI0NjAsNiArMjQ2NywxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3Qgewogc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICogX19tdXN0X2NoZWNr CiBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK IAkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwordm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X2VuYWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs CisJCQkJICAgICAgIGJvb2wgZmVuY2VfbG9ja2VkKTsKK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9u b3RpZnkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9vbCBmZW5jZV9sb2NrZWQpOwor dm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwog CiBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA5 N2UzMTM4Li44M2NmOWIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTM5LDYgKzM5LDgg QEAKICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAK K3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKTsKKwogc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93 cml0ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiBzdGF0aWMgdm9p ZCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCkBAIC0xMjM3LDkgKzEyMzksOCBAQCBpbnQg X19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIHsK IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9l bmdpbmUocmVxKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5 MTU7Ci0JY29uc3QgYm9vbCBpcnFfdGVzdF9pbl9wcm9ncmVzcyA9Ci0JCUFDQ0VTU19PTkNFKGRl dl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MpICYgaW50ZWxfZW5naW5lX2ZsYWcoZW5n aW5lKTsKIAlpbnQgc3RhdGUgPSBpbnRlcnJ1cHRpYmxlID8gVEFTS19JTlRFUlJVUFRJQkxFIDog VEFTS19VTklOVEVSUlVQVElCTEU7CisJdWludDMyX3Qgc2Vxbm87CiAJREVGSU5FX1dBSVQod2Fp dCk7CiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0X2V4cGlyZTsKIAlzNjQgYmVmb3JlID0gMDsgLyog T25seSB0byBzaWxlbmNlIGEgY29tcGlsZXIgd2FybmluZy4gKi8KQEAgLTEyNDcsOSArMTI0OCw2 IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCiAJV0FSTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSwgIklSUXMgZGlzYWJs ZWQiKTsKIAotCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpc3QpKQotCQlyZXR1cm4gMDsKLQogCWlm IChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQogCQlyZXR1cm4gMDsKIApAQCAtMTI3 NSwxNSArMTI3MywxNyBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKIAl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X3dhaXRfYmVnaW4ocmVx KTsKIAogCS8qIE9wdGltaXN0aWMgc3BpbiBmb3IgdGhlIG5leHQgamlmZmllIGJlZm9yZSB0b3Vj aGluZyBJUlFzICovCi0JcmV0ID0gX19pOTE1X3NwaW5fcmVxdWVzdChyZXEsIHN0YXRlKTsKLQlp ZiAocmV0ID09IDApCi0JCWdvdG8gb3V0OwotCi0JaWYgKCFpcnFfdGVzdF9pbl9wcm9ncmVzcyAm JiBXQVJOX09OKCFlbmdpbmUtPmlycV9nZXQoZW5naW5lKSkpIHsKLQkJcmV0ID0gLUVOT0RFVjsK LQkJZ290byBvdXQ7CisJaWYgKHJlcS0+c2Vxbm8pIHsKKwkJcmV0ID0gX19pOTE1X3NwaW5fcmVx dWVzdChyZXEsIHN0YXRlKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJZ290byBvdXQ7CiAJfQogCisJ LyoKKwkgKiBFbmFibGUgaW50ZXJydXB0IGNvbXBsZXRpb24gb2YgdGhlIHJlcXVlc3QuCisJICov CisJZmVuY2VfZW5hYmxlX3N3X3NpZ25hbGluZygmcmVxLT5mZW5jZSk7CisKIAlmb3IgKDs7KSB7 CiAJCXN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogCkBAIC0xMzA2LDYgKzEzMDYsMjEgQEAgaW50 IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJ CQlicmVhazsKIAkJfQogCisJCWlmIChyZXEtPnNlcW5vKSB7CisJCQkvKgorCQkJICogVGhlcmUg aXMgcXVpdGUgYSBsb3Qgb2YgbGF0ZW5jeSBpbiB0aGUgdXNlciBpbnRlcnJ1cHQKKwkJCSAqIHBh dGguIFNvIGRvIGFuIGV4cGxpY2l0IHNlcW5vIGNoZWNrIGFuZCBwb3RlbnRpYWxseQorCQkJICog cmVtb3ZlIGFsbCB0aGF0IGRlbGF5LgorCQkJICovCisJCQlpZiAocmVxLT5lbmdpbmUtPmlycV9z ZXFub19iYXJyaWVyKQorCQkJCXJlcS0+ZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcihyZXEtPmVu Z2luZSk7CisJCQlzZXFubyA9IGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSk7CisJCQlpZiAoaTkx NV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pKSB7CisJCQkJcmV0ID0gMDsKKwkJCQli cmVhazsKKwkJCX0KKwkJfQorCiAJCWlmIChzaWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgY3Vy cmVudCkpIHsKIAkJCXJldCA9IC1FUkVTVEFSVFNZUzsKIAkJCWJyZWFrOwpAQCAtMTMzMiwxNCAr MTM0NywzMiBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKIAkJCWRlc3Ryb3lfdGltZXJfb25fc3RhY2soJnRpbWVyKTsKIAkJfQogCX0K LQlpZiAoIWlycV90ZXN0X2luX3Byb2dyZXNzKQotCQllbmdpbmUtPmlycV9wdXQoZW5naW5lKTsK IAogCWZpbmlzaF93YWl0KCZlbmdpbmUtPmlycV9xdWV1ZSwgJndhaXQpOwogCiBvdXQ6CiAJdHJh Y2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0X2VuZChyZXEpOwogCisJaWYgKChyZXQgPT0gMCkgJiYg KHJlcS0+c2Vxbm8pKSB7CisJCWlmIChyZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIpCisJ CQlyZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIocmVxLT5lbmdpbmUpOworCQlzZXFubyA9 IGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSk7CisJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChzZXFu bywgcmVxLT5zZXFubykgJiYKKwkJICAgICFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEp KSB7CisJCQkvKgorCQkJICogTWFrZSBzdXJlIHRoZSByZXF1ZXN0IGlzIG1hcmtlZCBhcyBjb21w bGV0ZWQgYmVmb3JlCisJCQkgKiByZXR1cm5pbmcuIE5COiBOZWVkIHRvIGFjcXVpcmUgdGhlIHNw aW5sb2NrIGFyb3VuZAorCQkJICogdGhlIHdob2xlIGNhbGwgdG8gYXZvaWQgYSByYWNlIGNvbmRp dGlvbiB3aXRoIHRoZQorCQkJICogaW50ZXJydXB0IGhhbmRsZXIgaXMgcnVubmluZyBjb25jdXJy ZW50bHkgYW5kIGNvdWxkCisJCQkgKiBjYXVzZSB0aGlzIGludm9jYXRpb24gdG8gZWFybHkgZXhp dCBldmVuIHRob3VnaCB0aGUKKwkJCSAqIHJlcXVlc3QgaGFzIG5vdCBhY3R1YWxseSBiZWVuIGZ1 bGx5IHByb2Nlc3NlZCB5ZXQuCisJCQkgKi8KKwkJCXNwaW5fbG9ja19pcnEoJnJlcS0+ZW5naW5l LT5mZW5jZV9sb2NrKTsKKwkJCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+ZW5naW5lLCB0 cnVlKTsKKwkJCXNwaW5fdW5sb2NrX2lycSgmcmVxLT5lbmdpbmUtPmZlbmNlX2xvY2spOworCQl9 CisJfQorCiAJaWYgKHRpbWVvdXQpIHsKIAkJczY0IHRyZXMgPSAqdGltZW91dCAtIChrdGltZV9n ZXRfcmF3X25zKCkgLSBiZWZvcmUpOwogCkBAIC0xNDA1LDYgKzE0MzgsMTEgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQogewogCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHJlcXVlc3QpOwogCisJ aWYgKHJlcXVlc3QtPmlycV9lbmFibGVkKSB7CisJCXJlcXVlc3QtPmVuZ2luZS0+aXJxX3B1dChy ZXF1ZXN0LT5lbmdpbmUpOworCQlyZXF1ZXN0LT5pcnFfZW5hYmxlZCA9IGZhbHNlOworCX0KKwog CS8qIFdlIGtub3cgdGhlIEdQVSBtdXN0IGhhdmUgcmVhZCB0aGUgcmVxdWVzdCB0byBoYXZlCiAJ ICogc2VudCB1cyB0aGUgc2Vxbm8gKyBpbnRlcnJ1cHQsIHNvIHVzZSB0aGUgcG9zaXRpb24KIAkg KiBvZiB0YWlsIG9mIHRoZSByZXF1ZXN0IHRvIHVwZGF0ZSB0aGUgbGFzdCBrbm93biBwb3NpdGlv bgpAQCAtMTQxOCw2ICsxNDU2LDIyIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0 aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlsaXN0X2RlbF9pbml0 KCZyZXF1ZXN0LT5saXN0KTsKIAlpOTE1X2dlbV9yZXF1ZXN0X3JlbW92ZV9mcm9tX2NsaWVudChy ZXF1ZXN0KTsKIAorCS8qCisJICogSW4gY2FzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBpbiB0aGUg c2lnbmFsIHBlbmRpbmcgbGlzdCwKKwkgKiBlLmcuIGR1ZSB0byBiZWluZyBjYW5jZWxsZWQgYnkg VERSLCBwcmVlbXB0aW9uLCBldGMuCisJICovCisJaWYgKCFsaXN0X2VtcHR5KCZyZXF1ZXN0LT5z aWduYWxfbGluaykpIHsKKwkJLyoKKwkJICogVGhlIHJlcXVlc3QgbXVzdCBiZSBtYXJrZWQgYXMg Y2FuY2VsbGVkIGFuZCB0aGUgdW5kZXJseWluZworCQkgKiBmZW5jZSBhcyBmYWlsZWQuIE5COiBU aGVyZSBpcyBubyBleHBsaWNpdCBmZW5jZSBmYWlsIEFQSSwKKwkJICogdGhlcmUgaXMgb25seSBh IG1hbnVhbCBwb2tlIGFuZCBzaWduYWwuCisJCSAqLworCQlyZXF1ZXN0LT5jYW5jZWxsZWQgPSB0 cnVlOworCQkvKiBIb3cgdG8gcHJvcGFnYXRlIHRvIGFueSBhc3NvY2lhdGVkIHN5bmNfZmVuY2U/ Pz8gKi8KKwkJcmVxdWVzdC0+ZmVuY2Uuc3RhdHVzID0gLUVJTzsKKwkJZmVuY2Vfc2lnbmFsX2xv Y2tlZCgmcmVxdWVzdC0+ZmVuY2UpOworCX0KKwogCWlmIChyZXF1ZXN0LT5wcmV2aW91c19jb250 ZXh0KSB7CiAJCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCiAJCQlpbnRlbF9scl9jb250ZXh0 X3VucGluKHJlcXVlc3QtPnByZXZpb3VzX2NvbnRleHQsCkBAIC0yNjcwLDYgKzI3MjQsMTIgQEAg dm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0LAogCSAqLwogCXJlcXVlc3QtPnBvc3RmaXggPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmdi dWYpOwogCisJLyoKKwkgKiBBZGQgdGhlIGZlbmNlIHRvIHRoZSBwZW5kaW5nIGxpc3QgYmVmb3Jl IGVtaXR0aW5nIHRoZSBjb21tYW5kcyB0bworCSAqIGdlbmVyYXRlIGEgc2Vxbm8gbm90aWZpY2F0 aW9uIGludGVycnVwdC4KKwkgKi8KKwlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0KTsK KwogCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCiAJCXJldCA9IGVuZ2luZS0+ZW1pdF9yZXF1 ZXN0KHJlcXVlc3QpOwogCWVsc2UgewpAQCAtMjc1NSwyNSArMjgxNSwxNTQgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQogCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwogCiAJcmVxID0gY29udGFpbmVyX29mKHJlcV9m ZW5jZSwgdHlwZW9mKCpyZXEpLCBmZW5jZSk7CisKKwlXQVJOX09OKHJlcS0+aXJxX2VuYWJsZWQp OworCiAJY2FsbF9yY3UoJnJlcS0+cmN1X2hlYWQsIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZV9yY3Up OwogfQogCi1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxpbmcoc3Ry dWN0IGZlbmNlICpyZXFfZmVuY2UpCisvKgorICogVGhlIHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUg c3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZSBzbyBhZGQgdGhlIGZlbmNlIHRvCisgKiB0aGUgbGlz dCBvZiBzaWduYWxhYmxlIGZlbmNlcy4KKyAqCisgKiBOQjogVGhpcyBkb2VzIG5vdCBuZWNlc3Nh cmlseSBlbmFibGUgaW50ZXJydXB0cyB5ZXQuIFRoYXQgb25seSBvY2N1cnMgb24KKyAqIGRlbWFu ZCB3aGVuIHRoZSByZXF1ZXN0IGlzIGFjdHVhbGx5IHdhaXRlZCBvbi4gSG93ZXZlciwgYWRkaW5n IGl0IHRvIHRoZQorICogbGlzdCBlYXJseSBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBj b25kaXRpb24gd2hlcmUgdGhlIGludGVycnVwdAorICogY291bGQgcG9wIG91dCBwcmVtYXR1cmVs eSBhbmQgdGh1cyBiZSBjb21wbGV0ZWx5IGxvc3QuIFRoZSByYWNlIGlzIG1lcmVseQorICogdGhh dCB0aGUgaW50ZXJydXB0IG11c3QgYmUgbWFudWFsbHkgY2hlY2tlZCBmb3IgYWZ0ZXIgYmVpbmcg ZW5hYmxlZC4KKyAqLworc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0JLyogSW50ZXJydXB0IGRyaXZlbiBmZW5j ZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuKi8KLQlXQVJOKHRydWUsICJUaGlzIHNob3VsZCBu b3QgYmUgY2FsbGVkISIpOwotCXJldHVybiB0cnVlOworCS8qCisJICogQWx3YXlzIGVuYWJsZSBz aWduYWwgcHJvY2Vzc2luZyBmb3IgdGhlIHJlcXVlc3QncyBmZW5jZSBvYmplY3QKKwkgKiBiZWZv cmUgdGhhdCByZXF1ZXN0IGlzIHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUuIFRodXMgdGhlcmUg aXMgbm8KKwkgKiByYWNlIGNvbmRpdGlvbiB3aGVyZWJ5IHRoZSBpbnRlcnJ1cHQgY291bGQgcG9w IG91dCBiZWZvcmUgdGhlCisJICogcmVxdWVzdCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc2lnbmFs IGxpc3QuIEhlbmNlIG5vIG5lZWQgdG8gY2hlY2sKKwkgKiBmb3IgY29tcGxldGlvbiwgdW5kbyB0 aGUgbGlzdCBhZGQgYW5kIHJldHVybiBmYWxzZS4KKwkgKi8KKwlpOTE1X2dlbV9yZXF1ZXN0X3Jl ZmVyZW5jZShyZXEpOworCXNwaW5fbG9ja19pcnEoJnJlcS0+ZW5naW5lLT5mZW5jZV9sb2NrKTsK KwlXQVJOX09OKCFsaXN0X2VtcHR5KCZyZXEtPnNpZ25hbF9saW5rKSk7CisJbGlzdF9hZGRfdGFp bCgmcmVxLT5zaWduYWxfbGluaywgJnJlcS0+ZW5naW5lLT5mZW5jZV9zaWduYWxfbGlzdCk7CisJ c3Bpbl91bmxvY2tfaXJxKCZyZXEtPmVuZ2luZS0+ZmVuY2VfbG9jayk7CisKKwkvKgorCSAqIE5C OiBJbnRlcnJ1cHRzIGFyZSBvbmx5IGVuYWJsZWQgb24gZGVtYW5kLiBUaHVzIHRoZXJlIGlzIHN0 aWxsIGEKKwkgKiByYWNlIHdoZXJlIHRoZSByZXF1ZXN0IGNvdWxkIGNvbXBsZXRlIGJlZm9yZSB0 aGUgaW50ZXJydXB0IGhhcworCSAqIGJlZW4gZW5hYmxlZC4gVGh1cyBjYXJlIG11c3QgYmUgdGFr ZW4gYXQgdGhhdCBwb2ludC4KKwkgKi8KKworCS8qIEhhdmUgaW50ZXJydXB0cyBhbHJlYWR5IGJl ZW4gcmVxdWVzdGVkPyAqLworCWlmIChyZXEtPnNpZ25hbF9yZXF1ZXN0ZWQpCisJCWk5MTVfZ2Vt X3JlcXVlc3RfZW5hYmxlX2ludGVycnVwdChyZXEsIGZhbHNlKTsKK30KKworLyoKKyAqIFRoZSBy ZXF1ZXN0IGlzIGJlaW5nIGFjdGl2ZWx5IHdhaXRlZCBvbiwgc28gZW5hYmxlIGludGVycnVwdCBi YXNlZAorICogY29tcGxldGlvbiBzaWduYWxsaW5nLgorICovCit2b2lkIGk5MTVfZ2VtX3JlcXVl c3RfZW5hYmxlX2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKKwkJ CQkgICAgICAgYm9vbCBmZW5jZV9sb2NrZWQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gcmVxLT5lbmdpbmUtPmk5MTU7CisJY29uc3QgYm9vbCBpcnFfdGVzdF9pbl9w cm9ncmVzcyA9CisJCUFDQ0VTU19PTkNFKGRldl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmlu Z3MpICYKKwkJCQkJCWludGVsX2VuZ2luZV9mbGFnKHJlcS0+ZW5naW5lKTsKKworCWlmIChyZXEt PmlycV9lbmFibGVkKQorCQlyZXR1cm47CisKKwlpZiAoaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MpCisJ CXJldHVybjsKKworCWlmICghV0FSTl9PTighcmVxLT5lbmdpbmUtPmlycV9nZXQocmVxLT5lbmdp bmUpKSkKKwkJcmVxLT5pcnFfZW5hYmxlZCA9IHRydWU7CisKKwkvKgorCSAqIEJlY2F1c2UgdGhl IGludGVycnVwdCBpcyBvbmx5IGVuYWJsZWQgb24gZGVtYW5kLCB0aGVyZSBpcyBhIHJhY2UKKwkg KiB3aGVyZSB0aGUgaW50ZXJydXB0IGNhbiBmaXJlIGJlZm9yZSBhbnlvbmUgaXMgbG9va2luZyBm b3IgaXQuIFNvCisJICogZG8gYW4gZXhwbGljaXQgY2hlY2sgZm9yIG1pc3NlZCBpbnRlcnJ1cHRz LgorCSAqLworCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+ZW5naW5lLCBmZW5jZV9sb2Nr ZWQpOwogfQogCi1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZChzdHJ1 Y3QgZmVuY2UgKnJlcV9mZW5jZSkKK3N0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxl X3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfZmVuY2UsCiAJCQkJCQkgdHlwZW9m KCpyZXEpLCBmZW5jZSk7CisKKwkvKgorCSAqIE5vIG5lZWQgdG8gYWN0dWFsbHkgZW5hYmxlIGlu dGVycnVwdCBiYXNlZCBwcm9jZXNzaW5nIHVudGlsIHRoZQorCSAqIHJlcXVlc3QgaGFzIGJlZW4g c3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZS4gQXQgd2hpY2ggcG9pbnQKKwkgKiAnaTkxNV9nZW1f cmVxdWVzdF9zdWJtaXQoKScgaXMgY2FsbGVkLiBTbyBvbmx5IHJlYWxseSBlbmFibGUKKwkgKiBz aWduYWxsaW5nIGluIHRoZXJlLiBKdXN0IHNldCBhIGZsYWcgdG8gc2F5IHRoYXQgaW50ZXJydXB0 cyBhcmUKKwkgKiB3YW50ZWQgd2hlbiB0aGUgcmVxdWVzdCBpcyBldmVudHVhbGx5IHN1Ym1pdHRl ZC4gT24gdGhlIG90aGVyIGhhbmQKKwkgKiBpZiB0aGUgcmVxdWVzdCBoYXMgYWxyZWFkeSBiZWVu IHN1Ym1pdHRlZCB0aGVuIGludGVycnVwdHMgZG8gbmVlZAorCSAqIHRvIGJlIGVuYWJsZWQgbm93 LgorCSAqLworCisJcmVxLT5zaWduYWxfcmVxdWVzdGVkID0gdHJ1ZTsKKworCWlmICghbGlzdF9l bXB0eSgmcmVxLT5zaWduYWxfbGluaykpCisJCWk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX2ludGVy cnVwdChyZXEsIHRydWUpOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qKgorICogaTkxNV9nZW1f cmVxdWVzdF93b3JrZXIgLSByZXF1ZXN0IHdvcmsgaGFuZGxlciBjYWxsYmFjay4KKyAqIEB3b3Jr OiBXb3JrIHN0cnVjdHVyZQorICogQ2FsbGVkIGluIHJlc3BvbnNlIHRvIGEgc2Vxbm8gaW50ZXJy dXB0IHRvIHByb2Nlc3MgdGhlIGNvbXBsZXRlZCByZXF1ZXN0cy4KKyAqLwordm9pZCBpOTE1X2dl bV9yZXF1ZXN0X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJZW5naW5lID0gY29udGFpbmVyX29mKHdvcmssIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MsIHJlcXVlc3Rfd29yayk7CisJaTkxNV9nZW1fcmVxdWVzdF9u b3RpZnkoZW5naW5lLCBmYWxzZSk7Cit9CisKK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnko c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIGZlbmNlX2xvY2tlZCkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgKnJlcV9uZXh0OworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAJdTMyIHNlcW5vOwogCi0Jc2Vxbm8gPSByZXEtPmVuZ2luZS0+Z2V0X3NlcW5v KHJlcS0+ZW5naW5lKTsKKwlpZiAobGlzdF9lbXB0eSgmZW5naW5lLT5mZW5jZV9zaWduYWxfbGlz dCkpCisJCXJldHVybjsKKworCWlmICghZmVuY2VfbG9ja2VkKQorCQlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5mZW5jZV9sb2NrLCBmbGFncyk7CiAKLQlyZXR1cm4gaTkxNV9zZXFub19wYXNz ZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pOworCWlmIChlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQor CQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7CisJc2Vxbm8gPSBlbmdpbmUtPmdl dF9zZXFubyhlbmdpbmUpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgcmVxX25l eHQsICZlbmdpbmUtPmZlbmNlX3NpZ25hbF9saXN0LCBzaWduYWxfbGluaykgeworCQlpZiAoIXJl cS0+Y2FuY2VsbGVkKSB7CisJCQlpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNl cW5vKSkKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIFN0YXJ0IGJ5IHJlbW92aW5nIHRo ZSBmZW5jZSBmcm9tIHRoZSBzaWduYWwgbGlzdCBvdGhlcndpc2UKKwkJICogdGhlIHJldGlyZSBj b2RlIGNhbiBydW4gY29uY3VycmVudGx5IGFuZCBnZXQgY29uZnVzZWQuCisJCSAqLworCQlsaXN0 X2RlbF9pbml0KCZyZXEtPnNpZ25hbF9saW5rKTsKKworCQlpZiAoIXJlcS0+Y2FuY2VsbGVkKQor CQkJZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcmVxLT5mZW5jZSk7CisKKwkJaWYgKHJlcS0+aXJxX2Vu YWJsZWQpIHsKKwkJCXJlcS0+ZW5naW5lLT5pcnFfcHV0KHJlcS0+ZW5naW5lKTsKKwkJCXJlcS0+ aXJxX2VuYWJsZWQgPSBmYWxzZTsKKwkJfQorCisJCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVu Y2UocmVxKTsKKwl9CisKKwlpZiAoIWZlbmNlX2xvY2tlZCkKKwkJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZW5naW5lLT5mZW5jZV9sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy ICppOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5j ZSkKQEAgLTI4MTYsNyArMzAwNSw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZmVu Y2VfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlLAogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IGZlbmNlX29wcyBpOTE1X2dlbV9yZXF1ZXN0X2ZvcHMgPSB7CiAJLmVuYWJsZV9zaWduYWxp bmcJPSBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxpbmcsCi0JLnNpZ25hbGVkCQk9IGk5 MTVfZ2VtX3JlcXVlc3RfaXNfY29tcGxldGVkLAogCS53YWl0CQkJPSBmZW5jZV9kZWZhdWx0X3dh aXQsCiAJLnJlbGVhc2UJCT0gaTkxNV9nZW1fcmVxdWVzdF9mcmVlLAogCS5nZXRfZHJpdmVyX25h bWUJPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJfbmFtZSwKQEAgLTI5MDIsNiArMzA5MCw3 IEBAIF9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCiAJcmVxLT5jdHggID0gY3R4OwogCWk5MTVfZ2VtX2NvbnRleHRfcmVmZXJlbmNlKHJlcS0+ Y3R4KTsKIAorCUlOSVRfTElTVF9IRUFEKCZyZXEtPnNpZ25hbF9saW5rKTsKIAlmZW5jZV9pbml0 KCZyZXEtPmZlbmNlLCAmaTkxNV9nZW1fcmVxdWVzdF9mb3BzLCAmZW5naW5lLT5mZW5jZV9sb2Nr LAogCQkgICBjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5mZW5jZV90aW1lbGluZS5mZW5jZV9jb250 ZXh0LAogCQkgICBpOTE1X2ZlbmNlX3RpbWVsaW5lX2dldF9uZXh0X3NlcW5vKCZjdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXS5mZW5jZV90aW1lbGluZSkpOwpAQCAtMzAzNiw2ICszMjI1LDEzIEBAIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUocmVxdWVzdCk7CiAJ fQogCisJLyoKKwkgKiBUaWR5IHVwIGFueXRoaW5nIGxlZnQgb3Zlci4gVGhpcyBpbmNsdWRlcyBh IGNhbGwgdG8KKwkgKiBpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeSgpIHdoaWNoIHdpbGwgbWFrZSBz dXJlIHRoYXQgYW55IHJlcXVlc3RzCisJICogdGhhdCB3ZXJlIG9uIHRoZSBzaWduYWwgcGVuZGlu ZyBsaXN0IGdldCBhbHNvIGNsZWFuZWQgdXAuCisJICovCisJaTkxNV9nZW1fcmV0aXJlX3JlcXVl c3RzX3JpbmcoZW5naW5lKTsKKwogCS8qIEhhdmluZyBmbHVzaGVkIGFsbCByZXF1ZXN0cyBmcm9t IGFsbCBxdWV1ZXMsIHdlIGtub3cgdGhhdCBhbGwKIAkgKiByaW5nYnVmZmVycyBtdXN0IG5vdyBi ZSBlbXB0eS4gSG93ZXZlciwgc2luY2Ugd2UgZG8gbm90IHJlY2xhaW0KIAkgKiBhbGwgc3BhY2Ug d2hlbiByZXRpcmluZyB0aGUgcmVxdWVzdCAodG8gcHJldmVudCBIRUFEcyBjb2xsaWRpbmcKQEAg LTMwODIsNiArMzI3OCwxMyBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJV0FSTl9PTihpOTE1X3ZlcmlmeV9saXN0cyhl bmdpbmUtPmRldikpOwogCisJLyoKKwkgKiBJZiBuby1vbmUgaGFzIHdhaXRlZCBvbiBhIHJlcXVl c3QgcmVjZW50bHkgdGhlbiBpbnRlcnJ1cHRzIHdpbGwKKwkgKiBub3QgaGF2ZSBiZWVuIGVuYWJs ZWQgYW5kIHRodXMgbm8gcmVxdWVzdHMgd2lsbCBldmVyIGJlIG1hcmtlZCBhcworCSAqIGNvbXBs ZXRlZC4gU28gZG8gYW4gaW50ZXJydXB0IGNoZWNrIG5vdy4KKwkgKi8KKwlpOTE1X2dlbV9yZXF1 ZXN0X25vdGlmeShlbmdpbmUsIGZhbHNlKTsKKwogCS8qIFJldGlyZSByZXF1ZXN0cyBmaXJzdCBh cyB3ZSB1c2UgaXQgYWJvdmUgZm9yIHRoZSBlYXJseSByZXR1cm4uCiAJICogSWYgd2UgcmV0aXJl IHJlcXVlc3RzIGxhc3QsIHdlIG1heSB1c2UgYSBsYXRlciBzZXFubyBhbmQgc28gY2xlYXIKIAkg KiB0aGUgcmVxdWVzdHMgbGlzdHMgd2l0aG91dCBjbGVhcmluZyB0aGUgYWN0aXZlIGxpc3QsIGxl YWRpbmcgdG8KQEAgLTUxMDIsNiArNTMwNSw3IEBAIGluaXRfZW5naW5lX2xpc3RzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5hY3Rp dmVfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+cmVxdWVzdF9saXN0KTsKKwlJTklU X0xJU1RfSEVBRCgmZW5naW5lLT5mZW5jZV9zaWduYWxfbGlzdCk7CiB9CiAKIHZvaWQKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCmluZGV4IGY3ODA0MjEuLmE4N2EzYzUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwpAQCAtOTk0LDYgKzk5NCw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X25vdGlm eShlbmdpbmUpOwogCWVuZ2luZS0+dXNlcl9pbnRlcnJ1cHRzKys7CiAKKwlxdWV1ZV93b3JrKGVu Z2luZS0+aTkxNS0+cmVxX3dxLCAmZW5naW5lLT5yZXF1ZXN0X3dvcmspOworCiAJd2FrZV91cF9h bGwoJmVuZ2luZS0+aXJxX3F1ZXVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRl eCBmMTI2YmNiLi4xMzQ3NTlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTg3OSw2 ICsxODc5LDggQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAKIAlkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKIAorCWNhbmNl bF93b3JrX3N5bmMoJmVuZ2luZS0+cmVxdWVzdF93b3JrKTsKKwogCWlmIChlbmdpbmUtPmJ1ZmZl cikgewogCQlpbnRlbF9sb2dpY2FsX3Jpbmdfc3RvcChlbmdpbmUpOwogCQlXQVJOX09OKChJOTE1 X1JFQURfTU9ERShlbmdpbmUpICYgTU9ERV9JRExFKSA9PSAwKTsKQEAgLTIwMjcsNiArMjAyOSw3 IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIGludGVs X2VuZ2luZV9pZCBpZCkKIAogCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmFjdGl2ZV9saXN0KTsK IAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3QpOworCUlOSVRfTElTVF9IRUFE KCZlbmdpbmUtPmZlbmNlX3NpZ25hbF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5i dWZmZXJzKTsKIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7CiAJc3Bp bl9sb2NrX2luaXQoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CkBAIC0yMDM1LDYgKzIwMzgsOCBA QCBsb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQpCiAJdGFza2xldF9pbml0KCZlbmdpbmUtPmlycV90YXNrbGV0LAogCQkgICAg IGludGVsX2xyY19pcnFfaGFuZGxlciwgKHVuc2lnbmVkIGxvbmcpZW5naW5lKTsKIAorCUlOSVRf V09SSygmZW5naW5lLT5yZXF1ZXN0X3dvcmssIGk5MTVfZ2VtX3JlcXVlc3Rfd29ya2VyKTsKKwog CWxvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFudHMoZW5naW5lKTsKIAlsb2dpY2Fs X3JpbmdfZGVmYXVsdF92ZnVuY3MoZW5naW5lKTsKIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFz KGVuZ2luZSwgaW5mby0+aXJxX3NoaWZ0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwppbmRleCBmYmQzZjEyLi4xNjQxMDk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCkBAIC0yMjU0LDYgKzIyNTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2lu aXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlJTklUX0xJU1RfSEVBRCgm ZW5naW5lLT5yZXF1ZXN0X2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0 X3F1ZXVlKTsKIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5idWZmZXJzKTsKKwlJTklUX0xJU1Rf SEVBRCgmZW5naW5lLT5mZW5jZV9zaWduYWxfbGlzdCk7CiAJc3Bpbl9sb2NrX2luaXQoJmVuZ2lu ZS0+ZmVuY2VfbG9jayk7CiAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGRldiwgJmVuZ2luZS0+ YmF0Y2hfcG9vbCk7CiAJbWVtc2V0KGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsCkBA IC0yMjYxLDYgKzIyNjIsOCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmVuZ2luZS0+aXJx X3F1ZXVlKTsKIAorCUlOSVRfV09SSygmZW5naW5lLT5yZXF1ZXN0X3dvcmssIGk5MTVfZ2VtX3Jl cXVlc3Rfd29ya2VyKTsKKwogCXJpbmdidWYgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZm ZXIoZW5naW5lLCAzMiAqIFBBR0VfU0laRSk7CiAJaWYgKElTX0VSUihyaW5nYnVmKSkgewogCQly ZXQgPSBQVFJfRVJSKHJpbmdidWYpOwpAQCAtMjMwNyw2ICsyMzEwLDggQEAgdm9pZCBpbnRlbF9j bGVhbnVwX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIAlkZXZfcHJp diA9IGVuZ2luZS0+aTkxNTsKIAorCWNhbmNlbF93b3JrX3N5bmMoJmVuZ2luZS0+cmVxdWVzdF93 b3JrKTsKKwogCWlmIChlbmdpbmUtPmJ1ZmZlcikgewogCQlpbnRlbF9zdG9wX2VuZ2luZShlbmdp bmUpOwogCQlXQVJOX09OKCFJU19HRU4yKGRldl9wcml2KSAmJiAoSTkxNV9SRUFEX01PREUoZW5n aW5lKSAmIE1PREVfSURMRSkgPT0gMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKaW5kZXggM2YzOWRhZi4uNTE3NzliNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaApAQCAtMzQ3LDYgKzM0Nyw5IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg ewogCXUzMiAoKmdldF9jbWRfbGVuZ3RoX21hc2spKHUzMiBjbWRfaGVhZGVyKTsKIAogCXNwaW5s b2NrX3QgZmVuY2VfbG9jazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlX3NpZ25hbF9saXN0Owor CisJc3RydWN0IHdvcmtfc3RydWN0IHJlcXVlc3Rfd29yazsKIH07CiAKIHN0YXRpYyBpbmxpbmUg Ym9vbAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=