From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 2/7] drm/i915/tdr: Modify error handler for per engine hang recovery Date: Mon, 19 Sep 2016 16:30:14 +0100 Message-ID: <1474299019-26430-2-git-send-email-matthew.auld@intel.com> References: <1474299019-26430-1-git-send-email-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB5F76E45D for ; Mon, 19 Sep 2016 15:32:45 +0000 (UTC) In-Reply-To: <1474299019-26430-1-git-send-email-matthew.auld@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 Cc: Ian Lister , Tomas Elf List-Id: intel-gfx@lists.freedesktop.org RnJvbTogImFydW4uc2lsdXZlcnlAbGludXguaW50ZWwuY29tIiA8YXJ1bi5zaWx1dmVyeUBsaW51 eC5pbnRlbC5jb20+CgpUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggd2hpY2ggbW9kaWZpZXMg ZXJyb3IgaGFuZGxlciB0byBkbyBwZXIgZW5naW5lCmhhbmcgcmVjb3ZlcnkuIFRoZSBhY3R1YWwg cGF0Y2ggd2hpY2ggaW1wbGVtZW50cyB0aGlzIHNlcXVlbmNlIGZvbGxvd3MKbGF0ZXIgaW4gdGhl IHNlcmllcy4gVGhlIGFpbSBpcyB0byBwcmVwYXJlIGV4aXN0aW5nIHJlY292ZXJ5IGZ1bmN0aW9u IHRvCmFkYXB0IHRvIHRoaXMgbmV3IGZ1bmN0aW9uIHdoZXJlIGFwcGxpY2FibGUgKHdoaWNoIGZh aWxzIGF0IHRoaXMgcG9pbnQKYmVjYXVzZSBjb3JlIGltcGxlbWVudGF0aW9uIGlzIGxhY2tpbmcp IGFuZCBjb250aW51ZSByZWNvdmVyeSB1c2luZyBsZWdhY3kKZnVsbCBncHUgcmVzZXQuCgpBIGhl bHBlciBmdW5jdGlvbiBpcyBhbHNvIGFkZGVkIHRvIHF1ZXJ5IHRoZSBhdmFpbGFiaWxpdHkgb2Yg ZW5naW5lCnJlc2V0LgoKVGhlIGVycm9yIGV2ZW50cyBiZWhhdmlvdXIgdGhhdCBhcmUgdXNlZCB0 byBub3RpZnkgdXNlciBvZiByZXNldCBhcmUKYWRhcHRlZCB0byBlbmdpbmUgcmVzZXQgc3VjaCB0 aGF0IGl0IGRvZXNuJ3QgYnJlYWsgdXNlcnMgbGlzdGVuaW5nIHRvIHRoZXNlCmV2ZW50cy4gSW4g bGVnYWN5IHdlIHJlcG9ydCBhbiBlcnJvciBldmVudCwgYSByZXNldCBldmVudCBiZWZvcmUgcmVz ZXR0aW5nCnRoZSBncHUgYW5kIGEgcmVzZXQgZG9uZSBldmVudCBtYXJraW5nIHRoZSBjb21wbGV0 aW9uIG9mIHJlc2V0LiBUaGUgc2FtZQpiZWhhdmlvdXIgaXMgYWRhcHRlZCBidXQgcmVzZXQgZXZl bnQgaXMgb25seSBkaXNwYXRjaGVkIG9uY2UgZXZlbiB3aGVuCm11bHRpcGxlIGVuZ2luZXMgYXJl IGh1bmcuIEZpbmFsbHkgb25jZSByZXNldCBpcyBjb21wbGV0ZSB3ZSBzZW5kIHJlc2V0CmRvbmUg ZXZlbnQgYXMgdXN1YWwuCgp2MgogIC0gcmV3b3JrIHNsaWdodGx5CiAgLSBwcmVmZXIgSU5URUxf R0VOCiAgLSBkb2N1bWVudCBlbmdpbmVfbWFzayBwYXJhbQoKQ2M6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBs aW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IElhbiBMaXN0ZXIgPGlhbi5saXN0ZXJAaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEFydW4gU2lsdXZlcnkgPGFydW4uc2lsdXZlcnlAbGludXguaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgfCAyNiArKysrKysrKysrKysr KysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAyICsrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIHwg IDUgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDdmNGU4YWQuLjk5ZmE2OTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwpAQCAtMTgwNCw2ICsxODA0LDMyIEBAIGVycm9yOgogCWdvdG8gd2Fr ZXVwOwogfQogCisvKioKKyAqIGk5MTVfcmVzZXRfZW5naW5lIC0gcmVzZXQgR1BVIGVuZ2luZSB0 byByZWNvdmVyIGZyb20gYSBoYW5nCisgKiBAZW5naW5lOiBlbmdpbmUgdG8gcmVzZXQKKyAqCisg KiBSZXNldCBhIHNwZWNpZmljIEdQVSBlbmdpbmUuIFVzZWZ1bCBpZiBhIGhhbmcgaXMgZGV0ZWN0 ZWQuCisgKiBSZXR1cm5zIHplcm8gb24gc3VjY2Vzc2Z1bCByZXNldCBvciBvdGhlcndpc2UgYW4g ZXJyb3IgY29kZS4KKyAqCisgKiBQcm9jZWR1cmUgaXMgZmFpcmx5IHNpbXBsZToKKyAqICAtIGZv cmNlIGVuZ2luZSB0byBpZGxlCisgKiAgLSBzYXZlIGN1cnJlbnQgc3RhdGUgd2hpY2ggaW5jbHVk ZXMgaGVhZCBhbmQgY3VycmVudCByZXF1ZXN0CisgKiAgLSByZXNldCBlbmdpbmUKKyAqICAtIHJl c3RvcmUgc2F2ZWQgc3RhdGUgYW5kIHJlc3VibWl0IGNvbnRleHQKKyAqLworaW50IGk5MTVfcmVz ZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpbnQgcmV0Owor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKKworCS8q IEZJWE1FOiByZXBsYWNlIG1lIHdpdGggZW5naW5lIHJlc2V0IHNlcXVlbmNlICovCisJcmV0ID0g LUVOT0RFVjsKKworCXNldF9iaXQoSTkxNV9SRVNFVF9JTl9QUk9HUkVTUywgJmRldl9wcml2LT5n cHVfZXJyb3IuZmxhZ3MpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBpOTE1X3Bt X3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9 IHRvX3BjaV9kZXYoa2Rldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA0ZGQzMDdlLi43 OWRlNzRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI4ODgsNiArMjg4OCw4IEBAIGV4 dGVybiBsb25nIGk5MTVfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBp bnQgY21kLAogZXh0ZXJuIGludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgZW5naW5lX21hc2spOwogZXh0ZXJuIGJvb2wgaW50ZWxfaGFzX2dw dV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQg aTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworZXh0ZXJuIGJv b2wgaW50ZWxfaGFzX2VuZ2luZV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOworZXh0ZXJuIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB2b2lkIGludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVj ayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg aTkxNV9jaGlwc2V0X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggYzEyOGZkYi4uNDVjNWEyNiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCkBAIC0yNDg3LDExICsyNDg3LDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZXJyb3Jf d2FrZV91cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAvKioKICAqIGk5MTVf cmVzZXRfYW5kX3dha2V1cCAtIGRvIHByb2Nlc3MgY29udGV4dCBlcnJvciBoYW5kbGluZyB3b3Jr CiAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIHByaXZhdGUKKyAqIEBlbmdpbmVfbWFzazogZW5n aW5lcyB3aGljaCBhcmUgbWFya2VkIGFzIGh1bmcKICAqCiAgKiBGaXJlIGFuIGVycm9yIHVldmVu dCBzbyB1c2Vyc3BhY2UgY2FuIHNlZSB0aGF0IGEgaGFuZyBvciBlcnJvcgogICogd2FzIGRldGVj dGVkLgogICovCi1zdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaTkxNV9yZXNldF9hbmRfd2FrZXVw KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgIHUzMiBlbmdpbmVfbWFz aykKIHsKIAlzdHJ1Y3Qga29iamVjdCAqa29iaiA9ICZkZXZfcHJpdi0+ZHJtLnByaW1hcnktPmtk ZXYtPmtvYmo7CiAJY2hhciAqZXJyb3JfZXZlbnRbXSA9IHsgSTkxNV9FUlJPUl9VRVZFTlQgIj0x IiwgTlVMTCB9OwpAQCAtMjUwMSw2ICsyNTAzLDE1IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRf YW5kX3dha2V1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJa29iamVjdF91 ZXZlbnRfZW52KGtvYmosIEtPQkpfQ0hBTkdFLCBlcnJvcl9ldmVudCk7CiAKIAlEUk1fREVCVUdf RFJJVkVSKCJyZXNldHRpbmcgY2hpcFxuIik7CisJLyoKKwkgKiBUaGlzIGV2ZW50IG5lZWRzIHRv IGJlIHNlbnQgYmVmb3JlIHBlcmZvcm1pbmcgZ3B1IHJlc2V0LiBXaGVuCisJICogZW5naW5lIHJl c2V0cyBhcmUgc3VwcG9ydGVkIHdlIGl0ZXJhdGUgdGhyb3VnaCBhbGwgZW5naW5lcyBhbmQKKwkg KiByZXNldCBodW5nIGVuZ2luZXMgaW5kaXZpZHVhbGx5LiBUbyBrZWVwIHRoZSBldmVudCBkaXNw YXRjaAorCSAqIG1lY2hhbmlzbSBjb25zaXN0ZW50IHdpdGggZnVsbCBncHUgcmVzZXQsIHRoaXMg aXMgb25seSBzZW50IG9uY2UKKwkgKiBldmVuIHdoZW4gbXVsdGlwbGUgZW5naW5lcyBhcmUgaHVu Zy4gSXQgaXMgYWxzbyBzYWZlIHRvIG1vdmUgdGhpcworCSAqIGhlcmUgYmVjYXVzZSB3aGVuIHdl IGFyZSBpbiB0aGlzIGZ1bmN0aW9uLCB3ZSB3aWxsIGRlZmluaXRlbHkKKwkgKiBwZXJmb3JtIGdw dSByZXNldC4KKwkgKi8KIAlrb2JqZWN0X3VldmVudF9lbnYoa29iaiwgS09CSl9DSEFOR0UsIHJl c2V0X2V2ZW50KTsKIAogCS8qCkBAIC0yNTExLDYgKzI1MjIsMjggQEAgc3RhdGljIHZvaWQgaTkx NV9yZXNldF9hbmRfd2FrZXVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkg KiBzaW11bGF0ZWQgcmVzZXQgdmlhIGRlYnVncywgc28gZ2V0IGFuIFJQTSByZWZlcmVuY2UuCiAJ ICovCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCisJLyoKKwkgKiBGaXJzdCBh dHRlbXB0IHRvIHJlc2V0IHRoZSBlbmdpbmVzIHdoaWNoIGFyZSBtYXJrZWQgYXMgaHVuZy4gSWYg dGhhdAorCSAqIGZhaWxzIHRoZW4gd2UgZmFsbGJhY2sgdG8gZG9pbmcgYSBmdWxsIGdwdSByZXNl dC4KKwkgKi8KKwlpZiAoaW50ZWxfaGFzX2VuZ2luZV9yZXNldChkZXZfcHJpdikpIHsKKwkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCQl1bnNpZ25lZCBpbnQgdG1wOworCQlpbnQg cmV0ID0gMDsKKworCQlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVu Z2luZV9tYXNrLCB0bXApIHsKKwkJCXJldCA9IGk5MTVfcmVzZXRfZW5naW5lKGVuZ2luZSk7CisJ CQlpZiAocmV0KQorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKCFyZXQpIHsKKwkJCURSTV9ERUJV R19EUklWRVIoInJlc2V0IGh1bmcgZW5naW5lcy5cbiIpOworCQkJZ290byByZXNldF9kb25lOwor CQl9CisJfQorCiAJaW50ZWxfcHJlcGFyZV9yZXNldChkZXZfcHJpdik7CiAKIAlkbyB7CkBAIC0y NTMyLDYgKzI1NjUsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJCSAgICAgSFopKTsKIAogCWludGVsX2Zp bmlzaF9yZXNldChkZXZfcHJpdik7CisKK3Jlc2V0X2RvbmU6CiAJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOwogCiAJaWYgKCF0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmRldl9wcml2LT5n cHVfZXJyb3IuZmxhZ3MpKQpAQCAtMjY0MCw2ICsyNjc1LDggQEAgc3RhdGljIHZvaWQgaTkxNV9y ZXBvcnRfYW5kX2NsZWFyX2VpcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAg KiBpOTE1X2hhbmRsZV9lcnJvciAtIGhhbmRsZSBhIGdwdSBlcnJvcgogICogQGRldl9wcml2OiBp OTE1IGRldmljZSBwcml2YXRlCiAgKiBAZW5naW5lX21hc2s6IG1hc2sgcmVwcmVzZW50aW5nIGVu Z2luZXMgdGhhdCBhcmUgaHVuZworICogQGZtdDogZm9ybWF0dGVkIGhhbmcgbXNnIHRoYXQgZ2V0 cyBsb2dnZWQgaW4gY2FwdHVyZWQgZXJyb3Igc3RhdGUKKyAqCiAgKiBEbyBzb21lIGJhc2ljIGNo ZWNraW5nIG9mIHJlZ2lzdGVyIHN0YXRlIGF0IGVycm9yIHRpbWUgYW5kCiAgKiBkdW1wIGl0IHRv IHRoZSBzeXNsb2cuICBBbHNvIGNhbGwgaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKCkgdG8gbWFr ZQogICogc3VyZSB3ZSBnZXQgYSByZWNvcmQgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIGluIGRlYnVn ZnMuICBGaXJlIGEgdWV2ZW50CkBAIC0yNjY0LDkgKzI3MDEsMTIgQEAgdm9pZCBpOTE1X2hhbmRs ZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKCFlbmdpbmVf bWFzaykKIAkJcmV0dXJuOwogCi0JaWYgKHRlc3RfYW5kX3NldF9iaXQoSTkxNV9SRVNFVF9JTl9Q Uk9HUkVTUywKLQkJCSAgICAgJmRldl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpKQotCQlyZXR1cm47 CisJLyoKKwkgKiBFbmdpbmUgcmVzZXQgc3VwcG9ydCBpcyBvbmx5IGF2YWlsYWJsZSBmcm9tIEdl bjggb253YXJkcyBzbyBpZgorCSAqIGl0IGlzIG5vdCBhdmFpbGFibGUgb3IgZXhwbGljaXR5IGRp c2FibGVkLCB1c2UgZnVsbCBncHUgcmVzZXQuCisJICovCisJaWYgKCFpbnRlbF9oYXNfZW5naW5l X3Jlc2V0KGRldl9wcml2KSkKKwkJc2V0X2JpdChJOTE1X1JFU0VUX0lOX1BST0dSRVNTLCAmZGV2 X3ByaXYtPmdwdV9lcnJvci5mbGFncyk7CiAKIAkvKgogCSAqIFdha2V1cCB3YWl0aW5nIHByb2Nl c3NlcyBzbyB0aGF0IHRoZSByZXNldCBmdW5jdGlvbgpAQCAtMjY4Miw3ICsyNzIyLDcgQEAgdm9p ZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ ICovCiAJaTkxNV9lcnJvcl93YWtlX3VwKGRldl9wcml2KTsKIAotCWk5MTVfcmVzZXRfYW5kX3dh a2V1cChkZXZfcHJpdik7CisJaTkxNV9yZXNldF9hbmRfd2FrZXVwKGRldl9wcml2LCBlbmdpbmVf bWFzayk7CiB9CiAKIC8qIENhbGxlZCBmcm9tIGRybSBnZW5lcmljIGNvZGUsIHBhc3NlZCAnY3J0 Yycgd2hpY2gKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKaW5kZXggYTliNmM5My4uYmZk OWI5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKQEAgLTE3NjksNiArMTc2OSwx MSBAQCBib29sIGludGVsX2hhc19ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCXJldHVybiBpbnRlbF9nZXRfZ3B1X3Jlc2V0KGRldl9wcml2KSAhPSBOVUxMOwog fQogCitib29sIGludGVsX2hhc19lbmdpbmVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQoreworCXJldHVybiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ICYmIGk5MTUu cmVzZXQgPT0gMik7Cit9CisKIGludCBpbnRlbF9ndWNfcmVzZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogewogCWludCByZXQ7Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==