From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 21/22] drm/i915: Enable lockless lookup of request tracking via RCU Date: Wed, 27 Jul 2016 12:14:59 +0100 Message-ID: <1469618100-15298-22-git-send-email-chris@chris-wilson.co.uk> References: <1469618100-15298-1-git-send-email-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-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 15CD66E685 for ; Wed, 27 Jul 2016 11:15:53 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id x83so5925511wma.3 for ; Wed, 27 Jul 2016 04:15:53 -0700 (PDT) In-Reply-To: <1469618100-15298-1-git-send-email-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: "Goel, Akash" , Josh Triplett List-Id: intel-gfx@lists.freedesktop.org SWYgd2UgZW5hYmxlIFJDVSBmb3IgdGhlIHJlcXVlc3RzIChwcm92aWRpbmcgYSBncmFjZSBwZXJp b2Qgd2hlcmUgd2UgY2FuCmluc3BlY3QgYSAiZGVhZCIgcmVxdWVzdCBiZWZvcmUgaXQgaXMgZnJl ZWQpLCB3ZSBjYW4gYWxsb3cgY2FsbGVycyB0bwpjYXJlZnVsbHkgcGVyZm9ybSBsb2NrbGVzcyBs b29rdXAgb2YgYW4gYWN0aXZlIHJlcXVlc3QuCgpIb3dldmVyLCBieSBlbmFibGluZyBkZWZlcnJl ZCBmcmVlaW5nIG9mIHJlcXVlc3RzLCB3ZSBjYW4gcG90ZW50aWFsbHkKaG9nIGEgbG90IG9mIG1l bW9yeSB3aGVuIGRlYWxpbmcgd2l0aCB0ZW5zIG9mIHRob3VzYW5kcyBvZiByZXF1ZXN0cyBwZXIK c2Vjb25kIC0gd2l0aCBhIHF1aWNrIGluc2VydGlvbiBvZiBhIHN5bmNocm9uaXplX3JjdSgpIGlu c2lkZSBvdXIKc2hyaW5rZXIgY2FsbGJhY2ssIHRoYXQgaXNzdWUgZGlzYXBwZWFycy4KCnYyOiBD dXJyZW50bHksIGl0IGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBoYW5kbGUgcmVjbGFpbSBpLmUu IHRvIGF2b2lkCmhvZ2dpbmcgbWVtb3J5IHdpdGggdGhlIGRlbGF5ZWQgc2xhYiBmcmVlcy4gQXQg dGhlIG1vbWVudCwgd2Ugd2FpdCBmb3IgYQpncmFjZSBwZXJpb2QgaW4gdGhlIHNocmlua2VyLCBh bmQgYmxvY2sgZm9yIGFsbCBSQ1UgY2FsbGJhY2tzIG9uIG9vbS4KU3VnZ2VzdGVkIGFsdGVybmF0 aXZlcyBmb2N1cyBvbiBmbHVzaGluZyBvdXIgUkNVIGNhbGxiYWNrIHdoZW4gd2UgaGF2ZSBhCmNl cnRhaW4gbnVtYmVyIG9mIG91dHN0YW5kaW5nIHJlcXVlc3QgZnJlZXMsIGFuZCBibG9ja2luZyBv biB0aGF0IGZsdXNoCmFmdGVyIGEgc2Vjb25kIGhpZ2ggd2F0ZXJtYXJrLiAoU28gcmF0aGVyIHRo YW4gd2FpdCBmb3IgdGhlIHN5c3RlbSB0bwpydW4gb3V0IG9mIG1lbW9yeSwgd2Ugc3RvcCBpc3N1 aW5nIHJlcXVlc3RzIC0gYm90aCBhcmUgbm9uZGV0ZXJtaW5pc3RpYy4pCgpQYXVsIEUuIE1jS2Vu bmV5IHdyb3RlOgoKQW5vdGhlciBhcHByb2FjaCBpcyBzeW5jaHJvbml6ZV9yY3UoKSBhZnRlciBz b21lIGxhcmdpc2ggbnVtYmVyIG9mCnJlcXVlc3RzLiAgVGhlIGFkdmFudGFnZSBvZiB0aGlzIGFw cHJvYWNoIGlzIHRoYXQgaXQgdGhyb3R0bGVzIHRoZQpwcm9kdWN0aW9uIG9mIGNhbGxiYWNrcyBh dCB0aGUgc291cmNlLiAgVGhlIGNvcnJlc3BvbmRpbmcgZGlzYWR2YW50YWdlCmlzIHRoYXQgaXQg c2xvd3MgdGhpbmdzIHVwLgoKQW5vdGhlciBhcHByb2FjaCBpcyB0byB1c2UgY2FsbF9yY3UoKSwg YnV0IGlmIHRoZSBwcmV2aW91cyBjYWxsX3JjdSgpCmlzIHN0aWxsIGluIGZsaWdodCwgYmxvY2sg d2FpdGluZyBmb3IgaXQuICBZZXQgYW5vdGhlciBhcHByb2FjaCBpcwp0aGUgZ2V0X3N0YXRlX3N5 bmNocm9uaXplX3JjdSgpIC8gY29uZF9zeW5jaHJvbml6ZV9yY3UoKSBwYWlyLiAgVGhlCmlkZWEg aXMgdG8gZG8gc29tZXRoaW5nIGxpa2UgdGhpczoKCiAgICAgICAgY29uZF9zeW5jaHJvbml6ZV9y Y3UoY29va2llKTsKICAgICAgICBjb29raWUgPSBnZXRfc3RhdGVfc3luY2hyb25pemVfcmN1KCk7 CgpZb3Ugd291bGQgb2YgY291cnNlIGRvIGFuIGluaXRpYWwgZ2V0X3N0YXRlX3N5bmNocm9uaXpl X3JjdSgpIHRvCmdldCB0aGluZ3MgZ29pbmcuICBUaGlzIHdvdWxkIG5vdCBibG9jayB1bmxlc3Mg dGhlcmUgd2FzIGxlc3MgdGhhbgpvbmUgZ3JhY2UgcGVyaW9kJ3Mgd29ydGggb2YgdGltZSBiZXR3 ZWVuIGludm9jYXRpb25zLiAgQnV0IHRoaXMKYXNzdW1lcyBhIGJ1c3kgc3lzdGVtLCB3aGVyZSB0 aGVyZSBpcyBhbG1vc3QgYWx3YXlzIGEgZ3JhY2UgcGVyaW9kCmluIGZsaWdodC4gIEJ1dCB5b3Ug Y2FuIG1ha2UgdGhhdCBoYXBwZW4gYXMgZm9sbG93czoKCiAgICAgICAgY29uZF9zeW5jaHJvbml6 ZV9yY3UoY29va2llKTsKICAgICAgICBjb29raWUgPSBnZXRfc3RhdGVfc3luY2hyb25pemVfcmN1 KCk7CiAgICAgICAgY2FsbF9yY3UoJm15X3JjdV9oZWFkLCBub29wX2Z1bmN0aW9uKTsKCk5vdGUg dGhhdCB5b3UgbmVlZCBhZGRpdGlvbmFsIGNvZGUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG9sZCBj YWxsYmFjawpoYXMgY29tcGxldGVkIGJlZm9yZSBkb2luZyBhIG5ldyBvbmUuICBTZXR0aW5nIGFu ZCBjbGVhcmluZyBhIGZsYWcKd2l0aCBhcHByb3ByaWF0ZSBtZW1vcnkgb3JkZXJpbmcgY29udHJv bCBzdWZmaWNlcyAoZS5nLC4gc21wX2xvYWRfYWNxdWlyZSgpCmFuZCBzbXBfc3RvcmVfcmVsZWFz ZSgpKS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVs LmNvbT4KQ2M6ICJHb2VsLCBBa2FzaCIgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgpDYzogSm9zaCBU cmlwbGV0dCA8am9zaEBqb3NodHJpcGxldHQub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgICAgICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Jl cXVlc3QuaCAgfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxNSArKy0tCiA0IGZpbGVzIGNoYW5n ZWQsIDEyNiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwppbmRleCA1NGQ4YTM4NjNkMTEuLjBjNTQ2ZjgwOTlkOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCkBAIC00NDIxLDcgKzQ0MjEsOSBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAlkZXZfcHJpdi0+cmVxdWVzdHMgPQogCQlrbWVtX2NhY2hlX2NyZWF0 ZSgiaTkxNV9nZW1fcmVxdWVzdCIsCiAJCQkJICBzaXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0KSwgMCwKLQkJCQkgIFNMQUJfSFdDQUNIRV9BTElHTiwKKwkJCQkgIFNMQUJfSFdDQUNI RV9BTElHTiB8CisJCQkJICBTTEFCX1JFQ0xBSU1fQUNDT1VOVCB8CisJCQkJICBTTEFCX0RFU1RS T1lfQllfUkNVLAogCQkJCSAgTlVMTCk7CiAKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNv bnRleHRfbGlzdCk7CkBAIC00NDU3LDYgKzQ0NTksOSBAQCB2b2lkIGk5MTVfZ2VtX2xvYWRfY2xl YW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJp di0+cmVxdWVzdHMpOwogCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+dm1hcyk7CiAJa21l bV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5vYmplY3RzKTsKKworCS8qIEFuZCBlbnN1cmUgdGhh dCBvdXIgREVTVFJPWV9CWV9SQ1Ugc2xhYnMgYXJlIHRydWx5IGRlc3Ryb3llZCAqLworCXJjdV9i YXJyaWVyKCk7CiB9CiAKIGludCBpOTE1X2dlbV9mcmVlemVfbGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK aW5kZXggMzM5NWM5NTVhNTMyLi5iY2MxMzY5YzA2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dl bV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJ CXByZWZldGNodyhuZXh0KTsKIAogCQlJTklUX0xJU1RfSEVBRCgmYWN0aXZlLT5saW5rKTsKLQkJ YWN0aXZlLT5fX3JlcXVlc3QgPSBOVUxMOworCQlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+X19y ZXF1ZXN0LCBOVUxMKTsKIAogCQlhY3RpdmUtPnJldGlyZShhY3RpdmUsIHJlcXVlc3QpOwogCX0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAppbmRleCAyZWVjMGNhYzFlOWYu LmJiMDNmNDQ0MGIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaApA QCAtMTgzLDYgKzE4MywxMiBAQCBpOTE1X2dlbV9yZXF1ZXN0X2dldChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIAlyZXR1cm4gdG9fcmVxdWVzdChmZW5jZV9nZXQoJnJlcS0+ZmVu Y2UpKTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgor aTkxNV9nZW1fcmVxdWVzdF9nZXRfcmN1KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQoreworCXJldHVybiB0b19yZXF1ZXN0KGZlbmNlX2dldF9yY3UoJnJlcS0+ZmVuY2UpKTsKK30K Kwogc3RhdGljIGlubGluZSB2b2lkCiBpOTE1X2dlbV9yZXF1ZXN0X3B1dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKQEAgLTI4Niw3ICsyOTIsNyBAQCB0eXBlZGVmIHZvaWQg KCppOTE1X2dlbV9yZXRpcmVfZm4pKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKiwKIAkJCQkgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKik7CiAKIHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUg ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqX19yZXF1ZXN0OworCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCBfX3JjdSAqX19yZXF1ZXN0OwogCXN0cnVjdCBsaXN0X2hlYWQgbGlu azsKIAlpOTE1X2dlbV9yZXRpcmVfZm4gcmV0aXJlOwogfTsKQEAgLTMyMywxMyArMzI5LDE5IEBA IGk5MTVfZ2VtX2FjdGl2ZV9zZXQoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAogCQkg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewogCWxpc3RfbW92ZSgm YWN0aXZlLT5saW5rLCAmcmVxdWVzdC0+YWN0aXZlX2xpc3QpOwotCWFjdGl2ZS0+X19yZXF1ZXN0 ID0gcmVxdWVzdDsKKwlyY3VfYXNzaWduX3BvaW50ZXIoYWN0aXZlLT5fX3JlcXVlc3QsIHJlcXVl c3QpOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCiBf X2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2 ZSkKIHsKLQlyZXR1cm4gYWN0aXZlLT5fX3JlcXVlc3Q7CisJLyogSW5zaWRlIHRoZSBlcnJvciBj YXB0dXJlIChydW5uaW5nIHdpdGggdGhlIGRyaXZlciBpbiBhbiB1bmtub3duCisJICogc3RhdGUp LCB3ZSB3YW50IHRvIGJlbmQgdGhlIHJ1bGVzIHNsaWdodGx5IChhIGxvdCkuCisJICoKKwkgKiBX b3JrIGlzIGluIHByb2dyZXNzIHRvIG1ha2UgaXQgc2FmZXIsIGluIHRoZSBtZWFudGltZSB0aGlz IGtlZXBzCisJICogdGhlIGtub3duIGlzc3VlIGZyb20gc3BhbW1pbmcgdGhlIGxvZ3MuCisJICov CisJcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYWN0aXZlLT5fX3JlcXVlc3QsIDEp OwogfQogCiAvKioKQEAgLTM0NSw3ICszNTcsMjkgQEAgaTkxNV9nZW1fYWN0aXZlX3BlZWsoY29u c3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQog ewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAotCXJlcXVlc3QgPSBh Y3RpdmUtPl9fcmVxdWVzdDsKKwlyZXF1ZXN0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChh Y3RpdmUtPl9fcmVxdWVzdCwKKwkJCQkJICAgIGxvY2tkZXBfaXNfaGVsZChtdXRleCkpOworCWlm ICghcmVxdWVzdCB8fCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKKwkJcmV0 dXJuIE5VTEw7CisKKwlyZXR1cm4gcmVxdWVzdDsKK30KKworLyoqCisgKiBpOTE1X2dlbV9hY3Rp dmVfcGVla19yY3UgLSByZXBvcnQgdGhlIGFjdGl2ZSByZXF1ZXN0IGJlaW5nIG1vbml0b3JlZAor ICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgorICoKKyAqIGk5MTVfZ2VtX2FjdGl2ZV9w ZWVrX3JjdSgpIHJldHVybnMgdGhlIGN1cnJlbnQgcmVxdWVzdCBiZWluZyB0cmFja2VkIGlmCisg KiBzdGlsbCBhY3RpdmUsIG9yIE5VTEwuIEl0IGRvZXMgbm90IG9idGFpbiBhIHJlZmVyZW5jZSBv biB0aGUgcmVxdWVzdAorICogZm9yIHRoZSBjYWxsZXIsIGFuZCBpbnNwZWN0aW9uIG9mIHRoZSBy ZXF1ZXN0IGlzIG9ubHkgdmFsaWQgdW5kZXIKKyAqIHRoZSBSQ1UgbG9jay4KKyAqLworc3RhdGlj IGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgoraTkxNV9nZW1fYWN0aXZlX3Bl ZWtfcmN1KGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSkKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CisKKwlyZXF1ZXN0ID0gcmN1X2RlcmVmZXJl bmNlKGFjdGl2ZS0+X19yZXF1ZXN0KTsKIAlpZiAoIXJlcXVlc3QgfHwgaTkxNV9nZW1fcmVxdWVz dF9jb21wbGV0ZWQocmVxdWVzdCkpCiAJCXJldHVybiBOVUxMOwogCkBAIC0zNjYsNiArNDAwLDcy IEBAIGk5MTVfZ2VtX2FjdGl2ZV9nZXQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0 aXZlLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQogfQogCiAvKioKKyAqIGk5MTVfZ2VtX2FjdGl2ZV9n ZXRfcmN1IC0gcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdAorICogQGFj dGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgorICoKKyAqIGk5MTVfZ2VtX2FjdGl2ZV9nZXQoKSBy ZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdCwgb3IgTlVMTAorICogaWYg dGhlIGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBSQ1Ug cmVhZCBsb2NrLgorICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqCitpOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl ICphY3RpdmUpCit7CisJLyogUGVyZm9ybWluZyBhIGxvY2tsZXNzIHJldHJpZXZhbCBvZiB0aGUg YWN0aXZlIHJlcXVlc3QgaXMgc3VwZXIKKwkgKiB0cmlja3kuIFNMQUJfREVTVFJPWV9CWV9SQ1Ug bWVyZWx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgYmFja2luZworCSAqIHNsYWIgb2YgcmVxdWVzdCBv YmplY3RzIHdpbGwgbm90IGJlIGZyZWVkIHdoaWxzdCB3ZSBob2xkIHRoZQorCSAqIFJDVSByZWFk IGxvY2suIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoZSByZXF1ZXN0IGl0c2VsZgorCSAq IHdpbGwgbm90IGJlIGZyZWVkIGFuZCB0aGVuICpyZXVzZWQqLiBWaXosCisJICoKKwkgKiBUaHJl YWQgQQkJCVRocmVhZCBCCisJICoKKwkgKiByZXEgPSBhY3RpdmUucmVxdWVzdAorCSAqCQkJCXJl dGlyZShyZXEpIC0+IGZyZWUocmVxKTsKKwkgKgkJCQkocmVxIGlzIG5vdyBmaXJzdCBvbiB0aGUg c2xhYiBmcmVlbGlzdCkKKwkgKgkJCQlhY3RpdmUucmVxdWVzdCA9IE5VTEwKKwkgKgorCSAqCQkJ CXJlcSA9IG5ldyBzdWJtaXNzaW9uIG9uIGEgbmV3IG9iamVjdAorCSAqIHJlZihyZXEpCisJICoK KwkgKiBUbyBwcmV2ZW50IHRoZSByZXF1ZXN0IGZyb20gYmVpbmcgcmV1c2VkIHdoaWxzdCB0aGUg Y2FsbGVyCisJICogdXNlcyBpdCwgd2UgdGFrZSBhIHJlZmVyZW5jZSBsaWtlIG5vcm1hbC4gV2hp bHN0IGFjcXVpcmluZworCSAqIHRoZSByZWZlcmVuY2Ugd2UgY2hlY2sgdGhhdCBpdCBpcyBub3Qg aW4gYSBkZXN0cm95ZWQgc3RhdGUKKwkgKiAocmVmY250ID09IDApLiBUaGF0IHByZXZlbnRzIHRo ZSByZXF1ZXN0IGJlaW5nIHJlYWxsb2NhdGVkCisJICogd2hpbHN0IHRoZSBjYWxsZXIgaG9sZHMg b24gdG8gaXQuIFRvIGNoZWNrIHRoYXQgdGhlIHJlcXVlc3QKKwkgKiB3YXMgbm90IHJlYWxsb2Nh dGVkIGFzIHdlIGFjcXVpcmVkIHRoZSByZWZlcmVuY2Ugd2UgaGF2ZSB0bworCSAqIGNoZWNrIHRo YXQgb3VyIHJlcXVlc3QgcmVtYWlucyB0aGUgYWN0aXZlIHJlcXVlc3QgYWNyb3NzCisJICogdGhl IGxvb2t1cCwgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgc2VxbG9jay4gVGhlIHZpc2liaWxpdHkK KwkgKiBvZiB0aGUgcG9pbnRlciB2ZXJzdXMgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBpcyBjb250 cm9sbGVkCisJICogYnkgdXNpbmcgUkNVIGJhcnJpZXJzIChyY3VfZGVyZWZlcmVuY2UgYW5kIHJj dV9hc3NpZ25fcG9pbnRlcikuCisJICoKKwkgKiBJbiB0aGUgbWlkZGxlIG9mIGFsbCB0aGF0LCB3 ZSBpbnNwZWN0IHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMKKwkgKiBjb21wbGV0ZS4gUmV0aXJpbmcg aXMgbGF6eSBzbyB0aGUgcmVxdWVzdCBtYXkgYmUgY29tcGxldGVkIGxvbmcKKwkgKiBiZWZvcmUg dGhlIGFjdGl2ZSB0cmFja2VyIGlzIHVwZGF0ZWQuIFF1ZXJ5aW5nIHdoZXRoZXIgdGhlCisJICog cmVxdWVzdCBpcyBjb21wbGV0ZSBpcyBmYXIgY2hlYXBlciAoYXMgaXQgaW52b2x2ZXMgbm8gbG9j a2VkCisJICogaW5zdHJ1Y3Rpb25zIHNldHRpbmcgY2FjaGVsaW5lcyB0byBleGNsdXNpdmUpIHRo YW4gYWNxdWlyaW5nCisJICogdGhlIHJlZmVyZW5jZSwgc28gd2UgZG8gaXQgZmlyc3QuIFRoZSBS Q1UgcmVhZCBsb2NrIGVuc3VyZXMgdGhlCisJICogcG9pbnRlciBkZXJlZmVyZW5jZSBpcyB2YWxp ZCwgYnV0IGRvZXMgbm90IGVuc3VyZSB0aGF0IHRoZQorCSAqIHNlcW5vIG5vciBIV1MgaXMgdGhl IHJpZ2h0IG9uZSEgSG93ZXZlciwgaWYgdGhlIHJlcXVlc3Qgd2FzCisJICogcmVhbGxvY2F0ZWQs IHRoYXQgbWVhbnMgdGhlIGFjdGl2ZSB0cmFja2VyJ3MgcmVxdWVzdCB3YXMgY29tcGxldGUuCisJ ICogSWYgdGhlIG5ldyByZXF1ZXN0IGlzIGFsc28gY29tcGxldGUsIHRoZW4gYm90aCBhcmUgYW5k IHdlIGNhbgorCSAqIGp1c3QgcmVwb3J0IHRoZSBhY3RpdmUgdHJhY2tlciBpcyBpZGxlLiBJZiB0 aGUgbmV3IHJlcXVlc3QgaXMKKwkgKiBpbmNvbXBsZXRlLCB0aGVuIHdlIGFjcXVpcmUgYSByZWZl cmVuY2Ugb24gaXQgYW5kIGNoZWNrIHRoYXQKKwkgKiBpdCByZW1haW5lZCB0aGUgYWN0aXZlIHJl cXVlc3QuCisJICovCisJZG8geworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3Q7CisKKwkJcmVxdWVzdCA9IHJjdV9kZXJlZmVyZW5jZShhY3RpdmUtPl9fcmVxdWVzdCk7CisJ CWlmICghcmVxdWVzdCB8fCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKKwkJ CXJldHVybiBOVUxMOworCisJCXJlcXVlc3QgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yY3UocmVx dWVzdCk7CisJCWlmICghcmVxdWVzdCB8fCByZXF1ZXN0ID09IHJjdV9kZXJlZmVyZW5jZShhY3Rp dmUtPl9fcmVxdWVzdCkpCisJCQlyZXR1cm4gcmVxdWVzdDsKKworCQlpOTE1X2dlbV9yZXF1ZXN0 X3B1dChyZXF1ZXN0KTsKKwl9IHdoaWxlICgxKTsKK30KKworLyoqCiAgKiBfX2k5MTVfZ2VtX2Fj dGl2ZV9pc19idXN5IC0gcmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGFzc2ln bmVkCiAgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSB0cmFja2VyCiAgKgpAQCAtNDMzLDcgKzUzMyw4 IEBAIGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZl LAogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAlpbnQgcmV0OwogCi0J cmVxdWVzdCA9IGFjdGl2ZS0+X19yZXF1ZXN0OworCXJlcXVlc3QgPSByY3VfZGVyZWZlcmVuY2Vf cHJvdGVjdGVkKGFjdGl2ZS0+X19yZXF1ZXN0LAorCQkJCQkgICAgbG9ja2RlcF9pc19oZWxkKG11 dGV4KSk7CiAJaWYgKCFyZXF1ZXN0KQogCQlyZXR1cm4gMDsKIApAQCAtNDQyLDcgKzU0Myw4IEBA IGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAog CQlyZXR1cm4gcmV0OwogCiAJbGlzdF9kZWxfaW5pdCgmYWN0aXZlLT5saW5rKTsKLQlhY3RpdmUt Pl9fcmVxdWVzdCA9IE5VTEw7CisJUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPl9fcmVxdWVzdCwg TlVMTCk7CisKIAlhY3RpdmUtPnJldGlyZShhY3RpdmUsIHJlcXVlc3QpOwogCiAJcmV0dXJuIDA7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwppbmRleCAzM2Y4ZGNiOWI4 YzQuLmExYTgwNWZjZGZmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc2hyaW5rZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtl ci5jCkBAIC0xOTEsNiArMTkxLDggQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCiAJ aTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKKwkvKiBleHBlZGl0ZSB0aGUgUkNV IGdyYWNlIHBlcmlvZCB0byBmcmVlIHNvbWUgcmVxdWVzdCBzbGFicyAqLworCXN5bmNocm9uaXpl X3JjdV9leHBlZGl0ZWQoKTsKIAogCXJldHVybiBjb3VudDsKIH0KQEAgLTIxMSwxMCArMjEzLDE1 IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAg Ki8KIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fc2hyaW5rX2FsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7Ci0JcmV0dXJuIGk5MTVfZ2VtX3NocmluayhkZXZfcHJpdiwgLTFV TCwKLQkJCSAgICAgICBJOTE1X1NIUklOS19CT1VORCB8Ci0JCQkgICAgICAgSTkxNV9TSFJJTktf VU5CT1VORCB8Ci0JCQkgICAgICAgSTkxNV9TSFJJTktfQUNUSVZFKTsKKwl1bnNpZ25lZCBsb25n IGZyZWVkOworCisJZnJlZWQgPSBpOTE1X2dlbV9zaHJpbmsoZGV2X3ByaXYsIC0xVUwsCisJCQkJ STkxNV9TSFJJTktfQk9VTkQgfAorCQkJCUk5MTVfU0hSSU5LX1VOQk9VTkQgfAorCQkJCUk5MTVf U0hSSU5LX0FDVElWRSk7CisJcmN1X2JhcnJpZXIoKTsgLyogd2FpdCB1bnRpbCBvdXIgUkNVIGRl bGF5ZWQgc2xhYiBmcmVlcyBhcmUgY29tcGxldGVkICovCisKKwlyZXR1cm4gZnJlZWQ7CiB9CiAK IHN0YXRpYyBib29sIGk5MTVfZ2VtX3Nocmlua2VyX2xvY2soc3RydWN0IGRybV9kZXZpY2UgKmRl diwgYm9vbCAqdW5sb2NrKQotLSAKMi44LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=