From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH 5/7] drm/i915: Interrupt driven fences Date: Fri, 8 Jan 2016 18:47:26 +0000 Message-ID: <1452278848-33708-6-git-send-email-John.C.Harrison@Intel.com> References: <1449839521-21958-1-git-send-email-John.C.Harrison@Intel.com> <1452278848-33708-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 79C9A72070 for ; Fri, 8 Jan 2016 10:47:36 -0800 (PST) In-Reply-To: <1452278848-33708-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 IGFuZCBpbXByb3ZlZCBjb21tZW50cyAoVHZydGtvIFVyc3VsaW4pLgoKRm9yOiBWSVotNTE5MApT aWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpD YzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDggKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMjU2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgfCAgIDIgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICAyICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAyNDggaW5z ZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg ZmJmNTkxZi4uYWNmZTI1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMTg3LDcgKzIx ODcsMTIgQEAgdm9pZCBpOTE1X2dlbV90cmFja19mYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2xkLAogc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKIAkvKiogVW5kZXJseWluZyBv YmplY3QgZm9yIGltcGxlbWVudGluZyB0aGUgc2lnbmFsL3dhaXQgc3R1ZmYuICovCiAJc3RydWN0 IGZlbmNlIGZlbmNlOworCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX2xpbms7CisJc3RydWN0IGxp c3RfaGVhZCB1bnNpZ25hbF9saW5rOwogCXN0cnVjdCBsaXN0X2hlYWQgZGVsYXllZF9mcmVlX2xp bms7CisJYm9vbCBjYW5jZWxsZWQ7CisJYm9vbCBpcnFfZW5hYmxlZDsKKwlib29sIHNpZ25hbF9y ZXF1ZXN0ZWQ7CiAKIAkvKiogT24gV2hpY2ggcmluZyB0aGlzIHJlcXVlc3Qgd2FzIGdlbmVyYXRl ZCAqLwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OwpAQCAtMjI2NCw2ICsyMjY5LDkg QEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKIAkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCiAJCQkgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKipyZXFfb3V0KTsKIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwordm9pZCBpOTE1X2dlbV9yZXF1ZXN0 X2VuYWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJCQkJ ICAgICAgIGJvb2wgZmVuY2VfbG9ja2VkKTsKK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnko c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9vbCBmZW5jZV9sb2NrZWQpOwogCiBpbnQg aTkxNV9jcmVhdGVfZmVuY2VfdGltZWxpbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAg ICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5k ZXggZjQyMjk2ZS4uOTZjYWZhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00MCw2ICs0 MCw4IEBACiAKICNkZWZpbmUgUlFfQlVHX09OKGV4cHIpCiAKK3N0YXRpYyB2b2lkIGk5MTVfZ2Vt X3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKKwogc3Rh dGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21haW4oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfZmx1 c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHN0 YXRpYyB2b2lkCkBAIC0xMTU2LDE2ICsxMTU4LDMyIEBAIHN0YXRpYyBib29sIG1pc3NlZF9pcnEo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiB0ZXN0X2JpdChyaW5n LT5pZCwgJmRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyk7CiB9CiAKKy8qCisg KiBTdXBlciBsb3cgbGF0ZW5jeSBpbXBsZW1lbnRhdGlvbiBvZiByZXF1ZXN0IHdhaXQuCisgKgor ICogVGhpcyBpcyB1c2VkIGFzIGEgcHJlY3Vyc29yIHRvIGRvaW5nIGFueXRoaW5nIHNsb3cgbGlr ZSB3YWl0aW5nIHRvIGJlCisgKiB3b2tlbiB1cCBieSBhIHNpZ25hbCwgaW50ZXJydXB0IGhhbmRs ZXIsIGV0Yy4gaW4gdGhlIG1haW4gd2FpdCByZXF1ZXN0CisgKiBjb2RlLiBUaGUgaWRlYSBpcyB0 aGF0IG1vc3QgcmVxdWVzdHMgY29tcGxldGUgcHJldHR5IHF1aWNrbHksIHNvIGJ1cm5pbmcKKyAq IHRoZSBDUFUgZm9yIGEgamlmZnkgaXMgYWN0dWFsbHkgbW9yZSBlZmZpY2llbnQgdGhhbiBzbGVl cGluZyBhcyB0aGF0CisgKiBpbnRyb2R1Y2VzIHNpZ25pZmljYW50IGxhdGVuY3kuCisgKi8KIHN0 YXRpYyBpbnQgX19pOTE1X3NwaW5fcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKIHsKIAl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CisJdWludDMyX3Qgc2Vxbm87CiAKIAlp ZiAoaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmluZyhyZXEpLT5pcnFfcmVmY291bnQpCiAJCXJldHVy biAtRUJVU1k7CiAKIAl0aW1lb3V0ID0gamlmZmllcyArIDE7CiAJd2hpbGUgKCFuZWVkX3Jlc2No ZWQoKSkgewotCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKKwkJLyoKKwkJ ICogRXhwbGljaXRseSBjaGVjayB0aGUgc2Vxbm8gcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgdGhl CisJCSAqIHVzZXIgaW50ZXJydXB0IHRvIHdvcmsgaXRzIHdheSB0aHJvdWdoIHRoZSBoYXJkd2Fy ZSBhbmQKKwkJICogc29mdHdhcmUgbGF5ZXJzLgorCQkgKi8KKwkJc2Vxbm8gPSByZXEtPnJpbmct PmdldF9zZXFubyhyZXEtPnJpbmcsIGZhbHNlKTsKKwkJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHNl cW5vLCByZXEtPnNlcW5vKSkKIAkJCXJldHVybiAwOwogCiAJCWlmICh0aW1lX2FmdGVyX2VxKGpp ZmZpZXMsIHRpbWVvdXQpKQpAQCAtMTE3Myw3ICsxMTkxLDkgQEAgc3RhdGljIGludCBfX2k5MTVf c3Bpbl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCiAJCWNwdV9y ZWxheF9sb3dsYXRlbmN5KCk7CiAJfQotCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChy ZXEpKQorCisJc2Vxbm8gPSByZXEtPnJpbmctPmdldF9zZXFubyhyZXEtPnJpbmcsIGZhbHNlKTsK KwlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pKQogCQlyZXR1cm4gMDsK IAogCXJldHVybiAtRUFHQUlOOwpAQCAtMTIwNSw4ICsxMjI1LDcgQEAgaW50IF9faTkxNV93YWl0 X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3JpbmcocmVxKTsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JY29uc3QgYm9vbCBpcnFfdGVzdF9pbl9w cm9ncmVzcyA9Ci0JCUFDQ0VTU19PTkNFKGRldl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmlu Z3MpICYgaW50ZWxfcmluZ19mbGFnKHJpbmcpOworCXVpbnQzMl90IHNlcW5vOwogCURFRklORV9X QUlUKHdhaXQpOwogCXVuc2lnbmVkIGxvbmcgdGltZW91dF9leHBpcmU7CiAJczY0IGJlZm9yZSwg bm93OwpAQCAtMTIxNCw5ICsxMjMzLDYgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAKIAlXQVJOKCFpbnRlbF9pcnFzX2VuYWJsZWQo ZGV2X3ByaXYpLCAiSVJRcyBkaXNhYmxlZCIpOwogCi0JaWYgKGxpc3RfZW1wdHkoJnJlcS0+bGlz dCkpCi0JCXJldHVybiAwOwotCiAJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkp CiAJCXJldHVybiAwOwogCkBAIC0xMjMxLDE1ICsxMjQ3LDE3IEBAIGludCBfX2k5MTVfd2FpdF9y ZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWJlZm9yZSA9IGt0aW1l X2dldF9yYXdfbnMoKTsKIAogCS8qIE9wdGltaXN0aWMgc3BpbiBmb3IgdGhlIG5leHQgamlmZmll IGJlZm9yZSB0b3VjaGluZyBJUlFzICovCi0JcmV0ID0gX19pOTE1X3NwaW5fcmVxdWVzdChyZXEp OwotCWlmIChyZXQgPT0gMCkKLQkJZ290byBvdXQ7Ci0KLQlpZiAoIWlycV90ZXN0X2luX3Byb2dy ZXNzICYmIFdBUk5fT04oIXJpbmctPmlycV9nZXQocmluZykpKSB7Ci0JCXJldCA9IC1FTk9ERVY7 Ci0JCWdvdG8gb3V0OworCWlmIChyZXEtPnNlcW5vKSB7CisJCXJldCA9IF9faTkxNV9zcGluX3Jl cXVlc3QocmVxKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJZ290byBvdXQ7CiAJfQogCisJLyoKKwkg KiBFbmFibGUgaW50ZXJydXB0IGNvbXBsZXRpb24gb2YgdGhlIHJlcXVlc3QuCisJICovCisJZmVu Y2VfZW5hYmxlX3N3X3NpZ25hbGluZygmcmVxLT5mZW5jZSk7CisKIAlmb3IgKDs7KSB7CiAJCXN0 cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogCkBAIC0xMjYyLDYgKzEyODAsMTkgQEAgaW50IF9faTkx NV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQlicmVh azsKIAkJfQogCisJCWlmIChyZXEtPnNlcW5vKSB7CisJCQkvKgorCQkJICogVGhlcmUgaXMgcXVp dGUgYSBsb3Qgb2YgbGF0ZW5jeSBpbiB0aGUgdXNlciBpbnRlcnJ1cHQKKwkJCSAqIHBhdGguIFNv IGRvIGFuIGV4cGxpY2l0IHNlcW5vIGNoZWNrIGFuZCBwb3RlbnRpYWxseQorCQkJICogcmVtb3Zl IGFsbCB0aGF0IGRlbGF5LgorCQkJICovCisJCQlzZXFubyA9IHJpbmctPmdldF9zZXFubyhyaW5n LCBmYWxzZSk7CisJCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pKSB7 CisJCQkJcmV0ID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCiAJCWlmIChpbnRlcnJ1cHRp YmxlICYmIHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CiAJCQlyZXQgPSAtRVJFU1RBUlRTWVM7 CiAJCQlicmVhazsKQEAgLTEyODgsOCArMTMxOSw2IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJZGVzdHJveV90aW1lcl9vbl9z dGFjaygmdGltZXIpOwogCQl9CiAJfQotCWlmICghaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MpCi0JCXJp bmctPmlycV9wdXQocmluZyk7CiAKIAlmaW5pc2hfd2FpdCgmcmluZy0+aXJxX3F1ZXVlLCAmd2Fp dCk7CiAKQEAgLTEyOTcsNiArMTMyNiwxOCBAQCBvdXQ6CiAJbm93ID0ga3RpbWVfZ2V0X3Jhd19u cygpOwogCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9lbmQocmVxKTsKIAorCWlmICgocmV0 ID09IDApICYmIChyZXEtPnNlcW5vKSkgeworCQlzZXFubyA9IHJpbmctPmdldF9zZXFubyhyaW5n LCBmYWxzZSk7CisJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFubykgJiYK KwkJICAgICFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKSB7CisJCQkvKgorCQkJICog TWFrZSBzdXJlIHRoZSByZXF1ZXN0IGlzIG1hcmtlZCBhcyBjb21wbGV0ZWQgYmVmb3JlCisJCQkg KiByZXR1cm5pbmc6CisJCQkgKi8KKwkJCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+cmlu ZywgZmFsc2UpOworCQl9CisJfQorCiAJaWYgKHRpbWVvdXQpIHsKIAkJczY0IHRyZXMgPSAqdGlt ZW91dCAtIChub3cgLSBiZWZvcmUpOwogCkBAIC0xMzc3LDYgKzE0MTgsMjIgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQogCWxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpc3QpOwogCWk5MTVfZ2VtX3JlcXVl c3RfcmVtb3ZlX2Zyb21fY2xpZW50KHJlcXVlc3QpOwogCisJLyoKKwkgKiBJbiBjYXNlIHRoZSBy ZXF1ZXN0IGlzIHN0aWxsIGluIHRoZSBzaWduYWwgcGVuZGluZyBsaXN0LAorCSAqIGUuZy4gZHVl IHRvIGJlaW5nIGNhbmNlbGxlZCBieSBURFIsIHByZWVtcHRpb24sIGV0Yy4KKwkgKi8KKwlpZiAo IWxpc3RfZW1wdHkoJnJlcXVlc3QtPnNpZ25hbF9saW5rKSkgeworCQkvKgorCQkgKiBUaGUgcmVx dWVzdCBtdXN0IGJlIG1hcmtlZCBhcyBjYW5jZWxsZWQgYW5kIHRoZSB1bmRlcmx5aW5nCisJCSAq IGZlbmNlIGFzIGJvdGggZmFpbGVkLiBOQjogVGhlcmUgaXMgbm8gZXhwbGljaXQgZmVuY2UgZmFp bAorCQkgKiBBUEksIHRoZXJlIGlzIG9ubHkgYSBtYW51YWwgcG9rZSBhbmQgc2lnbmFsLgorCQkg Ki8KKwkJcmVxdWVzdC0+Y2FuY2VsbGVkID0gdHJ1ZTsKKwkJLyogSG93IHRvIHByb3BhZ2F0ZSB0 byBhbnkgYXNzb2NpYXRlZCBzeW5jX2ZlbmNlPz8/ICovCisJCXJlcXVlc3QtPmZlbmNlLnN0YXR1 cyA9IC1FSU87CisJCWZlbmNlX3NpZ25hbF9sb2NrZWQoJnJlcXVlc3QtPmZlbmNlKTsKKwl9CisK IAlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJlcXVlc3QpOwogfQogCkBAIC0yNTM1LDYg KzI1OTIsMTIgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0LAogCSAqLwogCXJlcXVlc3QtPnBvc3RmaXggPSBpbnRlbF9yaW5nX2dl dF90YWlsKHJpbmdidWYpOwogCisJLyoKKwkgKiBBZGQgdGhlIGZlbmNlIHRvIHRoZSBwZW5kaW5n IGxpc3QgYmVmb3JlIGVtaXR0aW5nIHRoZSBjb21tYW5kcyB0bworCSAqIGdlbmVyYXRlIGEgc2Vx bm8gbm90aWZpY2F0aW9uIGludGVycnVwdC4KKwkgKi8KKwlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1p dChyZXF1ZXN0KTsKKwogCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCiAJCXJldCA9IHJpbmct PmVtaXRfcmVxdWVzdChyZXF1ZXN0KTsKIAllbHNlIHsKQEAgLTI2NTMsMjUgKzI3MTYsMTQwIEBA IHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIAkJaTkxNV9nZW1fY29udGV4dF91bnJlZmVyZW5jZShjdHgpOwogCX0KIAor CWlmIChyZXEtPmlycV9lbmFibGVkKQorCQlyZXEtPnJpbmctPmlycV9wdXQocmVxLT5yaW5nKTsK KwogCWttZW1fY2FjaGVfZnJlZShyZXEtPmk5MTUtPnJlcXVlc3RzLCByZXEpOwogfQogCi1zdGF0 aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpy ZXFfZmVuY2UpCisvKgorICogVGhlIHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkIHRv IHRoZSBoYXJkd2FyZSBzbyBhZGQgdGhlIGZlbmNlIHRvCisgKiB0aGUgbGlzdCBvZiBzaWduYWxh YmxlIGZlbmNlcy4KKyAqCisgKiBOQjogVGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSBlbmFibGUg aW50ZXJydXB0cyB5ZXQuIFRoYXQgb25seSBvY2N1cnMgb24KKyAqIGRlbWFuZCB3aGVuIHRoZSBy ZXF1ZXN0IGlzIGFjdHVhbGx5IHdhaXRlZCBvbi4gSG93ZXZlciwgYWRkaW5nIGl0IHRvIHRoZQor ICogbGlzdCBlYXJseSBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb24gd2hl cmUgdGhlIGludGVycnVwdAorICogY291bGQgcG9wIG91dCBwcmVtYXR1cmVseSBhbmQgdGh1cyBi ZSBjb21wbGV0ZWx5IGxvc3QuIFRoZSByYWNlIGlzIG1lcmVseQorICogdGhhdCB0aGUgaW50ZXJy dXB0IG11c3QgYmUgbWFudWFsbHkgY2hlY2tlZCBmb3IgYWZ0ZXIgYmVpbmcgZW5hYmxlZC4KKyAq Lworc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCiB7Ci0JLyogSW50ZXJydXB0IGRyaXZlbiBmZW5jZXMgYXJlIG5vdCBp bXBsZW1lbnRlZCB5ZXQuKi8KLQlXQVJOKHRydWUsICJUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVk ISIpOwotCXJldHVybiB0cnVlOworCS8qCisJICogQWx3YXlzIGVuYWJsZSBzaWduYWwgcHJvY2Vz c2luZyBmb3IgdGhlIHJlcXVlc3QncyBmZW5jZSBvYmplY3QKKwkgKiBiZWZvcmUgdGhhdCByZXF1 ZXN0IGlzIHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUuIFRodXMgdGhlcmUgaXMgbm8KKwkgKiBy YWNlIGNvbmRpdGlvbiB3aGVyZWJ5IHRoZSBpbnRlcnJ1cHQgY291bGQgcG9wIG91dCBiZWZvcmUg dGhlCisJICogcmVxdWVzdCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc2lnbmFsIGxpc3QuIEhlbmNl IG5vIG5lZWQgdG8gY2hlY2sKKwkgKiBmb3IgY29tcGxldGlvbiwgdW5kbyB0aGUgbGlzdCBhZGQg YW5kIHJldHVybiBmYWxzZS4KKwkgKi8KKwlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShyZXEp OworCXNwaW5fbG9ja19pcnEoJnJlcS0+cmluZy0+ZmVuY2VfbG9jayk7CisJV0FSTl9PTighbGlz dF9lbXB0eSgmcmVxLT5zaWduYWxfbGluaykpOworCWxpc3RfYWRkX3RhaWwoJnJlcS0+c2lnbmFs X2xpbmssICZyZXEtPnJpbmctPmZlbmNlX3NpZ25hbF9saXN0KTsKKwlzcGluX3VubG9ja19pcnEo JnJlcS0+cmluZy0+ZmVuY2VfbG9jayk7CisKKwkvKgorCSAqIE5COiBJbnRlcnJ1cHRzIGFyZSBv bmx5IGVuYWJsZWQgb24gZGVtYW5kLiBUaHVzIHRoZXJlIGlzIHN0aWxsIGEKKwkgKiByYWNlIHdo ZXJlIHRoZSByZXF1ZXN0IGNvdWxkIGNvbXBsZXRlIGJlZm9yZSB0aGUgaW50ZXJydXB0IGhhcwor CSAqIGJlZW4gZW5hYmxlZC4gVGh1cyBjYXJlIG11c3QgYmUgdGFrZW4gYXQgdGhhdCBwb2ludC4K KwkgKi8KKworCSAvKiBIYXZlIGludGVycnVwdHMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZD8gKi8K KwkgaWYgKHJlcS0+c2lnbmFsX3JlcXVlc3RlZCkKKwkJaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVf aW50ZXJydXB0KHJlcSwgZmFsc2UpOwogfQogCi1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0 X2lzX2NvbXBsZXRlZChzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKKy8qCisgKiBUaGUgcmVxdWVz dCBpcyBiZWluZyBhY3RpdmVseSB3YWl0ZWQgb24sIHNvIGVuYWJsZSBpbnRlcnJ1cHQgYmFzZWQK KyAqIGNvbXBsZXRpb24gc2lnbmFsbGluZy4KKyAqLwordm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2Vu YWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJCQkJICAg ICAgIGJvb2wgZmVuY2VfbG9ja2VkKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocmVxLT5yaW5nLT5kZXYpOworCWNvbnN0IGJvb2wgaXJxX3Rlc3RfaW5f cHJvZ3Jlc3MgPQorCQlBQ0NFU1NfT05DRShkZXZfcHJpdi0+Z3B1X2Vycm9yLnRlc3RfaXJxX3Jp bmdzKSAmCisJCQkJCQlpbnRlbF9yaW5nX2ZsYWcocmVxLT5yaW5nKTsKKworCWlmIChyZXEtPmly cV9lbmFibGVkKQorCQlyZXR1cm47CisKKwlpZiAoaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MpCisJCXJl dHVybjsKKworCWlmICghV0FSTl9PTighcmVxLT5yaW5nLT5pcnFfZ2V0KHJlcS0+cmluZykpKQor CQlyZXEtPmlycV9lbmFibGVkID0gdHJ1ZTsKKworCS8qCisJICogQmVjYXVzZSB0aGUgaW50ZXJy dXB0IGlzIG9ubHkgZW5hYmxlZCBvbiBkZW1hbmQsIHRoZXJlIGlzIGEgcmFjZQorCSAqIHdoZXJl IHRoZSBpbnRlcnJ1cHQgY2FuIGZpcmUgYmVmb3JlIGFueW9uZSBpcyBsb29raW5nIGZvciBpdC4g U28KKwkgKiBkbyBhbiBleHBsaWNpdCBjaGVjayBmb3IgbWlzc2VkIGludGVycnVwdHMuCisJICov CisJaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkocmVxLT5yaW5nLCBmZW5jZV9sb2NrZWQpOworfQor CitzdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZl bmNlICpyZXFfZmVuY2UpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSBj b250YWluZXJfb2YocmVxX2ZlbmNlLAogCQkJCQkJIHR5cGVvZigqcmVxKSwgZmVuY2UpOworCisJ LyoKKwkgKiBObyBuZWVkIHRvIGFjdHVhbGx5IGVuYWJsZSBpbnRlcnJ1cHQgYmFzZWQgcHJvY2Vz c2luZyB1bnRpbCB0aGUKKwkgKiByZXF1ZXN0IGhhcyBiZWVuIHN1Ym1pdHRlZCB0byB0aGUgaGFy ZHdhcmUuIEF0IHdoaWNoIHBvaW50CisJICogJ2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KCknIGlz IGNhbGxlZC4gU28gb25seSByZWFsbHkgZW5hYmxlCisJICogc2lnbmFsbGluZyBpbiB0aGVyZS4g SnVzdCBzZXQgYSBmbGFnIHRvIHNheSB0aGF0IGludGVycnVwdHMgYXJlCisJICogd2FudGVkIHdo ZW4gdGhlIHJlcXVlc3QgaXMgZXZlbnR1YWxseSBzdWJtaXR0ZWQuIE9uIHRoZSBvdGhlciBoYW5k CisJICogaWYgdGhlIHJlcXVlc3QgaGFzIGFscmVhZHkgYmVlbiBzdWJtaXR0ZWQgdGhlbiBpbnRl cnJ1cHRzIGRvIG5lZWQKKwkgKiB0byBiZSBlbmFibGVkIG5vdy4KKwkgKi8KKworCXJlcS0+c2ln bmFsX3JlcXVlc3RlZCA9IHRydWU7CisKKwlpZiAoIWxpc3RfZW1wdHkoJnJlcS0+c2lnbmFsX2xp bmspKQorCQlpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9pbnRlcnJ1cHQocmVxLCB0cnVlKTsKKwor CXJldHVybiB0cnVlOworfQorCit2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsIGJvb2wgZmVuY2VfbG9ja2VkKQoreworCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLCAqcmVxX25leHQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK IAl1MzIgc2Vxbm87CiAKLQlzZXFubyA9IHJlcS0+cmluZy0+Z2V0X3NlcW5vKHJlcS0+cmluZywg ZmFsc2UvKmxhenlfY29oZXJlbmN5Ki8pOworCWlmIChsaXN0X2VtcHR5KCZyaW5nLT5mZW5jZV9z aWduYWxfbGlzdCkpCisJCXJldHVybjsKKworCWlmICghZmVuY2VfbG9ja2VkKQorCQlzcGluX2xv Y2tfaXJxc2F2ZSgmcmluZy0+ZmVuY2VfbG9jaywgZmxhZ3MpOwogCi0JcmV0dXJuIGk5MTVfc2Vx bm9fcGFzc2VkKHNlcW5vLCByZXEtPnNlcW5vKTsKKwlzZXFubyA9IHJpbmctPmdldF9zZXFubyhy aW5nLCBmYWxzZSk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVxLCByZXFfbmV4dCwg JnJpbmctPmZlbmNlX3NpZ25hbF9saXN0LCBzaWduYWxfbGluaykgeworCQlpZiAoIXJlcS0+Y2Fu Y2VsbGVkKSB7CisJCQlpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNlcW5vKSkK KwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIFN0YXJ0IGJ5IHJlbW92aW5nIHRoZSBmZW5j ZSBmcm9tIHRoZSBzaWduYWwgbGlzdCBvdGhlcndpc2UKKwkJICogdGhlIHJldGlyZSBjb2RlIGNh biBydW4gY29uY3VycmVudGx5IGFuZCBnZXQgY29uZnVzZWQuCisJCSAqLworCQlsaXN0X2RlbF9p bml0KCZyZXEtPnNpZ25hbF9saW5rKTsKKworCQlpZiAoIXJlcS0+Y2FuY2VsbGVkKQorCQkJZmVu Y2Vfc2lnbmFsX2xvY2tlZCgmcmVxLT5mZW5jZSk7CisKKwkJaWYgKHJlcS0+aXJxX2VuYWJsZWQp IHsKKwkJCXJlcS0+cmluZy0+aXJxX3B1dChyZXEtPnJpbmcpOworCQkJcmVxLT5pcnFfZW5hYmxl ZCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2FuJ3QgdW5yZWZlcmVuY2UgaGVyZSBiZWNhdXNlIHRo YXQgbWlnaHQgZ3JhYiBmZW5jZV9sb2NrICovCisJCWxpc3RfYWRkX3RhaWwoJnJlcS0+dW5zaWdu YWxfbGluaywgJnJpbmctPmZlbmNlX3Vuc2lnbmFsX2xpc3QpOworCX0KKworCWlmICghZmVuY2Vf bG9ja2VkKQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5mZW5jZV9sb2NrLCBmbGFn cyk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICppOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJf bmFtZShzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKQEAgLTI3MTQsNyArMjg5Miw2IEBAIHN0YXRp YyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZmVuY2VfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqcmVx X2ZlbmNlLAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZlbmNlX29wcyBpOTE1X2dlbV9yZXF1ZXN0 X2ZvcHMgPSB7CiAJLmVuYWJsZV9zaWduYWxpbmcJPSBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9z aWduYWxpbmcsCi0JLnNpZ25hbGVkCQk9IGk5MTVfZ2VtX3JlcXVlc3RfaXNfY29tcGxldGVkLAog CS53YWl0CQkJPSBmZW5jZV9kZWZhdWx0X3dhaXQsCiAJLnJlbGVhc2UJCT0gaTkxNV9nZW1fcmVx dWVzdF9yZWxlYXNlLAogCS5nZXRfZHJpdmVyX25hbWUJPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9k cml2ZXJfbmFtZSwKQEAgLTI3OTgsNiArMjk3NSw3IEBAIGludCBpOTE1X2dlbV9yZXF1ZXN0X2Fs bG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCWdvdG8gZXJyOwogCX0KIAorCUlO SVRfTElTVF9IRUFEKCZyZXEtPnNpZ25hbF9saW5rKTsKIAlmZW5jZV9pbml0KCZyZXEtPmZlbmNl LCAmaTkxNV9nZW1fcmVxdWVzdF9mb3BzLCAmcmluZy0+ZmVuY2VfbG9jaywKIAkJICAgY3R4LT5l bmdpbmVbcmluZy0+aWRdLmZlbmNlX3RpbWVsaW5lLmZlbmNlX2NvbnRleHQsCiAJCSAgIGk5MTVf ZmVuY2VfdGltZWxpbmVfZ2V0X25leHRfc2Vxbm8oJmN0eC0+ZW5naW5lW3JpbmctPmlkXS5mZW5j ZV90aW1lbGluZSkpOwpAQCAtMjgzNSw2ICszMDEzLDExIEBAIHZvaWQgaTkxNV9nZW1fcmVxdWVz dF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJaW50ZWxfcmlu Z19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmVxLT5yaW5nYnVmKTsKIAorCXJlcS0+Y2FuY2VsbGVk ID0gdHJ1ZTsKKwkvKiBIb3cgdG8gcHJvcGFnYXRlIHRvIGFueSBhc3NvY2lhdGVkIHN5bmNfZmVu Y2U/Pz8gKi8KKwlyZXEtPmZlbmNlLnN0YXR1cyA9IC1FSU5WQUw7CisJZmVuY2Vfc2lnbmFsX2xv Y2tlZCgmcmVxLT5mZW5jZSk7CisKIAlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJlcSk7 CiB9CiAKQEAgLTI5MjgsNiArMzExMSwxMyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9y aW5nX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpOTE1X2dl bV9yZXF1ZXN0X3JldGlyZShyZXF1ZXN0KTsKIAl9CiAKKwkvKgorCSAqIFRpZHkgdXAgYW55dGhp bmcgbGVmdCBvdmVyLiBUaGlzIGluY2x1ZGVzIGEgY2FsbCB0bworCSAqIGk5MTVfZ2VtX3JlcXVl c3Rfbm90aWZ5KCkgd2hpY2ggd2lsbCBtYWtlIHN1cmUgdGhhdCBhbnkgcmVxdWVzdHMKKwkgKiB0 aGF0IHdlcmUgb24gdGhlIHNpZ25hbCBwZW5kaW5nIGxpc3QgZ2V0IGFsc28gY2xlYW5lZCB1cC4K KwkgKi8KKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhyaW5nKTsKKwogCS8qIEhhdmlu ZyBmbHVzaGVkIGFsbCByZXF1ZXN0cyBmcm9tIGFsbCBxdWV1ZXMsIHdlIGtub3cgdGhhdCBhbGwK IAkgKiByaW5nYnVmZmVycyBtdXN0IG5vdyBiZSBlbXB0eS4gSG93ZXZlciwgc2luY2Ugd2UgZG8g bm90IHJlY2xhaW0KIAkgKiBhbGwgc3BhY2Ugd2hlbiByZXRpcmluZyB0aGUgcmVxdWVzdCAodG8g cHJldmVudCBIRUFEcyBjb2xsaWRpbmcKQEAgLTI5NzYsNiArMzE2NiwxMyBAQCBpOTE1X2dlbV9y ZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCiAJV0FS Tl9PTihpOTE1X3ZlcmlmeV9saXN0cyhyaW5nLT5kZXYpKTsKIAorCS8qCisJICogSWYgbm8tb25l IGhhcyB3YWl0ZWQgb24gYSByZXF1ZXN0IHJlY2VudGx5IHRoZW4gaW50ZXJydXB0cyB3aWxsCisJ ICogbm90IGhhdmUgYmVlbiBlbmFibGVkIGFuZCB0aHVzIG5vIHJlcXVlc3RzIHdpbGwgZXZlciBi ZSBtYXJrZWQgYXMKKwkgKiBjb21wbGV0ZWQuIFNvIGRvIGFuIGludGVycnVwdCBjaGVjayBub3cu CisJICovCisJaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkocmluZywgZmFsc2UpOworCiAJLyogUmV0 aXJlIHJlcXVlc3RzIGZpcnN0IGFzIHdlIHVzZSBpdCBhYm92ZSBmb3IgdGhlIGVhcmx5IHJldHVy bi4KIAkgKiBJZiB3ZSByZXRpcmUgcmVxdWVzdHMgbGFzdCwgd2UgbWF5IHVzZSBhIGxhdGVyIHNl cW5vIGFuZCBzbyBjbGVhcgogCSAqIHRoZSByZXF1ZXN0cyBsaXN0cyB3aXRob3V0IGNsZWFyaW5n IHRoZSBhY3RpdmUgbGlzdCwgbGVhZGluZyB0bwpAQCAtMzAxNyw2ICszMjE0LDE1IEBAIGk5MTVf Z2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJ CWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZyaW5nLT50cmFjZV9pcnFfcmVxLCBOVUxMKTsKIAl9 CiAKKwkvKiBUaWR5IHVwIGFueSByZXF1ZXN0cyB0aGF0IHdlcmUgcmVjZW50bHkgc2lnbmFsbGVk ICovCisJc3Bpbl9sb2NrX2lycSgmcmluZy0+ZmVuY2VfbG9jayk7CisJbGlzdF9zcGxpY2VfaW5p dCgmcmluZy0+ZmVuY2VfdW5zaWduYWxfbGlzdCwgJmxpc3RfaGVhZCk7CisJc3Bpbl91bmxvY2tf aXJxKCZyaW5nLT5mZW5jZV9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVxLCBy ZXFfbmV4dCwgJmxpc3RfaGVhZCwgdW5zaWduYWxfbGluaykgeworCQlsaXN0X2RlbCgmcmVxLT51 bnNpZ25hbF9saW5rKTsKKwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOworCX0K KwogCS8qIFJlYWxseSBmcmVlIGFueSByZXF1ZXN0cyB0aGF0IHdlcmUgcmVjZW50bHkgdW5yZWZl cmVuY2VkICovCiAJc3Bpbl9sb2NrKCZyaW5nLT5kZWxheWVkX2ZyZWVfbG9jayk7CiAJbGlzdF9z cGxpY2VfaW5pdCgmcmluZy0+ZGVsYXllZF9mcmVlX2xpc3QsICZsaXN0X2hlYWQpOwpAQCAtNTA2 OCw2ICs1Mjc0LDggQEAgaW5pdF9yaW5nX2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCiB7CiAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFjdGl2ZV9saXN0KTsKIAlJTklUX0xJU1Rf SEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZmVuY2Vf c2lnbmFsX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5mZW5jZV91bnNpZ25hbF9saXN0 KTsKIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZGVsYXllZF9mcmVlX2xpc3QpOwogfQogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYwppbmRleCA2OGIwOTRiLi43NGY4NTUyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKQEAgLTk4MSw2ICs5ODEsOCBAQCBzdGF0aWMgdm9pZCBub3RpZnlfcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCiAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9ub3Rp ZnkocmluZyk7CiAKKwlpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShyaW5nLCBmYWxzZSk7CisKIAl3 YWtlX3VwX2FsbCgmcmluZy0+aXJxX3F1ZXVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwppbmRleCAwNmEzOThhLi43NmZjMjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt MTkyMCw2ICsxOTIwLDggQEAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW4KIAlyaW5nLT5kZXYgPSBk ZXY7CiAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFjdGl2ZV9saXN0KTsKIAlJTklUX0xJU1RfSEVB RCgmcmluZy0+cmVxdWVzdF9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZmVuY2Vfc2ln bmFsX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5mZW5jZV91bnNpZ25hbF9saXN0KTsK IAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZGVsYXllZF9mcmVlX2xpc3QpOwogCXNwaW5fbG9ja19p bml0KCZyaW5nLT5mZW5jZV9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmcmluZy0+ZGVsYXllZF9m cmVlX2xvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGU1 NTczZTcuLjFkZWMyNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK QEAgLTIxNTgsNiArMjE1OCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xp c3QpOwogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSk7CiAJSU5JVF9MSVNU X0hFQUQoJnJpbmctPmJ1ZmZlcnMpOworCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5mZW5jZV9zaWdu YWxfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmZlbmNlX3Vuc2lnbmFsX2xpc3QpOwog CUlOSVRfTElTVF9IRUFEKCZyaW5nLT5kZWxheWVkX2ZyZWVfbGlzdCk7CiAJc3Bpbl9sb2NrX2lu aXQoJnJpbmctPmZlbmNlX2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZyaW5nLT5kZWxheWVkX2Zy ZWVfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggNmM3 YTkwYS4uNzJmODExZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApA QCAtMzU3LDYgKzM1Nyw4IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKIAl1MzIgKCpnZXRf Y21kX2xlbmd0aF9tYXNrKSh1MzIgY21kX2hlYWRlcik7CiAKIAlzcGlubG9ja190IGZlbmNlX2xv Y2s7CisJc3RydWN0IGxpc3RfaGVhZCBmZW5jZV9zaWduYWxfbGlzdDsKKwlzdHJ1Y3QgbGlzdF9o ZWFkIGZlbmNlX3Vuc2lnbmFsX2xpc3Q7CiB9OwogCiBib29sIGludGVsX3JpbmdfaW5pdGlhbGl6 ZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Ci0tIAoxLjkuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK