From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3] drm/i915: Break modeset deadlocks on reset Date: Fri, 23 Jun 2017 13:35:24 +0100 Message-ID: <1963e913-25fc-ac3d-efcb-a33860e66efb@linux.intel.com> References: <20170620161218.9015-1-chris@chris-wilson.co.uk> <20170622105625.16952-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 584DC6E118 for ; Fri, 23 Jun 2017 12:35:27 +0000 (UTC) In-Reply-To: <20170622105625.16952-1-chris@chris-wilson.co.uk> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIyLzA2LzIwMTcgMTE6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUcnlpbmcgdG8gZG8g YSBtb2Rlc2V0IGZyb20gd2l0aGluIGEgcmVzZXQgaXMgZnJhdWdodCB3aXRoIGRhbmdlci4gV2UK PiBjYW4gZmFsbCBpbnRvIGEgY3ljbGljIGRlYWRsb2NrIHdoZXJlIHRoZSBtb2Rlc2V0IGlzIHdh aXRpbmcgb24gYQo+IHByZXZpb3VzIG1vZGVzZXQgdGhhdCBpcyB3YWl0aW5nIG9uIGEgcmVxdWVz dCwgYW5kIHNpbmNlIHRoZSBHUFUgaHVuZwo+IHRoYXQgcmVxdWVzdCBjb21wbGV0aW9uIGlzIHdh aXRpbmcgb24gdGhlIHJlc2V0LiBBcyBtb2Rlc2V0dGluZyBkb2Vzbid0Cj4gYWxsb3cgaXRzIGxv Y2tzIHRvIGJlIGJyb2tlbiBhbmQgcmVzdGFydGVkLCBvciBmb3IgaXRzICpvd24qIHJlc2V0Cj4g bWVjaGFuaXNtIHRvIHRha2Ugb3ZlciB0aGUgZGlzcGxheSwgd2UgaGF2ZSB0byBkbyBzb21ldGhp bmcgdmVyeQo+IGV2aWwgaW5zdGVhZC4gSWYgd2UgZGV0ZWN0IHRoYXQgd2UgYXJlIHN0dWNrIHdh aXRpbmcgdG8gcHJlcGFyZSB0aGUKPiBkaXNwbGF5IHJlc2V0IChieSB1c2luZyBhIHZlcnkgc2lt cGxlIHRpbWVvdXQpLCByZXNvcnQgdG8gY2FuY2VsbGluZyBhbGwKPiBpbi1mbGlnaHQgcmVxdWVz dHMgYW5kIHRocm93aW5nIHRoZSB1c2VyIGRhdGEgaW50byAvZGV2L251bGwsIHdoaWNoIGlzCj4g bWFyZ2luYWxseSBiZXR0ZXIgdGhhbiB0aGUgZHJpdmVyIGxvY2tpbmcgdXAgYW5kIGtlZXBpbmcg dGhhdCBkYXRhIHRvCj4gaXRzZWxmLgo+IAo+IFRoaXMgaXMgbm90IGEgZml4OyB0aGlzIGlzIGp1 c3QgYSB3b3JrYXJvdW5kIHRoYXQgdW5icmVha3MgbWFjaGluZXMKPiB1bnRpbCB3ZSBjYW4gcmVz b2x2ZSB0aGUgZGVhZGxvY2sgaW4gYSB3YXkgdGhhdCBkb2Vzbid0IGxvc2UgZGF0YSEKPiAKPiB2 MjogTW92ZSB0aGUgcmV0aXJlbWVudCBmcm9tIHNldC13ZWdkZWQgdG8gdGhlIGk5MTVfcmVzZXQo KSBlcnJvciBwYXRoLAo+IGFmdGVyIHdoaWNoIHdlIG5vIGxvbmdlciBhbnkgZGVsYXllZCB3b3Jr ZXIgY2xlYW51cCBmb3IKPiBpOTE1X2hhbmRsZV9lcnJvcigpCj4gdjM6IEMgYWJ1c2UgZm9yIHN5 bnRhY3RpYyBzdWdhcgo+IHY0OiBDb3ZlciBhbGwgd2FpdHMgd2l0aCB0aGUgdGltZW91dCB0byBj YXRjaCBtb3JlIGRyaXZlciBicmVha2FnZQo+IAo+IFJlZmVyZW5jZXM6IGh0dHBzOi8vYnVncy5m cmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MDkzCj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1hYXJ0ZW4gTGFua2hv cnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBh bGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyB8ICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgfCAxOCArKyst LS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIHwgNzkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgNjQg aW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gaW5kZXggZDFhYTEwYzljYzVkLi4xZGY5NTdiOTg2YzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiBAQCAtMTkxNCw2ICsxOTE0LDcgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgZXJyb3I6Cj4gICAJaTkxNV9nZW1f c2V0X3dlZGdlZChkZXZfcHJpdik7Cj4gKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3By aXYpOwo+ICAgCWdvdG8gZmluaXNoOwo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggNzM5MWUyZDM2YTMxLi44YmM5YTNmNTMwMDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtMzA0Niw3ICszMDQ2LDggQEAgc3RhdGljIHZvaWQgZW5naW5lX3NldF93 ZWRnZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCS8qIE1hcmsgYWxsIGV4 ZWN1dGluZyByZXF1ZXN0cyBhcyBza2lwcGVkICovCj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJl cXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKPiAtCQlkbWFfZmVuY2Vf c2V0X2Vycm9yKCZyZXF1ZXN0LT5mZW5jZSwgLUVJTyk7Cj4gKwkJaWYgKCFpOTE1X2dlbV9yZXF1 ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKPiArCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigmcmVxdWVz dC0+ZmVuY2UsIC1FSU8pOwo+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGlt ZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiAgIAo+ICAgCS8qIE1hcmsgYWxsIHBlbmRpbmcgcmVxdWVz dHMgYXMgY29tcGxldGUgc28gdGhhdCBhbnkgY29uY3VycmVudAo+IEBAIC0zMDkyLDYgKzMwOTMs NyBAQCBzdGF0aWMgaW50IF9faTkxNV9nZW1fc2V0X3dlZGdlZF9CS0wodm9pZCAqZGF0YSkKPiAg IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7Cj4gICAKPiArCXNldF9iaXQoSTkxNV9XRURHRUQsICZpOTE1LT5ncHVfZXJyb3IuZmxh Z3MpOwo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQo+ICAgCQllbmdpbmVf c2V0X3dlZGdlZChlbmdpbmUpOwo+ICAgCj4gQEAgLTMxMDAsMjAgKzMxMDIsNyBAQCBzdGF0aWMg aW50IF9faTkxNV9nZW1fc2V0X3dlZGdlZF9CS0wodm9pZCAqZGF0YSkKPiAgIAo+ICAgdm9pZCBp OTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IHsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCXNldF9iaXQoSTkxNV9XRURHRUQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAt Cj4gLQkvKiBSZXRpcmUgY29tcGxldGVkIHJlcXVlc3RzIGZpcnN0IHNvIHRoZSBsaXN0IG9mIGlu ZmxpZ2h0L2luY29tcGxldGUKPiAtCSAqIHJlcXVlc3RzIGlzIGFjY3VyYXRlIGFuZCB3ZSBkb24n dCB0cnkgYW5kIG1hcmsgc3VjY2Vzc2Z1bCByZXF1ZXN0cwo+IC0JICogYXMgaW4gZXJyb3IgZHVy aW5nIF9faTkxNV9nZW1fc2V0X3dlZGdlZF9CS0woKS4KPiAtCSAqLwo+IC0JaTkxNV9nZW1fcmV0 aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKPiAtCj4gICAJc3RvcF9tYWNoaW5lKF9faTkxNV9nZW1f c2V0X3dlZGdlZF9CS0wsIGRldl9wcml2LCBOVUxMKTsKPiAtCj4gLQlpOTE1X2dlbV9jb250ZXh0 c19sb3N0KGRldl9wcml2KTsKPiAtCj4gLQltb2RfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwg JmRldl9wcml2LT5ndC5pZGxlX3dvcmssIDApOwo+ICAgfQo+ICAgCj4gICBib29sIGk5MTVfZ2Vt X3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiBAQCAtMzE2OCw2 ICszMTU3LDcgQEAgYm9vbCBpOTE1X2dlbV91bnNldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gICAJICogY29udGV4dCBhbmQgZG8gbm90IHJlcXVpcmUgc3RvcF9tYWNo aW5lKCkuCj4gICAJICovCj4gICAJaW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0X3N1Ym1pc3Np b24oaTkxNSk7Cj4gKwlpOTE1X2dlbV9jb250ZXh0c19sb3N0KGk5MTUpOwo+ICAgCj4gICAJc21w X21iX19iZWZvcmVfYXRvbWljKCk7IC8qIGNvbXBsZXRlIHRha2VvdmVyIGJlZm9yZSBlbmFibGlu ZyBleGVjYnVmICovCj4gICAJY2xlYXJfYml0KEk5MTVfV0VER0VELCAmaTkxNS0+Z3B1X2Vycm9y LmZsYWdzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCA2MTA0N2VlMmVlZGUuLjVm YTJhMWNmNzFiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0yNTg3LDYgKzI1 ODcsNDYgQEAgc3RhdGljIGlycXJldHVybl90IGdlbjhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiArc3RydWN0IHdlZGdlX21lIHsK PiArCXN0cnVjdCBkZWxheWVkX3dvcmsgd29yazsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1Owo+ICsJY29uc3QgY2hhciAqbmFtZTsKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIHdl ZGdlX21lKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IHdlZGdlX21l ICp3ID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqdyksIHdvcmsud29yayk7Cj4gKwo+ICsJ ZGV2X2Vycih3LT5pOTE1LT5kcm0uZGV2LAo+ICsJCSIlcyB0aW1lZCBvdXQsIGNhbmNlbGxpbmcg YWxsIGluLWZsaWdodCByZW5kZXJpbmcuXG4iLAo+ICsJCXctPm5hbWUpOwo+ICsJaTkxNV9nZW1f c2V0X3dlZGdlZCh3LT5pOTE1KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19pbml0X3dlZGdl KHN0cnVjdCB3ZWRnZV9tZSAqdywKPiArCQkJIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAo+ICsJCQkgbG9uZyB0aW1lb3V0LAo+ICsJCQkgY29uc3QgY2hhciAqbmFtZSkKPiArewo+ICsJ dy0+aTkxNSA9IGk5MTU7Cj4gKwl3LT5uYW1lID0gbmFtZTsKPiArCj4gKwlJTklUX0RFTEFZRURf V09SS19PTlNUQUNLKCZ3LT53b3JrLCB3ZWRnZV9tZSk7Cj4gKwlzY2hlZHVsZV9kZWxheWVkX3dv cmsoJnctPndvcmssIHRpbWVvdXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2Zpbmlfd2Vk Z2Uoc3RydWN0IHdlZGdlX21lICp3KQo+ICt7Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMo JnctPndvcmspOwo+ICsJZGVzdHJveV9kZWxheWVkX3dvcmtfb25fc3RhY2soJnctPndvcmspOwo+ ICsJdy0+aTkxNSA9IE5VTEw7Cj4gK30KPiArCj4gKyNkZWZpbmUgaTkxNV93ZWRnZV9vbl90aW1l b3V0KFcsIERFViwgVElNRU9VVCkJCQkJXAo+ICsJZm9yIChfX2luaXRfd2VkZ2UoKFcpLCAoREVW KSwgKFRJTUVPVVQpLCBfX2Z1bmNfXyk7CQlcCj4gKwkgICAgIChXKS0+aTkxNTsJCQkJCQkJXAo+ ICsJICAgICBfX2Zpbmlfd2VkZ2UoKFcpKSkKPiArCj4gICAvKioKPiAgICAqIGk5MTVfcmVzZXRf ZGV2aWNlIC0gZG8gcHJvY2VzcyBjb250ZXh0IGVycm9yIGhhbmRsaW5nIHdvcmsKPiAgICAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQo+IEBAIC0yNjAwLDM2ICsyNjQwLDM1IEBAIHN0 YXRpYyB2b2lkIGk5MTVfcmVzZXRfZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAljaGFyICplcnJvcl9ldmVudFtdID0geyBJOTE1X0VSUk9SX1VFVkVOVCAiPTEi LCBOVUxMIH07Cj4gICAJY2hhciAqcmVzZXRfZXZlbnRbXSA9IHsgSTkxNV9SRVNFVF9VRVZFTlQg Ij0xIiwgTlVMTCB9Owo+ICAgCWNoYXIgKnJlc2V0X2RvbmVfZXZlbnRbXSA9IHsgSTkxNV9FUlJP Ul9VRVZFTlQgIj0wIiwgTlVMTCB9Owo+ICsJc3RydWN0IHdlZGdlX21lIHc7Cj4gICAKPiAgIAlr b2JqZWN0X3VldmVudF9lbnYoa29iaiwgS09CSl9DSEFOR0UsIGVycm9yX2V2ZW50KTsKPiAgIAo+ ICAgCURSTV9ERUJVR19EUklWRVIoInJlc2V0dGluZyBjaGlwXG4iKTsKPiAgIAlrb2JqZWN0X3Vl dmVudF9lbnYoa29iaiwgS09CSl9DSEFOR0UsIHJlc2V0X2V2ZW50KTsKPiAgIAo+IC0JaW50ZWxf cHJlcGFyZV9yZXNldChkZXZfcHJpdik7Cj4gKwlpOTE1X3dlZGdlX29uX3RpbWVvdXQoJncsIGRl dl9wcml2LCA1KkhaKSB7Cj4gKwkJaW50ZWxfcHJlcGFyZV9yZXNldChkZXZfcHJpdik7Cj4gICAK PiAtCXNldF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFn cyk7Cj4gLQl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPmdwdV9lcnJvci53YWl0X3F1ZXVlKTsKPiAr CQkvKiBTaWduYWwgdGhhdCBsb2NrZWQgd2FpdGVycyBzaG91bGQgcmVzZXQgdGhlIEdQVSAqLwo+ ICsJCXNldF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFn cyk7Cj4gKwkJd2FrZV91cF9hbGwoJmRldl9wcml2LT5ncHVfZXJyb3Iud2FpdF9xdWV1ZSk7Cj4g ICAKPiAtCWRvIHsKPiAtCQkvKgo+IC0JCSAqIEFsbCBzdGF0ZSByZXNldCBfbXVzdF8gYmUgY29t cGxldGVkIGJlZm9yZSB3ZSB1cGRhdGUgdGhlCj4gLQkJICogcmVzZXQgY291bnRlciwgZm9yIG90 aGVyd2lzZSB3YWl0ZXJzIG1pZ2h0IG1pc3MgdGhlIHJlc2V0Cj4gLQkJICogcGVuZGluZyBzdGF0 ZSBhbmQgbm90IHByb3Blcmx5IGRyb3AgbG9ja3MsIHJlc3VsdGluZyBpbgo+IC0JCSAqIGRlYWRs b2NrcyB3aXRoIHRoZSByZXNldCB3b3JrLgo+ICsJCS8qIFdhaXQgZm9yIGFueW9uZSBob2xkaW5n IHRoZSBsb2NrIHRvIHdha2V1cCwgd2l0aG91dAo+ICsJCSAqIGJsb2NraW5nIGluZGVmaW5pdGVs eSBvbiBzdHJ1Y3RfbXV0ZXguCj4gICAJCSAqLwo+IC0JCWlmIChtdXRleF90cnlsb2NrKCZkZXZf cHJpdi0+ZHJtLnN0cnVjdF9tdXRleCkpIHsKPiAtCQkJaTkxNV9yZXNldChkZXZfcHJpdik7Cj4g LQkJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCX0KPiAt Cj4gLQkJLyogV2UgbmVlZCB0byB3YWl0IGZvciBhbnlvbmUgaG9sZGluZyB0aGUgbG9jayB0byB3 YWtldXAgKi8KPiAtCX0gd2hpbGUgKHdhaXRfb25fYml0X3RpbWVvdXQoJmRldl9wcml2LT5ncHVf ZXJyb3IuZmxhZ3MsCj4gLQkJCQkgICAgIEk5MTVfUkVTRVRfSEFORE9GRiwKPiAtCQkJCSAgICAg VEFTS19VTklOVEVSUlVQVElCTEUsCj4gLQkJCQkgICAgIEhaKSk7Cj4gKwkJZG8gewo+ICsJCQlp ZiAobXV0ZXhfdHJ5bG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpKSB7Cj4gKwkJCQlp OTE1X3Jlc2V0KGRldl9wcml2KTsKPiArCQkJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICsJCQl9Cj4gKwkJfSB3aGlsZSAod2FpdF9vbl9iaXRfdGltZW91dCgm ZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncywKPiArCQkJCQkgICAgIEk5MTVfUkVTRVRfSEFORE9G RiwKPiArCQkJCQkgICAgIFRBU0tfVU5JTlRFUlJVUFRJQkxFLAo+ICsJCQkJCSAgICAgMSkpOwo+ ICAgCj4gLQlpbnRlbF9maW5pc2hfcmVzZXQoZGV2X3ByaXYpOwo+ICsJCWludGVsX2ZpbmlzaF9y ZXNldChkZXZfcHJpdik7Cj4gKwl9Cj4gICAKPiAgIAlpZiAoIXRlc3RfYml0KEk5MTVfV0VER0VE LCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncykpCj4gICAJCWtvYmplY3RfdWV2ZW50X2Vudihr b2JqLAo+IAoKTG9va3MgT0sgLSBsZXRzIHNlZSBob3cgdGVtcG9yYXJ5IGl0IHdpbGwgZW5kIHVw IGJlaW5nLiA6KQoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=