From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 16/38] drm/i915: Enable lockless lookup of request tracking via RCU Date: Fri, 3 Jun 2016 17:55:31 +0100 Message-ID: <1464972953-2726-17-git-send-email-chris@chris-wilson.co.uk> References: <1464972953-2726-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 688D36EE6E for ; Fri, 3 Jun 2016 16:56:16 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id n184so724431wmn.1 for ; Fri, 03 Jun 2016 09:56:16 -0700 (PDT) In-Reply-To: <1464972953-2726-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 cXVlc3QuaCAgfCAxMTAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxNSArKystLQogNCBmaWxlcyBjaGFu Z2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKaW5kZXggZjZmMDM5YWFkNmUyLi40YzBlMzYzMjIxNGYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwpAQCAtNDE1OCw3ICs0MTU4LDkgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJZGV2X3ByaXYtPnJlcXVlc3RzID0KIAkJa21lbV9jYWNoZV9jcmVh dGUoImk5MTVfZ2VtX3JlcXVlc3QiLAogCQkJCSAgc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCksIDAsCi0JCQkJICBTTEFCX0hXQ0FDSEVfQUxJR04sCisJCQkJICBTTEFCX0hXQ0FD SEVfQUxJR04gfAorCQkJCSAgU0xBQl9SRUNMQUlNX0FDQ09VTlQgfAorCQkJCSAgU0xBQl9ERVNU Uk9ZX0JZX1JDVSwKIAkJCQkgIE5VTEwpOwogCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5j b250ZXh0X2xpc3QpOwpAQCAtNDE5NCw2ICs0MTk2LDkgQEAgdm9pZCBpOTE1X2dlbV9sb2FkX2Ns ZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3By aXYtPnJlcXVlc3RzKTsKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnZtYXMpOwogCWtt ZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+b2JqZWN0cyk7CisKKwkvKiBBbmQgZW5zdXJlIHRo YXQgb3VyIERFU1RST1lfQllfUkNVIHNsYWJzIGFyZSB0cnVseSBkZXN0cm95ZWQgKi8KKwlyY3Vf YmFycmllcigpOwogfQogCiBpbnQgaTkxNV9nZW1fZnJlZXplX2xhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5j CmluZGV4IDU5YWZjOGU1NDdjNC4uYTBjZGQzZjEwNTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5jCkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9n ZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQog CQlwcmVmZXRjaHcobmV4dCk7CiAKIAkJSU5JVF9MSVNUX0hFQUQoJmFjdGl2ZS0+bGluayk7Ci0J CWFjdGl2ZS0+X19yZXF1ZXN0ID0gTlVMTDsKKwkJUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPl9f cmVxdWVzdCwgTlVMTCk7CiAKIAkJYWN0aXZlLT5yZXRpcmUoYWN0aXZlLCByZXF1ZXN0KTsKIAl9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKaW5kZXggZTc5NDgwMWJhZjA3 Li42YWEyNDY4NDg4OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgK QEAgLTE3OCw2ICsxNzgsMTIgQEAgaTkxNV9nZW1fcmVxdWVzdF9nZXQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCiAJcmV0dXJuIHRvX3JlcXVlc3QoZmVuY2VfZ2V0KCZyZXEtPmZl bmNlKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoK K2k5MTVfZ2VtX3JlcXVlc3RfZ2V0X3JjdShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKK3sKKwlyZXR1cm4gdG9fcmVxdWVzdChmZW5jZV9nZXRfcmN1KCZyZXEtPmZlbmNlKSk7Cit9 CisKIHN0YXRpYyBpbmxpbmUgdm9pZAogaTkxNV9nZW1fcmVxdWVzdF9wdXQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CkBAIC0yNzYsMjEgKzI4MiwxMiBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgaTkxNV9zcGluX3JlcXVlc3QoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0LAogICogcmVzb3VyY2UgaW5jbHVkaW5nIGl0c2VsZi4KICAqLwogc3RydWN0 IGk5MTVfZ2VtX2FjdGl2ZSB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpfX3JlcXVl c3Q7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IF9fcmN1ICpfX3JlcXVlc3Q7CiAJc3Ry dWN0IGxpc3RfaGVhZCBsaW5rOwogCXZvaWQgKCpyZXRpcmUpKHN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgKiwKIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKTsKIH07CiAKLS8q KgotICogaTkxNV9nZW1fYWN0aXZlX3NldCAtIHVwZGF0ZXMgdGhlIHRyYWNrZXIgdG8gd2F0Y2gg dGhlIGN1cnJlbnQgcmVxdWVzdAotICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgotICog QHJlcXVlc3QgLSB0aGUgcmVxdWVzdCB0byB3YXRjaAotICoKLSAqIGk5MTVfZ2VtX2FjdGl2ZV9z ZXQoKSB3YXRjaGVzIHRoZSBnaXZlbiBAcmVxdWVzdCBmb3IgY29tcGxldGlvbi4gV2hpbHN0Ci0g KiB0aGF0IEByZXF1ZXN0IGlzIGJ1c3ksIHRoZSBAYWN0aXZlIHJlcG9ydHMgYnVzeS4gV2hlbiB0 aGF0IEByZXF1ZXN0IGlzCi0gKiByZXRpcmVkLCB0aGUgQGFjdGl2ZSB0cmFja2VyIGlzIHVwZGF0 ZWQgdG8gcmVwb3J0IGlkbGUuCi0gKi8KIHN0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9yZXF1ZXN0 X2FjdGl2ZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJCSAgICB2b2lkICgqZnVu Yykoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqLApAQCAtMzAwLDE4ICsyOTcsMzMgQEAgaW5pdF9y ZXF1ZXN0X2FjdGl2ZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJYWN0aXZlLT5y ZXRpcmUgPSBmdW5jOwogfQogCisvKioKKyAqIGk5MTVfZ2VtX2FjdGl2ZV9zZXQgLSB1cGRhdGVz IHRoZSB0cmFja2VyIHRvIHdhdGNoIHRoZSBjdXJyZW50IHJlcXVlc3QKKyAqIEBhY3RpdmUgLSB0 aGUgYWN0aXZlIHRyYWNrZXIKKyAqIEByZXF1ZXN0IC0gdGhlIHJlcXVlc3QgdG8gd2F0Y2gKKyAq CisgKiBpOTE1X2dlbV9hY3RpdmVfc2V0KCkgd2F0Y2hlcyB0aGUgZ2l2ZW4gQHJlcXVlc3QgZm9y IGNvbXBsZXRpb24uIFdoaWxzdAorICogdGhhdCBAcmVxdWVzdCBpcyBidXN5LCB0aGUgQGFjdGl2 ZSByZXBvcnRzIGJ1c3kuIFdoZW4gdGhhdCBAcmVxdWVzdCBpcworICogcmV0aXJlZCwgdGhlIEBh Y3RpdmUgdHJhY2tlciBpcyB1cGRhdGVkIHRvIHJlcG9ydCBpZGxlLgorICovCiBzdGF0aWMgaW5s aW5lIHZvaWQKIGk5MTVfZ2VtX2FjdGl2ZV9zZXQoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0 aXZlLAogCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewogCWxp c3RfbW92ZSgmYWN0aXZlLT5saW5rLCAmcmVxdWVzdC0+YWN0aXZlX2xpc3QpOwotCWFjdGl2ZS0+ X19yZXF1ZXN0ID0gcmVxdWVzdDsKKwlyY3VfYXNzaWduX3BvaW50ZXIoYWN0aXZlLT5fX3JlcXVl c3QsIHJlcXVlc3QpOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqCiBfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgKmFjdGl2ZSkKIHsKLQlyZXR1cm4gYWN0aXZlLT5fX3JlcXVlc3Q7CisJLyogSW5zaWRlIHRo ZSBlcnJvciBjYXB0dXJlIChydW5uaW5nIHdpdGggdGhlIGRyaXZlciBpbiBhbiB1bmtub3duCisJ ICogc3RhdGUpLCB3ZSB3YW50IHRvIGJlbmQgdGhlIHJ1bGVzIHNsaWdodGx5IChhIGxvdCkuCisJ ICoKKwkgKiBXb3JrIGlzIGluIHByb2dyZXNzIHRvIG1ha2UgaXQgc2FmZXIsIGluIHRoZSBtZWFu dGltZSB0aGlzIGtlZXBzCisJICogdGhlIGtub3duIGlzc3VlIGZyb20gc3BhbW1pbmcgdGhlIGxv Z3MuCisJICovCisJcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYWN0aXZlLT5fX3Jl cXVlc3QsIDEpOwogfQogCiAvKioKQEAgLTMyNiw4ICszMzgsOSBAQCBzdGF0aWMgaW5saW5lIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCiBpOTE1X2dlbV9hY3RpdmVfcGVlayhjb25zdCBz dHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsIHN0cnVjdCBtdXRleCAqbXV0ZXgpCiB7CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwotICAgICAgIAotCXJlcXVlc3Qg PSBhY3RpdmUtPl9fcmVxdWVzdDsKKworCXJlcXVlc3QgPSAgcmN1X2RlcmVmZXJlbmNlX3Byb3Rl Y3RlZChhY3RpdmUtPl9fcmVxdWVzdCwKKwkJCQkJICAgICBsb2NrZGVwX2lzX2hlbGQobXV0ZXgp KTsKIAlpZiAoIXJlcXVlc3QgfHwgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkp CiAJCXJldHVybiBOVUxMOwogCkBAIC0zNDgsNiArMzYxLDcyIEBAIGk5MTVfZ2VtX2FjdGl2ZV9n ZXQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLCBzdHJ1Y3QgbXV0ZXggKm11 dGV4KQogfQogCiAvKioKKyAqIGk5MTVfZ2VtX2FjdGl2ZV9nZXRfcmN1IC0gcmV0dXJuIGEgcmVm ZXJlbmNlIHRvIHRoZSBhY3RpdmUgcmVxdWVzdAorICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJh Y2tlcgorICoKKyAqIGk5MTVfZ2VtX2FjdGl2ZV9nZXQoKSByZXR1cm5zIGEgcmVmZXJlbmNlIHRv IHRoZSBhY3RpdmUgcmVxdWVzdCwgb3IgTlVMTAorICogaWYgdGhlIGFjdGl2ZSB0cmFja2VyIGlz IGlkbGUuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBSQ1UgcmVhZCBsb2NrLgorICovCitzdGF0 aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCitpOTE1X2dlbV9hY3RpdmVf Z2V0X3JjdShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCit7CisJLyogUGVy Zm9ybWluZyBhIGxvY2tsZXNzIHJldHJpZXZhbCBvZiB0aGUgYWN0aXZlIHJlcXVlc3QgaXMgc3Vw ZXIKKwkgKiB0cmlja3kuIFNMQUJfREVTVFJPWV9CWV9SQ1UgbWVyZWx5IGd1YXJhbnRlZXMgdGhh dCB0aGUgYmFja2luZworCSAqIHNsYWIgb2YgcmVxdWVzdCBvYmplY3RzIHdpbGwgbm90IGJlIGZy ZWVkIHdoaWxzdCB3ZSBob2xkIHRoZQorCSAqIFJDVSByZWFkIGxvY2suIEl0IGRvZXMgbm90IGd1 YXJhbnRlZSB0aGF0IHRoZSByZXF1ZXN0IGl0c2VsZgorCSAqIHdpbGwgbm90IGJlIGZyZWVkIGFu ZCB0aGVuICpyZXVzZWQqLiBWaXosCisJICoKKwkgKiBUaHJlYWQgQQkJCVRocmVhZCBCCisJICoK KwkgKiByZXEgPSBhY3RpdmUucmVxdWVzdAorCSAqIAkJCQlyZXRpcmUocmVxKSAtPiBmcmVlKHJl cSk7CisJICogCQkJCShyZXEgaXMgbm93IGZpcnN0IG9uIHRoZSBzbGFiIGZyZWVsaXN0KQorCSAq IAkJCQlhY3RpdmUucmVxdWVzdCA9IE5VTEwKKwkgKgorCSAqIAkJCQlyZXEgPSBuZXcgc3VibWlz c2lvbiBvbiBhIG5ldyBvYmplY3QKKwkgKiByZWYocmVxKQorCSAqCisJICogVG8gcHJldmVudCB0 aGUgcmVxdWVzdCBmcm9tIGJlaW5nIHJldXNlZCB3aGlsc3QgdGhlIGNhbGxlcgorCSAqIHVzZXMg aXQsIHdlIHRha2UgYSByZWZlcmVuY2UgbGlrZSBub3JtYWwuIFdoaWxzdCBhY3F1aXJpbmcKKwkg KiB0aGUgcmVmZXJlbmNlIHdlIGNoZWNrIHRoYXQgaXQgaXMgbm90IGluIGEgZGVzdHJveWVkIHN0 YXRlCisJICogKHJlZmNudCA9PSAwKS4gVGhhdCBwcmV2ZW50cyB0aGUgcmVxdWVzdCBiZWluZyBy ZWFsbG9jYXRlZAorCSAqIHdoaWxzdCB0aGUgY2FsbGVyIGhvbGRzIG9uIHRvIGl0LiBUbyBjaGVj ayB0aGF0IHRoZSByZXF1ZXN0CisJICogd2FzIG5vdCByZWFsbG9jYXRlZCBhcyB3ZSBhY3F1aXJl ZCB0aGUgcmVmZXJlbmNlIHdlIGhhdmUgdG8KKwkgKiBjaGVjayB0aGF0IG91ciByZXF1ZXN0IHJl bWFpbnMgdGhlIGFjdGl2ZSByZXF1ZXN0IGFjcm9zcworCSAqIHRoZSBsb29rdXAsIGluIHRoZSBz YW1lIG1hbm5lciBhcyBhIHNlcWxvY2suIFRoZSB2aXNpYmlsaXR5CisJICogb2YgdGhlIHBvaW50 ZXIgdmVyc3VzIHRoZSByZWZlcmVuY2UgY291bnRpbmcgaXMgY29udHJvbGxlZAorCSAqIGJ5IHVz aW5nIFJDVSBiYXJyaWVycyAocmN1X2RlcmVmZXJlbmNlIGFuZCByY3VfYXNzaWduX3BvaW50ZXIp LgorCSAqCisJICogSW4gdGhlIG1pZGRsZSBvZiBhbGwgdGhhdCwgd2UgaW5zcGVjdCB3aGV0aGVy IHRoZSByZXF1ZXN0IGlzCisJICogY29tcGxldGUuIFJldGlyaW5nIGlzIGxhenkgc28gdGhlIHJl cXVlc3QgbWF5IGJlIGNvbXBsZXRlZCBsb25nCisJICogYmVmb3JlIHRoZSBhY3RpdmUgdHJhY2tl ciBpcyB1cGRhdGVkLiBRdWVyeWluZyB3aGV0aGVyIHRoZQorCSAqIHJlcXVlc3QgaXMgY29tcGxl dGUgaXMgZmFyIGNoZWFwZXIgKGFzIGl0IGludm9sdmVzIG5vIGxvY2tlZAorCSAqIGluc3RydWN0 aW9ucyBzZXR0aW5nIGNhY2hlbGluZXMgdG8gZXhjbHVzaXZlKSB0aGFuIGFjcXVpcmluZworCSAq IHRoZSByZWZlcmVuY2UsIHNvIHdlIGRvIGl0IGZpcnN0LiBUaGUgUkNVIHJlYWQgbG9jayBlbnN1 cmVzIHRoZQorCSAqIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXMgdmFsaWQsIGJ1dCBkb2VzIG5vdCBl bnN1cmUgdGhhdCB0aGUKKwkgKiBzZXFubyBub3IgSFdTIGlzIHRoZSByaWdodCBvbmUhIEhvd2V2 ZXIsIGlmIHRoZSByZXF1ZXN0IHdhcworCSAqIHJlYWxsb2NhdGVkLCB0aGF0IG1lYW5zIHRoZSBh Y3RpdmUgdHJhY2tlcidzIHJlcXVlc3Qgd2FzIGNvbXBsZXRlLgorCSAqIElmIHRoZSBuZXcgcmVx dWVzdCBpcyBhbHNvIGNvbXBsZXRlLCB0aGVuIGJvdGggYXJlIGFuZCB3ZSBjYW4KKwkgKiBqdXN0 IHJlcG9ydCB0aGUgYWN0aXZlIHRyYWNrZXIgaXMgaWRsZS4gSWYgdGhlIG5ldyByZXF1ZXN0IGlz CisJICogaW5jb21wbGV0ZSwgdGhlbiB3ZSBhY3F1aXJlIGEgcmVmZXJlbmNlIG9uIGl0IGFuZCBj aGVjayB0aGF0CisJICogaXQgcmVtYWluZWQgdGhlIGFjdGl2ZSByZXF1ZXN0LgorCSAqLworCWRv IHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OworCisJCXJlcXVlc3Qg PSByY3VfZGVyZWZlcmVuY2UoYWN0aXZlLT5fX3JlcXVlc3QpOworCQlpZiAoIXJlcXVlc3QgfHwg aTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCisJCQlyZXR1cm4gTlVMTDsKKwor CQlyZXF1ZXN0ID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfcmN1KHJlcXVlc3QpOworCQlpZiAoIXJl cXVlc3QgfHwgcmVxdWVzdCA9PSByY3VfZGVyZWZlcmVuY2UoYWN0aXZlLT5fX3JlcXVlc3QpKQor CQkJcmV0dXJuIHJlcXVlc3Q7CisKKwkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxdWVzdCk7CisJ fSB3aGlsZSAoMSk7Cit9CisKKy8qKgogICogX19pOTE1X2dlbV9hY3RpdmVfaXNfYnVzeSAtIHJl cG9ydCB3aGV0aGVyIHRoZSBhY3RpdmUgdHJhY2tlciBpcyBhc3NpZ25lZAogICogQGFjdGl2ZSAt IHRoZSBhY3RpdmUgdHJhY2tlcgogICoKQEAgLTQxMSw3ICs0OTAsOCBAQCBpOTE1X2dlbV9hY3Rp dmVfcmV0aXJlKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CiAKLQlyZXF1ZXN0ID0gYWN0aXZlLT5f X3JlcXVlc3Q7CisJcmVxdWVzdCA9ICByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGFjdGl2ZS0+ X19yZXF1ZXN0LAorCQkJCQkgICAgIGxvY2tkZXBfaXNfaGVsZChtdXRleCkpOwogCWlmICghcmVx dWVzdCkKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtl ci5jCmluZGV4IDVjYmM0ZWU1MmM2ZC4uNmVlYTRhYmViOWNlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKQEAgLTE5MSw2ICsxOTEsOCBAQCBpOTE1X2dlbV9zaHJp bmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdik7CiAKIAlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwor CS8qIGV4cGVkaXRlIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIHRvIGZyZWUgc29tZSByZXF1ZXN0IHNs YWJzICovCisJc3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpOwogCiAJcmV0dXJuIGNvdW50Owog fQpAQCAtMjExLDEwICsyMTMsMTUgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKICAqLwogdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9zaHJpbmtfYWxs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlyZXR1cm4gaTkxNV9nZW1f c2hyaW5rKGRldl9wcml2LCAtMVVMLAotCQkJICAgICAgIEk5MTVfU0hSSU5LX0JPVU5EIHwKLQkJ CSAgICAgICBJOTE1X1NIUklOS19VTkJPVU5EIHwKLQkJCSAgICAgICBJOTE1X1NIUklOS19BQ1RJ VkUpOworCXVuc2lnbmVkIGxvbmcgZnJlZWQ7CisKKwlmcmVlZCA9IGk5MTVfZ2VtX3Nocmluayhk ZXZfcHJpdiwgLTFVTCwKKwkJCQlJOTE1X1NIUklOS19CT1VORCB8CisJCQkJSTkxNV9TSFJJTktf VU5CT1VORCB8CisJCQkJSTkxNV9TSFJJTktfQUNUSVZFKTsKKwlyY3VfYmFycmllcigpOyAvKiB3 YWl0IHVudGlsIG91ciBSQ1UgZGVsYXllZCBzbGFiIGZyZWVzIGFyZSBjb21wbGV0ZWQgKi8KKwor CXJldHVybiBmcmVlZDsKIH0KIAogc3RhdGljIGJvb2wgaTkxNV9nZW1fc2hyaW5rZXJfbG9jayhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICp1bmxvY2spCi0tIAoyLjguMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==