From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH 03/20] drm/i915: Add support for per engine reset recovery Date: Mon, 15 May 2017 14:18:02 -0700 Message-ID: <20170515211802.16193-1-michel.thierry@intel.com> References: <20170427231300.32841-4-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id AAAEA89F2D for ; Mon, 15 May 2017 21:18:02 +0000 (UTC) In-Reply-To: <20170427231300.32841-4-michel.thierry@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 VGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBwZXItZW5naW5lIHJlc2V0IGFzIGFu IGluaXRpYWwsIGxlc3MKaW50cnVzaXZlIGhhbmcgcmVjb3Zlcnkgb3B0aW9uIHRvIGJlIGF0dGVt cHRlZCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZQpsZWdhY3kgZnVsbCBHUFUgcmVzZXQgcmVj b3ZlcnkgbW9kZSBpZiBuZWNlc3NhcnkuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQKZnJvbSBHZW44 IG9ud2FyZHMuCgpIYW5nY2hlY2tlciBkZXRlcm1pbmVzIHdoaWNoIGVuZ2luZXMgYXJlIGh1bmcg YW5kIGludm9rZXMgZXJyb3IgaGFuZGxlciB0bwpyZWNvdmVyIGZyb20gaXQuIEVycm9yIGhhbmRs ZXIgc2NoZWR1bGVzIHJlY292ZXJ5IGZvciBlYWNoIG9mIHRob3NlIGVuZ2luZXMKdGhhdCBhcmUg aHVuZy4gVGhlIHJlY292ZXJ5IHByb2NlZHVyZSBpcyBhcyBmb2xsb3dzLAogLSBpZGVudGlmaWVz IHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBoYW5nIGFuZCBpdCBpcyBkcm9wcGVkCiAtIGZv cmNlIGVuZ2luZSB0byBpZGxlOiB0aGlzIGlzIGRvbmUgYnkgaXNzdWluZyBhIHJlc2V0IHJlcXVl c3QKIC0gcmVzZXQgdGhlIGVuZ2luZQogLSByZS1pbml0IHRoZSBlbmdpbmUgdG8gcmVzdW1lIHN1 Ym1pc3Npb25zLgoKSWYgZW5naW5lIHJlc2V0IGZhaWxzIHRoZW4gd2UgZmFsbCBiYWNrIHRvIGhl YXZ5IHdlaWdodCBmdWxsIGdwdSByZXNldAp3aGljaCByZXNldHMgYWxsIGVuZ2luZXMgYW5kIHJl aW5pdGlhemVzIGNvbXBsZXRlIHN0YXRlIG9mIEhXIGFuZCBTVy4KCnYyOiBSZWJhc2UuCnYzOiBz LyplbmdpbmVfcmVzZXQqLypyZXNldF9lbmdpbmUqLzsgZnJlZXplIGVuZ2luZSBhbmQgaXJxcyBi ZWZvcmUKY2FsbGluZyBpOTE1X2dlbV9yZXNldF9lbmdpbmUgKENocmlzKS4KdjQ6IFJlYmFzZSwg bW9kaWZ5IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmUgdG8gdXNlIGEgcmluZyBtYXNrIGFuZApyZXVz ZSB0aGUgZnVuY3Rpb24gZm9yIHJlc2V0X2VuZ2luZS4KdjU6IGludGVsX3Jlc2V0X2VuZ2luZV9z dGFydC9jYW5jZWwgaW5zdGVhZCBvZiByZXF1ZXN0L3VucmVxdWVzdF9yZXNldC4KdjY6IENsZWFu IHVwIHJlc2V0X2VuZ2luZSBmdW5jdGlvbiB0byBub3QgcmVxdWlyZSBtdXRleCwgaS5lLiBubyBu ZWVkIHRvIGNhbGwKcmV2b2tlL3Jlc3RvcmVfZmVuY2VzIGFuZCBfcmV0aXJlX3JlcXVlc3RzIChD aHJpcykuCnY3OiBSZW1vdmUgbGVmdG92ZXJzIGZyb20gdjUsIGkuZS4gbm8gbmVlZCB0byBkaXNh YmxlIGlycSwgaG9sZApmb3JjZXdha2Ugb3Igd2FrZXVwIHRoZSBoYW5kb2ZmIGJpdCAoQ2hyaXMp Lgp2ODogZW5naW5lX3JldGlyZV9yZXF1ZXN0cyBzaG91bGQgYmUgKGFuZCBpdCB3YXMpIHN0YXRp YzsgZXhwbGFpbiB0aGF0CndlIGhhdmUgdG8gcmUtaW5pdCB0aGUgZW5naW5lIGFmdGVyIHJlc2V0 LCB3aGljaCBpcyB3aHkgdGhlIGluaXRfaHcgY2FsbAppcyBuZWVkZWQ7IGNoZWNrIHJlc2V0LWlu LXByb2dyZXNzIGZsYWcgKENocmlzKS4KCkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFydW4gU2lsdXZlcnkgPGFydW4uc2lsdXZlcnlAbGludXguaW50ZWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgIHwgNTggKysrKysrKysrKysr KysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgIDUgKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgIHwgOTIgKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMgfCAyMCArKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgNDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZmEyMTQ1OGQ2ZTFlLi5k NjI3OTM4MDU3OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMTg4MywxMSArMTg4Myw2 NSBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ICoKICAqIFJlc2V0IGEgc3BlY2lmaWMgR1BVIGVuZ2luZS4gVXNlZnVsIGlmIGEgaGFuZyBpcyBk ZXRlY3RlZC4KICAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzZnVsIHJlc2V0IG9yIG90aGVyd2lz ZSBhbiBlcnJvciBjb2RlLgorICoKKyAqIFByb2NlZHVyZSBpczoKKyAqICAtIGlkZW50aWZpZXMg dGhlIHJlcXVlc3QgdGhhdCBjYXVzZWQgdGhlIGhhbmcgYW5kIGl0IGlzIGRyb3BwZWQKKyAqICAt IGZvcmNlIGVuZ2luZSB0byBpZGxlOiB0aGlzIGlzIGRvbmUgYnkgaXNzdWluZyBhIHJlc2V0IHJl cXVlc3QKKyAqICAtIHJlc2V0IGVuZ2luZQorICogIC0gcmUtaW5pdC9jb25maWd1cmUgZW5naW5l CiAgKi8KIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7Ci0JLyogRklYTUU6IHJlcGxhY2UgbWUgd2l0aCBlbmdpbmUgcmVzZXQgc2VxdWVuY2Ug Ki8KLQlyZXR1cm4gLUVOT0RFVjsKKwlpbnQgcmV0OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9y ID0gJmRldl9wcml2LT5ncHVfZXJyb3I7CisKKwlHRU1fQlVHX09OKCF0ZXN0X2JpdChJOTE1X1JF U0VUX0VOR0lORV9JTl9QUk9HUkVTUywgJmVycm9yLT5mbGFncykpOworCisJRFJNX0RFQlVHX0RS SVZFUigicmVzZXR0aW5nICVzXG4iLCBlbmdpbmUtPm5hbWUpOworCisJcmV0ID0gaTkxNV9nZW1f cmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigi UHJldmlvdXMgcmVzZXQgZmFpbGVkIC0gcHJvbW90ZSB0byBmdWxsIHJlc2V0XG4iKTsKKwkJZ290 byBvdXQ7CisJfQorCisJLyoKKwkgKiB0aGUgcmVxdWVzdCB0aGF0IGNhdXNlZCB0aGUgaGFuZyBp cyBzdHVjayBvbiBlbHNwLCBpZGVudGlmeSB0aGUKKwkgKiBhY3RpdmUgcmVxdWVzdCBhbmQgZHJv cCBpdCwgYWRqdXN0IGhlYWQgdG8gc2tpcCB0aGUgb2ZmZW5kaW5nCisJICogcmVxdWVzdCB0byBy ZXN1bWUgZXhlY3V0aW5nIHJlbWFpbmluZyByZXF1ZXN0cyBpbiB0aGUgcXVldWUuCisJICovCisJ aTkxNV9nZW1fcmVzZXRfZW5naW5lKGVuZ2luZSk7CisKKwkvKiBmb3JjaW5nIGVuZ2luZSB0byBp ZGxlICovCisJcmV0ID0gaW50ZWxfcmVzZXRfZW5naW5lX3N0YXJ0KGVuZ2luZSk7CisJaWYgKHJl dCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBkaXNhYmxlICVzXG4iLCBlbmdpbmUtPm5hbWUp OworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBmaW5hbGx5LCByZXNldCBlbmdpbmUgKi8KKwlyZXQg PSBpbnRlbF9ncHVfcmVzZXQoZGV2X3ByaXYsIGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSkpOwor CWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVzZXQgJXMsIHJldD0lZFxuIiwg ZW5naW5lLT5uYW1lLCByZXQpOworCQlpbnRlbF9yZXNldF9lbmdpbmVfY2FuY2VsKGVuZ2luZSk7 CisJCWdvdG8gb3V0OworCX0KKworCS8qIGJlIHN1cmUgdGhlIHJlcXVlc3QgcmVzZXQgYml0IGdl dHMgY2xlYXJlZCAqLworCWludGVsX3Jlc2V0X2VuZ2luZV9jYW5jZWwoZW5naW5lKTsKKworCWk5 MTVfZ2VtX3Jlc2V0X2ZpbmlzaF9lbmdpbmUoZW5naW5lKTsKKworCS8qCisJICogVGhlIGVuZ2lu ZSBhbmQgaXRzIHJlZ2lzdGVycyAoYW5kIHdvcmthcm91bmRzIGluIGNhc2Ugb2YgcmVuZGVyKQor CSAqIGhhdmUgYmVlbiByZXNldCB0byB0aGVpciBkZWZhdWx0IHZhbHVlcy4gRm9sbG93IHRoZSBp bml0X3JpbmcKKwkgKiBwcm9jZXNzIHRvIHByb2dyYW0gUklOR19NT0RFLCBIV1NQIGFuZCByZS1l bmFibGUgc3VibWlzc2lvbi4KKwkgKi8KKwlyZXQgPSBlbmdpbmUtPmluaXRfaHcoZW5naW5lKTsK Kworb3V0OgorCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9wbV9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmtkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBmMGZmOTE4ZTVk MGIuLmE1YjljNjY2YjNiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yOTk3LDYgKzI5 OTcsOCBAQCBleHRlcm4gYm9vbCBpbnRlbF9oYXNfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBleHRlcm4gYm9vbCBpbnRlbF9oYXNfcmVzZXRf ZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CitleHRlcm4gaW50IGlu dGVsX3Jlc2V0X2VuZ2luZV9zdGFydChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwor ZXh0ZXJuIHZvaWQgaW50ZWxfcmVzZXRfZW5naW5lX2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB2b2lkIGludGVsX2VuZ2luZV9pbml0X2hhbmdj aGVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogZXh0ZXJuIHZvaWQgaW50ZWxf aGFuZ2NoZWNrX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKQEAgLTMz NjgsMTEgKzMzNzAsMTQgQEAgc3RhdGljIGlubGluZSB1MzIgaTkxNV9yZXNldF9jb3VudChzdHJ1 Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQogCXJldHVybiBSRUFEX09OQ0UoZXJyb3ItPnJlc2V0 X2NvdW50KTsKIH0KIAoraW50IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBpbnQgaTkxNV9nZW1fcmVzZXRfcHJlcGFyZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpOTE1X2dlbV9yZXNldF9maW5p c2hfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiB2b2lkIGk5MTVfZ2Vt X3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBp OTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBi b29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwordm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKIAogdm9pZCBpOTE1X2dlbV9pbml0X21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpOwogaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCAwYzFjYmU5 OGM5OTQuLmI1ZGMwNzNhNWRkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0yNzkzLDQ4 ICsyNzkzLDU2IEBAIHN0YXRpYyBib29sIGVuZ2luZV9zdGFsbGVkKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotaW50IGk5MTVfZ2VtX3Jlc2V0X3By ZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorLyogRW5zdXJlIGlycSBo YW5kbGVyIGZpbmlzaGVzLCBhbmQgbm90IHJ1biBhZ2Fpbi4gKi8KK2ludCBpOTE1X2dlbV9yZXNl dF9wcmVwYXJlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwor CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAlpbnQgZXJyID0gMDsKIAot CS8qIEVuc3VyZSBpcnEgaGFuZGxlciBmaW5pc2hlcywgYW5kIG5vdCBydW4gYWdhaW4uICovCi0J Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Ci0JCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKLQotCQkvKiBQcmV2ZW50IHRoZSBzaWduYWxlciB0aHJl YWQgZnJvbSB1cGRhdGluZyB0aGUgcmVxdWVzdAotCQkgKiBzdGF0ZSAoYnkgY2FsbGluZyBkbWFf ZmVuY2Vfc2lnbmFsKSBhcyB3ZSBhcmUgcHJvY2Vzc2luZwotCQkgKiB0aGUgcmVzZXQuIFRoZSB3 cml0ZSBmcm9tIHRoZSBHUFUgb2YgdGhlIHNlcW5vIGlzCi0JCSAqIGFzeW5jaHJvbm91cyBhbmQg dGhlIHNpZ25hbGVyIHRocmVhZCBtYXkgc2VlIGEgZGlmZmVyZW50Ci0JCSAqIHZhbHVlIHRvIHVz IGFuZCBkZWNsYXJlIHRoZSByZXF1ZXN0IGNvbXBsZXRlLCBldmVuIHRob3VnaAotCQkgKiB0aGUg cmVzZXQgcm91dGluZSBoYXZlIHBpY2tlZCB0aGF0IHJlcXVlc3QgYXMgdGhlIGFjdGl2ZQotCQkg KiAoaW5jb21wbGV0ZSkgcmVxdWVzdC4gVGhpcyBjb25mbGljdCBpcyBub3QgaGFuZGxlZAotCQkg KiBncmFjZWZ1bGx5IQotCQkgKi8KLQkJa3RocmVhZF9wYXJrKGVuZ2luZS0+YnJlYWRjcnVtYnMu c2lnbmFsZXIpOwotCi0JCS8qIFByZXZlbnQgcmVxdWVzdCBzdWJtaXNzaW9uIHRvIHRoZSBoYXJk d2FyZSB1bnRpbCB3ZSBoYXZlCi0JCSAqIGNvbXBsZXRlZCB0aGUgcmVzZXQgaW4gaTkxNV9nZW1f cmVzZXRfZmluaXNoKCkuIElmIGEgcmVxdWVzdAotCQkgKiBpcyBjb21wbGV0ZWQgYnkgb25lIGVu Z2luZSwgaXQgbWF5IHRoZW4gcXVldWUgYSByZXF1ZXN0Ci0JCSAqIHRvIGEgc2Vjb25kIHZpYSBp dHMgZW5naW5lLT5pcnFfdGFza2xldCAqanVzdCogYXMgd2UgYXJlCi0JCSAqIGNhbGxpbmcgZW5n aW5lLT5pbml0X2h3KCkgYW5kIGFsc28gd3JpdGluZyB0aGUgRUxTUC4KLQkJICogVHVybmluZyBv ZmYgdGhlIGVuZ2luZS0+aXJxX3Rhc2tsZXQgdW50aWwgdGhlIHJlc2V0IGlzIG92ZXIKLQkJICog cHJldmVudHMgdGhlIHJhY2UuCi0JCSAqLwotCQl0YXNrbGV0X2tpbGwoJmVuZ2luZS0+aXJxX3Rh c2tsZXQpOwotCQl0YXNrbGV0X2Rpc2FibGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwogCi0JCWlm IChlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQotCQkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmll cihlbmdpbmUpOworCS8qIFByZXZlbnQgdGhlIHNpZ25hbGVyIHRocmVhZCBmcm9tIHVwZGF0aW5n IHRoZSByZXF1ZXN0CisJICogc3RhdGUgKGJ5IGNhbGxpbmcgZG1hX2ZlbmNlX3NpZ25hbCkgYXMg d2UgYXJlIHByb2Nlc3NpbmcKKwkgKiB0aGUgcmVzZXQuIFRoZSB3cml0ZSBmcm9tIHRoZSBHUFUg b2YgdGhlIHNlcW5vIGlzCisJICogYXN5bmNocm9ub3VzIGFuZCB0aGUgc2lnbmFsZXIgdGhyZWFk IG1heSBzZWUgYSBkaWZmZXJlbnQKKwkgKiB2YWx1ZSB0byB1cyBhbmQgZGVjbGFyZSB0aGUgcmVx dWVzdCBjb21wbGV0ZSwgZXZlbiB0aG91Z2gKKwkgKiB0aGUgcmVzZXQgcm91dGluZSBoYXZlIHBp Y2tlZCB0aGF0IHJlcXVlc3QgYXMgdGhlIGFjdGl2ZQorCSAqIChpbmNvbXBsZXRlKSByZXF1ZXN0 LiBUaGlzIGNvbmZsaWN0IGlzIG5vdCBoYW5kbGVkCisJICogZ3JhY2VmdWxseSEKKwkgKi8KKwlr dGhyZWFkX3BhcmsoZW5naW5lLT5icmVhZGNydW1icy5zaWduYWxlcik7CisKKwkvKiBQcmV2ZW50 IHJlcXVlc3Qgc3VibWlzc2lvbiB0byB0aGUgaGFyZHdhcmUgdW50aWwgd2UgaGF2ZQorCSAqIGNv bXBsZXRlZCB0aGUgcmVzZXQgaW4gaTkxNV9nZW1fcmVzZXRfZmluaXNoKCkuIElmIGEgcmVxdWVz dAorCSAqIGlzIGNvbXBsZXRlZCBieSBvbmUgZW5naW5lLCBpdCBtYXkgdGhlbiBxdWV1ZSBhIHJl cXVlc3QKKwkgKiB0byBhIHNlY29uZCB2aWEgaXRzIGVuZ2luZS0+aXJxX3Rhc2tsZXQgKmp1c3Qq IGFzIHdlIGFyZQorCSAqIGNhbGxpbmcgZW5naW5lLT5pbml0X2h3KCkgYW5kIGFsc28gd3JpdGlu ZyB0aGUgRUxTUC4KKwkgKiBUdXJuaW5nIG9mZiB0aGUgZW5naW5lLT5pcnFfdGFza2xldCB1bnRp bCB0aGUgcmVzZXQgaXMgb3ZlcgorCSAqIHByZXZlbnRzIHRoZSByYWNlLgorCSAqLworCXRhc2ts ZXRfa2lsbCgmZW5naW5lLT5pcnFfdGFza2xldCk7CisJdGFza2xldF9kaXNhYmxlKCZlbmdpbmUt PmlycV90YXNrbGV0KTsKIAotCQlpZiAoZW5naW5lX3N0YWxsZWQoZW5naW5lKSkgewotCQkJcmVx dWVzdCA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3QoZW5naW5lKTsKLQkJCWlmIChyZXF1 ZXN0ICYmIHJlcXVlc3QtPmZlbmNlLmVycm9yID09IC1FSU8pCi0JCQkJZXJyID0gLUVJTzsgLyog UHJldmlvdXMgcmVzZXQgZmFpbGVkISAqLwotCQl9CisJaWYgKGVuZ2luZS0+aXJxX3NlcW5vX2Jh cnJpZXIpCisJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIoZW5naW5lKTsKKworCWlmIChlbmdp bmVfc3RhbGxlZChlbmdpbmUpKSB7CisJCXJlcXVlc3QgPSBpOTE1X2dlbV9maW5kX2FjdGl2ZV9y ZXF1ZXN0KGVuZ2luZSk7CisJCWlmIChyZXF1ZXN0ICYmIHJlcXVlc3QtPmZlbmNlLmVycm9yID09 IC1FSU8pCisJCQllcnIgPSAtRUlPOyAvKiBQcmV2aW91cyByZXNldCBmYWlsZWQhICovCiAJfQog CisJcmV0dXJuIGVycjsKK30KKworaW50IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnQgZXJyID0gMDsKKworCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKKwkJZXJyID0gaTkxNV9nZW1fcmVzZXRf cHJlcGFyZV9lbmdpbmUoZW5naW5lKTsKKwogCWk5MTVfZ2VtX3Jldm9rZV9mZW5jZXMoZGV2X3By aXYpOwogCiAJcmV0dXJuIGVycjsKQEAgLTI5MjAsNyArMjkyOCw3IEBAIHN0YXRpYyBib29sIGk5 MTVfZ2VtX3Jlc2V0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQogCXJldHVybiBndWlsdHk7CiB9CiAKLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit2b2lkIGk5MTVfZ2VtX3Jlc2V0X2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwogCkBAIC0yOTY2LDYgKzI5NzQsMTIgQEAgdm9pZCBpOTE1 X2dlbV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogfQogCit2 b2lkIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQoreworCXRhc2tsZXRfZW5hYmxlKCZlbmdpbmUtPmlycV90YXNrbGV0KTsKKwlrdGhy ZWFkX3VucGFyayhlbmdpbmUtPmJyZWFkY3J1bWJzLnNpZ25hbGVyKTsKK30KKwogdm9pZCBpOTE1 X2dlbV9yZXNldF9maW5pc2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewog CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKQEAgLTI5NzMsMTAgKzI5ODcsOCBAQCB2 b2lkIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKLQkJdGFza2xldF9l bmFibGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwotCQlrdGhyZWFkX3VucGFyayhlbmdpbmUtPmJy ZWFkY3J1bWJzLnNpZ25hbGVyKTsKLQl9CisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3By aXYsIGlkKQorCQlpOTE1X2dlbV9yZXNldF9maW5pc2hfZW5naW5lKGVuZ2luZSk7CiB9CiAKIHN0 YXRpYyB2b2lkIG5vcF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmluZGV4IDVmNTVjYjU3MTI3 YS4uNTVjMmI5NDg2ZjcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwpAQCAtMTgw MSw2ICsxODAxLDI2IEBAIGludCBpbnRlbF9ndWNfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBPbiBnZW44KyBhIHJlc2V0 IHJlcXVlc3QgaGFzIHRvIGJlIGlzc3VlZCB2aWEgdGhlIHJlc2V0IGNvbnRyb2wgcmVnaXN0ZXIK KyAqIGJlZm9yZSBhIEdQVSBlbmdpbmUgY2FuIGJlIHJlc2V0IGluIG9yZGVyIHRvIHN0b3AgdGhl IGNvbW1hbmQgc3RyZWFtZXIKKyAqIGFuZCBpZGxlIHRoZSBlbmdpbmUuIFRoaXMgcmVwbGFjZXMg dGhlIGxlZ2FjeSB3YXkgb2Ygc3RvcHBpbmcgYW4gZW5naW5lCisgKiBieSB3cml0aW5nIHRvIHRo ZSBzdG9wIHJpbmcgYml0IGluIHRoZSBNSV9NT0RFIHJlZ2lzdGVyLgorICovCitpbnQgaW50ZWxf cmVzZXRfZW5naW5lX3N0YXJ0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwly ZXR1cm4gZ2VuOF9yZXNldF9lbmdpbmVfc3RhcnQoZW5naW5lKTsKK30KKworLyoKKyAqIEl0IGlz IHBvc3NpYmxlIHRvIGJhY2sgb2ZmIGZyb20gYSBwcmV2aW91c2x5IGlzc3VlZCByZXNldCByZXF1 ZXN0IGJ5IHNpbXBseQorICogY2xlYXJpbmcgdGhlIHJlc2V0IHJlcXVlc3QgYml0IGluIHRoZSBy ZXNldCBjb250cm9sIHJlZ2lzdGVyLgorICovCit2b2lkIGludGVsX3Jlc2V0X2VuZ2luZV9jYW5j ZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWdlbjhfcmVzZXRfZW5naW5l X2NhbmNlbChlbmdpbmUpOworfQorCiBib29sIGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJcmV0dXJuIGNoZWNrX2Zvcl91 bmNsYWltZWRfbW1pbyhkZXZfcHJpdik7Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=