From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v7 03/20] drm/i915: Add support for per engine reset recovery Date: Thu, 27 Apr 2017 16:12:43 -0700 Message-ID: <20170427231300.32841-4-michel.thierry@intel.com> References: <20170427231300.32841-1-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5BCBD6E195 for ; Thu, 27 Apr 2017 23:13:02 +0000 (UTC) In-Reply-To: <20170427231300.32841-1-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 RnJvbTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRlbC5jb20+CgpUaGlz IGNoYW5nZSBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBlci1lbmdpbmUgcmVzZXQgYXMgYW4gaW5p dGlhbCwgbGVzcwppbnRydXNpdmUgaGFuZyByZWNvdmVyeSBvcHRpb24gdG8gYmUgYXR0ZW1wdGVk IGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gdGhlCmxlZ2FjeSBmdWxsIEdQVSByZXNldCByZWNvdmVy eSBtb2RlIGlmIG5lY2Vzc2FyeS4gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZApmcm9tIEdlbjggb253 YXJkcy4KCkhhbmdjaGVja2VyIGRldGVybWluZXMgd2hpY2ggZW5naW5lcyBhcmUgaHVuZyBhbmQg aW52b2tlcyBlcnJvciBoYW5kbGVyIHRvCnJlY292ZXIgZnJvbSBpdC4gRXJyb3IgaGFuZGxlciBz Y2hlZHVsZXMgcmVjb3ZlcnkgZm9yIGVhY2ggb2YgdGhvc2UgZW5naW5lcwp0aGF0IGFyZSBodW5n LiBUaGUgcmVjb3ZlcnkgcHJvY2VkdXJlIGlzIGFzIGZvbGxvd3MsCiAtIGlkZW50aWZpZXMgdGhl IHJlcXVlc3QgdGhhdCBjYXVzZWQgdGhlIGhhbmcgYW5kIGl0IGlzIGRyb3BwZWQKIC0gZm9yY2Ug ZW5naW5lIHRvIGlkbGU6IHRoaXMgaXMgZG9uZSBieSBpc3N1aW5nIGEgcmVzZXQgcmVxdWVzdAog LSByZXNldCBhbmQgcmUtaW5pdCBlbmdpbmUKIC0gcmVzdGFydCBzdWJtaXNzaW9ucyB0byB0aGUg ZW5naW5lCgpJZiBlbmdpbmUgcmVzZXQgZmFpbHMgdGhlbiB3ZSBmYWxsIGJhY2sgdG8gaGVhdnkg d2VpZ2h0IGZ1bGwgZ3B1IHJlc2V0CndoaWNoIHJlc2V0cyBhbGwgZW5naW5lcyBhbmQgcmVpbml0 aWF6ZXMgY29tcGxldGUgc3RhdGUgb2YgSFcgYW5kIFNXLgoKdjI6IFJlYmFzZS4KdjM6IHMvKmVu Z2luZV9yZXNldCovKnJlc2V0X2VuZ2luZSovOyBmcmVlemUgZW5naW5lIGFuZCBpcnFzIGJlZm9y ZQpjYWxsaW5nIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZSAoQ2hyaXMpLgp2NDogUmViYXNlLCBtb2Rp ZnkgaTkxNV9nZW1fcmVzZXRfcHJlcGFyZSB0byB1c2UgYSByaW5nIG1hc2sgYW5kCnJldXNlIHRo ZSBmdW5jdGlvbiBmb3IgcmVzZXRfZW5naW5lLgp2NTogaW50ZWxfcmVzZXRfZW5naW5lX3N0YXJ0 L2NhbmNlbCBpbnN0ZWFkIG9mIHJlcXVlc3QvdW5yZXF1ZXN0X3Jlc2V0Lgp2NjogQ2xlYW4gdXAg cmVzZXRfZW5naW5lIGZ1bmN0aW9uIHRvIG5vdCByZXF1aXJlIG11dGV4LCBpLmUuIG5vIG5lZWQg dG8gY2FsbApyZXZva2UvcmVzdG9yZV9mZW5jZXMgYW5kIF9yZXRpcmVfcmVxdWVzdHMgKENocmlz KS4Kdjc6IFJlbW92ZSBsZWZ0b3ZlcnMgZnJvbSB2NSwgaS5lLiBubyBuZWVkIHRvIGRpc2FibGUg aXJxLCBob2xkCmZvcmNld2FrZSBvciB3YWtldXAgdGhlIGhhbmRvZmYgYml0IChDaHJpcykuCgpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBNaWthIEt1b3Bw YWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVG9tYXMg RWxmIDx0b21hcy5lbGZAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBcnVuIFNpbHV2ZXJ5IDxh cnVuLnNpbHV2ZXJ5QGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVy cnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jICAgICAgICAgfCA2MCArKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgMTIgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgOTcgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgfCAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgIHwgMjAgKysrKysrKwogNSBmaWxl cyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKaW5kZXggNDhjOGI2OWQ5YmRlLi5hZTg5MTUyOWRlZGQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwpAQCAtMTgxMCw3ICsxODEwLDcgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCXByX25vdGljZSgiZHJtL2k5MTU6IFJl c2V0dGluZyBjaGlwIGFmdGVyIGdwdSBoYW5nXG4iKTsKIAlkaXNhYmxlX2lycShkZXZfcHJpdi0+ ZHJtLmlycSk7Ci0JcmV0ID0gaTkxNV9nZW1fcmVzZXRfcHJlcGFyZShkZXZfcHJpdik7CisJcmV0 ID0gaTkxNV9nZW1fcmVzZXRfcHJlcGFyZShkZXZfcHJpdiwgQUxMX0VOR0lORVMpOwogCWlmIChy ZXQpIHsKIAkJRFJNX0VSUk9SKCJHUFUgcmVjb3ZlcnkgZmFpbGVkXG4iKTsKIAkJaW50ZWxfZ3B1 X3Jlc2V0KGRldl9wcml2LCBBTExfRU5HSU5FUyk7CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lk IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWk5MTVfcXVl dWVfaGFuZ2NoZWNrKGRldl9wcml2KTsKIAogZmluaXNoOgotCWk5MTVfZ2VtX3Jlc2V0X2Zpbmlz aChkZXZfcHJpdik7CisJaTkxNV9nZW1fcmVzZXRfZmluaXNoKGRldl9wcml2LCBBTExfRU5HSU5F Uyk7CiAJZW5hYmxlX2lycShkZXZfcHJpdi0+ZHJtLmlycSk7CiAKIHdha2V1cDoKQEAgLTE4NzEs MTEgKzE4NzEsNjMgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKICAqCiAgKiBSZXNldCBhIHNwZWNpZmljIEdQVSBlbmdpbmUuIFVzZWZ1bCBpZiBh IGhhbmcgaXMgZGV0ZWN0ZWQuCiAgKiBSZXR1cm5zIHplcm8gb24gc3VjY2Vzc2Z1bCByZXNldCBv ciBvdGhlcndpc2UgYW4gZXJyb3IgY29kZS4KKyAqCisgKiBQcm9jZWR1cmUgaXM6CisgKiAgLSBp ZGVudGlmaWVzIHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBoYW5nIGFuZCBpdCBpcyBkcm9w cGVkCisgKiAgLSBmb3JjZSBlbmdpbmUgdG8gaWRsZTogdGhpcyBpcyBkb25lIGJ5IGlzc3Vpbmcg YSByZXNldCByZXF1ZXN0CisgKiAgLSByZXNldCBlbmdpbmUKKyAqICAtIHJlc3RhcnQgc3VibWlz c2lvbnMgdG8gdGhlIGVuZ2luZQogICovCiBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCS8qIEZJWE1FOiByZXBsYWNlIG1lIHdpdGggZW5n aW5lIHJlc2V0IHNlcXVlbmNlICovCi0JcmV0dXJuIC1FTk9ERVY7CisJaW50IHJldDsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5 MTVfZ3B1X2Vycm9yICplcnJvciA9ICZkZXZfcHJpdi0+Z3B1X2Vycm9yOworCisJR0VNX0JVR19P TighdGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZXJyb3ItPmZsYWdzKSk7CisKKwlEUk1f REVCVUdfRFJJVkVSKCJyZXNldHRpbmcgJXNcbiIsIGVuZ2luZS0+bmFtZSk7CisKKwlyZXQgPSBp OTE1X2dlbV9yZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpOworCWlmIChyZXQpIHsKKwkJRFJN X0VSUk9SKCJQcmV2aW91cyByZXNldCBmYWlsZWQgLSBwcm9tb3RlIHRvIGZ1bGwgcmVzZXRcbiIp OworCQlnb3RvIG91dDsKKwl9CisKKwkvKgorCSAqIHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRo ZSBoYW5nIGlzIHN0dWNrIG9uIGVsc3AsIGlkZW50aWZ5IHRoZQorCSAqIGFjdGl2ZSByZXF1ZXN0 IGFuZCBkcm9wIGl0LCBhZGp1c3QgaGVhZCB0byBza2lwIHRoZSBvZmZlbmRpbmcKKwkgKiByZXF1 ZXN0IHRvIHJlc3VtZSBleGVjdXRpbmcgcmVtYWluaW5nIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS4K KwkgKi8KKwlpOTE1X2dlbV9yZXNldF9lbmdpbmUoZW5naW5lKTsKKworCS8qIGZvcmNpbmcgZW5n aW5lIHRvIGlkbGUgKi8KKwlyZXQgPSBpbnRlbF9yZXNldF9lbmdpbmVfc3RhcnQoZW5naW5lKTsK KwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgJXNcbiIsIGVuZ2lu ZS0+bmFtZSk7CisJCWdvdG8gb3V0OworCX0KKworCS8qIGZpbmFsbHksIHJlc2V0IGVuZ2luZSAq LworCXJldCA9IGludGVsX2dwdV9yZXNldChkZXZfcHJpdiwgaW50ZWxfZW5naW5lX2ZsYWcoZW5n aW5lKSk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZXNldCAlcywgcmV0 PSVkXG4iLCBlbmdpbmUtPm5hbWUsIHJldCk7CisJCWludGVsX3Jlc2V0X2VuZ2luZV9jYW5jZWwo ZW5naW5lKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogYmUgc3VyZSB0aGUgcmVxdWVzdCByZXNl dCBiaXQgZ2V0cyBjbGVhcmVkICovCisJaW50ZWxfcmVzZXRfZW5naW5lX2NhbmNlbChlbmdpbmUp OworCisJaTkxNV9nZW1fcmVzZXRfZmluaXNoX2VuZ2luZShlbmdpbmUpOworCisJLyogcmVwbGF5 IHJlbWFpbmluZyByZXF1ZXN0cyBpbiB0aGUgcXVldWUgKi8KKwlyZXQgPSBlbmdpbmUtPmluaXRf aHcoZW5naW5lKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsgLy9YWFg6IGlnbm9yZSB0aGlzIGxp bmUgZm9yIG5vdworCitvdXQ6CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBpOTE1X3Bt X3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IGFiN2U2ODYyNmM0OS4uZWZiZjM0MzE4ODkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTMwMjIsNiArMzAyMiw4IEBAIGV4dGVybiBib29sIGludGVsX2hhc19ncHVfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB2b2lkIGk5MTVfcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaTkxNV9yZXNldF9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGV4dGVybiBib29sIGludGVs X2hhc19yZXNldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2V4 dGVybiBpbnQgaW50ZWxfcmVzZXRfZW5naW5lX3N0YXJ0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7CitleHRlcm4gdm9pZCBpbnRlbF9yZXNldF9lbmdpbmVfY2FuY2VsKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBleHRlcm4gaW50IGludGVsX2d1Y19yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZW5naW5l X2luaXRfaGFuZ2NoZWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBleHRlcm4g dm9pZCBpbnRlbF9oYW5nY2hlY2tfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwpAQCAtMzQxMCw3ICszNDEyLDYgQEAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zZXRf Z2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBzZXFubyk7CiAKIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCiBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0KIHZvaWQgaTkxNV9nZW1fcmV0aXJlX3Jl cXVlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIHN0YXRpYyBpbmxp bmUgYm9vbCBpOTE1X3Jlc2V0X2JhY2tvZmYoc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvcikK QEAgLTM0MzgsMTEgKzM0MzksMTYgQEAgc3RhdGljIGlubGluZSB1MzIgaTkxNV9yZXNldF9jb3Vu dChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQogCXJldHVybiBSRUFEX09OQ0UoZXJyb3It PnJlc2V0X2NvdW50KTsKIH0KIAotaW50IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCBpOTE1X2dlbV9yZXNldF9wcmVwYXJlX2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworaW50IGk5MTVfZ2VtX3Jlc2V0 X3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgdW5zaWdu ZWQgaW50IGVuZ2luZV9tYXNrKTsKIHZvaWQgaTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKLXZvaWQgaTkxNV9nZW1fcmVzZXRfZmluaXNoKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaF9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK3ZvaWQgaTkxNV9nZW1fcmVz ZXRfZmluaXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgIHVuc2ln bmVkIGludCBlbmdpbmVfbWFzayk7CiB2b2lkIGk5MTVfZ2VtX3NldF93ZWRnZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGJvb2wgaTkxNV9nZW1fdW5zZXRfd2VkZ2VkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGk5MTVfZ2VtX3Jlc2V0X2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiB2b2lkIGk5MTVfZ2VtX2lu aXRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiBpbnQgX19tdXN0X2NoZWNr IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCmluZGV4IDMzZmIxMWNjNWFjYy4uYmNlMzgwNjJmOTRlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI3OTMsNDggKzI3OTMsNTcgQEAgc3RhdGljIGJvb2wgZW5n aW5lX3N0YWxsZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiB0cnVl OwogfQogCi1pbnQgaTkxNV9nZW1fcmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCisvKiBFbnN1cmUgaXJxIGhhbmRsZXIgZmluaXNoZXMsIGFuZCBub3QgcnVu IGFnYWluLiAqLworaW50IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0OwogCWludCBlcnIgPSAwOwogCi0JLyogRW5zdXJlIGlycSBoYW5kbGVyIGZpbmlz aGVzLCBhbmQgbm90IHJ1biBhZ2Fpbi4gKi8KLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZf cHJpdiwgaWQpIHsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwotCi0J CS8qIFByZXZlbnQgdGhlIHNpZ25hbGVyIHRocmVhZCBmcm9tIHVwZGF0aW5nIHRoZSByZXF1ZXN0 Ci0JCSAqIHN0YXRlIChieSBjYWxsaW5nIGRtYV9mZW5jZV9zaWduYWwpIGFzIHdlIGFyZSBwcm9j ZXNzaW5nCi0JCSAqIHRoZSByZXNldC4gVGhlIHdyaXRlIGZyb20gdGhlIEdQVSBvZiB0aGUgc2Vx bm8gaXMKLQkJICogYXN5bmNocm9ub3VzIGFuZCB0aGUgc2lnbmFsZXIgdGhyZWFkIG1heSBzZWUg YSBkaWZmZXJlbnQKLQkJICogdmFsdWUgdG8gdXMgYW5kIGRlY2xhcmUgdGhlIHJlcXVlc3QgY29t cGxldGUsIGV2ZW4gdGhvdWdoCi0JCSAqIHRoZSByZXNldCByb3V0aW5lIGhhdmUgcGlja2VkIHRo YXQgcmVxdWVzdCBhcyB0aGUgYWN0aXZlCi0JCSAqIChpbmNvbXBsZXRlKSByZXF1ZXN0LiBUaGlz IGNvbmZsaWN0IGlzIG5vdCBoYW5kbGVkCi0JCSAqIGdyYWNlZnVsbHkhCi0JCSAqLwotCQlrdGhy ZWFkX3BhcmsoZW5naW5lLT5icmVhZGNydW1icy5zaWduYWxlcik7Ci0KLQkJLyogUHJldmVudCBy ZXF1ZXN0IHN1Ym1pc3Npb24gdG8gdGhlIGhhcmR3YXJlIHVudGlsIHdlIGhhdmUKLQkJICogY29t cGxldGVkIHRoZSByZXNldCBpbiBpOTE1X2dlbV9yZXNldF9maW5pc2goKS4gSWYgYSByZXF1ZXN0 Ci0JCSAqIGlzIGNvbXBsZXRlZCBieSBvbmUgZW5naW5lLCBpdCBtYXkgdGhlbiBxdWV1ZSBhIHJl cXVlc3QKLQkJICogdG8gYSBzZWNvbmQgdmlhIGl0cyBlbmdpbmUtPmlycV90YXNrbGV0ICpqdXN0 KiBhcyB3ZSBhcmUKLQkJICogY2FsbGluZyBlbmdpbmUtPmluaXRfaHcoKSBhbmQgYWxzbyB3cml0 aW5nIHRoZSBFTFNQLgotCQkgKiBUdXJuaW5nIG9mZiB0aGUgZW5naW5lLT5pcnFfdGFza2xldCB1 bnRpbCB0aGUgcmVzZXQgaXMgb3ZlcgotCQkgKiBwcmV2ZW50cyB0aGUgcmFjZS4KLQkJICovCi0J CXRhc2tsZXRfa2lsbCgmZW5naW5lLT5pcnFfdGFza2xldCk7Ci0JCXRhc2tsZXRfZGlzYWJsZSgm ZW5naW5lLT5pcnFfdGFza2xldCk7CiAKLQkJaWYgKGVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIp Ci0JCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7CisJLyogUHJldmVudCB0aGUg c2lnbmFsZXIgdGhyZWFkIGZyb20gdXBkYXRpbmcgdGhlIHJlcXVlc3QKKwkgKiBzdGF0ZSAoYnkg Y2FsbGluZyBkbWFfZmVuY2Vfc2lnbmFsKSBhcyB3ZSBhcmUgcHJvY2Vzc2luZworCSAqIHRoZSBy ZXNldC4gVGhlIHdyaXRlIGZyb20gdGhlIEdQVSBvZiB0aGUgc2Vxbm8gaXMKKwkgKiBhc3luY2hy b25vdXMgYW5kIHRoZSBzaWduYWxlciB0aHJlYWQgbWF5IHNlZSBhIGRpZmZlcmVudAorCSAqIHZh bHVlIHRvIHVzIGFuZCBkZWNsYXJlIHRoZSByZXF1ZXN0IGNvbXBsZXRlLCBldmVuIHRob3VnaAor CSAqIHRoZSByZXNldCByb3V0aW5lIGhhdmUgcGlja2VkIHRoYXQgcmVxdWVzdCBhcyB0aGUgYWN0 aXZlCisJICogKGluY29tcGxldGUpIHJlcXVlc3QuIFRoaXMgY29uZmxpY3QgaXMgbm90IGhhbmRs ZWQKKwkgKiBncmFjZWZ1bGx5IQorCSAqLworCWt0aHJlYWRfcGFyayhlbmdpbmUtPmJyZWFkY3J1 bWJzLnNpZ25hbGVyKTsKKworCS8qIFByZXZlbnQgcmVxdWVzdCBzdWJtaXNzaW9uIHRvIHRoZSBo YXJkd2FyZSB1bnRpbCB3ZSBoYXZlCisJICogY29tcGxldGVkIHRoZSByZXNldCBpbiBpOTE1X2dl bV9yZXNldF9maW5pc2goKS4gSWYgYSByZXF1ZXN0CisJICogaXMgY29tcGxldGVkIGJ5IG9uZSBl bmdpbmUsIGl0IG1heSB0aGVuIHF1ZXVlIGEgcmVxdWVzdAorCSAqIHRvIGEgc2Vjb25kIHZpYSBp dHMgZW5naW5lLT5pcnFfdGFza2xldCAqanVzdCogYXMgd2UgYXJlCisJICogY2FsbGluZyBlbmdp bmUtPmluaXRfaHcoKSBhbmQgYWxzbyB3cml0aW5nIHRoZSBFTFNQLgorCSAqIFR1cm5pbmcgb2Zm IHRoZSBlbmdpbmUtPmlycV90YXNrbGV0IHVudGlsIHRoZSByZXNldCBpcyBvdmVyCisJICogcHJl dmVudHMgdGhlIHJhY2UuCisJICovCisJdGFza2xldF9raWxsKCZlbmdpbmUtPmlycV90YXNrbGV0 KTsKKwl0YXNrbGV0X2Rpc2FibGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwogCi0JCWlmIChlbmdp bmVfc3RhbGxlZChlbmdpbmUpKSB7Ci0JCQlyZXF1ZXN0ID0gaTkxNV9nZW1fZmluZF9hY3RpdmVf cmVxdWVzdChlbmdpbmUpOwotCQkJaWYgKHJlcXVlc3QgJiYgcmVxdWVzdC0+ZmVuY2UuZXJyb3Ig PT0gLUVJTykKLQkJCQllcnIgPSAtRUlPOyAvKiBQcmV2aW91cyByZXNldCBmYWlsZWQhICovCi0J CX0KKwlpZiAoZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKKwkJZW5naW5lLT5pcnFfc2Vxbm9f YmFycmllcihlbmdpbmUpOworCisJaWYgKGVuZ2luZV9zdGFsbGVkKGVuZ2luZSkpIHsKKwkJcmVx dWVzdCA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3QoZW5naW5lKTsKKwkJaWYgKHJlcXVl c3QgJiYgcmVxdWVzdC0+ZmVuY2UuZXJyb3IgPT0gLUVJTykKKwkJCWVyciA9IC1FSU87IC8qIFBy ZXZpb3VzIHJlc2V0IGZhaWxlZCEgKi8KIAl9CiAKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaTkx NV9nZW1fcmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJ CQkgICB1bnNpZ25lZCBpbnQgZW5naW5lX21hc2spCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOworCXVuc2lnbmVkIGludCB0bXA7CisJaW50IGVyciA9IDA7CisKKwlmb3JfZWFj aF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVuZ2luZV9tYXNrLCB0bXApCisJCWVy ciA9IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7CisKIAlpOTE1X2dlbV9y ZXZva2VfZmVuY2VzKGRldl9wcml2KTsKIAogCXJldHVybiBlcnI7CkBAIC0yOTIwLDcgKzI5Mjks NyBAQCBzdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXNldF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlyZXR1cm4gZ3VpbHR5OwogfQogCi1zdGF0aWMgdm9pZCBp OTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQordm9p ZCBpOTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog ewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIApAQCAtMjk2NiwxNiAr Mjk3NSwyMiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAl9CiB9CiAKLXZvaWQgaTkxNV9nZW1fcmVzZXRfZmluaXNoKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3ZvaWQgaTkxNV9nZW1fcmVzZXRfZmluaXNoX2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJdGFza2xldF9lbmFibGUoJmVu Z2luZS0+aXJxX3Rhc2tsZXQpOworCWt0aHJlYWRfdW5wYXJrKGVuZ2luZS0+YnJlYWRjcnVtYnMu c2lnbmFsZXIpOworfQorCit2b2lkIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICB1bnNpZ25lZCBpbnQgZW5naW5lX21hc2spCiB7 CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOworCXVuc2lnbmVkIGludCB0bXA7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJp diwgaWQpIHsKLQkJdGFza2xldF9lbmFibGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwotCQlrdGhy ZWFkX3VucGFyayhlbmdpbmUtPmJyZWFkY3J1bWJzLnNpZ25hbGVyKTsKKwlmb3JfZWFjaF9lbmdp bmVfbWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVuZ2luZV9tYXNrLCB0bXApIHsKKwkJaTkxNV9n ZW1fcmVzZXRfZmluaXNoX2VuZ2luZShlbmdpbmUpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jCmluZGV4IDYxOThmNjk5N2QwNS4uZjY5YThjNTM1ZDVmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC0xMjE2LDcgKzEyMTYs NyBAQCBsb25nIGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCXJldHVybiB0aW1lb3V0OwogfQogCi1zdGF0aWMgdm9pZCBlbmdpbmVfcmV0aXJlX3Jl cXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3ZvaWQgZW5naW5lX3JldGly ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCAqbmV4dDsKIAl1MzIgc2Vxbm8gPSBpbnRlbF9l bmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmlu ZGV4IGFiNWJkZDExMGFjMy4uM2ViYmE2YjJkZDc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYwpAQCAtMTgwMSw2ICsxODAxLDI2IEBAIGludCBpbnRlbF9ndWNfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBP biBnZW44KyBhIHJlc2V0IHJlcXVlc3QgaGFzIHRvIGJlIGlzc3VlZCB2aWEgdGhlIHJlc2V0IGNv bnRyb2wgcmVnaXN0ZXIKKyAqIGJlZm9yZSBhIEdQVSBlbmdpbmUgY2FuIGJlIHJlc2V0IGluIG9y ZGVyIHRvIHN0b3AgdGhlIGNvbW1hbmQgc3RyZWFtZXIKKyAqIGFuZCBpZGxlIHRoZSBlbmdpbmUu IFRoaXMgcmVwbGFjZXMgdGhlIGxlZ2FjeSB3YXkgb2Ygc3RvcHBpbmcgYW4gZW5naW5lCisgKiBi eSB3cml0aW5nIHRvIHRoZSBzdG9wIHJpbmcgYml0IGluIHRoZSBNSV9NT0RFIHJlZ2lzdGVyLgor ICovCitpbnQgaW50ZWxfcmVzZXRfZW5naW5lX3N0YXJ0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwlyZXR1cm4gZ2VuOF9yZXNldF9lbmdpbmVfc3RhcnQoZW5naW5lKTsKK30K KworLyoKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGJhY2sgb2ZmIGZyb20gYSBwcmV2aW91c2x5IGlz c3VlZCByZXNldCByZXF1ZXN0IGJ5IHNpbXBseQorICogY2xlYXJpbmcgdGhlIHJlc2V0IHJlcXVl c3QgYml0IGluIHRoZSByZXNldCBjb250cm9sIHJlZ2lzdGVyLgorICovCit2b2lkIGludGVsX3Jl c2V0X2VuZ2luZV9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWdl bjhfcmVzZXRfZW5naW5lX2NhbmNlbChlbmdpbmUpOworfQorCiBib29sIGludGVsX3VuY29yZV91 bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJcmV0 dXJuIGNoZWNrX2Zvcl91bmNsYWltZWRfbW1pbyhkZXZfcHJpdik7Ci0tIAoyLjExLjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=